[dpdk-dev] net/i40e: fix link update delay

Message ID 1486545264-23218-1-git-send-email-qiming.yang@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel compilation fail Compilation issues

Commit Message

Qiming Yang Feb. 8, 2017, 9:14 a.m. UTC
  This patch fixed the redundant delay in function link update. There is
no need to call rte_delay_ms and hold CPU for 100ms when link status is up.

Fixes: 263333bbb7a9 ("i40e: fix link status timeout")

Signed-off-by: Qiming Yang <qiming.yang@intel.com>
---
 drivers/net/i40e/i40e_ethdev.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
  

Comments

Ferruh Yigit Feb. 8, 2017, 3:30 p.m. UTC | #1
On 2/8/2017 9:14 AM, Qiming Yang wrote:
> This patch fixed the redundant delay in function link update. There is
> no need to call rte_delay_ms and hold CPU for 100ms when link status is up.
> 
> Fixes: 263333bbb7a9 ("i40e: fix link status timeout")
> 
> Signed-off-by: Qiming Yang <qiming.yang@intel.com>

Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
  
Ferruh Yigit Feb. 8, 2017, 3:37 p.m. UTC | #2
On 2/8/2017 3:30 PM, Ferruh Yigit wrote:
> On 2/8/2017 9:14 AM, Qiming Yang wrote:
>> This patch fixed the redundant delay in function link update. There is
>> no need to call rte_delay_ms and hold CPU for 100ms when link status is up.
>>
>> Fixes: 263333bbb7a9 ("i40e: fix link status timeout")
>>
>> Signed-off-by: Qiming Yang <qiming.yang@intel.com>
> 
> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>

Applied to dpdk-next-net/master, thanks.
  

Patch

diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 4492bcc..75d092f 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -2220,11 +2220,11 @@  i40e_dev_link_update(struct rte_eth_dev *dev,
 		}
 
 		link.link_status = link_status.link_info & I40E_AQ_LINK_UP;
-		if (!wait_to_complete)
+		if (!wait_to_complete || link.link_status)
 			break;
 
 		rte_delay_ms(CHECK_INTERVAL);
-	} while (!link.link_status && rep_cnt--);
+	} while (--rep_cnt);
 
 	if (!link.link_status)
 		goto out;