Commit 39aa8165 authored by Ron Mercer's avatar Ron Mercer Committed by David S. Miller

qlge: Move TX completions from workqueue to NAPI.

TX completions were running in a workqueue queued by the ISR.  This
patch moves the processing of TX completions to an existing RSS NAPI
context.
Now each irq vector runs NAPI for one RSS ring and one or more TX
completion rings.
Signed-off-by: default avatarRon Mercer <ron.mercer@qlogic.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent a4ab6137
...@@ -1292,7 +1292,6 @@ struct rx_ring { ...@@ -1292,7 +1292,6 @@ struct rx_ring {
u32 cpu; /* Which CPU this should run on. */ u32 cpu; /* Which CPU this should run on. */
char name[IFNAMSIZ + 5]; char name[IFNAMSIZ + 5];
struct napi_struct napi; struct napi_struct napi;
struct delayed_work rx_work;
u8 reserved; u8 reserved;
struct ql_adapter *qdev; struct ql_adapter *qdev;
}; };
...@@ -1366,6 +1365,7 @@ struct nic_stats { ...@@ -1366,6 +1365,7 @@ struct nic_stats {
struct intr_context { struct intr_context {
struct ql_adapter *qdev; struct ql_adapter *qdev;
u32 intr; u32 intr;
u32 irq_mask; /* Mask of which rings the vector services. */
u32 hooked; u32 hooked;
u32 intr_en_mask; /* value/mask used to enable this intr */ u32 intr_en_mask; /* value/mask used to enable this intr */
u32 intr_dis_mask; /* value/mask used to disable this intr */ u32 intr_dis_mask; /* value/mask used to disable this intr */
...@@ -1486,11 +1486,11 @@ struct ql_adapter { ...@@ -1486,11 +1486,11 @@ struct ql_adapter {
struct intr_context intr_context[MAX_RX_RINGS]; struct intr_context intr_context[MAX_RX_RINGS];
int tx_ring_count; /* One per online CPU. */ int tx_ring_count; /* One per online CPU. */
u32 rss_ring_count; /* One per online CPU. */ u32 rss_ring_count; /* One per irq vector. */
/* /*
* rx_ring_count = * rx_ring_count =
* (CPU count * outbound completion rx_ring) + * (CPU count * outbound completion rx_ring) +
* (CPU count * inbound (RSS) completion rx_ring) * (irq_vector_cnt * inbound (RSS) completion rx_ring)
*/ */
int rx_ring_count; int rx_ring_count;
int ring_mem_size; int ring_mem_size;
...@@ -1517,7 +1517,6 @@ struct ql_adapter { ...@@ -1517,7 +1517,6 @@ struct ql_adapter {
union flash_params flash; union flash_params flash;
struct net_device_stats stats; struct net_device_stats stats;
struct workqueue_struct *q_workqueue;
struct workqueue_struct *workqueue; struct workqueue_struct *workqueue;
struct delayed_work asic_reset_work; struct delayed_work asic_reset_work;
struct delayed_work mpi_reset_work; struct delayed_work mpi_reset_work;
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment