| .. | .. |
|---|
| 59 | 59 | #include "bnx2_fw.h" |
|---|
| 60 | 60 | |
|---|
| 61 | 61 | #define DRV_MODULE_NAME "bnx2" |
|---|
| 62 | | -#define DRV_MODULE_VERSION "2.2.6" |
|---|
| 63 | | -#define DRV_MODULE_RELDATE "January 29, 2014" |
|---|
| 64 | 62 | #define FW_MIPS_FILE_06 "bnx2/bnx2-mips-06-6.2.3.fw" |
|---|
| 65 | 63 | #define FW_RV2P_FILE_06 "bnx2/bnx2-rv2p-06-6.0.15.fw" |
|---|
| 66 | 64 | #define FW_MIPS_FILE_09 "bnx2/bnx2-mips-09-6.2.1b.fw" |
|---|
| .. | .. |
|---|
| 72 | 70 | /* Time in jiffies before concluding the transmitter is hung. */ |
|---|
| 73 | 71 | #define TX_TIMEOUT (5*HZ) |
|---|
| 74 | 72 | |
|---|
| 75 | | -static char version[] = |
|---|
| 76 | | - "QLogic " DRV_MODULE_NAME " Gigabit Ethernet Driver v" DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n"; |
|---|
| 77 | | - |
|---|
| 78 | 73 | MODULE_AUTHOR("Michael Chan <mchan@broadcom.com>"); |
|---|
| 79 | 74 | MODULE_DESCRIPTION("QLogic BCM5706/5708/5709/5716 Driver"); |
|---|
| 80 | 75 | MODULE_LICENSE("GPL"); |
|---|
| 81 | | -MODULE_VERSION(DRV_MODULE_VERSION); |
|---|
| 82 | 76 | MODULE_FIRMWARE(FW_MIPS_FILE_06); |
|---|
| 83 | 77 | MODULE_FIRMWARE(FW_RV2P_FILE_06); |
|---|
| 84 | 78 | MODULE_FIRMWARE(FW_MIPS_FILE_09); |
|---|
| .. | .. |
|---|
| 844 | 838 | BNX2_SBLK_MSIX_ALIGN_SIZE); |
|---|
| 845 | 839 | bp->status_stats_size = status_blk_size + |
|---|
| 846 | 840 | sizeof(struct statistics_block); |
|---|
| 847 | | - status_blk = dma_zalloc_coherent(&bp->pdev->dev, bp->status_stats_size, |
|---|
| 848 | | - &bp->status_blk_mapping, GFP_KERNEL); |
|---|
| 841 | + status_blk = dma_alloc_coherent(&bp->pdev->dev, bp->status_stats_size, |
|---|
| 842 | + &bp->status_blk_mapping, GFP_KERNEL); |
|---|
| 849 | 843 | if (!status_blk) |
|---|
| 850 | 844 | return -ENOMEM; |
|---|
| 851 | 845 | |
|---|
| .. | .. |
|---|
| 1343 | 1337 | val |= BNX2_EMAC_MODE_PORT_MII_10M; |
|---|
| 1344 | 1338 | break; |
|---|
| 1345 | 1339 | } |
|---|
| 1346 | | - /* fall through */ |
|---|
| 1340 | + fallthrough; |
|---|
| 1347 | 1341 | case SPEED_100: |
|---|
| 1348 | 1342 | val |= BNX2_EMAC_MODE_PORT_MII; |
|---|
| 1349 | 1343 | break; |
|---|
| 1350 | 1344 | case SPEED_2500: |
|---|
| 1351 | 1345 | val |= BNX2_EMAC_MODE_25G_MODE; |
|---|
| 1352 | | - /* fall through */ |
|---|
| 1346 | + fallthrough; |
|---|
| 1353 | 1347 | case SPEED_1000: |
|---|
| 1354 | 1348 | val |= BNX2_EMAC_MODE_PORT_GMII; |
|---|
| 1355 | 1349 | break; |
|---|
| .. | .. |
|---|
| 1461 | 1455 | static void |
|---|
| 1462 | 1456 | bnx2_enable_forced_2g5(struct bnx2 *bp) |
|---|
| 1463 | 1457 | { |
|---|
| 1464 | | - u32 uninitialized_var(bmcr); |
|---|
| 1458 | + u32 bmcr; |
|---|
| 1465 | 1459 | int err; |
|---|
| 1466 | 1460 | |
|---|
| 1467 | 1461 | if (!(bp->phy_flags & BNX2_PHY_FLAG_2_5G_CAPABLE)) |
|---|
| .. | .. |
|---|
| 1505 | 1499 | static void |
|---|
| 1506 | 1500 | bnx2_disable_forced_2g5(struct bnx2 *bp) |
|---|
| 1507 | 1501 | { |
|---|
| 1508 | | - u32 uninitialized_var(bmcr); |
|---|
| 1502 | + u32 bmcr; |
|---|
| 1509 | 1503 | int err; |
|---|
| 1510 | 1504 | |
|---|
| 1511 | 1505 | if (!(bp->phy_flags & BNX2_PHY_FLAG_2_5G_CAPABLE)) |
|---|
| .. | .. |
|---|
| 2001 | 1995 | switch (speed) { |
|---|
| 2002 | 1996 | case BNX2_LINK_STATUS_10HALF: |
|---|
| 2003 | 1997 | bp->duplex = DUPLEX_HALF; |
|---|
| 2004 | | - /* fall through */ |
|---|
| 1998 | + fallthrough; |
|---|
| 2005 | 1999 | case BNX2_LINK_STATUS_10FULL: |
|---|
| 2006 | 2000 | bp->line_speed = SPEED_10; |
|---|
| 2007 | 2001 | break; |
|---|
| 2008 | 2002 | case BNX2_LINK_STATUS_100HALF: |
|---|
| 2009 | 2003 | bp->duplex = DUPLEX_HALF; |
|---|
| 2010 | | - /* fall through */ |
|---|
| 2004 | + fallthrough; |
|---|
| 2011 | 2005 | case BNX2_LINK_STATUS_100BASE_T4: |
|---|
| 2012 | 2006 | case BNX2_LINK_STATUS_100FULL: |
|---|
| 2013 | 2007 | bp->line_speed = SPEED_100; |
|---|
| 2014 | 2008 | break; |
|---|
| 2015 | 2009 | case BNX2_LINK_STATUS_1000HALF: |
|---|
| 2016 | 2010 | bp->duplex = DUPLEX_HALF; |
|---|
| 2017 | | - /* fall through */ |
|---|
| 2011 | + fallthrough; |
|---|
| 2018 | 2012 | case BNX2_LINK_STATUS_1000FULL: |
|---|
| 2019 | 2013 | bp->line_speed = SPEED_1000; |
|---|
| 2020 | 2014 | break; |
|---|
| 2021 | 2015 | case BNX2_LINK_STATUS_2500HALF: |
|---|
| 2022 | 2016 | bp->duplex = DUPLEX_HALF; |
|---|
| 2023 | | - /* fall through */ |
|---|
| 2017 | + fallthrough; |
|---|
| 2024 | 2018 | case BNX2_LINK_STATUS_2500FULL: |
|---|
| 2025 | 2019 | bp->line_speed = SPEED_2500; |
|---|
| 2026 | 2020 | break; |
|---|
| .. | .. |
|---|
| 3304 | 3298 | BNX2_WR16(bp, rxr->rx_bidx_addr, sw_prod); |
|---|
| 3305 | 3299 | |
|---|
| 3306 | 3300 | BNX2_WR(bp, rxr->rx_bseq_addr, rxr->rx_prod_bseq); |
|---|
| 3307 | | - |
|---|
| 3308 | | - mmiowb(); |
|---|
| 3309 | 3301 | |
|---|
| 3310 | 3302 | return rx_pkt; |
|---|
| 3311 | 3303 | |
|---|
| .. | .. |
|---|
| 6577 | 6569 | } |
|---|
| 6578 | 6570 | |
|---|
| 6579 | 6571 | static void |
|---|
| 6580 | | -bnx2_tx_timeout(struct net_device *dev) |
|---|
| 6572 | +bnx2_tx_timeout(struct net_device *dev, unsigned int txqueue) |
|---|
| 6581 | 6573 | { |
|---|
| 6582 | 6574 | struct bnx2 *bp = netdev_priv(dev); |
|---|
| 6583 | 6575 | |
|---|
| .. | .. |
|---|
| 6722 | 6714 | |
|---|
| 6723 | 6715 | BNX2_WR16(bp, txr->tx_bidx_addr, prod); |
|---|
| 6724 | 6716 | BNX2_WR(bp, txr->tx_bseq_addr, txr->tx_prod_bseq); |
|---|
| 6725 | | - |
|---|
| 6726 | | - mmiowb(); |
|---|
| 6727 | 6717 | |
|---|
| 6728 | 6718 | txr->tx_prod = prod; |
|---|
| 6729 | 6719 | |
|---|
| .. | .. |
|---|
| 7052 | 7042 | struct bnx2 *bp = netdev_priv(dev); |
|---|
| 7053 | 7043 | |
|---|
| 7054 | 7044 | strlcpy(info->driver, DRV_MODULE_NAME, sizeof(info->driver)); |
|---|
| 7055 | | - strlcpy(info->version, DRV_MODULE_VERSION, sizeof(info->version)); |
|---|
| 7056 | 7045 | strlcpy(info->bus_info, pci_name(bp->pdev), sizeof(info->bus_info)); |
|---|
| 7057 | 7046 | strlcpy(info->fw_version, bp->fw_version, sizeof(info->fw_version)); |
|---|
| 7058 | 7047 | } |
|---|
| .. | .. |
|---|
| 7823 | 7812 | } |
|---|
| 7824 | 7813 | |
|---|
| 7825 | 7814 | static const struct ethtool_ops bnx2_ethtool_ops = { |
|---|
| 7815 | + .supported_coalesce_params = ETHTOOL_COALESCE_USECS | |
|---|
| 7816 | + ETHTOOL_COALESCE_MAX_FRAMES | |
|---|
| 7817 | + ETHTOOL_COALESCE_USECS_IRQ | |
|---|
| 7818 | + ETHTOOL_COALESCE_MAX_FRAMES_IRQ | |
|---|
| 7819 | + ETHTOOL_COALESCE_STATS_BLOCK_USECS, |
|---|
| 7826 | 7820 | .get_drvinfo = bnx2_get_drvinfo, |
|---|
| 7827 | 7821 | .get_regs_len = bnx2_get_regs_len, |
|---|
| 7828 | 7822 | .get_regs = bnx2_get_regs, |
|---|
| .. | .. |
|---|
| 7862 | 7856 | case SIOCGMIIPHY: |
|---|
| 7863 | 7857 | data->phy_id = bp->phy_addr; |
|---|
| 7864 | 7858 | |
|---|
| 7865 | | - /* fallthru */ |
|---|
| 7859 | + fallthrough; |
|---|
| 7866 | 7860 | case SIOCGMIIREG: { |
|---|
| 7867 | 7861 | u32 mii_regval; |
|---|
| 7868 | 7862 | |
|---|
| .. | .. |
|---|
| 8566 | 8560 | static int |
|---|
| 8567 | 8561 | bnx2_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) |
|---|
| 8568 | 8562 | { |
|---|
| 8569 | | - static int version_printed = 0; |
|---|
| 8570 | 8563 | struct net_device *dev; |
|---|
| 8571 | 8564 | struct bnx2 *bp; |
|---|
| 8572 | 8565 | int rc; |
|---|
| 8573 | 8566 | char str[40]; |
|---|
| 8574 | | - |
|---|
| 8575 | | - if (version_printed++ == 0) |
|---|
| 8576 | | - pr_info("%s", version); |
|---|
| 8577 | 8567 | |
|---|
| 8578 | 8568 | /* dev zeroed in init_etherdev */ |
|---|
| 8579 | 8569 | dev = alloc_etherdev_mq(sizeof(*bp), TX_MAX_RINGS); |
|---|
| .. | .. |
|---|
| 8677 | 8667 | static int |
|---|
| 8678 | 8668 | bnx2_suspend(struct device *device) |
|---|
| 8679 | 8669 | { |
|---|
| 8680 | | - struct pci_dev *pdev = to_pci_dev(device); |
|---|
| 8681 | | - struct net_device *dev = pci_get_drvdata(pdev); |
|---|
| 8670 | + struct net_device *dev = dev_get_drvdata(device); |
|---|
| 8682 | 8671 | struct bnx2 *bp = netdev_priv(dev); |
|---|
| 8683 | 8672 | |
|---|
| 8684 | 8673 | if (netif_running(dev)) { |
|---|
| .. | .. |
|---|
| 8697 | 8686 | static int |
|---|
| 8698 | 8687 | bnx2_resume(struct device *device) |
|---|
| 8699 | 8688 | { |
|---|
| 8700 | | - struct pci_dev *pdev = to_pci_dev(device); |
|---|
| 8701 | | - struct net_device *dev = pci_get_drvdata(pdev); |
|---|
| 8689 | + struct net_device *dev = dev_get_drvdata(device); |
|---|
| 8702 | 8690 | struct bnx2 *bp = netdev_priv(dev); |
|---|
| 8703 | 8691 | |
|---|
| 8704 | 8692 | if (!netif_running(dev)) |
|---|
| .. | .. |
|---|
| 8792 | 8780 | |
|---|
| 8793 | 8781 | if (!(bp->flags & BNX2_FLAG_AER_ENABLED)) |
|---|
| 8794 | 8782 | return result; |
|---|
| 8795 | | - |
|---|
| 8796 | | - err = pci_cleanup_aer_uncorrect_error_status(pdev); |
|---|
| 8797 | | - if (err) { |
|---|
| 8798 | | - dev_err(&pdev->dev, |
|---|
| 8799 | | - "pci_cleanup_aer_uncorrect_error_status failed 0x%0x\n", |
|---|
| 8800 | | - err); /* non-fatal, continue */ |
|---|
| 8801 | | - } |
|---|
| 8802 | 8783 | |
|---|
| 8803 | 8784 | return result; |
|---|
| 8804 | 8785 | } |
|---|