Commit 5a55a72a authored by Daniel Pieczko's avatar Daniel Pieczko Committed by David S. Miller

sfc: warn if other functions have been reset by MCFW

When enabling the workaround for cascaded multicast filters, the MC
 can reset other functions if they have already inserted filters.
 In that case, the workaround has been enabled, but print an info
 message in the log recording that other functions had to be reset.

As other functions were reset, the MC will have incremented its boot
 count, so also increment the warm_boot_count on the function which
 enabled the workaround, as that function won't have received an MC
 reboot event and does not need to reset.
Signed-off-by: default avatarEdward Cree <ecree@solarflare.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 34ccfe6f
...@@ -2291,15 +2291,26 @@ static int efx_ef10_ev_init(struct efx_channel *channel) ...@@ -2291,15 +2291,26 @@ static int efx_ef10_ev_init(struct efx_channel *channel)
if (implemented & MC_CMD_GET_WORKAROUNDS_OUT_BUG26807 && if (implemented & MC_CMD_GET_WORKAROUNDS_OUT_BUG26807 &&
!nic_data->workaround_26807) { !nic_data->workaround_26807) {
unsigned int flags;
rc = efx_mcdi_set_workaround(efx, rc = efx_mcdi_set_workaround(efx,
MC_CMD_WORKAROUND_BUG26807, MC_CMD_WORKAROUND_BUG26807,
true, NULL); true, &flags);
if (!rc)
if (!rc) {
if (flags &
1 << MC_CMD_WORKAROUND_EXT_OUT_FLR_DONE_LBN) {
netif_info(efx, drv, efx->net_dev,
"other functions on NIC have been reset\n");
/* MC's boot count has incremented */
++nic_data->warm_boot_count;
}
nic_data->workaround_26807 = true; nic_data->workaround_26807 = true;
else if (rc == -EPERM) } else if (rc == -EPERM) {
rc = 0; rc = 0;
} }
} }
}
if (!rc) if (!rc)
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment