Thursday, March 21, 2019 10:11 AM, Viacheslav Ovsiienko: > Subject: [PATCH 07/14] net/mlx5: switch to the names in the shared IB > context > > The IB device names are moved from device private data to the shared > context, code involving the names is updated. > The IB port index treatment is added where it is relevant. > > Signed-off-by: Viacheslav Ovsiienko <viachesl...@mellanox.com>
Acked-by: Shahaf Shuler <shah...@mellaox.com> > --- > drivers/net/mlx5/mlx5.h | 2 -- > drivers/net/mlx5/mlx5_ethdev.c | 10 +++++++--- > drivers/net/mlx5/mlx5_stats.c | 22 +++++++++++++--------- > 3 files changed, 20 insertions(+), 14 deletions(-) > > diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h index > 528ae02..fb9ed3b 100644 > --- a/drivers/net/mlx5/mlx5.h > +++ b/drivers/net/mlx5/mlx5.h > @@ -229,8 +229,6 @@ struct mlx5_priv { > struct ibv_context *ctx; /* Verbs context. */ > struct ibv_device_attr_ex device_attr; /* Device properties. */ > struct ibv_pd *pd; /* Protection Domain. */ > - char ibdev_name[IBV_SYSFS_NAME_MAX]; /* IB device name. */ > - char ibdev_path[IBV_SYSFS_PATH_MAX]; /* IB device path for > secondary */ > struct ether_addr mac[MLX5_MAX_MAC_ADDRESSES]; /* MAC > addresses. */ > BITFIELD_DECLARE(mac_own, uint64_t, > MLX5_MAX_MAC_ADDRESSES); > /* Bit-field of MAC addresses owned by the PMD. */ diff --git > a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c index > 5b44889..2ccc743 100644 > --- a/drivers/net/mlx5/mlx5_ethdev.c > +++ b/drivers/net/mlx5/mlx5_ethdev.c > @@ -138,8 +138,10 @@ struct ethtool_link_settings { > unsigned int dev_port_prev = ~0u; > char match[IF_NAMESIZE] = ""; > > + assert(priv); > + assert(priv->sh); > { > - MKSTR(path, "%s/device/net", priv->ibdev_path); > + MKSTR(path, "%s/device/net", priv->sh->ibdev_path); > > dir = opendir(path); > if (dir == NULL) { > @@ -159,7 +161,7 @@ struct ethtool_link_settings { > continue; > > MKSTR(path, "%s/device/net/%s/%s", > - priv->ibdev_path, name, > + priv->sh->ibdev_path, name, > (dev_type ? "dev_id" : "dev_port")); > > file = fopen(path, "rb"); > @@ -222,7 +224,9 @@ struct ethtool_link_settings { > struct mlx5_priv *priv = dev->data->dev_private; > unsigned int ifindex = > priv->nl_socket_rdma >= 0 ? > - mlx5_nl_ifindex(priv->nl_socket_rdma, priv->ibdev_name, > 1) : 0; > + mlx5_nl_ifindex(priv->nl_socket_rdma, > + priv->sh->ibdev_name, > + priv->ibv_port) : 0; > > if (!ifindex) { > if (!priv->representor) > diff --git a/drivers/net/mlx5/mlx5_stats.c b/drivers/net/mlx5/mlx5_stats.c > index 6906dc8..5af199d 100644 > --- a/drivers/net/mlx5/mlx5_stats.c > +++ b/drivers/net/mlx5/mlx5_stats.c > @@ -140,18 +140,22 @@ > mlx5_read_ib_stat(struct mlx5_priv *priv, const char *ctr_name, uint64_t > *stat) { > FILE *file; > - MKSTR(path, "%s/ports/1/hw_counters/%s", > - priv->ibdev_path, > - ctr_name); > + if (priv->sh) { > + MKSTR(path, "%s/ports/%d/hw_counters/%s", > + priv->sh->ibdev_path, > + priv->ibv_port, > + ctr_name); > > - file = fopen(path, "rb"); > - if (file) { > - int n = fscanf(file, "%" SCNu64, stat); > + file = fopen(path, "rb"); > + if (file) { > + int n = fscanf(file, "%" SCNu64, stat); > > - fclose(file); > - if (n != 1) > - stat = 0; > + fclose(file); > + if (n == 1) > + return; > + } > } > + *stat = 0; > } > > /** > -- > 1.8.3.1