• M
    ixgbe: get pauseparam autoneg · 860502bf
    Mika Lansirinne 提交于
    There is a problem in the ixgbe driver with the reporting of the flow
    control parameters. The autoneg parameter is shown to be of if
    *either* it really is off, or current modes for both tx and rx are off.
    
    The problem is seen when the parameters are read or set when the link
    is down. In this case, the driver sees that tx and rx are currently off
    and therefore autoneg parameter is incorrectly reported to be off too.
    Also, the ethtool binary can not set the autoneg off since it sees that
    it already is. When a link later comes up, the autonegotiation is
    carried out normally and the driver later on reports the autoneg
    parameter to be on (as it is) and then it can also be changed with
    ethtool.
    
    The patch is made against v3.0 kernel, but the problem seems to be there
    since v2.6.30-rc1.
    
    Reviewer comments: What we are trying to do is to disable flow control
    while the cable is disconnected. Since ixgbe defaults to full flow
    control, we call ethtool -A autoneg off rx off tx off while the cable
    is disconnected. This doesn't work, because the driver sets
    hw->fc.current_mode = ixgbe_fc_none if the cable is unplugged.
    ixgbe_get_pauseparam() then reports to ethtool that nothing needs to be
    done. The code fixes this, but it might have some unknown consequences.
    Signed-off-by: NMika Lansirinne <mika.lansirinne@stonesoft.com>
    Reviewed-by: NEsa-Pekka Pyokkimies <esa-pekka.pyokkimies@stonesoft.com>
    Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
    860502bf
ixgbe_ethtool.c 76.2 KB