• Niklas Söderlund's avatar
    ravb: Unify Rx ring maintenance code paths · 644d037b
    Niklas Söderlund authored
    The R-Car and RZ/G2L Rx code paths were split in two separate
    implementations when support for RZ/G2L was added due to the fact that
    R-Car uses the extended descriptor format while RZ/G2L uses normal
    descriptors. This has led to a duplication of Rx logic with the only
    difference being the different Rx descriptors types used. The
    implementation however neglects to take into account that extended
    descriptors are normal descriptors with additional metadata at the end
    to carry hardware timestamp information.
    
    The hardware timestamp information is only consumed in the R-Car Rx
    loop and all the maintenance code around the Rx ring can be shared
    between the two implementations if the difference in descriptor length
    is carefully considered.
    
    This change merges the two implementations for Rx ring maintenance by
    adding a method to access both types of descriptors as normal
    descriptors, as this part covers all the fields needed for Rx ring
    maintenance the only difference between using normal or extended
    descriptor is the size of the memory region to allocate/free and the
    step size between each descriptor in the ring.
    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>
    644d037b
ravb_main.c 81.4 KB