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++) {
|
for (i = 0; i < count; i++) {
|
||||||
bool last = false;
|
bool last = false;
|
||||||
|
int try_cnt = 0;
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
bh = (struct ice_buf_hdr *)(bufs + start + i);
|
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)
|
if (indicate_last)
|
||||||
last = ice_is_last_download_buffer(bh, i, count);
|
last = ice_is_last_download_buffer(bh, i, count);
|
||||||
|
|
||||||
status = ice_aq_download_pkg(hw, bh, ICE_PKG_BUF_SIZE, last,
|
while (1) {
|
||||||
&offset, &info, NULL);
|
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 */
|
/* Save AQ status from download package */
|
||||||
if (status) {
|
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) {
|
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:
|
case ICE_AQ_LINK_SPEED_100GB:
|
||||||
speed = "100 G";
|
speed = "100 G";
|
||||||
break;
|
break;
|
||||||
@ -5564,7 +5567,7 @@ static int ice_suspend(struct device *dev)
|
|||||||
*/
|
*/
|
||||||
disabled = ice_service_task_stop(pf);
|
disabled = ice_service_task_stop(pf);
|
||||||
|
|
||||||
ice_unplug_aux_dev(pf);
|
ice_deinit_rdma(pf);
|
||||||
|
|
||||||
/* Already suspended?, then there is nothing to do */
|
/* Already suspended?, then there is nothing to do */
|
||||||
if (test_and_set_bit(ICE_SUSPENDED, pf->state)) {
|
if (test_and_set_bit(ICE_SUSPENDED, pf->state)) {
|
||||||
@ -5644,6 +5647,11 @@ static int ice_resume(struct device *dev)
|
|||||||
if (ret)
|
if (ret)
|
||||||
dev_err(dev, "Cannot restore interrupt scheme: %d\n", 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);
|
clear_bit(ICE_DOWN, pf->state);
|
||||||
/* Now perform PF reset and rebuild */
|
/* Now perform PF reset and rebuild */
|
||||||
reset_type = ICE_RESET_PFR;
|
reset_type = ICE_RESET_PFR;
|
||||||
|
Loading…
Reference in New Issue
Block a user