• Vladimir Oltean's avatar
    net: enetc: clean the TX software BD on the TX confirmation path · 1ee8d6f3
    Vladimir Oltean authored
    With the future introduction of some new fields into enetc_tx_swbd such
    as is_xdp_tx, is_xdp_redirect etc, we need not only to set these bits
    to true from the XDP_TX/XDP_REDIRECT code path, but also to false from
    the old code paths.
    
    This is because TX software buffer descriptors are kept in a ring that
    is shadow of the hardware TX ring, so these structures keep getting
    reused, and there is always the possibility that when a software BD is
    reused (after we ran a full circle through the TX ring), the old user of
    the tx_swbd had set is_xdp_tx = true, and now we are sending a regular
    skb, which would need to set is_xdp_tx = false.
    
    To be minimally invasive to the old code paths, let's just scrub the
    software TX BD in the TX confirmation path (enetc_clean_tx_ring), once
    we know that nobody uses this software TX BD (tx_ring->next_to_clean
    hasn't yet been updated, and the TX paths check enetc_bd_unused which
    tells them if there's any more space in the TX ring for a new enqueue).
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    1ee8d6f3
enetc.c 43 KB