Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next

Jeff Kirsher says:

====================
Intel Wired LAN Driver Updates

This series contains updates to e1000, igb and ixgbe.

Emil provides his version 2 fix for the detection of SFP+ capable interfaces.
In cases where the driver is loaded while there are no SFP+ modules in cage,
the interface was not being detected as SFP capable. Resolve the issue by
identifying interfaces with no PHY type set as SFP capable which allows the
driver to detect the SFP module when the interface is brought up. In this
version 2 of the patch, the 82599 specific check was removed since we only
have 82598 devices that are SFP capable.

Jacob removes the including of the export header in the ixgbe PTP core, since
it is not needed. Renames igb_ptp_enable() to igb_ptp_feature_enable() to
better reflect the actual functions purpose.

Todd fixes the ethtool loopback test for i354 backplane devices since we
do not know what PHY is to be used for the devices, use MAC loopback for
ethtool tests. Todd also sets the packet buffer size register defaults for
i210 devices.

Yongjian Xu removes the check for skb->len being negative or zero since there
is never a case where it would be zero or negative for e1000.

Manuel Schölling updates e1000 to use the time_after() helper function.

v2: Fix indentation on wrapped line in patch 3 of the series based on
feedback from David Miller
====================

Signed-off-by: David S. Miller <davem@davemloft.net>

+24 -21
+2 -1
drivers/net/ethernet/intel/e1000/e1000_ethtool.c
··· 1460 1460 * enough time to complete the receives, if it's 1461 1461 * exceeded, break and error off 1462 1462 */ 1463 - } while (good_cnt < 64 && jiffies < (time + 20)); 1463 + } while (good_cnt < 64 && time_after(time + 20, jiffies)); 1464 + 1464 1465 if (good_cnt != 64) { 1465 1466 ret_val = 13; /* ret_val is the same as mis-compare */ 1466 1467 break;
-5
drivers/net/ethernet/intel/e1000/e1000_main.c
··· 3105 3105 */ 3106 3106 tx_ring = adapter->tx_ring; 3107 3107 3108 - if (unlikely(skb->len <= 0)) { 3109 - dev_kfree_skb_any(skb); 3110 - return NETDEV_TX_OK; 3111 - } 3112 - 3113 3108 /* On PCI/PCI-X HW, if packet size is less than ETH_ZLEN, 3114 3109 * packets may get corrupted during padding by HW. 3115 3110 * To WA this issue, pad all small packets manually.
+3
drivers/net/ethernet/intel/igb/e1000_defines.h
··· 329 329 /* Timestamp in Rx buffer */ 330 330 #define E1000_RXPBS_CFG_TS_EN 0x80000000 331 331 332 + #define I210_RXPBSIZE_DEFAULT 0x000000A2 /* RXPBSIZE default */ 333 + #define I210_TXPBSIZE_DEFAULT 0x04000014 /* TXPBSIZE default */ 334 + 332 335 /* SerDes Control */ 333 336 #define E1000_SCTL_DISABLE_SERDES_LOOPBACK 0x0400 334 337
+4
drivers/net/ethernet/intel/igb/e1000_regs.h
··· 192 192 : (0x0E038 + ((_n) * 0x40))) 193 193 #define E1000_TDWBAH(_n) ((_n) < 4 ? (0x0383C + ((_n) * 0x100)) \ 194 194 : (0x0E03C + ((_n) * 0x40))) 195 + 196 + #define E1000_RXPBS 0x02404 /* Rx Packet Buffer Size - RW */ 197 + #define E1000_TXPBS 0x03404 /* Tx Packet Buffer Size - RW */ 198 + 195 199 #define E1000_TDFH 0x03410 /* TX Data FIFO Head - RW */ 196 200 #define E1000_TDFT 0x03418 /* TX Data FIFO Tail - RW */ 197 201 #define E1000_TDFHS 0x03420 /* TX Data FIFO Head Saved - RW */
+2 -2
drivers/net/ethernet/intel/igb/igb_ethtool.c
··· 1665 1665 (hw->device_id == E1000_DEV_ID_DH89XXCC_SERDES) || 1666 1666 (hw->device_id == E1000_DEV_ID_DH89XXCC_BACKPLANE) || 1667 1667 (hw->device_id == E1000_DEV_ID_DH89XXCC_SFP) || 1668 - (hw->device_id == E1000_DEV_ID_I354_SGMII)) { 1669 - 1668 + (hw->device_id == E1000_DEV_ID_I354_SGMII) || 1669 + (hw->device_id == E1000_DEV_ID_I354_BACKPLANE_2_5GBPS)) { 1670 1670 /* Enable DH89xxCC MPHY for near end loopback */ 1671 1671 reg = rd32(E1000_MPHY_ADDR_CTL); 1672 1672 reg = (reg & E1000_MPHY_ADDR_CTL_OFFSET_MASK) |
+6
drivers/net/ethernet/intel/igb/igb_main.c
··· 2433 2433 /* get firmware version for ethtool -i */ 2434 2434 igb_set_fw_version(adapter); 2435 2435 2436 + /* configure RXPBSIZE and TXPBSIZE */ 2437 + if (hw->mac.type == e1000_i210) { 2438 + wr32(E1000_RXPBS, I210_RXPBSIZE_DEFAULT); 2439 + wr32(E1000_TXPBS, I210_TXPBSIZE_DEFAULT); 2440 + } 2441 + 2436 2442 setup_timer(&adapter->watchdog_timer, igb_watchdog, 2437 2443 (unsigned long) adapter); 2438 2444 setup_timer(&adapter->phy_info_timer, igb_update_phy_info,
+5 -5
drivers/net/ethernet/intel/igb/igb_ptp.c
··· 360 360 return 0; 361 361 } 362 362 363 - static int igb_ptp_enable(struct ptp_clock_info *ptp, 364 - struct ptp_clock_request *rq, int on) 363 + static int igb_ptp_feature_enable(struct ptp_clock_info *ptp, 364 + struct ptp_clock_request *rq, int on) 365 365 { 366 366 return -EOPNOTSUPP; 367 367 } ··· 745 745 adapter->ptp_caps.adjtime = igb_ptp_adjtime_82576; 746 746 adapter->ptp_caps.gettime = igb_ptp_gettime_82576; 747 747 adapter->ptp_caps.settime = igb_ptp_settime_82576; 748 - adapter->ptp_caps.enable = igb_ptp_enable; 748 + adapter->ptp_caps.enable = igb_ptp_feature_enable; 749 749 adapter->cc.read = igb_ptp_read_82576; 750 750 adapter->cc.mask = CLOCKSOURCE_MASK(64); 751 751 adapter->cc.mult = 1; ··· 765 765 adapter->ptp_caps.adjtime = igb_ptp_adjtime_82576; 766 766 adapter->ptp_caps.gettime = igb_ptp_gettime_82576; 767 767 adapter->ptp_caps.settime = igb_ptp_settime_82576; 768 - adapter->ptp_caps.enable = igb_ptp_enable; 768 + adapter->ptp_caps.enable = igb_ptp_feature_enable; 769 769 adapter->cc.read = igb_ptp_read_82580; 770 770 adapter->cc.mask = CLOCKSOURCE_MASK(IGB_NBITS_82580); 771 771 adapter->cc.mult = 1; ··· 784 784 adapter->ptp_caps.adjtime = igb_ptp_adjtime_i210; 785 785 adapter->ptp_caps.gettime = igb_ptp_gettime_i210; 786 786 adapter->ptp_caps.settime = igb_ptp_settime_i210; 787 - adapter->ptp_caps.enable = igb_ptp_enable; 787 + adapter->ptp_caps.enable = igb_ptp_feature_enable; 788 788 /* Enable the timer functions by clearing bit 31. */ 789 789 wr32(E1000_TSAUXC, 0x0); 790 790 break;
-7
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
··· 161 161 bool autoneg = false; 162 162 bool link_up; 163 163 164 - /* SFP type is needed for get_link_capabilities */ 165 - if (hw->phy.media_type & (ixgbe_media_type_fiber | 166 - ixgbe_media_type_fiber_qsfp)) { 167 - if (hw->phy.sfp_type == ixgbe_sfp_type_not_present) 168 - hw->phy.ops.identify_sfp(hw); 169 - } 170 - 171 164 hw->mac.ops.get_link_capabilities(hw, &supported_link, &autoneg); 172 165 173 166 /* set the supported link speeds */
+2
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
··· 4656 4656 case ixgbe_phy_qsfp_active_unknown: 4657 4657 case ixgbe_phy_qsfp_intel: 4658 4658 case ixgbe_phy_qsfp_unknown: 4659 + /* ixgbe_phy_none is set when no SFP module is present */ 4660 + case ixgbe_phy_none: 4659 4661 return true; 4660 4662 case ixgbe_phy_nl: 4661 4663 if (hw->mac.type == ixgbe_mac_82598EB)
-1
drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
··· 26 26 27 27 *******************************************************************************/ 28 28 #include "ixgbe.h" 29 - #include <linux/export.h> 30 29 #include <linux/ptp_classify.h> 31 30 32 31 /*