• Cyrille Pitchen's avatar
    net/macb: add scatter-gather hw feature · a4c35ed3
    Cyrille Pitchen authored
    The scatter-gather feature will allow to enable the Generic Segmentation Offload.
    Generic Segmentation Offload can be enabled/disabled using ethtool -K DEVNAME gso on|off.
    
    e.g:
    ethtool -K eth0 gso off
    
    When enabled, the driver may be provided with socket buffers splitted into many fragments.
    These fragments need to be queued into the TX ring in reverse order, starting from to the
    last one down to the first one, to avoid a race condition with the MAC.
    Especially the 'TX_USED' bit in word 1 of the transmit buffer descriptor of the
    first fragment should be cleared at the very final step of the queueing algorithm.
    This will tell the hardware that fragments are ready to be sent.
    
    Also since the MAC only update the status word of the first buffer descriptor of the
    ethernet frame, the queueing algorithm can no longer expect a 'TX_USED' bit to be set by
    the MAC into the buffer descriptor following the one for last fragment of the skb.
    This is why the driver sets the 'TX_USED' bit before queueing any fragment, so the end of
    queue position is well defined for the MAC.
    Signed-off-by: default avatarCyrille Pitchen <cyrille.pitchen@atmel.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a4c35ed3
macb.h 17.2 KB