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.

<...>

Reply via email to