aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/myri10ge/myri10ge.c32
1 files changed, 14 insertions, 18 deletions
diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c
index 42ea4f809171..fde62100c97c 100644
--- a/drivers/net/myri10ge/myri10ge.c
+++ b/drivers/net/myri10ge/myri10ge.c
@@ -1086,6 +1086,9 @@ static int myri10ge_toggle_relaxed(struct pci_dev *pdev, int on)
1086 return 0; 1086 return 0;
1087 1087
1088 err = pci_read_config_word(pdev, cap + PCI_EXP_DEVCTL, &ctl); 1088 err = pci_read_config_word(pdev, cap + PCI_EXP_DEVCTL, &ctl);
1089 if (err)
1090 return 0;
1091
1089 ret = (ctl & PCI_EXP_DEVCTL_RELAX_EN) >> 4; 1092 ret = (ctl & PCI_EXP_DEVCTL_RELAX_EN) >> 4;
1090 if (ret != on) { 1093 if (ret != on) {
1091 ctl &= ~PCI_EXP_DEVCTL_RELAX_EN; 1094 ctl &= ~PCI_EXP_DEVCTL_RELAX_EN;
@@ -1140,20 +1143,19 @@ static void myri10ge_setup_dca(struct myri10ge_priv *mgp)
1140 mgp->ss[i].cpu = -1; 1143 mgp->ss[i].cpu = -1;
1141 mgp->ss[i].cached_dca_tag = -1; 1144 mgp->ss[i].cached_dca_tag = -1;
1142 myri10ge_update_dca(&mgp->ss[i]); 1145 myri10ge_update_dca(&mgp->ss[i]);
1143 } 1146 }
1144} 1147}
1145 1148
1146static void myri10ge_teardown_dca(struct myri10ge_priv *mgp) 1149static void myri10ge_teardown_dca(struct myri10ge_priv *mgp)
1147{ 1150{
1148 struct pci_dev *pdev = mgp->pdev; 1151 struct pci_dev *pdev = mgp->pdev;
1149 int err;
1150 1152
1151 if (!mgp->dca_enabled) 1153 if (!mgp->dca_enabled)
1152 return; 1154 return;
1153 mgp->dca_enabled = 0; 1155 mgp->dca_enabled = 0;
1154 if (mgp->relaxed_order) 1156 if (mgp->relaxed_order)
1155 myri10ge_toggle_relaxed(pdev, 1); 1157 myri10ge_toggle_relaxed(pdev, 1);
1156 err = dca_remove_requester(&pdev->dev); 1158 dca_remove_requester(&pdev->dev);
1157} 1159}
1158 1160
1159static int myri10ge_notify_dca_device(struct device *dev, void *data) 1161static int myri10ge_notify_dca_device(struct device *dev, void *data)
@@ -1314,7 +1316,7 @@ myri10ge_unmap_rx_page(struct pci_dev *pdev,
1314 1316
1315static inline int 1317static inline int
1316myri10ge_rx_done(struct myri10ge_slice_state *ss, int len, __wsum csum, 1318myri10ge_rx_done(struct myri10ge_slice_state *ss, int len, __wsum csum,
1317 int lro_enabled) 1319 bool lro_enabled)
1318{ 1320{
1319 struct myri10ge_priv *mgp = ss->mgp; 1321 struct myri10ge_priv *mgp = ss->mgp;
1320 struct sk_buff *skb; 1322 struct sk_buff *skb;
@@ -1474,11 +1476,9 @@ myri10ge_clean_rx_done(struct myri10ge_slice_state *ss, int budget)
1474{ 1476{
1475 struct myri10ge_rx_done *rx_done = &ss->rx_done; 1477 struct myri10ge_rx_done *rx_done = &ss->rx_done;
1476 struct myri10ge_priv *mgp = ss->mgp; 1478 struct myri10ge_priv *mgp = ss->mgp;
1477
1478 unsigned long rx_bytes = 0; 1479 unsigned long rx_bytes = 0;
1479 unsigned long rx_packets = 0; 1480 unsigned long rx_packets = 0;
1480 unsigned long rx_ok; 1481 unsigned long rx_ok;
1481
1482 int idx = rx_done->idx; 1482 int idx = rx_done->idx;
1483 int cnt = rx_done->cnt; 1483 int cnt = rx_done->cnt;
1484 int work_done = 0; 1484 int work_done = 0;
@@ -1531,16 +1531,14 @@ static inline void myri10ge_check_statblock(struct myri10ge_priv *mgp)
1531 mgp->link_state = link_up; 1531 mgp->link_state = link_up;
1532 1532
1533 if (mgp->link_state == MXGEFW_LINK_UP) { 1533 if (mgp->link_state == MXGEFW_LINK_UP) {
1534 if (netif_msg_link(mgp)) 1534 netif_info(mgp, link, mgp->dev, "link up\n");
1535 netdev_info(mgp->dev, "link up\n");
1536 netif_carrier_on(mgp->dev); 1535 netif_carrier_on(mgp->dev);
1537 mgp->link_changes++; 1536 mgp->link_changes++;
1538 } else { 1537 } else {
1539 if (netif_msg_link(mgp)) 1538 netif_info(mgp, link, mgp->dev, "link %s\n",
1540 netdev_info(mgp->dev, "link %s\n", 1539 (link_up == MXGEFW_LINK_MYRINET ?
1541 link_up == MXGEFW_LINK_MYRINET ?
1542 "mismatch (Myrinet detected)" : 1540 "mismatch (Myrinet detected)" :
1543 "down"); 1541 "down"));
1544 netif_carrier_off(mgp->dev); 1542 netif_carrier_off(mgp->dev);
1545 mgp->link_changes++; 1543 mgp->link_changes++;
1546 } 1544 }
@@ -1621,7 +1619,7 @@ static irqreturn_t myri10ge_intr(int irq, void *arg)
1621 if (send_done_count != tx->pkt_done) 1619 if (send_done_count != tx->pkt_done)
1622 myri10ge_tx_done(ss, (int)send_done_count); 1620 myri10ge_tx_done(ss, (int)send_done_count);
1623 if (unlikely(i > myri10ge_max_irq_loops)) { 1621 if (unlikely(i > myri10ge_max_irq_loops)) {
1624 netdev_err(mgp->dev, "irq stuck?\n"); 1622 netdev_warn(mgp->dev, "irq stuck?\n");
1625 stats->valid = 0; 1623 stats->valid = 0;
1626 schedule_work(&mgp->watchdog_work); 1624 schedule_work(&mgp->watchdog_work);
1627 } 1625 }
@@ -1785,9 +1783,8 @@ static const char myri10ge_gstrings_slice_stats[][ETH_GSTRING_LEN] = {
1785 "----------- slice ---------", 1783 "----------- slice ---------",
1786 "tx_pkt_start", "tx_pkt_done", "tx_req", "tx_done", 1784 "tx_pkt_start", "tx_pkt_done", "tx_req", "tx_done",
1787 "rx_small_cnt", "rx_big_cnt", 1785 "rx_small_cnt", "rx_big_cnt",
1788 "wake_queue", "stop_queue", "tx_linearized", "LRO aggregated", 1786 "wake_queue", "stop_queue", "tx_linearized",
1789 "LRO flushed", 1787 "LRO aggregated", "LRO flushed", "LRO avg aggr", "LRO no_desc",
1790 "LRO avg aggr", "LRO no_desc"
1791}; 1788};
1792 1789
1793#define MYRI10GE_NET_STATS_LEN 21 1790#define MYRI10GE_NET_STATS_LEN 21
@@ -3329,7 +3326,6 @@ abort:
3329 /* fall back to using the unaligned firmware */ 3326 /* fall back to using the unaligned firmware */
3330 mgp->tx_boundary = 2048; 3327 mgp->tx_boundary = 2048;
3331 set_fw_name(mgp, myri10ge_fw_unaligned, false); 3328 set_fw_name(mgp, myri10ge_fw_unaligned, false);
3332
3333} 3329}
3334 3330
3335static void myri10ge_select_firmware(struct myri10ge_priv *mgp) 3331static void myri10ge_select_firmware(struct myri10ge_priv *mgp)
@@ -3715,8 +3711,8 @@ static void myri10ge_free_slices(struct myri10ge_priv *mgp)
3715 dma_free_coherent(&pdev->dev, bytes, 3711 dma_free_coherent(&pdev->dev, bytes,
3716 ss->fw_stats, ss->fw_stats_bus); 3712 ss->fw_stats, ss->fw_stats_bus);
3717 ss->fw_stats = NULL; 3713 ss->fw_stats = NULL;
3718 netif_napi_del(&ss->napi);
3719 } 3714 }
3715 netif_napi_del(&ss->napi);
3720 } 3716 }
3721 kfree(mgp->ss); 3717 kfree(mgp->ss);
3722 mgp->ss = NULL; 3718 mgp->ss = NULL;