> On Jul 21, 2019, at 7:56 AM, Viacheslav Ovsiienko <viachesl...@mellanox.com> > wrote: > > This reverts commit e28111ac9864af09e826241a915dfff87a9c00ad. > The netlink requests are replaced by ifindex caching and > not needed anymore. > > Signed-off-by: Viacheslav Ovsiienko <viachesl...@mellanox.com> > Fixes: e28111ac9864 ("net/mlx5: fix master device Netlink socket sharing") > ---
Acked-by: Yongseok Koh <ys...@mellanox.com> > drivers/net/mlx5/mlx5.h | 6 --- > drivers/net/mlx5/mlx5_ethdev.c | 109 ++--------------------------------------- > 2 files changed, 3 insertions(+), 112 deletions(-) > > diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h > index 1011dcc..3e75961 100644 > --- a/drivers/net/mlx5/mlx5.h > +++ b/drivers/net/mlx5/mlx5.h > @@ -518,15 +518,9 @@ struct mlx5_priv { > /* mlx5_ethdev.c */ > > int mlx5_get_ifname(const struct rte_eth_dev *dev, char > (*ifname)[IF_NAMESIZE]); > -int mlx5_get_ifname_base(const struct rte_eth_dev *base, > - const struct rte_eth_dev *dev, > - char (*ifname)[IF_NAMESIZE]); > int mlx5_get_master_ifname(const char *ibdev_path, char > (*ifname)[IF_NAMESIZE]); > unsigned int mlx5_ifindex(const struct rte_eth_dev *dev); > int mlx5_ifreq(const struct rte_eth_dev *dev, int req, struct ifreq *ifr); > -int mlx5_ifreq_base(const struct rte_eth_dev *base, > - const struct rte_eth_dev *dev, > - int req, struct ifreq *ifr); > int mlx5_get_mtu(struct rte_eth_dev *dev, uint16_t *mtu); > int mlx5_set_flags(struct rte_eth_dev *dev, unsigned int keep, > unsigned int flags); > diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c > index dfd9e97..9629cfb 100644 > --- a/drivers/net/mlx5/mlx5_ethdev.c > +++ b/drivers/net/mlx5/mlx5_ethdev.c > @@ -240,51 +240,6 @@ struct ethtool_link_settings { > } > > /** > - * Get interface name for the specified device, uses the extra base > - * device resources to perform Netlink requests. > - * > - * This is a port representor-aware version of mlx5_get_master_ifname(). > - * > - * @param[in] base > - * Pointer to Ethernet device to use Netlink socket from > - * to perfrom requests. > - * @param[in] dev > - * Pointer to Ethernet device. > - * @param[out] ifname > - * Interface name output buffer. > - * > - * @return > - * 0 on success, a negative errno value otherwise and rte_errno is set. > - */ > -int > -mlx5_get_ifname_base(const struct rte_eth_dev *base, > - const struct rte_eth_dev *dev, > - char (*ifname)[IF_NAMESIZE]) > -{ > - struct mlx5_priv *priv = dev->data->dev_private; > - struct mlx5_priv *priv_base = base->data->dev_private; > - unsigned int ifindex; > - > - assert(priv); > - assert(priv->sh); > - assert(priv_base); > - ifindex = priv_base->nl_socket_rdma >= 0 ? > - mlx5_nl_ifindex(priv_base->nl_socket_rdma, > - priv->sh->ibdev_name, > - priv->ibv_port) : 0; > - if (!ifindex) { > - if (!priv->representor) > - return mlx5_get_master_ifname(priv->sh->ibdev_path, > - ifname); > - rte_errno = ENXIO; > - return -rte_errno; > - } > - if (if_indextoname(ifindex, &(*ifname)[0])) > - return 0; > - rte_errno = errno; > - return -rte_errno; > -} > -/** > * Get the interface index from device name. > * > * @param[in] dev > @@ -346,51 +301,6 @@ struct ethtool_link_settings { > } > > /** > - * Perform ifreq ioctl() on specified Ethernet device, > - * ifindex, name and other attributes are requested > - * on the base device to avoid specified device Netlink > - * socket sharing (this is not thread-safe). > - * > - * @param[in] base > - * Pointer to Ethernet device to get dev attributes. > - * @param[in] dev > - * Pointer to Ethernet device to perform ioctl. > - * @param req > - * Request number to pass to ioctl(). > - * @param[out] ifr > - * Interface request structure output buffer. > - * > - * @return > - * 0 on success, a negative errno value otherwise and rte_errno is set. > - */ > -int > -mlx5_ifreq_base(const struct rte_eth_dev *base, > - const struct rte_eth_dev *dev, > - int req, struct ifreq *ifr) > -{ > - int sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP); > - int ret = 0; > - > - if (sock == -1) { > - rte_errno = errno; > - return -rte_errno; > - } > - ret = mlx5_get_ifname_base(base, dev, &ifr->ifr_name); > - if (ret) > - goto error; > - ret = ioctl(sock, req, ifr); > - if (ret == -1) { > - rte_errno = errno; > - goto error; > - } > - close(sock); > - return 0; > -error: > - close(sock); > - return -rte_errno; > -} > - > -/** > * Get device MTU. > * > * @param dev > @@ -872,15 +782,7 @@ int mlx5_fw_version_get(struct rte_eth_dev *dev, char > *fw_ver, size_t fw_size) > ifr = (struct ifreq) { > .ifr_data = (void *)&edata, > }; > - /* > - * Use special version of mlx5_ifreq() > - * to get master device name with local > - * device Netlink socket. Using master > - * device Netlink socket is not thread > - * safe. > - */ > - ret = mlx5_ifreq_base(dev, master, > - SIOCETHTOOL, &ifr); > + ret = mlx5_ifreq(master, SIOCETHTOOL, &ifr); > } > } > if (ret) { > @@ -977,12 +879,7 @@ int mlx5_fw_version_get(struct rte_eth_dev *dev, char > *fw_ver, size_t fw_size) > ifr = (struct ifreq) { > .ifr_data = (void *)&gcmd, > }; > - /* > - * Avoid using master Netlink socket. > - * This is not thread-safe. > - */ > - ret = mlx5_ifreq_base(dev, master, > - SIOCETHTOOL, &ifr); > + ret = mlx5_ifreq(master, SIOCETHTOOL, &ifr); > } > } > if (ret) { > @@ -1003,7 +900,7 @@ int mlx5_fw_version_get(struct rte_eth_dev *dev, char > *fw_ver, size_t fw_size) > > *ecmd = gcmd; > ifr.ifr_data = (void *)ecmd; > - ret = mlx5_ifreq_base(dev, master ? master : dev, SIOCETHTOOL, &ifr); > + ret = mlx5_ifreq(master ? master : dev, SIOCETHTOOL, &ifr); > if (ret) { > DRV_LOG(DEBUG, > "port %u ioctl(SIOCETHTOOL," > -- > 1.8.3.1 >