netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Misuse of LRO, how widespread
@ 2010-12-06 20:18 Stephen Hemminger
  2010-12-06 20:30 ` Ben Hutchings
  2010-12-06 21:15 ` Dimitris Michailidis
  0 siblings, 2 replies; 10+ messages in thread
From: Stephen Hemminger @ 2010-12-06 20:18 UTC (permalink / raw)
  To: David Miller, Olof Johansson, Ben Hutchings, Divy Le Ray; +Cc: netdev

I inspected all drivers in net-next to see which drivers are using
LRO and which ones are broken. Most concerning is that Chelsio
and Solarflare drivers ignore ETH_FLAG_LRO.

The ones that are using LRO but allow disabling it:
  qlcnic, netxen, mv643, s2io, myi10ge, bnx2x, ixgbe, vmxnet3

One driver seems confused about LRO vs GRO:
  mlx4 - comments about LRO and depends on LRO but driver is using GRO

Drivers with not using ethtool interface to disable LRO:
  pasemi_mac, sfc, ehea, cxgb3, cxgb4


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

* Re: Misuse of LRO, how widespread
  2010-12-06 20:18 Misuse of LRO, how widespread Stephen Hemminger
@ 2010-12-06 20:30 ` Ben Hutchings
  2010-12-06 22:33   ` Stephen Hemminger
  2010-12-06 21:15 ` Dimitris Michailidis
  1 sibling, 1 reply; 10+ messages in thread
From: Ben Hutchings @ 2010-12-06 20:30 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: David Miller, Olof Johansson, Divy Le Ray, netdev

On Mon, 2010-12-06 at 12:18 -0800, Stephen Hemminger wrote:
> I inspected all drivers in net-next to see which drivers are using
> LRO and which ones are broken. Most concerning is that Chelsio
> and Solarflare drivers ignore ETH_FLAG_LRO.
> 
> The ones that are using LRO but allow disabling it:
>   qlcnic, netxen, mv643, s2io, myi10ge, bnx2x, ixgbe, vmxnet3
> 
> One driver seems confused about LRO vs GRO:
>   mlx4 - comments about LRO and depends on LRO but driver is using GRO

sfc is also in this category.  (And it's not confused, it was using
inet_lro before being converted to GRO.)

> Drivers with not using ethtool interface to disable LRO:
>   pasemi_mac, sfc, ehea, cxgb3, cxgb4

Ben.

-- 
Ben Hutchings, Senior Software Engineer, Solarflare Communications
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.


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

* Re: Misuse of LRO, how widespread
  2010-12-06 20:18 Misuse of LRO, how widespread Stephen Hemminger
  2010-12-06 20:30 ` Ben Hutchings
@ 2010-12-06 21:15 ` Dimitris Michailidis
  2010-12-06 22:27   ` Stephen Hemminger
  1 sibling, 1 reply; 10+ messages in thread
From: Dimitris Michailidis @ 2010-12-06 21:15 UTC (permalink / raw)
  To: Stephen Hemminger
  Cc: David Miller, Olof Johansson, Ben Hutchings, Divy Le Ray, netdev

Stephen Hemminger wrote:
> I inspected all drivers in net-next to see which drivers are using
> LRO and which ones are broken. Most concerning is that Chelsio
> and Solarflare drivers ignore ETH_FLAG_LRO.
> 
> The ones that are using LRO but allow disabling it:
>   qlcnic, netxen, mv643, s2io, myi10ge, bnx2x, ixgbe, vmxnet3
> 
> One driver seems confused about LRO vs GRO:
>   mlx4 - comments about LRO and depends on LRO but driver is using GRO
> 
> Drivers with not using ethtool interface to disable LRO:
>   pasemi_mac, sfc, ehea, cxgb3, cxgb4

cxgb4 uses GRO, not LRO.

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

* Re: Misuse of LRO, how widespread
  2010-12-06 21:15 ` Dimitris Michailidis
@ 2010-12-06 22:27   ` Stephen Hemminger
  2010-12-06 23:05     ` Dimitris Michailidis
  0 siblings, 1 reply; 10+ messages in thread
From: Stephen Hemminger @ 2010-12-06 22:27 UTC (permalink / raw)
  To: Dimitris Michailidis
  Cc: David Miller, Olof Johansson, Ben Hutchings, Divy Le Ray, netdev

On Mon, 06 Dec 2010 13:15:42 -0800
Dimitris Michailidis <dm@chelsio.com> wrote:

> Stephen Hemminger wrote:
> > I inspected all drivers in net-next to see which drivers are using
> > LRO and which ones are broken. Most concerning is that Chelsio
> > and Solarflare drivers ignore ETH_FLAG_LRO.
> > 
> > The ones that are using LRO but allow disabling it:
> >   qlcnic, netxen, mv643, s2io, myi10ge, bnx2x, ixgbe, vmxnet3
> > 
> > One driver seems confused about LRO vs GRO:
> >   mlx4 - comments about LRO and depends on LRO but driver is using GRO
> > 
> > Drivers with not using ethtool interface to disable LRO:
> >   pasemi_mac, sfc, ehea, cxgb3, cxgb4
> 
> cxgb4 uses GRO, not LRO.

Ok. but cxgb3 still uses LRO (or it least calls it lro).

-- 

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

* Re: Misuse of LRO, how widespread
  2010-12-06 20:30 ` Ben Hutchings
@ 2010-12-06 22:33   ` Stephen Hemminger
  2010-12-06 22:35     ` Ben Hutchings
  0 siblings, 1 reply; 10+ messages in thread
From: Stephen Hemminger @ 2010-12-06 22:33 UTC (permalink / raw)
  To: Ben Hutchings; +Cc: David Miller, Olof Johansson, Divy Le Ray, netdev

How about this?

Subject: sfc: convert references to LRO to GRO

This driver now uses Generic Receive Offload, not the older LRO.
Change references to LRO in names and comments.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>


--- a/drivers/net/sfc/rx.c	2010-12-06 14:28:25.320929804 -0800
+++ b/drivers/net/sfc/rx.c	2010-12-06 14:29:54.424930087 -0800
@@ -37,7 +37,7 @@
  * This driver supports two methods for allocating and using RX buffers:
  * each RX buffer may be backed by an skb or by an order-n page.
  *
- * When LRO is in use then the second method has a lower overhead,
+ * When GRO is in use then the second method has a lower overhead,
  * since we don't have to allocate then free skbs on reassembled frames.
  *
  * Values:
@@ -50,25 +50,25 @@
  *
  *   - Since pushing and popping descriptors are separated by the rx_queue
  *     size, so the watermarks should be ~rxd_size.
- *   - The performance win by using page-based allocation for LRO is less
- *     than the performance hit of using page-based allocation of non-LRO,
+ *   - The performance win by using page-based allocation for GRO is less
+ *     than the performance hit of using page-based allocation of non-GRO,
  *     so the watermarks should reflect this.
  *
  * Per channel we maintain a single variable, updated by each channel:
  *
- *   rx_alloc_level += (lro_performed ? RX_ALLOC_FACTOR_LRO :
+ *   rx_alloc_level += (gro_performed ? RX_ALLOC_FACTOR_GRO :
  *                      RX_ALLOC_FACTOR_SKB)
  * Per NAPI poll interval, we constrain rx_alloc_level to 0..MAX (which
  * limits the hysteresis), and update the allocation strategy:
  *
- *   rx_alloc_method = (rx_alloc_level > RX_ALLOC_LEVEL_LRO ?
+ *   rx_alloc_method = (rx_alloc_level > RX_ALLOC_LEVEL_GRO ?
  *                      RX_ALLOC_METHOD_PAGE : RX_ALLOC_METHOD_SKB)
  */
 static int rx_alloc_method = RX_ALLOC_METHOD_AUTO;
 
-#define RX_ALLOC_LEVEL_LRO 0x2000
+#define RX_ALLOC_LEVEL_GRO 0x2000
 #define RX_ALLOC_LEVEL_MAX 0x3000
-#define RX_ALLOC_FACTOR_LRO 1
+#define RX_ALLOC_FACTOR_GRO 1
 #define RX_ALLOC_FACTOR_SKB (-2)
 
 /* This is the percentage fill level below which new RX descriptors
@@ -441,19 +441,19 @@ static void efx_rx_packet__check_len(str
 	efx_rx_queue_channel(rx_queue)->n_rx_overlength++;
 }
 
-/* Pass a received packet up through the generic LRO stack
+/* Pass a received packet up through the generic GRO stack
  *
  * Handles driverlink veto, and passes the fragment up via
- * the appropriate LRO method
+ * the appropriate GRO method
  */
-static void efx_rx_packet_lro(struct efx_channel *channel,
+static void efx_rx_packet_gro(struct efx_channel *channel,
 			      struct efx_rx_buffer *rx_buf,
 			      bool checksummed)
 {
 	struct napi_struct *napi = &channel->napi_str;
 	gro_result_t gro_result;
 
-	/* Pass the skb/page into the LRO engine */
+	/* Pass the skb/page into the GRO engine */
 	if (rx_buf->page) {
 		struct efx_nic *efx = channel->efx;
 		struct page *page = rx_buf->page;
@@ -499,7 +499,7 @@ static void efx_rx_packet_lro(struct efx
 	if (gro_result == GRO_NORMAL) {
 		channel->rx_alloc_level += RX_ALLOC_FACTOR_SKB;
 	} else if (gro_result != GRO_DROP) {
-		channel->rx_alloc_level += RX_ALLOC_FACTOR_LRO;
+		channel->rx_alloc_level += RX_ALLOC_FACTOR_GRO;
 		channel->irq_mod_score += 2;
 	}
 }
@@ -605,7 +605,7 @@ void __efx_rx_packet(struct efx_channel
 	}
 
 	if (likely(checksummed || rx_buf->page)) {
-		efx_rx_packet_lro(channel, rx_buf, checksummed);
+		efx_rx_packet_gro(channel, rx_buf, checksummed);
 		return;
 	}
 
@@ -628,7 +628,7 @@ void efx_rx_strategy(struct efx_channel
 {
 	enum efx_rx_alloc_method method = rx_alloc_method;
 
-	/* Only makes sense to use page based allocation if LRO is enabled */
+	/* Only makes sense to use page based allocation if GRO is enabled */
 	if (!(channel->efx->net_dev->features & NETIF_F_GRO)) {
 		method = RX_ALLOC_METHOD_SKB;
 	} else if (method == RX_ALLOC_METHOD_AUTO) {
@@ -639,7 +639,7 @@ void efx_rx_strategy(struct efx_channel
 			channel->rx_alloc_level = RX_ALLOC_LEVEL_MAX;
 
 		/* Decide on the allocation method */
-		method = ((channel->rx_alloc_level > RX_ALLOC_LEVEL_LRO) ?
+		method = ((channel->rx_alloc_level > RX_ALLOC_LEVEL_GRO) ?
 			  RX_ALLOC_METHOD_PAGE : RX_ALLOC_METHOD_SKB);
 	}
 

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

* Re: Misuse of LRO, how widespread
  2010-12-06 22:33   ` Stephen Hemminger
@ 2010-12-06 22:35     ` Ben Hutchings
  2010-12-10 23:03       ` David Miller
  0 siblings, 1 reply; 10+ messages in thread
From: Ben Hutchings @ 2010-12-06 22:35 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: David Miller, Olof Johansson, Divy Le Ray, netdev

On Mon, 2010-12-06 at 14:33 -0800, Stephen Hemminger wrote:
> How about this?
> 
> Subject: sfc: convert references to LRO to GRO
> 
> This driver now uses Generic Receive Offload, not the older LRO.
> Change references to LRO in names and comments.
> 
> Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Acked-by: Ben Hutchings <bhutchings@solarflare.com>

Ben.

-- 
Ben Hutchings, Senior Software Engineer, Solarflare Communications
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.


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

* Re: Misuse of LRO, how widespread
  2010-12-06 22:27   ` Stephen Hemminger
@ 2010-12-06 23:05     ` Dimitris Michailidis
  2010-12-06 23:22       ` Ben Hutchings
  0 siblings, 1 reply; 10+ messages in thread
From: Dimitris Michailidis @ 2010-12-06 23:05 UTC (permalink / raw)
  To: Stephen Hemminger
  Cc: David Miller, Olof Johansson, Ben Hutchings, Divy Le Ray, netdev

Stephen Hemminger wrote:
> On Mon, 06 Dec 2010 13:15:42 -0800
> Dimitris Michailidis <dm@chelsio.com> wrote:
> 
>> Stephen Hemminger wrote:
>>> I inspected all drivers in net-next to see which drivers are using
>>> LRO and which ones are broken. Most concerning is that Chelsio
>>> and Solarflare drivers ignore ETH_FLAG_LRO.
>>>
>>> The ones that are using LRO but allow disabling it:
>>>   qlcnic, netxen, mv643, s2io, myi10ge, bnx2x, ixgbe, vmxnet3
>>>
>>> One driver seems confused about LRO vs GRO:
>>>   mlx4 - comments about LRO and depends on LRO but driver is using GRO
>>>
>>> Drivers with not using ethtool interface to disable LRO:
>>>   pasemi_mac, sfc, ehea, cxgb3, cxgb4
>> cxgb4 uses GRO, not LRO.
> 
> Ok. but cxgb3 still uses LRO (or it least calls it lro).
> 

cxgb3 was the driver Herbert implemented GRO on I think, and he converted it 
to GRO.  It possibly has leftover LRO references as it was using LRO before.

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

* Re: Misuse of LRO, how widespread
  2010-12-06 23:05     ` Dimitris Michailidis
@ 2010-12-06 23:22       ` Ben Hutchings
  2010-12-06 23:36         ` Dimitris Michailidis
  0 siblings, 1 reply; 10+ messages in thread
From: Ben Hutchings @ 2010-12-06 23:22 UTC (permalink / raw)
  To: Dimitris Michailidis
  Cc: Stephen Hemminger, David Miller, Olof Johansson, Divy Le Ray,
	netdev

On Mon, 2010-12-06 at 15:05 -0800, Dimitris Michailidis wrote:
> Stephen Hemminger wrote:
> > On Mon, 06 Dec 2010 13:15:42 -0800
> > Dimitris Michailidis <dm@chelsio.com> wrote:
> > 
> >> Stephen Hemminger wrote:
> >>> I inspected all drivers in net-next to see which drivers are using
> >>> LRO and which ones are broken. Most concerning is that Chelsio
> >>> and Solarflare drivers ignore ETH_FLAG_LRO.
> >>>
> >>> The ones that are using LRO but allow disabling it:
> >>>   qlcnic, netxen, mv643, s2io, myi10ge, bnx2x, ixgbe, vmxnet3
> >>>
> >>> One driver seems confused about LRO vs GRO:
> >>>   mlx4 - comments about LRO and depends on LRO but driver is using GRO
> >>>
> >>> Drivers with not using ethtool interface to disable LRO:
> >>>   pasemi_mac, sfc, ehea, cxgb3, cxgb4
> >> cxgb4 uses GRO, not LRO.
> > 
> > Ok. but cxgb3 still uses LRO (or it least calls it lro).
> > 
> 
> cxgb3 was the driver Herbert implemented GRO on I think, and he converted it 
> to GRO.  It possibly has leftover LRO references as it was using LRO before.

There's a fair amount of code setting LRO flags in various structures,
so either the driver still enables LRO in hardware/firmware or this is
dead code.

Ben.

-- 
Ben Hutchings, Senior Software Engineer, Solarflare Communications
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.


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

* Re: Misuse of LRO, how widespread
  2010-12-06 23:22       ` Ben Hutchings
@ 2010-12-06 23:36         ` Dimitris Michailidis
  0 siblings, 0 replies; 10+ messages in thread
From: Dimitris Michailidis @ 2010-12-06 23:36 UTC (permalink / raw)
  To: Ben Hutchings
  Cc: Stephen Hemminger, David Miller, Olof Johansson, Divy Le Ray,
	netdev

Ben Hutchings wrote:
> On Mon, 2010-12-06 at 15:05 -0800, Dimitris Michailidis wrote:
>> Stephen Hemminger wrote:
>>> On Mon, 06 Dec 2010 13:15:42 -0800
>>> Dimitris Michailidis <dm@chelsio.com> wrote:
>>>
>>>> Stephen Hemminger wrote:
>>>>> I inspected all drivers in net-next to see which drivers are using
>>>>> LRO and which ones are broken. Most concerning is that Chelsio
>>>>> and Solarflare drivers ignore ETH_FLAG_LRO.
>>>>>
>>>>> The ones that are using LRO but allow disabling it:
>>>>>   qlcnic, netxen, mv643, s2io, myi10ge, bnx2x, ixgbe, vmxnet3
>>>>>
>>>>> One driver seems confused about LRO vs GRO:
>>>>>   mlx4 - comments about LRO and depends on LRO but driver is using GRO
>>>>>
>>>>> Drivers with not using ethtool interface to disable LRO:
>>>>>   pasemi_mac, sfc, ehea, cxgb3, cxgb4
>>>> cxgb4 uses GRO, not LRO.
>>> Ok. but cxgb3 still uses LRO (or it least calls it lro).
>>>
>> cxgb3 was the driver Herbert implemented GRO on I think, and he converted it 
>> to GRO.  It possibly has leftover LRO references as it was using LRO before.
> 
> There's a fair amount of code setting LRO flags in various structures,
> so either the driver still enables LRO in hardware/firmware or this is
> dead code.

 From a quick look it appears to have a per queue lro flag.  HW/FW are not 
aware of LRO, whatever flags that driver has are for SW.  I'd say it's 
obsolete but probably not dead code.

> 
> Ben.
> 


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

* Re: Misuse of LRO, how widespread
  2010-12-06 22:35     ` Ben Hutchings
@ 2010-12-10 23:03       ` David Miller
  0 siblings, 0 replies; 10+ messages in thread
From: David Miller @ 2010-12-10 23:03 UTC (permalink / raw)
  To: bhutchings; +Cc: shemminger, olof, divy, netdev

From: Ben Hutchings <bhutchings@solarflare.com>
Date: Mon, 06 Dec 2010 22:35:12 +0000

> On Mon, 2010-12-06 at 14:33 -0800, Stephen Hemminger wrote:
>> How about this?
>> 
>> Subject: sfc: convert references to LRO to GRO
>> 
>> This driver now uses Generic Receive Offload, not the older LRO.
>> Change references to LRO in names and comments.
>> 
>> Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
> Acked-by: Ben Hutchings <bhutchings@solarflare.com>

Applied to net-next-2.6, thanks!

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

end of thread, other threads:[~2010-12-10 23:03 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-12-06 20:18 Misuse of LRO, how widespread Stephen Hemminger
2010-12-06 20:30 ` Ben Hutchings
2010-12-06 22:33   ` Stephen Hemminger
2010-12-06 22:35     ` Ben Hutchings
2010-12-10 23:03       ` David Miller
2010-12-06 21:15 ` Dimitris Michailidis
2010-12-06 22:27   ` Stephen Hemminger
2010-12-06 23:05     ` Dimitris Michailidis
2010-12-06 23:22       ` Ben Hutchings
2010-12-06 23:36         ` Dimitris Michailidis

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