* [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.