* [dpdk-dev] [PATCH] i40e: fix no effect wait_to_complete on link_get
@ 2015-04-01 2:33 Cunming Liang
2015-04-01 2:50 ` Zhang, Helin
0 siblings, 1 reply; 8+ messages in thread
From: Cunming Liang @ 2015-04-01 2:33 UTC (permalink / raw)
To: dev
API *rte_eth_link_get* expect to call a wait to complete link_update.
That's the difference between *rte_eth_link_get_nowait*.
The patch fixes the issue that i40e link_update ignores the wait_to_complete flag.
The issue impacts those applications calling rte_eth_link_get to get wrong intermediate link status.
Signed-off-by: Cunming Liang <cunming.liang@intel.com>
---
lib/librte_pmd_i40e/i40e_ethdev.c | 29 +++++++++++++++++++----------
1 file changed, 19 insertions(+), 10 deletions(-)
diff --git a/lib/librte_pmd_i40e/i40e_ethdev.c b/lib/librte_pmd_i40e/i40e_ethdev.c
index 00d044f..6b8f96e 100644
--- a/lib/librte_pmd_i40e/i40e_ethdev.c
+++ b/lib/librte_pmd_i40e/i40e_ethdev.c
@@ -1081,28 +1081,37 @@ i40e_dev_set_link_down(__rte_unused struct rte_eth_dev *dev)
int
i40e_dev_link_update(struct rte_eth_dev *dev,
- __rte_unused int wait_to_complete)
+ int wait_to_complete)
{
+#define CHECK_INTERVAL 100 /* 100ms */
+#define MAX_REPEAT_TIME 10 /* 1s (10 * 100ms) in total */
struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);
struct i40e_link_status link_status;
struct rte_eth_link link, old;
int status;
+ unsigned rep_cnt = MAX_REPEAT_TIME;
memset(&link, 0, sizeof(link));
memset(&old, 0, sizeof(old));
memset(&link_status, 0, sizeof(link_status));
rte_i40e_dev_atomic_read_link_status(dev, &old);
- /* Get link status information from hardware */
- status = i40e_aq_get_link_info(hw, false, &link_status, NULL);
- if (status != I40E_SUCCESS) {
- link.link_speed = ETH_LINK_SPEED_100;
- link.link_duplex = ETH_LINK_FULL_DUPLEX;
- PMD_DRV_LOG(ERR, "Failed to get link info");
- goto out;
- }
+ do {
+ /* Get link status information from hardware */
+ status = i40e_aq_get_link_info(hw, false, &link_status, NULL);
+ if (status != I40E_SUCCESS) {
+ link.link_speed = ETH_LINK_SPEED_100;
+ link.link_duplex = ETH_LINK_FULL_DUPLEX;
+ PMD_DRV_LOG(ERR, "Failed to get link info");
+ goto out;
+ }
+
+ link.link_status = link_status.link_info & I40E_AQ_LINK_UP;
+ if (!wait_to_complete)
+ break;
- link.link_status = link_status.link_info & I40E_AQ_LINK_UP;
+ rte_delay_ms(CHECK_INTERVAL);
+ } while (!link.link_status && rep_cnt--);
if (!link.link_status)
goto out;
--
1.8.1.4
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH] i40e: fix no effect wait_to_complete on link_get
2015-04-01 2:33 [dpdk-dev] [PATCH] i40e: fix no effect wait_to_complete on link_get Cunming Liang
@ 2015-04-01 2:50 ` Zhang, Helin
2015-04-01 6:10 ` Zhang, XiaonanX
2015-04-01 19:53 ` Thomas Monjalon
0 siblings, 2 replies; 8+ messages in thread
From: Zhang, Helin @ 2015-04-01 2:50 UTC (permalink / raw)
To: Liang, Cunming, dev
> -----Original Message-----
> From: Liang, Cunming
> Sent: Wednesday, April 1, 2015 10:34 AM
> To: dev@dpdk.org
> Cc: Zhang, Helin; Zhang, XiaonanX; Dumitrescu, Cristian; Liang, Cunming
> Subject: [PATCH] i40e: fix no effect wait_to_complete on link_get
>
> API *rte_eth_link_get* expect to call a wait to complete link_update.
> That's the difference between *rte_eth_link_get_nowait*.
> The patch fixes the issue that i40e link_update ignores the wait_to_complete
> flag.
> The issue impacts those applications calling rte_eth_link_get to get wrong
> intermediate link status.
>
> Signed-off-by: Cunming Liang <cunming.liang@intel.com>
Acked-by: Helin Zhang <helin.zhang@intel.com>
> ---
> lib/librte_pmd_i40e/i40e_ethdev.c | 29 +++++++++++++++++++----------
> 1 file changed, 19 insertions(+), 10 deletions(-)
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH] i40e: fix no effect wait_to_complete on link_get
2015-04-01 2:50 ` Zhang, Helin
@ 2015-04-01 6:10 ` Zhang, XiaonanX
2015-04-01 19:51 ` Thomas Monjalon
2015-04-01 19:53 ` Thomas Monjalon
1 sibling, 1 reply; 8+ messages in thread
From: Zhang, XiaonanX @ 2015-04-01 6:10 UTC (permalink / raw)
To: Zhang, Helin, Liang, Cunming, Cao, Waterman, dev
Tested-by: Xiaonan zhang<xiaonanx.zhang@intel.com>
- OS: Fedora21 3.19.1-201.fc21.x86_64
- GCC: gcc version 4.9.1 20140930 (Red Hat 4.9.1-11) (GCC)
- CPU: Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
- NIC: Ethernet controller [0200]: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ [8086:1572] (rev 01)
- Default x86_64-native-linuxapp-gcc configuration
- Total 1 cases, 1 passed, 0 failed
- Test case: Used Qos example to verified
-------------------------------------
Traffic shaping for subport. Check that the subport rate is enforced.
Set the subport output rate to x% of line rate (x = 10 .. 100). Set the subport TC limits high (100% line rate each), so they do not constitute limitations. Input traffic is 100% line rate.
Different tb period and tb credits, therefore different output rate, are tried: 25%, 50%, 75%, 90% and 100% the lineal rate. (The output for subport is Tb credits per period / Tb period.)
The traffic is injected change subport value random.
Other parameters are same before tests and they don't change here.
Cmdline: ./examples/qos_sched/build/qos_sched -c 0xe -n 4 -- --pfc "0,1,2,3,3" --cfg "/root/profile_sched_pipe_1.cfg"
The result is this table:
+-----------------------+----------------------+
| Subport output rate | Subport output rate |
| (% line rate) | (Mpps) |
+-----------+-----------+----------+-----------+
| Expected | Actual | Expected | Actual |
+-----------+-----------+----------+-----------+
Signed-off-by: Xiaonan Zhang <xiaonanx.zhang@intel.com>
-----Original Message-----
From: Zhang, Helin
Sent: Wednesday, April 01, 2015 10:50 AM
To: Liang, Cunming; dev@dpdk.org
Cc: Zhang, XiaonanX; Dumitrescu, Cristian
Subject: RE: [PATCH] i40e: fix no effect wait_to_complete on link_get
> -----Original Message-----
> From: Liang, Cunming
> Sent: Wednesday, April 1, 2015 10:34 AM
> To: dev@dpdk.org
> Cc: Zhang, Helin; Zhang, XiaonanX; Dumitrescu, Cristian; Liang, Cunming
> Subject: [PATCH] i40e: fix no effect wait_to_complete on link_get
>
> API *rte_eth_link_get* expect to call a wait to complete link_update.
> That's the difference between *rte_eth_link_get_nowait*.
> The patch fixes the issue that i40e link_update ignores the wait_to_complete
> flag.
> The issue impacts those applications calling rte_eth_link_get to get wrong
> intermediate link status.
>
> Signed-off-by: Cunming Liang <cunming.liang@intel.com>
Acked-by: Helin Zhang <helin.zhang@intel.com>
> ---
> lib/librte_pmd_i40e/i40e_ethdev.c | 29 +++++++++++++++++++----------
> 1 file changed, 19 insertions(+), 10 deletions(-)
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH] i40e: fix no effect wait_to_complete on link_get
2015-04-01 6:10 ` Zhang, XiaonanX
@ 2015-04-01 19:51 ` Thomas Monjalon
2015-04-02 1:44 ` Liang, Cunming
2015-04-02 1:52 ` Zhang, XiaonanX
0 siblings, 2 replies; 8+ messages in thread
From: Thomas Monjalon @ 2015-04-01 19:51 UTC (permalink / raw)
To: Zhang, XiaonanX, Cao, Waterman; +Cc: dev
Hi,
2015-04-01 06:10, Zhang, XiaonanX:
>
> Tested-by: Xiaonan zhang<xiaonanx.zhang@intel.com>
>
> - OS: Fedora21 3.19.1-201.fc21.x86_64
> - GCC: gcc version 4.9.1 20140930 (Red Hat 4.9.1-11) (GCC)
> - CPU: Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
> - NIC: Ethernet controller [0200]: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ [8086:1572] (rev 01)
> - Default x86_64-native-linuxapp-gcc configuration
> - Total 1 cases, 1 passed, 0 failed
>
> - Test case: Used Qos example to verified
> -------------------------------------
What is the relation between link status timeout and qos_sched?
> Traffic shaping for subport. Check that the subport rate is enforced.
>
> Set the subport output rate to x% of line rate (x = 10 .. 100). Set the subport TC limits high (100% line rate each), so they do not constitute limitations. Input traffic is 100% line rate.
>
> Different tb period and tb credits, therefore different output rate, are tried: 25%, 50%, 75%, 90% and 100% the lineal rate. (The output for subport is Tb credits per period / Tb period.)
> The traffic is injected change subport value random.
>
> Other parameters are same before tests and they don't change here.
>
> Cmdline: ./examples/qos_sched/build/qos_sched -c 0xe -n 4 -- --pfc "0,1,2,3,3" --cfg "/root/profile_sched_pipe_1.cfg"
>
> The result is this table:
>
>
> +-----------------------+----------------------+
> | Subport output rate | Subport output rate |
> | (% line rate) | (Mpps) |
> +-----------+-----------+----------+-----------+
> | Expected | Actual | Expected | Actual |
> +-----------+-----------+----------+-----------+
This table is empty.
>
> Signed-off-by: Xiaonan Zhang <xiaonanx.zhang@intel.com>
It seems that this test report is not relevant.
It will be ignored in the commit message. Sorry
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH] i40e: fix no effect wait_to_complete on link_get
2015-04-01 2:50 ` Zhang, Helin
2015-04-01 6:10 ` Zhang, XiaonanX
@ 2015-04-01 19:53 ` Thomas Monjalon
1 sibling, 0 replies; 8+ messages in thread
From: Thomas Monjalon @ 2015-04-01 19:53 UTC (permalink / raw)
To: Liang, Cunming; +Cc: dev
> > API *rte_eth_link_get* expect to call a wait to complete link_update.
> > That's the difference between *rte_eth_link_get_nowait*.
> > The patch fixes the issue that i40e link_update ignores the wait_to_complete
> > flag.
> > The issue impacts those applications calling rte_eth_link_get to get wrong
> > intermediate link status.
> >
> > Signed-off-by: Cunming Liang <cunming.liang@intel.com>
> Acked-by: Helin Zhang <helin.zhang@intel.com>
Applied, thanks
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH] i40e: fix no effect wait_to_complete on link_get
2015-04-01 19:51 ` Thomas Monjalon
@ 2015-04-02 1:44 ` Liang, Cunming
2015-04-02 22:18 ` Stephen Hemminger
2015-04-02 1:52 ` Zhang, XiaonanX
1 sibling, 1 reply; 8+ messages in thread
From: Liang, Cunming @ 2015-04-02 1:44 UTC (permalink / raw)
To: Thomas Monjalon, Zhang, XiaonanX, Cao, Waterman; +Cc: dev
Hi Thomas,
> What is the relation between link status timeout and qos_sched?
[LCM] Validation team found qos_sched test failure on i40e. The sample depends on link speed to calc the percentage.
The root cause comes from that i40e link_get hasn't support wait_to_complete well.
I agree with you it should add more description in test report why 'Used QoS example to verified'.
> > +-----------------------+----------------------+
> > | Subport output rate | Subport output rate |
> > | (% line rate) | (Mpps) |
> > +-----------+-----------+----------+-----------+
> > | Expected | Actual | Expected | Actual |
> > +-----------+-----------+----------+-----------+
>
> This table is empty.
[LCM] It's useless, should be omitted I think.
Cunming
> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com]
> Sent: Thursday, April 02, 2015 3:52 AM
> To: Zhang, XiaonanX; Cao, Waterman
> Cc: dev@dpdk.org; Zhang, Helin; Liang, Cunming
> Subject: Re: [dpdk-dev] [PATCH] i40e: fix no effect wait_to_complete on link_get
>
> Hi,
>
> 2015-04-01 06:10, Zhang, XiaonanX:
> >
> > Tested-by: Xiaonan zhang<xiaonanx.zhang@intel.com>
> >
> > - OS: Fedora21 3.19.1-201.fc21.x86_64
> > - GCC: gcc version 4.9.1 20140930 (Red Hat 4.9.1-11) (GCC)
> > - CPU: Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
> > - NIC: Ethernet controller [0200]: Intel Corporation Ethernet Controller X710 for
> 10GbE SFP+ [8086:1572] (rev 01)
> > - Default x86_64-native-linuxapp-gcc configuration
> > - Total 1 cases, 1 passed, 0 failed
> >
> > - Test case: Used Qos example to verified
> > -------------------------------------
>
> What is the relation between link status timeout and qos_sched?
>
> > Traffic shaping for subport. Check that the subport rate is enforced.
> >
> > Set the subport output rate to x% of line rate (x = 10 .. 100). Set the subport TC
> limits high (100% line rate each), so they do not constitute limitations. Input traffic
> is 100% line rate.
> >
> > Different tb period and tb credits, therefore different output rate, are tried:
> 25%, 50%, 75%, 90% and 100% the lineal rate. (The output for subport is Tb credits
> per period / Tb period.)
> > The traffic is injected change subport value random.
> >
> > Other parameters are same before tests and they don't change here.
> >
> > Cmdline: ./examples/qos_sched/build/qos_sched -c 0xe -n 4 -- --pfc
> "0,1,2,3,3" --cfg "/root/profile_sched_pipe_1.cfg"
> >
> > The result is this table:
> >
> >
> > +-----------------------+----------------------+
> > | Subport output rate | Subport output rate |
> > | (% line rate) | (Mpps) |
> > +-----------+-----------+----------+-----------+
> > | Expected | Actual | Expected | Actual |
> > +-----------+-----------+----------+-----------+
>
> This table is empty.
>
> >
> > Signed-off-by: Xiaonan Zhang <xiaonanx.zhang@intel.com>
>
> It seems that this test report is not relevant.
> It will be ignored in the commit message. Sorry
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH] i40e: fix no effect wait_to_complete on link_get
2015-04-01 19:51 ` Thomas Monjalon
2015-04-02 1:44 ` Liang, Cunming
@ 2015-04-02 1:52 ` Zhang, XiaonanX
1 sibling, 0 replies; 8+ messages in thread
From: Zhang, XiaonanX @ 2015-04-02 1:52 UTC (permalink / raw)
To: Thomas Monjalon, Cao, Waterman; +Cc: dev
Hi Thomas,
First and foremost, We found this problem with using Qos example on Fedora21 platform, there are our reproduce test steps as follows.
We used this example found FVL 4*10G NIC link status caused to our Qos example could not boot normally in our dpdk2.0 Release Cycle;
In addition, it is performance case about our FVL 4 * 10G NIC, as you know, our performance result currently should not be public;
And also that's why our expectation performance data are empty.
In a nutshell, We have verified this patch and confirmed the Qos example could run and get performance data after we applied this patch to our code.
Thanks.
Best Regards,
Xiaonan
-----Original Message-----
From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com]
Sent: Thursday, April 02, 2015 3:52 AM
To: Zhang, XiaonanX; Cao, Waterman
Cc: dev@dpdk.org; Zhang, Helin; Liang, Cunming
Subject: Re: [dpdk-dev] [PATCH] i40e: fix no effect wait_to_complete on link_get
Hi,
2015-04-01 06:10, Zhang, XiaonanX:
>
> Tested-by: Xiaonan zhang<xiaonanx.zhang@intel.com>
>
> - OS: Fedora21 3.19.1-201.fc21.x86_64
> - GCC: gcc version 4.9.1 20140930 (Red Hat 4.9.1-11) (GCC)
> - CPU: Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
> - NIC: Ethernet controller [0200]: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ [8086:1572] (rev 01)
> - Default x86_64-native-linuxapp-gcc configuration
> - Total 1 cases, 1 passed, 0 failed
>
> - Test case: Used Qos example to verified
> -------------------------------------
What is the relation between link status timeout and qos_sched?
> Traffic shaping for subport. Check that the subport rate is enforced.
>
> Set the subport output rate to x% of line rate (x = 10 .. 100). Set the subport TC limits high (100% line rate each), so they do not constitute limitations. Input traffic is 100% line rate.
>
> Different tb period and tb credits, therefore different output rate, are tried: 25%, 50%, 75%, 90% and 100% the lineal rate. (The output for subport is Tb credits per period / Tb period.)
> The traffic is injected change subport value random.
>
> Other parameters are same before tests and they don't change here.
>
> Cmdline: ./examples/qos_sched/build/qos_sched -c 0xe -n 4 -- --pfc "0,1,2,3,3" --cfg "/root/profile_sched_pipe_1.cfg"
>
> The result is this table:
>
>
> +-----------------------+----------------------+
> | Subport output rate | Subport output rate |
> | (% line rate) | (Mpps) |
> +-----------+-----------+----------+-----------+
> | Expected | Actual | Expected | Actual |
> +-----------+-----------+----------+-----------+
This table is empty.
>
> Signed-off-by: Xiaonan Zhang <xiaonanx.zhang@intel.com>
It seems that this test report is not relevant.
It will be ignored in the commit message. Sorry
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH] i40e: fix no effect wait_to_complete on link_get
2015-04-02 1:44 ` Liang, Cunming
@ 2015-04-02 22:18 ` Stephen Hemminger
0 siblings, 0 replies; 8+ messages in thread
From: Stephen Hemminger @ 2015-04-02 22:18 UTC (permalink / raw)
To: Liang, Cunming; +Cc: dev
The qos_scheduler has a 32 bit speed value and therefore I doubt it will
work work at 40G
On Wed, Apr 1, 2015 at 6:44 PM, Liang, Cunming <cunming.liang@intel.com>
wrote:
> Hi Thomas,
>
> > What is the relation between link status timeout and qos_sched?
> [LCM] Validation team found qos_sched test failure on i40e. The sample
> depends on link speed to calc the percentage.
> The root cause comes from that i40e link_get hasn't support
> wait_to_complete well.
> I agree with you it should add more description in test report why 'Used
> QoS example to verified'.
>
> > > +-----------------------+----------------------+
> > > | Subport output rate | Subport output rate |
> > > | (% line rate) | (Mpps) |
> > > +-----------+-----------+----------+-----------+
> > > | Expected | Actual | Expected | Actual |
> > > +-----------+-----------+----------+-----------+
> >
> > This table is empty.
> [LCM] It's useless, should be omitted I think.
>
> Cunming
> > -----Original Message-----
> > From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com]
> > Sent: Thursday, April 02, 2015 3:52 AM
> > To: Zhang, XiaonanX; Cao, Waterman
> > Cc: dev@dpdk.org; Zhang, Helin; Liang, Cunming
> > Subject: Re: [dpdk-dev] [PATCH] i40e: fix no effect wait_to_complete on
> link_get
> >
> > Hi,
> >
> > 2015-04-01 06:10, Zhang, XiaonanX:
> > >
> > > Tested-by: Xiaonan zhang<xiaonanx.zhang@intel.com>
> > >
> > > - OS: Fedora21 3.19.1-201.fc21.x86_64
> > > - GCC: gcc version 4.9.1 20140930 (Red Hat 4.9.1-11) (GCC)
> > > - CPU: Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
> > > - NIC: Ethernet controller [0200]: Intel Corporation Ethernet
> Controller X710 for
> > 10GbE SFP+ [8086:1572] (rev 01)
> > > - Default x86_64-native-linuxapp-gcc configuration
> > > - Total 1 cases, 1 passed, 0 failed
> > >
> > > - Test case: Used Qos example to verified
> > > -------------------------------------
> >
> > What is the relation between link status timeout and qos_sched?
> >
> > > Traffic shaping for subport. Check that the subport rate is enforced.
> > >
> > > Set the subport output rate to x% of line rate (x = 10 .. 100). Set
> the subport TC
> > limits high (100% line rate each), so they do not constitute
> limitations. Input traffic
> > is 100% line rate.
> > >
> > > Different tb period and tb credits, therefore different output rate,
> are tried:
> > 25%, 50%, 75%, 90% and 100% the lineal rate. (The output for subport is
> Tb credits
> > per period / Tb period.)
> > > The traffic is injected change subport value random.
> > >
> > > Other parameters are same before tests and they don't change here.
> > >
> > > Cmdline: ./examples/qos_sched/build/qos_sched -c 0xe -n 4 -- --pfc
> > "0,1,2,3,3" --cfg "/root/profile_sched_pipe_1.cfg"
> > >
> > > The result is this table:
> > >
> > >
> > > +-----------------------+----------------------+
> > > | Subport output rate | Subport output rate |
> > > | (% line rate) | (Mpps) |
> > > +-----------+-----------+----------+-----------+
> > > | Expected | Actual | Expected | Actual |
> > > +-----------+-----------+----------+-----------+
> >
> > This table is empty.
> >
> > >
> > > Signed-off-by: Xiaonan Zhang <xiaonanx.zhang@intel.com>
> >
> > It seems that this test report is not relevant.
> > It will be ignored in the commit message. Sorry
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2015-04-02 22:18 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-01 2:33 [dpdk-dev] [PATCH] i40e: fix no effect wait_to_complete on link_get Cunming Liang
2015-04-01 2:50 ` Zhang, Helin
2015-04-01 6:10 ` Zhang, XiaonanX
2015-04-01 19:51 ` Thomas Monjalon
2015-04-02 1:44 ` Liang, Cunming
2015-04-02 22:18 ` Stephen Hemminger
2015-04-02 1:52 ` Zhang, XiaonanX
2015-04-01 19:53 ` Thomas Monjalon
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).