hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
....@@ -6729,6 +6729,18 @@
67296729 }
67306730
67316731 /**
6732
+ * ixgbe_max_xdp_frame_size - returns the maximum allowed frame size for XDP
6733
+ * @adapter: device handle, pointer to adapter
6734
+ */
6735
+static int ixgbe_max_xdp_frame_size(struct ixgbe_adapter *adapter)
6736
+{
6737
+ if (PAGE_SIZE >= 8192 || adapter->flags2 & IXGBE_FLAG2_RX_LEGACY)
6738
+ return IXGBE_RXBUFFER_2K;
6739
+ else
6740
+ return IXGBE_RXBUFFER_3K;
6741
+}
6742
+
6743
+/**
67326744 * ixgbe_change_mtu - Change the Maximum Transfer Unit
67336745 * @netdev: network interface device structure
67346746 * @new_mtu: new value for maximum frame size
....@@ -6739,18 +6751,12 @@
67396751 {
67406752 struct ixgbe_adapter *adapter = netdev_priv(netdev);
67416753
6742
- if (adapter->xdp_prog) {
6743
- int new_frame_size = new_mtu + ETH_HLEN + ETH_FCS_LEN +
6744
- VLAN_HLEN;
6745
- int i;
6754
+ if (ixgbe_enabled_xdp_adapter(adapter)) {
6755
+ int new_frame_size = new_mtu + IXGBE_PKT_HDR_PAD;
67466756
6747
- for (i = 0; i < adapter->num_rx_queues; i++) {
6748
- struct ixgbe_ring *ring = adapter->rx_ring[i];
6749
-
6750
- if (new_frame_size > ixgbe_rx_bufsz(ring)) {
6751
- e_warn(probe, "Requested MTU size is not supported with XDP\n");
6752
- return -EINVAL;
6753
- }
6757
+ if (new_frame_size > ixgbe_max_xdp_frame_size(adapter)) {
6758
+ e_warn(probe, "Requested MTU size is not supported with XDP\n");
6759
+ return -EINVAL;
67546760 }
67556761 }
67566762
....@@ -8403,7 +8409,7 @@
84038409 struct ixgbe_adapter *adapter = q_vector->adapter;
84048410
84058411 if (unlikely(skb_tail_pointer(skb) < hdr.network +
8406
- VXLAN_HEADROOM))
8412
+ vxlan_headroom(0)))
84078413 return;
84088414
84098415 /* verify the port is recognized as VXLAN */