diff options
author | Jon Mason <jon.mason@exar.com> | 2011-01-18 10:02:21 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-01-20 02:18:14 -0500 |
commit | 16fded7da2cefc619ece0d44f8df76b533c43fd2 (patch) | |
tree | ec9ca42bf2e754e378dbd701def152c7dc5cf194 /drivers/net/vxge/vxge-main.h | |
parent | 1d15f81cda496f1c1d59af7458ea0bcdeeb726f3 (diff) |
vxge: MSIX one shot mode
To reduce the possibility of losing an interrupt in the handler due to a
race between an interrupt processing and disable/enable of interrupts,
enable MSIX one shot.
Also, add support for adaptive interrupt coalesing
Signed-off-by: Jon Mason <jon.mason@exar.com>
Signed-off-by: Masroor Vettuparambil <masroor.vettuparambil@exar.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/vxge/vxge-main.h')
-rw-r--r-- | drivers/net/vxge/vxge-main.h | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/drivers/net/vxge/vxge-main.h b/drivers/net/vxge/vxge-main.h index 5746fedc356f..40474f0da576 100644 --- a/drivers/net/vxge/vxge-main.h +++ b/drivers/net/vxge/vxge-main.h | |||
@@ -59,11 +59,13 @@ | |||
59 | #define VXGE_TTI_LTIMER_VAL 1000 | 59 | #define VXGE_TTI_LTIMER_VAL 1000 |
60 | #define VXGE_T1A_TTI_LTIMER_VAL 80 | 60 | #define VXGE_T1A_TTI_LTIMER_VAL 80 |
61 | #define VXGE_TTI_RTIMER_VAL 0 | 61 | #define VXGE_TTI_RTIMER_VAL 0 |
62 | #define VXGE_TTI_RTIMER_ADAPT_VAL 10 | ||
62 | #define VXGE_T1A_TTI_RTIMER_VAL 400 | 63 | #define VXGE_T1A_TTI_RTIMER_VAL 400 |
63 | #define VXGE_RTI_BTIMER_VAL 250 | 64 | #define VXGE_RTI_BTIMER_VAL 250 |
64 | #define VXGE_RTI_LTIMER_VAL 100 | 65 | #define VXGE_RTI_LTIMER_VAL 100 |
65 | #define VXGE_RTI_RTIMER_VAL 0 | 66 | #define VXGE_RTI_RTIMER_VAL 0 |
66 | #define VXGE_FIFO_INDICATE_MAX_PKTS VXGE_DEF_FIFO_LENGTH | 67 | #define VXGE_RTI_RTIMER_ADAPT_VAL 15 |
68 | #define VXGE_FIFO_INDICATE_MAX_PKTS VXGE_DEF_FIFO_LENGTH | ||
67 | #define VXGE_ISR_POLLING_CNT 8 | 69 | #define VXGE_ISR_POLLING_CNT 8 |
68 | #define VXGE_MAX_CONFIG_DEV 0xFF | 70 | #define VXGE_MAX_CONFIG_DEV 0xFF |
69 | #define VXGE_EXEC_MODE_DISABLE 0 | 71 | #define VXGE_EXEC_MODE_DISABLE 0 |
@@ -107,6 +109,14 @@ | |||
107 | #define RTI_T1A_RX_UFC_C 50 | 109 | #define RTI_T1A_RX_UFC_C 50 |
108 | #define RTI_T1A_RX_UFC_D 60 | 110 | #define RTI_T1A_RX_UFC_D 60 |
109 | 111 | ||
112 | /* | ||
113 | * The interrupt rate is maintained at 3k per second with the moderation | ||
114 | * parameters for most traffic but not all. This is the maximum interrupt | ||
115 | * count allowed per function with INTA or per vector in the case of | ||
116 | * MSI-X in a 10 millisecond time period. Enabled only for Titan 1A. | ||
117 | */ | ||
118 | #define VXGE_T1A_MAX_INTERRUPT_COUNT 100 | ||
119 | #define VXGE_T1A_MAX_TX_INTERRUPT_COUNT 200 | ||
110 | 120 | ||
111 | /* Milli secs timer period */ | 121 | /* Milli secs timer period */ |
112 | #define VXGE_TIMER_DELAY 10000 | 122 | #define VXGE_TIMER_DELAY 10000 |
@@ -247,6 +257,11 @@ struct vxge_fifo { | |||
247 | int tx_steering_type; | 257 | int tx_steering_type; |
248 | int indicate_max_pkts; | 258 | int indicate_max_pkts; |
249 | 259 | ||
260 | /* Adaptive interrupt moderation parameters used in T1A */ | ||
261 | unsigned long interrupt_count; | ||
262 | unsigned long jiffies; | ||
263 | |||
264 | u32 tx_vector_no; | ||
250 | /* Tx stats */ | 265 | /* Tx stats */ |
251 | struct vxge_fifo_stats stats; | 266 | struct vxge_fifo_stats stats; |
252 | } ____cacheline_aligned; | 267 | } ____cacheline_aligned; |
@@ -271,6 +286,10 @@ struct vxge_ring { | |||
271 | */ | 286 | */ |
272 | int driver_id; | 287 | int driver_id; |
273 | 288 | ||
289 | /* Adaptive interrupt moderation parameters used in T1A */ | ||
290 | unsigned long interrupt_count; | ||
291 | unsigned long jiffies; | ||
292 | |||
274 | /* copy of the flag indicating whether rx_csum is to be used */ | 293 | /* copy of the flag indicating whether rx_csum is to be used */ |
275 | u32 rx_csum:1, | 294 | u32 rx_csum:1, |
276 | rx_hwts:1; | 295 | rx_hwts:1; |
@@ -286,7 +305,7 @@ struct vxge_ring { | |||
286 | 305 | ||
287 | int vlan_tag_strip; | 306 | int vlan_tag_strip; |
288 | struct vlan_group *vlgrp; | 307 | struct vlan_group *vlgrp; |
289 | int rx_vector_no; | 308 | u32 rx_vector_no; |
290 | enum vxge_hw_status last_status; | 309 | enum vxge_hw_status last_status; |
291 | 310 | ||
292 | /* Rx stats */ | 311 | /* Rx stats */ |