• Claudiu Manoil's avatar
    gianfar: Add flow control support · 23402bdd
    Claudiu Manoil authored
    eTSEC has Rx and Tx flow control capabilities that may be enabled
    through MACCFG1[Rx_Flow, Tx_Flow] bits.  These bits must not be set
    however when eTSEC is operated in Half-Duplex mode.  Unfortunately,
    the driver currently sets these bits unconditionally.
    This patch adds the proper handling of the PAUSE frame capability
    register bits by implementing the ethtool -A interface.  When pause
    autoneg is enabled, the controller uses the phy's capability to
    negotiate PAUSE frame settings with the link partner and reconfigures
    its Rx_Flow and Tx_Flow settings to match the capabilities of the
    link partner.  If pause autoneg is off, the PAUSE frame generation
    may be forced manually (ethtool -A).  Flow control is disabled by
    default now.
    This implementation is inspired by the tg3 driver.
    Signed-off-by: default avatarLutz Jaenicke <ljaenicke@innominate.com>
    Signed-off-by: default avatarClaudiu Manoil <claudiu.manoil@freescale.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    23402bdd
gianfar.c 89.1 KB