lkml.org 
[lkml]   [2021]   [Jun]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH net-next 05/11] drivers: net: netdevsim: add devlink trap_drop_counter_get implementation
    Date
    Whenever query statistics is issued for trap with DROP action,
    devlink subsystem would also fill-in statistics 'dropped' field.
    In case if device driver did't register callback for hard drop
    statistics querying, 'dropped' field will be omitted and not filled.
    Add trap_drop_counter_get callback implementation to the netdevsim.
    Add new test cases for netdevsim, to test both the callback
    functionality, as well as drop statistics alteration check.

    Signed-off-by: Oleksandr Mazur <oleksandr.mazur@plvision.eu>
    ---
    drivers/net/netdevsim/dev.c | 22 ++++++++++++++++++++++
    drivers/net/netdevsim/netdevsim.h | 1 +
    2 files changed, 23 insertions(+)

    diff --git a/drivers/net/netdevsim/dev.c b/drivers/net/netdevsim/dev.c
    index 6189a4c0d39e..87e039433312 100644
    --- a/drivers/net/netdevsim/dev.c
    +++ b/drivers/net/netdevsim/dev.c
    @@ -231,6 +231,9 @@ static int nsim_dev_debugfs_init(struct nsim_dev *nsim_dev)
    debugfs_create_bool("fail_trap_policer_counter_get", 0600,
    nsim_dev->ddir,
    &nsim_dev->fail_trap_policer_counter_get);
    + debugfs_create_bool("fail_trap_counter_get", 0600,
    + nsim_dev->ddir,
    + &nsim_dev->fail_trap_counter_get);
    nsim_udp_tunnels_debugfs_create(nsim_dev);
    return 0;
    }
    @@ -416,6 +419,7 @@ struct nsim_trap_data {
    struct delayed_work trap_report_dw;
    struct nsim_trap_item *trap_items_arr;
    u64 *trap_policers_cnt_arr;
    + u64 trap_pkt_cnt;
    struct nsim_dev *nsim_dev;
    spinlock_t trap_lock; /* Protects trap_items_arr */
    };
    @@ -892,6 +896,23 @@ nsim_dev_devlink_trap_policer_counter_get(struct devlink *devlink,
    return 0;
    }

    +static int
    +nsim_dev_devlink_trap_hw_counter_get(struct devlink *devlink,
    + const struct devlink_trap *trap,
    + u64 *p_drops)
    +{
    + struct nsim_dev *nsim_dev = devlink_priv(devlink);
    + u64 *cnt;
    +
    + if (nsim_dev->fail_trap_counter_get)
    + return -EINVAL;
    +
    + cnt = &nsim_dev->trap_data->trap_pkt_cnt;
    + *p_drops = (*cnt)++;
    +
    + return 0;
    +}
    +
    static const struct devlink_ops nsim_dev_devlink_ops = {
    .supported_flash_update_params = DEVLINK_SUPPORT_FLASH_UPDATE_COMPONENT |
    DEVLINK_SUPPORT_FLASH_UPDATE_OVERWRITE_MASK,
    @@ -905,6 +926,7 @@ static const struct devlink_ops nsim_dev_devlink_ops = {
    .trap_group_set = nsim_dev_devlink_trap_group_set,
    .trap_policer_set = nsim_dev_devlink_trap_policer_set,
    .trap_policer_counter_get = nsim_dev_devlink_trap_policer_counter_get,
    + .trap_drop_counter_get = nsim_dev_devlink_trap_hw_counter_get,
    };

    #define NSIM_DEV_MAX_MACS_DEFAULT 32
    diff --git a/drivers/net/netdevsim/netdevsim.h b/drivers/net/netdevsim/netdevsim.h
    index 7ff24e03577b..db66a0e58792 100644
    --- a/drivers/net/netdevsim/netdevsim.h
    +++ b/drivers/net/netdevsim/netdevsim.h
    @@ -236,6 +236,7 @@ struct nsim_dev {
    bool fail_trap_group_set;
    bool fail_trap_policer_set;
    bool fail_trap_policer_counter_get;
    + bool fail_trap_counter_get;
    struct {
    struct udp_tunnel_nic_shared utn_shared;
    u32 __ports[2][NSIM_UDP_TUNNEL_N_PORTS];
    --
    2.17.1
    \
     
     \ /
      Last update: 2021-06-09 17:19    [W:5.049 / U:0.708 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site