* [PATCH 03/12] net/txgbe: fix reserved extra FDIR headroom
[not found] <20250606080117.183198-1-jiawenwu@trustnetic.com>
@ 2025-06-06 8:01 ` Jiawen Wu
2025-06-06 8:01 ` [PATCH 06/12] net/txgbe: fix MAC control frame forwarding Jiawen Wu
` (6 subsequent siblings)
7 siblings, 0 replies; 8+ messages in thread
From: Jiawen Wu @ 2025-06-06 8:01 UTC (permalink / raw)
To: dev; +Cc: zaiyuwang, Jiawen Wu, stable
Remove redundant 256KB FDIR headroom reservation. FDIR headroom was
already allocated in txgbe_fdir_configure() when FDIR is enabled, the
second reservation resulted in 256KB less available RX packet buffer than
the theoretical size.
Fixes: 8bdc7882f376 ("net/txgbe: support DCB")
Cc: stable@dpdk.org
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/base/txgbe_hw.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/net/txgbe/base/txgbe_hw.c b/drivers/net/txgbe/base/txgbe_hw.c
index ae2ad87c83..76b9ee3c0a 100644
--- a/drivers/net/txgbe/base/txgbe_hw.c
+++ b/drivers/net/txgbe/base/txgbe_hw.c
@@ -2106,9 +2106,7 @@ void txgbe_set_pba(struct txgbe_hw *hw, int num_pb, u32 headroom,
u32 rxpktsize, txpktsize, txpbthresh;
UNREFERENCED_PARAMETER(hw);
-
- /* Reserve headroom */
- pbsize -= headroom;
+ UNREFERENCED_PARAMETER(headroom);
if (!num_pb)
num_pb = 1;
--
2.48.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 06/12] net/txgbe: fix MAC control frame forwarding
[not found] <20250606080117.183198-1-jiawenwu@trustnetic.com>
2025-06-06 8:01 ` [PATCH 03/12] net/txgbe: fix reserved extra FDIR headroom Jiawen Wu
@ 2025-06-06 8:01 ` Jiawen Wu
2025-06-06 8:01 ` [PATCH 07/12] net/ngbe: " Jiawen Wu
` (5 subsequent siblings)
7 siblings, 0 replies; 8+ messages in thread
From: Jiawen Wu @ 2025-06-06 8:01 UTC (permalink / raw)
To: dev; +Cc: zaiyuwang, Jiawen Wu, stable
Test Failure on the case "test_pause_fwd_port_stop_start", which expect
MAC control frame forwarding setting still working after port stop/start.
Fix the bug to pass the test case.
Fixes: 69ce8c8a4ce3 ("net/txgbe: support flow control")
Cc: stable@dpdk.org
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/base/txgbe_hw.c | 9 +++++++++
drivers/net/txgbe/base/txgbe_type.h | 1 +
drivers/net/txgbe/txgbe_ethdev.c | 1 +
3 files changed, 11 insertions(+)
diff --git a/drivers/net/txgbe/base/txgbe_hw.c b/drivers/net/txgbe/base/txgbe_hw.c
index 76b9ee3c0a..42cd0e0e2c 100644
--- a/drivers/net/txgbe/base/txgbe_hw.c
+++ b/drivers/net/txgbe/base/txgbe_hw.c
@@ -226,6 +226,15 @@ s32 txgbe_setup_fc(struct txgbe_hw *hw)
TXGBE_MD_DEV_AUTO_NEG, reg_cu);
}
+ /*
+ * Reconfig mac ctrl frame fwd rule to make sure it still
+ * working after port stop/start.
+ */
+ wr32m(hw, TXGBE_MACRXFLT, TXGBE_MACRXFLT_CTL_MASK,
+ (hw->fc.mac_ctrl_frame_fwd ?
+ TXGBE_MACRXFLT_CTL_NOPS : TXGBE_MACRXFLT_CTL_DROP));
+ txgbe_flush(hw);
+
DEBUGOUT("Set up FC; reg = 0x%08X", reg);
out:
return err;
diff --git a/drivers/net/txgbe/base/txgbe_type.h b/drivers/net/txgbe/base/txgbe_type.h
index 383438ea3c..65527a22e7 100644
--- a/drivers/net/txgbe/base/txgbe_type.h
+++ b/drivers/net/txgbe/base/txgbe_type.h
@@ -299,6 +299,7 @@ struct txgbe_fc_info {
u32 high_water[TXGBE_DCB_TC_MAX]; /* Flow Ctrl High-water */
u32 low_water[TXGBE_DCB_TC_MAX]; /* Flow Ctrl Low-water */
u16 pause_time; /* Flow Control Pause timer */
+ u8 mac_ctrl_frame_fwd; /* Forward MAC control frames */
bool send_xon; /* Flow control send XON */
bool strict_ieee; /* Strict IEEE mode */
bool disable_fc_autoneg; /* Do not autonegotiate FC */
diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c
index e5736bf387..b68a0557be 100644
--- a/drivers/net/txgbe/txgbe_ethdev.c
+++ b/drivers/net/txgbe/txgbe_ethdev.c
@@ -3586,6 +3586,7 @@ txgbe_flow_ctrl_set(struct rte_eth_dev *dev, struct rte_eth_fc_conf *fc_conf)
hw->fc.low_water[0] = fc_conf->low_water;
hw->fc.send_xon = fc_conf->send_xon;
hw->fc.disable_fc_autoneg = !fc_conf->autoneg;
+ hw->fc.mac_ctrl_frame_fwd = fc_conf->mac_ctrl_frame_fwd;
err = txgbe_fc_enable(hw);
--
2.48.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 07/12] net/ngbe: fix MAC control frame forwarding
[not found] <20250606080117.183198-1-jiawenwu@trustnetic.com>
2025-06-06 8:01 ` [PATCH 03/12] net/txgbe: fix reserved extra FDIR headroom Jiawen Wu
2025-06-06 8:01 ` [PATCH 06/12] net/txgbe: fix MAC control frame forwarding Jiawen Wu
@ 2025-06-06 8:01 ` Jiawen Wu
2025-06-06 8:01 ` [PATCH 08/12] net/txgbe: fix incorrect device statistics Jiawen Wu
` (4 subsequent siblings)
7 siblings, 0 replies; 8+ messages in thread
From: Jiawen Wu @ 2025-06-06 8:01 UTC (permalink / raw)
To: dev; +Cc: zaiyuwang, Jiawen Wu, stable
Test failure on the case "test_pause_fwd_port_stop_start", which expect
MAC control frame forwarding setting still working after port stop/start.
Fix the bug to pass the test case.
Fixes: f40e9f0e2278 ("net/ngbe: support flow control")
Cc: stable@dpdk.org
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/ngbe/base/ngbe_hw.c | 9 +++++++++
drivers/net/ngbe/base/ngbe_type.h | 1 +
drivers/net/ngbe/ngbe_ethdev.c | 1 +
3 files changed, 11 insertions(+)
diff --git a/drivers/net/ngbe/base/ngbe_hw.c b/drivers/net/ngbe/base/ngbe_hw.c
index 6688ae6a31..bf09f8a817 100644
--- a/drivers/net/ngbe/base/ngbe_hw.c
+++ b/drivers/net/ngbe/base/ngbe_hw.c
@@ -865,6 +865,15 @@ s32 ngbe_setup_fc_em(struct ngbe_hw *hw)
goto out;
}
+ /*
+ * Reconfig mac ctrl frame fwd rule to make sure it still
+ * working after port stop/start.
+ */
+ wr32m(hw, NGBE_MACRXFLT, NGBE_MACRXFLT_CTL_MASK,
+ (hw->fc.mac_ctrl_frame_fwd ?
+ NGBE_MACRXFLT_CTL_NOPS : NGBE_MACRXFLT_CTL_DROP));
+ ngbe_flush(hw);
+
err = hw->phy.set_pause_adv(hw, reg_cu);
out:
diff --git a/drivers/net/ngbe/base/ngbe_type.h b/drivers/net/ngbe/base/ngbe_type.h
index 7a3b52ffd4..fc571c7457 100644
--- a/drivers/net/ngbe/base/ngbe_type.h
+++ b/drivers/net/ngbe/base/ngbe_type.h
@@ -112,6 +112,7 @@ struct ngbe_fc_info {
u32 high_water; /* Flow Ctrl High-water */
u32 low_water; /* Flow Ctrl Low-water */
u16 pause_time; /* Flow Control Pause timer */
+ u8 mac_ctrl_frame_fwd; /* Forward MAC control frames */
bool send_xon; /* Flow control send XON */
bool strict_ieee; /* Strict IEEE mode */
bool disable_fc_autoneg; /* Do not autonegotiate FC */
diff --git a/drivers/net/ngbe/ngbe_ethdev.c b/drivers/net/ngbe/ngbe_ethdev.c
index 08e87471f6..a8f847de8d 100644
--- a/drivers/net/ngbe/ngbe_ethdev.c
+++ b/drivers/net/ngbe/ngbe_ethdev.c
@@ -2420,6 +2420,7 @@ ngbe_flow_ctrl_set(struct rte_eth_dev *dev, struct rte_eth_fc_conf *fc_conf)
hw->fc.low_water = fc_conf->low_water;
hw->fc.send_xon = fc_conf->send_xon;
hw->fc.disable_fc_autoneg = !fc_conf->autoneg;
+ hw->fc.mac_ctrl_frame_fwd = fc_conf->mac_ctrl_frame_fwd;
err = hw->mac.fc_enable(hw);
--
2.48.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 08/12] net/txgbe: fix incorrect device statistics
[not found] <20250606080117.183198-1-jiawenwu@trustnetic.com>
` (2 preceding siblings ...)
2025-06-06 8:01 ` [PATCH 07/12] net/ngbe: " Jiawen Wu
@ 2025-06-06 8:01 ` Jiawen Wu
2025-06-06 8:01 ` [PATCH 09/12] net/ngbe: " Jiawen Wu
` (3 subsequent siblings)
7 siblings, 0 replies; 8+ messages in thread
From: Jiawen Wu @ 2025-06-06 8:01 UTC (permalink / raw)
To: dev; +Cc: zaiyuwang, Jiawen Wu, stable
The extend statistic "rx_undersize_errors" is incorrectly read as the
counter of frames received with a length error, which names
"rx_length_error". And "rx_undersize_errors" is the counter of
shorter-than-64B frames received without any errors.
In addition, "tx_broadcast_packets" should use rd64() to get the full
count on the low and high registers.
Fixes: c9bb590d4295 ("net/txgbe: support device statistics")
Cc: stable@dpdk.org
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_ethdev.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c
index b68a0557be..580579094b 100644
--- a/drivers/net/txgbe/txgbe_ethdev.c
+++ b/drivers/net/txgbe/txgbe_ethdev.c
@@ -2250,7 +2250,7 @@ txgbe_read_stats_registers(struct txgbe_hw *hw,
hw_stats->rx_total_bytes += rd64(hw, TXGBE_MACRXGBOCTL);
hw_stats->rx_broadcast_packets += rd64(hw, TXGBE_MACRXOCTL);
- hw_stats->tx_broadcast_packets += rd32(hw, TXGBE_MACTXOCTL);
+ hw_stats->tx_broadcast_packets += rd64(hw, TXGBE_MACTXOCTL);
hw_stats->rx_size_64_packets += rd64(hw, TXGBE_MACRX1TO64L);
hw_stats->rx_size_65_to_127_packets += rd64(hw, TXGBE_MACRX65TO127L);
@@ -2269,7 +2269,8 @@ txgbe_read_stats_registers(struct txgbe_hw *hw,
hw_stats->tx_size_1024_to_max_packets +=
rd64(hw, TXGBE_MACTX1024TOMAXL);
- hw_stats->rx_undersize_errors += rd64(hw, TXGBE_MACRXERRLENL);
+ hw_stats->rx_length_errors += rd64(hw, TXGBE_MACRXERRLENL);
+ hw_stats->rx_undersize_errors += rd32(hw, TXGBE_MACRXUNDERSIZE);
hw_stats->rx_oversize_cnt += rd32(hw, TXGBE_MACRXOVERSIZE);
hw_stats->rx_jabber_errors += rd32(hw, TXGBE_MACRXJABBER);
--
2.48.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 09/12] net/ngbe: fix incorrect device statistics
[not found] <20250606080117.183198-1-jiawenwu@trustnetic.com>
` (3 preceding siblings ...)
2025-06-06 8:01 ` [PATCH 08/12] net/txgbe: fix incorrect device statistics Jiawen Wu
@ 2025-06-06 8:01 ` Jiawen Wu
2025-06-06 8:01 ` [PATCH 10/12] net/txgbe: restrict VLAN strip configuration on VF Jiawen Wu
` (2 subsequent siblings)
7 siblings, 0 replies; 8+ messages in thread
From: Jiawen Wu @ 2025-06-06 8:01 UTC (permalink / raw)
To: dev; +Cc: zaiyuwang, Jiawen Wu, stable
The extend statistic "rx_undersize_errors" is incorrectly read as the
counter of frames received with a length error, which names
"rx_length_error". And "rx_undersize_errors" is the counter of
shorter-than-64B frames received without any errors.
In addition, "tx_broadcast_packets" should use rd64() to get the full
count on the low and high registers.
Fixes: fdb1e851975a ("net/ngbe: support basic statistics")
Cc: stable@dpdk.org
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/ngbe/ngbe_ethdev.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ngbe/ngbe_ethdev.c b/drivers/net/ngbe/ngbe_ethdev.c
index a8f847de8d..d3ac40299f 100644
--- a/drivers/net/ngbe/ngbe_ethdev.c
+++ b/drivers/net/ngbe/ngbe_ethdev.c
@@ -1429,7 +1429,7 @@ ngbe_read_stats_registers(struct ngbe_hw *hw,
hw_stats->rx_total_bytes += rd64(hw, NGBE_MACRXGBOCTL);
hw_stats->rx_broadcast_packets += rd64(hw, NGBE_MACRXOCTL);
- hw_stats->tx_broadcast_packets += rd32(hw, NGBE_MACTXOCTL);
+ hw_stats->tx_broadcast_packets += rd64(hw, NGBE_MACTXOCTL);
hw_stats->rx_size_64_packets += rd64(hw, NGBE_MACRX1TO64L);
hw_stats->rx_size_65_to_127_packets += rd64(hw, NGBE_MACRX65TO127L);
@@ -1448,7 +1448,8 @@ ngbe_read_stats_registers(struct ngbe_hw *hw,
hw_stats->tx_size_1024_to_max_packets +=
rd64(hw, NGBE_MACTX1024TOMAXL);
- hw_stats->rx_undersize_errors += rd64(hw, NGBE_MACRXERRLENL);
+ hw_stats->rx_length_errors += rd64(hw, NGBE_MACRXERRLENL);
+ hw_stats->rx_undersize_errors += rd32(hw, NGBE_MACRXUNDERSIZE);
hw_stats->rx_oversize_cnt += rd32(hw, NGBE_MACRXOVERSIZE);
hw_stats->rx_jabber_errors += rd32(hw, NGBE_MACRXJABBER);
--
2.48.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 10/12] net/txgbe: restrict VLAN strip configuration on VF
[not found] <20250606080117.183198-1-jiawenwu@trustnetic.com>
` (4 preceding siblings ...)
2025-06-06 8:01 ` [PATCH 09/12] net/ngbe: " Jiawen Wu
@ 2025-06-06 8:01 ` Jiawen Wu
2025-06-06 8:01 ` [PATCH 11/12] net/ngbe: " Jiawen Wu
2025-06-06 8:01 ` [PATCH 12/12] net/txgbe: add missing LRO flag in mbuf when LRO enabled Jiawen Wu
7 siblings, 0 replies; 8+ messages in thread
From: Jiawen Wu @ 2025-06-06 8:01 UTC (permalink / raw)
To: dev; +Cc: zaiyuwang, Jiawen Wu, stable
Fix the same issue as PF in commit 66364efcf958 ("net/txgbe: restrict
configuration of VLAN strip offload").
There is a hardware limitation that Rx ring config register is not
writable when Rx ring is enabled, i.e. the TXGBE_RXCFG_ENA bit is set.
But disabling the ring when there is traffic will cause ring get stuck.
So restrict the configuration of VLAN strip offload only if device is
started.
Fixes: aa1ae7941e71 ("net/txgbe: support VF VLAN")
Cc: stable@dpdk.org
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_ethdev_vf.c | 31 +++++++++++++++++++++--------
1 file changed, 23 insertions(+), 8 deletions(-)
diff --git a/drivers/net/txgbe/txgbe_ethdev_vf.c b/drivers/net/txgbe/txgbe_ethdev_vf.c
index c0d8aa15b2..847febf8c3 100644
--- a/drivers/net/txgbe/txgbe_ethdev_vf.c
+++ b/drivers/net/txgbe/txgbe_ethdev_vf.c
@@ -935,7 +935,7 @@ txgbevf_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on)
}
static void
-txgbevf_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on)
+txgbevf_vlan_strip_q_set(struct rte_eth_dev *dev, uint16_t queue, int on)
{
struct txgbe_hw *hw = TXGBE_DEV_HW(dev);
uint32_t ctrl;
@@ -946,20 +946,28 @@ txgbevf_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on)
return;
ctrl = rd32(hw, TXGBE_RXCFG(queue));
- txgbe_dev_save_rx_queue(hw, queue);
if (on)
ctrl |= TXGBE_RXCFG_VLAN;
else
ctrl &= ~TXGBE_RXCFG_VLAN;
- wr32(hw, TXGBE_RXCFG(queue), 0);
- msec_delay(100);
- txgbe_dev_store_rx_queue(hw, queue);
- wr32m(hw, TXGBE_RXCFG(queue),
- TXGBE_RXCFG_VLAN | TXGBE_RXCFG_ENA, ctrl);
+ wr32(hw, TXGBE_RXCFG(queue), ctrl);
txgbe_vlan_hw_strip_bitmap_set(dev, queue, on);
}
+static void
+txgbevf_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on)
+{
+ struct txgbe_hw *hw = TXGBE_DEV_HW(dev);
+
+ if (!hw->adapter_stopped) {
+ PMD_DRV_LOG(ERR, "Please stop port first");
+ return;
+ }
+
+ txgbevf_vlan_strip_q_set(dev, queue, on);
+}
+
static int
txgbevf_vlan_offload_config(struct rte_eth_dev *dev, int mask)
{
@@ -972,7 +980,7 @@ txgbevf_vlan_offload_config(struct rte_eth_dev *dev, int mask)
for (i = 0; i < dev->data->nb_rx_queues; i++) {
rxq = dev->data->rx_queues[i];
on = !!(rxq->offloads & RTE_ETH_RX_OFFLOAD_VLAN_STRIP);
- txgbevf_vlan_strip_queue_set(dev, i, on);
+ txgbevf_vlan_strip_q_set(dev, i, on);
}
}
@@ -982,6 +990,13 @@ txgbevf_vlan_offload_config(struct rte_eth_dev *dev, int mask)
static int
txgbevf_vlan_offload_set(struct rte_eth_dev *dev, int mask)
{
+ struct txgbe_hw *hw = TXGBE_DEV_HW(dev);
+
+ if (!hw->adapter_stopped && (mask & RTE_ETH_VLAN_STRIP_MASK)) {
+ PMD_DRV_LOG(ERR, "Please stop port first");
+ return -EPERM;
+ }
+
txgbe_config_vlan_strip_on_all_queues(dev, mask);
txgbevf_vlan_offload_config(dev, mask);
--
2.48.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 11/12] net/ngbe: restrict VLAN strip configuration on VF
[not found] <20250606080117.183198-1-jiawenwu@trustnetic.com>
` (5 preceding siblings ...)
2025-06-06 8:01 ` [PATCH 10/12] net/txgbe: restrict VLAN strip configuration on VF Jiawen Wu
@ 2025-06-06 8:01 ` Jiawen Wu
2025-06-06 8:01 ` [PATCH 12/12] net/txgbe: add missing LRO flag in mbuf when LRO enabled Jiawen Wu
7 siblings, 0 replies; 8+ messages in thread
From: Jiawen Wu @ 2025-06-06 8:01 UTC (permalink / raw)
To: dev; +Cc: zaiyuwang, Jiawen Wu, stable
Fix the same issue as PF in commit baca8ec066dc ("net/ngbe: restrict
configuration of VLAN strip offload").
There is a hardware limitation that Rx ring config register is not
writable when Rx ring is enabled, i.e. the TXGBE_RXCFG_ENA bit is set.
But disabling the ring when there is traffic will cause ring get stuck.
So restrict the configuration of VLAN strip offload only if device is
started.
Fixes: f47dc03c706f ("net/ngbe: add VLAN ops for VF device")
Cc: stable@dpdk.org
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/ngbe/ngbe_ethdev_vf.c | 24 ++++++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ngbe/ngbe_ethdev_vf.c b/drivers/net/ngbe/ngbe_ethdev_vf.c
index 5d68f1602d..846bc981f6 100644
--- a/drivers/net/ngbe/ngbe_ethdev_vf.c
+++ b/drivers/net/ngbe/ngbe_ethdev_vf.c
@@ -828,7 +828,7 @@ ngbevf_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on)
}
static void
-ngbevf_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on)
+ngbevf_vlan_strip_q_set(struct rte_eth_dev *dev, uint16_t queue, int on)
{
struct ngbe_hw *hw = ngbe_dev_hw(dev);
uint32_t ctrl;
@@ -848,6 +848,19 @@ ngbevf_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on)
ngbe_vlan_hw_strip_bitmap_set(dev, queue, on);
}
+static void
+ngbevf_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on)
+{
+ struct ngbe_hw *hw = ngbe_dev_hw(dev);
+
+ if (!hw->adapter_stopped) {
+ PMD_DRV_LOG(ERR, "Please stop port first");
+ return;
+ }
+
+ ngbevf_vlan_strip_q_set(dev, queue, on);
+}
+
static int
ngbevf_vlan_offload_config(struct rte_eth_dev *dev, int mask)
{
@@ -860,7 +873,7 @@ ngbevf_vlan_offload_config(struct rte_eth_dev *dev, int mask)
for (i = 0; i < dev->data->nb_rx_queues; i++) {
rxq = dev->data->rx_queues[i];
on = !!(rxq->offloads & RTE_ETH_RX_OFFLOAD_VLAN_STRIP);
- ngbevf_vlan_strip_queue_set(dev, i, on);
+ ngbevf_vlan_strip_q_set(dev, i, on);
}
}
@@ -870,6 +883,13 @@ ngbevf_vlan_offload_config(struct rte_eth_dev *dev, int mask)
static int
ngbevf_vlan_offload_set(struct rte_eth_dev *dev, int mask)
{
+ struct ngbe_hw *hw = ngbe_dev_hw(dev);
+
+ if (!hw->adapter_stopped && (mask & RTE_ETH_VLAN_STRIP_MASK)) {
+ PMD_DRV_LOG(ERR, "Please stop port first");
+ return -EPERM;
+ }
+
ngbe_config_vlan_strip_on_all_queues(dev, mask);
ngbevf_vlan_offload_config(dev, mask);
--
2.48.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 12/12] net/txgbe: add missing LRO flag in mbuf when LRO enabled
[not found] <20250606080117.183198-1-jiawenwu@trustnetic.com>
` (6 preceding siblings ...)
2025-06-06 8:01 ` [PATCH 11/12] net/ngbe: " Jiawen Wu
@ 2025-06-06 8:01 ` Jiawen Wu
7 siblings, 0 replies; 8+ messages in thread
From: Jiawen Wu @ 2025-06-06 8:01 UTC (permalink / raw)
To: dev; +Cc: zaiyuwang, Jiawen Wu, stable
When LRO is enabled, the driver must set the LRO flag in received
aggregated packets to indicate LRO processing to upper-layer
applications. Add the missing LRO flag into the ol_flags field of mbuf
to fix it.
Fixes: 0e484278c85f ("net/txgbe: support Rx")
Cc: stable@dpdk.org
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
drivers/net/txgbe/txgbe_rxtx.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/txgbe/txgbe_rxtx.c b/drivers/net/txgbe/txgbe_rxtx.c
index a85d417ff6..e6f33739c4 100644
--- a/drivers/net/txgbe/txgbe_rxtx.c
+++ b/drivers/net/txgbe/txgbe_rxtx.c
@@ -1793,6 +1793,8 @@ txgbe_fill_cluster_head_buf(struct rte_mbuf *head, struct txgbe_rx_desc *desc,
pkt_flags = rx_desc_status_to_pkt_flags(staterr, rxq->vlan_flags);
pkt_flags |= rx_desc_error_to_pkt_flags(staterr);
pkt_flags |= txgbe_rxd_pkt_info_to_pkt_flags(pkt_info);
+ if (TXGBE_RXD_RSCCNT(desc->qw0.dw0))
+ pkt_flags |= RTE_MBUF_F_RX_LRO;
head->ol_flags = pkt_flags;
head->packet_type = txgbe_rxd_pkt_info_to_pkt_type(pkt_info,
rxq->pkt_type_mask);
--
2.48.1
^ permalink raw reply [flat|nested] 8+ messages in thread