diff mbox series

[RFC,v2,15/33] ena: add XDP frame size to amazon NIC driver

Message ID 158634671052.707275.5680515403770560550.stgit@firesoul
State RFC
Delegated to: BPF Maintainers
Headers show
Series [RFC,v2,01/33] xdp: add frame size to xdp_buff | expand

Commit Message

Jesper Dangaard Brouer April 8, 2020, 11:51 a.m. UTC
Frame size ENA_PAGE_SIZE is limited to 16K on systems with larger
PAGE_SIZE than 16K. Change ENA_XDP_MAX_MTU to also take into account
the reserved tailroom.

Cc: Arthur Kiyanovski <akiyano@amazon.com>
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
---
 drivers/net/ethernet/amazon/ena/ena_netdev.c |    1 +
 drivers/net/ethernet/amazon/ena/ena_netdev.h |    5 +++--
 2 files changed, 4 insertions(+), 2 deletions(-)

Comments

Jubran, Samih April 22, 2020, 8:39 a.m. UTC | #1
Acked-by: Sameeh Jubran <sameehj@amazon.com>

> -----Original Message-----
> From: Jesper Dangaard Brouer <brouer@redhat.com>
> Sent: Wednesday, April 8, 2020 2:52 PM
> To: Jubran, Samih <sameehj@amazon.com>
> Cc: Kiyanovski, Arthur <akiyano@amazon.com>; Jesper Dangaard Brouer
> <brouer@redhat.com>; netdev@vger.kernel.org; bpf@vger.kernel.org;
> Machulsky, Zorik <zorik@amazon.com>; Kiyanovski, Arthur
> <akiyano@amazon.com>; Tzalik, Guy <gtzalik@amazon.com>; Toke Høiland-
> Jørgensen <toke@redhat.com>; Daniel Borkmann
> <borkmann@iogearbox.net>; Alexei Starovoitov
> <alexei.starovoitov@gmail.com>; John Fastabend
> <john.fastabend@gmail.com>; Alexander Duyck
> <alexander.duyck@gmail.com>; Jeff Kirsher <jeffrey.t.kirsher@intel.com>;
> David Ahern <dsahern@gmail.com>; Willem de Bruijn
> <willemdebruijn.kernel@gmail.com>; Ilias Apalodimas
> <ilias.apalodimas@linaro.org>; Lorenzo Bianconi <lorenzo@kernel.org>;
> Saeed Mahameed <saeedm@mellanox.com>
> Subject: [EXTERNAL] [PATCH RFC v2 15/33] ena: add XDP frame size to
> amazon NIC driver
> 
> CAUTION: This email originated from outside of the organization. Do not click
> links or open attachments unless you can confirm the sender and know the
> content is safe.
> 
> 
> 
> Frame size ENA_PAGE_SIZE is limited to 16K on systems with larger
> PAGE_SIZE than 16K. Change ENA_XDP_MAX_MTU to also take into account
> the reserved tailroom.
> 
> Cc: Arthur Kiyanovski <akiyano@amazon.com>
> Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
> ---
>  drivers/net/ethernet/amazon/ena/ena_netdev.c |    1 +
>  drivers/net/ethernet/amazon/ena/ena_netdev.h |    5 +++--
>  2 files changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c
> b/drivers/net/ethernet/amazon/ena/ena_netdev.c
> index 2cc765df8da3..0fd7db1769f8 100644
> --- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
> +++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
> @@ -1606,6 +1606,7 @@ static int ena_clean_rx_irq(struct ena_ring
> *rx_ring, struct napi_struct *napi,
>                   "%s qid %d\n", __func__, rx_ring->qid);
>         res_budget = budget;
>         xdp.rxq = &rx_ring->xdp_rxq;
> +       xdp.frame_sz = ENA_PAGE_SIZE;
> 
>         do {
>                 xdp_verdict = XDP_PASS;
> diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.h
> b/drivers/net/ethernet/amazon/ena/ena_netdev.h
> index 97dfd0c67e84..dd00127dfe9f 100644
> --- a/drivers/net/ethernet/amazon/ena/ena_netdev.h
> +++ b/drivers/net/ethernet/amazon/ena/ena_netdev.h
> @@ -151,8 +151,9 @@
>   * The buffer size we share with the device is defined to be ENA_PAGE_SIZE
>   */
> 
> -#define ENA_XDP_MAX_MTU (ENA_PAGE_SIZE - ETH_HLEN - ETH_FCS_LEN
> - \
> -                               VLAN_HLEN - XDP_PACKET_HEADROOM)
> +#define ENA_XDP_MAX_MTU (ENA_PAGE_SIZE - ETH_HLEN -
> ETH_FCS_LEN -      \
> +                        VLAN_HLEN - XDP_PACKET_HEADROOM -              \
> +                        SKB_DATA_ALIGN(sizeof(struct skb_shared_info)))
> 
>  #define ENA_IS_XDP_INDEX(adapter, index) (((index) >= (adapter)-
> >xdp_first_ring) && \
>         ((index) < (adapter)->xdp_first_ring + (adapter)->xdp_num_queues))
>
diff mbox series

Patch

diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
index 2cc765df8da3..0fd7db1769f8 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
@@ -1606,6 +1606,7 @@  static int ena_clean_rx_irq(struct ena_ring *rx_ring, struct napi_struct *napi,
 		  "%s qid %d\n", __func__, rx_ring->qid);
 	res_budget = budget;
 	xdp.rxq = &rx_ring->xdp_rxq;
+	xdp.frame_sz = ENA_PAGE_SIZE;
 
 	do {
 		xdp_verdict = XDP_PASS;
diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.h b/drivers/net/ethernet/amazon/ena/ena_netdev.h
index 97dfd0c67e84..dd00127dfe9f 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.h
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.h
@@ -151,8 +151,9 @@ 
  * The buffer size we share with the device is defined to be ENA_PAGE_SIZE
  */
 
-#define ENA_XDP_MAX_MTU (ENA_PAGE_SIZE - ETH_HLEN - ETH_FCS_LEN - \
-				VLAN_HLEN - XDP_PACKET_HEADROOM)
+#define ENA_XDP_MAX_MTU (ENA_PAGE_SIZE - ETH_HLEN - ETH_FCS_LEN -	\
+			 VLAN_HLEN - XDP_PACKET_HEADROOM -		\
+			 SKB_DATA_ALIGN(sizeof(struct skb_shared_info)))
 
 #define ENA_IS_XDP_INDEX(adapter, index) (((index) >= (adapter)->xdp_first_ring) && \
 	((index) < (adapter)->xdp_first_ring + (adapter)->xdp_num_queues))