Thread (11 messages) 11 messages, 3 authors, 2023-02-02

Re: [Intel-wired-lan] [PATCH v2 net] ixgbe: allow to increase MTU to some extent with XDP enabled

From: Jason Xing <hidden>
Date: 2023-01-31 03:00:50
Also in: bpf, intel-wired-lan, lkml

On Mon, Jan 30, 2023 at 11:09 PM Maciej Fijalkowski
[off-list ref] wrote:
On Fri, Jan 27, 2023 at 08:20:18PM +0800, Jason Xing wrote:
quoted
From: Jason Xing <kernelxing@tencent.com>

I encountered one case where I cannot increase the MTU size directly
from 1500 to 2000 with XDP enabled if the server is equipped with
IXGBE card, which happened on thousands of servers in production
environment.
You said in this thread that you've done several tests - what were they?
Tests against XDP are running on the server side when MTU varies from
1500 to 3050 (not including ETH_HLEN, ETH_FCS_LEN and VLAN_HLEN) for a
few days.
I choose the iperf tool to test the maximum throughput and observe the
behavior when the machines are under greater pressure. Also, I use
netperf to send different size packets to the server side with
different modes (TCP_RR/_STREAM) applied.
Now that you're following logic from other drivers, have you tested 3k MTU
Sure, the maximum MTU size users could set is 3050 (which is 3072 - 14
- 4 - 4 in ixgbe_change_mtu() function).
against XDP? Because your commit msg still refer to 2k as your target. If
3k is fine then i would reflect that in the subject of the patch.
I will modify the title and body message both.
quoted
This patch follows the behavior of changing MTU as i40e/ice does.

Referrences:
commit 23b44513c3e6f ("ice: allow 3k MTU for XDP")
commit 0c8493d90b6bb ("i40e: add XDP support for pass and drop actions")

Link: https://lore.kernel.org/lkml/20230121085521.9566-1-kerneljasonxing@gmail.com/ (local)
Why do you share a link to v1 here?
I originally intended to let maintainers trace the previous
discussion. Well, I'm going to remove the link.
You're also missing Fixes: tag, as you're targetting the net tree.
I'll do it in the v3 patch.

Thanks,
Jason
quoted
Signed-off-by: Jason Xing <kernelxing@tencent.com>
---
v2:
1) change the commit message.
2) modify the logic when changing MTU size suggested by Maciej and Alexander.
---
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 25 ++++++++++++-------
 1 file changed, 16 insertions(+), 9 deletions(-)
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index ab8370c413f3..2c1b6eb60436 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -6777,6 +6777,18 @@ static void ixgbe_free_all_rx_resources(struct ixgbe_adapter *adapter)
                      ixgbe_free_rx_resources(adapter->rx_ring[i]);
 }

+/**
+ * ixgbe_max_xdp_frame_size - returns the maximum allowed frame size for XDP
+ * @adapter - device handle, pointer to adapter
+ */
+static int ixgbe_max_xdp_frame_size(struct ixgbe_adapter *adapter)
+{
+     if (PAGE_SIZE >= 8192 || adapter->flags2 & IXGBE_FLAG2_RX_LEGACY)
+             return IXGBE_RXBUFFER_2K;
+     else
+             return IXGBE_RXBUFFER_3K;
+}
+
 /**
  * ixgbe_change_mtu - Change the Maximum Transfer Unit
  * @netdev: network interface device structure
@@ -6788,18 +6800,13 @@ static int ixgbe_change_mtu(struct net_device *netdev, int new_mtu)
 {
      struct ixgbe_adapter *adapter = netdev_priv(netdev);

-     if (adapter->xdp_prog) {
+     if (ixgbe_enabled_xdp_adapter(adapter)) {
              int new_frame_size = new_mtu + ETH_HLEN + ETH_FCS_LEN +
                                   VLAN_HLEN;
-             int i;
-
-             for (i = 0; i < adapter->num_rx_queues; i++) {
-                     struct ixgbe_ring *ring = adapter->rx_ring[i];

-                     if (new_frame_size > ixgbe_rx_bufsz(ring)) {
-                             e_warn(probe, "Requested MTU size is not supported with XDP\n");
-                             return -EINVAL;
-                     }
+             if (new_frame_size > ixgbe_max_xdp_frame_size(adapter)) {
+                     e_warn(probe, "Requested MTU size is not supported with XDP\n");
+                     return -EINVAL;
              }
      }

--
2.37.3

_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help