All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH NEXT 1/3] netxen: fix lro buffer allocation
@ 2009-09-03 23:10 Dhananjay Phadke
  2009-09-03 23:10 ` [PATCH NEXT 2/3] netxen: remove duplicate napi_add Dhananjay Phadke
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Dhananjay Phadke @ 2009-09-03 23:10 UTC (permalink / raw)
  To: davem; +Cc: netdev, Dhananjay Phadke

From: Dhananjay Phadke <dhananjay@qlogic.com>

Alloc 12k skbuffs so that firmware can aggregate more
packets into one buffer. This doesn't raise memory
consumption since 9k skbs use 16k slab cache anyway.

Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>
---
 drivers/net/netxen/netxen_nic.h      |    1 +
 drivers/net/netxen/netxen_nic_init.c |    8 ++++++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/net/netxen/netxen_nic.h b/drivers/net/netxen/netxen_nic.h
index 224a746..ede2fa7 100644
--- a/drivers/net/netxen/netxen_nic.h
+++ b/drivers/net/netxen/netxen_nic.h
@@ -149,6 +149,7 @@
 #define NX_P2_RX_JUMBO_BUF_MAX_LEN     (NX_MAX_ETHERHDR + P2_MAX_MTU)
 #define NX_P3_RX_JUMBO_BUF_MAX_LEN     (NX_MAX_ETHERHDR + P3_MAX_MTU)
 #define NX_CT_DEFAULT_RX_BUF_LEN	2048
+#define NX_LRO_BUFFER_EXTRA		2048
 
 #define NX_RX_LRO_BUFFER_LENGTH		(8060)
 
diff --git a/drivers/net/netxen/netxen_nic_init.c b/drivers/net/netxen/netxen_nic_init.c
index 8d4aa6f..04e36f2 100644
--- a/drivers/net/netxen/netxen_nic_init.c
+++ b/drivers/net/netxen/netxen_nic_init.c
@@ -265,6 +265,10 @@ int netxen_alloc_sw_resources(struct netxen_adapter *adapter)
 			else
 				rds_ring->dma_size =
 					NX_P2_RX_JUMBO_BUF_MAX_LEN;
+
+			if (adapter->capabilities & NX_CAP0_HW_LRO)
+				rds_ring->dma_size += NX_LRO_BUFFER_EXTRA;
+
 			rds_ring->skb_size =
 				rds_ring->dma_size + NET_IP_ALIGN;
 			break;
@@ -1217,6 +1221,7 @@ netxen_process_rcv(struct netxen_adapter *adapter,
 	if (pkt_offset)
 		skb_pull(skb, pkt_offset);
 
+	skb->truesize = skb->len + sizeof(struct sk_buff);
 	skb->protocol = eth_type_trans(skb, netdev);
 
 	napi_gro_receive(&sds_ring->napi, skb);
@@ -1278,8 +1283,7 @@ netxen_process_lro(struct netxen_adapter *adapter,
 
 	skb_put(skb, lro_length + data_offset);
 
-	skb->truesize = (skb->len + sizeof(struct sk_buff) +
-			((unsigned long)skb->data - (unsigned long)skb->head));
+	skb->truesize = skb->len + sizeof(struct sk_buff) + skb_headroom(skb);
 
 	skb_pull(skb, l2_hdr_offset);
 	skb->protocol = eth_type_trans(skb, netdev);
-- 
1.6.0.2


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

* [PATCH NEXT 2/3] netxen: remove duplicate napi_add
  2009-09-03 23:10 [PATCH NEXT 1/3] netxen: fix lro buffer allocation Dhananjay Phadke
@ 2009-09-03 23:10 ` Dhananjay Phadke
  2009-09-04  3:07   ` David Miller
  2009-09-03 23:10 ` [PATCH NEXT 3/3] netxen: fix infinite loop on dma mapping failure Dhananjay Phadke
  2009-09-04  3:06 ` [PATCH NEXT 1/3] netxen: fix lro buffer allocation David Miller
  2 siblings, 1 reply; 10+ messages in thread
From: Dhananjay Phadke @ 2009-09-03 23:10 UTC (permalink / raw)
  To: davem; +Cc: netdev

Remove duplicate calls to netxen_napi_add().

Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>
---
 drivers/net/netxen/netxen_nic_main.c |    6 ------
 1 files changed, 0 insertions(+), 6 deletions(-)

diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c
index f824a39..53d57dc 100644
--- a/drivers/net/netxen/netxen_nic_main.c
+++ b/drivers/net/netxen/netxen_nic_main.c
@@ -1095,10 +1095,6 @@ netxen_setup_netdev(struct netxen_adapter *adapter,
 
 	netdev->irq = adapter->msix_entries[0].vector;
 
-	err = netxen_napi_add(adapter, netdev);
-	if (err)
-		return err;
-
 	init_timer(&adapter->watchdog_timer);
 	adapter->watchdog_timer.function = &netxen_watchdog;
 	adapter->watchdog_timer.data = (unsigned long)adapter;
@@ -2038,8 +2034,6 @@ netxen_remove_sysfs_entries(struct netxen_adapter *adapter)
 		device_remove_file(dev, &dev_attr_bridged_mode);
 }
 
-static void netxen_watchdog(unsigned long);
-
 #ifdef CONFIG_INET
 
 #define is_netxen_netdev(dev) (dev->netdev_ops == &netxen_netdev_ops)
-- 
1.6.0.2


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

* [PATCH NEXT 3/3] netxen: fix infinite loop on dma mapping failure
  2009-09-03 23:10 [PATCH NEXT 1/3] netxen: fix lro buffer allocation Dhananjay Phadke
  2009-09-03 23:10 ` [PATCH NEXT 2/3] netxen: remove duplicate napi_add Dhananjay Phadke
@ 2009-09-03 23:10 ` Dhananjay Phadke
  2009-09-04  3:07   ` David Miller
  2009-09-04  3:06 ` [PATCH NEXT 1/3] netxen: fix lro buffer allocation David Miller
  2 siblings, 1 reply; 10+ messages in thread
From: Dhananjay Phadke @ 2009-09-03 23:10 UTC (permalink / raw)
  To: davem; +Cc: netdev

Fix a perpetual while() loop in unwinding partial
mapped tx skb on dma mapping failure.

Reported-by: "Juha Leppanen" <juha_motorsportcom@luukku.com>
Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>
---
 drivers/net/netxen/netxen_nic_main.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c
index 53d57dc..41b2967 100644
--- a/drivers/net/netxen/netxen_nic_main.c
+++ b/drivers/net/netxen/netxen_nic_main.c
@@ -1577,8 +1577,8 @@ netxen_map_tx_skb(struct pci_dev *pdev,
 	return 0;
 
 unwind:
-	while (i > 0) {
-		nf = &pbuf->frag_array[i];
+	while (--i >= 0) {
+		nf = &pbuf->frag_array[i+1];
 		pci_unmap_page(pdev, nf->dma, nf->length, PCI_DMA_TODEVICE);
 	}
 
-- 
1.6.0.2


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

* Re: [PATCH NEXT 1/3] netxen: fix lro buffer allocation
  2009-09-03 23:10 [PATCH NEXT 1/3] netxen: fix lro buffer allocation Dhananjay Phadke
  2009-09-03 23:10 ` [PATCH NEXT 2/3] netxen: remove duplicate napi_add Dhananjay Phadke
  2009-09-03 23:10 ` [PATCH NEXT 3/3] netxen: fix infinite loop on dma mapping failure Dhananjay Phadke
@ 2009-09-04  3:06 ` David Miller
  2009-09-04  3:14   ` Dhananjay Phadke
  2 siblings, 1 reply; 10+ messages in thread
From: David Miller @ 2009-09-04  3:06 UTC (permalink / raw)
  To: dhananjay; +Cc: davem, netdev, dhananjay

From: Dhananjay Phadke <dhananjay@netxen.com>
Date: Thu,  3 Sep 2009 16:10:53 -0700

> From: Dhananjay Phadke <dhananjay@qlogic.com>
> 
> Alloc 12k skbuffs so that firmware can aggregate more
> packets into one buffer. This doesn't raise memory
> consumption since 9k skbs use 16k slab cache anyway.
> 
> Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>

Applied.  But allocating such huge linear buffers is asking for
guarenteed trouble.  Can't you split them up into page sized chunks
with this chip?

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

* Re: [PATCH NEXT 2/3] netxen: remove duplicate napi_add
  2009-09-03 23:10 ` [PATCH NEXT 2/3] netxen: remove duplicate napi_add Dhananjay Phadke
@ 2009-09-04  3:07   ` David Miller
  0 siblings, 0 replies; 10+ messages in thread
From: David Miller @ 2009-09-04  3:07 UTC (permalink / raw)
  To: dhananjay; +Cc: davem, netdev

From: Dhananjay Phadke <dhananjay@netxen.com>
Date: Thu,  3 Sep 2009 16:10:54 -0700

> Remove duplicate calls to netxen_napi_add().
> 
> Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>

Applied, but:

> @@ -2038,8 +2034,6 @@ netxen_remove_sysfs_entries(struct netxen_adapter *adapter)
>  		device_remove_file(dev, &dev_attr_bridged_mode);
>  }
>  
> -static void netxen_watchdog(unsigned long);
> -
>  #ifdef CONFIG_INET
>  
>  #define is_netxen_netdev(dev) (dev->netdev_ops == &netxen_netdev_ops)

Give me a friggin' break, really.

If you're going to slip unrelated cleanups like this into your
patches, at least DOCUMENT them in the commit message.

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

* Re: [PATCH NEXT 3/3] netxen: fix infinite loop on dma mapping failure
  2009-09-03 23:10 ` [PATCH NEXT 3/3] netxen: fix infinite loop on dma mapping failure Dhananjay Phadke
@ 2009-09-04  3:07   ` David Miller
  0 siblings, 0 replies; 10+ messages in thread
From: David Miller @ 2009-09-04  3:07 UTC (permalink / raw)
  To: dhananjay; +Cc: davem, netdev

From: Dhananjay Phadke <dhananjay@netxen.com>
Date: Thu,  3 Sep 2009 16:10:55 -0700

> Fix a perpetual while() loop in unwinding partial
> mapped tx skb on dma mapping failure.
> 
> Reported-by: "Juha Leppanen" <juha_motorsportcom@luukku.com>
> Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>

Applied.

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

* RE: [PATCH NEXT 1/3] netxen: fix lro buffer allocation
  2009-09-04  3:06 ` [PATCH NEXT 1/3] netxen: fix lro buffer allocation David Miller
@ 2009-09-04  3:14   ` Dhananjay Phadke
  2009-09-04  3:15     ` David Miller
  0 siblings, 1 reply; 10+ messages in thread
From: Dhananjay Phadke @ 2009-09-04  3:14 UTC (permalink / raw)
  To: David Miller; +Cc: davem, netdev

 

> Applied.  But allocating such huge linear buffers is asking for
> guarenteed trouble.  Can't you split them up into page sized chunks
> with this chip?

"chained" LRO is not enabled by firmware. Contiguous LRO requires
fewer commands (internal) from firmware to DMA engines.

-Dhananjay

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

* Re: [PATCH NEXT 1/3] netxen: fix lro buffer allocation
  2009-09-04  3:14   ` Dhananjay Phadke
@ 2009-09-04  3:15     ` David Miller
  2009-09-04  3:24       ` Dhananjay Phadke
  0 siblings, 1 reply; 10+ messages in thread
From: David Miller @ 2009-09-04  3:15 UTC (permalink / raw)
  To: dhananjay.phadke; +Cc: davem, netdev

From: Dhananjay Phadke <dhananjay.phadke@qlogic.com>
Date: Thu, 3 Sep 2009 20:14:01 -0700

>  
> 
>> Applied.  But allocating such huge linear buffers is asking for
>> guarenteed trouble.  Can't you split them up into page sized chunks
>> with this chip?
> 
> "chained" LRO is not enabled by firmware. Contiguous LRO requires
> fewer commands (internal) from firmware to DMA engines.

But if the page allocator can't satisfy allocation requests
it doesn't matter how many microseconds you're saving here.

I think you're priorities are backwards.

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

* RE: [PATCH NEXT 1/3] netxen: fix lro buffer allocation
  2009-09-04  3:15     ` David Miller
@ 2009-09-04  3:24       ` Dhananjay Phadke
  2009-09-04  3:33         ` David Miller
  0 siblings, 1 reply; 10+ messages in thread
From: Dhananjay Phadke @ 2009-09-04  3:24 UTC (permalink / raw)
  To: David Miller; +Cc: davem, netdev

> But if the page allocator can't satisfy allocation requests
> it doesn't matter how many microseconds you're saving here.
> 
> I think you're priorities are backwards.

Ok whatever. Whether I request 9k or 12k, page allocator
is digging 16k chunks.

When there's enough memory, every cycle saved is important
for firmware. I would love to enable fragmented rx, if it's
not affecting throughput.

-Dhananjay

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

* Re: [PATCH NEXT 1/3] netxen: fix lro buffer allocation
  2009-09-04  3:24       ` Dhananjay Phadke
@ 2009-09-04  3:33         ` David Miller
  0 siblings, 0 replies; 10+ messages in thread
From: David Miller @ 2009-09-04  3:33 UTC (permalink / raw)
  To: dhananjay.phadke; +Cc: davem, netdev

From: Dhananjay Phadke <dhananjay.phadke@qlogic.com>
Date: Thu, 3 Sep 2009 20:24:15 -0700

>> But if the page allocator can't satisfy allocation requests
>> it doesn't matter how many microseconds you're saving here.
>> 
>> I think you're priorities are backwards.
> 
> Ok whatever. Whether I request 9k or 12k, page allocator
> is digging 16k chunks.
> 
> When there's enough memory, every cycle saved is important
> for firmware. I would love to enable fragmented rx, if it's
> not affecting throughput.

Ok.

Just FYI I won't be surprised if SLAB/SLUB/SLQB at some point
handle this situation differently.

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

end of thread, other threads:[~2009-09-04  3:33 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-09-03 23:10 [PATCH NEXT 1/3] netxen: fix lro buffer allocation Dhananjay Phadke
2009-09-03 23:10 ` [PATCH NEXT 2/3] netxen: remove duplicate napi_add Dhananjay Phadke
2009-09-04  3:07   ` David Miller
2009-09-03 23:10 ` [PATCH NEXT 3/3] netxen: fix infinite loop on dma mapping failure Dhananjay Phadke
2009-09-04  3:07   ` David Miller
2009-09-04  3:06 ` [PATCH NEXT 1/3] netxen: fix lro buffer allocation David Miller
2009-09-04  3:14   ` Dhananjay Phadke
2009-09-04  3:15     ` David Miller
2009-09-04  3:24       ` Dhananjay Phadke
2009-09-04  3:33         ` David Miller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.