* [dpdk-dev] [PATCH] net/ixgbe: fix link status when link is NACK @ 2018-07-23 3:05 Yanglong Wu 2018-07-24 7:30 ` [dpdk-dev] [PATCH v2] " Yanglong Wu 0 siblings, 1 reply; 6+ messages in thread From: Yanglong Wu @ 2018-07-23 3:05 UTC (permalink / raw) To: dev; +Cc: qi.z.zhang, dong1.wang, Yanglong Wu Link status should be set as down when link is NACK. Fixes: dc66e5fd01b9 ("net/ixgbe: improve link state check on VF") Signed-off-by: Yanglong Wu <yanglong.wu@intel.com> --- drivers/net/ixgbe/ixgbe_ethdev.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index 997683d3b..378ead4b4 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/drivers/net/ixgbe/ixgbe_ethdev.c @@ -3933,12 +3933,10 @@ ixgbevf_check_link(struct ixgbe_hw *hw, ixgbe_link_speed *speed, } if (no_pflink_check) { - if (*speed == IXGBE_LINK_SPEED_UNKNOWN) + if (*speed == IXGBE_LINK_SPEED_UNKNOWN) { mac->get_link_status = true; - else - mac->get_link_status = false; - - goto out; + goto out; + } } /* if the read failed it could just be a mailbox collision, best wait * until we are called again and don't report an error @@ -4013,6 +4011,7 @@ ixgbe_dev_link_update_share(struct rte_eth_dev *dev, if (diag != 0) { link.link_speed = ETH_SPEED_NUM_100M; link.link_duplex = ETH_LINK_FULL_DUPLEX; + link.link_status = ETH_LINK_DOWN; return rte_eth_linkstatus_set(dev, &link); } -- 2.11.0 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [dpdk-dev] [PATCH v2] net/ixgbe: fix link status when link is NACK 2018-07-23 3:05 [dpdk-dev] [PATCH] net/ixgbe: fix link status when link is NACK Yanglong Wu @ 2018-07-24 7:30 ` Yanglong Wu 2018-07-25 6:02 ` Zhang, Qi Z 2018-07-26 2:24 ` [dpdk-dev] [PATCH v3] net/ixgbe: fix ixgbevf link status Yanglong Wu 0 siblings, 2 replies; 6+ messages in thread From: Yanglong Wu @ 2018-07-24 7:30 UTC (permalink / raw) To: dev; +Cc: qi.z.zhang, dong1.wang, Yanglong Wu Link status should be set as down when link is NACK. Fixes: dc66e5fd01b9 ("net/ixgbe: improve link state check on VF") Signed-off-by: Yanglong Wu <yanglong.wu@intel.com> --- v2: no need to set link status again --- drivers/net/ixgbe/ixgbe_ethdev.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index 997683d3b..3ffc72b40 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/drivers/net/ixgbe/ixgbe_ethdev.c @@ -3933,12 +3933,10 @@ ixgbevf_check_link(struct ixgbe_hw *hw, ixgbe_link_speed *speed, } if (no_pflink_check) { - if (*speed == IXGBE_LINK_SPEED_UNKNOWN) + if (*speed == IXGBE_LINK_SPEED_UNKNOWN) { mac->get_link_status = true; - else - mac->get_link_status = false; - - goto out; + goto out; + } } /* if the read failed it could just be a mailbox collision, best wait * until we are called again and don't report an error -- 2.11.0 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [dpdk-dev] [PATCH v2] net/ixgbe: fix link status when link is NACK 2018-07-24 7:30 ` [dpdk-dev] [PATCH v2] " Yanglong Wu @ 2018-07-25 6:02 ` Zhang, Qi Z 2018-07-26 2:24 ` [dpdk-dev] [PATCH v3] net/ixgbe: fix ixgbevf link status Yanglong Wu 1 sibling, 0 replies; 6+ messages in thread From: Zhang, Qi Z @ 2018-07-25 6:02 UTC (permalink / raw) To: Wu, Yanglong, dev; +Cc: Wang, Dong1 Hi Yanglang: > -----Original Message----- > From: Wu, Yanglong > Sent: Tuesday, July 24, 2018 3:31 PM > To: dev@dpdk.org > Cc: Zhang, Qi Z <qi.z.zhang@intel.com>; Wang, Dong1 > <dong1.wang@intel.com>; Wu, Yanglong <yanglong.wu@intel.com> > Subject: [PATCH v2] net/ixgbe: fix link status when link is NACK > > Link status should be set as down when link is NACK. > > Fixes: dc66e5fd01b9 ("net/ixgbe: improve link state check on VF") > > Signed-off-by: Yanglong Wu <yanglong.wu@intel.com> > > --- > v2: > no need to set link status again > --- > drivers/net/ixgbe/ixgbe_ethdev.c | 8 +++----- > 1 file changed, 3 insertions(+), 5 deletions(-) > > diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c > b/drivers/net/ixgbe/ixgbe_ethdev.c > index 997683d3b..3ffc72b40 100644 > --- a/drivers/net/ixgbe/ixgbe_ethdev.c > +++ b/drivers/net/ixgbe/ixgbe_ethdev.c > @@ -3933,12 +3933,10 @@ ixgbevf_check_link(struct ixgbe_hw *hw, > ixgbe_link_speed *speed, > } > > if (no_pflink_check) { > - if (*speed == IXGBE_LINK_SPEED_UNKNOWN) > + if (*speed == IXGBE_LINK_SPEED_UNKNOWN) { > mac->get_link_status = true; > - else > - mac->get_link_status = false; > - > - goto out; > + goto out; > + } > } Sorry, I can't understand this change combined with your commit log, could you explain more? Btw, no_fplink_check = 1 means wait_to_complete = 0, but in the case when *speed != IXGBE_LINK_SPEED_UNKNOWN , you will still go msg.read which I guess is not suppose be called in the case wait_to_complete = 0, is it right? > /* if the read failed it could just be a mailbox collision, best wait > * until we are called again and don't report an error > -- > 2.11.0 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [dpdk-dev] [PATCH v3] net/ixgbe: fix ixgbevf link status 2018-07-24 7:30 ` [dpdk-dev] [PATCH v2] " Yanglong Wu 2018-07-25 6:02 ` Zhang, Qi Z @ 2018-07-26 2:24 ` Yanglong Wu 2018-07-26 2:49 ` Wang, Dong1 2018-07-26 5:17 ` Zhang, Qi Z 1 sibling, 2 replies; 6+ messages in thread From: Yanglong Wu @ 2018-07-26 2:24 UTC (permalink / raw) To: dev; +Cc: qi.z.zhang, dong1.wang, Yanglong Wu ixgbevf can't get right link status unless it check PF link status in wait mode. Fixes: dc66e5fd01b9 ("net/ixgbe: improve link state check on VF") Signed-off-by: Yanglong Wu <yanglong.wu@intel.com> --- v3: change to wait mode in ixgbevf --- v2: no need to set link status again --- drivers/net/ixgbe/ixgbe_ethdev.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index 26b192737..b90b352e3 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/drivers/net/ixgbe/ixgbe_ethdev.c @@ -4006,7 +4006,8 @@ ixgbe_dev_link_update_share(struct rte_eth_dev *dev, wait = 0; if (vf) - diag = ixgbevf_check_link(hw, &link_speed, &link_up, wait); + /* ixgbevf need to wait to get link status */ + diag = ixgbevf_check_link(hw, &link_speed, &link_up, 1); else diag = ixgbe_check_link(hw, &link_speed, &link_up, wait); -- 2.11.0 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [dpdk-dev] [PATCH v3] net/ixgbe: fix ixgbevf link status 2018-07-26 2:24 ` [dpdk-dev] [PATCH v3] net/ixgbe: fix ixgbevf link status Yanglong Wu @ 2018-07-26 2:49 ` Wang, Dong1 2018-07-26 5:17 ` Zhang, Qi Z 1 sibling, 0 replies; 6+ messages in thread From: Wang, Dong1 @ 2018-07-26 2:49 UTC (permalink / raw) To: Wu, Yanglong, dev; +Cc: Zhang, Qi Z Hi Yanglong, I think the risk (or bug) is in ixgbevf_check_link(), not how to invoke this function(). Anyone who call ixgbevf_check_link() with "wait = 0", they must can't get right link status when 82599 use DA Cable. In ixgbevf kernel driver, ixgbe_check_mac_link_vf(), "wait" didn't be referenced. What about reference to ixgbevf kernel driver, don't use "wait" parameter in ixgbevf_check_link()? Regards, Dong -----Original Message----- From: Wu, Yanglong Sent: Thursday, July 26, 2018 10:25 To: dev@dpdk.org Cc: Zhang, Qi Z <qi.z.zhang@intel.com>; Wang, Dong1 <dong1.wang@intel.com>; Wu, Yanglong <yanglong.wu@intel.com> Subject: [PATCH v3] net/ixgbe: fix ixgbevf link status ixgbevf can't get right link status unless it check PF link status in wait mode. Fixes: dc66e5fd01b9 ("net/ixgbe: improve link state check on VF") Signed-off-by: Yanglong Wu <yanglong.wu@intel.com> --- v3: change to wait mode in ixgbevf --- v2: no need to set link status again --- drivers/net/ixgbe/ixgbe_ethdev.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index 26b192737..b90b352e3 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/drivers/net/ixgbe/ixgbe_ethdev.c @@ -4006,7 +4006,8 @@ ixgbe_dev_link_update_share(struct rte_eth_dev *dev, wait = 0; if (vf) - diag = ixgbevf_check_link(hw, &link_speed, &link_up, wait); + /* ixgbevf need to wait to get link status */ + diag = ixgbevf_check_link(hw, &link_speed, &link_up, 1); else diag = ixgbe_check_link(hw, &link_speed, &link_up, wait); -- 2.11.0 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [dpdk-dev] [PATCH v3] net/ixgbe: fix ixgbevf link status 2018-07-26 2:24 ` [dpdk-dev] [PATCH v3] net/ixgbe: fix ixgbevf link status Yanglong Wu 2018-07-26 2:49 ` Wang, Dong1 @ 2018-07-26 5:17 ` Zhang, Qi Z 1 sibling, 0 replies; 6+ messages in thread From: Zhang, Qi Z @ 2018-07-26 5:17 UTC (permalink / raw) To: Wu, Yanglong, dev; +Cc: Wang, Dong1 > -----Original Message----- > From: Wu, Yanglong > Sent: Thursday, July 26, 2018 10:25 AM > To: dev@dpdk.org > Cc: Zhang, Qi Z <qi.z.zhang@intel.com>; Wang, Dong1 > <dong1.wang@intel.com>; Wu, Yanglong <yanglong.wu@intel.com> > Subject: [PATCH v3] net/ixgbe: fix ixgbevf link status > > ixgbevf can't get right link status unless it check PF link status in wait mode. > > Fixes: dc66e5fd01b9 ("net/ixgbe: improve link state check on VF") > > Signed-off-by: Yanglong Wu <yanglong.wu@intel.com> > --- > v3: > change to wait mode in ixgbevf > --- > v2: > no need to set link status again > --- > drivers/net/ixgbe/ixgbe_ethdev.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c > b/drivers/net/ixgbe/ixgbe_ethdev.c > index 26b192737..b90b352e3 100644 > --- a/drivers/net/ixgbe/ixgbe_ethdev.c > +++ b/drivers/net/ixgbe/ixgbe_ethdev.c > @@ -4006,7 +4006,8 @@ ixgbe_dev_link_update_share(struct rte_eth_dev > *dev, > wait = 0; > > if (vf) > - diag = ixgbevf_check_link(hw, &link_speed, &link_up, wait); > + /* ixgbevf need to wait to get link status */ > + diag = ixgbevf_check_link(hw, &link_speed, &link_up, 1); Sorry, I mislead you in our offline talk. I think to implement a no_wait ops with a wait method may confuse the user, because an application may call rte_eth_link_get_nowait in the data path, we should not do any time consume tasks. So maybe the reasonable way is return -ENOTSUP for a nowait request since ixgbevf can't support this due to hardware limitation. And also the parameter " wait_to_complete" can be omitted in ixgbevf_check_link, since the nowait implementation is not correct and should be removed. > else > diag = ixgbe_check_link(hw, &link_speed, &link_up, wait); > > -- > 2.11.0 ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2018-07-26 5:20 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-07-23 3:05 [dpdk-dev] [PATCH] net/ixgbe: fix link status when link is NACK Yanglong Wu 2018-07-24 7:30 ` [dpdk-dev] [PATCH v2] " Yanglong Wu 2018-07-25 6:02 ` Zhang, Qi Z 2018-07-26 2:24 ` [dpdk-dev] [PATCH v3] net/ixgbe: fix ixgbevf link status Yanglong Wu 2018-07-26 2:49 ` Wang, Dong1 2018-07-26 5:17 ` Zhang, Qi Z
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).