Skip to contentSkip to conversation

ixgbe: Question about Flow Control on 10G

DISCUSSION dom 2 participants 4 messages Oct 14, 2014 – Oct 15, 2014

Subsystems (2)
lore
Share & tools
lore

dom

author
#0 lore raw

Hi

I have a question about the ixgbe driver's handling of 'ethtool -a ethX' when the NIC is using fibre.

Specifically I don't understand the code introduced by this commit:

commit 73d80953dfd1d5a92948005798c857c311c2834b
Author: Don Skidmore <[email protected]>
Date: Wed Jul 31 02:19:24 2013 +0000
Subject: ixgbe: fix fc autoneg ethtool reporting.

The function introduced the function:
ixgbe_device_supports_autoneg_fc()

which gets called by ixgbe_get_pauseparam()/ixgbe_set_pauseparam().

specifically there is a case in ixgbe_device_supports_autoneg_fc()

    case ixgbe_media_type_fiber_qsfp:
    case ixgbe_media_type_fiber:
        hw->mac.ops.check_link(hw, &speed, &link_up, false);
        /* if link is down, assume supported */
        if (link_up)
            supported = speed == IXGBE_LINK_SPEED_1GB_FULL ?
                true : false;

If link_up=1 then why is supported only true for a speed=IXGBE_LINK_SPEED_1GB_FULL ?

Why is Flow Control not supported for IXGBE_LINK_SPEED_10GB_FULL ?

I have search through the 82599 spec, but I can't find a reason. Please can anyone help me understand ?

Thanks
dom

#1 lore raw
Quoted 39 lines

-----Original Message-----
From: [email protected] [mailto:netdev- [email protected]] On Behalf Of dom
Sent: Tuesday, October 14, 2014 12:01 PM
To: Skidmore, Donald C; [email protected]
Subject: ixgbe: Question about Flow Control on 10G

Hi

I have a question about the ixgbe driver's handling of 'ethtool -a ethX'
when the NIC is using fibre.

Specifically I don't understand the code introduced by this commit:

commit 73d80953dfd1d5a92948005798c857c311c2834b
Author: Don Skidmore <[email protected]>
Date: Wed Jul 31 02:19:24 2013 +0000
Subject: ixgbe: fix fc autoneg ethtool reporting.

The function introduced the function:
ixgbe_device_supports_autoneg_fc()

which gets called by ixgbe_get_pauseparam()/ixgbe_set_pauseparam().

specifically there is a case in ixgbe_device_supports_autoneg_fc()

    case ixgbe_media_type_fiber_qsfp:
    case ixgbe_media_type_fiber:
        hw->mac.ops.check_link(hw, &speed, &link_up,
false);
        /* if link is down, assume supported */
        if (link_up)
            supported = speed == IXGBE_LINK_SPEED_1GB_FULL ?
                true : false;
Quoted 4 lines

If link_up=1 then why is supported only true for a speed=IXGBE_LINK_SPEED_1GB_FULL ?

Why is Flow Control not supported for IXGBE_LINK_SPEED_10GB_FULL ?

For SFP modules (media_type_fiber) flow control autoneg is not supported at 10gig. You can still set flow control manually to enabled/disabled, just not autoneg.

Thanks,
Emil

author
#2 lore raw
Quoted 39 lines · Emil S
Quoted 39 lines

-----Original Message-----
From: [email protected] [mailto:netdev- [email protected]] On Behalf Of dom
Sent: Tuesday, October 14, 2014 12:01 PM
To: Skidmore, Donald C; [email protected]
Subject: ixgbe: Question about Flow Control on 10G

Hi

I have a question about the ixgbe driver's handling of 'ethtool -a ethX'
when the NIC is using fibre.

Specifically I don't understand the code introduced by this commit:

commit 73d80953dfd1d5a92948005798c857c311c2834b
Author: Don Skidmore <[email protected]>
Date: Wed Jul 31 02:19:24 2013 +0000
Subject: ixgbe: fix fc autoneg ethtool reporting.

The function introduced the function:
ixgbe_device_supports_autoneg_fc()

which gets called by ixgbe_get_pauseparam()/ixgbe_set_pauseparam().

specifically there is a case in ixgbe_device_supports_autoneg_fc()

     case ixgbe_media_type_fiber_qsfp:
     case ixgbe_media_type_fiber:
         hw->mac.ops.check_link(hw, &speed, &link_up,
false);
         /* if link is down, assume supported */
         if (link_up)
             supported = speed == IXGBE_LINK_SPEED_1GB_FULL ?
                 true : false;
Quoted 8 lines
Quoted 4 lines

If link_up=1 then why is supported only true for a speed=IXGBE_LINK_SPEED_1GB_FULL ?

Why is Flow Control not supported for IXGBE_LINK_SPEED_10GB_FULL ?

For SFP modules (media_type_fiber) flow control autoneg is not supported at 10gig. You can still set flow control manually to enabled/disabled, just not autoneg.

Thanks,
Emil

Hi Emil

Thank you for the quick answer. I have a one follow-up question if I may...

We noticed that back in 3.2.9 (before 73d80953dfd basically) the behaviour was different for 10G fibre. i.e. autonegotiate showed 'on'.

# ethtool -a eth1
Pause parameters for eth1:
Autonegotiate:  on
RX:             on
TX:             on

The code:

    if (hw->fc.disable_fc_autoneg ||
        (hw->fc.current_mode == ixgbe_fc_none))
        pause->autoneg = 0;
    else
        pause->autoneg = 1;

So I assume this old output from 'ethtool -a' for autogen was just wrong, is that correct ?

[I'm asking cos I _know_ my h/w collegues are going to ask why the change.]

Thanks again
dom

#3 lore raw
Quoted 71 lines

-----Original Message-----
From: dom [mailto:[email protected]]
Sent: Wednesday, October 15, 2014 11:57 AM
To: Tantilov, Emil S; Skidmore, Donald C; [email protected]
Subject: Re: ixgbe: Question about Flow Control on 10G

Quoted 42 lines · Emil S
Quoted 42 lines

-----Original Message-----
From: [email protected] [mailto:netdev- [email protected]] On Behalf Of dom
Sent: Tuesday, October 14, 2014 12:01 PM
To: Skidmore, Donald C; [email protected]
Subject: ixgbe: Question about Flow Control on 10G

Hi

I have a question about the ixgbe driver's handling of 'ethtool -a ethX'
when the NIC is using fibre.

Specifically I don't understand the code introduced by this commit:

commit 73d80953dfd1d5a92948005798c857c311c2834b
Author: Don Skidmore <[email protected]>
Date: Wed Jul 31 02:19:24 2013 +0000
Subject: ixgbe: fix fc autoneg ethtool reporting.

The function introduced the function:
ixgbe_device_supports_autoneg_fc()

which gets called by ixgbe_get_pauseparam()/ixgbe_set_pauseparam().

specifically there is a case in ixgbe_device_supports_autoneg_fc()

     case ixgbe_media_type_fiber_qsfp:
     case ixgbe_media_type_fiber:
         hw->mac.ops.check_link(hw, &speed, &link_up,
false);
         /* if link is down, assume supported */
         if (link_up)
             supported = speed == IXGBE_LINK_SPEED_1GB_FULL ?
                 true : false;

If link_up=1 then why is supported only true for a speed=IXGBE_LINK_SPEED_1GB_FULL ?

Quoted 6 lines
Quoted 1 line

Why is Flow Control not supported for IXGBE_LINK_SPEED_10GB_FULL ?

For SFP modules (media_type_fiber) flow control autoneg is not supported at 10gig. You can still set flow control manually to enabled/disabled, just not autoneg.

Thanks,
Emil

Hi Emil

Thank you for the quick answer. I have a one follow-up question if I may...

We noticed that back in 3.2.9 (before 73d80953dfd basically) the behaviour was different for 10G fibre. i.e. autonegotiate showed 'on'.

# ethtool -a eth1
Pause parameters for eth1:
Autonegotiate:  on
RX:             on
TX:             on

The code:

Quoted 8 lines
    if (hw->fc.disable_fc_autoneg ||
        (hw->fc.current_mode == ixgbe_fc_none))
        pause->autoneg = 0;
    else
        pause->autoneg = 1;

So I assume this old output from 'ethtool -a' for autogen was just wrong, is that correct ?

Correct.

Thanks,
Emil

Quoted 5 lines

[I'm asking cos I _know_ my h/w collegues are going to ask why the change.]

Thanks again
dom