On 8/29/2022 9:41 AM, Junfeng Guo wrote:
Support dev_ops link_update. Signed-off-by: Xiaoyun Li <xiaoyun...@intel.com> Signed-off-by: Junfeng Guo <junfeng....@intel.com> --- drivers/net/gve/gve_ethdev.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/drivers/net/gve/gve_ethdev.c b/drivers/net/gve/gve_ethdev.c index f10f273f7d..435115c047 100644 --- a/drivers/net/gve/gve_ethdev.c +++ b/drivers/net/gve/gve_ethdev.c @@ -37,10 +37,39 @@ gve_dev_configure(__rte_unused struct rte_eth_dev *dev) return 0; } +static int +gve_link_update(struct rte_eth_dev *dev, __rte_unused int wait_to_complete) +{ + struct gve_priv *priv = dev->data->dev_private; + struct rte_eth_link link; + int err; + + memset(&link, 0, sizeof(link)); + link.link_duplex = RTE_ETH_LINK_FULL_DUPLEX; + link.link_autoneg = RTE_ETH_LINK_AUTONEG; + + if (!dev->data->dev_started) { + link.link_status = RTE_ETH_LINK_DOWN; + link.link_speed = RTE_ETH_SPEED_NUM_NONE; + } else { + link.link_status = RTE_ETH_LINK_UP; + PMD_INIT_LOG(DEBUG, "Get link status from hw"); + err = gve_adminq_report_link_speed(priv);
As far as I can see the API is calling an adminq command, is this command blocking until link is up? If so is there a non blocking version to utilize 'wait_to_complete', instead of ignoring it?
Also what will happen if 'start()' dev_ops called but cable is not plugged in at all, won't this set link status still to "UP"?