Skip to content

Commit 8ea658c

Browse files
committed
Merge branch '1GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue
Jeff Kirsher says: ==================== 1GbE Intel Wired LAN Driver Updates 2016-05-13 This series contains updates to e1000e, igb and igbvf. Steve Shih fixes an issue for disabling auto-negotiation and forcing speed and duplex settings for non-copper media. Brian Walsh cleanups some inconsistency in the use of return variables names to avoid confusion. Jake cleans up the drivers to use the BIT() macro when it can, which will future proof the drivers for GCC 6 when it gets released. Cleaned up dead code which was never being used. Also fixed e1000e, where it was incorrectly restting the SYSTIM registers every time the ioctl was being run. Denys Vlasenko fixes an oversight where incvalue variable holds a 32 bit value so we should declare it as such, instead of 64 bits. Also fixed an overflow check, where two reads are the same, then it is not an overflow. Nathan Sullivan fixes the PTP timestamps for transmit and receive latency based on the current link speed. Alexander Duyck adds support for partial GSO segmentation in the case of tunnels for igb and igbvf. ==================== Signed-off-by: David S. Miller <[email protected]>
2 parents ed7cbbc + aa524b6 commit 8ea658c

28 files changed

+635
-456
lines changed

drivers/net/ethernet/intel/e1000e/80003es2lan.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ static s32 e1000_init_nvm_params_80003es2lan(struct e1000_hw *hw)
121121
/* EEPROM access above 16k is unsupported */
122122
if (size > 14)
123123
size = 14;
124-
nvm->word_size = 1 << size;
124+
nvm->word_size = BIT(size);
125125

126126
return 0;
127127
}
@@ -845,27 +845,27 @@ static void e1000_initialize_hw_bits_80003es2lan(struct e1000_hw *hw)
845845

846846
/* Transmit Descriptor Control 0 */
847847
reg = er32(TXDCTL(0));
848-
reg |= (1 << 22);
848+
reg |= BIT(22);
849849
ew32(TXDCTL(0), reg);
850850

851851
/* Transmit Descriptor Control 1 */
852852
reg = er32(TXDCTL(1));
853-
reg |= (1 << 22);
853+
reg |= BIT(22);
854854
ew32(TXDCTL(1), reg);
855855

856856
/* Transmit Arbitration Control 0 */
857857
reg = er32(TARC(0));
858858
reg &= ~(0xF << 27); /* 30:27 */
859859
if (hw->phy.media_type != e1000_media_type_copper)
860-
reg &= ~(1 << 20);
860+
reg &= ~BIT(20);
861861
ew32(TARC(0), reg);
862862

863863
/* Transmit Arbitration Control 1 */
864864
reg = er32(TARC(1));
865865
if (er32(TCTL) & E1000_TCTL_MULR)
866-
reg &= ~(1 << 28);
866+
reg &= ~BIT(28);
867867
else
868-
reg |= (1 << 28);
868+
reg |= BIT(28);
869869
ew32(TARC(1), reg);
870870

871871
/* Disable IPv6 extension header parsing because some malformed

drivers/net/ethernet/intel/e1000e/82571.c

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ static s32 e1000_init_nvm_params_82571(struct e1000_hw *hw)
185185
/* EEPROM access above 16k is unsupported */
186186
if (size > 14)
187187
size = 14;
188-
nvm->word_size = 1 << size;
188+
nvm->word_size = BIT(size);
189189
break;
190190
}
191191

@@ -1163,12 +1163,12 @@ static void e1000_initialize_hw_bits_82571(struct e1000_hw *hw)
11631163

11641164
/* Transmit Descriptor Control 0 */
11651165
reg = er32(TXDCTL(0));
1166-
reg |= (1 << 22);
1166+
reg |= BIT(22);
11671167
ew32(TXDCTL(0), reg);
11681168

11691169
/* Transmit Descriptor Control 1 */
11701170
reg = er32(TXDCTL(1));
1171-
reg |= (1 << 22);
1171+
reg |= BIT(22);
11721172
ew32(TXDCTL(1), reg);
11731173

11741174
/* Transmit Arbitration Control 0 */
@@ -1177,11 +1177,11 @@ static void e1000_initialize_hw_bits_82571(struct e1000_hw *hw)
11771177
switch (hw->mac.type) {
11781178
case e1000_82571:
11791179
case e1000_82572:
1180-
reg |= (1 << 23) | (1 << 24) | (1 << 25) | (1 << 26);
1180+
reg |= BIT(23) | BIT(24) | BIT(25) | BIT(26);
11811181
break;
11821182
case e1000_82574:
11831183
case e1000_82583:
1184-
reg |= (1 << 26);
1184+
reg |= BIT(26);
11851185
break;
11861186
default:
11871187
break;
@@ -1193,12 +1193,12 @@ static void e1000_initialize_hw_bits_82571(struct e1000_hw *hw)
11931193
switch (hw->mac.type) {
11941194
case e1000_82571:
11951195
case e1000_82572:
1196-
reg &= ~((1 << 29) | (1 << 30));
1197-
reg |= (1 << 22) | (1 << 24) | (1 << 25) | (1 << 26);
1196+
reg &= ~(BIT(29) | BIT(30));
1197+
reg |= BIT(22) | BIT(24) | BIT(25) | BIT(26);
11981198
if (er32(TCTL) & E1000_TCTL_MULR)
1199-
reg &= ~(1 << 28);
1199+
reg &= ~BIT(28);
12001200
else
1201-
reg |= (1 << 28);
1201+
reg |= BIT(28);
12021202
ew32(TARC(1), reg);
12031203
break;
12041204
default:
@@ -1211,7 +1211,7 @@ static void e1000_initialize_hw_bits_82571(struct e1000_hw *hw)
12111211
case e1000_82574:
12121212
case e1000_82583:
12131213
reg = er32(CTRL);
1214-
reg &= ~(1 << 29);
1214+
reg &= ~BIT(29);
12151215
ew32(CTRL, reg);
12161216
break;
12171217
default:
@@ -1224,8 +1224,8 @@ static void e1000_initialize_hw_bits_82571(struct e1000_hw *hw)
12241224
case e1000_82574:
12251225
case e1000_82583:
12261226
reg = er32(CTRL_EXT);
1227-
reg &= ~(1 << 23);
1228-
reg |= (1 << 22);
1227+
reg &= ~BIT(23);
1228+
reg |= BIT(22);
12291229
ew32(CTRL_EXT, reg);
12301230
break;
12311231
default:
@@ -1261,7 +1261,7 @@ static void e1000_initialize_hw_bits_82571(struct e1000_hw *hw)
12611261
case e1000_82574:
12621262
case e1000_82583:
12631263
reg = er32(GCR);
1264-
reg |= (1 << 22);
1264+
reg |= BIT(22);
12651265
ew32(GCR, reg);
12661266

12671267
/* Workaround for hardware errata.
@@ -1308,8 +1308,8 @@ static void e1000_clear_vfta_82571(struct e1000_hw *hw)
13081308
E1000_VFTA_ENTRY_SHIFT) &
13091309
E1000_VFTA_ENTRY_MASK;
13101310
vfta_bit_in_reg =
1311-
1 << (hw->mng_cookie.vlan_id &
1312-
E1000_VFTA_ENTRY_BIT_SHIFT_MASK);
1311+
BIT(hw->mng_cookie.vlan_id &
1312+
E1000_VFTA_ENTRY_BIT_SHIFT_MASK);
13131313
}
13141314
break;
13151315
default:

drivers/net/ethernet/intel/e1000e/e1000.h

Lines changed: 55 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -109,18 +109,18 @@ struct e1000_info;
109109
#define E1000_TXDCTL_DMA_BURST_ENABLE \
110110
(E1000_TXDCTL_GRAN | /* set descriptor granularity */ \
111111
E1000_TXDCTL_COUNT_DESC | \
112-
(1 << 16) | /* wthresh must be +1 more than desired */\
113-
(1 << 8) | /* hthresh */ \
114-
0x1f) /* pthresh */
112+
(1u << 16) | /* wthresh must be +1 more than desired */\
113+
(1u << 8) | /* hthresh */ \
114+
0x1f) /* pthresh */
115115

116116
#define E1000_RXDCTL_DMA_BURST_ENABLE \
117117
(0x01000000 | /* set descriptor granularity */ \
118-
(4 << 16) | /* set writeback threshold */ \
119-
(4 << 8) | /* set prefetch threshold */ \
118+
(4u << 16) | /* set writeback threshold */ \
119+
(4u << 8) | /* set prefetch threshold */ \
120120
0x20) /* set hthresh */
121121

122-
#define E1000_TIDV_FPD (1 << 31)
123-
#define E1000_RDTR_FPD (1 << 31)
122+
#define E1000_TIDV_FPD BIT(31)
123+
#define E1000_RDTR_FPD BIT(31)
124124

125125
enum e1000_boards {
126126
board_82571,
@@ -347,6 +347,7 @@ struct e1000_adapter {
347347
struct ptp_clock *ptp_clock;
348348
struct ptp_clock_info ptp_clock_info;
349349
struct pm_qos_request pm_qos_req;
350+
s32 ptp_delta;
350351

351352
u16 eee_advert;
352353
};
@@ -404,53 +405,53 @@ s32 e1000e_get_base_timinca(struct e1000_adapter *adapter, u32 *timinca);
404405
#define E1000_82574_SYSTIM_EPSILON (1ULL << 35ULL)
405406

406407
/* hardware capability, feature, and workaround flags */
407-
#define FLAG_HAS_AMT (1 << 0)
408-
#define FLAG_HAS_FLASH (1 << 1)
409-
#define FLAG_HAS_HW_VLAN_FILTER (1 << 2)
410-
#define FLAG_HAS_WOL (1 << 3)
411-
/* reserved bit4 */
412-
#define FLAG_HAS_CTRLEXT_ON_LOAD (1 << 5)
413-
#define FLAG_HAS_SWSM_ON_LOAD (1 << 6)
414-
#define FLAG_HAS_JUMBO_FRAMES (1 << 7)
415-
#define FLAG_READ_ONLY_NVM (1 << 8)
416-
#define FLAG_IS_ICH (1 << 9)
417-
#define FLAG_HAS_MSIX (1 << 10)
418-
#define FLAG_HAS_SMART_POWER_DOWN (1 << 11)
419-
#define FLAG_IS_QUAD_PORT_A (1 << 12)
420-
#define FLAG_IS_QUAD_PORT (1 << 13)
421-
#define FLAG_HAS_HW_TIMESTAMP (1 << 14)
422-
#define FLAG_APME_IN_WUC (1 << 15)
423-
#define FLAG_APME_IN_CTRL3 (1 << 16)
424-
#define FLAG_APME_CHECK_PORT_B (1 << 17)
425-
#define FLAG_DISABLE_FC_PAUSE_TIME (1 << 18)
426-
#define FLAG_NO_WAKE_UCAST (1 << 19)
427-
#define FLAG_MNG_PT_ENABLED (1 << 20)
428-
#define FLAG_RESET_OVERWRITES_LAA (1 << 21)
429-
#define FLAG_TARC_SPEED_MODE_BIT (1 << 22)
430-
#define FLAG_TARC_SET_BIT_ZERO (1 << 23)
431-
#define FLAG_RX_NEEDS_RESTART (1 << 24)
432-
#define FLAG_LSC_GIG_SPEED_DROP (1 << 25)
433-
#define FLAG_SMART_POWER_DOWN (1 << 26)
434-
#define FLAG_MSI_ENABLED (1 << 27)
435-
/* reserved (1 << 28) */
436-
#define FLAG_TSO_FORCE (1 << 29)
437-
#define FLAG_RESTART_NOW (1 << 30)
438-
#define FLAG_MSI_TEST_FAILED (1 << 31)
439-
440-
#define FLAG2_CRC_STRIPPING (1 << 0)
441-
#define FLAG2_HAS_PHY_WAKEUP (1 << 1)
442-
#define FLAG2_IS_DISCARDING (1 << 2)
443-
#define FLAG2_DISABLE_ASPM_L1 (1 << 3)
444-
#define FLAG2_HAS_PHY_STATS (1 << 4)
445-
#define FLAG2_HAS_EEE (1 << 5)
446-
#define FLAG2_DMA_BURST (1 << 6)
447-
#define FLAG2_DISABLE_ASPM_L0S (1 << 7)
448-
#define FLAG2_DISABLE_AIM (1 << 8)
449-
#define FLAG2_CHECK_PHY_HANG (1 << 9)
450-
#define FLAG2_NO_DISABLE_RX (1 << 10)
451-
#define FLAG2_PCIM2PCI_ARBITER_WA (1 << 11)
452-
#define FLAG2_DFLT_CRC_STRIPPING (1 << 12)
453-
#define FLAG2_CHECK_RX_HWTSTAMP (1 << 13)
408+
#define FLAG_HAS_AMT BIT(0)
409+
#define FLAG_HAS_FLASH BIT(1)
410+
#define FLAG_HAS_HW_VLAN_FILTER BIT(2)
411+
#define FLAG_HAS_WOL BIT(3)
412+
/* reserved BIT(4) */
413+
#define FLAG_HAS_CTRLEXT_ON_LOAD BIT(5)
414+
#define FLAG_HAS_SWSM_ON_LOAD BIT(6)
415+
#define FLAG_HAS_JUMBO_FRAMES BIT(7)
416+
#define FLAG_READ_ONLY_NVM BIT(8)
417+
#define FLAG_IS_ICH BIT(9)
418+
#define FLAG_HAS_MSIX BIT(10)
419+
#define FLAG_HAS_SMART_POWER_DOWN BIT(11)
420+
#define FLAG_IS_QUAD_PORT_A BIT(12)
421+
#define FLAG_IS_QUAD_PORT BIT(13)
422+
#define FLAG_HAS_HW_TIMESTAMP BIT(14)
423+
#define FLAG_APME_IN_WUC BIT(15)
424+
#define FLAG_APME_IN_CTRL3 BIT(16)
425+
#define FLAG_APME_CHECK_PORT_B BIT(17)
426+
#define FLAG_DISABLE_FC_PAUSE_TIME BIT(18)
427+
#define FLAG_NO_WAKE_UCAST BIT(19)
428+
#define FLAG_MNG_PT_ENABLED BIT(20)
429+
#define FLAG_RESET_OVERWRITES_LAA BIT(21)
430+
#define FLAG_TARC_SPEED_MODE_BIT BIT(22)
431+
#define FLAG_TARC_SET_BIT_ZERO BIT(23)
432+
#define FLAG_RX_NEEDS_RESTART BIT(24)
433+
#define FLAG_LSC_GIG_SPEED_DROP BIT(25)
434+
#define FLAG_SMART_POWER_DOWN BIT(26)
435+
#define FLAG_MSI_ENABLED BIT(27)
436+
/* reserved BIT(28) */
437+
#define FLAG_TSO_FORCE BIT(29)
438+
#define FLAG_RESTART_NOW BIT(30)
439+
#define FLAG_MSI_TEST_FAILED BIT(31)
440+
441+
#define FLAG2_CRC_STRIPPING BIT(0)
442+
#define FLAG2_HAS_PHY_WAKEUP BIT(1)
443+
#define FLAG2_IS_DISCARDING BIT(2)
444+
#define FLAG2_DISABLE_ASPM_L1 BIT(3)
445+
#define FLAG2_HAS_PHY_STATS BIT(4)
446+
#define FLAG2_HAS_EEE BIT(5)
447+
#define FLAG2_DMA_BURST BIT(6)
448+
#define FLAG2_DISABLE_ASPM_L0S BIT(7)
449+
#define FLAG2_DISABLE_AIM BIT(8)
450+
#define FLAG2_CHECK_PHY_HANG BIT(9)
451+
#define FLAG2_NO_DISABLE_RX BIT(10)
452+
#define FLAG2_PCIM2PCI_ARBITER_WA BIT(11)
453+
#define FLAG2_DFLT_CRC_STRIPPING BIT(12)
454+
#define FLAG2_CHECK_RX_HWTSTAMP BIT(13)
454455

455456
#define E1000_RX_DESC_PS(R, i) \
456457
(&(((union e1000_rx_desc_packet_split *)((R).desc))[i]))

drivers/net/ethernet/intel/e1000e/ethtool.c

Lines changed: 33 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,9 @@ static int e1000_get_settings(struct net_device *netdev,
201201
else
202202
ecmd->eth_tp_mdix_ctrl = hw->phy.mdix;
203203

204+
if (hw->phy.media_type != e1000_media_type_copper)
205+
ecmd->eth_tp_mdix_ctrl = ETH_TP_MDI_INVALID;
206+
204207
return 0;
205208
}
206209

@@ -236,8 +239,13 @@ static int e1000_set_spd_dplx(struct e1000_adapter *adapter, u32 spd, u8 dplx)
236239
mac->forced_speed_duplex = ADVERTISE_100_FULL;
237240
break;
238241
case SPEED_1000 + DUPLEX_FULL:
239-
mac->autoneg = 1;
240-
adapter->hw.phy.autoneg_advertised = ADVERTISE_1000_FULL;
242+
if (adapter->hw.phy.media_type == e1000_media_type_copper) {
243+
mac->autoneg = 1;
244+
adapter->hw.phy.autoneg_advertised =
245+
ADVERTISE_1000_FULL;
246+
} else {
247+
mac->forced_speed_duplex = ADVERTISE_1000_FULL;
248+
}
241249
break;
242250
case SPEED_1000 + DUPLEX_HALF: /* not supported */
243251
default:
@@ -439,8 +447,9 @@ static void e1000_get_regs(struct net_device *netdev,
439447

440448
memset(p, 0, E1000_REGS_LEN * sizeof(u32));
441449

442-
regs->version = (1 << 24) | (adapter->pdev->revision << 16) |
443-
adapter->pdev->device;
450+
regs->version = (1u << 24) |
451+
(adapter->pdev->revision << 16) |
452+
adapter->pdev->device;
444453

445454
regs_buff[0] = er32(CTRL);
446455
regs_buff[1] = er32(STATUS);
@@ -895,7 +904,7 @@ static int e1000_reg_test(struct e1000_adapter *adapter, u64 *data)
895904
case e1000_pch2lan:
896905
case e1000_pch_lpt:
897906
case e1000_pch_spt:
898-
mask |= (1 << 18);
907+
mask |= BIT(18);
899908
break;
900909
default:
901910
break;
@@ -914,17 +923,17 @@ static int e1000_reg_test(struct e1000_adapter *adapter, u64 *data)
914923

915924
/* SHRAH[9] different than the others */
916925
if (i == 10)
917-
mask |= (1 << 30);
926+
mask |= BIT(30);
918927
else
919-
mask &= ~(1 << 30);
928+
mask &= ~BIT(30);
920929
}
921930
if (mac->type == e1000_pch2lan) {
922931
/* SHRAH[0,1,2] different than previous */
923932
if (i == 1)
924933
mask &= 0xFFF4FFFF;
925934
/* SHRAH[3] different than SHRAH[0,1,2] */
926935
if (i == 4)
927-
mask |= (1 << 30);
936+
mask |= BIT(30);
928937
/* RAR[1-6] owned by management engine - skipping */
929938
if (i > 0)
930939
i += 6;
@@ -1019,7 +1028,7 @@ static int e1000_intr_test(struct e1000_adapter *adapter, u64 *data)
10191028
/* Test each interrupt */
10201029
for (i = 0; i < 10; i++) {
10211030
/* Interrupt to test */
1022-
mask = 1 << i;
1031+
mask = BIT(i);
10231032

10241033
if (adapter->flags & FLAG_IS_ICH) {
10251034
switch (mask) {
@@ -1387,7 +1396,7 @@ static int e1000_integrated_phy_loopback(struct e1000_adapter *adapter)
13871396
case e1000_phy_82579:
13881397
/* Disable PHY energy detect power down */
13891398
e1e_rphy(hw, PHY_REG(0, 21), &phy_reg);
1390-
e1e_wphy(hw, PHY_REG(0, 21), phy_reg & ~(1 << 3));
1399+
e1e_wphy(hw, PHY_REG(0, 21), phy_reg & ~BIT(3));
13911400
/* Disable full chip energy detect */
13921401
e1e_rphy(hw, PHY_REG(776, 18), &phy_reg);
13931402
e1e_wphy(hw, PHY_REG(776, 18), phy_reg | 1);
@@ -1453,7 +1462,7 @@ static int e1000_set_82571_fiber_loopback(struct e1000_adapter *adapter)
14531462

14541463
/* disable autoneg */
14551464
ctrl = er32(TXCW);
1456-
ctrl &= ~(1 << 31);
1465+
ctrl &= ~BIT(31);
14571466
ew32(TXCW, ctrl);
14581467

14591468
link = (er32(STATUS) & E1000_STATUS_LU);
@@ -2283,19 +2292,19 @@ static int e1000e_get_ts_info(struct net_device *netdev,
22832292
SOF_TIMESTAMPING_RX_HARDWARE |
22842293
SOF_TIMESTAMPING_RAW_HARDWARE);
22852294

2286-
info->tx_types = (1 << HWTSTAMP_TX_OFF) | (1 << HWTSTAMP_TX_ON);
2287-
2288-
info->rx_filters = ((1 << HWTSTAMP_FILTER_NONE) |
2289-
(1 << HWTSTAMP_FILTER_PTP_V1_L4_SYNC) |
2290-
(1 << HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ) |
2291-
(1 << HWTSTAMP_FILTER_PTP_V2_L4_SYNC) |
2292-
(1 << HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ) |
2293-
(1 << HWTSTAMP_FILTER_PTP_V2_L2_SYNC) |
2294-
(1 << HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ) |
2295-
(1 << HWTSTAMP_FILTER_PTP_V2_EVENT) |
2296-
(1 << HWTSTAMP_FILTER_PTP_V2_SYNC) |
2297-
(1 << HWTSTAMP_FILTER_PTP_V2_DELAY_REQ) |
2298-
(1 << HWTSTAMP_FILTER_ALL));
2295+
info->tx_types = BIT(HWTSTAMP_TX_OFF) | BIT(HWTSTAMP_TX_ON);
2296+
2297+
info->rx_filters = (BIT(HWTSTAMP_FILTER_NONE) |
2298+
BIT(HWTSTAMP_FILTER_PTP_V1_L4_SYNC) |
2299+
BIT(HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ) |
2300+
BIT(HWTSTAMP_FILTER_PTP_V2_L4_SYNC) |
2301+
BIT(HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ) |
2302+
BIT(HWTSTAMP_FILTER_PTP_V2_L2_SYNC) |
2303+
BIT(HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ) |
2304+
BIT(HWTSTAMP_FILTER_PTP_V2_EVENT) |
2305+
BIT(HWTSTAMP_FILTER_PTP_V2_SYNC) |
2306+
BIT(HWTSTAMP_FILTER_PTP_V2_DELAY_REQ) |
2307+
BIT(HWTSTAMP_FILTER_ALL));
22992308

23002309
if (adapter->ptp_clock)
23012310
info->phc_index = ptp_clock_index(adapter->ptp_clock);

0 commit comments

Comments
 (0)