* [PATCH iwl-net 1/2] ice: reintroduce retry mechanism for indirect AQ [not found] <20260113193817.582-1-dawid.osuchowski@linux.intel.com> @ 2026-01-13 19:38 ` Dawid Osuchowski 2026-01-13 22:31 ` [Intel-wired-lan] " Paul Menzel 2026-02-27 6:05 ` Rinitha, SX 2026-01-13 19:38 ` [PATCH iwl-net 2/2] ice: fix retry for AQ command 0x06EE Dawid Osuchowski 1 sibling, 2 replies; 7+ messages in thread From: Dawid Osuchowski @ 2026-01-13 19:38 UTC (permalink / raw) To: intel-wired-lan Cc: netdev, Jakub Staniszewski, Michal Schmidt, stable, Dawid Osuchowski, Aleksandr Loktionov, Przemek Kitszel From: Jakub Staniszewski <jakub.staniszewski@linux.intel.com> Add retry mechanism for indirect Admin Queue (AQ) commands. To do so we need to keep the command buffer. This technically reverts commit 43a630e37e25 ("ice: remove unused buffer copy code in ice_sq_send_cmd_retry()"), but combines it with a fix in the logic by using a kmemdup() call, making it more robust and less likely to break in the future due to programmer error. Cc: Michal Schmidt <mschmidt@redhat.com> Cc: stable@vger.kernel.org Fixes: 3056df93f7a8 ("ice: Re-send some AQ commands, as result of EBUSY AQ error") Signed-off-by: Jakub Staniszewski <jakub.staniszewski@linux.intel.com> Co-developed-by: Dawid Osuchowski <dawid.osuchowski@linux.intel.com> Signed-off-by: Dawid Osuchowski <dawid.osuchowski@linux.intel.com> Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com> Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com> --- Ccing Michal, given they are the author of the "reverted" commit. drivers/net/ethernet/intel/ice/ice_common.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/intel/ice/ice_common.c b/drivers/net/ethernet/intel/ice/ice_common.c index a400bf4f239a..aab00c44e9b2 100644 --- a/drivers/net/ethernet/intel/ice/ice_common.c +++ b/drivers/net/ethernet/intel/ice/ice_common.c @@ -1879,34 +1879,40 @@ ice_sq_send_cmd_retry(struct ice_hw *hw, struct ice_ctl_q_info *cq, { struct libie_aq_desc desc_cpy; bool is_cmd_for_retry; + u8 *buf_cpy = NULL; u8 idx = 0; u16 opcode; int status; opcode = le16_to_cpu(desc->opcode); is_cmd_for_retry = ice_should_retry_sq_send_cmd(opcode); memset(&desc_cpy, 0, sizeof(desc_cpy)); if (is_cmd_for_retry) { - /* All retryable cmds are direct, without buf. */ - WARN_ON(buf); + if (buf) { + buf_cpy = kmemdup(buf, buf_size, GFP_KERNEL); + if (!buf_cpy) + return -ENOMEM; + } memcpy(&desc_cpy, desc, sizeof(desc_cpy)); } do { status = ice_sq_send_cmd(hw, cq, desc, buf, buf_size, cd); if (!is_cmd_for_retry || !status || hw->adminq.sq_last_status != LIBIE_AQ_RC_EBUSY) break; + if (buf_cpy) + memcpy(buf, buf_cpy, buf_size); memcpy(desc, &desc_cpy, sizeof(desc_cpy)); - msleep(ICE_SQ_SEND_DELAY_TIME_MS); } while (++idx < ICE_SQ_SEND_MAX_EXECUTE); + kfree(buf_cpy); return status; } -- 2.51.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [Intel-wired-lan] [PATCH iwl-net 1/2] ice: reintroduce retry mechanism for indirect AQ 2026-01-13 19:38 ` [PATCH iwl-net 1/2] ice: reintroduce retry mechanism for indirect AQ Dawid Osuchowski @ 2026-01-13 22:31 ` Paul Menzel 2026-01-14 8:15 ` Dawid Osuchowski 2026-02-27 6:05 ` Rinitha, SX 1 sibling, 1 reply; 7+ messages in thread From: Paul Menzel @ 2026-01-13 22:31 UTC (permalink / raw) To: Dawid Osuchowski Cc: intel-wired-lan, netdev, stable, Aleksandr Loktionov, Jakub Staniszewski, Przemek Kitszel, Michal Schmidt [Cc: +Michal] Dear Dawid, dear Jakub, Am 13.01.26 um 20:38 schrieb Dawid Osuchowski: > From: Jakub Staniszewski <jakub.staniszewski@linux.intel.com> > > Add retry mechanism for indirect Admin Queue (AQ) commands. To do so we > need to keep the command buffer. > > This technically reverts commit 43a630e37e25 > ("ice: remove unused buffer copy code in ice_sq_send_cmd_retry()"), > but combines it with a fix in the logic by using a kmemdup() call, > making it more robust and less likely to break in the future due to > programmer error. > > Cc: Michal Schmidt <mschmidt@redhat.com> > Cc: stable@vger.kernel.org > Fixes: 3056df93f7a8 ("ice: Re-send some AQ commands, as result of EBUSY AQ error") > Signed-off-by: Jakub Staniszewski <jakub.staniszewski@linux.intel.com> > Co-developed-by: Dawid Osuchowski <dawid.osuchowski@linux.intel.com> > Signed-off-by: Dawid Osuchowski <dawid.osuchowski@linux.intel.com> > Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com> > Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com> > --- > Ccing Michal, given they are the author of the "reverted" commit. At least Michal was not in the (visible) Cc: list > drivers/net/ethernet/intel/ice/ice_common.c | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/ethernet/intel/ice/ice_common.c b/drivers/net/ethernet/intel/ice/ice_common.c > index a400bf4f239a..aab00c44e9b2 100644 > --- a/drivers/net/ethernet/intel/ice/ice_common.c > +++ b/drivers/net/ethernet/intel/ice/ice_common.c > @@ -1879,34 +1879,40 @@ ice_sq_send_cmd_retry(struct ice_hw *hw, struct ice_ctl_q_info *cq, > { > struct libie_aq_desc desc_cpy; > bool is_cmd_for_retry; > + u8 *buf_cpy = NULL; > u8 idx = 0; > u16 opcode; > int status; > > opcode = le16_to_cpu(desc->opcode); > is_cmd_for_retry = ice_should_retry_sq_send_cmd(opcode); > memset(&desc_cpy, 0, sizeof(desc_cpy)); > > if (is_cmd_for_retry) { > - /* All retryable cmds are direct, without buf. */ > - WARN_ON(buf); > + if (buf) { > + buf_cpy = kmemdup(buf, buf_size, GFP_KERNEL); > + if (!buf_cpy) > + return -ENOMEM; > + } > > memcpy(&desc_cpy, desc, sizeof(desc_cpy)); > } > > do { > status = ice_sq_send_cmd(hw, cq, desc, buf, buf_size, cd); > > if (!is_cmd_for_retry || !status || > hw->adminq.sq_last_status != LIBIE_AQ_RC_EBUSY) > break; > > + if (buf_cpy) > + memcpy(buf, buf_cpy, buf_size); > memcpy(desc, &desc_cpy, sizeof(desc_cpy)); > - Unrelated change? > msleep(ICE_SQ_SEND_DELAY_TIME_MS); > > } while (++idx < ICE_SQ_SEND_MAX_EXECUTE); > > + kfree(buf_cpy); > return status; > } The diff looks good otherwise. Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de> Kind regards, Paul ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Intel-wired-lan] [PATCH iwl-net 1/2] ice: reintroduce retry mechanism for indirect AQ 2026-01-13 22:31 ` [Intel-wired-lan] " Paul Menzel @ 2026-01-14 8:15 ` Dawid Osuchowski 0 siblings, 0 replies; 7+ messages in thread From: Dawid Osuchowski @ 2026-01-14 8:15 UTC (permalink / raw) To: Paul Menzel Cc: intel-wired-lan, netdev, stable, Aleksandr Loktionov, Jakub Staniszewski, Przemek Kitszel, Michal Schmidt Hey Paul, On 2026-01-13 11:31 PM, Paul Menzel wrote: > [Cc: +Michal] > > Dear Dawid, dear Jakub, > ... > Am 13.01.26 um 20:38 schrieb Dawid Osuchowski: >> Ccing Michal, given they are the author of the "reverted" commit. > > At least Michal was not in the (visible) Cc: list Interesting. I was using 'git send-email' without any suppression of Cc or similar options. In the direct email sent from me Michal is in Cc, seems the mailing list for some reason stripped him... >> drivers/net/ethernet/intel/ice/ice_common.c | 12 +++++++++--- >> 1 file changed, 9 insertions(+), 3 deletions(-) >> ... >> do { >> status = ice_sq_send_cmd(hw, cq, desc, buf, buf_size, cd); >> if (!is_cmd_for_retry || !status || >> hw->adminq.sq_last_status != LIBIE_AQ_RC_EBUSY) >> break; >> + if (buf_cpy) >> + memcpy(buf, buf_cpy, buf_size); >> memcpy(desc, &desc_cpy, sizeof(desc_cpy)); >> - > > Unrelated change? > During internal review it was pointed out that this function contains a lot of empty lines, this was my feeble attempt to at least partially reduce their count. >> msleep(ICE_SQ_SEND_DELAY_TIME_MS); >> } while (++idx < ICE_SQ_SEND_MAX_EXECUTE); >> + kfree(buf_cpy); >> return status; >> } > > The diff looks good otherwise. > > Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de> > > > Kind regards, > > Paul Thanks, Dawid ^ permalink raw reply [flat|nested] 7+ messages in thread
* RE: [Intel-wired-lan] [PATCH iwl-net 1/2] ice: reintroduce retry mechanism for indirect AQ 2026-01-13 19:38 ` [PATCH iwl-net 1/2] ice: reintroduce retry mechanism for indirect AQ Dawid Osuchowski 2026-01-13 22:31 ` [Intel-wired-lan] " Paul Menzel @ 2026-02-27 6:05 ` Rinitha, SX 1 sibling, 0 replies; 7+ messages in thread From: Rinitha, SX @ 2026-02-27 6:05 UTC (permalink / raw) To: Dawid Osuchowski, intel-wired-lan@lists.osuosl.org Cc: netdev@vger.kernel.org, stable@vger.kernel.org, Loktionov, Aleksandr, Jakub Staniszewski, Kitszel, Przemyslaw > -----Original Message----- > From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of Dawid Osuchowski > Sent: 14 January 2026 01:08 > To: intel-wired-lan@lists.osuosl.org > Cc: netdev@vger.kernel.org; stable@vger.kernel.org; Loktionov, Aleksandr <aleksandr.loktionov@intel.com>; Jakub Staniszewski <jakub.staniszewski@linux.intel.com>; Kitszel, Przemyslaw <przemyslaw.kitszel@intel.com>; Dawid Osuchowski <dawid.osuchowski@linux.intel.com> > Subject: [Intel-wired-lan] [PATCH iwl-net 1/2] ice: reintroduce retry mechanism for indirect AQ > > From: Jakub Staniszewski <jakub.staniszewski@linux.intel.com> > > Add retry mechanism for indirect Admin Queue (AQ) commands. To do so we need to keep the command buffer. > > This technically reverts commit 43a630e37e25 > ("ice: remove unused buffer copy code in ice_sq_send_cmd_retry()"), but combines it with a fix in the logic by using a kmemdup() call, making it more robust and less likely to break in the future due to programmer error. > > Cc: Michal Schmidt <mschmidt@redhat.com> > Cc: stable@vger.kernel.org > Fixes: 3056df93f7a8 ("ice: Re-send some AQ commands, as result of EBUSY AQ error") > Signed-off-by: Jakub Staniszewski <jakub.staniszewski@linux.intel.com> > Co-developed-by: Dawid Osuchowski <dawid.osuchowski@linux.intel.com> > Signed-off-by: Dawid Osuchowski <dawid.osuchowski@linux.intel.com> > Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com> > Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com> > --- > Ccing Michal, given they are the author of the "reverted" commit. > > drivers/net/ethernet/intel/ice/ice_common.c | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > Tested-by: Rinitha S <sx.rinitha@intel.com> (A Contingent worker at Intel) ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH iwl-net 2/2] ice: fix retry for AQ command 0x06EE [not found] <20260113193817.582-1-dawid.osuchowski@linux.intel.com> 2026-01-13 19:38 ` [PATCH iwl-net 1/2] ice: reintroduce retry mechanism for indirect AQ Dawid Osuchowski @ 2026-01-13 19:38 ` Dawid Osuchowski 2026-01-14 9:16 ` [Intel-wired-lan] " Paul Menzel 2026-02-27 6:06 ` Rinitha, SX 1 sibling, 2 replies; 7+ messages in thread From: Dawid Osuchowski @ 2026-01-13 19:38 UTC (permalink / raw) To: intel-wired-lan Cc: netdev, Jakub Staniszewski, stable, Dawid Osuchowski, Aleksandr Loktionov, Przemek Kitszel From: Jakub Staniszewski <jakub.staniszewski@linux.intel.com> Executing ethtool -m can fail reporting a netlink I/O error while firmware link management holds the i2c bus used to communicate with the module. According to Intel(R) Ethernet Controller E810 Datasheet Rev 2.8 [1] Section 3.3.10.4 Read/Write SFF EEPROM (0x06EE) request should to be retried upon receiving EBUSY from firmware. Commit e9c9692c8a81 ("ice: Reimplement module reads used by ethtool") implemented it only for part of ice_get_module_eeprom(), leaving all other calls to ice_aq_sff_eeprom() vulnerable to returning early on getting EBUSY without retrying. Remove the retry loop from ice_get_module_eeprom() and add Admin Queue (AQ) command with opcode 0x06EE to the list of commands that should be retried on receiving EBUSY from firmware. Cc: stable@vger.kernel.org Fixes: e9c9692c8a81 ("ice: Reimplement module reads used by ethtool") Signed-off-by: Jakub Staniszewski <jakub.staniszewski@linux.intel.com> Co-developed-by: Dawid Osuchowski <dawid.osuchowski@linux.intel.com> Signed-off-by: Dawid Osuchowski <dawid.osuchowski@linux.intel.com> Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com> Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com> Link: https://www.intel.com/content/www/us/en/content-details/613875/intel-ethernet-controller-e810-datasheet.html [1] --- drivers/net/ethernet/intel/ice/ice_common.c | 1 + drivers/net/ethernet/intel/ice/ice_ethtool.c | 35 ++++++++------------ 2 files changed, 15 insertions(+), 21 deletions(-) diff --git a/drivers/net/ethernet/intel/ice/ice_common.c b/drivers/net/ethernet/intel/ice/ice_common.c index aab00c44e9b2..26eb8e05498b 100644 --- a/drivers/net/ethernet/intel/ice/ice_common.c +++ b/drivers/net/ethernet/intel/ice/ice_common.c @@ -1854,6 +1854,7 @@ static bool ice_should_retry_sq_send_cmd(u16 opcode) case ice_aqc_opc_lldp_stop: case ice_aqc_opc_lldp_start: case ice_aqc_opc_lldp_filter_ctrl: + case ice_aqc_opc_sff_eeprom: return true; } diff --git a/drivers/net/ethernet/intel/ice/ice_ethtool.c b/drivers/net/ethernet/intel/ice/ice_ethtool.c index 3565a5d96c6d..478876908db1 100644 --- a/drivers/net/ethernet/intel/ice/ice_ethtool.c +++ b/drivers/net/ethernet/intel/ice/ice_ethtool.c @@ -4496,7 +4496,7 @@ ice_get_module_eeprom(struct net_device *netdev, u8 addr = ICE_I2C_EEPROM_DEV_ADDR; struct ice_hw *hw = &pf->hw; bool is_sfp = false; - unsigned int i, j; + unsigned int i; u16 offset = 0; u8 page = 0; int status; @@ -4538,26 +4538,19 @@ ice_get_module_eeprom(struct net_device *netdev, if (page == 0 || !(data[0x2] & 0x4)) { u32 copy_len; - /* If i2c bus is busy due to slow page change or - * link management access, call can fail. This is normal. - * So we retry this a few times. - */ - for (j = 0; j < 4; j++) { - status = ice_aq_sff_eeprom(hw, 0, addr, offset, page, - !is_sfp, value, - SFF_READ_BLOCK_SIZE, - 0, NULL); - netdev_dbg(netdev, "SFF %02X %02X %02X %X = %02X%02X%02X%02X.%02X%02X%02X%02X (%X)\n", - addr, offset, page, is_sfp, - value[0], value[1], value[2], value[3], - value[4], value[5], value[6], value[7], - status); - if (status) { - usleep_range(1500, 2500); - memset(value, 0, SFF_READ_BLOCK_SIZE); - continue; - } - break; + status = ice_aq_sff_eeprom(hw, 0, addr, offset, page, + !is_sfp, value, + SFF_READ_BLOCK_SIZE, + 0, NULL); + netdev_dbg(netdev, "SFF %02X %02X %02X %X = %02X%02X%02X%02X.%02X%02X%02X%02X (%pe)\n", + addr, offset, page, is_sfp, + value[0], value[1], value[2], value[3], + value[4], value[5], value[6], value[7], + ERR_PTR(status)); + if (status) { + netdev_err(netdev, "%s: error reading module EEPROM: status %pe\n", + __func__, ERR_PTR(status)); + return status; } /* Make sure we have enough room for the new block */ -- 2.51.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [Intel-wired-lan] [PATCH iwl-net 2/2] ice: fix retry for AQ command 0x06EE 2026-01-13 19:38 ` [PATCH iwl-net 2/2] ice: fix retry for AQ command 0x06EE Dawid Osuchowski @ 2026-01-14 9:16 ` Paul Menzel 2026-02-27 6:06 ` Rinitha, SX 1 sibling, 0 replies; 7+ messages in thread From: Paul Menzel @ 2026-01-14 9:16 UTC (permalink / raw) To: Dawid Osuchowski Cc: intel-wired-lan, netdev, Jakub Staniszewski, stable, Aleksandr Loktionov, Przemek Kitszel Dear Dawid, dear Jakub, Thank you for your patch. Am 13.01.26 um 20:38 schrieb Dawid Osuchowski: > From: Jakub Staniszewski <jakub.staniszewski@linux.intel.com> > > Executing ethtool -m can fail reporting a netlink I/O error while firmware > link management holds the i2c bus used to communicate with the module. > > According to Intel(R) Ethernet Controller E810 Datasheet Rev 2.8 [1] > Section 3.3.10.4 Read/Write SFF EEPROM (0x06EE) > request should to be retried upon receiving EBUSY from firmware. > > Commit e9c9692c8a81 ("ice: Reimplement module reads used by ethtool") > implemented it only for part of ice_get_module_eeprom(), leaving all other > calls to ice_aq_sff_eeprom() vulnerable to returning early on getting > EBUSY without retrying. > > Remove the retry loop from ice_get_module_eeprom() and add Admin Queue > (AQ) command with opcode 0x06EE to the list of commands that should be > retried on receiving EBUSY from firmware. > > Cc: stable@vger.kernel.org > Fixes: e9c9692c8a81 ("ice: Reimplement module reads used by ethtool") > Signed-off-by: Jakub Staniszewski <jakub.staniszewski@linux.intel.com> > Co-developed-by: Dawid Osuchowski <dawid.osuchowski@linux.intel.com> > Signed-off-by: Dawid Osuchowski <dawid.osuchowski@linux.intel.com> > Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com> > Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com> > Link: https://www.intel.com/content/www/us/en/content-details/613875/intel-ethernet-controller-e810-datasheet.html [1] > --- > drivers/net/ethernet/intel/ice/ice_common.c | 1 + > drivers/net/ethernet/intel/ice/ice_ethtool.c | 35 ++++++++------------ > 2 files changed, 15 insertions(+), 21 deletions(-) > > diff --git a/drivers/net/ethernet/intel/ice/ice_common.c b/drivers/net/ethernet/intel/ice/ice_common.c > index aab00c44e9b2..26eb8e05498b 100644 > --- a/drivers/net/ethernet/intel/ice/ice_common.c > +++ b/drivers/net/ethernet/intel/ice/ice_common.c > @@ -1854,6 +1854,7 @@ static bool ice_should_retry_sq_send_cmd(u16 opcode) > case ice_aqc_opc_lldp_stop: > case ice_aqc_opc_lldp_start: > case ice_aqc_opc_lldp_filter_ctrl: > + case ice_aqc_opc_sff_eeprom: > return true; > } > > diff --git a/drivers/net/ethernet/intel/ice/ice_ethtool.c b/drivers/net/ethernet/intel/ice/ice_ethtool.c > index 3565a5d96c6d..478876908db1 100644 > --- a/drivers/net/ethernet/intel/ice/ice_ethtool.c > +++ b/drivers/net/ethernet/intel/ice/ice_ethtool.c > @@ -4496,7 +4496,7 @@ ice_get_module_eeprom(struct net_device *netdev, > u8 addr = ICE_I2C_EEPROM_DEV_ADDR; > struct ice_hw *hw = &pf->hw; > bool is_sfp = false; > - unsigned int i, j; > + unsigned int i; > u16 offset = 0; > u8 page = 0; > int status; > @@ -4538,26 +4538,19 @@ ice_get_module_eeprom(struct net_device *netdev, > if (page == 0 || !(data[0x2] & 0x4)) { > u32 copy_len; > > - /* If i2c bus is busy due to slow page change or > - * link management access, call can fail. This is normal. > - * So we retry this a few times. > - */ > - for (j = 0; j < 4; j++) { > - status = ice_aq_sff_eeprom(hw, 0, addr, offset, page, > - !is_sfp, value, > - SFF_READ_BLOCK_SIZE, > - 0, NULL); > - netdev_dbg(netdev, "SFF %02X %02X %02X %X = %02X%02X%02X%02X.%02X%02X%02X%02X (%X)\n", > - addr, offset, page, is_sfp, > - value[0], value[1], value[2], value[3], > - value[4], value[5], value[6], value[7], > - status); > - if (status) { > - usleep_range(1500, 2500); > - memset(value, 0, SFF_READ_BLOCK_SIZE); > - continue; > - } > - break; > + status = ice_aq_sff_eeprom(hw, 0, addr, offset, page, > + !is_sfp, value, > + SFF_READ_BLOCK_SIZE, > + 0, NULL); > + netdev_dbg(netdev, "SFF %02X %02X %02X %X = %02X%02X%02X%02X.%02X%02X%02X%02X (%pe)\n", > + addr, offset, page, is_sfp, > + value[0], value[1], value[2], value[3], > + value[4], value[5], value[6], value[7], > + ERR_PTR(status)); > + if (status) { > + netdev_err(netdev, "%s: error reading module EEPROM: status %pe\n", > + __func__, ERR_PTR(status)); > + return status; > } > > /* Make sure we have enough room for the new block */ Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de> Kind regards, Paul ^ permalink raw reply [flat|nested] 7+ messages in thread
* RE: [Intel-wired-lan] [PATCH iwl-net 2/2] ice: fix retry for AQ command 0x06EE 2026-01-13 19:38 ` [PATCH iwl-net 2/2] ice: fix retry for AQ command 0x06EE Dawid Osuchowski 2026-01-14 9:16 ` [Intel-wired-lan] " Paul Menzel @ 2026-02-27 6:06 ` Rinitha, SX 1 sibling, 0 replies; 7+ messages in thread From: Rinitha, SX @ 2026-02-27 6:06 UTC (permalink / raw) To: Dawid Osuchowski, intel-wired-lan@lists.osuosl.org Cc: netdev@vger.kernel.org, Jakub Staniszewski, stable@vger.kernel.org, Loktionov, Aleksandr, Kitszel, Przemyslaw > -----Original Message----- > From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of Dawid Osuchowski > Sent: 14 January 2026 01:08 > To: intel-wired-lan@lists.osuosl.org > Cc: netdev@vger.kernel.org; Jakub Staniszewski <jakub.staniszewski@linux.intel.com>; stable@vger.kernel.org; Dawid Osuchowski <dawid.osuchowski@linux.intel.com>; Loktionov, Aleksandr <aleksandr.loktionov@intel.com>; Kitszel, Przemyslaw <przemyslaw.kitszel@intel.com> > Subject: [Intel-wired-lan] [PATCH iwl-net 2/2] ice: fix retry for AQ command 0x06EE > > From: Jakub Staniszewski <jakub.staniszewski@linux.intel.com> > > Executing ethtool -m can fail reporting a netlink I/O error while firmware link management holds the i2c bus used to communicate with the module. > > According to Intel(R) Ethernet Controller E810 Datasheet Rev 2.8 [1] Section 3.3.10.4 Read/Write SFF EEPROM (0x06EE) request should to be retried upon receiving EBUSY from firmware. > > Commit e9c9692c8a81 ("ice: Reimplement module reads used by ethtool") implemented it only for part of ice_get_module_eeprom(), leaving all other calls to ice_aq_sff_eeprom() vulnerable to returning early on getting EBUSY without retrying. > > Remove the retry loop from ice_get_module_eeprom() and add Admin Queue (AQ) command with opcode 0x06EE to the list of commands that should be retried on receiving EBUSY from firmware. > > Cc: stable@vger.kernel.org > Fixes: e9c9692c8a81 ("ice: Reimplement module reads used by ethtool") > Signed-off-by: Jakub Staniszewski <jakub.staniszewski@linux.intel.com> > Co-developed-by: Dawid Osuchowski <dawid.osuchowski@linux.intel.com> > Signed-off-by: Dawid Osuchowski <dawid.osuchowski@linux.intel.com> > Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com> > Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com> > Link: https://www.intel.com/content/www/us/en/content-details/613875/intel-ethernet-controller-e810-datasheet.html [1] > --- > drivers/net/ethernet/intel/ice/ice_common.c | 1 + drivers/net/ethernet/intel/ice/ice_ethtool.c | 35 ++++++++------------ > 2 files changed, 15 insertions(+), 21 deletions(-) > Tested-by: Rinitha S <sx.rinitha@intel.com> (A Contingent worker at Intel) ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-02-27 6:06 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20260113193817.582-1-dawid.osuchowski@linux.intel.com>
2026-01-13 19:38 ` [PATCH iwl-net 1/2] ice: reintroduce retry mechanism for indirect AQ Dawid Osuchowski
2026-01-13 22:31 ` [Intel-wired-lan] " Paul Menzel
2026-01-14 8:15 ` Dawid Osuchowski
2026-02-27 6:05 ` Rinitha, SX
2026-01-13 19:38 ` [PATCH iwl-net 2/2] ice: fix retry for AQ command 0x06EE Dawid Osuchowski
2026-01-14 9:16 ` [Intel-wired-lan] " Paul Menzel
2026-02-27 6:06 ` Rinitha, SX
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox