mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
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>
This commit is contained in:
commit
143492fce3
@ -1339,6 +1339,7 @@ ice_dwnld_cfg_bufs_no_lock(struct ice_hw *hw, struct ice_buf *bufs, u32 start,
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
bool last = false;
|
||||
int try_cnt = 0;
|
||||
int status;
|
||||
|
||||
bh = (struct ice_buf_hdr *)(bufs + start + i);
|
||||
@ -1346,8 +1347,26 @@ ice_dwnld_cfg_bufs_no_lock(struct ice_hw *hw, struct ice_buf *bufs, u32 start,
|
||||
if (indicate_last)
|
||||
last = ice_is_last_download_buffer(bh, i, count);
|
||||
|
||||
status = ice_aq_download_pkg(hw, bh, ICE_PKG_BUF_SIZE, last,
|
||||
&offset, &info, NULL);
|
||||
while (1) {
|
||||
status = ice_aq_download_pkg(hw, bh, ICE_PKG_BUF_SIZE,
|
||||
last, &offset, &info,
|
||||
NULL);
|
||||
if (hw->adminq.sq_last_status != ICE_AQ_RC_ENOSEC &&
|
||||
hw->adminq.sq_last_status != ICE_AQ_RC_EBADSIG)
|
||||
break;
|
||||
|
||||
try_cnt++;
|
||||
|
||||
if (try_cnt == 5)
|
||||
break;
|
||||
|
||||
msleep(20);
|
||||
}
|
||||
|
||||
if (try_cnt)
|
||||
dev_dbg(ice_hw_to_dev(hw),
|
||||
"ice_aq_download_pkg number of retries: %d\n",
|
||||
try_cnt);
|
||||
|
||||
/* Save AQ status from download package */
|
||||
if (status) {
|
||||
|
@ -805,6 +805,9 @@ void ice_print_link_msg(struct ice_vsi *vsi, bool isup)
|
||||
}
|
||||
|
||||
switch (vsi->port_info->phy.link_info.link_speed) {
|
||||
case ICE_AQ_LINK_SPEED_200GB:
|
||||
speed = "200 G";
|
||||
break;
|
||||
case ICE_AQ_LINK_SPEED_100GB:
|
||||
speed = "100 G";
|
||||
break;
|
||||
@ -5564,7 +5567,7 @@ static int ice_suspend(struct device *dev)
|
||||
*/
|
||||
disabled = ice_service_task_stop(pf);
|
||||
|
||||
ice_unplug_aux_dev(pf);
|
||||
ice_deinit_rdma(pf);
|
||||
|
||||
/* Already suspended?, then there is nothing to do */
|
||||
if (test_and_set_bit(ICE_SUSPENDED, pf->state)) {
|
||||
@ -5644,6 +5647,11 @@ static int ice_resume(struct device *dev)
|
||||
if (ret)
|
||||
dev_err(dev, "Cannot restore interrupt scheme: %d\n", ret);
|
||||
|
||||
ret = ice_init_rdma(pf);
|
||||
if (ret)
|
||||
dev_err(dev, "Reinitialize RDMA during resume failed: %d\n",
|
||||
ret);
|
||||
|
||||
clear_bit(ICE_DOWN, pf->state);
|
||||
/* Now perform PF reset and rebuild */
|
||||
reset_type = ICE_RESET_PFR;
|
||||
|
Loading…
Reference in New Issue
Block a user