• Björn Töpel's avatar
    ice, xsk: clear the status bits for the next_to_use descriptor · 8d14768a
    Björn Töpel authored
    On the Rx side, the next_to_use index points to the next item in the
    HW ring to be refilled/allocated, and next_to_clean points to the next
    item to potentially be processed.
    
    When the HW Rx ring is fully refilled, i.e. no packets has been
    processed, the next_to_use will be next_to_clean - 1. When the ring is
    fully processed next_to_clean will be equal to next_to_use. The latter
    case is where a bug is triggered.
    
    If the next_to_use bits are not cleared, and the "fully processed"
    state is entered, a stale descriptor can be processed.
    
    The skb-path correctly clear the status bit for the next_to_use
    descriptor, but the AF_XDP zero-copy path did not do that.
    
    This change adds the status bits clearing of the next_to_use
    descriptor.
    
    Fixes: 2d4238f5 ("ice: Add support for AF_XDP")
    Signed-off-by: default avatarBjörn Töpel <bjorn.topel@intel.com>
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    8d14768a
ice_xsk.c 21 KB