Skip to content

Commit 188fa10

Browse files
committed
Merge branch '1GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue
Tony Nguyen says: ==================== Intel Wired LAN Driver Updates 2021-02-01 This series contains updates to igc and i40e drivers. Kai-Heng Feng fixes igc to report unknown speed and duplex during suspend as an attempted read will cause errors. Kevin Lo sets the default value to -IGC_ERR_NVM instead of success for writing shadow RAM as this could miss a timeout. Also propagates the return value for Flow Control configuration to properly pass on errors for igc. Aleksandr reverts commit 2ad1274 ("i40e: don't report link up for a VF who hasn't enabled queues") as this can cause link flapping. * '1GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue: i40e: Revert "i40e: don't report link up for a VF who hasn't enabled queues" igc: check return value of ret_val in igc_config_fc_after_link_up igc: set the default return value to -IGC_ERR_NVM in igc_write_nvm_srwr igc: Report speed and duplex as unknown when device is runtime suspended ==================== Link: https://lore.kernel.org/r/20210201214618.852831-1-anthony.l.nguyen@intel.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2 parents 3162820 + f559a35 commit 188fa10

5 files changed

Lines changed: 5 additions & 17 deletions

File tree

drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,7 @@ static void i40e_vc_notify_vf_link_state(struct i40e_vf *vf)
5555

5656
pfe.event = VIRTCHNL_EVENT_LINK_CHANGE;
5757
pfe.severity = PF_EVENT_SEVERITY_INFO;
58-
59-
/* Always report link is down if the VF queues aren't enabled */
60-
if (!vf->queues_enabled) {
61-
pfe.event_data.link_event.link_status = false;
62-
pfe.event_data.link_event.link_speed = 0;
63-
} else if (vf->link_forced) {
58+
if (vf->link_forced) {
6459
pfe.event_data.link_event.link_status = vf->link_up;
6560
pfe.event_data.link_event.link_speed =
6661
(vf->link_up ? i40e_virtchnl_link_speed(ls->link_speed) : 0);
@@ -70,7 +65,6 @@ static void i40e_vc_notify_vf_link_state(struct i40e_vf *vf)
7065
pfe.event_data.link_event.link_speed =
7166
i40e_virtchnl_link_speed(ls->link_speed);
7267
}
73-
7468
i40e_aq_send_msg_to_vf(hw, abs_vf_id, VIRTCHNL_OP_EVENT,
7569
0, (u8 *)&pfe, sizeof(pfe), NULL);
7670
}
@@ -2443,8 +2437,6 @@ static int i40e_vc_enable_queues_msg(struct i40e_vf *vf, u8 *msg)
24432437
}
24442438
}
24452439

2446-
vf->queues_enabled = true;
2447-
24482440
error_param:
24492441
/* send the response to the VF */
24502442
return i40e_vc_send_resp_to_vf(vf, VIRTCHNL_OP_ENABLE_QUEUES,
@@ -2466,9 +2458,6 @@ static int i40e_vc_disable_queues_msg(struct i40e_vf *vf, u8 *msg)
24662458
struct i40e_pf *pf = vf->pf;
24672459
i40e_status aq_ret = 0;
24682460

2469-
/* Immediately mark queues as disabled */
2470-
vf->queues_enabled = false;
2471-
24722461
if (!test_bit(I40E_VF_STATE_ACTIVE, &vf->vf_states)) {
24732462
aq_ret = I40E_ERR_PARAM;
24742463
goto error_param;

drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,6 @@ struct i40e_vf {
9898
unsigned int tx_rate; /* Tx bandwidth limit in Mbps */
9999
bool link_forced;
100100
bool link_up; /* only valid if VF link is forced */
101-
bool queues_enabled; /* true if the VF queues are enabled */
102101
bool spoofchk;
103102
u16 num_vlan;
104103

drivers/net/ethernet/intel/igc/igc_ethtool.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1714,7 +1714,8 @@ static int igc_ethtool_get_link_ksettings(struct net_device *netdev,
17141714
Asym_Pause);
17151715
}
17161716

1717-
status = rd32(IGC_STATUS);
1717+
status = pm_runtime_suspended(&adapter->pdev->dev) ?
1718+
0 : rd32(IGC_STATUS);
17181719

17191720
if (status & IGC_STATUS_LU) {
17201721
if (status & IGC_STATUS_SPEED_1000) {

drivers/net/ethernet/intel/igc/igc_i225.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -219,17 +219,16 @@ static s32 igc_write_nvm_srwr(struct igc_hw *hw, u16 offset, u16 words,
219219
u16 *data)
220220
{
221221
struct igc_nvm_info *nvm = &hw->nvm;
222+
s32 ret_val = -IGC_ERR_NVM;
222223
u32 attempts = 100000;
223224
u32 i, k, eewr = 0;
224-
s32 ret_val = 0;
225225

226226
/* A check for invalid values: offset too large, too many words,
227227
* too many words for the offset, and not enough words.
228228
*/
229229
if (offset >= nvm->word_size || (words > (nvm->word_size - offset)) ||
230230
words == 0) {
231231
hw_dbg("nvm parameter(s) out of bounds\n");
232-
ret_val = -IGC_ERR_NVM;
233232
goto out;
234233
}
235234

drivers/net/ethernet/intel/igc/igc_mac.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -638,7 +638,7 @@ s32 igc_config_fc_after_link_up(struct igc_hw *hw)
638638
}
639639

640640
out:
641-
return 0;
641+
return ret_val;
642642
}
643643

644644
/**

0 commit comments

Comments
 (0)