Skip to content

Commit 143492f

Browse files
committed
Merge branch '40GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue
Tony Nguyen says: ==================== Intel Wired LAN Driver Updates 2024-06-11 (ice) This series contains updates to ice driver only. En-Wei Wu resolves IRQ collision during suspend. Paul corrects 200Gbps speed being reported as unknown. Wojciech adds retry mechanism when package download fails. * '40GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue: ice: implement AQ download pkg retry ice: fix 200G link speed message log ice: avoid IRQ collision to fix init failure on ACPI S3 resume ==================== Link: https://lore.kernel.org/r/20240613154514.1948785-1-anthony.l.nguyen@intel.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2 parents 7ed352d + a27f6ac commit 143492f

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

drivers/net/ethernet/intel/ice/ice_ddp.c

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1339,15 +1339,34 @@ ice_dwnld_cfg_bufs_no_lock(struct ice_hw *hw, struct ice_buf *bufs, u32 start,
13391339

13401340
for (i = 0; i < count; i++) {
13411341
bool last = false;
1342+
int try_cnt = 0;
13421343
int status;
13431344

13441345
bh = (struct ice_buf_hdr *)(bufs + start + i);
13451346

13461347
if (indicate_last)
13471348
last = ice_is_last_download_buffer(bh, i, count);
13481349

1349-
status = ice_aq_download_pkg(hw, bh, ICE_PKG_BUF_SIZE, last,
1350-
&offset, &info, NULL);
1350+
while (1) {
1351+
status = ice_aq_download_pkg(hw, bh, ICE_PKG_BUF_SIZE,
1352+
last, &offset, &info,
1353+
NULL);
1354+
if (hw->adminq.sq_last_status != ICE_AQ_RC_ENOSEC &&
1355+
hw->adminq.sq_last_status != ICE_AQ_RC_EBADSIG)
1356+
break;
1357+
1358+
try_cnt++;
1359+
1360+
if (try_cnt == 5)
1361+
break;
1362+
1363+
msleep(20);
1364+
}
1365+
1366+
if (try_cnt)
1367+
dev_dbg(ice_hw_to_dev(hw),
1368+
"ice_aq_download_pkg number of retries: %d\n",
1369+
try_cnt);
13511370

13521371
/* Save AQ status from download package */
13531372
if (status) {

drivers/net/ethernet/intel/ice/ice_main.c

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -805,6 +805,9 @@ void ice_print_link_msg(struct ice_vsi *vsi, bool isup)
805805
}
806806

807807
switch (vsi->port_info->phy.link_info.link_speed) {
808+
case ICE_AQ_LINK_SPEED_200GB:
809+
speed = "200 G";
810+
break;
808811
case ICE_AQ_LINK_SPEED_100GB:
809812
speed = "100 G";
810813
break;
@@ -5564,7 +5567,7 @@ static int ice_suspend(struct device *dev)
55645567
*/
55655568
disabled = ice_service_task_stop(pf);
55665569

5567-
ice_unplug_aux_dev(pf);
5570+
ice_deinit_rdma(pf);
55685571

55695572
/* Already suspended?, then there is nothing to do */
55705573
if (test_and_set_bit(ICE_SUSPENDED, pf->state)) {
@@ -5644,6 +5647,11 @@ static int ice_resume(struct device *dev)
56445647
if (ret)
56455648
dev_err(dev, "Cannot restore interrupt scheme: %d\n", ret);
56465649

5650+
ret = ice_init_rdma(pf);
5651+
if (ret)
5652+
dev_err(dev, "Reinitialize RDMA during resume failed: %d\n",
5653+
ret);
5654+
56475655
clear_bit(ICE_DOWN, pf->state);
56485656
/* Now perform PF reset and rebuild */
56495657
reset_type = ICE_RESET_PFR;

0 commit comments

Comments
 (0)