From: murphy <murphyx.y...@intel.com>

If the PF driver supports the new speed reporting capabilities
then use link_event_adv instead of link_event to get the speed.

Fixes: 5330b042977c ("net/iavf: fix link speed")

Cc: sta...@dpdk.org

Signed-off-by: murphy <murphyx.y...@intel.com>
---
 drivers/net/iavf/iavf_vchnl.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/net/iavf/iavf_vchnl.c b/drivers/net/iavf/iavf_vchnl.c
index 76f8e38d1..c4956dc58 100644
--- a/drivers/net/iavf/iavf_vchnl.c
+++ b/drivers/net/iavf/iavf_vchnl.c
@@ -195,14 +195,13 @@ iavf_handle_pf_event_msg(struct rte_eth_dev *dev, uint8_t 
*msg,
        case VIRTCHNL_EVENT_LINK_CHANGE:
                PMD_DRV_LOG(DEBUG, "VIRTCHNL_EVENT_LINK_CHANGE event");
                vf->link_up = pf_msg->event_data.link_event.link_status;
+               enum virtchnl_link_speed speed;
                if (vf->vf_res->vf_cap_flags & VIRTCHNL_VF_CAP_ADV_LINK_SPEED) {
-                       vf->link_speed =
-                               pf_msg->event_data.link_event_adv.link_speed;
+                       speed = pf_msg->event_data.link_event_adv.link_speed;
                } else {
-                       enum virtchnl_link_speed speed;
                        speed = pf_msg->event_data.link_event.link_speed;
-                       vf->link_speed = iavf_convert_link_speed(speed);
                }
+               vf->link_speed = iavf_convert_link_speed(speed);
                iavf_dev_link_update(dev, 0);
                rte_eth_dev_callback_process(dev, RTE_ETH_EVENT_INTR_LSC, NULL);
                break;
-- 
2.17.1

Reply via email to