netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next 0/8] update xdp_features flag according to NIC re-configuration
@ 2023-03-07 14:53 Lorenzo Bianconi
  2023-03-07 14:53 ` [PATCH net-next 1/8] tools: ynl: fix render-max for flags definition Lorenzo Bianconi
                   ` (7 more replies)
  0 siblings, 8 replies; 18+ messages in thread
From: Lorenzo Bianconi @ 2023-03-07 14:53 UTC (permalink / raw)
  To: netdev
  Cc: bpf, davem, edumazet, kuba, pabeni, ast, daniel, hawk,
	john.fastabend, saeedm, tariqt, leon, shayagr, akiyano, darinzon,
	sgoutham, lorenzo.bianconi, toke, teknoraver

Take into account possible NIC configuration changes (e.g. LRO or tx/rx queues
reconfiguration) setting device xdp_features flag.
Introduce xdp_set_features_flag utility routine.

Lorenzo Bianconi (7):
  tools: ynl: fix render-max for flags definition
  tools: ynl: fix get_mask utility routine
  xdp: add xdp_set_features_flag utility routine
  net: thunderx: take into account xdp_features setting tx/rx queues
  net: ena: take into account xdp_features setting tx/rx queues
  veth: take into account device reconfiguration for xdp_features flag
  net/mlx5e: take into account device reconfiguration for xdp_features
    flag

Matteo Croce (1):
  mvpp2: take care of xdp_features when reconfiguring queues

 Documentation/netlink/specs/netdev.yaml       |  1 +
 drivers/net/ethernet/amazon/ena/ena_ethtool.c | 15 +++++--
 drivers/net/ethernet/amazon/ena/ena_netdev.c  |  6 ++-
 .../ethernet/cavium/thunder/nicvf_ethtool.c   | 17 ++++---
 .../net/ethernet/cavium/thunder/nicvf_main.c  |  4 +-
 .../net/ethernet/marvell/mvpp2/mvpp2_main.c   | 15 +++++--
 drivers/net/ethernet/mellanox/mlx5/core/en.h  |  1 +
 .../ethernet/mellanox/mlx5/core/en_ethtool.c  | 10 ++++-
 .../net/ethernet/mellanox/mlx5/core/en_main.c | 45 ++++++++++++++++---
 .../net/ethernet/mellanox/mlx5/core/en_rep.c  |  3 ++
 drivers/net/veth.c                            | 42 +++++++++++++++--
 include/net/xdp.h                             | 11 +++++
 include/uapi/linux/netdev.h                   |  2 +
 net/core/xdp.c                                | 26 ++++++++---
 tools/include/uapi/linux/netdev.h             |  2 +
 tools/net/ynl/ynl-gen-c.py                    | 17 ++++---
 16 files changed, 176 insertions(+), 41 deletions(-)

-- 
2.39.2


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

* [PATCH net-next 1/8] tools: ynl: fix render-max for flags definition
  2023-03-07 14:53 [PATCH net-next 0/8] update xdp_features flag according to NIC re-configuration Lorenzo Bianconi
@ 2023-03-07 14:53 ` Lorenzo Bianconi
  2023-03-08  8:06   ` Jakub Kicinski
  2023-03-07 14:53 ` [PATCH net-next 2/8] tools: ynl: fix get_mask utility routine Lorenzo Bianconi
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 18+ messages in thread
From: Lorenzo Bianconi @ 2023-03-07 14:53 UTC (permalink / raw)
  To: netdev
  Cc: bpf, davem, edumazet, kuba, pabeni, ast, daniel, hawk,
	john.fastabend, saeedm, tariqt, leon, shayagr, akiyano, darinzon,
	sgoutham, lorenzo.bianconi, toke, teknoraver

Properly manage render-max property for flags definition type
introducing mask value and setting it to (last_element << 1) - 1
instead of adding max value set to last_element + 1

Fixes: be5bea1cc0bf ("net: add basic C code generators for Netlink")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
 tools/net/ynl/ynl-gen-c.py | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/tools/net/ynl/ynl-gen-c.py b/tools/net/ynl/ynl-gen-c.py
index 274e9c566f61..f2e41dd962d4 100755
--- a/tools/net/ynl/ynl-gen-c.py
+++ b/tools/net/ynl/ynl-gen-c.py
@@ -1995,9 +1995,14 @@ def render_uapi(family, cw):
 
             if const.get('render-max', False):
                 cw.nl()
-                max_name = c_upper(name_pfx + 'max')
-                cw.p('__' + max_name + ',')
-                cw.p(max_name + ' = (__' + max_name + ' - 1)')
+                if const['type'] == 'flags':
+                    max_name = c_upper(name_pfx + 'mask')
+                    max_val = f' = {(entry.user_value() << 1) - 1},'
+                    cw.p(max_name + max_val)
+                else:
+                    max_name = c_upper(name_pfx + 'max')
+                    cw.p('__' + max_name + ',')
+                    cw.p(max_name + ' = (__' + max_name + ' - 1)')
             cw.block_end(line=';')
             cw.nl()
         elif const['type'] == 'const':
-- 
2.39.2


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

* [PATCH net-next 2/8] tools: ynl: fix get_mask utility routine
  2023-03-07 14:53 [PATCH net-next 0/8] update xdp_features flag according to NIC re-configuration Lorenzo Bianconi
  2023-03-07 14:53 ` [PATCH net-next 1/8] tools: ynl: fix render-max for flags definition Lorenzo Bianconi
@ 2023-03-07 14:53 ` Lorenzo Bianconi
  2023-03-07 14:54 ` [PATCH net-next 3/8] xdp: add xdp_set_features_flag " Lorenzo Bianconi
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 18+ messages in thread
From: Lorenzo Bianconi @ 2023-03-07 14:53 UTC (permalink / raw)
  To: netdev
  Cc: bpf, davem, edumazet, kuba, pabeni, ast, daniel, hawk,
	john.fastabend, saeedm, tariqt, leon, shayagr, akiyano, darinzon,
	sgoutham, lorenzo.bianconi, toke, teknoraver

Fix get_mask utility routine in order to take into account possible gaps
in the elements list.

Fixes: be5bea1cc0bf ("net: add basic C code generators for Netlink")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
 tools/net/ynl/ynl-gen-c.py | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/tools/net/ynl/ynl-gen-c.py b/tools/net/ynl/ynl-gen-c.py
index f2e41dd962d4..0d6df9414aa9 100755
--- a/tools/net/ynl/ynl-gen-c.py
+++ b/tools/net/ynl/ynl-gen-c.py
@@ -652,10 +652,8 @@ class EnumSet:
 
     def get_mask(self):
         mask = 0
-        idx = self.yaml.get('value-start', 0)
-        for _ in self.entry_list:
-            mask |= 1 << idx
-            idx += 1
+        for e in self.entry_list:
+            mask += e.user_value()
         return mask
 
 
-- 
2.39.2


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

* [PATCH net-next 3/8] xdp: add xdp_set_features_flag utility routine
  2023-03-07 14:53 [PATCH net-next 0/8] update xdp_features flag according to NIC re-configuration Lorenzo Bianconi
  2023-03-07 14:53 ` [PATCH net-next 1/8] tools: ynl: fix render-max for flags definition Lorenzo Bianconi
  2023-03-07 14:53 ` [PATCH net-next 2/8] tools: ynl: fix get_mask utility routine Lorenzo Bianconi
@ 2023-03-07 14:54 ` Lorenzo Bianconi
  2023-03-07 14:54 ` [PATCH net-next 4/8] net: thunderx: take into account xdp_features setting tx/rx queues Lorenzo Bianconi
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 18+ messages in thread
From: Lorenzo Bianconi @ 2023-03-07 14:54 UTC (permalink / raw)
  To: netdev
  Cc: bpf, davem, edumazet, kuba, pabeni, ast, daniel, hawk,
	john.fastabend, saeedm, tariqt, leon, shayagr, akiyano, darinzon,
	sgoutham, lorenzo.bianconi, toke, teknoraver

Introduce xdp_set_features_flag utility routine in order to update
dynamically xdp_features according to the dynamic hw configuration via
ethtool (e.g. changing number of hw rx/tx queues).
Add xdp_clear_features_flag() in order to clear all xdp_feature flag.

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
 Documentation/netlink/specs/netdev.yaml |  1 +
 include/net/xdp.h                       | 11 +++++++++++
 include/uapi/linux/netdev.h             |  2 ++
 net/core/xdp.c                          | 26 ++++++++++++++++++-------
 tools/include/uapi/linux/netdev.h       |  2 ++
 tools/net/ynl/ynl-gen-c.py              |  2 +-
 6 files changed, 36 insertions(+), 8 deletions(-)

diff --git a/Documentation/netlink/specs/netdev.yaml b/Documentation/netlink/specs/netdev.yaml
index cffef09729f1..7e4a5b4e7162 100644
--- a/Documentation/netlink/specs/netdev.yaml
+++ b/Documentation/netlink/specs/netdev.yaml
@@ -7,6 +7,7 @@ definitions:
   -
     type: flags
     name: xdp-act
+    render-max: true
     entries:
       -
         name: basic
diff --git a/include/net/xdp.h b/include/net/xdp.h
index d517bfac937b..41c57b8b1671 100644
--- a/include/net/xdp.h
+++ b/include/net/xdp.h
@@ -428,12 +428,18 @@ MAX_XDP_METADATA_KFUNC,
 #ifdef CONFIG_NET
 u32 bpf_xdp_metadata_kfunc_id(int id);
 bool bpf_dev_bound_kfunc_id(u32 btf_id);
+void xdp_set_features_flag(struct net_device *dev, xdp_features_t val);
 void xdp_features_set_redirect_target(struct net_device *dev, bool support_sg);
 void xdp_features_clear_redirect_target(struct net_device *dev);
 #else
 static inline u32 bpf_xdp_metadata_kfunc_id(int id) { return 0; }
 static inline bool bpf_dev_bound_kfunc_id(u32 btf_id) { return false; }
 
+static inline void
+xdp_set_features_flag(struct net_device *dev, xdp_features_t val)
+{
+}
+
 static inline void
 xdp_features_set_redirect_target(struct net_device *dev, bool support_sg)
 {
@@ -445,4 +451,9 @@ xdp_features_clear_redirect_target(struct net_device *dev)
 }
 #endif
 
+static inline void xdp_clear_features_flag(struct net_device *dev)
+{
+	xdp_set_features_flag(dev, 0);
+}
+
 #endif /* __LINUX_NET_XDP_H__ */
diff --git a/include/uapi/linux/netdev.h b/include/uapi/linux/netdev.h
index 588391447bfb..497cfc93f2e3 100644
--- a/include/uapi/linux/netdev.h
+++ b/include/uapi/linux/netdev.h
@@ -33,6 +33,8 @@ enum netdev_xdp_act {
 	NETDEV_XDP_ACT_HW_OFFLOAD = 16,
 	NETDEV_XDP_ACT_RX_SG = 32,
 	NETDEV_XDP_ACT_NDO_XMIT_SG = 64,
+
+	NETDEV_XDP_ACT_MASK = 127,
 };
 
 enum {
diff --git a/net/core/xdp.c b/net/core/xdp.c
index 8c92fc553317..87e654b7d06c 100644
--- a/net/core/xdp.c
+++ b/net/core/xdp.c
@@ -774,20 +774,32 @@ static int __init xdp_metadata_init(void)
 }
 late_initcall(xdp_metadata_init);
 
-void xdp_features_set_redirect_target(struct net_device *dev, bool support_sg)
+void xdp_set_features_flag(struct net_device *dev, xdp_features_t val)
 {
-	dev->xdp_features |= NETDEV_XDP_ACT_NDO_XMIT;
-	if (support_sg)
-		dev->xdp_features |= NETDEV_XDP_ACT_NDO_XMIT_SG;
+	val &= NETDEV_XDP_ACT_MASK;
+	if (dev->xdp_features == val)
+		return;
 
+	dev->xdp_features = val;
 	call_netdevice_notifiers(NETDEV_XDP_FEAT_CHANGE, dev);
 }
+EXPORT_SYMBOL_GPL(xdp_set_features_flag);
+
+void xdp_features_set_redirect_target(struct net_device *dev, bool support_sg)
+{
+	xdp_features_t val = (dev->xdp_features | NETDEV_XDP_ACT_NDO_XMIT);
+
+	if (support_sg)
+		val |= NETDEV_XDP_ACT_NDO_XMIT_SG;
+	xdp_set_features_flag(dev, val);
+}
 EXPORT_SYMBOL_GPL(xdp_features_set_redirect_target);
 
 void xdp_features_clear_redirect_target(struct net_device *dev)
 {
-	dev->xdp_features &= ~(NETDEV_XDP_ACT_NDO_XMIT |
-			       NETDEV_XDP_ACT_NDO_XMIT_SG);
-	call_netdevice_notifiers(NETDEV_XDP_FEAT_CHANGE, dev);
+	xdp_features_t val = dev->xdp_features;
+
+	val &= ~(NETDEV_XDP_ACT_NDO_XMIT | NETDEV_XDP_ACT_NDO_XMIT_SG);
+	xdp_set_features_flag(dev, val);
 }
 EXPORT_SYMBOL_GPL(xdp_features_clear_redirect_target);
diff --git a/tools/include/uapi/linux/netdev.h b/tools/include/uapi/linux/netdev.h
index 588391447bfb..497cfc93f2e3 100644
--- a/tools/include/uapi/linux/netdev.h
+++ b/tools/include/uapi/linux/netdev.h
@@ -33,6 +33,8 @@ enum netdev_xdp_act {
 	NETDEV_XDP_ACT_HW_OFFLOAD = 16,
 	NETDEV_XDP_ACT_RX_SG = 32,
 	NETDEV_XDP_ACT_NDO_XMIT_SG = 64,
+
+	NETDEV_XDP_ACT_MASK = 127,
 };
 
 enum {
diff --git a/tools/net/ynl/ynl-gen-c.py b/tools/net/ynl/ynl-gen-c.py
index 0d6df9414aa9..feb86f043e3b 100755
--- a/tools/net/ynl/ynl-gen-c.py
+++ b/tools/net/ynl/ynl-gen-c.py
@@ -1995,7 +1995,7 @@ def render_uapi(family, cw):
                 cw.nl()
                 if const['type'] == 'flags':
                     max_name = c_upper(name_pfx + 'mask')
-                    max_val = f' = {(entry.user_value() << 1) - 1},'
+                    max_val = f' = {enum.get_mask()},'
                     cw.p(max_name + max_val)
                 else:
                     max_name = c_upper(name_pfx + 'max')
-- 
2.39.2


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

* [PATCH net-next 4/8] net: thunderx: take into account xdp_features setting tx/rx queues
  2023-03-07 14:53 [PATCH net-next 0/8] update xdp_features flag according to NIC re-configuration Lorenzo Bianconi
                   ` (2 preceding siblings ...)
  2023-03-07 14:54 ` [PATCH net-next 3/8] xdp: add xdp_set_features_flag " Lorenzo Bianconi
@ 2023-03-07 14:54 ` Lorenzo Bianconi
  2023-03-07 14:54 ` [PATCH net-next 5/8] net: ena: " Lorenzo Bianconi
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 18+ messages in thread
From: Lorenzo Bianconi @ 2023-03-07 14:54 UTC (permalink / raw)
  To: netdev
  Cc: bpf, davem, edumazet, kuba, pabeni, ast, daniel, hawk,
	john.fastabend, saeedm, tariqt, leon, shayagr, akiyano, darinzon,
	sgoutham, lorenzo.bianconi, toke, teknoraver

thunderx nic allows xdp just if enough hw queues are available for XDP.
Take into account queues configuration setting xdp_features.

Fixes: 66c0e13ad236 ("drivers: net: turn on XDP features")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
 .../net/ethernet/cavium/thunder/nicvf_ethtool.c | 17 +++++++++++------
 .../net/ethernet/cavium/thunder/nicvf_main.c    |  4 +++-
 2 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c b/drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c
index e5c71f907852..d8d71bf97983 100644
--- a/drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c
+++ b/drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c
@@ -735,12 +735,17 @@ static int nicvf_set_channels(struct net_device *dev,
 	if (channel->tx_count > nic->max_queues)
 		return -EINVAL;
 
-	if (nic->xdp_prog &&
-	    ((channel->tx_count + channel->rx_count) > nic->max_queues)) {
-		netdev_err(nic->netdev,
-			   "XDP mode, RXQs + TXQs > Max %d\n",
-			   nic->max_queues);
-		return -EINVAL;
+	if (channel->tx_count + channel->rx_count > nic->max_queues) {
+		if (nic->xdp_prog) {
+			netdev_err(nic->netdev,
+				   "XDP mode, RXQs + TXQs > Max %d\n",
+				   nic->max_queues);
+			return -EINVAL;
+		}
+
+		xdp_clear_features_flag(nic->netdev);
+	} else if (!pass1_silicon(nic->pdev)) {
+		xdp_set_features_flag(dev, NETDEV_XDP_ACT_BASIC);
 	}
 
 	if (if_up)
diff --git a/drivers/net/ethernet/cavium/thunder/nicvf_main.c b/drivers/net/ethernet/cavium/thunder/nicvf_main.c
index 8b25313c7f6b..eff350e0bc2a 100644
--- a/drivers/net/ethernet/cavium/thunder/nicvf_main.c
+++ b/drivers/net/ethernet/cavium/thunder/nicvf_main.c
@@ -2218,7 +2218,9 @@ static int nicvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	netdev->netdev_ops = &nicvf_netdev_ops;
 	netdev->watchdog_timeo = NICVF_TX_TIMEOUT;
 
-	netdev->xdp_features = NETDEV_XDP_ACT_BASIC;
+	if (!pass1_silicon(nic->pdev) &&
+	    nic->rx_queues + nic->tx_queues <= nic->max_queues)
+		netdev->xdp_features = NETDEV_XDP_ACT_BASIC;
 
 	/* MTU range: 64 - 9200 */
 	netdev->min_mtu = NIC_HW_MIN_FRS;
-- 
2.39.2


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

* [PATCH net-next 5/8] net: ena: take into account xdp_features setting tx/rx queues
  2023-03-07 14:53 [PATCH net-next 0/8] update xdp_features flag according to NIC re-configuration Lorenzo Bianconi
                   ` (3 preceding siblings ...)
  2023-03-07 14:54 ` [PATCH net-next 4/8] net: thunderx: take into account xdp_features setting tx/rx queues Lorenzo Bianconi
@ 2023-03-07 14:54 ` Lorenzo Bianconi
  2023-03-08 10:25   ` Shay Agroskin
  2023-03-07 14:54 ` [PATCH net-next 6/8] veth: take into account device reconfiguration for xdp_features flag Lorenzo Bianconi
                   ` (2 subsequent siblings)
  7 siblings, 1 reply; 18+ messages in thread
From: Lorenzo Bianconi @ 2023-03-07 14:54 UTC (permalink / raw)
  To: netdev
  Cc: bpf, davem, edumazet, kuba, pabeni, ast, daniel, hawk,
	john.fastabend, saeedm, tariqt, leon, shayagr, akiyano, darinzon,
	sgoutham, lorenzo.bianconi, toke, teknoraver

ena nic allows xdp just if enough hw queues are available for XDP.
Take into account queues configuration setting xdp_features.

Fixes: 66c0e13ad236 ("drivers: net: turn on XDP features")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
 drivers/net/ethernet/amazon/ena/ena_ethtool.c | 15 ++++++++++++---
 drivers/net/ethernet/amazon/ena/ena_netdev.c  |  6 ++++--
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/amazon/ena/ena_ethtool.c b/drivers/net/ethernet/amazon/ena/ena_ethtool.c
index 8da79eedc057..1d4f2f4d10f2 100644
--- a/drivers/net/ethernet/amazon/ena/ena_ethtool.c
+++ b/drivers/net/ethernet/amazon/ena/ena_ethtool.c
@@ -850,11 +850,20 @@ static int ena_set_channels(struct net_device *netdev,
 	struct ena_adapter *adapter = netdev_priv(netdev);
 	u32 count = channels->combined_count;
 	/* The check for max value is already done in ethtool */
-	if (count < ENA_MIN_NUM_IO_QUEUES ||
-	    (ena_xdp_present(adapter) &&
-	    !ena_xdp_legal_queue_count(adapter, count)))
+	if (count < ENA_MIN_NUM_IO_QUEUES)
 		return -EINVAL;
 
+	if (!ena_xdp_legal_queue_count(adapter, count)) {
+		if (ena_xdp_present(adapter))
+			return -EINVAL;
+
+		xdp_clear_features_flag(netdev);
+	} else {
+		xdp_set_features_flag(netdev,
+				      NETDEV_XDP_ACT_BASIC |
+				      NETDEV_XDP_ACT_REDIRECT);
+	}
+
 	return ena_update_queue_count(adapter, count);
 }
 
diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
index d3999db7c6a2..cbfe7f977270 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
@@ -4105,8 +4105,6 @@ static void ena_set_conf_feat_params(struct ena_adapter *adapter,
 	/* Set offload features */
 	ena_set_dev_offloads(feat, netdev);
 
-	netdev->xdp_features = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT;
-
 	adapter->max_mtu = feat->dev_attr.max_mtu;
 	netdev->max_mtu = adapter->max_mtu;
 	netdev->min_mtu = ENA_MIN_MTU;
@@ -4393,6 +4391,10 @@ static int ena_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 
 	ena_config_debug_area(adapter);
 
+	if (ena_xdp_legal_queue_count(adapter, adapter->num_io_queues))
+		netdev->xdp_features = NETDEV_XDP_ACT_BASIC |
+				       NETDEV_XDP_ACT_REDIRECT;
+
 	memcpy(adapter->netdev->perm_addr, adapter->mac_addr, netdev->addr_len);
 
 	netif_carrier_off(netdev);
-- 
2.39.2


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

* [PATCH net-next 6/8] veth: take into account device reconfiguration for xdp_features flag
  2023-03-07 14:53 [PATCH net-next 0/8] update xdp_features flag according to NIC re-configuration Lorenzo Bianconi
                   ` (4 preceding siblings ...)
  2023-03-07 14:54 ` [PATCH net-next 5/8] net: ena: " Lorenzo Bianconi
@ 2023-03-07 14:54 ` Lorenzo Bianconi
  2023-03-07 14:54 ` [PATCH net-next 7/8] net/mlx5e: " Lorenzo Bianconi
  2023-03-07 14:54 ` [PATCH net-next 8/8] mvpp2: take care of xdp_features when reconfiguring queues Lorenzo Bianconi
  7 siblings, 0 replies; 18+ messages in thread
From: Lorenzo Bianconi @ 2023-03-07 14:54 UTC (permalink / raw)
  To: netdev
  Cc: bpf, davem, edumazet, kuba, pabeni, ast, daniel, hawk,
	john.fastabend, saeedm, tariqt, leon, shayagr, akiyano, darinzon,
	sgoutham, lorenzo.bianconi, toke, teknoraver

Take into account tx/rx queues reconfiguration setting device
xdp_features flag. Moreover consider NETIF_F_GRO flag in order to enable
ndo_xdp_xmit callback.

Fixes: 66c0e13ad236 ("drivers: net: turn on XDP features")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
 drivers/net/veth.c | 42 ++++++++++++++++++++++++++++++++++++++----
 1 file changed, 38 insertions(+), 4 deletions(-)

diff --git a/drivers/net/veth.c b/drivers/net/veth.c
index 1bb54de7124d..293dc3b2c84a 100644
--- a/drivers/net/veth.c
+++ b/drivers/net/veth.c
@@ -1257,6 +1257,26 @@ static int veth_enable_range_safe(struct net_device *dev, int start, int end)
 	return 0;
 }
 
+static void veth_set_xdp_features(struct net_device *dev)
+{
+	struct veth_priv *priv = netdev_priv(dev);
+	struct net_device *peer;
+
+	peer = rcu_dereference(priv->peer);
+	if (peer && peer->real_num_tx_queues <= dev->real_num_rx_queues) {
+		xdp_features_t val = NETDEV_XDP_ACT_BASIC |
+				     NETDEV_XDP_ACT_REDIRECT |
+				     NETDEV_XDP_ACT_RX_SG;
+
+		if (priv->_xdp_prog || veth_gro_requested(dev))
+			val |= NETDEV_XDP_ACT_NDO_XMIT |
+			       NETDEV_XDP_ACT_NDO_XMIT_SG;
+		xdp_set_features_flag(dev, val);
+	} else {
+		xdp_clear_features_flag(dev);
+	}
+}
+
 static int veth_set_channels(struct net_device *dev,
 			     struct ethtool_channels *ch)
 {
@@ -1323,6 +1343,12 @@ static int veth_set_channels(struct net_device *dev,
 		if (peer)
 			netif_carrier_on(peer);
 	}
+
+	/* update XDP supported features */
+	veth_set_xdp_features(dev);
+	if (peer)
+		veth_set_xdp_features(peer);
+
 	return err;
 
 revert:
@@ -1489,7 +1515,10 @@ static int veth_set_features(struct net_device *dev,
 		err = veth_napi_enable(dev);
 		if (err)
 			return err;
+
+		xdp_features_set_redirect_target(dev, true);
 	} else {
+		xdp_features_clear_redirect_target(dev);
 		veth_napi_del(dev);
 	}
 	return 0;
@@ -1570,10 +1599,15 @@ static int veth_xdp_set(struct net_device *dev, struct bpf_prog *prog,
 			peer->hw_features &= ~NETIF_F_GSO_SOFTWARE;
 			peer->max_mtu = max_mtu;
 		}
+
+		xdp_features_set_redirect_target(dev, true);
 	}
 
 	if (old_prog) {
 		if (!prog) {
+			if (!veth_gro_requested(dev))
+				xdp_features_clear_redirect_target(dev);
+
 			if (dev->flags & IFF_UP)
 				veth_disable_xdp(dev);
 
@@ -1686,10 +1720,6 @@ static void veth_setup(struct net_device *dev)
 	dev->hw_enc_features = VETH_FEATURES;
 	dev->mpls_features = NETIF_F_HW_CSUM | NETIF_F_GSO_SOFTWARE;
 	netif_set_tso_max_size(dev, GSO_MAX_SIZE);
-
-	dev->xdp_features = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |
-			    NETDEV_XDP_ACT_NDO_XMIT | NETDEV_XDP_ACT_RX_SG |
-			    NETDEV_XDP_ACT_NDO_XMIT_SG;
 }
 
 /*
@@ -1857,6 +1887,10 @@ static int veth_newlink(struct net *src_net, struct net_device *dev,
 		goto err_queues;
 
 	veth_disable_gro(dev);
+	/* update XDP supported features */
+	veth_set_xdp_features(dev);
+	veth_set_xdp_features(peer);
+
 	return 0;
 
 err_queues:
-- 
2.39.2


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

* [PATCH net-next 7/8] net/mlx5e: take into account device reconfiguration for xdp_features flag
  2023-03-07 14:53 [PATCH net-next 0/8] update xdp_features flag according to NIC re-configuration Lorenzo Bianconi
                   ` (5 preceding siblings ...)
  2023-03-07 14:54 ` [PATCH net-next 6/8] veth: take into account device reconfiguration for xdp_features flag Lorenzo Bianconi
@ 2023-03-07 14:54 ` Lorenzo Bianconi
  2023-03-08 10:33   ` Tariq Toukan
  2023-03-07 14:54 ` [PATCH net-next 8/8] mvpp2: take care of xdp_features when reconfiguring queues Lorenzo Bianconi
  7 siblings, 1 reply; 18+ messages in thread
From: Lorenzo Bianconi @ 2023-03-07 14:54 UTC (permalink / raw)
  To: netdev
  Cc: bpf, davem, edumazet, kuba, pabeni, ast, daniel, hawk,
	john.fastabend, saeedm, tariqt, leon, shayagr, akiyano, darinzon,
	sgoutham, lorenzo.bianconi, toke, teknoraver

Take into account LRO and GRO configuration setting device xdp_features
flag. Moreover consider channel rq_wq_type enabling rx scatter-gatter
support in xdp_features flag.

Fixes: 66c0e13ad236 ("drivers: net: turn on XDP features")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
 drivers/net/ethernet/mellanox/mlx5/core/en.h  |  1 +
 .../ethernet/mellanox/mlx5/core/en_ethtool.c  | 10 ++++-
 .../net/ethernet/mellanox/mlx5/core/en_main.c | 45 ++++++++++++++++---
 .../net/ethernet/mellanox/mlx5/core/en_rep.c  |  3 ++
 4 files changed, 51 insertions(+), 8 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h b/drivers/net/ethernet/mellanox/mlx5/core/en.h
index 88460b7796e5..4276c6eb6820 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en.h
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h
@@ -1243,6 +1243,7 @@ void mlx5e_build_nic_params(struct mlx5e_priv *priv, struct mlx5e_xsk *xsk, u16
 void mlx5e_rx_dim_work(struct work_struct *work);
 void mlx5e_tx_dim_work(struct work_struct *work);
 
+void mlx5e_set_xdp_feature(struct net_device *netdev);
 netdev_features_t mlx5e_features_check(struct sk_buff *skb,
 				       struct net_device *netdev,
 				       netdev_features_t features);
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
index 7708acc9b2ab..79fd21ecb9cb 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
@@ -1985,6 +1985,7 @@ static int set_pflag_rx_striding_rq(struct net_device *netdev, bool enable)
 	struct mlx5e_priv *priv = netdev_priv(netdev);
 	struct mlx5_core_dev *mdev = priv->mdev;
 	struct mlx5e_params new_params;
+	int err;
 
 	if (enable) {
 		/* Checking the regular RQ here; mlx5e_validate_xsk_param called
@@ -2005,7 +2006,14 @@ static int set_pflag_rx_striding_rq(struct net_device *netdev, bool enable)
 	MLX5E_SET_PFLAG(&new_params, MLX5E_PFLAG_RX_STRIDING_RQ, enable);
 	mlx5e_set_rq_type(mdev, &new_params);
 
-	return mlx5e_safe_switch_params(priv, &new_params, NULL, NULL, true);
+	err = mlx5e_safe_switch_params(priv, &new_params, NULL, NULL, true);
+	if (err)
+		return err;
+
+	/* update XDP supported features */
+	mlx5e_set_xdp_feature(netdev);
+
+	return 0;
 }
 
 static int set_pflag_rx_no_csum_complete(struct net_device *netdev, bool enable)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
index 76a9c5194a70..1b68dd2be2c5 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
@@ -4004,6 +4004,30 @@ static int mlx5e_handle_feature(struct net_device *netdev,
 	return 0;
 }
 
+void mlx5e_set_xdp_feature(struct net_device *netdev)
+{
+	struct mlx5e_priv *priv = netdev_priv(netdev);
+	bool ndo_xmit = test_bit(MLX5E_STATE_XDP_ACTIVE, &priv->state);
+	struct mlx5e_params *params = &priv->channels.params;
+	xdp_features_t val;
+
+	if (params->packet_merge.type != MLX5E_PACKET_MERGE_NONE) {
+		xdp_clear_features_flag(netdev);
+		return;
+	}
+
+	val = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |
+	      NETDEV_XDP_ACT_XSK_ZEROCOPY;
+	if (ndo_xmit)
+		val |= NETDEV_XDP_ACT_NDO_XMIT;
+	if (params->rq_wq_type == MLX5_WQ_TYPE_CYCLIC) {
+		val |= NETDEV_XDP_ACT_RX_SG;
+		if (ndo_xmit)
+			val |= NETDEV_XDP_ACT_NDO_XMIT_SG;
+	}
+	xdp_set_features_flag(netdev, val);
+}
+
 int mlx5e_set_features(struct net_device *netdev, netdev_features_t features)
 {
 	netdev_features_t oper_features = features;
@@ -4030,6 +4054,9 @@ int mlx5e_set_features(struct net_device *netdev, netdev_features_t features)
 		return -EINVAL;
 	}
 
+	/* update XDP supported features */
+	mlx5e_set_xdp_feature(netdev);
+
 	return 0;
 }
 
@@ -4762,10 +4789,14 @@ static int mlx5e_xdp_set(struct net_device *netdev, struct bpf_prog *prog)
 		bpf_prog_put(old_prog);
 
 	if (reset) {
-		if (prog)
-			xdp_features_set_redirect_target(netdev, true);
-		else
+		if (prog) {
+			bool xmit_sg;
+
+			xmit_sg = new_params.rq_wq_type == MLX5_WQ_TYPE_CYCLIC;
+			xdp_features_set_redirect_target(netdev, xmit_sg);
+		} else {
 			xdp_features_clear_redirect_target(netdev);
+		}
 	}
 
 	if (!test_bit(MLX5E_STATE_OPENED, &priv->state) || reset)
@@ -5163,13 +5194,10 @@ static void mlx5e_build_nic_netdev(struct net_device *netdev)
 	netdev->features         |= NETIF_F_HIGHDMA;
 	netdev->features         |= NETIF_F_HW_VLAN_STAG_FILTER;
 
-	netdev->xdp_features = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |
-			       NETDEV_XDP_ACT_XSK_ZEROCOPY |
-			       NETDEV_XDP_ACT_RX_SG;
-
 	netdev->priv_flags       |= IFF_UNICAST_FLT;
 
 	netif_set_tso_max_size(netdev, GSO_MAX_SIZE);
+	mlx5e_set_xdp_feature(netdev);
 	mlx5e_set_netdev_dev_addr(netdev);
 	mlx5e_macsec_build_netdev(priv);
 	mlx5e_ipsec_build_netdev(priv);
@@ -5241,6 +5269,9 @@ static int mlx5e_nic_init(struct mlx5_core_dev *mdev,
 		mlx5_core_err(mdev, "TLS initialization failed, %d\n", err);
 
 	mlx5e_health_create_reporters(priv);
+	/* update XDP supported features */
+	mlx5e_set_xdp_feature(netdev);
+
 	return 0;
 }
 
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
index 9b9203443085..43fd12fb87b8 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
@@ -747,6 +747,9 @@ static void mlx5e_build_rep_params(struct net_device *netdev)
 	/* RQ */
 	mlx5e_build_rq_params(mdev, params);
 
+	/* update XDP supported features */
+	mlx5e_set_xdp_feature(netdev);
+
 	/* CQ moderation params */
 	params->rx_dim_enabled = MLX5_CAP_GEN(mdev, cq_moderation);
 	mlx5e_set_rx_cq_mode_params(params, cq_period_mode);
-- 
2.39.2


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

* [PATCH net-next 8/8] mvpp2: take care of xdp_features when reconfiguring queues
  2023-03-07 14:53 [PATCH net-next 0/8] update xdp_features flag according to NIC re-configuration Lorenzo Bianconi
                   ` (6 preceding siblings ...)
  2023-03-07 14:54 ` [PATCH net-next 7/8] net/mlx5e: " Lorenzo Bianconi
@ 2023-03-07 14:54 ` Lorenzo Bianconi
  7 siblings, 0 replies; 18+ messages in thread
From: Lorenzo Bianconi @ 2023-03-07 14:54 UTC (permalink / raw)
  To: netdev
  Cc: bpf, davem, edumazet, kuba, pabeni, ast, daniel, hawk,
	john.fastabend, saeedm, tariqt, leon, shayagr, akiyano, darinzon,
	sgoutham, lorenzo.bianconi, toke, teknoraver

From: Matteo Croce <teknoraver@meta.com>

XDP is supported only if enough queues are present, so when reconfiguring
the queues set xdp_features accordingly.

Fixes: 66c0e13ad236 ("drivers: net: turn on XDP features")
Suggested-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Matteo Croce <teknoraver@meta.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
index 9b4ecbe4f36d..3ea00bc9b91c 100644
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
@@ -4996,6 +4996,14 @@ static int mvpp2_bm_switch_buffers(struct mvpp2 *priv, bool percpu)
 
 	for (i = 0; i < priv->port_count; i++) {
 		port = priv->port_list[i];
+		if (percpu && port->ntxqs >= num_possible_cpus() * 2)
+			xdp_set_features_flag(port->dev,
+					      NETDEV_XDP_ACT_BASIC |
+					      NETDEV_XDP_ACT_REDIRECT |
+					      NETDEV_XDP_ACT_NDO_XMIT);
+		else
+			xdp_clear_features_flag(port->dev);
+
 		mvpp2_swf_bm_pool_init(port);
 		if (status[i])
 			mvpp2_open(port->dev);
@@ -6863,13 +6871,14 @@ static int mvpp2_port_probe(struct platform_device *pdev,
 
 	if (!port->priv->percpu_pools)
 		mvpp2_set_hw_csum(port, port->pool_long->id);
+	else if (port->ntxqs >= num_possible_cpus() * 2)
+		dev->xdp_features = NETDEV_XDP_ACT_BASIC |
+				    NETDEV_XDP_ACT_REDIRECT |
+				    NETDEV_XDP_ACT_NDO_XMIT;
 
 	dev->vlan_features |= features;
 	netif_set_tso_max_segs(dev, MVPP2_MAX_TSO_SEGS);
 
-	dev->xdp_features = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |
-			    NETDEV_XDP_ACT_NDO_XMIT;
-
 	dev->priv_flags |= IFF_UNICAST_FLT;
 
 	/* MTU range: 68 - 9704 */
-- 
2.39.2


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

* Re: [PATCH net-next 1/8] tools: ynl: fix render-max for flags definition
  2023-03-07 14:53 ` [PATCH net-next 1/8] tools: ynl: fix render-max for flags definition Lorenzo Bianconi
@ 2023-03-08  8:06   ` Jakub Kicinski
  2023-03-08 10:28     ` Lorenzo Bianconi
  0 siblings, 1 reply; 18+ messages in thread
From: Jakub Kicinski @ 2023-03-08  8:06 UTC (permalink / raw)
  To: Lorenzo Bianconi
  Cc: netdev, bpf, davem, edumazet, pabeni, ast, daniel, hawk,
	john.fastabend, saeedm, tariqt, leon, shayagr, akiyano, darinzon,
	sgoutham, lorenzo.bianconi, toke, teknoraver

On Tue,  7 Mar 2023 15:53:58 +0100 Lorenzo Bianconi wrote:
> Properly manage render-max property for flags definition type
> introducing mask value and setting it to (last_element << 1) - 1
> instead of adding max value set to last_element + 1
> 
> Fixes: be5bea1cc0bf ("net: add basic C code generators for Netlink")
> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
> ---
>  tools/net/ynl/ynl-gen-c.py | 11 ++++++++---
>  1 file changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/tools/net/ynl/ynl-gen-c.py b/tools/net/ynl/ynl-gen-c.py
> index 274e9c566f61..f2e41dd962d4 100755
> --- a/tools/net/ynl/ynl-gen-c.py
> +++ b/tools/net/ynl/ynl-gen-c.py
> @@ -1995,9 +1995,14 @@ def render_uapi(family, cw):
>  
>              if const.get('render-max', False):
>                  cw.nl()
> -                max_name = c_upper(name_pfx + 'max')
> -                cw.p('__' + max_name + ',')
> -                cw.p(max_name + ' = (__' + max_name + ' - 1)')
> +                if const['type'] == 'flags':
> +                    max_name = c_upper(name_pfx + 'mask')
> +                    max_val = f' = {(entry.user_value() << 1) - 1},'

Hm, why not use const.get_mask() here? Rather than the last entry?

> +                    cw.p(max_name + max_val)
> +                else:
> +                    max_name = c_upper(name_pfx + 'max')
> +                    cw.p('__' + max_name + ',')
> +                    cw.p(max_name + ' = (__' + max_name + ' - 1)')
>              cw.block_end(line=';')
>              cw.nl()
>          elif const['type'] == 'const':


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

* Re: [PATCH net-next 5/8] net: ena: take into account xdp_features setting tx/rx queues
  2023-03-07 14:54 ` [PATCH net-next 5/8] net: ena: " Lorenzo Bianconi
@ 2023-03-08 10:25   ` Shay Agroskin
  0 siblings, 0 replies; 18+ messages in thread
From: Shay Agroskin @ 2023-03-08 10:25 UTC (permalink / raw)
  To: Lorenzo Bianconi
  Cc: netdev, bpf, davem, edumazet, kuba, pabeni, ast, daniel, hawk,
	john.fastabend, saeedm, tariqt, leon, akiyano, darinzon, sgoutham,
	lorenzo.bianconi, toke, teknoraver


Lorenzo Bianconi <lorenzo@kernel.org> writes:

> ena nic allows xdp just if enough hw queues are available for 
> XDP.
> Take into account queues configuration setting xdp_features.
>
> Fixes: 66c0e13ad236 ("drivers: net: turn on XDP features")
> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
> ---
>  drivers/net/ethernet/amazon/ena/ena_ethtool.c | 15 
>  ++++++++++++---
>  drivers/net/ethernet/amazon/ena/ena_netdev.c  |  6 ++++--
>  2 files changed, 16 insertions(+), 5 deletions(-)
>

For the ENA driver changes and the non-driver changes
Reviewed-by: Shay Agroskin <shayagr@amazon.com>

Thank you for doing that (:

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

* Re: [PATCH net-next 1/8] tools: ynl: fix render-max for flags definition
  2023-03-08  8:06   ` Jakub Kicinski
@ 2023-03-08 10:28     ` Lorenzo Bianconi
  0 siblings, 0 replies; 18+ messages in thread
From: Lorenzo Bianconi @ 2023-03-08 10:28 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: netdev, bpf, davem, edumazet, pabeni, ast, daniel, hawk,
	john.fastabend, saeedm, tariqt, leon, shayagr, akiyano, darinzon,
	sgoutham, lorenzo.bianconi, toke, teknoraver

[-- Attachment #1: Type: text/plain, Size: 1790 bytes --]

> On Tue,  7 Mar 2023 15:53:58 +0100 Lorenzo Bianconi wrote:
> > Properly manage render-max property for flags definition type
> > introducing mask value and setting it to (last_element << 1) - 1
> > instead of adding max value set to last_element + 1
> > 
> > Fixes: be5bea1cc0bf ("net: add basic C code generators for Netlink")
> > Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
> > ---
> >  tools/net/ynl/ynl-gen-c.py | 11 ++++++++---
> >  1 file changed, 8 insertions(+), 3 deletions(-)
> > 
> > diff --git a/tools/net/ynl/ynl-gen-c.py b/tools/net/ynl/ynl-gen-c.py
> > index 274e9c566f61..f2e41dd962d4 100755
> > --- a/tools/net/ynl/ynl-gen-c.py
> > +++ b/tools/net/ynl/ynl-gen-c.py
> > @@ -1995,9 +1995,14 @@ def render_uapi(family, cw):
> >  
> >              if const.get('render-max', False):
> >                  cw.nl()
> > -                max_name = c_upper(name_pfx + 'max')
> > -                cw.p('__' + max_name + ',')
> > -                cw.p(max_name + ' = (__' + max_name + ' - 1)')
> > +                if const['type'] == 'flags':
> > +                    max_name = c_upper(name_pfx + 'mask')
> > +                    max_val = f' = {(entry.user_value() << 1) - 1},'
> 
> Hm, why not use const.get_mask() here? Rather than the last entry?

actually I did this change but it ended up in patch 3/8. I will fix it in v2.

Regards,
Lorenzo

> 
> > +                    cw.p(max_name + max_val)
> > +                else:
> > +                    max_name = c_upper(name_pfx + 'max')
> > +                    cw.p('__' + max_name + ',')
> > +                    cw.p(max_name + ' = (__' + max_name + ' - 1)')
> >              cw.block_end(line=';')
> >              cw.nl()
> >          elif const['type'] == 'const':
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

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

* Re: [PATCH net-next 7/8] net/mlx5e: take into account device reconfiguration for xdp_features flag
  2023-03-07 14:54 ` [PATCH net-next 7/8] net/mlx5e: " Lorenzo Bianconi
@ 2023-03-08 10:33   ` Tariq Toukan
  2023-03-08 15:47     ` Lorenzo Bianconi
  0 siblings, 1 reply; 18+ messages in thread
From: Tariq Toukan @ 2023-03-08 10:33 UTC (permalink / raw)
  To: Lorenzo Bianconi, netdev
  Cc: bpf, davem, edumazet, kuba, pabeni, ast, daniel, hawk,
	john.fastabend, saeedm, leon, shayagr, akiyano, darinzon,
	sgoutham, lorenzo.bianconi, toke, teknoraver



On 07/03/2023 16:54, Lorenzo Bianconi wrote:
> Take into account LRO and GRO configuration setting device xdp_features
> flag. Moreover consider channel rq_wq_type enabling rx scatter-gatter
> support in xdp_features flag.
> 
> Fixes: 66c0e13ad236 ("drivers: net: turn on XDP features")
> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
> ---
>   drivers/net/ethernet/mellanox/mlx5/core/en.h  |  1 +
>   .../ethernet/mellanox/mlx5/core/en_ethtool.c  | 10 ++++-
>   .../net/ethernet/mellanox/mlx5/core/en_main.c | 45 ++++++++++++++++---
>   .../net/ethernet/mellanox/mlx5/core/en_rep.c  |  3 ++
>   4 files changed, 51 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h b/drivers/net/ethernet/mellanox/mlx5/core/en.h
> index 88460b7796e5..4276c6eb6820 100644
> --- a/drivers/net/ethernet/mellanox/mlx5/core/en.h
> +++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h
> @@ -1243,6 +1243,7 @@ void mlx5e_build_nic_params(struct mlx5e_priv *priv, struct mlx5e_xsk *xsk, u16
>   void mlx5e_rx_dim_work(struct work_struct *work);
>   void mlx5e_tx_dim_work(struct work_struct *work);
>   
> +void mlx5e_set_xdp_feature(struct net_device *netdev);
>   netdev_features_t mlx5e_features_check(struct sk_buff *skb,
>   				       struct net_device *netdev,
>   				       netdev_features_t features);
> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
> index 7708acc9b2ab..79fd21ecb9cb 100644
> --- a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
> +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
> @@ -1985,6 +1985,7 @@ static int set_pflag_rx_striding_rq(struct net_device *netdev, bool enable)
>   	struct mlx5e_priv *priv = netdev_priv(netdev);
>   	struct mlx5_core_dev *mdev = priv->mdev;
>   	struct mlx5e_params new_params;
> +	int err;
>   
>   	if (enable) {
>   		/* Checking the regular RQ here; mlx5e_validate_xsk_param called
> @@ -2005,7 +2006,14 @@ static int set_pflag_rx_striding_rq(struct net_device *netdev, bool enable)
>   	MLX5E_SET_PFLAG(&new_params, MLX5E_PFLAG_RX_STRIDING_RQ, enable);
>   	mlx5e_set_rq_type(mdev, &new_params);
>   
> -	return mlx5e_safe_switch_params(priv, &new_params, NULL, NULL, true);
> +	err = mlx5e_safe_switch_params(priv, &new_params, NULL, NULL, true);
> +	if (err)
> +		return err;
> +
> +	/* update XDP supported features */
> +	mlx5e_set_xdp_feature(netdev);
> +
> +	return 0;
>   }
>   
>   static int set_pflag_rx_no_csum_complete(struct net_device *netdev, bool enable)
> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
> index 76a9c5194a70..1b68dd2be2c5 100644
> --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
> +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
> @@ -4004,6 +4004,30 @@ static int mlx5e_handle_feature(struct net_device *netdev,
>   	return 0;
>   }
>   
> +void mlx5e_set_xdp_feature(struct net_device *netdev)
> +{
> +	struct mlx5e_priv *priv = netdev_priv(netdev);
> +	bool ndo_xmit = test_bit(MLX5E_STATE_XDP_ACTIVE, &priv->state);

Our driver doesn't require loading a dummy XDP program to have the 
redirect-in ability. It's always there.

I actually have a bug fix under internal review with Saeed that 
addresses this.

In addition, it cleans up the NETDEV_XDP_ACT_NDO_XMIT_SG as we do not 
support it yet. I have a series that's adding support and will submit it 
soon.

Any reason you're submitting these fixes to net-next rather than net?
Maybe it'd be better if we integrate the patches, here's my fix (still 
under review...):

Author: Tariq Toukan <tariqt@nvidia.com>
Date:   Thu Feb 23 08:58:04 2023 +0200

     net/mlx5e: Fix exposed xdp_features

     Always declare NETDEV_XDP_ACT_NDO_XMIT as the ndo_xdp_xmit callback
     is always functional per our design, and does not require loading
     a dummy xdp program.

     Although non-linear XDP buffer is supported for XDP_TX flow, do not
     declare NETDEV_XDP_ACT_NDO_XMIT_SG as it is yet supported for
     redirected-in frames.

     Fixes: 66c0e13ad236 ("drivers: net: turn on XDP features")
     Signed-off-by: Tariq Toukan <tariqt@nvidia.com>

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c 
b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
index 53feb0529943..9a5d3ce1fbcd 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
@@ -4741,13 +4741,6 @@ static int mlx5e_xdp_set(struct net_device 
*netdev, struct bpf_prog *prog)
         if (old_prog)
                 bpf_prog_put(old_prog);

-       if (reset) {
-               if (prog)
-                       xdp_features_set_redirect_target(netdev, true);
-               else
-                       xdp_features_clear_redirect_target(netdev);
-       }
-
         if (!test_bit(MLX5E_STATE_OPENED, &priv->state) || reset)
                 goto unlock;

@@ -5144,6 +5137,7 @@ static void mlx5e_build_nic_netdev(struct 
net_device *netdev)
         netdev->features         |= NETIF_F_HW_VLAN_STAG_FILTER;

         netdev->xdp_features = NETDEV_XDP_ACT_BASIC | 
NETDEV_XDP_ACT_REDIRECT |
+                              NETDEV_XDP_ACT_NDO_XMIT |
                                NETDEV_XDP_ACT_XSK_ZEROCOPY |
                                NETDEV_XDP_ACT_RX_SG;


> +	struct mlx5e_params *params = &priv->channels.params;
> +	xdp_features_t val;
> +
> +	if (params->packet_merge.type != MLX5E_PACKET_MERGE_NONE) {
> +		xdp_clear_features_flag(netdev);
> +		return;
> +	}
> +
> +	val = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |
> +	      NETDEV_XDP_ACT_XSK_ZEROCOPY;
> +	if (ndo_xmit)
> +		val |= NETDEV_XDP_ACT_NDO_XMIT;
> +	if (params->rq_wq_type == MLX5_WQ_TYPE_CYCLIC) {
> +		val |= NETDEV_XDP_ACT_RX_SG;
> +		if (ndo_xmit)
> +			val |= NETDEV_XDP_ACT_NDO_XMIT_SG;

This NETDEV_XDP_ACT_NDO_XMIT_SG capability is not related to the RQ 
type. It's still not supported at this point.

BTW, I have a series completing all the missing capabilities (multibuf 
on Striding + multibuf redirect-in), should be submitted in this kernel.

> +	}
> +	xdp_set_features_flag(netdev, val);
> +}
> +
>   int mlx5e_set_features(struct net_device *netdev, netdev_features_t features)
>   {
>   	netdev_features_t oper_features = features;
> @@ -4030,6 +4054,9 @@ int mlx5e_set_features(struct net_device *netdev, netdev_features_t features)
>   		return -EINVAL;
>   	}
>   
> +	/* update XDP supported features */
> +	mlx5e_set_xdp_feature(netdev);
> +
>   	return 0;
>   }
>   
> @@ -4762,10 +4789,14 @@ static int mlx5e_xdp_set(struct net_device *netdev, struct bpf_prog *prog)
>   		bpf_prog_put(old_prog);
>   
>   	if (reset) {
> -		if (prog)
> -			xdp_features_set_redirect_target(netdev, true);
> -		else
> +		if (prog) {
> +			bool xmit_sg;
> +
> +			xmit_sg = new_params.rq_wq_type == MLX5_WQ_TYPE_CYCLIC;

Same, not related. Still not supported at this point.

> +			xdp_features_set_redirect_target(netdev, xmit_sg);
> +		} else {
>   			xdp_features_clear_redirect_target(netdev);
> +		}
>   	}
>   
>   	if (!test_bit(MLX5E_STATE_OPENED, &priv->state) || reset)
> @@ -5163,13 +5194,10 @@ static void mlx5e_build_nic_netdev(struct net_device *netdev)
>   	netdev->features         |= NETIF_F_HIGHDMA;
>   	netdev->features         |= NETIF_F_HW_VLAN_STAG_FILTER;
>   
> -	netdev->xdp_features = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |
> -			       NETDEV_XDP_ACT_XSK_ZEROCOPY |
> -			       NETDEV_XDP_ACT_RX_SG;
> -
>   	netdev->priv_flags       |= IFF_UNICAST_FLT;
>   
>   	netif_set_tso_max_size(netdev, GSO_MAX_SIZE);
> +	mlx5e_set_xdp_feature(netdev);
>   	mlx5e_set_netdev_dev_addr(netdev);
>   	mlx5e_macsec_build_netdev(priv);
>   	mlx5e_ipsec_build_netdev(priv);
> @@ -5241,6 +5269,9 @@ static int mlx5e_nic_init(struct mlx5_core_dev *mdev,
>   		mlx5_core_err(mdev, "TLS initialization failed, %d\n", err);
>   
>   	mlx5e_health_create_reporters(priv);
> +	/* update XDP supported features */
> +	mlx5e_set_xdp_feature(netdev);
> +
>   	return 0;
>   }
>   
> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
> index 9b9203443085..43fd12fb87b8 100644
> --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
> +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
> @@ -747,6 +747,9 @@ static void mlx5e_build_rep_params(struct net_device *netdev)
>   	/* RQ */
>   	mlx5e_build_rq_params(mdev, params);
>   
> +	/* update XDP supported features */
> +	mlx5e_set_xdp_feature(netdev);
> +
>   	/* CQ moderation params */
>   	params->rx_dim_enabled = MLX5_CAP_GEN(mdev, cq_moderation);
>   	mlx5e_set_rx_cq_mode_params(params, cq_period_mode);

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

* Re: [PATCH net-next 7/8] net/mlx5e: take into account device reconfiguration for xdp_features flag
  2023-03-08 10:33   ` Tariq Toukan
@ 2023-03-08 15:47     ` Lorenzo Bianconi
  2023-03-09  7:23       ` Tariq Toukan
  0 siblings, 1 reply; 18+ messages in thread
From: Lorenzo Bianconi @ 2023-03-08 15:47 UTC (permalink / raw)
  To: Tariq Toukan
  Cc: Lorenzo Bianconi, netdev, bpf, davem, edumazet, kuba, pabeni, ast,
	daniel, hawk, john.fastabend, saeedm, leon, shayagr, akiyano,
	darinzon, sgoutham, toke, teknoraver

[-- Attachment #1: Type: text/plain, Size: 9672 bytes --]

> 
> 
> On 07/03/2023 16:54, Lorenzo Bianconi wrote:
> > Take into account LRO and GRO configuration setting device xdp_features
> > flag. Moreover consider channel rq_wq_type enabling rx scatter-gatter
> > support in xdp_features flag.
> > 
> > Fixes: 66c0e13ad236 ("drivers: net: turn on XDP features")
> > Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
> > ---
> >   drivers/net/ethernet/mellanox/mlx5/core/en.h  |  1 +
> >   .../ethernet/mellanox/mlx5/core/en_ethtool.c  | 10 ++++-
> >   .../net/ethernet/mellanox/mlx5/core/en_main.c | 45 ++++++++++++++++---
> >   .../net/ethernet/mellanox/mlx5/core/en_rep.c  |  3 ++
> >   4 files changed, 51 insertions(+), 8 deletions(-)
> > 
> > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h b/drivers/net/ethernet/mellanox/mlx5/core/en.h
> > index 88460b7796e5..4276c6eb6820 100644
> > --- a/drivers/net/ethernet/mellanox/mlx5/core/en.h
> > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h
> > @@ -1243,6 +1243,7 @@ void mlx5e_build_nic_params(struct mlx5e_priv *priv, struct mlx5e_xsk *xsk, u16
> >   void mlx5e_rx_dim_work(struct work_struct *work);
> >   void mlx5e_tx_dim_work(struct work_struct *work);
> > +void mlx5e_set_xdp_feature(struct net_device *netdev);
> >   netdev_features_t mlx5e_features_check(struct sk_buff *skb,
> >   				       struct net_device *netdev,
> >   				       netdev_features_t features);
> > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
> > index 7708acc9b2ab..79fd21ecb9cb 100644
> > --- a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
> > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
> > @@ -1985,6 +1985,7 @@ static int set_pflag_rx_striding_rq(struct net_device *netdev, bool enable)
> >   	struct mlx5e_priv *priv = netdev_priv(netdev);
> >   	struct mlx5_core_dev *mdev = priv->mdev;
> >   	struct mlx5e_params new_params;
> > +	int err;
> >   	if (enable) {
> >   		/* Checking the regular RQ here; mlx5e_validate_xsk_param called
> > @@ -2005,7 +2006,14 @@ static int set_pflag_rx_striding_rq(struct net_device *netdev, bool enable)
> >   	MLX5E_SET_PFLAG(&new_params, MLX5E_PFLAG_RX_STRIDING_RQ, enable);
> >   	mlx5e_set_rq_type(mdev, &new_params);
> > -	return mlx5e_safe_switch_params(priv, &new_params, NULL, NULL, true);
> > +	err = mlx5e_safe_switch_params(priv, &new_params, NULL, NULL, true);
> > +	if (err)
> > +		return err;
> > +
> > +	/* update XDP supported features */
> > +	mlx5e_set_xdp_feature(netdev);
> > +
> > +	return 0;
> >   }
> >   static int set_pflag_rx_no_csum_complete(struct net_device *netdev, bool enable)
> > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
> > index 76a9c5194a70..1b68dd2be2c5 100644
> > --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
> > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
> > @@ -4004,6 +4004,30 @@ static int mlx5e_handle_feature(struct net_device *netdev,
> >   	return 0;
> >   }
> > +void mlx5e_set_xdp_feature(struct net_device *netdev)
> > +{
> > +	struct mlx5e_priv *priv = netdev_priv(netdev);
> > +	bool ndo_xmit = test_bit(MLX5E_STATE_XDP_ACTIVE, &priv->state);
> 
> Our driver doesn't require loading a dummy XDP program to have the
> redirect-in ability. It's always there.
> 
> I actually have a bug fix under internal review with Saeed that addresses
> this.
> 
> In addition, it cleans up the NETDEV_XDP_ACT_NDO_XMIT_SG as we do not
> support it yet. I have a series that's adding support and will submit it
> soon.
> 
> Any reason you're submitting these fixes to net-next rather than net?

Hi Tariq,

I am fine to repost this series for net instead of net-next. Any downsides about
it?

> Maybe it'd be better if we integrate the patches, here's my fix (still under
> review...):
> 
> Author: Tariq Toukan <tariqt@nvidia.com>
> Date:   Thu Feb 23 08:58:04 2023 +0200
> 
>     net/mlx5e: Fix exposed xdp_features
> 
>     Always declare NETDEV_XDP_ACT_NDO_XMIT as the ndo_xdp_xmit callback
>     is always functional per our design, and does not require loading
>     a dummy xdp program.
> 
>     Although non-linear XDP buffer is supported for XDP_TX flow, do not
>     declare NETDEV_XDP_ACT_NDO_XMIT_SG as it is yet supported for
>     redirected-in frames.
> 
>     Fixes: 66c0e13ad236 ("drivers: net: turn on XDP features")
>     Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
> 
> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
> b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
> index 53feb0529943..9a5d3ce1fbcd 100644
> --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
> +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
> @@ -4741,13 +4741,6 @@ static int mlx5e_xdp_set(struct net_device *netdev,
> struct bpf_prog *prog)
>         if (old_prog)
>                 bpf_prog_put(old_prog);
> 
> -       if (reset) {
> -               if (prog)
> -                       xdp_features_set_redirect_target(netdev, true);
> -               else
> -                       xdp_features_clear_redirect_target(netdev);
> -       }
> -
>         if (!test_bit(MLX5E_STATE_OPENED, &priv->state) || reset)
>                 goto unlock;
> 
> @@ -5144,6 +5137,7 @@ static void mlx5e_build_nic_netdev(struct net_device
> *netdev)
>         netdev->features         |= NETIF_F_HW_VLAN_STAG_FILTER;
> 
>         netdev->xdp_features = NETDEV_XDP_ACT_BASIC |
> NETDEV_XDP_ACT_REDIRECT |
> +                              NETDEV_XDP_ACT_NDO_XMIT |
>                                NETDEV_XDP_ACT_XSK_ZEROCOPY |
>                                NETDEV_XDP_ACT_RX_SG;

I am fine to drop this my patch and rely on the one you provided but it depends
on the eta about the described patches because otherwise real capabilities and
xdp-features will not be aligned. Any inputs on it?

> 
> 
> > +	struct mlx5e_params *params = &priv->channels.params;
> > +	xdp_features_t val;
> > +
> > +	if (params->packet_merge.type != MLX5E_PACKET_MERGE_NONE) {
> > +		xdp_clear_features_flag(netdev);
> > +		return;
> > +	}
> > +
> > +	val = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |
> > +	      NETDEV_XDP_ACT_XSK_ZEROCOPY;
> > +	if (ndo_xmit)
> > +		val |= NETDEV_XDP_ACT_NDO_XMIT;
> > +	if (params->rq_wq_type == MLX5_WQ_TYPE_CYCLIC) {
> > +		val |= NETDEV_XDP_ACT_RX_SG;
> > +		if (ndo_xmit)
> > +			val |= NETDEV_XDP_ACT_NDO_XMIT_SG;
> 
> This NETDEV_XDP_ACT_NDO_XMIT_SG capability is not related to the RQ type.
> It's still not supported at this point.

ack, I will fix it.

> 
> BTW, I have a series completing all the missing capabilities (multibuf on
> Striding + multibuf redirect-in), should be submitted in this kernel.

cool :)

Regards,
Lorenzo

> 
> > +	}
> > +	xdp_set_features_flag(netdev, val);
> > +}
> > +
> >   int mlx5e_set_features(struct net_device *netdev, netdev_features_t features)
> >   {
> >   	netdev_features_t oper_features = features;
> > @@ -4030,6 +4054,9 @@ int mlx5e_set_features(struct net_device *netdev, netdev_features_t features)
> >   		return -EINVAL;
> >   	}
> > +	/* update XDP supported features */
> > +	mlx5e_set_xdp_feature(netdev);
> > +
> >   	return 0;
> >   }
> > @@ -4762,10 +4789,14 @@ static int mlx5e_xdp_set(struct net_device *netdev, struct bpf_prog *prog)
> >   		bpf_prog_put(old_prog);
> >   	if (reset) {
> > -		if (prog)
> > -			xdp_features_set_redirect_target(netdev, true);
> > -		else
> > +		if (prog) {
> > +			bool xmit_sg;
> > +
> > +			xmit_sg = new_params.rq_wq_type == MLX5_WQ_TYPE_CYCLIC;
> 
> Same, not related. Still not supported at this point.
> 
> > +			xdp_features_set_redirect_target(netdev, xmit_sg);
> > +		} else {
> >   			xdp_features_clear_redirect_target(netdev);
> > +		}
> >   	}
> >   	if (!test_bit(MLX5E_STATE_OPENED, &priv->state) || reset)
> > @@ -5163,13 +5194,10 @@ static void mlx5e_build_nic_netdev(struct net_device *netdev)
> >   	netdev->features         |= NETIF_F_HIGHDMA;
> >   	netdev->features         |= NETIF_F_HW_VLAN_STAG_FILTER;
> > -	netdev->xdp_features = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |
> > -			       NETDEV_XDP_ACT_XSK_ZEROCOPY |
> > -			       NETDEV_XDP_ACT_RX_SG;
> > -
> >   	netdev->priv_flags       |= IFF_UNICAST_FLT;
> >   	netif_set_tso_max_size(netdev, GSO_MAX_SIZE);
> > +	mlx5e_set_xdp_feature(netdev);
> >   	mlx5e_set_netdev_dev_addr(netdev);
> >   	mlx5e_macsec_build_netdev(priv);
> >   	mlx5e_ipsec_build_netdev(priv);
> > @@ -5241,6 +5269,9 @@ static int mlx5e_nic_init(struct mlx5_core_dev *mdev,
> >   		mlx5_core_err(mdev, "TLS initialization failed, %d\n", err);
> >   	mlx5e_health_create_reporters(priv);
> > +	/* update XDP supported features */
> > +	mlx5e_set_xdp_feature(netdev);
> > +
> >   	return 0;
> >   }
> > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
> > index 9b9203443085..43fd12fb87b8 100644
> > --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
> > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
> > @@ -747,6 +747,9 @@ static void mlx5e_build_rep_params(struct net_device *netdev)
> >   	/* RQ */
> >   	mlx5e_build_rq_params(mdev, params);
> > +	/* update XDP supported features */
> > +	mlx5e_set_xdp_feature(netdev);
> > +
> >   	/* CQ moderation params */
> >   	params->rx_dim_enabled = MLX5_CAP_GEN(mdev, cq_moderation);
> >   	mlx5e_set_rx_cq_mode_params(params, cq_period_mode);
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

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

* Re: [PATCH net-next 7/8] net/mlx5e: take into account device reconfiguration for xdp_features flag
  2023-03-08 15:47     ` Lorenzo Bianconi
@ 2023-03-09  7:23       ` Tariq Toukan
  2023-03-09  7:32         ` Jakub Kicinski
  2023-03-09  8:43         ` Lorenzo Bianconi
  0 siblings, 2 replies; 18+ messages in thread
From: Tariq Toukan @ 2023-03-09  7:23 UTC (permalink / raw)
  To: Lorenzo Bianconi
  Cc: Lorenzo Bianconi, netdev, bpf, davem, edumazet, kuba, pabeni, ast,
	daniel, hawk, john.fastabend, saeedm, leon, shayagr, akiyano,
	darinzon, sgoutham, toke, teknoraver, Tariq Toukan



On 08/03/2023 17:47, Lorenzo Bianconi wrote:
>>
>>
>> On 07/03/2023 16:54, Lorenzo Bianconi wrote:
>>> Take into account LRO and GRO configuration setting device xdp_features
>>> flag. Moreover consider channel rq_wq_type enabling rx scatter-gatter
>>> support in xdp_features flag.
>>>
>>> Fixes: 66c0e13ad236 ("drivers: net: turn on XDP features")
>>> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
>>> ---
>>>    drivers/net/ethernet/mellanox/mlx5/core/en.h  |  1 +
>>>    .../ethernet/mellanox/mlx5/core/en_ethtool.c  | 10 ++++-
>>>    .../net/ethernet/mellanox/mlx5/core/en_main.c | 45 ++++++++++++++++---
>>>    .../net/ethernet/mellanox/mlx5/core/en_rep.c  |  3 ++
>>>    4 files changed, 51 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h b/drivers/net/ethernet/mellanox/mlx5/core/en.h
>>> index 88460b7796e5..4276c6eb6820 100644
>>> --- a/drivers/net/ethernet/mellanox/mlx5/core/en.h
>>> +++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h
>>> @@ -1243,6 +1243,7 @@ void mlx5e_build_nic_params(struct mlx5e_priv *priv, struct mlx5e_xsk *xsk, u16
>>>    void mlx5e_rx_dim_work(struct work_struct *work);
>>>    void mlx5e_tx_dim_work(struct work_struct *work);
>>> +void mlx5e_set_xdp_feature(struct net_device *netdev);
>>>    netdev_features_t mlx5e_features_check(struct sk_buff *skb,
>>>    				       struct net_device *netdev,
>>>    				       netdev_features_t features);
>>> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
>>> index 7708acc9b2ab..79fd21ecb9cb 100644
>>> --- a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
>>> +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
>>> @@ -1985,6 +1985,7 @@ static int set_pflag_rx_striding_rq(struct net_device *netdev, bool enable)
>>>    	struct mlx5e_priv *priv = netdev_priv(netdev);
>>>    	struct mlx5_core_dev *mdev = priv->mdev;
>>>    	struct mlx5e_params new_params;
>>> +	int err;
>>>    	if (enable) {
>>>    		/* Checking the regular RQ here; mlx5e_validate_xsk_param called
>>> @@ -2005,7 +2006,14 @@ static int set_pflag_rx_striding_rq(struct net_device *netdev, bool enable)
>>>    	MLX5E_SET_PFLAG(&new_params, MLX5E_PFLAG_RX_STRIDING_RQ, enable);
>>>    	mlx5e_set_rq_type(mdev, &new_params);
>>> -	return mlx5e_safe_switch_params(priv, &new_params, NULL, NULL, true);
>>> +	err = mlx5e_safe_switch_params(priv, &new_params, NULL, NULL, true);
>>> +	if (err)
>>> +		return err;
>>> +
>>> +	/* update XDP supported features */
>>> +	mlx5e_set_xdp_feature(netdev);
>>> +
>>> +	return 0;
>>>    }
>>>    static int set_pflag_rx_no_csum_complete(struct net_device *netdev, bool enable)
>>> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
>>> index 76a9c5194a70..1b68dd2be2c5 100644
>>> --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
>>> +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
>>> @@ -4004,6 +4004,30 @@ static int mlx5e_handle_feature(struct net_device *netdev,
>>>    	return 0;
>>>    }
>>> +void mlx5e_set_xdp_feature(struct net_device *netdev)
>>> +{
>>> +	struct mlx5e_priv *priv = netdev_priv(netdev);
>>> +	bool ndo_xmit = test_bit(MLX5E_STATE_XDP_ACTIVE, &priv->state);
>>
>> Our driver doesn't require loading a dummy XDP program to have the
>> redirect-in ability. It's always there.
>>
>> I actually have a bug fix under internal review with Saeed that addresses
>> this.
>>
>> In addition, it cleans up the NETDEV_XDP_ACT_NDO_XMIT_SG as we do not
>> support it yet. I have a series that's adding support and will submit it
>> soon.
>>
>> Any reason you're submitting these fixes to net-next rather than net?
> 
> Hi Tariq,
> 
> I am fine to repost this series for net instead of net-next. Any downsides about
> it?

Let's repost to net.
It's a fixes series, and 6.3 is still in its RCs.
If you don't post it to net then the xdp-features in 6.3 will be broken.

> 
>> Maybe it'd be better if we integrate the patches, here's my fix (still under
>> review...):
>>
>> Author: Tariq Toukan <tariqt@nvidia.com>
>> Date:   Thu Feb 23 08:58:04 2023 +0200
>>
>>      net/mlx5e: Fix exposed xdp_features
>>
>>      Always declare NETDEV_XDP_ACT_NDO_XMIT as the ndo_xdp_xmit callback
>>      is always functional per our design, and does not require loading
>>      a dummy xdp program.
>>
>>      Although non-linear XDP buffer is supported for XDP_TX flow, do not
>>      declare NETDEV_XDP_ACT_NDO_XMIT_SG as it is yet supported for
>>      redirected-in frames.
>>
>>      Fixes: 66c0e13ad236 ("drivers: net: turn on XDP features")
>>      Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
>>
>> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
>> b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
>> index 53feb0529943..9a5d3ce1fbcd 100644
>> --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
>> +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
>> @@ -4741,13 +4741,6 @@ static int mlx5e_xdp_set(struct net_device *netdev,
>> struct bpf_prog *prog)
>>          if (old_prog)
>>                  bpf_prog_put(old_prog);
>>
>> -       if (reset) {
>> -               if (prog)
>> -                       xdp_features_set_redirect_target(netdev, true);
>> -               else
>> -                       xdp_features_clear_redirect_target(netdev);
>> -       }
>> -
>>          if (!test_bit(MLX5E_STATE_OPENED, &priv->state) || reset)
>>                  goto unlock;
>>
>> @@ -5144,6 +5137,7 @@ static void mlx5e_build_nic_netdev(struct net_device
>> *netdev)
>>          netdev->features         |= NETIF_F_HW_VLAN_STAG_FILTER;
>>
>>          netdev->xdp_features = NETDEV_XDP_ACT_BASIC |
>> NETDEV_XDP_ACT_REDIRECT |
>> +                              NETDEV_XDP_ACT_NDO_XMIT |
>>                                 NETDEV_XDP_ACT_XSK_ZEROCOPY |
>>                                 NETDEV_XDP_ACT_RX_SG;
> 
> I am fine to drop this my patch and rely on the one you provided but it depends
> on the eta about the described patches because otherwise real capabilities and
> xdp-features will not be aligned. Any inputs on it?
> 

My patch doesn't replace yours, as it doesn't fix the missing 
features_update according to striding RQ and HW LRO/GRO.

I think we should combine them, either take mine as-is into your series, 
or squash it into this patch. I'm fine with both.

>>
>>
>>> +	struct mlx5e_params *params = &priv->channels.params;
>>> +	xdp_features_t val;
>>> +
>>> +	if (params->packet_merge.type != MLX5E_PACKET_MERGE_NONE) {
>>> +		xdp_clear_features_flag(netdev);
>>> +		return;
>>> +	}
>>> +
>>> +	val = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |
>>> +	      NETDEV_XDP_ACT_XSK_ZEROCOPY;
>>> +	if (ndo_xmit)
>>> +		val |= NETDEV_XDP_ACT_NDO_XMIT;
>>> +	if (params->rq_wq_type == MLX5_WQ_TYPE_CYCLIC) {
>>> +		val |= NETDEV_XDP_ACT_RX_SG;
>>> +		if (ndo_xmit)
>>> +			val |= NETDEV_XDP_ACT_NDO_XMIT_SG;
>>
>> This NETDEV_XDP_ACT_NDO_XMIT_SG capability is not related to the RQ type.
>> It's still not supported at this point.
> 
> ack, I will fix it.
> 
>>
>> BTW, I have a series completing all the missing capabilities (multibuf on
>> Striding + multibuf redirect-in), should be submitted in this kernel.
> 
> cool :)
> 
> Regards,
> Lorenzo
> 

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

* Re: [PATCH net-next 7/8] net/mlx5e: take into account device reconfiguration for xdp_features flag
  2023-03-09  7:23       ` Tariq Toukan
@ 2023-03-09  7:32         ` Jakub Kicinski
  2023-03-09  8:40           ` Lorenzo Bianconi
  2023-03-09  8:43         ` Lorenzo Bianconi
  1 sibling, 1 reply; 18+ messages in thread
From: Jakub Kicinski @ 2023-03-09  7:32 UTC (permalink / raw)
  To: Tariq Toukan
  Cc: Lorenzo Bianconi, Lorenzo Bianconi, netdev, bpf, davem, edumazet,
	pabeni, ast, daniel, hawk, john.fastabend, saeedm, leon, shayagr,
	akiyano, darinzon, sgoutham, toke, teknoraver, Tariq Toukan

On Thu, 9 Mar 2023 09:23:10 +0200 Tariq Toukan wrote:
> > Hi Tariq,
> > 
> > I am fine to repost this series for net instead of net-next. Any downsides about
> > it?  
> 
> Let's repost to net.
> It's a fixes series, and 6.3 is still in its RCs.
> If you don't post it to net then the xdp-features in 6.3 will be broken.

minor heads up - patch 2 will now apply to lib/nlspec.py
I just moved the enum classes there as part of another fix
but the code and the changes should be identical

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

* Re: [PATCH net-next 7/8] net/mlx5e: take into account device reconfiguration for xdp_features flag
  2023-03-09  7:32         ` Jakub Kicinski
@ 2023-03-09  8:40           ` Lorenzo Bianconi
  0 siblings, 0 replies; 18+ messages in thread
From: Lorenzo Bianconi @ 2023-03-09  8:40 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: Tariq Toukan, Lorenzo Bianconi, netdev, bpf, davem, edumazet,
	pabeni, ast, daniel, hawk, john.fastabend, saeedm, leon, shayagr,
	akiyano, darinzon, sgoutham, toke, teknoraver, Tariq Toukan

[-- Attachment #1: Type: text/plain, Size: 612 bytes --]

> On Thu, 9 Mar 2023 09:23:10 +0200 Tariq Toukan wrote:
> > > Hi Tariq,
> > > 
> > > I am fine to repost this series for net instead of net-next. Any downsides about
> > > it?  
> > 
> > Let's repost to net.
> > It's a fixes series, and 6.3 is still in its RCs.
> > If you don't post it to net then the xdp-features in 6.3 will be broken.
> 
> minor heads up - patch 2 will now apply to lib/nlspec.py
> I just moved the enum classes there as part of another fix
> but the code and the changes should be identical
> 

ack, fine. I will fix the conflicts rebasing on net tree.

Regards,
Lorenzo

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

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

* Re: [PATCH net-next 7/8] net/mlx5e: take into account device reconfiguration for xdp_features flag
  2023-03-09  7:23       ` Tariq Toukan
  2023-03-09  7:32         ` Jakub Kicinski
@ 2023-03-09  8:43         ` Lorenzo Bianconi
  1 sibling, 0 replies; 18+ messages in thread
From: Lorenzo Bianconi @ 2023-03-09  8:43 UTC (permalink / raw)
  To: Tariq Toukan
  Cc: Lorenzo Bianconi, netdev, bpf, davem, edumazet, kuba, pabeni, ast,
	daniel, hawk, john.fastabend, saeedm, leon, shayagr, akiyano,
	darinzon, sgoutham, toke, teknoraver, Tariq Toukan

[-- Attachment #1: Type: text/plain, Size: 8225 bytes --]

> 
> 
> On 08/03/2023 17:47, Lorenzo Bianconi wrote:
> > > 
> > > 
> > > On 07/03/2023 16:54, Lorenzo Bianconi wrote:
> > > > Take into account LRO and GRO configuration setting device xdp_features
> > > > flag. Moreover consider channel rq_wq_type enabling rx scatter-gatter
> > > > support in xdp_features flag.
> > > > 
> > > > Fixes: 66c0e13ad236 ("drivers: net: turn on XDP features")
> > > > Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
> > > > ---
> > > >    drivers/net/ethernet/mellanox/mlx5/core/en.h  |  1 +
> > > >    .../ethernet/mellanox/mlx5/core/en_ethtool.c  | 10 ++++-
> > > >    .../net/ethernet/mellanox/mlx5/core/en_main.c | 45 ++++++++++++++++---
> > > >    .../net/ethernet/mellanox/mlx5/core/en_rep.c  |  3 ++
> > > >    4 files changed, 51 insertions(+), 8 deletions(-)
> > > > 
> > > > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h b/drivers/net/ethernet/mellanox/mlx5/core/en.h
> > > > index 88460b7796e5..4276c6eb6820 100644
> > > > --- a/drivers/net/ethernet/mellanox/mlx5/core/en.h
> > > > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h
> > > > @@ -1243,6 +1243,7 @@ void mlx5e_build_nic_params(struct mlx5e_priv *priv, struct mlx5e_xsk *xsk, u16
> > > >    void mlx5e_rx_dim_work(struct work_struct *work);
> > > >    void mlx5e_tx_dim_work(struct work_struct *work);
> > > > +void mlx5e_set_xdp_feature(struct net_device *netdev);
> > > >    netdev_features_t mlx5e_features_check(struct sk_buff *skb,
> > > >    				       struct net_device *netdev,
> > > >    				       netdev_features_t features);
> > > > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
> > > > index 7708acc9b2ab..79fd21ecb9cb 100644
> > > > --- a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
> > > > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
> > > > @@ -1985,6 +1985,7 @@ static int set_pflag_rx_striding_rq(struct net_device *netdev, bool enable)
> > > >    	struct mlx5e_priv *priv = netdev_priv(netdev);
> > > >    	struct mlx5_core_dev *mdev = priv->mdev;
> > > >    	struct mlx5e_params new_params;
> > > > +	int err;
> > > >    	if (enable) {
> > > >    		/* Checking the regular RQ here; mlx5e_validate_xsk_param called
> > > > @@ -2005,7 +2006,14 @@ static int set_pflag_rx_striding_rq(struct net_device *netdev, bool enable)
> > > >    	MLX5E_SET_PFLAG(&new_params, MLX5E_PFLAG_RX_STRIDING_RQ, enable);
> > > >    	mlx5e_set_rq_type(mdev, &new_params);
> > > > -	return mlx5e_safe_switch_params(priv, &new_params, NULL, NULL, true);
> > > > +	err = mlx5e_safe_switch_params(priv, &new_params, NULL, NULL, true);
> > > > +	if (err)
> > > > +		return err;
> > > > +
> > > > +	/* update XDP supported features */
> > > > +	mlx5e_set_xdp_feature(netdev);
> > > > +
> > > > +	return 0;
> > > >    }
> > > >    static int set_pflag_rx_no_csum_complete(struct net_device *netdev, bool enable)
> > > > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
> > > > index 76a9c5194a70..1b68dd2be2c5 100644
> > > > --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
> > > > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
> > > > @@ -4004,6 +4004,30 @@ static int mlx5e_handle_feature(struct net_device *netdev,
> > > >    	return 0;
> > > >    }
> > > > +void mlx5e_set_xdp_feature(struct net_device *netdev)
> > > > +{
> > > > +	struct mlx5e_priv *priv = netdev_priv(netdev);
> > > > +	bool ndo_xmit = test_bit(MLX5E_STATE_XDP_ACTIVE, &priv->state);
> > > 
> > > Our driver doesn't require loading a dummy XDP program to have the
> > > redirect-in ability. It's always there.
> > > 
> > > I actually have a bug fix under internal review with Saeed that addresses
> > > this.
> > > 
> > > In addition, it cleans up the NETDEV_XDP_ACT_NDO_XMIT_SG as we do not
> > > support it yet. I have a series that's adding support and will submit it
> > > soon.
> > > 
> > > Any reason you're submitting these fixes to net-next rather than net?
> > 
> > Hi Tariq,
> > 
> > I am fine to repost this series for net instead of net-next. Any downsides about
> > it?
> 
> Let's repost to net.
> It's a fixes series, and 6.3 is still in its RCs.
> If you don't post it to net then the xdp-features in 6.3 will be broken.

ack, fine.

> 
> > 
> > > Maybe it'd be better if we integrate the patches, here's my fix (still under
> > > review...):
> > > 
> > > Author: Tariq Toukan <tariqt@nvidia.com>
> > > Date:   Thu Feb 23 08:58:04 2023 +0200
> > > 
> > >      net/mlx5e: Fix exposed xdp_features
> > > 
> > >      Always declare NETDEV_XDP_ACT_NDO_XMIT as the ndo_xdp_xmit callback
> > >      is always functional per our design, and does not require loading
> > >      a dummy xdp program.
> > > 
> > >      Although non-linear XDP buffer is supported for XDP_TX flow, do not
> > >      declare NETDEV_XDP_ACT_NDO_XMIT_SG as it is yet supported for
> > >      redirected-in frames.
> > > 
> > >      Fixes: 66c0e13ad236 ("drivers: net: turn on XDP features")
> > >      Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
> > > 
> > > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
> > > b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
> > > index 53feb0529943..9a5d3ce1fbcd 100644
> > > --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
> > > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
> > > @@ -4741,13 +4741,6 @@ static int mlx5e_xdp_set(struct net_device *netdev,
> > > struct bpf_prog *prog)
> > >          if (old_prog)
> > >                  bpf_prog_put(old_prog);
> > > 
> > > -       if (reset) {
> > > -               if (prog)
> > > -                       xdp_features_set_redirect_target(netdev, true);
> > > -               else
> > > -                       xdp_features_clear_redirect_target(netdev);
> > > -       }
> > > -
> > >          if (!test_bit(MLX5E_STATE_OPENED, &priv->state) || reset)
> > >                  goto unlock;
> > > 
> > > @@ -5144,6 +5137,7 @@ static void mlx5e_build_nic_netdev(struct net_device
> > > *netdev)
> > >          netdev->features         |= NETIF_F_HW_VLAN_STAG_FILTER;
> > > 
> > >          netdev->xdp_features = NETDEV_XDP_ACT_BASIC |
> > > NETDEV_XDP_ACT_REDIRECT |
> > > +                              NETDEV_XDP_ACT_NDO_XMIT |
> > >                                 NETDEV_XDP_ACT_XSK_ZEROCOPY |
> > >                                 NETDEV_XDP_ACT_RX_SG;
> > 
> > I am fine to drop this my patch and rely on the one you provided but it depends
> > on the eta about the described patches because otherwise real capabilities and
> > xdp-features will not be aligned. Any inputs on it?
> > 
> 
> My patch doesn't replace yours, as it doesn't fix the missing
> features_update according to striding RQ and HW LRO/GRO.
> 
> I think we should combine them, either take mine as-is into your series, or
> squash it into this patch. I'm fine with both.

ack fine, I will squash your changes into the patch posting a new version, thx.

Regards,
Lorenzo

> 
> > > 
> > > 
> > > > +	struct mlx5e_params *params = &priv->channels.params;
> > > > +	xdp_features_t val;
> > > > +
> > > > +	if (params->packet_merge.type != MLX5E_PACKET_MERGE_NONE) {
> > > > +		xdp_clear_features_flag(netdev);
> > > > +		return;
> > > > +	}
> > > > +
> > > > +	val = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |
> > > > +	      NETDEV_XDP_ACT_XSK_ZEROCOPY;
> > > > +	if (ndo_xmit)
> > > > +		val |= NETDEV_XDP_ACT_NDO_XMIT;
> > > > +	if (params->rq_wq_type == MLX5_WQ_TYPE_CYCLIC) {
> > > > +		val |= NETDEV_XDP_ACT_RX_SG;
> > > > +		if (ndo_xmit)
> > > > +			val |= NETDEV_XDP_ACT_NDO_XMIT_SG;
> > > 
> > > This NETDEV_XDP_ACT_NDO_XMIT_SG capability is not related to the RQ type.
> > > It's still not supported at this point.
> > 
> > ack, I will fix it.
> > 
> > > 
> > > BTW, I have a series completing all the missing capabilities (multibuf on
> > > Striding + multibuf redirect-in), should be submitted in this kernel.
> > 
> > cool :)
> > 
> > Regards,
> > Lorenzo
> > 
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

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

end of thread, other threads:[~2023-03-09  8:45 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-07 14:53 [PATCH net-next 0/8] update xdp_features flag according to NIC re-configuration Lorenzo Bianconi
2023-03-07 14:53 ` [PATCH net-next 1/8] tools: ynl: fix render-max for flags definition Lorenzo Bianconi
2023-03-08  8:06   ` Jakub Kicinski
2023-03-08 10:28     ` Lorenzo Bianconi
2023-03-07 14:53 ` [PATCH net-next 2/8] tools: ynl: fix get_mask utility routine Lorenzo Bianconi
2023-03-07 14:54 ` [PATCH net-next 3/8] xdp: add xdp_set_features_flag " Lorenzo Bianconi
2023-03-07 14:54 ` [PATCH net-next 4/8] net: thunderx: take into account xdp_features setting tx/rx queues Lorenzo Bianconi
2023-03-07 14:54 ` [PATCH net-next 5/8] net: ena: " Lorenzo Bianconi
2023-03-08 10:25   ` Shay Agroskin
2023-03-07 14:54 ` [PATCH net-next 6/8] veth: take into account device reconfiguration for xdp_features flag Lorenzo Bianconi
2023-03-07 14:54 ` [PATCH net-next 7/8] net/mlx5e: " Lorenzo Bianconi
2023-03-08 10:33   ` Tariq Toukan
2023-03-08 15:47     ` Lorenzo Bianconi
2023-03-09  7:23       ` Tariq Toukan
2023-03-09  7:32         ` Jakub Kicinski
2023-03-09  8:40           ` Lorenzo Bianconi
2023-03-09  8:43         ` Lorenzo Bianconi
2023-03-07 14:54 ` [PATCH net-next 8/8] mvpp2: take care of xdp_features when reconfiguring queues Lorenzo Bianconi

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).