On 3/9/2018 8:42 AM, Ravi Kumar wrote: > Signed-off-by: Ravi Kumar <ravi1.ku...@amd.com>
<...> > +/* return 0 means link status changed, -1 means not changed */ > +static int > +axgbe_dev_link_update(struct rte_eth_dev *dev, > + int wait_to_complete __rte_unused) > +{ > + PMD_INIT_FUNC_TRACE(); > + rte_delay_ms(800); > + > + struct axgbe_port *pdata = dev->data->dev_private; > + int old_link_status = dev->data->dev_link.link_status; > + > + pdata->phy_if.phy_status(pdata); > + > + dev->data->dev_link.link_speed = pdata->phy_speed; > + switch (pdata->phy.duplex) { > + case DUPLEX_FULL: > + dev->data->dev_link.link_duplex = ETH_LINK_FULL_DUPLEX; > + break; > + case DUPLEX_HALF: > + dev->data->dev_link.link_duplex = ETH_LINK_HALF_DUPLEX; > + break; > + } > + dev->data->dev_link.link_autoneg = !(dev->data->dev_conf.link_speeds & > + ETH_LINK_SPEED_FIXED); > + dev->data->dev_link.link_status = pdata->phy_link; > + > + return old_link_status == dev->data->dev_link.link_status ? -1 : 0; There are a very recently merged patches to get/set link status atomically (rte_eth_linkstatus_get / rte_eth_linkstatus_set) only in next-net (not merged to main repo yet), you may benefit from them. <...>