• Sonic Zhang's avatar
    netdev:bfin_mac: reclaim and free tx skb as soon as possible after transfer · 4fcc3d34
    Sonic Zhang authored
    SKBs hold onto resources that can't be held indefinitely, such as TCP
    socket references and netfilter conntrack state.  So if a packet is left
    in TX ring for a long time, there might be a TCP socket that cannot be
    closed and freed up.
    
    Current blackfin EMAC driver always reclaim and free used tx skbs in future
    transfers. The problem is that future transfer may not come as soon as
    possible. This patch start a timer after transfer to reclaim and free skb.
    There is nearly no performance drop with this patch.
    
    TX interrupt is not enabled because of a strange behavior of the Blackfin EMAC.
    If EMAC TX transfer control is turned on, endless TX interrupts are triggered
    no matter if TX DMA is enabled or not. Since DMA walks down the ring automatically,
    TX transfer control can't be turned off in the middle. The only way is to disable
    TX interrupt completely.
    Signed-off-by: default avatarSonic Zhang <sonic.zhang@analog.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    4fcc3d34
bfin_mac.c 42 KB