mbox series

[net-next,v5,0/7] dpaa_eth: add XDP support

Message ID cover.1606322126.git.camelia.groza@nxp.com
Headers show
Series dpaa_eth: add XDP support | expand

Message

Camelia Groza Nov. 25, 2020, 4:53 p.m. UTC
Enable XDP support for the QorIQ DPAA1 platforms.

Implement all the current actions (DROP, ABORTED, PASS, TX, REDIRECT). No
Tx batching is added at this time.

Additional XDP_PACKET_HEADROOM bytes are reserved in each frame's headroom.

After transmit, a reference to the xdp_frame is saved in the buffer for
clean-up on confirmation in a newly created structure for software
annotations. DPAA_TX_PRIV_DATA_SIZE bytes are reserved in the buffer for
storing this structure and the XDP program is restricted from accessing
them.

The driver shares the egress frame queues used for XDP with the network
stack. The DPAA driver is a LLTX driver so no explicit locking is required
on transmission.

Changes in v2:
- warn only once if extracting the timestamp from a received frame fails
  in 2/7

Changes in v3:
- drop received S/G frames when XDP is enabled in 2/7

Changes in v4:
- report a warning if the MTU is too hight for running XDP in 2/7
- report an error if opening the device fails in the XDP setup in 2/7
- call xdp_rxq_info_is_reg() before unregistering in 4/7
- minor cleanups (remove unneeded variable, print error code) in 4/7
- add more details in the commit message in 4/7
- did not call qman_destroy_fq() in case of xdp_rxq_info_reg() failure
since it would lead to a double free of the fq resources in 4/7

Changes in v5:
- report errors on XDP setup with extack in 2/7
- checkpath fix in 4/7
- add more details in the commit message in 4/7
- reduce the impact of the A050385 erratum workaround code on non-erratum
platforms in 7/7

Camelia Groza (7):
  dpaa_eth: add struct for software backpointers
  dpaa_eth: add basic XDP support
  dpaa_eth: limit the possible MTU range when XDP is enabled
  dpaa_eth: add XDP_TX support
  dpaa_eth: add XDP_REDIRECT support
  dpaa_eth: rename current skb A050385 erratum workaround
  dpaa_eth: implement the A050385 erratum workaround for XDP

 drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 465 +++++++++++++++++++++++--
 drivers/net/ethernet/freescale/dpaa/dpaa_eth.h |  13 +
 2 files changed, 448 insertions(+), 30 deletions(-)

--
1.9.1

Comments

Maciej Fijalkowski Nov. 28, 2020, 10:59 p.m. UTC | #1
On Wed, Nov 25, 2020 at 06:53:29PM +0200, Camelia Groza wrote:
> Enable XDP support for the QorIQ DPAA1 platforms.
> 
> Implement all the current actions (DROP, ABORTED, PASS, TX, REDIRECT). No
> Tx batching is added at this time.
> 
> Additional XDP_PACKET_HEADROOM bytes are reserved in each frame's headroom.
> 
> After transmit, a reference to the xdp_frame is saved in the buffer for
> clean-up on confirmation in a newly created structure for software
> annotations. DPAA_TX_PRIV_DATA_SIZE bytes are reserved in the buffer for
> storing this structure and the XDP program is restricted from accessing
> them.
> 
> The driver shares the egress frame queues used for XDP with the network
> stack. The DPAA driver is a LLTX driver so no explicit locking is required
> on transmission.
> 
> Changes in v2:
> - warn only once if extracting the timestamp from a received frame fails
>   in 2/7
> 
> Changes in v3:
> - drop received S/G frames when XDP is enabled in 2/7
> 
> Changes in v4:
> - report a warning if the MTU is too hight for running XDP in 2/7
> - report an error if opening the device fails in the XDP setup in 2/7
> - call xdp_rxq_info_is_reg() before unregistering in 4/7
> - minor cleanups (remove unneeded variable, print error code) in 4/7
> - add more details in the commit message in 4/7
> - did not call qman_destroy_fq() in case of xdp_rxq_info_reg() failure
> since it would lead to a double free of the fq resources in 4/7
> 
> Changes in v5:
> - report errors on XDP setup with extack in 2/7
> - checkpath fix in 4/7
> - add more details in the commit message in 4/7
> - reduce the impact of the A050385 erratum workaround code on non-erratum
> platforms in 7/7

For the series:
Reviewed-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>

> 
> Camelia Groza (7):
>   dpaa_eth: add struct for software backpointers
>   dpaa_eth: add basic XDP support
>   dpaa_eth: limit the possible MTU range when XDP is enabled
>   dpaa_eth: add XDP_TX support
>   dpaa_eth: add XDP_REDIRECT support
>   dpaa_eth: rename current skb A050385 erratum workaround
>   dpaa_eth: implement the A050385 erratum workaround for XDP
> 
>  drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 465 +++++++++++++++++++++++--
>  drivers/net/ethernet/freescale/dpaa/dpaa_eth.h |  13 +
>  2 files changed, 448 insertions(+), 30 deletions(-)
> 
> --
> 1.9.1
>
Jakub Kicinski Dec. 1, 2020, 1:34 a.m. UTC | #2
On Sat, 28 Nov 2020 23:59:57 +0100 Maciej Fijalkowski wrote:
> On Wed, Nov 25, 2020 at 06:53:29PM +0200, Camelia Groza wrote:
> > Enable XDP support for the QorIQ DPAA1 platforms.
> > 
> > Implement all the current actions (DROP, ABORTED, PASS, TX, REDIRECT). No
> > Tx batching is added at this time.
> > 
> > Additional XDP_PACKET_HEADROOM bytes are reserved in each frame's headroom.
> > 
> > After transmit, a reference to the xdp_frame is saved in the buffer for
> > clean-up on confirmation in a newly created structure for software
> > annotations. DPAA_TX_PRIV_DATA_SIZE bytes are reserved in the buffer for
> > storing this structure and the XDP program is restricted from accessing
> > them.
> > 
> > The driver shares the egress frame queues used for XDP with the network
> > stack. The DPAA driver is a LLTX driver so no explicit locking is required
> > on transmission.
> > 
> > Changes in v2:
> > - warn only once if extracting the timestamp from a received frame fails
> >   in 2/7
> > 
> > Changes in v3:
> > - drop received S/G frames when XDP is enabled in 2/7
> > 
> > Changes in v4:
> > - report a warning if the MTU is too hight for running XDP in 2/7
> > - report an error if opening the device fails in the XDP setup in 2/7
> > - call xdp_rxq_info_is_reg() before unregistering in 4/7
> > - minor cleanups (remove unneeded variable, print error code) in 4/7
> > - add more details in the commit message in 4/7
> > - did not call qman_destroy_fq() in case of xdp_rxq_info_reg() failure
> > since it would lead to a double free of the fq resources in 4/7
> > 
> > Changes in v5:
> > - report errors on XDP setup with extack in 2/7
> > - checkpath fix in 4/7
> > - add more details in the commit message in 4/7
> > - reduce the impact of the A050385 erratum workaround code on non-erratum
> > platforms in 7/7  
> 
> For the series:
> Reviewed-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>

Applied, thanks!