Project

General

Profile

Actions

Feature #11360

closed

initialize FC for i40e

Added by Robert Mustacchi over 4 years ago. Updated over 4 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
driver - device drivers
Start date:
Due date:
% Done:

100%

Estimated time:
Difficulty:
Medium
Tags:
Gerrit CR:
External Bug:

Description

Description

While working on another issue I noticed that one of my i40e ports was sending a lot of pause frames.

# kstat -p i40e::pfstats: | grep link_x
i40e:0:pfstats:link_xoff_rx     9408693
i40e:0:pfstats:link_xoff_tx     0
i40e:0:pfstats:link_xon_rx      6
i40e:0:pfstats:link_xon_tx      0
i40e:1:pfstats:link_xoff_rx     0
i40e:1:pfstats:link_xoff_tx     9408694
i40e:1:pfstats:link_xon_rx      0
i40e:1:pfstats:link_xon_tx      6

After discussing with Robert Mustacchi, I learned that, by default, Ethernet flow control should be disabled on i40e. For example, dladm reports it as "off" even though it's not.

# dladm show-linkprop -p flowctrl i40e0 
LINK         PROPERTY        PERM VALUE          DEFAULT        POSSIBLE
i40e0        flowctrl        r-   no             no             no,tx,rx,bi

We need to update the driver to properly initialize FC. I'm narrowing the scope of this issue to simply initialize FC based on the default settings. If we require user-controller FC (via dladm) in the future then a separate ticket should be filed.

I tested this by verifying the i40e_hw_space.fc.current_mode is set to I40E_FC_NONE.

Here's the current platform.

> ::walk mac_impl_cache |::printf "0x%p %s\n" mac_impl_t . mi_name
0xfffffe59420f1848 i40e0

> 0xfffffe59420f1848::print mac_impl_t mi_driver |::print i40e_t i40e_hw_space.fc
i40e_hw_space.fc = {
    i40e_hw_space.fc.current_mode = 3 (I40E_FC_FULL)
    i40e_hw_space.fc.requested_mode = 0 (I40E_FC_NONE)
}
>

Here's the patched platform.

> ::walk mac_impl_cache |::printf "0x%p %s\n" mac_impl_t . mi_name
0xfffffe59421ad848 i40e0
> 
> 0xfffffe59421ad848::print mac_impl_t mi_driver |::print i40e_t i40e_hw_space.fc
i40e_hw_space.fc = {
    i40e_hw_space.fc.current_mode = 0 (I40E_FC_NONE)
    i40e_hw_space.fc.requested_mode = 0 (I40E_FC_NONE)
}
>
Actions #1

Updated by Electric Monk over 4 years ago

  • Status changed from New to Closed

git commit 2f79f42c9137bbeebe83c431ed2623985c554679

commit  2f79f42c9137bbeebe83c431ed2623985c554679
Author: Ryan Zezeski <rpz@joyent.com>
Date:   2019-07-15T18:17:01.000Z

    11360 initialize FC for i40e
    Reviewed by: Robert Mustacchi <rm@joyent.com>
    Reviewed by: Randy Fishel <randyf@sibernet.com>
    Approved by: Garrett D'Amore <garrett@damore.org>

Actions

Also available in: Atom PDF