DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] net/af_xdp: set the max Rx pktlen value correctly
@ 2021-10-22 14:07 Ciara Loftus
  2021-10-22 15:22 ` Ferruh Yigit
  0 siblings, 1 reply; 2+ messages in thread
From: Ciara Loftus @ 2021-10-22 14:07 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, Ciara Loftus

Commit 1bb4a528c41f ("ethdev: fix max Rx packet length") clarified the
expected usage of the max_rx_pktlen and max_mtu values and implemented some
extra checks on these values to ensure they are sane. After this,
the AF_XDP PMD fails to initialise. The value for max_rx_pktlen which
represents the max size of the Ethernet frame was set to ETH_FRAME_LEN
(1514) and the max_mtu which represents the size of the payload was set to
the max size of the Ethernet frame. This did not make sense, as naturally
the maximum frame size should be greater than the payload size.

Fix this by setting the max_rx_pktlen equal to the max size of the
Ethernet frame as expected, and the max MTU equal to the max_rx_pktlen
less the overhead which is set to the size of an Ethernet header plus
CRC.

Fixes: 1bb4a528c41f ("ethdev: fix max Rx packet length")

Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
---
 drivers/net/af_xdp/rte_eth_af_xdp.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/net/af_xdp/rte_eth_af_xdp.c b/drivers/net/af_xdp/rte_eth_af_xdp.c
index b362ccdcd3..8a3fa19043 100644
--- a/drivers/net/af_xdp/rte_eth_af_xdp.c
+++ b/drivers/net/af_xdp/rte_eth_af_xdp.c
@@ -78,6 +78,7 @@ RTE_LOG_REGISTER_DEFAULT(af_xdp_logtype, NOTICE);
 #define ETH_AF_XDP_RX_BATCH_SIZE	XSK_RING_CONS__DEFAULT_NUM_DESCS
 #define ETH_AF_XDP_TX_BATCH_SIZE	XSK_RING_CONS__DEFAULT_NUM_DESCS
 
+#define ETH_AF_XDP_ETH_OVERHEAD		(RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN)
 
 struct xsk_umem_info {
 	struct xsk_umem *umem;
@@ -826,19 +827,19 @@ eth_dev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 
 	dev_info->if_index = internals->if_index;
 	dev_info->max_mac_addrs = 1;
-	dev_info->max_rx_pktlen = ETH_FRAME_LEN;
 	dev_info->max_rx_queues = internals->queue_cnt;
 	dev_info->max_tx_queues = internals->queue_cnt;
 
 	dev_info->min_mtu = RTE_ETHER_MIN_MTU;
 #if defined(XDP_UMEM_UNALIGNED_CHUNK_FLAG)
-	dev_info->max_mtu = getpagesize() -
-				sizeof(struct rte_mempool_objhdr) -
-				sizeof(struct rte_mbuf) -
-				RTE_PKTMBUF_HEADROOM - XDP_PACKET_HEADROOM;
+	dev_info->max_rx_pktlen = getpagesize() -
+				  sizeof(struct rte_mempool_objhdr) -
+				  sizeof(struct rte_mbuf) -
+				  RTE_PKTMBUF_HEADROOM - XDP_PACKET_HEADROOM;
 #else
-	dev_info->max_mtu = ETH_AF_XDP_FRAME_SIZE - XDP_PACKET_HEADROOM;
+	dev_info->max_rx_pktlen = ETH_AF_XDP_FRAME_SIZE - XDP_PACKET_HEADROOM;
 #endif
+	dev_info->max_mtu = dev_info->max_rx_pktlen - ETH_AF_XDP_ETH_OVERHEAD;
 
 	dev_info->default_rxportconf.burst_size = ETH_AF_XDP_DFLT_BUSY_BUDGET;
 	dev_info->default_txportconf.burst_size = ETH_AF_XDP_DFLT_BUSY_BUDGET;
-- 
2.17.1


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [dpdk-dev] [PATCH] net/af_xdp: set the max Rx pktlen value correctly
  2021-10-22 14:07 [dpdk-dev] [PATCH] net/af_xdp: set the max Rx pktlen value correctly Ciara Loftus
@ 2021-10-22 15:22 ` Ferruh Yigit
  0 siblings, 0 replies; 2+ messages in thread
From: Ferruh Yigit @ 2021-10-22 15:22 UTC (permalink / raw)
  To: Ciara Loftus, dev; +Cc: Andrew Rybchenko

On 10/22/2021 3:07 PM, Ciara Loftus wrote:
> Commit 1bb4a528c41f ("ethdev: fix max Rx packet length") clarified the
> expected usage of the max_rx_pktlen and max_mtu values and implemented some
> extra checks on these values to ensure they are sane. After this,
> the AF_XDP PMD fails to initialise. The value for max_rx_pktlen which
> represents the max size of the Ethernet frame was set to ETH_FRAME_LEN
> (1514) and the max_mtu which represents the size of the payload was set to
> the max size of the Ethernet frame. This did not make sense, as naturally
> the maximum frame size should be greater than the payload size.
> 
> Fix this by setting the max_rx_pktlen equal to the max size of the
> Ethernet frame as expected, and the max MTU equal to the max_rx_pktlen
> less the overhead which is set to the size of an Ethernet header plus
> CRC.
> 
> Fixes: 1bb4a528c41f ("ethdev: fix max Rx packet length")
> 
> Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>

Thanks for the fix.

Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>

Applied to dpdk-next-net/main, thanks.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-10-22 15:22 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-22 14:07 [dpdk-dev] [PATCH] net/af_xdp: set the max Rx pktlen value correctly Ciara Loftus
2021-10-22 15:22 ` Ferruh Yigit

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).