aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDivy Le Ray <divy@chelsio.com>2007-03-18 16:10:01 -0400
committerJeff Garzik <jeff@garzik.org>2007-03-23 01:48:33 -0400
commit05b97b30b09ed245d376035cddf669532e5cca67 (patch)
treeb59cbea846c46cc58ee33afd45f408ffad0b13d0
parent5c4851ccb6b12ff29e28b84e7515a18006b19fdf (diff)
cxgb3 - fix ethtool cmd on multiple queues port
Limit ethtool -g/-G to the given port's queues. Signed-off-by: Divy Le Ray <divy@chelsio.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
-rw-r--r--drivers/net/cxgb3/cxgb3_main.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/drivers/net/cxgb3/cxgb3_main.c b/drivers/net/cxgb3/cxgb3_main.c
index 7ff834e45d6b..eb0a4e068200 100644
--- a/drivers/net/cxgb3/cxgb3_main.c
+++ b/drivers/net/cxgb3/cxgb3_main.c
@@ -1362,23 +1362,27 @@ static int set_rx_csum(struct net_device *dev, u32 data)
1362 1362
1363static void get_sge_param(struct net_device *dev, struct ethtool_ringparam *e) 1363static void get_sge_param(struct net_device *dev, struct ethtool_ringparam *e)
1364{ 1364{
1365 struct adapter *adapter = dev->priv; 1365 const struct adapter *adapter = dev->priv;
1366 const struct port_info *pi = netdev_priv(dev);
1367 const struct qset_params *q = &adapter->params.sge.qset[pi->first_qset];
1366 1368
1367 e->rx_max_pending = MAX_RX_BUFFERS; 1369 e->rx_max_pending = MAX_RX_BUFFERS;
1368 e->rx_mini_max_pending = 0; 1370 e->rx_mini_max_pending = 0;
1369 e->rx_jumbo_max_pending = MAX_RX_JUMBO_BUFFERS; 1371 e->rx_jumbo_max_pending = MAX_RX_JUMBO_BUFFERS;
1370 e->tx_max_pending = MAX_TXQ_ENTRIES; 1372 e->tx_max_pending = MAX_TXQ_ENTRIES;
1371 1373
1372 e->rx_pending = adapter->params.sge.qset[0].fl_size; 1374 e->rx_pending = q->fl_size;
1373 e->rx_mini_pending = adapter->params.sge.qset[0].rspq_size; 1375 e->rx_mini_pending = q->rspq_size;
1374 e->rx_jumbo_pending = adapter->params.sge.qset[0].jumbo_size; 1376 e->rx_jumbo_pending = q->jumbo_size;
1375 e->tx_pending = adapter->params.sge.qset[0].txq_size[0]; 1377 e->tx_pending = q->txq_size[0];
1376} 1378}
1377 1379
1378static int set_sge_param(struct net_device *dev, struct ethtool_ringparam *e) 1380static int set_sge_param(struct net_device *dev, struct ethtool_ringparam *e)
1379{ 1381{
1380 int i; 1382 int i;
1383 struct qset_params *q;
1381 struct adapter *adapter = dev->priv; 1384 struct adapter *adapter = dev->priv;
1385 const struct port_info *pi = netdev_priv(dev);
1382 1386
1383 if (e->rx_pending > MAX_RX_BUFFERS || 1387 if (e->rx_pending > MAX_RX_BUFFERS ||
1384 e->rx_jumbo_pending > MAX_RX_JUMBO_BUFFERS || 1388 e->rx_jumbo_pending > MAX_RX_JUMBO_BUFFERS ||
@@ -1393,9 +1397,8 @@ static int set_sge_param(struct net_device *dev, struct ethtool_ringparam *e)
1393 if (adapter->flags & FULL_INIT_DONE) 1397 if (adapter->flags & FULL_INIT_DONE)
1394 return -EBUSY; 1398 return -EBUSY;
1395 1399
1396 for (i = 0; i < SGE_QSETS; ++i) { 1400 q = &adapter->params.sge.qset[pi->first_qset];
1397 struct qset_params *q = &adapter->params.sge.qset[i]; 1401 for (i = 0; i < pi->nqsets; ++i, ++q) {
1398
1399 q->rspq_size = e->rx_mini_pending; 1402 q->rspq_size = e->rx_mini_pending;
1400 q->fl_size = e->rx_pending; 1403 q->fl_size = e->rx_pending;
1401 q->jumbo_size = e->rx_jumbo_pending; 1404 q->jumbo_size = e->rx_jumbo_pending;