• Niklas Söderlund's avatar
    ravb: Create helper to allocate skb and align it · cfbad647
    Niklas Söderlund authored
    The EtherAVB device requires the SKB data to be aligned to 128 bytes.
    The alignment is done by allocating an skb 128 bytes larger than the
    maximum frame size supported by the device and adjusting the headroom to
    fit the requirement.
    
    This code has been refactored a few times and small issues have been
    added along the way. The issues are not harmful but prevent merging
    parts of the Rx code which have been split in two implementations with
    the addition of RZ/G2L support, a device that supports larger frame
    sizes.
    
    This change removes the need for duplicated and somewhat inaccurate
    hardware alignment constrains stored in the hardware information struct
    by creating a helper to handle the allocation of an skb and alignment of
    an skb data.
    
    For the R-Car class of devices the maximum frame size is 4K and each
    descriptor is limited to 2K of data. The current implementation does not
    support split descriptors, this limits the frame size to 2K. The
    current hardware information however records the descriptor size just
    under 2K due to bad understanding of the device when larger MTUs where
    added.
    
    For the RZ/G2L device the maximum frame size is 8K and each descriptor
    is limited to 4K of data. The current hardware information records this
    correctly, but it gets the alignment constrains wrong as just aligns it
    by 128, it does not extend it by 128 bytes to allow the full frame to be
    stored. This works because the RZ/G2L device supports split descriptors
    and allocates each skb to 8K and aligns each 4K descriptor in this
    space.
    Signed-off-by: default avatarNiklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
    Reviewed-by: default avatarPaul Barker <paul.barker.ct@bp.renesas.com>
    Reviewed-by: default avatarSergey Shtylyov <s.shtylyov@omp.ru>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    cfbad647
ravb.h 26 KB