• J
    dpaa2-eth: Add XDP frame size · 4a9b052a
    Jesper Dangaard Brouer 提交于
    The dpaa2-eth driver reserve some headroom used for hardware and
    software annotation area in RX/TX buffers. Thus, xdp.data_hard_start
    doesn't start at page boundary.
    
    When XDP is configured the area reserved via dpaa2_fd_get_offset(fd) is
    448 bytes of which XDP have reserved 256 bytes. As frame_sz is
    calculated as an offset from xdp_buff.data_hard_start, an adjust from
    the full PAGE_SIZE == DPAA2_ETH_RX_BUF_RAW_SIZE.
    
    When doing XDP_REDIRECT, the driver doesn't need this reserved headroom
    any-longer and allows xdp_do_redirect() to use it. This is an advantage
    for the drivers own ndo-xdp_xmit, as it uses part of this headroom for
    itself.  Patch also adjust frame_sz in this case.
    
    The driver cannot support XDP data_meta, because it uses the headroom
    just before xdp.data for struct dpaa2_eth_swa (DPAA2_ETH_SWA_SIZE=64),
    when transmitting the packet. When transmitting a xdp_frame in
    dpaa2_eth_xdp_xmit_frame (call via ndo_xdp_xmit) is uses this area to
    store a pointer to xdp_frame and dma_size, which is used in TX
    completion (free_tx_fd) to return frame via xdp_return_frame().
    Signed-off-by: NJesper Dangaard Brouer <brouer@redhat.com>
    Signed-off-by: NAlexei Starovoitov <ast@kernel.org>
    Cc: Ioana Radulescu <ruxandra.radulescu@nxp.com>
    Link: https://lore.kernel.org/bpf/158945339348.97035.8562488847066908856.stgit@firesoul
    4a9b052a
dpaa2-eth.c 94.9 KB