[dpdk-dev] [PATCH] ethdev: fix link autonegotiation value

Thomas Monjalon thomas at monjalon.net
Mon Jan 8 16:25:58 CET 2018


08/01/2018 13:31, Ferruh Yigit:
> On 1/5/2018 5:38 PM, Thomas Monjalon wrote:
> > There are 3 kind of link data in ethdev:
> > 	- capabilities (rte_eth_dev_info)
> > 	- configuration (rte_eth_conf)
> > 	- status (rte_eth_link)
> > 
> > A bit-field is used for capabilities (rte_eth_dev_info.speed_capa) and
> > configuration (rte_eth_conf.link_speeds).
> > Bits are defined in ETH_LINK_SPEED_*.
> > 
> > Some numerical (ETH_SPEED_NUM_*) and boolean (ETH_LINK_*) values
> > are used for the link status (rte_eth_link.*).
> > 
> > There was a mistake in the comment of rte_eth_link.link_autoneg,
> > suggesting ETH_LINK_SPEED_[AUTONEG/FIXED] which are 0/1,
> > instead of ETH_LINK_[AUTONEG/FIXED] which are 1/0.
> > 
> > The drivers are fixed to use ETH_LINK_[AUTONEG/FIXED].
> > 
> > Fixes: 82113036e4e5 ("ethdev: redesign link speed config")
> > 
> > Suggested-by: Andrew Rybchenko <arybchenko at solarflare.com>
> > Signed-off-by: Thomas Monjalon <thomas at monjalon.net>
> 
> <...>
> 
> > diff --git a/drivers/net/pcap/rte_eth_pcap.c b/drivers/net/pcap/rte_eth_pcap.c
> > index 5a86752f9..3efb451a2 100644
> > --- a/drivers/net/pcap/rte_eth_pcap.c
> > +++ b/drivers/net/pcap/rte_eth_pcap.c
> > @@ -124,7 +124,7 @@ static struct rte_eth_link pmd_link = {
> >  		.link_speed = ETH_SPEED_NUM_10G,
> >  		.link_duplex = ETH_LINK_FULL_DUPLEX,
> >  		.link_status = ETH_LINK_DOWN,
> > -		.link_autoneg = ETH_LINK_SPEED_FIXED,
> > +		.link_autoneg = ETH_LINK_AUTONEG,
> >  };
> >  
> >  static int
> <...>
> > diff --git a/drivers/net/softnic/rte_eth_softnic.c b/drivers/net/softnic/rte_eth_softnic.c
> > index c21c29e79..5c5464c8d 100644
> > --- a/drivers/net/softnic/rte_eth_softnic.c
> > +++ b/drivers/net/softnic/rte_eth_softnic.c
> > @@ -522,7 +522,7 @@ pmd_ethdev_register(struct rte_vdev_device *vdev,
> >  	soft_dev->data->dev_private = dev_private;
> >  	soft_dev->data->dev_link.link_speed = hard_speed;
> >  	soft_dev->data->dev_link.link_duplex = ETH_LINK_FULL_DUPLEX;
> > -	soft_dev->data->dev_link.link_autoneg = ETH_LINK_SPEED_FIXED;
> > +	soft_dev->data->dev_link.link_autoneg = ETH_LINK_AUTONEG;
> >  	soft_dev->data->dev_link.link_status = ETH_LINK_DOWN;
> >  	soft_dev->data->mac_addrs = &eth_addr;
> >  	soft_dev->data->promiscuous = 1;
> >  static void
> <...>
> > diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c
> > index b988d1b41..fa1206c26 100644
> > --- a/drivers/net/vmxnet3/vmxnet3_ethdev.c
> > +++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c
> > @@ -1143,7 +1143,7 @@ __vmxnet3_dev_link_update(struct rte_eth_dev *dev,
> >  		link.link_status = ETH_LINK_UP;
> >  		link.link_duplex = ETH_LINK_FULL_DUPLEX;
> >  		link.link_speed = ETH_SPEED_NUM_10G;
> > -		link.link_autoneg = ETH_LINK_SPEED_FIXED;
> > +		link.link_autoneg = ETH_LINK_AUTONEG;
> >  	}
> >  
> >  	vmxnet3_dev_atomic_write_link_status(dev, &link);
> 
> These three drivers changes from "fixed" to "autoneg", intentional?

Yes.
These are virtual ports, so fixed/autoneg does not really makes sense.
I think autoneg is more fuzzy so more appropriate :)
Anyway, the value is not changed, because
	ETH_LINK_SPEED_FIXED = ETH_LINK_AUTONEG = 1


More information about the dev mailing list