public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH iwl-next v2 0/2] igc: enable build_skb path
@ 2026-03-17  6:21 Kohei Enju
  2026-03-17  6:21 ` [PATCH iwl-next v2 1/2] igc: set RX hardware timestamps in igc_build_skb() Kohei Enju
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Kohei Enju @ 2026-03-17  6:21 UTC (permalink / raw)
  To: intel-wired-lan, netdev
  Cc: Tony Nguyen, Przemek Kitszel, Andrew Lunn, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni, dima.ruinskiy,
	kohei.enju, Kohei Enju

This series enables the build_skb RX path in igc, which is currently not
enabled in any configuration.

Patch 1/2 adds missing RX hardware timestamp handling in the build_skb
path.
Patch 2/2 enables the build_skb path when XDP is inactive and other
conditions are met.

Tested on Intel Corporation Ethernet Controller I226-V (rev 04).

Changes:
  v2:
    - don't insist on reverse christmas tree, reducing net diff in the
      patch 1/2 (Dima)
  v1: https://lore.kernel.org/intel-wired-lan/20260307182808.155027-1-kohei@enjuk.jp/

Kohei Enju (2):
  igc: set RX hardware timestamps in igc_build_skb()
  igc: enable build_skb on the non-XDP small-frame RX path

 drivers/net/ethernet/intel/igc/igc.h      |  4 ++++
 drivers/net/ethernet/intel/igc/igc_main.c | 14 ++++++++++++--
 2 files changed, 16 insertions(+), 2 deletions(-)

-- 
2.51.0


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

* [PATCH iwl-next v2 1/2] igc: set RX hardware timestamps in igc_build_skb()
  2026-03-17  6:21 [PATCH iwl-next v2 0/2] igc: enable build_skb path Kohei Enju
@ 2026-03-17  6:21 ` Kohei Enju
  2026-03-18 15:56   ` Ruinskiy, Dima
  2026-03-23 17:21   ` [Intel-wired-lan] " Dahan, AvigailX
  2026-03-17  6:21 ` [PATCH iwl-next v2 2/2] igc: enable build_skb on the non-XDP small-frame RX path Kohei Enju
  2026-03-19 16:11 ` [PATCH iwl-next v2 0/2] igc: enable build_skb path Simon Horman
  2 siblings, 2 replies; 11+ messages in thread
From: Kohei Enju @ 2026-03-17  6:21 UTC (permalink / raw)
  To: intel-wired-lan, netdev
  Cc: Tony Nguyen, Przemek Kitszel, Andrew Lunn, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni, dima.ruinskiy,
	kohei.enju, Kohei Enju, Aleksandr Loktionov

igc_construct_skb() sets RX hardware timestamps, but igc_build_skb()
does not. This has not been observable so far since igc currently does
not enable the build_skb RX path.

Set RX hardware timestamps in igc_build_skb() as well so that both skb
construction paths provide the same behavior.

Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Signed-off-by: Kohei Enju <kohei@enjuk.jp>
---
 drivers/net/ethernet/intel/igc/igc_main.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c
index cad5a26cc84d..79192b02e6be 100644
--- a/drivers/net/ethernet/intel/igc/igc_main.c
+++ b/drivers/net/ethernet/intel/igc/igc_main.c
@@ -1964,8 +1964,9 @@ static void igc_add_rx_frag(struct igc_ring *rx_ring,
 
 static struct sk_buff *igc_build_skb(struct igc_ring *rx_ring,
 				     struct igc_rx_buffer *rx_buffer,
-				     struct xdp_buff *xdp)
+				     struct igc_xdp_buff *ctx)
 {
+	struct xdp_buff *xdp = &ctx->xdp;
 	unsigned int size = xdp->data_end - xdp->data;
 	unsigned int truesize = igc_get_rx_frame_truesize(rx_ring, size);
 	unsigned int metasize = xdp->data - xdp->data_meta;
@@ -1979,6 +1980,11 @@ static struct sk_buff *igc_build_skb(struct igc_ring *rx_ring,
 	if (unlikely(!skb))
 		return NULL;
 
+	if (ctx->rx_ts) {
+		skb_shinfo(skb)->tx_flags |= SKBTX_HW_TSTAMP_NETDEV;
+		skb_hwtstamps(skb)->netdev_data = ctx->rx_ts;
+	}
+
 	/* update pointers within the skb to store the data */
 	skb_reserve(skb, xdp->data - xdp->data_hard_start);
 	__skb_put(skb, size);
@@ -2681,7 +2687,7 @@ static int igc_clean_rx_irq(struct igc_q_vector *q_vector, const int budget)
 		} else if (skb)
 			igc_add_rx_frag(rx_ring, rx_buffer, skb, size);
 		else if (ring_uses_build_skb(rx_ring))
-			skb = igc_build_skb(rx_ring, rx_buffer, &ctx.xdp);
+			skb = igc_build_skb(rx_ring, rx_buffer, &ctx);
 		else
 			skb = igc_construct_skb(rx_ring, rx_buffer, &ctx);
 
-- 
2.51.0


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

* [PATCH iwl-next v2 2/2] igc: enable build_skb on the non-XDP small-frame RX path
  2026-03-17  6:21 [PATCH iwl-next v2 0/2] igc: enable build_skb path Kohei Enju
  2026-03-17  6:21 ` [PATCH iwl-next v2 1/2] igc: set RX hardware timestamps in igc_build_skb() Kohei Enju
@ 2026-03-17  6:21 ` Kohei Enju
  2026-03-18 15:57   ` Ruinskiy, Dima
  2026-03-23 17:23   ` [Intel-wired-lan] " Dahan, AvigailX
  2026-03-19 16:11 ` [PATCH iwl-next v2 0/2] igc: enable build_skb path Simon Horman
  2 siblings, 2 replies; 11+ messages in thread
From: Kohei Enju @ 2026-03-17  6:21 UTC (permalink / raw)
  To: intel-wired-lan, netdev
  Cc: Tony Nguyen, Przemek Kitszel, Andrew Lunn, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni, dima.ruinskiy,
	kohei.enju, Kohei Enju, Aleksandr Loktionov

igc implements igc_build_skb(), but it is currently unused because the
IGC_RING_FLAG_RX_BUILD_SKB_ENABLED bit is never set. Enable the
build_skb path when XDP is not active and the configured maximum frame
size fits within IGC_MAX_FRAME_BUILD_SKB.

In a single-queue small-packet (64-byte) RX microbenchmark on my setup,
enabling build_skb improved the receive rate from about 3.11 Mpps to
about 3.30 Mpps, while reducing missed packets from about 484 kpps to
about 300 kpps.

Keep the XDP path unchanged for now, since it uses a different RX buffer
layout based on XDP_PACKET_HEADROOM, and enabling it there would need
separate validation and buffer layout adjustments.

Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Signed-off-by: Kohei Enju <kohei@enjuk.jp>
---
 drivers/net/ethernet/intel/igc/igc.h      | 4 ++++
 drivers/net/ethernet/intel/igc/igc_main.c | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/drivers/net/ethernet/intel/igc/igc.h b/drivers/net/ethernet/intel/igc/igc.h
index e66799507f81..acbd2c237667 100644
--- a/drivers/net/ethernet/intel/igc/igc.h
+++ b/drivers/net/ethernet/intel/igc/igc.h
@@ -734,6 +734,10 @@ enum igc_ring_flags_t {
 
 #define ring_uses_build_skb(ring) \
 	test_bit(IGC_RING_FLAG_RX_BUILD_SKB_ENABLED, &(ring)->flags)
+#define set_ring_uses_build_skb(ring) \
+	set_bit(IGC_RING_FLAG_RX_BUILD_SKB_ENABLED, &(ring)->flags)
+#define clear_ring_uses_build_skb(ring) \
+	clear_bit(IGC_RING_FLAG_RX_BUILD_SKB_ENABLED, &(ring)->flags)
 
 static inline unsigned int igc_rx_bufsz(struct igc_ring *ring)
 {
diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c
index 79192b02e6be..b44f89311a4e 100644
--- a/drivers/net/ethernet/intel/igc/igc_main.c
+++ b/drivers/net/ethernet/intel/igc/igc_main.c
@@ -474,6 +474,7 @@ static void igc_clean_rx_ring(struct igc_ring *ring)
 		igc_clean_rx_ring_page_shared(ring);
 
 	clear_ring_uses_large_buffer(ring);
+	clear_ring_uses_build_skb(ring);
 
 	ring->next_to_alloc = 0;
 	ring->next_to_clean = 0;
@@ -654,6 +655,9 @@ static void igc_configure_rx_ring(struct igc_adapter *adapter,
 
 	if (igc_xdp_is_enabled(adapter))
 		set_ring_uses_large_buffer(ring);
+	else if (!(adapter->flags & IGC_FLAG_RX_LEGACY) &&
+		 adapter->max_frame_size <= IGC_MAX_FRAME_BUILD_SKB)
+		set_ring_uses_build_skb(ring);
 
 	/* disable the queue */
 	wr32(IGC_RXDCTL(reg_idx), 0);
-- 
2.51.0


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

* Re: [PATCH iwl-next v2 1/2] igc: set RX hardware timestamps in igc_build_skb()
  2026-03-17  6:21 ` [PATCH iwl-next v2 1/2] igc: set RX hardware timestamps in igc_build_skb() Kohei Enju
@ 2026-03-18 15:56   ` Ruinskiy, Dima
  2026-03-23 17:21   ` [Intel-wired-lan] " Dahan, AvigailX
  1 sibling, 0 replies; 11+ messages in thread
From: Ruinskiy, Dima @ 2026-03-18 15:56 UTC (permalink / raw)
  To: Kohei Enju, intel-wired-lan, netdev
  Cc: Tony Nguyen, Przemek Kitszel, Andrew Lunn, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni, kohei.enju,
	Aleksandr Loktionov

On 17/03/2026 8:21, Kohei Enju wrote:
> igc_construct_skb() sets RX hardware timestamps, but igc_build_skb()
> does not. This has not been observable so far since igc currently does
> not enable the build_skb RX path.
> 
> Set RX hardware timestamps in igc_build_skb() as well so that both skb
> construction paths provide the same behavior.
> 
> Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
> Signed-off-by: Kohei Enju <kohei@enjuk.jp>
> ---
>   drivers/net/ethernet/intel/igc/igc_main.c | 10 ++++++++--
>   1 file changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c
> index cad5a26cc84d..79192b02e6be 100644
> --- a/drivers/net/ethernet/intel/igc/igc_main.c
> +++ b/drivers/net/ethernet/intel/igc/igc_main.c
> @@ -1964,8 +1964,9 @@ static void igc_add_rx_frag(struct igc_ring *rx_ring,
>   
>   static struct sk_buff *igc_build_skb(struct igc_ring *rx_ring,
>   				     struct igc_rx_buffer *rx_buffer,
> -				     struct xdp_buff *xdp)
> +				     struct igc_xdp_buff *ctx)
>   {
> +	struct xdp_buff *xdp = &ctx->xdp;
>   	unsigned int size = xdp->data_end - xdp->data;
>   	unsigned int truesize = igc_get_rx_frame_truesize(rx_ring, size);
>   	unsigned int metasize = xdp->data - xdp->data_meta;
> @@ -1979,6 +1980,11 @@ static struct sk_buff *igc_build_skb(struct igc_ring *rx_ring,
>   	if (unlikely(!skb))
>   		return NULL;
>   
> +	if (ctx->rx_ts) {
> +		skb_shinfo(skb)->tx_flags |= SKBTX_HW_TSTAMP_NETDEV;
> +		skb_hwtstamps(skb)->netdev_data = ctx->rx_ts;
> +	}
> +
>   	/* update pointers within the skb to store the data */
>   	skb_reserve(skb, xdp->data - xdp->data_hard_start);
>   	__skb_put(skb, size);
> @@ -2681,7 +2687,7 @@ static int igc_clean_rx_irq(struct igc_q_vector *q_vector, const int budget)
>   		} else if (skb)
>   			igc_add_rx_frag(rx_ring, rx_buffer, skb, size);
>   		else if (ring_uses_build_skb(rx_ring))
> -			skb = igc_build_skb(rx_ring, rx_buffer, &ctx.xdp);
> +			skb = igc_build_skb(rx_ring, rx_buffer, &ctx);
>   		else
>   			skb = igc_construct_skb(rx_ring, rx_buffer, &ctx);
>   
Reviewed-by: Dima Ruinskiy <dima.ruinskiy@intel.com>

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

* Re: [PATCH iwl-next v2 2/2] igc: enable build_skb on the non-XDP small-frame RX path
  2026-03-17  6:21 ` [PATCH iwl-next v2 2/2] igc: enable build_skb on the non-XDP small-frame RX path Kohei Enju
@ 2026-03-18 15:57   ` Ruinskiy, Dima
  2026-03-23 17:23   ` [Intel-wired-lan] " Dahan, AvigailX
  1 sibling, 0 replies; 11+ messages in thread
From: Ruinskiy, Dima @ 2026-03-18 15:57 UTC (permalink / raw)
  To: Kohei Enju, intel-wired-lan, netdev
  Cc: Tony Nguyen, Przemek Kitszel, Andrew Lunn, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni, kohei.enju,
	Aleksandr Loktionov

On 17/03/2026 8:21, Kohei Enju wrote:
> igc implements igc_build_skb(), but it is currently unused because the
> IGC_RING_FLAG_RX_BUILD_SKB_ENABLED bit is never set. Enable the
> build_skb path when XDP is not active and the configured maximum frame
> size fits within IGC_MAX_FRAME_BUILD_SKB.
> 
> In a single-queue small-packet (64-byte) RX microbenchmark on my setup,
> enabling build_skb improved the receive rate from about 3.11 Mpps to
> about 3.30 Mpps, while reducing missed packets from about 484 kpps to
> about 300 kpps.
> 
> Keep the XDP path unchanged for now, since it uses a different RX buffer
> layout based on XDP_PACKET_HEADROOM, and enabling it there would need
> separate validation and buffer layout adjustments.
> 
> Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
> Signed-off-by: Kohei Enju <kohei@enjuk.jp>
> ---
>   drivers/net/ethernet/intel/igc/igc.h      | 4 ++++
>   drivers/net/ethernet/intel/igc/igc_main.c | 4 ++++
>   2 files changed, 8 insertions(+)
> 
> diff --git a/drivers/net/ethernet/intel/igc/igc.h b/drivers/net/ethernet/intel/igc/igc.h
> index e66799507f81..acbd2c237667 100644
> --- a/drivers/net/ethernet/intel/igc/igc.h
> +++ b/drivers/net/ethernet/intel/igc/igc.h
> @@ -734,6 +734,10 @@ enum igc_ring_flags_t {
>   
>   #define ring_uses_build_skb(ring) \
>   	test_bit(IGC_RING_FLAG_RX_BUILD_SKB_ENABLED, &(ring)->flags)
> +#define set_ring_uses_build_skb(ring) \
> +	set_bit(IGC_RING_FLAG_RX_BUILD_SKB_ENABLED, &(ring)->flags)
> +#define clear_ring_uses_build_skb(ring) \
> +	clear_bit(IGC_RING_FLAG_RX_BUILD_SKB_ENABLED, &(ring)->flags)
>   
>   static inline unsigned int igc_rx_bufsz(struct igc_ring *ring)
>   {
> diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c
> index 79192b02e6be..b44f89311a4e 100644
> --- a/drivers/net/ethernet/intel/igc/igc_main.c
> +++ b/drivers/net/ethernet/intel/igc/igc_main.c
> @@ -474,6 +474,7 @@ static void igc_clean_rx_ring(struct igc_ring *ring)
>   		igc_clean_rx_ring_page_shared(ring);
>   
>   	clear_ring_uses_large_buffer(ring);
> +	clear_ring_uses_build_skb(ring);
>   
>   	ring->next_to_alloc = 0;
>   	ring->next_to_clean = 0;
> @@ -654,6 +655,9 @@ static void igc_configure_rx_ring(struct igc_adapter *adapter,
>   
>   	if (igc_xdp_is_enabled(adapter))
>   		set_ring_uses_large_buffer(ring);
> +	else if (!(adapter->flags & IGC_FLAG_RX_LEGACY) &&
> +		 adapter->max_frame_size <= IGC_MAX_FRAME_BUILD_SKB)
> +		set_ring_uses_build_skb(ring);
>   
>   	/* disable the queue */
>   	wr32(IGC_RXDCTL(reg_idx), 0);
Reviewed-by: Dima Ruinskiy <dima.ruinskiy@intel.com>

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

* Re: [PATCH iwl-next v2 0/2] igc: enable build_skb path
  2026-03-17  6:21 [PATCH iwl-next v2 0/2] igc: enable build_skb path Kohei Enju
  2026-03-17  6:21 ` [PATCH iwl-next v2 1/2] igc: set RX hardware timestamps in igc_build_skb() Kohei Enju
  2026-03-17  6:21 ` [PATCH iwl-next v2 2/2] igc: enable build_skb on the non-XDP small-frame RX path Kohei Enju
@ 2026-03-19 16:11 ` Simon Horman
  2026-03-20  6:05   ` Kohei Enju
  2 siblings, 1 reply; 11+ messages in thread
From: Simon Horman @ 2026-03-19 16:11 UTC (permalink / raw)
  To: Kohei Enju
  Cc: intel-wired-lan, netdev, Tony Nguyen, Przemek Kitszel,
	Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, dima.ruinskiy, kohei.enju

On Tue, Mar 17, 2026 at 06:21:44AM +0000, Kohei Enju wrote:
> This series enables the build_skb RX path in igc, which is currently not
> enabled in any configuration.
> 
> Patch 1/2 adds missing RX hardware timestamp handling in the build_skb
> path.
> Patch 2/2 enables the build_skb path when XDP is inactive and other
> conditions are met.
> 
> Tested on Intel Corporation Ethernet Controller I226-V (rev 04).
> 
> Changes:
>   v2:
>     - don't insist on reverse christmas tree, reducing net diff in the
>       patch 1/2 (Dima)
>   v1: https://lore.kernel.org/intel-wired-lan/20260307182808.155027-1-kohei@enjuk.jp/
> 
> Kohei Enju (2):
>   igc: set RX hardware timestamps in igc_build_skb()
>   igc: enable build_skb on the non-XDP small-frame RX path

For the series:

Reviewed-by: Simon Horman <horms@kernel.org>

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

* Re: [PATCH iwl-next v2 0/2] igc: enable build_skb path
  2026-03-19 16:11 ` [PATCH iwl-next v2 0/2] igc: enable build_skb path Simon Horman
@ 2026-03-20  6:05   ` Kohei Enju
  2026-03-20 20:30     ` Tony Nguyen
  0 siblings, 1 reply; 11+ messages in thread
From: Kohei Enju @ 2026-03-20  6:05 UTC (permalink / raw)
  To: Tony Nguyen
  Cc: intel-wired-lan, netdev, Simon Horman, Przemek Kitszel,
	Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, dima.ruinskiy, kohei.enju

On 03/19 16:11, Simon Horman wrote:
> On Tue, Mar 17, 2026 at 06:21:44AM +0000, Kohei Enju wrote:
> > This series enables the build_skb RX path in igc, which is currently not
> > enabled in any configuration.
> > 
> > Patch 1/2 adds missing RX hardware timestamp handling in the build_skb
> > path.
> > Patch 2/2 enables the build_skb path when XDP is inactive and other
> > conditions are met.
> > 
> > Tested on Intel Corporation Ethernet Controller I226-V (rev 04).
> > 
> > Changes:
> >   v2:
> >     - don't insist on reverse christmas tree, reducing net diff in the
> >       patch 1/2 (Dima)
> >   v1: https://lore.kernel.org/intel-wired-lan/20260307182808.155027-1-kohei@enjuk.jp/
> > 
> > Kohei Enju (2):
> >   igc: set RX hardware timestamps in igc_build_skb()
> >   igc: enable build_skb on the non-XDP small-frame RX path
> 
> For the series:
> 
> Reviewed-by: Simon Horman <horms@kernel.org>

Hi Tony, thanks for applying this series to next-queue.
I have a question about the process of patch submission.

Sometimes reviewers give RB tags for a whole series like this, but I
think that those tags on the cover letter are not collected
automatically, right?

In this case, should I add RB tags to each patch if I respin for other
reasons, or what is the recommended way to handle this?

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

* Re: [PATCH iwl-next v2 0/2] igc: enable build_skb path
  2026-03-20  6:05   ` Kohei Enju
@ 2026-03-20 20:30     ` Tony Nguyen
  2026-03-21  7:13       ` [Intel-wired-lan] " Kohei Enju
  0 siblings, 1 reply; 11+ messages in thread
From: Tony Nguyen @ 2026-03-20 20:30 UTC (permalink / raw)
  To: Kohei Enju
  Cc: intel-wired-lan, netdev, Simon Horman, Przemek Kitszel,
	Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, dima.ruinskiy, kohei.enju



On 3/19/2026 11:05 PM, Kohei Enju wrote:
> On 03/19 16:11, Simon Horman wrote:
>> On Tue, Mar 17, 2026 at 06:21:44AM +0000, Kohei Enju wrote:
>>> This series enables the build_skb RX path in igc, which is currently not
>>> enabled in any configuration.
>>>
>>> Patch 1/2 adds missing RX hardware timestamp handling in the build_skb
>>> path.
>>> Patch 2/2 enables the build_skb path when XDP is inactive and other
>>> conditions are met.
>>>
>>> Tested on Intel Corporation Ethernet Controller I226-V (rev 04).
>>>
>>> Changes:
>>>    v2:
>>>      - don't insist on reverse christmas tree, reducing net diff in the
>>>        patch 1/2 (Dima)
>>>    v1: https://lore.kernel.org/intel-wired-lan/20260307182808.155027-1-kohei@enjuk.jp/
>>>
>>> Kohei Enju (2):
>>>    igc: set RX hardware timestamps in igc_build_skb()
>>>    igc: enable build_skb on the non-XDP small-frame RX path
>>
>> For the series:
>>
>> Reviewed-by: Simon Horman <horms@kernel.org>
> 
> Hi Tony, thanks for applying this series to next-queue.
> I have a question about the process of patch submission.
> 
> Sometimes reviewers give RB tags for a whole series like this, but I
> think that those tags on the cover letter are not collected
> automatically, right?
> 
> In this case, should I add RB tags to each patch if I respin for other
> reasons, or what is the recommended way to handle this?

Hi Kohei,

If you need to respin, feel free to carry the tags over. If you don't, 
I'll bring them over.

Thanks,
Tony


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

* Re: [Intel-wired-lan] [PATCH iwl-next v2 0/2] igc: enable build_skb path
  2026-03-20 20:30     ` Tony Nguyen
@ 2026-03-21  7:13       ` Kohei Enju
  0 siblings, 0 replies; 11+ messages in thread
From: Kohei Enju @ 2026-03-21  7:13 UTC (permalink / raw)
  To: Tony Nguyen
  Cc: intel-wired-lan, netdev, Simon Horman, Przemek Kitszel,
	Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, dima.ruinskiy, kohei.enju

On 03/20 13:30, Tony Nguyen wrote:
> 
> 
> On 3/19/2026 11:05 PM, Kohei Enju wrote:
> > On 03/19 16:11, Simon Horman wrote:
> > > On Tue, Mar 17, 2026 at 06:21:44AM +0000, Kohei Enju wrote:
> > > > This series enables the build_skb RX path in igc, which is currently not
> > > > enabled in any configuration.
> > > > 
> > > > Patch 1/2 adds missing RX hardware timestamp handling in the build_skb
> > > > path.
> > > > Patch 2/2 enables the build_skb path when XDP is inactive and other
> > > > conditions are met.
> > > > 
> > > > Tested on Intel Corporation Ethernet Controller I226-V (rev 04).
> > > > 
> > > > Changes:
> > > >    v2:
> > > >      - don't insist on reverse christmas tree, reducing net diff in the
> > > >        patch 1/2 (Dima)
> > > >    v1: https://lore.kernel.org/intel-wired-lan/20260307182808.155027-1-kohei@enjuk.jp/
> > > > 
> > > > Kohei Enju (2):
> > > >    igc: set RX hardware timestamps in igc_build_skb()
> > > >    igc: enable build_skb on the non-XDP small-frame RX path
> > > 
> > > For the series:
> > > 
> > > Reviewed-by: Simon Horman <horms@kernel.org>
> > 
> > Hi Tony, thanks for applying this series to next-queue.
> > I have a question about the process of patch submission.
> > 
> > Sometimes reviewers give RB tags for a whole series like this, but I
> > think that those tags on the cover letter are not collected
> > automatically, right?
> > 
> > In this case, should I add RB tags to each patch if I respin for other
> > reasons, or what is the recommended way to handle this?
> 
> Hi Kohei,
> 
> If you need to respin, feel free to carry the tags over. If you don't, I'll
> bring them over.
> 
> Thanks,
> Tony
> 

I understand. Thanks for explanation!

Regards,
Kohei

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

* Re: [Intel-wired-lan] [PATCH iwl-next v2 1/2] igc: set RX hardware timestamps in igc_build_skb()
  2026-03-17  6:21 ` [PATCH iwl-next v2 1/2] igc: set RX hardware timestamps in igc_build_skb() Kohei Enju
  2026-03-18 15:56   ` Ruinskiy, Dima
@ 2026-03-23 17:21   ` Dahan, AvigailX
  1 sibling, 0 replies; 11+ messages in thread
From: Dahan, AvigailX @ 2026-03-23 17:21 UTC (permalink / raw)
  To: Kohei Enju, intel-wired-lan, netdev
  Cc: Tony Nguyen, Przemek Kitszel, Andrew Lunn, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni, dima.ruinskiy,
	kohei.enju, Aleksandr Loktionov



On 17/03/2026 8:21, Kohei Enju wrote:
> igc_construct_skb() sets RX hardware timestamps, but igc_build_skb()
> does not. This has not been observable so far since igc currently does
> not enable the build_skb RX path.
> 
> Set RX hardware timestamps in igc_build_skb() as well so that both skb
> construction paths provide the same behavior.
> 
> Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
> Signed-off-by: Kohei Enju <kohei@enjuk.jp>
> ---
>   drivers/net/ethernet/intel/igc/igc_main.c | 10 ++++++++--
>   1 file changed, 8 insertions(+), 2 deletions(-)
> 

Tested-by: Avigail Dahan <avigailx.dahan@intel.com>

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

* Re: [Intel-wired-lan] [PATCH iwl-next v2 2/2] igc: enable build_skb on the non-XDP small-frame RX path
  2026-03-17  6:21 ` [PATCH iwl-next v2 2/2] igc: enable build_skb on the non-XDP small-frame RX path Kohei Enju
  2026-03-18 15:57   ` Ruinskiy, Dima
@ 2026-03-23 17:23   ` Dahan, AvigailX
  1 sibling, 0 replies; 11+ messages in thread
From: Dahan, AvigailX @ 2026-03-23 17:23 UTC (permalink / raw)
  To: Kohei Enju, intel-wired-lan, netdev
  Cc: Tony Nguyen, Przemek Kitszel, Andrew Lunn, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni, dima.ruinskiy,
	kohei.enju, Aleksandr Loktionov



On 17/03/2026 8:21, Kohei Enju wrote:
> igc implements igc_build_skb(), but it is currently unused because the
> IGC_RING_FLAG_RX_BUILD_SKB_ENABLED bit is never set. Enable the
> build_skb path when XDP is not active and the configured maximum frame
> size fits within IGC_MAX_FRAME_BUILD_SKB.
> 
> In a single-queue small-packet (64-byte) RX microbenchmark on my setup,
> enabling build_skb improved the receive rate from about 3.11 Mpps to
> about 3.30 Mpps, while reducing missed packets from about 484 kpps to
> about 300 kpps.
> 
> Keep the XDP path unchanged for now, since it uses a different RX buffer
> layout based on XDP_PACKET_HEADROOM, and enabling it there would need
> separate validation and buffer layout adjustments.
> 
> Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
> Signed-off-by: Kohei Enju <kohei@enjuk.jp>
> ---
>   drivers/net/ethernet/intel/igc/igc.h      | 4 ++++
>   drivers/net/ethernet/intel/igc/igc_main.c | 4 ++++
>   2 files changed, 8 insertions(+)
> 

Tested-by: Avigail Dahan <avigailx.dahan@intel.com>

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

end of thread, other threads:[~2026-03-23 17:23 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-17  6:21 [PATCH iwl-next v2 0/2] igc: enable build_skb path Kohei Enju
2026-03-17  6:21 ` [PATCH iwl-next v2 1/2] igc: set RX hardware timestamps in igc_build_skb() Kohei Enju
2026-03-18 15:56   ` Ruinskiy, Dima
2026-03-23 17:21   ` [Intel-wired-lan] " Dahan, AvigailX
2026-03-17  6:21 ` [PATCH iwl-next v2 2/2] igc: enable build_skb on the non-XDP small-frame RX path Kohei Enju
2026-03-18 15:57   ` Ruinskiy, Dima
2026-03-23 17:23   ` [Intel-wired-lan] " Dahan, AvigailX
2026-03-19 16:11 ` [PATCH iwl-next v2 0/2] igc: enable build_skb path Simon Horman
2026-03-20  6:05   ` Kohei Enju
2026-03-20 20:30     ` Tony Nguyen
2026-03-21  7:13       ` [Intel-wired-lan] " Kohei Enju

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox