• Robert-Ionut Alexa's avatar
    net: dpaa2-eth: AF_XDP RX zero copy support · 48276c08
    Robert-Ionut Alexa authored
    This patch adds the support for receiving packets via the AF_XDP
    zero-copy mechanism in the dpaa2-eth driver. The support is available
    only on the LX2160A SoC and variants because we are relying on the HW
    capability to associate a buffer pool to a specific queue (QDBIN), only
    available on newer WRIOP versions.
    
    On the control path, the dpaa2_xsk_enable_pool() function is responsible
    to allocate a buffer pool (BP), setup this new BP to be used only on the
    requested queue and change the consume function to point to the XSK ZC
    one.
    We are forced to call dev_close() in order to change the queue to buffer
    pool association (dpaa2_xsk_set_bp_per_qdbin) . This also works in our
    favor since at dev_close() the buffer pools will be drained and at the
    later dev_open() call they will be again seeded, this time with buffers
    allocated from the XSK pool if needed.
    
    On the data path, a new software annotation type is defined to be used
    only for the XSK scenarios. This will enable us to pass keep necessary
    information about a packet buffer between the moment in which it was
    seeded and when it's received by the driver. In the XSK case, we are
    keeping the associated xdp_buff.
    Depending on the action returned by the BPF program, we will do the
    following:
     - XDP_PASS: copy the contents of the packet into a brand new skb,
       recycle the initial buffer.
     - XDP_TX: just enqueue the same frame descriptor back into the Tx path,
       the buffer will get automatically released into the initial BP.
     - XDP_REDIRECT: call xdp_do_redirect() and exit.
    Signed-off-by: default avatarRobert-Ionut Alexa <robert-ionut.alexa@nxp.com>
    Signed-off-by: default avatarIoana Ciornei <ioana.ciornei@nxp.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    48276c08
dpaa2-xsk.c 8.01 KB