aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/tehuti.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/tehuti.c')
-rw-r--r--drivers/net/tehuti.c45
1 files changed, 21 insertions, 24 deletions
diff --git a/drivers/net/tehuti.c b/drivers/net/tehuti.c
index ec9dfb251f30..80b404f2b938 100644
--- a/drivers/net/tehuti.c
+++ b/drivers/net/tehuti.c
@@ -420,7 +420,7 @@ static int bdx_hw_start(struct bdx_priv *priv)
420 GMAC_RX_FILTER_AM | GMAC_RX_FILTER_AB); 420 GMAC_RX_FILTER_AM | GMAC_RX_FILTER_AB);
421 421
422#define BDX_IRQ_TYPE ((priv->nic->irq_type == IRQ_MSI)?0:IRQF_SHARED) 422#define BDX_IRQ_TYPE ((priv->nic->irq_type == IRQ_MSI)?0:IRQF_SHARED)
423 if ((rc = request_irq(priv->pdev->irq, &bdx_isr_napi, BDX_IRQ_TYPE, 423 if ((rc = request_irq(priv->pdev->irq, bdx_isr_napi, BDX_IRQ_TYPE,
424 ndev->name, ndev))) 424 ndev->name, ndev)))
425 goto err_irq; 425 goto err_irq;
426 bdx_enable_interrupts(priv); 426 bdx_enable_interrupts(priv);
@@ -1784,9 +1784,9 @@ static void bdx_tx_cleanup(struct bdx_priv *priv)
1784 } 1784 }
1785#endif 1785#endif
1786 1786
1787 if (unlikely(netif_queue_stopped(priv->ndev) 1787 if (unlikely(netif_queue_stopped(priv->ndev) &&
1788 && netif_carrier_ok(priv->ndev) 1788 netif_carrier_ok(priv->ndev) &&
1789 && (priv->tx_level >= BDX_MIN_TX_LEVEL))) { 1789 (priv->tx_level >= BDX_MIN_TX_LEVEL))) {
1790 DBG("%s: %s: TX Q WAKE level %d\n", 1790 DBG("%s: %s: TX Q WAKE level %d\n",
1791 BDX_DRV_NAME, priv->ndev->name, priv->tx_level); 1791 BDX_DRV_NAME, priv->ndev->name, priv->tx_level);
1792 netif_wake_queue(priv->ndev); 1792 netif_wake_queue(priv->ndev);
@@ -1878,7 +1878,7 @@ static void bdx_tx_push_desc_safe(struct bdx_priv *priv, void *data, int size)
1878 udelay(50); /* give hw a chance to clean fifo */ 1878 udelay(50); /* give hw a chance to clean fifo */
1879 continue; 1879 continue;
1880 } 1880 }
1881 avail = MIN(avail, size); 1881 avail = min(avail, size);
1882 DBG("about to push %d bytes starting %p size %d\n", avail, 1882 DBG("about to push %d bytes starting %p size %d\n", avail,
1883 data, size); 1883 data, size);
1884 bdx_tx_push_desc(priv, data, avail); 1884 bdx_tx_push_desc(priv, data, avail);
@@ -2105,12 +2105,6 @@ err_pci:
2105} 2105}
2106 2106
2107/****************** Ethtool interface *********************/ 2107/****************** Ethtool interface *********************/
2108/* get strings for tests */
2109static const char
2110 bdx_test_names[][ETH_GSTRING_LEN] = {
2111 "No tests defined"
2112};
2113
2114/* get strings for statistics counters */ 2108/* get strings for statistics counters */
2115static const char 2109static const char
2116 bdx_stat_names[][ETH_GSTRING_LEN] = { 2110 bdx_stat_names[][ETH_GSTRING_LEN] = {
@@ -2279,8 +2273,8 @@ bdx_set_coalesce(struct net_device *netdev, struct ethtool_coalesce *ecoal)
2279 (((tx_max_coal * BDX_TXF_DESC_SZ) + PCK_TH_MULT - 1) 2273 (((tx_max_coal * BDX_TXF_DESC_SZ) + PCK_TH_MULT - 1)
2280 / PCK_TH_MULT); 2274 / PCK_TH_MULT);
2281 2275
2282 if ((rx_coal > 0x7FFF) || (tx_coal > 0x7FFF) 2276 if ((rx_coal > 0x7FFF) || (tx_coal > 0x7FFF) ||
2283 || (rx_max_coal > 0xF) || (tx_max_coal > 0xF)) 2277 (rx_max_coal > 0xF) || (tx_max_coal > 0xF))
2284 return -EINVAL; 2278 return -EINVAL;
2285 2279
2286 rdintcm = INT_REG_VAL(rx_coal, GET_INT_COAL_RC(priv->rdintcm), 2280 rdintcm = INT_REG_VAL(rx_coal, GET_INT_COAL_RC(priv->rdintcm),
@@ -2353,8 +2347,8 @@ bdx_set_ringparam(struct net_device *netdev, struct ethtool_ringparam *ring)
2353 tx_size = 3; 2347 tx_size = 3;
2354 2348
2355 /*Is there anything to do? */ 2349 /*Is there anything to do? */
2356 if ((rx_size == priv->rxf_size) 2350 if ((rx_size == priv->rxf_size) &&
2357 && (tx_size == priv->txd_size)) 2351 (tx_size == priv->txd_size))
2358 return 0; 2352 return 0;
2359 2353
2360 priv->rxf_size = rx_size; 2354 priv->rxf_size = rx_size;
@@ -2380,9 +2374,6 @@ bdx_set_ringparam(struct net_device *netdev, struct ethtool_ringparam *ring)
2380static void bdx_get_strings(struct net_device *netdev, u32 stringset, u8 *data) 2374static void bdx_get_strings(struct net_device *netdev, u32 stringset, u8 *data)
2381{ 2375{
2382 switch (stringset) { 2376 switch (stringset) {
2383 case ETH_SS_TEST:
2384 memcpy(data, *bdx_test_names, sizeof(bdx_test_names));
2385 break;
2386 case ETH_SS_STATS: 2377 case ETH_SS_STATS:
2387 memcpy(data, *bdx_stat_names, sizeof(bdx_stat_names)); 2378 memcpy(data, *bdx_stat_names, sizeof(bdx_stat_names));
2388 break; 2379 break;
@@ -2390,15 +2381,21 @@ static void bdx_get_strings(struct net_device *netdev, u32 stringset, u8 *data)
2390} 2381}
2391 2382
2392/* 2383/*
2393 * bdx_get_stats_count - return number of 64bit statistics counters 2384 * bdx_get_sset_count - return number of statistics or tests
2394 * @netdev 2385 * @netdev
2395 */ 2386 */
2396static int bdx_get_stats_count(struct net_device *netdev) 2387static int bdx_get_sset_count(struct net_device *netdev, int stringset)
2397{ 2388{
2398 struct bdx_priv *priv = netdev_priv(netdev); 2389 struct bdx_priv *priv = netdev_priv(netdev);
2399 BDX_ASSERT(ARRAY_SIZE(bdx_stat_names) 2390
2400 != sizeof(struct bdx_stats) / sizeof(u64)); 2391 switch (stringset) {
2401 return ((priv->stats_flag) ? ARRAY_SIZE(bdx_stat_names) : 0); 2392 case ETH_SS_STATS:
2393 BDX_ASSERT(ARRAY_SIZE(bdx_stat_names)
2394 != sizeof(struct bdx_stats) / sizeof(u64));
2395 return ((priv->stats_flag) ? ARRAY_SIZE(bdx_stat_names) : 0);
2396 default:
2397 return -EINVAL;
2398 }
2402} 2399}
2403 2400
2404/* 2401/*
@@ -2441,7 +2438,7 @@ static void bdx_ethtool_ops(struct net_device *netdev)
2441 .get_sg = ethtool_op_get_sg, 2438 .get_sg = ethtool_op_get_sg,
2442 .get_tso = ethtool_op_get_tso, 2439 .get_tso = ethtool_op_get_tso,
2443 .get_strings = bdx_get_strings, 2440 .get_strings = bdx_get_strings,
2444 .get_stats_count = bdx_get_stats_count, 2441 .get_sset_count = bdx_get_sset_count,
2445 .get_ethtool_stats = bdx_get_ethtool_stats, 2442 .get_ethtool_stats = bdx_get_ethtool_stats,
2446 }; 2443 };
2447 2444