aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/ibm/ehea/ehea_ethtool.c
diff options
context:
space:
mode:
authorAnton Blanchard <anton@samba.org>2011-10-14 01:30:59 -0400
committerDavid S. Miller <davem@davemloft.net>2011-10-17 19:00:54 -0400
commitb95644685d530de5e9f9658bd8087e50840b831d (patch)
tree42e51c1e3fbfd52063972c61691b62fb6f3197f0 /drivers/net/ethernet/ibm/ehea/ehea_ethtool.c
parent3f7947b9f069c125ffdedc75ac9c4e3101fc2c6a (diff)
ehea: Update multiqueue support
The ehea driver had some multiqueue support but was missing the last few years of networking stack improvements: - Use skb_record_rx_queue to record which queue an skb came in on. - Remove the driver specific netif_queue lock and use the networking stack transmit lock instead. - Remove the driver specific transmit queue hashing and use skb_get_queue_mapping instead. - Use netif_tx_{start|stop|wake}_queue where appropriate. We can also remove pr->queue_stopped and just check the queue status directly. - Print all 16 queues in the ethtool stats. We now enable multiqueue by default since it is a clear win on all my testing so far. v3: [cascardo] fixed use_mcs parameter description [cascardo] set ehea_ethtool_stats_keys as const Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/ibm/ehea/ehea_ethtool.c')
-rw-r--r--drivers/net/ethernet/ibm/ehea/ehea_ethtool.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/drivers/net/ethernet/ibm/ehea/ehea_ethtool.c b/drivers/net/ethernet/ibm/ehea/ehea_ethtool.c
index 7f642aef5e82..d185016c79ef 100644
--- a/drivers/net/ethernet/ibm/ehea/ehea_ethtool.c
+++ b/drivers/net/ethernet/ibm/ehea/ehea_ethtool.c
@@ -180,7 +180,7 @@ static void ehea_set_msglevel(struct net_device *dev, u32 value)
180 port->msg_enable = value; 180 port->msg_enable = value;
181} 181}
182 182
183static char ehea_ethtool_stats_keys[][ETH_GSTRING_LEN] = { 183static const char ehea_ethtool_stats_keys[][ETH_GSTRING_LEN] = {
184 {"sig_comp_iv"}, 184 {"sig_comp_iv"},
185 {"swqe_refill_th"}, 185 {"swqe_refill_th"},
186 {"port resets"}, 186 {"port resets"},
@@ -189,7 +189,6 @@ static char ehea_ethtool_stats_keys[][ETH_GSTRING_LEN] = {
189 {"IP cksum errors"}, 189 {"IP cksum errors"},
190 {"Frame cksum errors"}, 190 {"Frame cksum errors"},
191 {"num SQ stopped"}, 191 {"num SQ stopped"},
192 {"SQ stopped"},
193 {"PR0 free_swqes"}, 192 {"PR0 free_swqes"},
194 {"PR1 free_swqes"}, 193 {"PR1 free_swqes"},
195 {"PR2 free_swqes"}, 194 {"PR2 free_swqes"},
@@ -198,6 +197,14 @@ static char ehea_ethtool_stats_keys[][ETH_GSTRING_LEN] = {
198 {"PR5 free_swqes"}, 197 {"PR5 free_swqes"},
199 {"PR6 free_swqes"}, 198 {"PR6 free_swqes"},
200 {"PR7 free_swqes"}, 199 {"PR7 free_swqes"},
200 {"PR8 free_swqes"},
201 {"PR9 free_swqes"},
202 {"PR10 free_swqes"},
203 {"PR11 free_swqes"},
204 {"PR12 free_swqes"},
205 {"PR13 free_swqes"},
206 {"PR14 free_swqes"},
207 {"PR15 free_swqes"},
201 {"LRO aggregated"}, 208 {"LRO aggregated"},
202 {"LRO flushed"}, 209 {"LRO flushed"},
203 {"LRO no_desc"}, 210 {"LRO no_desc"},
@@ -255,11 +262,7 @@ static void ehea_get_ethtool_stats(struct net_device *dev,
255 tmp += port->port_res[k].p_stats.queue_stopped; 262 tmp += port->port_res[k].p_stats.queue_stopped;
256 data[i++] = tmp; 263 data[i++] = tmp;
257 264
258 for (k = 0, tmp = 0; k < EHEA_MAX_PORT_RES; k++) 265 for (k = 0; k < 16; k++)
259 tmp |= port->port_res[k].queue_stopped;
260 data[i++] = tmp;
261
262 for (k = 0; k < 8; k++)
263 data[i++] = atomic_read(&port->port_res[k].swqe_avail); 266 data[i++] = atomic_read(&port->port_res[k].swqe_avail);
264 267
265 for (k = 0, tmp = 0; k < EHEA_MAX_PORT_RES; k++) 268 for (k = 0, tmp = 0; k < EHEA_MAX_PORT_RES; k++)