diff options
author | Scott Feldman <scofeldm@cisco.com> | 2009-12-23 08:27:54 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-12-24 00:03:41 -0500 |
commit | 7c8445991172cc17eaca9f7de0a300c02caaa49d (patch) | |
tree | 0518a514d0d3e5af0d6442a2ef72aa10bbce58ae /drivers/net/enic/enic_res.c | |
parent | bd2496229e702b2eb50eab5589858a3cdb7847b2 (diff) |
enic: feature add: add ethtool -c/C support
Only rx_usec and tx_usec options for ethtool -C are settable as those
are the only settings that make sense to HW. Adds driver reporting of
intr coalescing timer value in usec units rather than HW units.
Signed-off-by: Vasanthy Kolluri <vkolluri@cisco.com>
Signed-off-by: Scott Feldman <scofeldm@cisco.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/enic/enic_res.c')
-rw-r--r-- | drivers/net/enic/enic_res.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/net/enic/enic_res.c b/drivers/net/enic/enic_res.c index a605da1475c6..02839bf0fe8b 100644 --- a/drivers/net/enic/enic_res.c +++ b/drivers/net/enic/enic_res.c | |||
@@ -66,9 +66,9 @@ int enic_get_vnic_config(struct enic *enic) | |||
66 | GET_CONFIG(wq_desc_count); | 66 | GET_CONFIG(wq_desc_count); |
67 | GET_CONFIG(rq_desc_count); | 67 | GET_CONFIG(rq_desc_count); |
68 | GET_CONFIG(mtu); | 68 | GET_CONFIG(mtu); |
69 | GET_CONFIG(intr_timer); | ||
70 | GET_CONFIG(intr_timer_type); | 69 | GET_CONFIG(intr_timer_type); |
71 | GET_CONFIG(intr_mode); | 70 | GET_CONFIG(intr_mode); |
71 | GET_CONFIG(intr_timer_usec); | ||
72 | 72 | ||
73 | c->wq_desc_count = | 73 | c->wq_desc_count = |
74 | min_t(u32, ENIC_MAX_WQ_DESCS, | 74 | min_t(u32, ENIC_MAX_WQ_DESCS, |
@@ -88,15 +88,17 @@ int enic_get_vnic_config(struct enic *enic) | |||
88 | max_t(u16, ENIC_MIN_MTU, | 88 | max_t(u16, ENIC_MIN_MTU, |
89 | c->mtu)); | 89 | c->mtu)); |
90 | 90 | ||
91 | c->intr_timer = min_t(u16, VNIC_INTR_TIMER_MAX, c->intr_timer); | 91 | c->intr_timer_usec = min_t(u32, |
92 | INTR_COALESCE_HW_TO_USEC(VNIC_INTR_TIMER_MAX), | ||
93 | c->intr_timer_usec); | ||
92 | 94 | ||
93 | printk(KERN_INFO PFX "vNIC MAC addr %pM wq/rq %d/%d\n", | 95 | printk(KERN_INFO PFX "vNIC MAC addr %pM wq/rq %d/%d\n", |
94 | enic->mac_addr, c->wq_desc_count, c->rq_desc_count); | 96 | enic->mac_addr, c->wq_desc_count, c->rq_desc_count); |
95 | printk(KERN_INFO PFX "vNIC mtu %d csum tx/rx %d/%d tso/lro %d/%d " | 97 | printk(KERN_INFO PFX "vNIC mtu %d csum tx/rx %d/%d tso/lro %d/%d " |
96 | "intr timer %d\n", | 98 | "intr timer %d usec\n", |
97 | c->mtu, ENIC_SETTING(enic, TXCSUM), | 99 | c->mtu, ENIC_SETTING(enic, TXCSUM), |
98 | ENIC_SETTING(enic, RXCSUM), ENIC_SETTING(enic, TSO), | 100 | ENIC_SETTING(enic, RXCSUM), ENIC_SETTING(enic, TSO), |
99 | ENIC_SETTING(enic, LRO), c->intr_timer); | 101 | ENIC_SETTING(enic, LRO), c->intr_timer_usec); |
100 | 102 | ||
101 | return 0; | 103 | return 0; |
102 | } | 104 | } |
@@ -303,7 +305,7 @@ void enic_init_vnic_resources(struct enic *enic) | |||
303 | 305 | ||
304 | for (i = 0; i < enic->intr_count; i++) { | 306 | for (i = 0; i < enic->intr_count; i++) { |
305 | vnic_intr_init(&enic->intr[i], | 307 | vnic_intr_init(&enic->intr[i], |
306 | enic->config.intr_timer, | 308 | INTR_COALESCE_USEC_TO_HW(enic->config.intr_timer_usec), |
307 | enic->config.intr_timer_type, | 309 | enic->config.intr_timer_type, |
308 | mask_on_assertion); | 310 | mask_on_assertion); |
309 | } | 311 | } |