diff options
Diffstat (limited to 'drivers/net/ethernet/intel')
20 files changed, 272 insertions, 256 deletions
diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_main.c b/drivers/net/ethernet/intel/fm10k/fm10k_main.c index 538b42d5c187..8e12aae065d8 100644 --- a/drivers/net/ethernet/intel/fm10k/fm10k_main.c +++ b/drivers/net/ethernet/intel/fm10k/fm10k_main.c | |||
@@ -446,13 +446,13 @@ static void fm10k_type_trans(struct fm10k_ring *rx_ring, | |||
446 | 446 | ||
447 | skb->protocol = eth_type_trans(skb, dev); | 447 | skb->protocol = eth_type_trans(skb, dev); |
448 | 448 | ||
449 | /* Record Rx queue, or update macvlan statistics */ | ||
449 | if (!l2_accel) | 450 | if (!l2_accel) |
450 | return; | 451 | skb_record_rx_queue(skb, rx_ring->queue_index); |
451 | 452 | else | |
452 | /* update MACVLAN statistics */ | 453 | macvlan_count_rx(netdev_priv(dev), skb->len + ETH_HLEN, true, |
453 | macvlan_count_rx(netdev_priv(dev), skb->len + ETH_HLEN, 1, | 454 | (skb->pkt_type == PACKET_BROADCAST) || |
454 | !!(rx_desc->w.hdr_info & | 455 | (skb->pkt_type == PACKET_MULTICAST)); |
455 | cpu_to_le16(FM10K_RXD_HDR_INFO_XC_MASK))); | ||
456 | } | 456 | } |
457 | 457 | ||
458 | /** | 458 | /** |
@@ -479,8 +479,6 @@ static unsigned int fm10k_process_skb_fields(struct fm10k_ring *rx_ring, | |||
479 | 479 | ||
480 | FM10K_CB(skb)->fi.w.vlan = rx_desc->w.vlan; | 480 | FM10K_CB(skb)->fi.w.vlan = rx_desc->w.vlan; |
481 | 481 | ||
482 | skb_record_rx_queue(skb, rx_ring->queue_index); | ||
483 | |||
484 | FM10K_CB(skb)->fi.d.glort = rx_desc->d.glort; | 482 | FM10K_CB(skb)->fi.d.glort = rx_desc->d.glort; |
485 | 483 | ||
486 | if (rx_desc->w.vlan) { | 484 | if (rx_desc->w.vlan) { |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe.h b/drivers/net/ethernet/intel/ixgbe/ixgbe.h index 03a4df0bed96..49ab0c7a9cd5 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe.h +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe.h | |||
@@ -674,6 +674,7 @@ struct ixgbe_adapter { | |||
674 | struct ieee_ets *ixgbe_ieee_ets; | 674 | struct ieee_ets *ixgbe_ieee_ets; |
675 | struct ixgbe_dcb_config dcb_cfg; | 675 | struct ixgbe_dcb_config dcb_cfg; |
676 | struct ixgbe_dcb_config temp_dcb_cfg; | 676 | struct ixgbe_dcb_config temp_dcb_cfg; |
677 | u8 hw_tcs; | ||
677 | u8 dcb_set_bitmap; | 678 | u8 dcb_set_bitmap; |
678 | u8 dcbx_cap; | 679 | u8 dcbx_cap; |
679 | enum ixgbe_fc_mode last_lfc_mode; | 680 | enum ixgbe_fc_mode last_lfc_mode; |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c index 8a32eb7d47b9..a0ebd9ecf243 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c | |||
@@ -431,6 +431,7 @@ static s32 ixgbe_fc_enable_82598(struct ixgbe_hw *hw) | |||
431 | /** | 431 | /** |
432 | * ixgbe_start_mac_link_82598 - Configures MAC link settings | 432 | * ixgbe_start_mac_link_82598 - Configures MAC link settings |
433 | * @hw: pointer to hardware structure | 433 | * @hw: pointer to hardware structure |
434 | * @autoneg_wait_to_complete: true when waiting for completion is needed | ||
434 | * | 435 | * |
435 | * Configures link settings based on values in the ixgbe_hw struct. | 436 | * Configures link settings based on values in the ixgbe_hw struct. |
436 | * Restarts the link. Performs autonegotiation if needed. | 437 | * Restarts the link. Performs autonegotiation if needed. |
@@ -1054,7 +1055,7 @@ static s32 ixgbe_read_i2c_eeprom_82598(struct ixgbe_hw *hw, u8 byte_offset, | |||
1054 | * ixgbe_read_i2c_sff8472_82598 - Reads 8 bit word over I2C interface. | 1055 | * ixgbe_read_i2c_sff8472_82598 - Reads 8 bit word over I2C interface. |
1055 | * @hw: pointer to hardware structure | 1056 | * @hw: pointer to hardware structure |
1056 | * @byte_offset: byte offset at address 0xA2 | 1057 | * @byte_offset: byte offset at address 0xA2 |
1057 | * @eeprom_data: value read | 1058 | * @sff8472_data: value read |
1058 | * | 1059 | * |
1059 | * Performs 8 byte read operation to SFP module's SFF-8472 data over I2C | 1060 | * Performs 8 byte read operation to SFP module's SFF-8472 data over I2C |
1060 | **/ | 1061 | **/ |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c index d602637ccc40..4dfc81dbee4b 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c | |||
@@ -221,7 +221,7 @@ static s32 prot_autoc_read_82599(struct ixgbe_hw *hw, bool *locked, | |||
221 | /** | 221 | /** |
222 | * prot_autoc_write_82599 - Hides MAC differences needed for AUTOC write | 222 | * prot_autoc_write_82599 - Hides MAC differences needed for AUTOC write |
223 | * @hw: pointer to hardware structure | 223 | * @hw: pointer to hardware structure |
224 | * @reg_val: value to write to AUTOC | 224 | * @autoc: value to write to AUTOC |
225 | * @locked: bool to indicate whether the SW/FW lock was already taken by | 225 | * @locked: bool to indicate whether the SW/FW lock was already taken by |
226 | * previous proc_autoc_read_82599. | 226 | * previous proc_autoc_read_82599. |
227 | * | 227 | * |
@@ -1310,10 +1310,11 @@ do { \ | |||
1310 | 1310 | ||
1311 | /** | 1311 | /** |
1312 | * ixgbe_atr_compute_sig_hash_82599 - Compute the signature hash | 1312 | * ixgbe_atr_compute_sig_hash_82599 - Compute the signature hash |
1313 | * @stream: input bitstream to compute the hash on | 1313 | * @input: input bitstream to compute the hash on |
1314 | * @common: compressed common input dword | ||
1314 | * | 1315 | * |
1315 | * This function is almost identical to the function above but contains | 1316 | * This function is almost identical to the function above but contains |
1316 | * several optomizations such as unwinding all of the loops, letting the | 1317 | * several optimizations such as unwinding all of the loops, letting the |
1317 | * compiler work out all of the conditional ifs since the keys are static | 1318 | * compiler work out all of the conditional ifs since the keys are static |
1318 | * defines, and computing two keys at once since the hashed dword stream | 1319 | * defines, and computing two keys at once since the hashed dword stream |
1319 | * will be the same for both keys. | 1320 | * will be the same for both keys. |
@@ -1446,7 +1447,7 @@ do { \ | |||
1446 | 1447 | ||
1447 | /** | 1448 | /** |
1448 | * ixgbe_atr_compute_perfect_hash_82599 - Compute the perfect filter hash | 1449 | * ixgbe_atr_compute_perfect_hash_82599 - Compute the perfect filter hash |
1449 | * @atr_input: input bitstream to compute the hash on | 1450 | * @input: input bitstream to compute the hash on |
1450 | * @input_mask: mask for the input bitstream | 1451 | * @input_mask: mask for the input bitstream |
1451 | * | 1452 | * |
1452 | * This function serves two main purposes. First it applies the input_mask | 1453 | * This function serves two main purposes. First it applies the input_mask |
@@ -2078,6 +2079,7 @@ reset_pipeline_out: | |||
2078 | * ixgbe_read_i2c_byte_82599 - Reads 8 bit word over I2C | 2079 | * ixgbe_read_i2c_byte_82599 - Reads 8 bit word over I2C |
2079 | * @hw: pointer to hardware structure | 2080 | * @hw: pointer to hardware structure |
2080 | * @byte_offset: byte offset to read | 2081 | * @byte_offset: byte offset to read |
2082 | * @dev_addr: address to read from | ||
2081 | * @data: value read | 2083 | * @data: value read |
2082 | * | 2084 | * |
2083 | * Performs byte read operation to SFP module's EEPROM over I2C interface at | 2085 | * Performs byte read operation to SFP module's EEPROM over I2C interface at |
@@ -2131,6 +2133,7 @@ release_i2c_access: | |||
2131 | * ixgbe_write_i2c_byte_82599 - Writes 8 bit word over I2C | 2133 | * ixgbe_write_i2c_byte_82599 - Writes 8 bit word over I2C |
2132 | * @hw: pointer to hardware structure | 2134 | * @hw: pointer to hardware structure |
2133 | * @byte_offset: byte offset to write | 2135 | * @byte_offset: byte offset to write |
2136 | * @dev_addr: address to write to | ||
2134 | * @data: value to write | 2137 | * @data: value to write |
2135 | * | 2138 | * |
2136 | * Performs byte write operation to SFP module's EEPROM over I2C interface at | 2139 | * Performs byte write operation to SFP module's EEPROM over I2C interface at |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c index 1948e4208fb4..7ac7ef9b37ff 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c | |||
@@ -1613,6 +1613,7 @@ static void ixgbe_shift_out_eeprom_bits(struct ixgbe_hw *hw, u16 data, | |||
1613 | /** | 1613 | /** |
1614 | * ixgbe_shift_in_eeprom_bits - Shift data bits in from the EEPROM | 1614 | * ixgbe_shift_in_eeprom_bits - Shift data bits in from the EEPROM |
1615 | * @hw: pointer to hardware structure | 1615 | * @hw: pointer to hardware structure |
1616 | * @count: number of bits to shift | ||
1616 | **/ | 1617 | **/ |
1617 | static u16 ixgbe_shift_in_eeprom_bits(struct ixgbe_hw *hw, u16 count) | 1618 | static u16 ixgbe_shift_in_eeprom_bits(struct ixgbe_hw *hw, u16 count) |
1618 | { | 1619 | { |
@@ -1667,7 +1668,7 @@ static void ixgbe_raise_eeprom_clk(struct ixgbe_hw *hw, u32 *eec) | |||
1667 | /** | 1668 | /** |
1668 | * ixgbe_lower_eeprom_clk - Lowers the EEPROM's clock input. | 1669 | * ixgbe_lower_eeprom_clk - Lowers the EEPROM's clock input. |
1669 | * @hw: pointer to hardware structure | 1670 | * @hw: pointer to hardware structure |
1670 | * @eecd: EECD's current value | 1671 | * @eec: EEC's current value |
1671 | **/ | 1672 | **/ |
1672 | static void ixgbe_lower_eeprom_clk(struct ixgbe_hw *hw, u32 *eec) | 1673 | static void ixgbe_lower_eeprom_clk(struct ixgbe_hw *hw, u32 *eec) |
1673 | { | 1674 | { |
@@ -2037,7 +2038,7 @@ static s32 ixgbe_mta_vector(struct ixgbe_hw *hw, u8 *mc_addr) | |||
2037 | /** | 2038 | /** |
2038 | * ixgbe_set_mta - Set bit-vector in multicast table | 2039 | * ixgbe_set_mta - Set bit-vector in multicast table |
2039 | * @hw: pointer to hardware structure | 2040 | * @hw: pointer to hardware structure |
2040 | * @hash_value: Multicast address hash value | 2041 | * @mc_addr: Multicast address |
2041 | * | 2042 | * |
2042 | * Sets the bit-vector in the multicast table. | 2043 | * Sets the bit-vector in the multicast table. |
2043 | **/ | 2044 | **/ |
@@ -3086,6 +3087,8 @@ s32 ixgbe_init_uta_tables_generic(struct ixgbe_hw *hw) | |||
3086 | * ixgbe_find_vlvf_slot - find the vlanid or the first empty slot | 3087 | * ixgbe_find_vlvf_slot - find the vlanid or the first empty slot |
3087 | * @hw: pointer to hardware structure | 3088 | * @hw: pointer to hardware structure |
3088 | * @vlan: VLAN id to write to VLAN filter | 3089 | * @vlan: VLAN id to write to VLAN filter |
3090 | * @vlvf_bypass: true to find vlanid only, false returns first empty slot if | ||
3091 | * vlanid not found | ||
3089 | * | 3092 | * |
3090 | * return the VLVF index where this VLAN id should be placed | 3093 | * return the VLVF index where this VLAN id should be placed |
3091 | * | 3094 | * |
@@ -3476,7 +3479,7 @@ void ixgbe_set_mac_anti_spoofing(struct ixgbe_hw *hw, bool enable, int vf) | |||
3476 | * ixgbe_set_vlan_anti_spoofing - Enable/Disable VLAN anti-spoofing | 3479 | * ixgbe_set_vlan_anti_spoofing - Enable/Disable VLAN anti-spoofing |
3477 | * @hw: pointer to hardware structure | 3480 | * @hw: pointer to hardware structure |
3478 | * @enable: enable or disable switch for VLAN anti-spoofing | 3481 | * @enable: enable or disable switch for VLAN anti-spoofing |
3479 | * @pf: Virtual Function pool - VF Pool to set for VLAN anti-spoofing | 3482 | * @vf: Virtual Function pool - VF Pool to set for VLAN anti-spoofing |
3480 | * | 3483 | * |
3481 | **/ | 3484 | **/ |
3482 | void ixgbe_set_vlan_anti_spoofing(struct ixgbe_hw *hw, bool enable, int vf) | 3485 | void ixgbe_set_vlan_anti_spoofing(struct ixgbe_hw *hw, bool enable, int vf) |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb.c index 072ef3b5fc61..aaea8282bfd2 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb.c | |||
@@ -39,6 +39,10 @@ | |||
39 | * are the smallest unit programmable into the underlying | 39 | * are the smallest unit programmable into the underlying |
40 | * hardware. The IEEE 802.1Qaz specification do not use bandwidth | 40 | * hardware. The IEEE 802.1Qaz specification do not use bandwidth |
41 | * groups so this is much simplified from the CEE case. | 41 | * groups so this is much simplified from the CEE case. |
42 | * @bw: bandwidth index by traffic class | ||
43 | * @refill: refill credits index by traffic class | ||
44 | * @max: max credits by traffic class | ||
45 | * @max_frame: maximum frame size | ||
42 | */ | 46 | */ |
43 | static s32 ixgbe_ieee_credits(__u8 *bw, __u16 *refill, | 47 | static s32 ixgbe_ieee_credits(__u8 *bw, __u16 *refill, |
44 | __u16 *max, int max_frame) | 48 | __u16 *max, int max_frame) |
@@ -72,8 +76,10 @@ static s32 ixgbe_ieee_credits(__u8 *bw, __u16 *refill, | |||
72 | 76 | ||
73 | /** | 77 | /** |
74 | * ixgbe_dcb_calculate_tc_credits - Calculates traffic class credits | 78 | * ixgbe_dcb_calculate_tc_credits - Calculates traffic class credits |
75 | * @ixgbe_dcb_config: Struct containing DCB settings. | 79 | * @hw: pointer to hardware structure |
76 | * @direction: Configuring either Tx or Rx. | 80 | * @dcb_config: Struct containing DCB settings |
81 | * @max_frame: Maximum frame size | ||
82 | * @direction: Configuring either Tx or Rx | ||
77 | * | 83 | * |
78 | * This function calculates the credits allocated to each traffic class. | 84 | * This function calculates the credits allocated to each traffic class. |
79 | * It should be called only after the rules are checked by | 85 | * It should be called only after the rules are checked by |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82598.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82598.c index b79e93a5b699..f94c7e82a30b 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82598.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82598.c | |||
@@ -34,7 +34,9 @@ | |||
34 | /** | 34 | /** |
35 | * ixgbe_dcb_config_rx_arbiter_82598 - Config Rx data arbiter | 35 | * ixgbe_dcb_config_rx_arbiter_82598 - Config Rx data arbiter |
36 | * @hw: pointer to hardware structure | 36 | * @hw: pointer to hardware structure |
37 | * @dcb_config: pointer to ixgbe_dcb_config structure | 37 | * @refill: refill credits index by traffic class |
38 | * @max: max credits index by traffic class | ||
39 | * @prio_type: priority type indexed by traffic class | ||
38 | * | 40 | * |
39 | * Configure Rx Data Arbiter and credits for each traffic class. | 41 | * Configure Rx Data Arbiter and credits for each traffic class. |
40 | */ | 42 | */ |
@@ -91,7 +93,10 @@ s32 ixgbe_dcb_config_rx_arbiter_82598(struct ixgbe_hw *hw, | |||
91 | /** | 93 | /** |
92 | * ixgbe_dcb_config_tx_desc_arbiter_82598 - Config Tx Desc. arbiter | 94 | * ixgbe_dcb_config_tx_desc_arbiter_82598 - Config Tx Desc. arbiter |
93 | * @hw: pointer to hardware structure | 95 | * @hw: pointer to hardware structure |
94 | * @dcb_config: pointer to ixgbe_dcb_config structure | 96 | * @refill: refill credits index by traffic class |
97 | * @max: max credits index by traffic class | ||
98 | * @bwg_id: bandwidth grouping indexed by traffic class | ||
99 | * @prio_type: priority type indexed by traffic class | ||
95 | * | 100 | * |
96 | * Configure Tx Descriptor Arbiter and credits for each traffic class. | 101 | * Configure Tx Descriptor Arbiter and credits for each traffic class. |
97 | */ | 102 | */ |
@@ -137,7 +142,10 @@ s32 ixgbe_dcb_config_tx_desc_arbiter_82598(struct ixgbe_hw *hw, | |||
137 | /** | 142 | /** |
138 | * ixgbe_dcb_config_tx_data_arbiter_82598 - Config Tx data arbiter | 143 | * ixgbe_dcb_config_tx_data_arbiter_82598 - Config Tx data arbiter |
139 | * @hw: pointer to hardware structure | 144 | * @hw: pointer to hardware structure |
140 | * @dcb_config: pointer to ixgbe_dcb_config structure | 145 | * @refill: refill credits index by traffic class |
146 | * @max: max credits index by traffic class | ||
147 | * @bwg_id: bandwidth grouping indexed by traffic class | ||
148 | * @prio_type: priority type indexed by traffic class | ||
141 | * | 149 | * |
142 | * Configure Tx Data Arbiter and credits for each traffic class. | 150 | * Configure Tx Data Arbiter and credits for each traffic class. |
143 | */ | 151 | */ |
@@ -184,7 +192,7 @@ s32 ixgbe_dcb_config_tx_data_arbiter_82598(struct ixgbe_hw *hw, | |||
184 | /** | 192 | /** |
185 | * ixgbe_dcb_config_pfc_82598 - Config priority flow control | 193 | * ixgbe_dcb_config_pfc_82598 - Config priority flow control |
186 | * @hw: pointer to hardware structure | 194 | * @hw: pointer to hardware structure |
187 | * @dcb_config: pointer to ixgbe_dcb_config structure | 195 | * @pfc_en: enabled pfc bitmask |
188 | * | 196 | * |
189 | * Configure Priority Flow Control for each traffic class. | 197 | * Configure Priority Flow Control for each traffic class. |
190 | */ | 198 | */ |
@@ -269,7 +277,11 @@ static s32 ixgbe_dcb_config_tc_stats_82598(struct ixgbe_hw *hw) | |||
269 | /** | 277 | /** |
270 | * ixgbe_dcb_hw_config_82598 - Config and enable DCB | 278 | * ixgbe_dcb_hw_config_82598 - Config and enable DCB |
271 | * @hw: pointer to hardware structure | 279 | * @hw: pointer to hardware structure |
272 | * @dcb_config: pointer to ixgbe_dcb_config structure | 280 | * @pfc_en: enabled pfc bitmask |
281 | * @refill: refill credits index by traffic class | ||
282 | * @max: max credits index by traffic class | ||
283 | * @bwg_id: bandwidth grouping indexed by traffic class | ||
284 | * @prio_type: priority type indexed by traffic class | ||
273 | * | 285 | * |
274 | * Configure dcb settings and enable dcb mode. | 286 | * Configure dcb settings and enable dcb mode. |
275 | */ | 287 | */ |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82599.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82599.c index 1011d644978f..1eed6811e914 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82599.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82599.c | |||
@@ -38,6 +38,7 @@ | |||
38 | * @max: max credits index by traffic class | 38 | * @max: max credits index by traffic class |
39 | * @bwg_id: bandwidth grouping indexed by traffic class | 39 | * @bwg_id: bandwidth grouping indexed by traffic class |
40 | * @prio_type: priority type indexed by traffic class | 40 | * @prio_type: priority type indexed by traffic class |
41 | * @prio_tc: priority to tc assignments indexed by priority | ||
41 | * | 42 | * |
42 | * Configure Rx Packet Arbiter and credits for each traffic class. | 43 | * Configure Rx Packet Arbiter and credits for each traffic class. |
43 | */ | 44 | */ |
@@ -148,6 +149,7 @@ s32 ixgbe_dcb_config_tx_desc_arbiter_82599(struct ixgbe_hw *hw, | |||
148 | * @max: max credits index by traffic class | 149 | * @max: max credits index by traffic class |
149 | * @bwg_id: bandwidth grouping indexed by traffic class | 150 | * @bwg_id: bandwidth grouping indexed by traffic class |
150 | * @prio_type: priority type indexed by traffic class | 151 | * @prio_type: priority type indexed by traffic class |
152 | * @prio_tc: priority to tc assignments indexed by priority | ||
151 | * | 153 | * |
152 | * Configure Tx Packet Arbiter and credits for each traffic class. | 154 | * Configure Tx Packet Arbiter and credits for each traffic class. |
153 | */ | 155 | */ |
@@ -344,11 +346,12 @@ static s32 ixgbe_dcb_config_tc_stats_82599(struct ixgbe_hw *hw) | |||
344 | /** | 346 | /** |
345 | * ixgbe_dcb_hw_config_82599 - Configure and enable DCB | 347 | * ixgbe_dcb_hw_config_82599 - Configure and enable DCB |
346 | * @hw: pointer to hardware structure | 348 | * @hw: pointer to hardware structure |
349 | * @pfc_en: enabled pfc bitmask | ||
347 | * @refill: refill credits index by traffic class | 350 | * @refill: refill credits index by traffic class |
348 | * @max: max credits index by traffic class | 351 | * @max: max credits index by traffic class |
349 | * @bwg_id: bandwidth grouping indexed by traffic class | 352 | * @bwg_id: bandwidth grouping indexed by traffic class |
350 | * @prio_type: priority type indexed by traffic class | 353 | * @prio_type: priority type indexed by traffic class |
351 | * @pfc_en: enabled pfc bitmask | 354 | * @prio_tc: priority to tc assignments indexed by priority |
352 | * | 355 | * |
353 | * Configure dcb settings and enable dcb mode. | 356 | * Configure dcb settings and enable dcb mode. |
354 | */ | 357 | */ |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c index 78c52375acc6..b33f3f87e4b1 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c | |||
@@ -571,7 +571,7 @@ static int ixgbe_dcbnl_ieee_setets(struct net_device *dev, | |||
571 | if (max_tc > adapter->dcb_cfg.num_tcs.pg_tcs) | 571 | if (max_tc > adapter->dcb_cfg.num_tcs.pg_tcs) |
572 | return -EINVAL; | 572 | return -EINVAL; |
573 | 573 | ||
574 | if (max_tc != netdev_get_num_tc(dev)) { | 574 | if (max_tc != adapter->hw_tcs) { |
575 | err = ixgbe_setup_tc(dev, max_tc); | 575 | err = ixgbe_setup_tc(dev, max_tc); |
576 | if (err) | 576 | if (err) |
577 | return err; | 577 | return err; |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_debugfs.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_debugfs.c index 5e2c1e35e517..ad54080488ee 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_debugfs.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_debugfs.c | |||
@@ -249,7 +249,7 @@ void ixgbe_dbg_adapter_init(struct ixgbe_adapter *adapter) | |||
249 | 249 | ||
250 | /** | 250 | /** |
251 | * ixgbe_dbg_adapter_exit - clear out the adapter's debugfs entries | 251 | * ixgbe_dbg_adapter_exit - clear out the adapter's debugfs entries |
252 | * @pf: the pf that is stopping | 252 | * @adapter: the adapter that is exiting |
253 | **/ | 253 | **/ |
254 | void ixgbe_dbg_adapter_exit(struct ixgbe_adapter *adapter) | 254 | void ixgbe_dbg_adapter_exit(struct ixgbe_adapter *adapter) |
255 | { | 255 | { |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c index 3bcf58b27d8b..f064099733b6 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | |||
@@ -3117,7 +3117,7 @@ static int ixgbe_get_ts_info(struct net_device *dev, | |||
3117 | static unsigned int ixgbe_max_channels(struct ixgbe_adapter *adapter) | 3117 | static unsigned int ixgbe_max_channels(struct ixgbe_adapter *adapter) |
3118 | { | 3118 | { |
3119 | unsigned int max_combined; | 3119 | unsigned int max_combined; |
3120 | u8 tcs = netdev_get_num_tc(adapter->netdev); | 3120 | u8 tcs = adapter->hw_tcs; |
3121 | 3121 | ||
3122 | if (!(adapter->flags & IXGBE_FLAG_MSIX_ENABLED)) { | 3122 | if (!(adapter->flags & IXGBE_FLAG_MSIX_ENABLED)) { |
3123 | /* We only support one q_vector without MSI-X */ | 3123 | /* We only support one q_vector without MSI-X */ |
@@ -3174,7 +3174,7 @@ static void ixgbe_get_channels(struct net_device *dev, | |||
3174 | return; | 3174 | return; |
3175 | 3175 | ||
3176 | /* same thing goes for being DCB enabled */ | 3176 | /* same thing goes for being DCB enabled */ |
3177 | if (netdev_get_num_tc(dev) > 1) | 3177 | if (adapter->hw_tcs > 1) |
3178 | return; | 3178 | return; |
3179 | 3179 | ||
3180 | /* if ATR is disabled we can exit */ | 3180 | /* if ATR is disabled we can exit */ |
@@ -3220,7 +3220,7 @@ static int ixgbe_set_channels(struct net_device *dev, | |||
3220 | 3220 | ||
3221 | #endif | 3221 | #endif |
3222 | /* use setup TC to update any traffic class queue mapping */ | 3222 | /* use setup TC to update any traffic class queue mapping */ |
3223 | return ixgbe_setup_tc(dev, netdev_get_num_tc(dev)); | 3223 | return ixgbe_setup_tc(dev, adapter->hw_tcs); |
3224 | } | 3224 | } |
3225 | 3225 | ||
3226 | static int ixgbe_get_module_info(struct net_device *dev, | 3226 | static int ixgbe_get_module_info(struct net_device *dev, |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.c index 6e6b3c175267..7a09a40e4472 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.c | |||
@@ -150,6 +150,7 @@ skip_ddpinv: | |||
150 | * @xid: the exchange id requesting ddp | 150 | * @xid: the exchange id requesting ddp |
151 | * @sgl: the scatter-gather list for this request | 151 | * @sgl: the scatter-gather list for this request |
152 | * @sgc: the number of scatter-gather items | 152 | * @sgc: the number of scatter-gather items |
153 | * @target_mode: 1 to setup target mode, 0 to setup initiator mode | ||
153 | * | 154 | * |
154 | * Returns : 1 for success and 0 for no ddp | 155 | * Returns : 1 for success and 0 for no ddp |
155 | */ | 156 | */ |
@@ -1063,7 +1064,7 @@ int ixgbe_fcoe_get_hbainfo(struct net_device *netdev, | |||
1063 | 1064 | ||
1064 | /** | 1065 | /** |
1065 | * ixgbe_fcoe_get_tc - get the current TC that fcoe is mapped to | 1066 | * ixgbe_fcoe_get_tc - get the current TC that fcoe is mapped to |
1066 | * @adapter - pointer to the device adapter structure | 1067 | * @adapter: pointer to the device adapter structure |
1067 | * | 1068 | * |
1068 | * Return : TC that FCoE is mapped to | 1069 | * Return : TC that FCoE is mapped to |
1069 | */ | 1070 | */ |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c index cceafbc3f1db..b3c282d09b18 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c | |||
@@ -46,8 +46,8 @@ static bool ixgbe_cache_ring_dcb_sriov(struct ixgbe_adapter *adapter) | |||
46 | #endif /* IXGBE_FCOE */ | 46 | #endif /* IXGBE_FCOE */ |
47 | struct ixgbe_ring_feature *vmdq = &adapter->ring_feature[RING_F_VMDQ]; | 47 | struct ixgbe_ring_feature *vmdq = &adapter->ring_feature[RING_F_VMDQ]; |
48 | int i; | 48 | int i; |
49 | u16 reg_idx; | 49 | u16 reg_idx, pool; |
50 | u8 tcs = netdev_get_num_tc(adapter->netdev); | 50 | u8 tcs = adapter->hw_tcs; |
51 | 51 | ||
52 | /* verify we have DCB queueing enabled before proceeding */ | 52 | /* verify we have DCB queueing enabled before proceeding */ |
53 | if (tcs <= 1) | 53 | if (tcs <= 1) |
@@ -58,12 +58,16 @@ static bool ixgbe_cache_ring_dcb_sriov(struct ixgbe_adapter *adapter) | |||
58 | return false; | 58 | return false; |
59 | 59 | ||
60 | /* start at VMDq register offset for SR-IOV enabled setups */ | 60 | /* start at VMDq register offset for SR-IOV enabled setups */ |
61 | pool = 0; | ||
61 | reg_idx = vmdq->offset * __ALIGN_MASK(1, ~vmdq->mask); | 62 | reg_idx = vmdq->offset * __ALIGN_MASK(1, ~vmdq->mask); |
62 | for (i = 0; i < adapter->num_rx_queues; i++, reg_idx++) { | 63 | for (i = 0, pool = 0; i < adapter->num_rx_queues; i++, reg_idx++) { |
63 | /* If we are greater than indices move to next pool */ | 64 | /* If we are greater than indices move to next pool */ |
64 | if ((reg_idx & ~vmdq->mask) >= tcs) | 65 | if ((reg_idx & ~vmdq->mask) >= tcs) { |
66 | pool++; | ||
65 | reg_idx = __ALIGN_MASK(reg_idx, ~vmdq->mask); | 67 | reg_idx = __ALIGN_MASK(reg_idx, ~vmdq->mask); |
68 | } | ||
66 | adapter->rx_ring[i]->reg_idx = reg_idx; | 69 | adapter->rx_ring[i]->reg_idx = reg_idx; |
70 | adapter->rx_ring[i]->netdev = pool ? NULL : adapter->netdev; | ||
67 | } | 71 | } |
68 | 72 | ||
69 | reg_idx = vmdq->offset * __ALIGN_MASK(1, ~vmdq->mask); | 73 | reg_idx = vmdq->offset * __ALIGN_MASK(1, ~vmdq->mask); |
@@ -92,6 +96,7 @@ static bool ixgbe_cache_ring_dcb_sriov(struct ixgbe_adapter *adapter) | |||
92 | for (i = fcoe->offset; i < adapter->num_rx_queues; i++) { | 96 | for (i = fcoe->offset; i < adapter->num_rx_queues; i++) { |
93 | reg_idx = __ALIGN_MASK(reg_idx, ~vmdq->mask) + fcoe_tc; | 97 | reg_idx = __ALIGN_MASK(reg_idx, ~vmdq->mask) + fcoe_tc; |
94 | adapter->rx_ring[i]->reg_idx = reg_idx; | 98 | adapter->rx_ring[i]->reg_idx = reg_idx; |
99 | adapter->rx_ring[i]->netdev = adapter->netdev; | ||
95 | reg_idx++; | 100 | reg_idx++; |
96 | } | 101 | } |
97 | 102 | ||
@@ -111,9 +116,8 @@ static bool ixgbe_cache_ring_dcb_sriov(struct ixgbe_adapter *adapter) | |||
111 | static void ixgbe_get_first_reg_idx(struct ixgbe_adapter *adapter, u8 tc, | 116 | static void ixgbe_get_first_reg_idx(struct ixgbe_adapter *adapter, u8 tc, |
112 | unsigned int *tx, unsigned int *rx) | 117 | unsigned int *tx, unsigned int *rx) |
113 | { | 118 | { |
114 | struct net_device *dev = adapter->netdev; | ||
115 | struct ixgbe_hw *hw = &adapter->hw; | 119 | struct ixgbe_hw *hw = &adapter->hw; |
116 | u8 num_tcs = netdev_get_num_tc(dev); | 120 | u8 num_tcs = adapter->hw_tcs; |
117 | 121 | ||
118 | *tx = 0; | 122 | *tx = 0; |
119 | *rx = 0; | 123 | *rx = 0; |
@@ -168,10 +172,9 @@ static void ixgbe_get_first_reg_idx(struct ixgbe_adapter *adapter, u8 tc, | |||
168 | **/ | 172 | **/ |
169 | static bool ixgbe_cache_ring_dcb(struct ixgbe_adapter *adapter) | 173 | static bool ixgbe_cache_ring_dcb(struct ixgbe_adapter *adapter) |
170 | { | 174 | { |
171 | struct net_device *dev = adapter->netdev; | 175 | u8 num_tcs = adapter->hw_tcs; |
172 | unsigned int tx_idx, rx_idx; | 176 | unsigned int tx_idx, rx_idx; |
173 | int tc, offset, rss_i, i; | 177 | int tc, offset, rss_i, i; |
174 | u8 num_tcs = netdev_get_num_tc(dev); | ||
175 | 178 | ||
176 | /* verify we have DCB queueing enabled before proceeding */ | 179 | /* verify we have DCB queueing enabled before proceeding */ |
177 | if (num_tcs <= 1) | 180 | if (num_tcs <= 1) |
@@ -184,6 +187,7 @@ static bool ixgbe_cache_ring_dcb(struct ixgbe_adapter *adapter) | |||
184 | for (i = 0; i < rss_i; i++, tx_idx++, rx_idx++) { | 187 | for (i = 0; i < rss_i; i++, tx_idx++, rx_idx++) { |
185 | adapter->tx_ring[offset + i]->reg_idx = tx_idx; | 188 | adapter->tx_ring[offset + i]->reg_idx = tx_idx; |
186 | adapter->rx_ring[offset + i]->reg_idx = rx_idx; | 189 | adapter->rx_ring[offset + i]->reg_idx = rx_idx; |
190 | adapter->rx_ring[offset + i]->netdev = adapter->netdev; | ||
187 | adapter->tx_ring[offset + i]->dcb_tc = tc; | 191 | adapter->tx_ring[offset + i]->dcb_tc = tc; |
188 | adapter->rx_ring[offset + i]->dcb_tc = tc; | 192 | adapter->rx_ring[offset + i]->dcb_tc = tc; |
189 | } | 193 | } |
@@ -208,14 +212,15 @@ static bool ixgbe_cache_ring_sriov(struct ixgbe_adapter *adapter) | |||
208 | #endif /* IXGBE_FCOE */ | 212 | #endif /* IXGBE_FCOE */ |
209 | struct ixgbe_ring_feature *vmdq = &adapter->ring_feature[RING_F_VMDQ]; | 213 | struct ixgbe_ring_feature *vmdq = &adapter->ring_feature[RING_F_VMDQ]; |
210 | struct ixgbe_ring_feature *rss = &adapter->ring_feature[RING_F_RSS]; | 214 | struct ixgbe_ring_feature *rss = &adapter->ring_feature[RING_F_RSS]; |
215 | u16 reg_idx, pool; | ||
211 | int i; | 216 | int i; |
212 | u16 reg_idx; | ||
213 | 217 | ||
214 | /* only proceed if VMDq is enabled */ | 218 | /* only proceed if VMDq is enabled */ |
215 | if (!(adapter->flags & IXGBE_FLAG_VMDQ_ENABLED)) | 219 | if (!(adapter->flags & IXGBE_FLAG_VMDQ_ENABLED)) |
216 | return false; | 220 | return false; |
217 | 221 | ||
218 | /* start at VMDq register offset for SR-IOV enabled setups */ | 222 | /* start at VMDq register offset for SR-IOV enabled setups */ |
223 | pool = 0; | ||
219 | reg_idx = vmdq->offset * __ALIGN_MASK(1, ~vmdq->mask); | 224 | reg_idx = vmdq->offset * __ALIGN_MASK(1, ~vmdq->mask); |
220 | for (i = 0; i < adapter->num_rx_queues; i++, reg_idx++) { | 225 | for (i = 0; i < adapter->num_rx_queues; i++, reg_idx++) { |
221 | #ifdef IXGBE_FCOE | 226 | #ifdef IXGBE_FCOE |
@@ -224,15 +229,20 @@ static bool ixgbe_cache_ring_sriov(struct ixgbe_adapter *adapter) | |||
224 | break; | 229 | break; |
225 | #endif | 230 | #endif |
226 | /* If we are greater than indices move to next pool */ | 231 | /* If we are greater than indices move to next pool */ |
227 | if ((reg_idx & ~vmdq->mask) >= rss->indices) | 232 | if ((reg_idx & ~vmdq->mask) >= rss->indices) { |
233 | pool++; | ||
228 | reg_idx = __ALIGN_MASK(reg_idx, ~vmdq->mask); | 234 | reg_idx = __ALIGN_MASK(reg_idx, ~vmdq->mask); |
235 | } | ||
229 | adapter->rx_ring[i]->reg_idx = reg_idx; | 236 | adapter->rx_ring[i]->reg_idx = reg_idx; |
237 | adapter->rx_ring[i]->netdev = pool ? NULL : adapter->netdev; | ||
230 | } | 238 | } |
231 | 239 | ||
232 | #ifdef IXGBE_FCOE | 240 | #ifdef IXGBE_FCOE |
233 | /* FCoE uses a linear block of queues so just assigning 1:1 */ | 241 | /* FCoE uses a linear block of queues so just assigning 1:1 */ |
234 | for (; i < adapter->num_rx_queues; i++, reg_idx++) | 242 | for (; i < adapter->num_rx_queues; i++, reg_idx++) { |
235 | adapter->rx_ring[i]->reg_idx = reg_idx; | 243 | adapter->rx_ring[i]->reg_idx = reg_idx; |
244 | adapter->rx_ring[i]->netdev = adapter->netdev; | ||
245 | } | ||
236 | 246 | ||
237 | #endif | 247 | #endif |
238 | reg_idx = vmdq->offset * __ALIGN_MASK(1, ~vmdq->mask); | 248 | reg_idx = vmdq->offset * __ALIGN_MASK(1, ~vmdq->mask); |
@@ -269,8 +279,10 @@ static bool ixgbe_cache_ring_rss(struct ixgbe_adapter *adapter) | |||
269 | { | 279 | { |
270 | int i, reg_idx; | 280 | int i, reg_idx; |
271 | 281 | ||
272 | for (i = 0; i < adapter->num_rx_queues; i++) | 282 | for (i = 0; i < adapter->num_rx_queues; i++) { |
273 | adapter->rx_ring[i]->reg_idx = i; | 283 | adapter->rx_ring[i]->reg_idx = i; |
284 | adapter->rx_ring[i]->netdev = adapter->netdev; | ||
285 | } | ||
274 | for (i = 0, reg_idx = 0; i < adapter->num_tx_queues; i++, reg_idx++) | 286 | for (i = 0, reg_idx = 0; i < adapter->num_tx_queues; i++, reg_idx++) |
275 | adapter->tx_ring[i]->reg_idx = reg_idx; | 287 | adapter->tx_ring[i]->reg_idx = reg_idx; |
276 | for (i = 0; i < adapter->num_xdp_queues; i++, reg_idx++) | 288 | for (i = 0; i < adapter->num_xdp_queues; i++, reg_idx++) |
@@ -340,7 +352,7 @@ static bool ixgbe_set_dcb_sriov_queues(struct ixgbe_adapter *adapter) | |||
340 | #ifdef IXGBE_FCOE | 352 | #ifdef IXGBE_FCOE |
341 | u16 fcoe_i = 0; | 353 | u16 fcoe_i = 0; |
342 | #endif | 354 | #endif |
343 | u8 tcs = netdev_get_num_tc(adapter->netdev); | 355 | u8 tcs = adapter->hw_tcs; |
344 | 356 | ||
345 | /* verify we have DCB queueing enabled before proceeding */ | 357 | /* verify we have DCB queueing enabled before proceeding */ |
346 | if (tcs <= 1) | 358 | if (tcs <= 1) |
@@ -440,7 +452,7 @@ static bool ixgbe_set_dcb_queues(struct ixgbe_adapter *adapter) | |||
440 | int tcs; | 452 | int tcs; |
441 | 453 | ||
442 | /* Map queue offset and counts onto allocated tx queues */ | 454 | /* Map queue offset and counts onto allocated tx queues */ |
443 | tcs = netdev_get_num_tc(dev); | 455 | tcs = adapter->hw_tcs; |
444 | 456 | ||
445 | /* verify we have DCB queueing enabled before proceeding */ | 457 | /* verify we have DCB queueing enabled before proceeding */ |
446 | if (tcs <= 1) | 458 | if (tcs <= 1) |
@@ -607,6 +619,10 @@ static bool ixgbe_set_sriov_queues(struct ixgbe_adapter *adapter) | |||
607 | } | 619 | } |
608 | 620 | ||
609 | #endif | 621 | #endif |
622 | /* populate TC0 for use by pool 0 */ | ||
623 | netdev_set_tc_queue(adapter->netdev, 0, | ||
624 | adapter->num_rx_queues_per_pool, 0); | ||
625 | |||
610 | return true; | 626 | return true; |
611 | } | 627 | } |
612 | 628 | ||
@@ -839,7 +855,7 @@ static int ixgbe_alloc_q_vector(struct ixgbe_adapter *adapter, | |||
839 | int node = NUMA_NO_NODE; | 855 | int node = NUMA_NO_NODE; |
840 | int cpu = -1; | 856 | int cpu = -1; |
841 | int ring_count, size; | 857 | int ring_count, size; |
842 | u8 tcs = netdev_get_num_tc(adapter->netdev); | 858 | u8 tcs = adapter->hw_tcs; |
843 | 859 | ||
844 | ring_count = txr_count + rxr_count + xdp_count; | 860 | ring_count = txr_count + rxr_count + xdp_count; |
845 | size = sizeof(struct ixgbe_q_vector) + | 861 | size = sizeof(struct ixgbe_q_vector) + |
@@ -922,11 +938,7 @@ static int ixgbe_alloc_q_vector(struct ixgbe_adapter *adapter, | |||
922 | 938 | ||
923 | /* apply Tx specific ring traits */ | 939 | /* apply Tx specific ring traits */ |
924 | ring->count = adapter->tx_ring_count; | 940 | ring->count = adapter->tx_ring_count; |
925 | if (adapter->num_rx_pools > 1) | 941 | ring->queue_index = txr_idx; |
926 | ring->queue_index = | ||
927 | txr_idx % adapter->num_rx_queues_per_pool; | ||
928 | else | ||
929 | ring->queue_index = txr_idx; | ||
930 | 942 | ||
931 | /* assign ring to adapter */ | 943 | /* assign ring to adapter */ |
932 | adapter->tx_ring[txr_idx] = ring; | 944 | adapter->tx_ring[txr_idx] = ring; |
@@ -996,11 +1008,7 @@ static int ixgbe_alloc_q_vector(struct ixgbe_adapter *adapter, | |||
996 | #endif /* IXGBE_FCOE */ | 1008 | #endif /* IXGBE_FCOE */ |
997 | /* apply Rx specific ring traits */ | 1009 | /* apply Rx specific ring traits */ |
998 | ring->count = adapter->rx_ring_count; | 1010 | ring->count = adapter->rx_ring_count; |
999 | if (adapter->num_rx_pools > 1) | 1011 | ring->queue_index = rxr_idx; |
1000 | ring->queue_index = | ||
1001 | rxr_idx % adapter->num_rx_queues_per_pool; | ||
1002 | else | ||
1003 | ring->queue_index = rxr_idx; | ||
1004 | 1012 | ||
1005 | /* assign ring to adapter */ | 1013 | /* assign ring to adapter */ |
1006 | adapter->rx_ring[rxr_idx] = ring; | 1014 | adapter->rx_ring[rxr_idx] = ring; |
@@ -1176,7 +1184,7 @@ static void ixgbe_set_interrupt_capability(struct ixgbe_adapter *adapter) | |||
1176 | */ | 1184 | */ |
1177 | 1185 | ||
1178 | /* Disable DCB unless we only have a single traffic class */ | 1186 | /* Disable DCB unless we only have a single traffic class */ |
1179 | if (netdev_get_num_tc(adapter->netdev) > 1) { | 1187 | if (adapter->hw_tcs > 1) { |
1180 | e_dev_warn("Number of DCB TCs exceeds number of available queues. Disabling DCB support.\n"); | 1188 | e_dev_warn("Number of DCB TCs exceeds number of available queues. Disabling DCB support.\n"); |
1181 | netdev_reset_tc(adapter->netdev); | 1189 | netdev_reset_tc(adapter->netdev); |
1182 | 1190 | ||
@@ -1188,6 +1196,7 @@ static void ixgbe_set_interrupt_capability(struct ixgbe_adapter *adapter) | |||
1188 | adapter->dcb_cfg.pfc_mode_enable = false; | 1196 | adapter->dcb_cfg.pfc_mode_enable = false; |
1189 | } | 1197 | } |
1190 | 1198 | ||
1199 | adapter->hw_tcs = 0; | ||
1191 | adapter->dcb_cfg.num_tcs.pg_tcs = 1; | 1200 | adapter->dcb_cfg.num_tcs.pg_tcs = 1; |
1192 | adapter->dcb_cfg.num_tcs.pfc_tcs = 1; | 1201 | adapter->dcb_cfg.num_tcs.pfc_tcs = 1; |
1193 | 1202 | ||
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c index e47e0c470508..4f28621b76e1 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | |||
@@ -1128,6 +1128,9 @@ static void ixgbe_tx_timeout_reset(struct ixgbe_adapter *adapter) | |||
1128 | 1128 | ||
1129 | /** | 1129 | /** |
1130 | * ixgbe_tx_maxrate - callback to set the maximum per-queue bitrate | 1130 | * ixgbe_tx_maxrate - callback to set the maximum per-queue bitrate |
1131 | * @netdev: network interface device structure | ||
1132 | * @queue_index: Tx queue to set | ||
1133 | * @maxrate: desired maximum transmit bitrate | ||
1131 | **/ | 1134 | **/ |
1132 | static int ixgbe_tx_maxrate(struct net_device *netdev, | 1135 | static int ixgbe_tx_maxrate(struct net_device *netdev, |
1133 | int queue_index, u32 maxrate) | 1136 | int queue_index, u32 maxrate) |
@@ -1749,9 +1752,15 @@ static void ixgbe_process_skb_fields(struct ixgbe_ring *rx_ring, | |||
1749 | __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), vid); | 1752 | __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), vid); |
1750 | } | 1753 | } |
1751 | 1754 | ||
1752 | skb_record_rx_queue(skb, rx_ring->queue_index); | ||
1753 | |||
1754 | skb->protocol = eth_type_trans(skb, dev); | 1755 | skb->protocol = eth_type_trans(skb, dev); |
1756 | |||
1757 | /* record Rx queue, or update MACVLAN statistics */ | ||
1758 | if (netif_is_ixgbe(dev)) | ||
1759 | skb_record_rx_queue(skb, rx_ring->queue_index); | ||
1760 | else | ||
1761 | macvlan_count_rx(netdev_priv(dev), skb->len + ETH_HLEN, true, | ||
1762 | (skb->pkt_type == PACKET_BROADCAST) || | ||
1763 | (skb->pkt_type == PACKET_MULTICAST)); | ||
1755 | } | 1764 | } |
1756 | 1765 | ||
1757 | static void ixgbe_rx_skb(struct ixgbe_q_vector *q_vector, | 1766 | static void ixgbe_rx_skb(struct ixgbe_q_vector *q_vector, |
@@ -1916,10 +1925,13 @@ static bool ixgbe_cleanup_headers(struct ixgbe_ring *rx_ring, | |||
1916 | if (IS_ERR(skb)) | 1925 | if (IS_ERR(skb)) |
1917 | return true; | 1926 | return true; |
1918 | 1927 | ||
1919 | /* verify that the packet does not have any known errors */ | 1928 | /* Verify netdev is present, and that packet does not have any |
1920 | if (unlikely(ixgbe_test_staterr(rx_desc, | 1929 | * errors that would be unacceptable to the netdev. |
1921 | IXGBE_RXDADV_ERR_FRAME_ERR_MASK) && | 1930 | */ |
1922 | !(netdev->features & NETIF_F_RXALL))) { | 1931 | if (!netdev || |
1932 | (unlikely(ixgbe_test_staterr(rx_desc, | ||
1933 | IXGBE_RXDADV_ERR_FRAME_ERR_MASK) && | ||
1934 | !(netdev->features & NETIF_F_RXALL)))) { | ||
1923 | dev_kfree_skb_any(skb); | 1935 | dev_kfree_skb_any(skb); |
1924 | return true; | 1936 | return true; |
1925 | } | 1937 | } |
@@ -2016,8 +2028,8 @@ static bool ixgbe_can_reuse_rx_page(struct ixgbe_rx_buffer *rx_buffer) | |||
2016 | * ixgbe_add_rx_frag - Add contents of Rx buffer to sk_buff | 2028 | * ixgbe_add_rx_frag - Add contents of Rx buffer to sk_buff |
2017 | * @rx_ring: rx descriptor ring to transact packets on | 2029 | * @rx_ring: rx descriptor ring to transact packets on |
2018 | * @rx_buffer: buffer containing page to add | 2030 | * @rx_buffer: buffer containing page to add |
2019 | * @rx_desc: descriptor containing length of buffer written by hardware | ||
2020 | * @skb: sk_buff to place the data into | 2031 | * @skb: sk_buff to place the data into |
2032 | * @size: size of data in rx_buffer | ||
2021 | * | 2033 | * |
2022 | * This function will add the data contained in rx_buffer->page to the skb. | 2034 | * This function will add the data contained in rx_buffer->page to the skb. |
2023 | * This is done either through a direct copy if the data in the buffer is | 2035 | * This is done either through a direct copy if the data in the buffer is |
@@ -3008,6 +3020,8 @@ static inline void ixgbe_irq_disable_queues(struct ixgbe_adapter *adapter, | |||
3008 | /** | 3020 | /** |
3009 | * ixgbe_irq_enable - Enable default interrupt generation settings | 3021 | * ixgbe_irq_enable - Enable default interrupt generation settings |
3010 | * @adapter: board private structure | 3022 | * @adapter: board private structure |
3023 | * @queues: enable irqs for queues | ||
3024 | * @flush: flush register write | ||
3011 | **/ | 3025 | **/ |
3012 | static inline void ixgbe_irq_enable(struct ixgbe_adapter *adapter, bool queues, | 3026 | static inline void ixgbe_irq_enable(struct ixgbe_adapter *adapter, bool queues, |
3013 | bool flush) | 3027 | bool flush) |
@@ -3463,6 +3477,7 @@ static inline void ixgbe_irq_disable(struct ixgbe_adapter *adapter) | |||
3463 | 3477 | ||
3464 | /** | 3478 | /** |
3465 | * ixgbe_configure_msi_and_legacy - Initialize PIN (INTA...) and MSI interrupts | 3479 | * ixgbe_configure_msi_and_legacy - Initialize PIN (INTA...) and MSI interrupts |
3480 | * @adapter: board private structure | ||
3466 | * | 3481 | * |
3467 | **/ | 3482 | **/ |
3468 | static void ixgbe_configure_msi_and_legacy(struct ixgbe_adapter *adapter) | 3483 | static void ixgbe_configure_msi_and_legacy(struct ixgbe_adapter *adapter) |
@@ -3574,7 +3589,7 @@ static void ixgbe_setup_mtqc(struct ixgbe_adapter *adapter) | |||
3574 | { | 3589 | { |
3575 | struct ixgbe_hw *hw = &adapter->hw; | 3590 | struct ixgbe_hw *hw = &adapter->hw; |
3576 | u32 rttdcs, mtqc; | 3591 | u32 rttdcs, mtqc; |
3577 | u8 tcs = netdev_get_num_tc(adapter->netdev); | 3592 | u8 tcs = adapter->hw_tcs; |
3578 | 3593 | ||
3579 | if (hw->mac.type == ixgbe_mac_82598EB) | 3594 | if (hw->mac.type == ixgbe_mac_82598EB) |
3580 | return; | 3595 | return; |
@@ -3929,7 +3944,7 @@ static void ixgbe_setup_mrqc(struct ixgbe_adapter *adapter) | |||
3929 | if (adapter->ring_feature[RING_F_RSS].mask) | 3944 | if (adapter->ring_feature[RING_F_RSS].mask) |
3930 | mrqc = IXGBE_MRQC_RSSEN; | 3945 | mrqc = IXGBE_MRQC_RSSEN; |
3931 | } else { | 3946 | } else { |
3932 | u8 tcs = netdev_get_num_tc(adapter->netdev); | 3947 | u8 tcs = adapter->hw_tcs; |
3933 | 3948 | ||
3934 | if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED) { | 3949 | if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED) { |
3935 | if (tcs > 4) | 3950 | if (tcs > 4) |
@@ -3991,8 +4006,8 @@ static void ixgbe_setup_mrqc(struct ixgbe_adapter *adapter) | |||
3991 | 4006 | ||
3992 | /** | 4007 | /** |
3993 | * ixgbe_configure_rscctl - enable RSC for the indicated ring | 4008 | * ixgbe_configure_rscctl - enable RSC for the indicated ring |
3994 | * @adapter: address of board private structure | 4009 | * @adapter: address of board private structure |
3995 | * @index: index of ring to set | 4010 | * @ring: structure containing ring specific data |
3996 | **/ | 4011 | **/ |
3997 | static void ixgbe_configure_rscctl(struct ixgbe_adapter *adapter, | 4012 | static void ixgbe_configure_rscctl(struct ixgbe_adapter *adapter, |
3998 | struct ixgbe_ring *ring) | 4013 | struct ixgbe_ring *ring) |
@@ -4848,9 +4863,11 @@ int ixgbe_del_mac_filter(struct ixgbe_adapter *adapter, | |||
4848 | 4863 | ||
4849 | return -ENOMEM; | 4864 | return -ENOMEM; |
4850 | } | 4865 | } |
4866 | |||
4851 | /** | 4867 | /** |
4852 | * ixgbe_write_uc_addr_list - write unicast addresses to RAR table | 4868 | * ixgbe_write_uc_addr_list - write unicast addresses to RAR table |
4853 | * @netdev: network interface device structure | 4869 | * @netdev: network interface device structure |
4870 | * @vfn: pool to associate with unicast addresses | ||
4854 | * | 4871 | * |
4855 | * Writes unicast address list to the RAR table. | 4872 | * Writes unicast address list to the RAR table. |
4856 | * Returns: -ENOMEM on failure/insufficient address space | 4873 | * Returns: -ENOMEM on failure/insufficient address space |
@@ -5197,7 +5214,7 @@ static int ixgbe_lpbthresh(struct ixgbe_adapter *adapter, int pb) | |||
5197 | static void ixgbe_pbthresh_setup(struct ixgbe_adapter *adapter) | 5214 | static void ixgbe_pbthresh_setup(struct ixgbe_adapter *adapter) |
5198 | { | 5215 | { |
5199 | struct ixgbe_hw *hw = &adapter->hw; | 5216 | struct ixgbe_hw *hw = &adapter->hw; |
5200 | int num_tc = netdev_get_num_tc(adapter->netdev); | 5217 | int num_tc = adapter->hw_tcs; |
5201 | int i; | 5218 | int i; |
5202 | 5219 | ||
5203 | if (!num_tc) | 5220 | if (!num_tc) |
@@ -5220,7 +5237,7 @@ static void ixgbe_configure_pb(struct ixgbe_adapter *adapter) | |||
5220 | { | 5237 | { |
5221 | struct ixgbe_hw *hw = &adapter->hw; | 5238 | struct ixgbe_hw *hw = &adapter->hw; |
5222 | int hdrm; | 5239 | int hdrm; |
5223 | u8 tc = netdev_get_num_tc(adapter->netdev); | 5240 | u8 tc = adapter->hw_tcs; |
5224 | 5241 | ||
5225 | if (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE || | 5242 | if (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE || |
5226 | adapter->flags & IXGBE_FLAG_FDIR_PERFECT_CAPABLE) | 5243 | adapter->flags & IXGBE_FLAG_FDIR_PERFECT_CAPABLE) |
@@ -5331,47 +5348,11 @@ static void ixgbe_clean_rx_ring(struct ixgbe_ring *rx_ring) | |||
5331 | rx_ring->next_to_use = 0; | 5348 | rx_ring->next_to_use = 0; |
5332 | } | 5349 | } |
5333 | 5350 | ||
5334 | static void ixgbe_disable_fwd_ring(struct ixgbe_fwd_adapter *vadapter, | ||
5335 | struct ixgbe_ring *rx_ring) | ||
5336 | { | ||
5337 | struct ixgbe_adapter *adapter = vadapter->real_adapter; | ||
5338 | int index = rx_ring->queue_index + vadapter->rx_base_queue; | ||
5339 | |||
5340 | /* shutdown specific queue receive and wait for dma to settle */ | ||
5341 | ixgbe_disable_rx_queue(adapter, rx_ring); | ||
5342 | usleep_range(10000, 20000); | ||
5343 | ixgbe_irq_disable_queues(adapter, BIT_ULL(index)); | ||
5344 | ixgbe_clean_rx_ring(rx_ring); | ||
5345 | } | ||
5346 | |||
5347 | static int ixgbe_fwd_ring_down(struct net_device *vdev, | ||
5348 | struct ixgbe_fwd_adapter *accel) | ||
5349 | { | ||
5350 | struct ixgbe_adapter *adapter = accel->real_adapter; | ||
5351 | unsigned int rxbase = accel->rx_base_queue; | ||
5352 | unsigned int txbase = accel->tx_base_queue; | ||
5353 | int i; | ||
5354 | |||
5355 | netif_tx_stop_all_queues(vdev); | ||
5356 | |||
5357 | for (i = 0; i < adapter->num_rx_queues_per_pool; i++) { | ||
5358 | ixgbe_disable_fwd_ring(accel, adapter->rx_ring[rxbase + i]); | ||
5359 | adapter->rx_ring[rxbase + i]->netdev = adapter->netdev; | ||
5360 | } | ||
5361 | |||
5362 | for (i = 0; i < adapter->num_rx_queues_per_pool; i++) | ||
5363 | adapter->tx_ring[txbase + i]->netdev = adapter->netdev; | ||
5364 | |||
5365 | |||
5366 | return 0; | ||
5367 | } | ||
5368 | |||
5369 | static int ixgbe_fwd_ring_up(struct net_device *vdev, | 5351 | static int ixgbe_fwd_ring_up(struct net_device *vdev, |
5370 | struct ixgbe_fwd_adapter *accel) | 5352 | struct ixgbe_fwd_adapter *accel) |
5371 | { | 5353 | { |
5372 | struct ixgbe_adapter *adapter = accel->real_adapter; | 5354 | struct ixgbe_adapter *adapter = accel->real_adapter; |
5373 | unsigned int rxbase, txbase, queues; | 5355 | int i, baseq, err; |
5374 | int i, baseq, err = 0; | ||
5375 | 5356 | ||
5376 | if (!test_bit(accel->pool, adapter->fwd_bitmask)) | 5357 | if (!test_bit(accel->pool, adapter->fwd_bitmask)) |
5377 | return 0; | 5358 | return 0; |
@@ -5382,38 +5363,30 @@ static int ixgbe_fwd_ring_up(struct net_device *vdev, | |||
5382 | baseq, baseq + adapter->num_rx_queues_per_pool); | 5363 | baseq, baseq + adapter->num_rx_queues_per_pool); |
5383 | 5364 | ||
5384 | accel->netdev = vdev; | 5365 | accel->netdev = vdev; |
5385 | accel->rx_base_queue = rxbase = baseq; | 5366 | accel->rx_base_queue = baseq; |
5386 | accel->tx_base_queue = txbase = baseq; | 5367 | accel->tx_base_queue = baseq; |
5387 | 5368 | ||
5388 | for (i = 0; i < adapter->num_rx_queues_per_pool; i++) | 5369 | for (i = 0; i < adapter->num_rx_queues_per_pool; i++) |
5389 | ixgbe_disable_fwd_ring(accel, adapter->rx_ring[rxbase + i]); | 5370 | adapter->rx_ring[baseq + i]->netdev = vdev; |
5390 | 5371 | ||
5391 | for (i = 0; i < adapter->num_rx_queues_per_pool; i++) { | 5372 | /* Guarantee all rings are updated before we update the |
5392 | adapter->rx_ring[rxbase + i]->netdev = vdev; | 5373 | * MAC address filter. |
5393 | ixgbe_configure_rx_ring(adapter, adapter->rx_ring[rxbase + i]); | 5374 | */ |
5375 | wmb(); | ||
5376 | |||
5377 | /* ixgbe_add_mac_filter will return an index if it succeeds, so we | ||
5378 | * need to only treat it as an error value if it is negative. | ||
5379 | */ | ||
5380 | err = ixgbe_add_mac_filter(adapter, vdev->dev_addr, | ||
5381 | VMDQ_P(accel->pool)); | ||
5382 | if (err >= 0) { | ||
5383 | ixgbe_macvlan_set_rx_mode(vdev, accel->pool, adapter); | ||
5384 | return 0; | ||
5394 | } | 5385 | } |
5395 | 5386 | ||
5396 | for (i = 0; i < adapter->num_rx_queues_per_pool; i++) | 5387 | for (i = 0; i < adapter->num_rx_queues_per_pool; i++) |
5397 | adapter->tx_ring[txbase + i]->netdev = vdev; | 5388 | adapter->rx_ring[baseq + i]->netdev = NULL; |
5398 | |||
5399 | queues = min_t(unsigned int, | ||
5400 | adapter->num_rx_queues_per_pool, vdev->num_tx_queues); | ||
5401 | err = netif_set_real_num_tx_queues(vdev, queues); | ||
5402 | if (err) | ||
5403 | goto fwd_queue_err; | ||
5404 | |||
5405 | err = netif_set_real_num_rx_queues(vdev, queues); | ||
5406 | if (err) | ||
5407 | goto fwd_queue_err; | ||
5408 | |||
5409 | if (is_valid_ether_addr(vdev->dev_addr)) | ||
5410 | ixgbe_add_mac_filter(adapter, vdev->dev_addr, | ||
5411 | VMDQ_P(accel->pool)); | ||
5412 | 5389 | ||
5413 | ixgbe_macvlan_set_rx_mode(vdev, VMDQ_P(accel->pool), adapter); | ||
5414 | return err; | ||
5415 | fwd_queue_err: | ||
5416 | ixgbe_fwd_ring_down(vdev, accel); | ||
5417 | return err; | 5390 | return err; |
5418 | } | 5391 | } |
5419 | 5392 | ||
@@ -5889,21 +5862,6 @@ static void ixgbe_fdir_filter_exit(struct ixgbe_adapter *adapter) | |||
5889 | spin_unlock(&adapter->fdir_perfect_lock); | 5862 | spin_unlock(&adapter->fdir_perfect_lock); |
5890 | } | 5863 | } |
5891 | 5864 | ||
5892 | static int ixgbe_disable_macvlan(struct net_device *upper, void *data) | ||
5893 | { | ||
5894 | if (netif_is_macvlan(upper)) { | ||
5895 | struct macvlan_dev *vlan = netdev_priv(upper); | ||
5896 | |||
5897 | if (vlan->fwd_priv) { | ||
5898 | netif_tx_stop_all_queues(upper); | ||
5899 | netif_carrier_off(upper); | ||
5900 | netif_tx_disable(upper); | ||
5901 | } | ||
5902 | } | ||
5903 | |||
5904 | return 0; | ||
5905 | } | ||
5906 | |||
5907 | void ixgbe_down(struct ixgbe_adapter *adapter) | 5865 | void ixgbe_down(struct ixgbe_adapter *adapter) |
5908 | { | 5866 | { |
5909 | struct net_device *netdev = adapter->netdev; | 5867 | struct net_device *netdev = adapter->netdev; |
@@ -5933,10 +5891,6 @@ void ixgbe_down(struct ixgbe_adapter *adapter) | |||
5933 | netif_carrier_off(netdev); | 5891 | netif_carrier_off(netdev); |
5934 | netif_tx_disable(netdev); | 5892 | netif_tx_disable(netdev); |
5935 | 5893 | ||
5936 | /* disable any upper devices */ | ||
5937 | netdev_walk_all_upper_dev_rcu(adapter->netdev, | ||
5938 | ixgbe_disable_macvlan, NULL); | ||
5939 | |||
5940 | ixgbe_irq_disable(adapter); | 5894 | ixgbe_irq_disable(adapter); |
5941 | 5895 | ||
5942 | ixgbe_napi_disable_all(adapter); | 5896 | ixgbe_napi_disable_all(adapter); |
@@ -6091,6 +6045,7 @@ static void ixgbe_init_dcb(struct ixgbe_adapter *adapter) | |||
6091 | /** | 6045 | /** |
6092 | * ixgbe_sw_init - Initialize general software structures (struct ixgbe_adapter) | 6046 | * ixgbe_sw_init - Initialize general software structures (struct ixgbe_adapter) |
6093 | * @adapter: board private structure to initialize | 6047 | * @adapter: board private structure to initialize |
6048 | * @ii: pointer to ixgbe_info for device | ||
6094 | * | 6049 | * |
6095 | * ixgbe_sw_init initializes the Adapter private data structure. | 6050 | * ixgbe_sw_init initializes the Adapter private data structure. |
6096 | * Fields are initialized based on PCI device information and | 6051 | * Fields are initialized based on PCI device information and |
@@ -6125,6 +6080,7 @@ static int ixgbe_sw_init(struct ixgbe_adapter *adapter, | |||
6125 | fdir = min_t(int, IXGBE_MAX_FDIR_INDICES, num_online_cpus()); | 6080 | fdir = min_t(int, IXGBE_MAX_FDIR_INDICES, num_online_cpus()); |
6126 | adapter->ring_feature[RING_F_FDIR].limit = fdir; | 6081 | adapter->ring_feature[RING_F_FDIR].limit = fdir; |
6127 | adapter->fdir_pballoc = IXGBE_FDIR_PBALLOC_64K; | 6082 | adapter->fdir_pballoc = IXGBE_FDIR_PBALLOC_64K; |
6083 | adapter->ring_feature[RING_F_VMDQ].limit = 1; | ||
6128 | #ifdef CONFIG_IXGBE_DCA | 6084 | #ifdef CONFIG_IXGBE_DCA |
6129 | adapter->flags |= IXGBE_FLAG_DCA_CAPABLE; | 6085 | adapter->flags |= IXGBE_FLAG_DCA_CAPABLE; |
6130 | #endif | 6086 | #endif |
@@ -6374,6 +6330,7 @@ err_setup_tx: | |||
6374 | 6330 | ||
6375 | /** | 6331 | /** |
6376 | * ixgbe_setup_rx_resources - allocate Rx resources (Descriptors) | 6332 | * ixgbe_setup_rx_resources - allocate Rx resources (Descriptors) |
6333 | * @adapter: pointer to ixgbe_adapter | ||
6377 | * @rx_ring: rx descriptor ring (for a specific queue) to setup | 6334 | * @rx_ring: rx descriptor ring (for a specific queue) to setup |
6378 | * | 6335 | * |
6379 | * Returns 0 on success, negative on failure | 6336 | * Returns 0 on success, negative on failure |
@@ -6624,20 +6581,12 @@ int ixgbe_open(struct net_device *netdev) | |||
6624 | goto err_req_irq; | 6581 | goto err_req_irq; |
6625 | 6582 | ||
6626 | /* Notify the stack of the actual queue counts. */ | 6583 | /* Notify the stack of the actual queue counts. */ |
6627 | if (adapter->num_rx_pools > 1) | 6584 | queues = adapter->num_tx_queues; |
6628 | queues = adapter->num_rx_queues_per_pool; | ||
6629 | else | ||
6630 | queues = adapter->num_tx_queues; | ||
6631 | |||
6632 | err = netif_set_real_num_tx_queues(netdev, queues); | 6585 | err = netif_set_real_num_tx_queues(netdev, queues); |
6633 | if (err) | 6586 | if (err) |
6634 | goto err_set_queues; | 6587 | goto err_set_queues; |
6635 | 6588 | ||
6636 | if (adapter->num_rx_pools > 1 && | 6589 | queues = adapter->num_rx_queues; |
6637 | adapter->num_rx_queues > IXGBE_MAX_L2A_QUEUES) | ||
6638 | queues = IXGBE_MAX_L2A_QUEUES; | ||
6639 | else | ||
6640 | queues = adapter->num_rx_queues; | ||
6641 | err = netif_set_real_num_rx_queues(netdev, queues); | 6590 | err = netif_set_real_num_rx_queues(netdev, queues); |
6642 | if (err) | 6591 | if (err) |
6643 | goto err_set_queues; | 6592 | goto err_set_queues; |
@@ -7194,7 +7143,6 @@ static void ixgbe_check_hang_subtask(struct ixgbe_adapter *adapter) | |||
7194 | /** | 7143 | /** |
7195 | * ixgbe_watchdog_update_link - update the link status | 7144 | * ixgbe_watchdog_update_link - update the link status |
7196 | * @adapter: pointer to the device adapter structure | 7145 | * @adapter: pointer to the device adapter structure |
7197 | * @link_speed: pointer to a u32 to store the link_speed | ||
7198 | **/ | 7146 | **/ |
7199 | static void ixgbe_watchdog_update_link(struct ixgbe_adapter *adapter) | 7147 | static void ixgbe_watchdog_update_link(struct ixgbe_adapter *adapter) |
7200 | { | 7148 | { |
@@ -7251,18 +7199,6 @@ static void ixgbe_update_default_up(struct ixgbe_adapter *adapter) | |||
7251 | #endif | 7199 | #endif |
7252 | } | 7200 | } |
7253 | 7201 | ||
7254 | static int ixgbe_enable_macvlan(struct net_device *upper, void *data) | ||
7255 | { | ||
7256 | if (netif_is_macvlan(upper)) { | ||
7257 | struct macvlan_dev *vlan = netdev_priv(upper); | ||
7258 | |||
7259 | if (vlan->fwd_priv) | ||
7260 | netif_tx_wake_all_queues(upper); | ||
7261 | } | ||
7262 | |||
7263 | return 0; | ||
7264 | } | ||
7265 | |||
7266 | /** | 7202 | /** |
7267 | * ixgbe_watchdog_link_is_up - update netif_carrier status and | 7203 | * ixgbe_watchdog_link_is_up - update netif_carrier status and |
7268 | * print link up message | 7204 | * print link up message |
@@ -7343,12 +7279,6 @@ static void ixgbe_watchdog_link_is_up(struct ixgbe_adapter *adapter) | |||
7343 | /* enable transmits */ | 7279 | /* enable transmits */ |
7344 | netif_tx_wake_all_queues(adapter->netdev); | 7280 | netif_tx_wake_all_queues(adapter->netdev); |
7345 | 7281 | ||
7346 | /* enable any upper devices */ | ||
7347 | rtnl_lock(); | ||
7348 | netdev_walk_all_upper_dev_rcu(adapter->netdev, | ||
7349 | ixgbe_enable_macvlan, NULL); | ||
7350 | rtnl_unlock(); | ||
7351 | |||
7352 | /* update the default user priority for VFs */ | 7282 | /* update the default user priority for VFs */ |
7353 | ixgbe_update_default_up(adapter); | 7283 | ixgbe_update_default_up(adapter); |
7354 | 7284 | ||
@@ -7665,7 +7595,7 @@ static void ixgbe_sfp_link_config_subtask(struct ixgbe_adapter *adapter) | |||
7665 | 7595 | ||
7666 | /** | 7596 | /** |
7667 | * ixgbe_service_timer - Timer Call-back | 7597 | * ixgbe_service_timer - Timer Call-back |
7668 | * @data: pointer to adapter cast into an unsigned long | 7598 | * @t: pointer to timer_list structure |
7669 | **/ | 7599 | **/ |
7670 | static void ixgbe_service_timer(struct timer_list *t) | 7600 | static void ixgbe_service_timer(struct timer_list *t) |
7671 | { | 7601 | { |
@@ -8309,14 +8239,19 @@ static u16 ixgbe_select_queue(struct net_device *dev, struct sk_buff *skb, | |||
8309 | void *accel_priv, select_queue_fallback_t fallback) | 8239 | void *accel_priv, select_queue_fallback_t fallback) |
8310 | { | 8240 | { |
8311 | struct ixgbe_fwd_adapter *fwd_adapter = accel_priv; | 8241 | struct ixgbe_fwd_adapter *fwd_adapter = accel_priv; |
8312 | #ifdef IXGBE_FCOE | ||
8313 | struct ixgbe_adapter *adapter; | 8242 | struct ixgbe_adapter *adapter; |
8314 | struct ixgbe_ring_feature *f; | ||
8315 | int txq; | 8243 | int txq; |
8244 | #ifdef IXGBE_FCOE | ||
8245 | struct ixgbe_ring_feature *f; | ||
8316 | #endif | 8246 | #endif |
8317 | 8247 | ||
8318 | if (fwd_adapter) | 8248 | if (fwd_adapter) { |
8319 | return skb->queue_mapping + fwd_adapter->tx_base_queue; | 8249 | adapter = netdev_priv(dev); |
8250 | txq = reciprocal_scale(skb_get_hash(skb), | ||
8251 | adapter->num_rx_queues_per_pool); | ||
8252 | |||
8253 | return txq + fwd_adapter->tx_base_queue; | ||
8254 | } | ||
8320 | 8255 | ||
8321 | #ifdef IXGBE_FCOE | 8256 | #ifdef IXGBE_FCOE |
8322 | 8257 | ||
@@ -8648,7 +8583,7 @@ static int ixgbe_ioctl(struct net_device *netdev, struct ifreq *req, int cmd) | |||
8648 | /** | 8583 | /** |
8649 | * ixgbe_add_sanmac_netdev - Add the SAN MAC address to the corresponding | 8584 | * ixgbe_add_sanmac_netdev - Add the SAN MAC address to the corresponding |
8650 | * netdev->dev_addrs | 8585 | * netdev->dev_addrs |
8651 | * @netdev: network interface device structure | 8586 | * @dev: network interface device structure |
8652 | * | 8587 | * |
8653 | * Returns non-zero on failure | 8588 | * Returns non-zero on failure |
8654 | **/ | 8589 | **/ |
@@ -8672,7 +8607,7 @@ static int ixgbe_add_sanmac_netdev(struct net_device *dev) | |||
8672 | /** | 8607 | /** |
8673 | * ixgbe_del_sanmac_netdev - Removes the SAN MAC address to the corresponding | 8608 | * ixgbe_del_sanmac_netdev - Removes the SAN MAC address to the corresponding |
8674 | * netdev->dev_addrs | 8609 | * netdev->dev_addrs |
8675 | * @netdev: network interface device structure | 8610 | * @dev: network interface device structure |
8676 | * | 8611 | * |
8677 | * Returns non-zero on failure | 8612 | * Returns non-zero on failure |
8678 | **/ | 8613 | **/ |
@@ -8839,7 +8774,7 @@ static void ixgbe_set_prio_tc_map(struct ixgbe_adapter *adapter) | |||
8839 | /** | 8774 | /** |
8840 | * ixgbe_setup_tc - configure net_device for multiple traffic classes | 8775 | * ixgbe_setup_tc - configure net_device for multiple traffic classes |
8841 | * | 8776 | * |
8842 | * @netdev: net device to configure | 8777 | * @dev: net device to configure |
8843 | * @tc: number of traffic classes to enable | 8778 | * @tc: number of traffic classes to enable |
8844 | */ | 8779 | */ |
8845 | int ixgbe_setup_tc(struct net_device *dev, u8 tc) | 8780 | int ixgbe_setup_tc(struct net_device *dev, u8 tc) |
@@ -8870,6 +8805,7 @@ int ixgbe_setup_tc(struct net_device *dev, u8 tc) | |||
8870 | netdev_set_num_tc(dev, tc); | 8805 | netdev_set_num_tc(dev, tc); |
8871 | ixgbe_set_prio_tc_map(adapter); | 8806 | ixgbe_set_prio_tc_map(adapter); |
8872 | 8807 | ||
8808 | adapter->hw_tcs = tc; | ||
8873 | adapter->flags |= IXGBE_FLAG_DCB_ENABLED; | 8809 | adapter->flags |= IXGBE_FLAG_DCB_ENABLED; |
8874 | 8810 | ||
8875 | if (adapter->hw.mac.type == ixgbe_mac_82598EB) { | 8811 | if (adapter->hw.mac.type == ixgbe_mac_82598EB) { |
@@ -8879,10 +8815,19 @@ int ixgbe_setup_tc(struct net_device *dev, u8 tc) | |||
8879 | } else { | 8815 | } else { |
8880 | netdev_reset_tc(dev); | 8816 | netdev_reset_tc(dev); |
8881 | 8817 | ||
8818 | /* To support macvlan offload we have to use num_tc to | ||
8819 | * restrict the queues that can be used by the device. | ||
8820 | * By doing this we can avoid reporting a false number of | ||
8821 | * queues. | ||
8822 | */ | ||
8823 | if (!tc && adapter->num_rx_pools > 1) | ||
8824 | netdev_set_num_tc(dev, 1); | ||
8825 | |||
8882 | if (adapter->hw.mac.type == ixgbe_mac_82598EB) | 8826 | if (adapter->hw.mac.type == ixgbe_mac_82598EB) |
8883 | adapter->hw.fc.requested_mode = adapter->last_lfc_mode; | 8827 | adapter->hw.fc.requested_mode = adapter->last_lfc_mode; |
8884 | 8828 | ||
8885 | adapter->flags &= ~IXGBE_FLAG_DCB_ENABLED; | 8829 | adapter->flags &= ~IXGBE_FLAG_DCB_ENABLED; |
8830 | adapter->hw_tcs = tc; | ||
8886 | 8831 | ||
8887 | adapter->temp_dcb_cfg.pfc_mode_enable = false; | 8832 | adapter->temp_dcb_cfg.pfc_mode_enable = false; |
8888 | adapter->dcb_cfg.pfc_mode_enable = false; | 8833 | adapter->dcb_cfg.pfc_mode_enable = false; |
@@ -9415,7 +9360,7 @@ void ixgbe_sriov_reinit(struct ixgbe_adapter *adapter) | |||
9415 | struct net_device *netdev = adapter->netdev; | 9360 | struct net_device *netdev = adapter->netdev; |
9416 | 9361 | ||
9417 | rtnl_lock(); | 9362 | rtnl_lock(); |
9418 | ixgbe_setup_tc(netdev, netdev_get_num_tc(netdev)); | 9363 | ixgbe_setup_tc(netdev, adapter->hw_tcs); |
9419 | rtnl_unlock(); | 9364 | rtnl_unlock(); |
9420 | } | 9365 | } |
9421 | 9366 | ||
@@ -9491,7 +9436,7 @@ static int ixgbe_set_features(struct net_device *netdev, | |||
9491 | /* We cannot enable ATR if SR-IOV is enabled */ | 9436 | /* We cannot enable ATR if SR-IOV is enabled */ |
9492 | if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED || | 9437 | if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED || |
9493 | /* We cannot enable ATR if we have 2 or more tcs */ | 9438 | /* We cannot enable ATR if we have 2 or more tcs */ |
9494 | (netdev_get_num_tc(netdev) > 1) || | 9439 | (adapter->hw_tcs > 1) || |
9495 | /* We cannot enable ATR if RSS is disabled */ | 9440 | /* We cannot enable ATR if RSS is disabled */ |
9496 | (adapter->ring_feature[RING_F_RSS].limit <= 1) || | 9441 | (adapter->ring_feature[RING_F_RSS].limit <= 1) || |
9497 | /* A sample rate of 0 indicates ATR disabled */ | 9442 | /* A sample rate of 0 indicates ATR disabled */ |
@@ -9666,8 +9611,8 @@ static int ixgbe_ndo_fdb_add(struct ndmsg *ndm, struct nlattr *tb[], | |||
9666 | 9611 | ||
9667 | /** | 9612 | /** |
9668 | * ixgbe_configure_bridge_mode - set various bridge modes | 9613 | * ixgbe_configure_bridge_mode - set various bridge modes |
9669 | * @adapter - the private structure | 9614 | * @adapter: the private structure |
9670 | * @mode - requested bridge mode | 9615 | * @mode: requested bridge mode |
9671 | * | 9616 | * |
9672 | * Configure some settings require for various bridge modes. | 9617 | * Configure some settings require for various bridge modes. |
9673 | **/ | 9618 | **/ |
@@ -9792,7 +9737,7 @@ static void *ixgbe_fwd_add(struct net_device *pdev, struct net_device *vdev) | |||
9792 | struct ixgbe_fwd_adapter *fwd_adapter = NULL; | 9737 | struct ixgbe_fwd_adapter *fwd_adapter = NULL; |
9793 | struct ixgbe_adapter *adapter = netdev_priv(pdev); | 9738 | struct ixgbe_adapter *adapter = netdev_priv(pdev); |
9794 | int used_pools = adapter->num_vfs + adapter->num_rx_pools; | 9739 | int used_pools = adapter->num_vfs + adapter->num_rx_pools; |
9795 | int tcs = netdev_get_num_tc(pdev) ? : 1; | 9740 | int tcs = adapter->hw_tcs ? : 1; |
9796 | unsigned int limit; | 9741 | unsigned int limit; |
9797 | int pool, err; | 9742 | int pool, err; |
9798 | 9743 | ||
@@ -9803,22 +9748,6 @@ static void *ixgbe_fwd_add(struct net_device *pdev, struct net_device *vdev) | |||
9803 | if (used_pools >= IXGBE_MAX_VF_FUNCTIONS) | 9748 | if (used_pools >= IXGBE_MAX_VF_FUNCTIONS) |
9804 | return ERR_PTR(-EINVAL); | 9749 | return ERR_PTR(-EINVAL); |
9805 | 9750 | ||
9806 | #ifdef CONFIG_RPS | ||
9807 | if (vdev->num_rx_queues != vdev->num_tx_queues) { | ||
9808 | netdev_info(pdev, "%s: Only supports a single queue count for TX and RX\n", | ||
9809 | vdev->name); | ||
9810 | return ERR_PTR(-EINVAL); | ||
9811 | } | ||
9812 | #endif | ||
9813 | /* Check for hardware restriction on number of rx/tx queues */ | ||
9814 | if (vdev->num_tx_queues > IXGBE_MAX_L2A_QUEUES || | ||
9815 | vdev->num_tx_queues == IXGBE_BAD_L2A_QUEUE) { | ||
9816 | netdev_info(pdev, | ||
9817 | "%s: Supports RX/TX Queue counts 1,2, and 4\n", | ||
9818 | pdev->name); | ||
9819 | return ERR_PTR(-EINVAL); | ||
9820 | } | ||
9821 | |||
9822 | if (((adapter->flags & IXGBE_FLAG_DCB_ENABLED) && | 9751 | if (((adapter->flags & IXGBE_FLAG_DCB_ENABLED) && |
9823 | adapter->num_rx_pools >= (MAX_TX_QUEUES / tcs)) || | 9752 | adapter->num_rx_pools >= (MAX_TX_QUEUES / tcs)) || |
9824 | (adapter->num_rx_pools > IXGBE_MAX_MACVLANS)) | 9753 | (adapter->num_rx_pools > IXGBE_MAX_MACVLANS)) |
@@ -9835,24 +9764,19 @@ static void *ixgbe_fwd_add(struct net_device *pdev, struct net_device *vdev) | |||
9835 | /* Enable VMDq flag so device will be set in VM mode */ | 9764 | /* Enable VMDq flag so device will be set in VM mode */ |
9836 | adapter->flags |= IXGBE_FLAG_VMDQ_ENABLED | IXGBE_FLAG_SRIOV_ENABLED; | 9765 | adapter->flags |= IXGBE_FLAG_VMDQ_ENABLED | IXGBE_FLAG_SRIOV_ENABLED; |
9837 | adapter->ring_feature[RING_F_VMDQ].limit = limit + 1; | 9766 | adapter->ring_feature[RING_F_VMDQ].limit = limit + 1; |
9838 | adapter->ring_feature[RING_F_RSS].limit = vdev->num_tx_queues; | ||
9839 | 9767 | ||
9840 | /* Force reinit of ring allocation with VMDQ enabled */ | ||
9841 | err = ixgbe_setup_tc(pdev, netdev_get_num_tc(pdev)); | ||
9842 | if (err) | ||
9843 | goto fwd_add_err; | ||
9844 | fwd_adapter->pool = pool; | 9768 | fwd_adapter->pool = pool; |
9845 | fwd_adapter->real_adapter = adapter; | 9769 | fwd_adapter->real_adapter = adapter; |
9846 | 9770 | ||
9847 | if (netif_running(pdev)) { | 9771 | /* Force reinit of ring allocation with VMDQ enabled */ |
9772 | err = ixgbe_setup_tc(pdev, adapter->hw_tcs); | ||
9773 | |||
9774 | if (!err && netif_running(pdev)) | ||
9848 | err = ixgbe_fwd_ring_up(vdev, fwd_adapter); | 9775 | err = ixgbe_fwd_ring_up(vdev, fwd_adapter); |
9849 | if (err) | ||
9850 | goto fwd_add_err; | ||
9851 | netif_tx_start_all_queues(vdev); | ||
9852 | } | ||
9853 | 9776 | ||
9854 | return fwd_adapter; | 9777 | if (!err) |
9855 | fwd_add_err: | 9778 | return fwd_adapter; |
9779 | |||
9856 | /* unwind counter and free adapter struct */ | 9780 | /* unwind counter and free adapter struct */ |
9857 | netdev_info(pdev, | 9781 | netdev_info(pdev, |
9858 | "%s: dfwd hardware acceleration failed\n", vdev->name); | 9782 | "%s: dfwd hardware acceleration failed\n", vdev->name); |
@@ -9863,15 +9787,38 @@ fwd_add_err: | |||
9863 | 9787 | ||
9864 | static void ixgbe_fwd_del(struct net_device *pdev, void *priv) | 9788 | static void ixgbe_fwd_del(struct net_device *pdev, void *priv) |
9865 | { | 9789 | { |
9866 | struct ixgbe_fwd_adapter *fwd_adapter = priv; | 9790 | struct ixgbe_fwd_adapter *accel = priv; |
9867 | struct ixgbe_adapter *adapter = fwd_adapter->real_adapter; | 9791 | struct ixgbe_adapter *adapter = accel->real_adapter; |
9868 | unsigned int limit; | 9792 | unsigned int rxbase = accel->rx_base_queue; |
9793 | unsigned int limit, i; | ||
9869 | 9794 | ||
9870 | clear_bit(fwd_adapter->pool, adapter->fwd_bitmask); | 9795 | /* delete unicast filter associated with offloaded interface */ |
9796 | ixgbe_del_mac_filter(adapter, accel->netdev->dev_addr, | ||
9797 | VMDQ_P(accel->pool)); | ||
9871 | 9798 | ||
9799 | /* disable ability to receive packets for this pool */ | ||
9800 | IXGBE_WRITE_REG(&adapter->hw, IXGBE_VMOLR(accel->pool), 0); | ||
9801 | |||
9802 | /* Allow remaining Rx packets to get flushed out of the | ||
9803 | * Rx FIFO before we drop the netdev for the ring. | ||
9804 | */ | ||
9805 | usleep_range(10000, 20000); | ||
9806 | |||
9807 | for (i = 0; i < adapter->num_rx_queues_per_pool; i++) { | ||
9808 | struct ixgbe_ring *ring = adapter->rx_ring[rxbase + i]; | ||
9809 | struct ixgbe_q_vector *qv = ring->q_vector; | ||
9810 | |||
9811 | /* Make sure we aren't processing any packets and clear | ||
9812 | * netdev to shut down the ring. | ||
9813 | */ | ||
9814 | if (netif_running(adapter->netdev)) | ||
9815 | napi_synchronize(&qv->napi); | ||
9816 | ring->netdev = NULL; | ||
9817 | } | ||
9818 | |||
9819 | clear_bit(accel->pool, adapter->fwd_bitmask); | ||
9872 | limit = find_last_bit(adapter->fwd_bitmask, adapter->num_rx_pools); | 9820 | limit = find_last_bit(adapter->fwd_bitmask, adapter->num_rx_pools); |
9873 | adapter->ring_feature[RING_F_VMDQ].limit = limit + 1; | 9821 | adapter->ring_feature[RING_F_VMDQ].limit = limit + 1; |
9874 | ixgbe_fwd_ring_down(fwd_adapter->netdev, fwd_adapter); | ||
9875 | 9822 | ||
9876 | /* go back to full RSS if we're done with our VMQs */ | 9823 | /* go back to full RSS if we're done with our VMQs */ |
9877 | if (adapter->ring_feature[RING_F_VMDQ].limit == 1) { | 9824 | if (adapter->ring_feature[RING_F_VMDQ].limit == 1) { |
@@ -9883,13 +9830,13 @@ static void ixgbe_fwd_del(struct net_device *pdev, void *priv) | |||
9883 | adapter->ring_feature[RING_F_RSS].limit = rss; | 9830 | adapter->ring_feature[RING_F_RSS].limit = rss; |
9884 | } | 9831 | } |
9885 | 9832 | ||
9886 | ixgbe_setup_tc(pdev, netdev_get_num_tc(pdev)); | 9833 | ixgbe_setup_tc(pdev, adapter->hw_tcs); |
9887 | netdev_dbg(pdev, "pool %i:%i queues %i:%i\n", | 9834 | netdev_dbg(pdev, "pool %i:%i queues %i:%i\n", |
9888 | fwd_adapter->pool, adapter->num_rx_pools, | 9835 | accel->pool, adapter->num_rx_pools, |
9889 | fwd_adapter->rx_base_queue, | 9836 | accel->rx_base_queue, |
9890 | fwd_adapter->rx_base_queue + | 9837 | accel->rx_base_queue + |
9891 | adapter->num_rx_queues_per_pool); | 9838 | adapter->num_rx_queues_per_pool); |
9892 | kfree(fwd_adapter); | 9839 | kfree(accel); |
9893 | } | 9840 | } |
9894 | 9841 | ||
9895 | #define IXGBE_MAX_MAC_HDR_LEN 127 | 9842 | #define IXGBE_MAX_MAC_HDR_LEN 127 |
@@ -9956,7 +9903,7 @@ static int ixgbe_xdp_setup(struct net_device *dev, struct bpf_prog *prog) | |||
9956 | 9903 | ||
9957 | /* If transitioning XDP modes reconfigure rings */ | 9904 | /* If transitioning XDP modes reconfigure rings */ |
9958 | if (!!prog != !!old_prog) { | 9905 | if (!!prog != !!old_prog) { |
9959 | int err = ixgbe_setup_tc(dev, netdev_get_num_tc(dev)); | 9906 | int err = ixgbe_setup_tc(dev, adapter->hw_tcs); |
9960 | 9907 | ||
9961 | if (err) { | 9908 | if (err) { |
9962 | rcu_assign_pointer(adapter->xdp_prog, old_prog); | 9909 | rcu_assign_pointer(adapter->xdp_prog, old_prog); |
@@ -10133,7 +10080,7 @@ static inline int ixgbe_enumerate_functions(struct ixgbe_adapter *adapter) | |||
10133 | * ixgbe_wol_supported - Check whether device supports WoL | 10080 | * ixgbe_wol_supported - Check whether device supports WoL |
10134 | * @adapter: the adapter private structure | 10081 | * @adapter: the adapter private structure |
10135 | * @device_id: the device ID | 10082 | * @device_id: the device ID |
10136 | * @subdev_id: the subsystem device ID | 10083 | * @subdevice_id: the subsystem device ID |
10137 | * | 10084 | * |
10138 | * This function is used by probe and ethtool to determine | 10085 | * This function is used by probe and ethtool to determine |
10139 | * which devices have WoL support | 10086 | * which devices have WoL support |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c index 654a402f0e9e..91bde90f9265 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c | |||
@@ -378,7 +378,7 @@ static s32 ixgbe_get_phy_id(struct ixgbe_hw *hw) | |||
378 | 378 | ||
379 | /** | 379 | /** |
380 | * ixgbe_get_phy_type_from_id - Get the phy type | 380 | * ixgbe_get_phy_type_from_id - Get the phy type |
381 | * @hw: pointer to hardware structure | 381 | * @phy_id: hardware phy id |
382 | * | 382 | * |
383 | **/ | 383 | **/ |
384 | static enum ixgbe_phy_type ixgbe_get_phy_type_from_id(u32 phy_id) | 384 | static enum ixgbe_phy_type ixgbe_get_phy_type_from_id(u32 phy_id) |
@@ -489,6 +489,7 @@ s32 ixgbe_reset_phy_generic(struct ixgbe_hw *hw) | |||
489 | * the SWFW lock | 489 | * the SWFW lock |
490 | * @hw: pointer to hardware structure | 490 | * @hw: pointer to hardware structure |
491 | * @reg_addr: 32 bit address of PHY register to read | 491 | * @reg_addr: 32 bit address of PHY register to read |
492 | * @device_type: 5 bit device type | ||
492 | * @phy_data: Pointer to read data from PHY register | 493 | * @phy_data: Pointer to read data from PHY register |
493 | **/ | 494 | **/ |
494 | s32 ixgbe_read_phy_reg_mdi(struct ixgbe_hw *hw, u32 reg_addr, u32 device_type, | 495 | s32 ixgbe_read_phy_reg_mdi(struct ixgbe_hw *hw, u32 reg_addr, u32 device_type, |
@@ -564,6 +565,7 @@ s32 ixgbe_read_phy_reg_mdi(struct ixgbe_hw *hw, u32 reg_addr, u32 device_type, | |||
564 | * using the SWFW lock - this function is needed in most cases | 565 | * using the SWFW lock - this function is needed in most cases |
565 | * @hw: pointer to hardware structure | 566 | * @hw: pointer to hardware structure |
566 | * @reg_addr: 32 bit address of PHY register to read | 567 | * @reg_addr: 32 bit address of PHY register to read |
568 | * @device_type: 5 bit device type | ||
567 | * @phy_data: Pointer to read data from PHY register | 569 | * @phy_data: Pointer to read data from PHY register |
568 | **/ | 570 | **/ |
569 | s32 ixgbe_read_phy_reg_generic(struct ixgbe_hw *hw, u32 reg_addr, | 571 | s32 ixgbe_read_phy_reg_generic(struct ixgbe_hw *hw, u32 reg_addr, |
@@ -763,6 +765,7 @@ s32 ixgbe_setup_phy_link_generic(struct ixgbe_hw *hw) | |||
763 | * ixgbe_setup_phy_link_speed_generic - Sets the auto advertised capabilities | 765 | * ixgbe_setup_phy_link_speed_generic - Sets the auto advertised capabilities |
764 | * @hw: pointer to hardware structure | 766 | * @hw: pointer to hardware structure |
765 | * @speed: new link speed | 767 | * @speed: new link speed |
768 | * @autoneg_wait_to_complete: unused | ||
766 | **/ | 769 | **/ |
767 | s32 ixgbe_setup_phy_link_speed_generic(struct ixgbe_hw *hw, | 770 | s32 ixgbe_setup_phy_link_speed_generic(struct ixgbe_hw *hw, |
768 | ixgbe_link_speed speed, | 771 | ixgbe_link_speed speed, |
@@ -861,6 +864,8 @@ s32 ixgbe_get_copper_link_capabilities_generic(struct ixgbe_hw *hw, | |||
861 | /** | 864 | /** |
862 | * ixgbe_check_phy_link_tnx - Determine link and speed status | 865 | * ixgbe_check_phy_link_tnx - Determine link and speed status |
863 | * @hw: pointer to hardware structure | 866 | * @hw: pointer to hardware structure |
867 | * @speed: link speed | ||
868 | * @link_up: status of link | ||
864 | * | 869 | * |
865 | * Reads the VS1 register to determine if link is up and the current speed for | 870 | * Reads the VS1 register to determine if link is up and the current speed for |
866 | * the PHY. | 871 | * the PHY. |
@@ -1667,7 +1672,7 @@ s32 ixgbe_read_i2c_eeprom_generic(struct ixgbe_hw *hw, u8 byte_offset, | |||
1667 | * ixgbe_read_i2c_sff8472_generic - Reads 8 bit word over I2C interface | 1672 | * ixgbe_read_i2c_sff8472_generic - Reads 8 bit word over I2C interface |
1668 | * @hw: pointer to hardware structure | 1673 | * @hw: pointer to hardware structure |
1669 | * @byte_offset: byte offset at address 0xA2 | 1674 | * @byte_offset: byte offset at address 0xA2 |
1670 | * @eeprom_data: value read | 1675 | * @sff8472_data: value read |
1671 | * | 1676 | * |
1672 | * Performs byte read operation to SFP module's SFF-8472 data over I2C | 1677 | * Performs byte read operation to SFP module's SFF-8472 data over I2C |
1673 | **/ | 1678 | **/ |
@@ -1714,6 +1719,7 @@ static bool ixgbe_is_sfp_probe(struct ixgbe_hw *hw, u8 offset, u8 addr) | |||
1714 | * ixgbe_read_i2c_byte_generic_int - Reads 8 bit word over I2C | 1719 | * ixgbe_read_i2c_byte_generic_int - Reads 8 bit word over I2C |
1715 | * @hw: pointer to hardware structure | 1720 | * @hw: pointer to hardware structure |
1716 | * @byte_offset: byte offset to read | 1721 | * @byte_offset: byte offset to read |
1722 | * @dev_addr: device address | ||
1717 | * @data: value read | 1723 | * @data: value read |
1718 | * @lock: true if to take and release semaphore | 1724 | * @lock: true if to take and release semaphore |
1719 | * | 1725 | * |
@@ -1804,6 +1810,7 @@ fail: | |||
1804 | * ixgbe_read_i2c_byte_generic - Reads 8 bit word over I2C | 1810 | * ixgbe_read_i2c_byte_generic - Reads 8 bit word over I2C |
1805 | * @hw: pointer to hardware structure | 1811 | * @hw: pointer to hardware structure |
1806 | * @byte_offset: byte offset to read | 1812 | * @byte_offset: byte offset to read |
1813 | * @dev_addr: device address | ||
1807 | * @data: value read | 1814 | * @data: value read |
1808 | * | 1815 | * |
1809 | * Performs byte read operation to SFP module's EEPROM over I2C interface at | 1816 | * Performs byte read operation to SFP module's EEPROM over I2C interface at |
@@ -1820,6 +1827,7 @@ s32 ixgbe_read_i2c_byte_generic(struct ixgbe_hw *hw, u8 byte_offset, | |||
1820 | * ixgbe_read_i2c_byte_generic_unlocked - Reads 8 bit word over I2C | 1827 | * ixgbe_read_i2c_byte_generic_unlocked - Reads 8 bit word over I2C |
1821 | * @hw: pointer to hardware structure | 1828 | * @hw: pointer to hardware structure |
1822 | * @byte_offset: byte offset to read | 1829 | * @byte_offset: byte offset to read |
1830 | * @dev_addr: device address | ||
1823 | * @data: value read | 1831 | * @data: value read |
1824 | * | 1832 | * |
1825 | * Performs byte read operation to SFP module's EEPROM over I2C interface at | 1833 | * Performs byte read operation to SFP module's EEPROM over I2C interface at |
@@ -1836,6 +1844,7 @@ s32 ixgbe_read_i2c_byte_generic_unlocked(struct ixgbe_hw *hw, u8 byte_offset, | |||
1836 | * ixgbe_write_i2c_byte_generic_int - Writes 8 bit word over I2C | 1844 | * ixgbe_write_i2c_byte_generic_int - Writes 8 bit word over I2C |
1837 | * @hw: pointer to hardware structure | 1845 | * @hw: pointer to hardware structure |
1838 | * @byte_offset: byte offset to write | 1846 | * @byte_offset: byte offset to write |
1847 | * @dev_addr: device address | ||
1839 | * @data: value to write | 1848 | * @data: value to write |
1840 | * @lock: true if to take and release semaphore | 1849 | * @lock: true if to take and release semaphore |
1841 | * | 1850 | * |
@@ -1904,6 +1913,7 @@ fail: | |||
1904 | * ixgbe_write_i2c_byte_generic - Writes 8 bit word over I2C | 1913 | * ixgbe_write_i2c_byte_generic - Writes 8 bit word over I2C |
1905 | * @hw: pointer to hardware structure | 1914 | * @hw: pointer to hardware structure |
1906 | * @byte_offset: byte offset to write | 1915 | * @byte_offset: byte offset to write |
1916 | * @dev_addr: device address | ||
1907 | * @data: value to write | 1917 | * @data: value to write |
1908 | * | 1918 | * |
1909 | * Performs byte write operation to SFP module's EEPROM over I2C interface at | 1919 | * Performs byte write operation to SFP module's EEPROM over I2C interface at |
@@ -1920,6 +1930,7 @@ s32 ixgbe_write_i2c_byte_generic(struct ixgbe_hw *hw, u8 byte_offset, | |||
1920 | * ixgbe_write_i2c_byte_generic_unlocked - Writes 8 bit word over I2C | 1930 | * ixgbe_write_i2c_byte_generic_unlocked - Writes 8 bit word over I2C |
1921 | * @hw: pointer to hardware structure | 1931 | * @hw: pointer to hardware structure |
1922 | * @byte_offset: byte offset to write | 1932 | * @byte_offset: byte offset to write |
1933 | * @dev_addr: device address | ||
1923 | * @data: value to write | 1934 | * @data: value to write |
1924 | * | 1935 | * |
1925 | * Performs byte write operation to SFP module's EEPROM over I2C interface at | 1936 | * Performs byte write operation to SFP module's EEPROM over I2C interface at |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c index ae312c45696a..f6cc9166082a 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c | |||
@@ -166,7 +166,7 @@ | |||
166 | 166 | ||
167 | /** | 167 | /** |
168 | * ixgbe_ptp_setup_sdp_x540 | 168 | * ixgbe_ptp_setup_sdp_x540 |
169 | * @hw: the hardware private structure | 169 | * @adapter: private adapter structure |
170 | * | 170 | * |
171 | * this function enables or disables the clock out feature on SDP0 for | 171 | * this function enables or disables the clock out feature on SDP0 for |
172 | * the X540 device. It will create a 1second periodic output that can | 172 | * the X540 device. It will create a 1second periodic output that can |
@@ -299,7 +299,7 @@ static u64 ixgbe_ptp_read_82599(const struct cyclecounter *cc) | |||
299 | * ixgbe_ptp_convert_to_hwtstamp - convert register value to hw timestamp | 299 | * ixgbe_ptp_convert_to_hwtstamp - convert register value to hw timestamp |
300 | * @adapter: private adapter structure | 300 | * @adapter: private adapter structure |
301 | * @hwtstamp: stack timestamp structure | 301 | * @hwtstamp: stack timestamp structure |
302 | * @systim: unsigned 64bit system time value | 302 | * @timestamp: unsigned 64bit system time value |
303 | * | 303 | * |
304 | * We need to convert the adapter's RX/TXSTMP registers into a hwtstamp value | 304 | * We need to convert the adapter's RX/TXSTMP registers into a hwtstamp value |
305 | * which can be used by the stack's ptp functions. | 305 | * which can be used by the stack's ptp functions. |
@@ -1015,7 +1015,7 @@ static int ixgbe_ptp_set_timestamp_mode(struct ixgbe_adapter *adapter, | |||
1015 | /** | 1015 | /** |
1016 | * ixgbe_ptp_set_ts_config - user entry point for timestamp mode | 1016 | * ixgbe_ptp_set_ts_config - user entry point for timestamp mode |
1017 | * @adapter: pointer to adapter struct | 1017 | * @adapter: pointer to adapter struct |
1018 | * @ifreq: ioctl data | 1018 | * @ifr: ioctl data |
1019 | * | 1019 | * |
1020 | * Set hardware to requested mode. If unsupported, return an error with no | 1020 | * Set hardware to requested mode. If unsupported, return an error with no |
1021 | * changes. Otherwise, store the mode for future reference. | 1021 | * changes. Otherwise, store the mode for future reference. |
@@ -1338,7 +1338,7 @@ void ixgbe_ptp_init(struct ixgbe_adapter *adapter) | |||
1338 | 1338 | ||
1339 | /** | 1339 | /** |
1340 | * ixgbe_ptp_suspend - stop PTP work items | 1340 | * ixgbe_ptp_suspend - stop PTP work items |
1341 | * @ adapter: pointer to adapter struct | 1341 | * @adapter: pointer to adapter struct |
1342 | * | 1342 | * |
1343 | * this function suspends PTP activity, and prevents more PTP work from being | 1343 | * this function suspends PTP activity, and prevents more PTP work from being |
1344 | * generated, but does not destroy the PTP clock device. | 1344 | * generated, but does not destroy the PTP clock device. |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c index 0085f4632966..27a70a52f3c9 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c | |||
@@ -78,12 +78,9 @@ static int __ixgbe_enable_sriov(struct ixgbe_adapter *adapter, | |||
78 | struct ixgbe_hw *hw = &adapter->hw; | 78 | struct ixgbe_hw *hw = &adapter->hw; |
79 | int i; | 79 | int i; |
80 | 80 | ||
81 | adapter->flags |= IXGBE_FLAG_SRIOV_ENABLED; | ||
82 | |||
83 | /* Enable VMDq flag so device will be set in VM mode */ | 81 | /* Enable VMDq flag so device will be set in VM mode */ |
84 | adapter->flags |= IXGBE_FLAG_VMDQ_ENABLED; | 82 | adapter->flags |= IXGBE_FLAG_SRIOV_ENABLED | |
85 | if (!adapter->ring_feature[RING_F_VMDQ].limit) | 83 | IXGBE_FLAG_VMDQ_ENABLED; |
86 | adapter->ring_feature[RING_F_VMDQ].limit = 1; | ||
87 | 84 | ||
88 | /* Allocate memory for per VF control structures */ | 85 | /* Allocate memory for per VF control structures */ |
89 | adapter->vfinfo = kcalloc(num_vfs, sizeof(struct vf_data_storage), | 86 | adapter->vfinfo = kcalloc(num_vfs, sizeof(struct vf_data_storage), |
@@ -314,7 +311,7 @@ static int ixgbe_pci_sriov_enable(struct pci_dev *dev, int num_vfs) | |||
314 | * than we have available pools. The PCI bus driver already checks for | 311 | * than we have available pools. The PCI bus driver already checks for |
315 | * other values out of range. | 312 | * other values out of range. |
316 | */ | 313 | */ |
317 | num_tc = netdev_get_num_tc(adapter->netdev); | 314 | num_tc = adapter->hw_tcs; |
318 | num_rx_pools = adapter->num_rx_pools; | 315 | num_rx_pools = adapter->num_rx_pools; |
319 | limit = (num_tc > 4) ? IXGBE_MAX_VFS_8TC : | 316 | limit = (num_tc > 4) ? IXGBE_MAX_VFS_8TC : |
320 | (num_tc > 1) ? IXGBE_MAX_VFS_4TC : IXGBE_MAX_VFS_1TC; | 317 | (num_tc > 1) ? IXGBE_MAX_VFS_4TC : IXGBE_MAX_VFS_1TC; |
@@ -716,7 +713,7 @@ static inline void ixgbe_vf_reset_event(struct ixgbe_adapter *adapter, u32 vf) | |||
716 | { | 713 | { |
717 | struct ixgbe_hw *hw = &adapter->hw; | 714 | struct ixgbe_hw *hw = &adapter->hw; |
718 | struct vf_data_storage *vfinfo = &adapter->vfinfo[vf]; | 715 | struct vf_data_storage *vfinfo = &adapter->vfinfo[vf]; |
719 | u8 num_tcs = netdev_get_num_tc(adapter->netdev); | 716 | u8 num_tcs = adapter->hw_tcs; |
720 | 717 | ||
721 | /* remove VLAN filters beloning to this VF */ | 718 | /* remove VLAN filters beloning to this VF */ |
722 | ixgbe_clear_vf_vlans(adapter, vf); | 719 | ixgbe_clear_vf_vlans(adapter, vf); |
@@ -924,7 +921,7 @@ static int ixgbe_set_vf_vlan_msg(struct ixgbe_adapter *adapter, | |||
924 | { | 921 | { |
925 | u32 add = (msgbuf[0] & IXGBE_VT_MSGINFO_MASK) >> IXGBE_VT_MSGINFO_SHIFT; | 922 | u32 add = (msgbuf[0] & IXGBE_VT_MSGINFO_MASK) >> IXGBE_VT_MSGINFO_SHIFT; |
926 | u32 vid = (msgbuf[1] & IXGBE_VLVF_VLANID_MASK); | 923 | u32 vid = (msgbuf[1] & IXGBE_VLVF_VLANID_MASK); |
927 | u8 tcs = netdev_get_num_tc(adapter->netdev); | 924 | u8 tcs = adapter->hw_tcs; |
928 | 925 | ||
929 | if (adapter->vfinfo[vf].pf_vlan || tcs) { | 926 | if (adapter->vfinfo[vf].pf_vlan || tcs) { |
930 | e_warn(drv, | 927 | e_warn(drv, |
@@ -1012,7 +1009,7 @@ static int ixgbe_get_vf_queues(struct ixgbe_adapter *adapter, | |||
1012 | struct net_device *dev = adapter->netdev; | 1009 | struct net_device *dev = adapter->netdev; |
1013 | struct ixgbe_ring_feature *vmdq = &adapter->ring_feature[RING_F_VMDQ]; | 1010 | struct ixgbe_ring_feature *vmdq = &adapter->ring_feature[RING_F_VMDQ]; |
1014 | unsigned int default_tc = 0; | 1011 | unsigned int default_tc = 0; |
1015 | u8 num_tcs = netdev_get_num_tc(dev); | 1012 | u8 num_tcs = adapter->hw_tcs; |
1016 | 1013 | ||
1017 | /* verify the PF is supporting the correct APIs */ | 1014 | /* verify the PF is supporting the correct APIs */ |
1018 | switch (adapter->vfinfo[vf].vf_api) { | 1015 | switch (adapter->vfinfo[vf].vf_api) { |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c index cb7da5f9c4da..3bce26e77090 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c | |||
@@ -1642,10 +1642,12 @@ static s32 ixgbe_supported_sfp_modules_X550em(struct ixgbe_hw *hw, bool *linear) | |||
1642 | } | 1642 | } |
1643 | 1643 | ||
1644 | /** | 1644 | /** |
1645 | * ixgbe_setup_mac_link_sfp_x550em - Configure the KR PHY for SFP. | 1645 | * ixgbe_setup_mac_link_sfp_x550em - Configure the KR PHY for SFP. |
1646 | * @hw: pointer to hardware structure | 1646 | * @hw: pointer to hardware structure |
1647 | * @speed: the link speed to force | ||
1648 | * @autoneg_wait_to_complete: unused | ||
1647 | * | 1649 | * |
1648 | * Configures the extern PHY and the integrated KR PHY for SFP support. | 1650 | * Configures the extern PHY and the integrated KR PHY for SFP support. |
1649 | */ | 1651 | */ |
1650 | static s32 | 1652 | static s32 |
1651 | ixgbe_setup_mac_link_sfp_x550em(struct ixgbe_hw *hw, | 1653 | ixgbe_setup_mac_link_sfp_x550em(struct ixgbe_hw *hw, |
@@ -1737,6 +1739,8 @@ static s32 ixgbe_setup_sfi_x550a(struct ixgbe_hw *hw, ixgbe_link_speed *speed) | |||
1737 | /** | 1739 | /** |
1738 | * ixgbe_setup_mac_link_sfp_n - Setup internal PHY for native SFP | 1740 | * ixgbe_setup_mac_link_sfp_n - Setup internal PHY for native SFP |
1739 | * @hw: pointer to hardware structure | 1741 | * @hw: pointer to hardware structure |
1742 | * @speed: link speed | ||
1743 | * @autoneg_wait_to_complete: unused | ||
1740 | * | 1744 | * |
1741 | * Configure the the integrated PHY for native SFP support. | 1745 | * Configure the the integrated PHY for native SFP support. |
1742 | */ | 1746 | */ |
@@ -1784,6 +1788,8 @@ ixgbe_setup_mac_link_sfp_n(struct ixgbe_hw *hw, ixgbe_link_speed speed, | |||
1784 | /** | 1788 | /** |
1785 | * ixgbe_setup_mac_link_sfp_x550a - Setup internal PHY for SFP | 1789 | * ixgbe_setup_mac_link_sfp_x550a - Setup internal PHY for SFP |
1786 | * @hw: pointer to hardware structure | 1790 | * @hw: pointer to hardware structure |
1791 | * @speed: link speed | ||
1792 | * @autoneg_wait_to_complete: unused | ||
1787 | * | 1793 | * |
1788 | * Configure the the integrated PHY for SFP support. | 1794 | * Configure the the integrated PHY for SFP support. |
1789 | */ | 1795 | */ |
@@ -1859,7 +1865,7 @@ ixgbe_setup_mac_link_sfp_x550a(struct ixgbe_hw *hw, ixgbe_link_speed speed, | |||
1859 | * ixgbe_setup_mac_link_t_X550em - Sets the auto advertised link speed | 1865 | * ixgbe_setup_mac_link_t_X550em - Sets the auto advertised link speed |
1860 | * @hw: pointer to hardware structure | 1866 | * @hw: pointer to hardware structure |
1861 | * @speed: new link speed | 1867 | * @speed: new link speed |
1862 | * @autoneg_wait_to_complete: true when waiting for completion is needed | 1868 | * @autoneg_wait: true when waiting for completion is needed |
1863 | * | 1869 | * |
1864 | * Setup internal/external PHY link speed based on link speed, then set | 1870 | * Setup internal/external PHY link speed based on link speed, then set |
1865 | * external PHY auto advertised link speed. | 1871 | * external PHY auto advertised link speed. |
@@ -1943,6 +1949,8 @@ static s32 ixgbe_check_link_t_X550em(struct ixgbe_hw *hw, | |||
1943 | /** | 1949 | /** |
1944 | * ixgbe_setup_sgmii - Set up link for sgmii | 1950 | * ixgbe_setup_sgmii - Set up link for sgmii |
1945 | * @hw: pointer to hardware structure | 1951 | * @hw: pointer to hardware structure |
1952 | * @speed: unused | ||
1953 | * @autoneg_wait_to_complete: unused | ||
1946 | */ | 1954 | */ |
1947 | static s32 | 1955 | static s32 |
1948 | ixgbe_setup_sgmii(struct ixgbe_hw *hw, __always_unused ixgbe_link_speed speed, | 1956 | ixgbe_setup_sgmii(struct ixgbe_hw *hw, __always_unused ixgbe_link_speed speed, |
@@ -2014,6 +2022,8 @@ ixgbe_setup_sgmii(struct ixgbe_hw *hw, __always_unused ixgbe_link_speed speed, | |||
2014 | /** | 2022 | /** |
2015 | * ixgbe_setup_sgmii_fw - Set up link for sgmii with firmware-controlled PHYs | 2023 | * ixgbe_setup_sgmii_fw - Set up link for sgmii with firmware-controlled PHYs |
2016 | * @hw: pointer to hardware structure | 2024 | * @hw: pointer to hardware structure |
2025 | * @speed: the link speed to force | ||
2026 | * @autoneg_wait: true when waiting for completion is needed | ||
2017 | */ | 2027 | */ |
2018 | static s32 ixgbe_setup_sgmii_fw(struct ixgbe_hw *hw, ixgbe_link_speed speed, | 2028 | static s32 ixgbe_setup_sgmii_fw(struct ixgbe_hw *hw, ixgbe_link_speed speed, |
2019 | bool autoneg_wait) | 2029 | bool autoneg_wait) |
@@ -3735,6 +3745,7 @@ static void ixgbe_release_swfw_sync_x550em_a(struct ixgbe_hw *hw, u32 mask) | |||
3735 | * ixgbe_read_phy_reg_x550a - Reads specified PHY register | 3745 | * ixgbe_read_phy_reg_x550a - Reads specified PHY register |
3736 | * @hw: pointer to hardware structure | 3746 | * @hw: pointer to hardware structure |
3737 | * @reg_addr: 32 bit address of PHY register to read | 3747 | * @reg_addr: 32 bit address of PHY register to read |
3748 | * @device_type: 5 bit device type | ||
3738 | * @phy_data: Pointer to read data from PHY register | 3749 | * @phy_data: Pointer to read data from PHY register |
3739 | * | 3750 | * |
3740 | * Reads a value from a specified PHY register using the SWFW lock and PHY | 3751 | * Reads a value from a specified PHY register using the SWFW lock and PHY |
diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c index 573f743b556a..ed5c3aea7939 100644 --- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c +++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | |||
@@ -554,7 +554,6 @@ static void ixgbevf_process_skb_fields(struct ixgbevf_ring *rx_ring, | |||
554 | * ixgbevf_is_non_eop - process handling of non-EOP buffers | 554 | * ixgbevf_is_non_eop - process handling of non-EOP buffers |
555 | * @rx_ring: Rx ring being processed | 555 | * @rx_ring: Rx ring being processed |
556 | * @rx_desc: Rx descriptor for current buffer | 556 | * @rx_desc: Rx descriptor for current buffer |
557 | * @skb: current socket buffer containing buffer in progress | ||
558 | * | 557 | * |
559 | * This function updates next to clean. If the buffer is an EOP buffer | 558 | * This function updates next to clean. If the buffer is an EOP buffer |
560 | * this function exits returning false, otherwise it will place the | 559 | * this function exits returning false, otherwise it will place the |
@@ -2741,7 +2740,7 @@ void ixgbevf_update_stats(struct ixgbevf_adapter *adapter) | |||
2741 | 2740 | ||
2742 | /** | 2741 | /** |
2743 | * ixgbevf_service_timer - Timer Call-back | 2742 | * ixgbevf_service_timer - Timer Call-back |
2744 | * @data: pointer to adapter cast into an unsigned long | 2743 | * @t: pointer to timer_list struct |
2745 | **/ | 2744 | **/ |
2746 | static void ixgbevf_service_timer(struct timer_list *t) | 2745 | static void ixgbevf_service_timer(struct timer_list *t) |
2747 | { | 2746 | { |
@@ -2884,7 +2883,7 @@ static void ixgbevf_watchdog_link_is_down(struct ixgbevf_adapter *adapter) | |||
2884 | 2883 | ||
2885 | /** | 2884 | /** |
2886 | * ixgbevf_watchdog_subtask - worker thread to bring link up | 2885 | * ixgbevf_watchdog_subtask - worker thread to bring link up |
2887 | * @work: pointer to work_struct containing our data | 2886 | * @adapter: board private structure |
2888 | **/ | 2887 | **/ |
2889 | static void ixgbevf_watchdog_subtask(struct ixgbevf_adapter *adapter) | 2888 | static void ixgbevf_watchdog_subtask(struct ixgbevf_adapter *adapter) |
2890 | { | 2889 | { |
@@ -4364,6 +4363,7 @@ static void __exit ixgbevf_exit_module(void) | |||
4364 | /** | 4363 | /** |
4365 | * ixgbevf_get_hw_dev_name - return device name string | 4364 | * ixgbevf_get_hw_dev_name - return device name string |
4366 | * used by hardware layer to print debugging information | 4365 | * used by hardware layer to print debugging information |
4366 | * @hw: pointer to private hardware struct | ||
4367 | **/ | 4367 | **/ |
4368 | char *ixgbevf_get_hw_dev_name(struct ixgbe_hw *hw) | 4368 | char *ixgbevf_get_hw_dev_name(struct ixgbe_hw *hw) |
4369 | { | 4369 | { |
diff --git a/drivers/net/ethernet/intel/ixgbevf/vf.c b/drivers/net/ethernet/intel/ixgbevf/vf.c index 0c25006ce9af..64c93e8becc6 100644 --- a/drivers/net/ethernet/intel/ixgbevf/vf.c +++ b/drivers/net/ethernet/intel/ixgbevf/vf.c | |||
@@ -146,6 +146,7 @@ static s32 ixgbevf_reset_hw_vf(struct ixgbe_hw *hw) | |||
146 | /** | 146 | /** |
147 | * Hyper-V variant; the VF/PF communication is through the PCI | 147 | * Hyper-V variant; the VF/PF communication is through the PCI |
148 | * config space. | 148 | * config space. |
149 | * @hw: pointer to private hardware struct | ||
149 | */ | 150 | */ |
150 | static s32 ixgbevf_hv_reset_hw_vf(struct ixgbe_hw *hw) | 151 | static s32 ixgbevf_hv_reset_hw_vf(struct ixgbe_hw *hw) |
151 | { | 152 | { |
@@ -303,7 +304,7 @@ static s32 ixgbevf_hv_set_uc_addr_vf(struct ixgbe_hw *hw, u32 index, u8 *addr) | |||
303 | 304 | ||
304 | /** | 305 | /** |
305 | * ixgbevf_get_reta_locked - get the RSS redirection table (RETA) contents. | 306 | * ixgbevf_get_reta_locked - get the RSS redirection table (RETA) contents. |
306 | * @adapter: pointer to the port handle | 307 | * @hw: pointer to hardware structure |
307 | * @reta: buffer to fill with RETA contents. | 308 | * @reta: buffer to fill with RETA contents. |
308 | * @num_rx_queues: Number of Rx queues configured for this port | 309 | * @num_rx_queues: Number of Rx queues configured for this port |
309 | * | 310 | * |
@@ -536,6 +537,8 @@ static s32 ixgbevf_update_mc_addr_list_vf(struct ixgbe_hw *hw, | |||
536 | 537 | ||
537 | /** | 538 | /** |
538 | * Hyper-V variant - just a stub. | 539 | * Hyper-V variant - just a stub. |
540 | * @hw: unused | ||
541 | * @netdev: unused | ||
539 | */ | 542 | */ |
540 | static s32 ixgbevf_hv_update_mc_addr_list_vf(struct ixgbe_hw *hw, | 543 | static s32 ixgbevf_hv_update_mc_addr_list_vf(struct ixgbe_hw *hw, |
541 | struct net_device *netdev) | 544 | struct net_device *netdev) |
@@ -584,6 +587,8 @@ static s32 ixgbevf_update_xcast_mode(struct ixgbe_hw *hw, int xcast_mode) | |||
584 | 587 | ||
585 | /** | 588 | /** |
586 | * Hyper-V variant - just a stub. | 589 | * Hyper-V variant - just a stub. |
590 | * @hw: unused | ||
591 | * @xcast_mode: unused | ||
587 | */ | 592 | */ |
588 | static s32 ixgbevf_hv_update_xcast_mode(struct ixgbe_hw *hw, int xcast_mode) | 593 | static s32 ixgbevf_hv_update_xcast_mode(struct ixgbe_hw *hw, int xcast_mode) |
589 | { | 594 | { |
@@ -626,6 +631,10 @@ mbx_err: | |||
626 | 631 | ||
627 | /** | 632 | /** |
628 | * Hyper-V variant - just a stub. | 633 | * Hyper-V variant - just a stub. |
634 | * @hw: unused | ||
635 | * @vlan: unused | ||
636 | * @vind: unused | ||
637 | * @vlan_on: unused | ||
629 | */ | 638 | */ |
630 | static s32 ixgbevf_hv_set_vfta_vf(struct ixgbe_hw *hw, u32 vlan, u32 vind, | 639 | static s32 ixgbevf_hv_set_vfta_vf(struct ixgbe_hw *hw, u32 vlan, u32 vind, |
631 | bool vlan_on) | 640 | bool vlan_on) |
@@ -655,7 +664,7 @@ static s32 ixgbevf_setup_mac_link_vf(struct ixgbe_hw *hw, | |||
655 | * @hw: pointer to hardware structure | 664 | * @hw: pointer to hardware structure |
656 | * @speed: pointer to link speed | 665 | * @speed: pointer to link speed |
657 | * @link_up: true is link is up, false otherwise | 666 | * @link_up: true is link is up, false otherwise |
658 | * @autoneg_wait_to_complete: true when waiting for completion is needed | 667 | * @autoneg_wait_to_complete: unused |
659 | * | 668 | * |
660 | * Reads the links register to determine if link is up and the current speed | 669 | * Reads the links register to determine if link is up and the current speed |
661 | **/ | 670 | **/ |
@@ -740,6 +749,10 @@ out: | |||
740 | 749 | ||
741 | /** | 750 | /** |
742 | * Hyper-V variant; there is no mailbox communication. | 751 | * Hyper-V variant; there is no mailbox communication. |
752 | * @hw: pointer to private hardware struct | ||
753 | * @speed: pointer to link speed | ||
754 | * @link_up: true is link is up, false otherwise | ||
755 | * @autoneg_wait_to_complete: unused | ||
743 | */ | 756 | */ |
744 | static s32 ixgbevf_hv_check_mac_link_vf(struct ixgbe_hw *hw, | 757 | static s32 ixgbevf_hv_check_mac_link_vf(struct ixgbe_hw *hw, |
745 | ixgbe_link_speed *speed, | 758 | ixgbe_link_speed *speed, |