On 1/8/2018 5:45 PM, Stephen Hemminger wrote: > Use the new comon code in ethdev to handle link status update. > > Signed-off-by: Stephen Hemminger <step...@networkplumber.org>
<...> > static int > virtio_dev_link_update(struct rte_eth_dev *dev, __rte_unused int > wait_to_complete) > { > - struct rte_eth_link link, old; > - uint16_t status; > struct virtio_hw *hw = dev->data->dev_private; > - memset(&link, 0, sizeof(link)); > - virtio_dev_atomic_read_link_status(dev, &link); > - old = link; > - link.link_duplex = ETH_LINK_FULL_DUPLEX; > - link.link_speed = SPEED_10G; > + uint16_t status; > + struct rte_eth_link link = { > + .link_speed = ETH_SPEED_NUM_10G, > + .link_duplex = ETH_LINK_FULL_DUPLEX, > + .link_autoneg = ETH_LINK_SPEED_FIXED, With a new cleanup commit [1] ETH_LINK_FIXED used for autoneg value (instead of ETH_LINK_SPEED_FIXED). And since is ETH_LINK_FIXED is 0, setting autoneg to it can be omitted. [1] 93dd7b328a9b ("ethdev: fix link autonegotiation value") This commit is in next-net. Unlike Linux "net-next" sub-tree which is for next release development tree, dpdk next-net is for current release network drivers which this patch seems fits into. I already rebased this patchset to next-net, I will share it to continue discussion from that point. > + }; > > if (hw->started == 0) { > link.link_status = ETH_LINK_DOWN; > @@ -1957,9 +1916,8 @@ virtio_dev_link_update(struct rte_eth_dev *dev, > __rte_unused int wait_to_complet > } else { > link.link_status = ETH_LINK_UP; > } > - virtio_dev_atomic_write_link_status(dev, &link); > > - return (old.link_status == link.link_status) ? -1 : 0; > + return _rte_eth_linkstatus_set(dev, &link); > } > > static int >