DPDK patches and discussions
 help / color / mirror / Atom feed
* [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).