aboutsummaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/sfc/ef10.c
diff options
context:
space:
mode:
authorDaniel Pieczko2015-07-21 15:10:02 +0100
committerDavid S. Miller2015-07-21 22:21:32 -0700
commit5a55a72abe48e5d6c0ec86e7b06cd73ab7d517c8 (patch)
tree07cdd6b6c235c8a05c2066ccf2fb7e2bbc1c6b1f /drivers/net/ethernet/sfc/ef10.c
parent34ccfe6f8abd9ce7ea70e68f130cc6618737269f (diff)
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: Edward Cree <ecree@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/sfc/ef10.c')
-rw-r--r--drivers/net/ethernet/sfc/ef10.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/drivers/net/ethernet/sfc/ef10.c b/drivers/net/ethernet/sfc/ef10.c
index 2b93f63a0421..18d6388fb5da 100644
--- a/drivers/net/ethernet/sfc/ef10.c
+++ b/drivers/net/ethernet/sfc/ef10.c
@@ -2291,13 +2291,24 @@ static int efx_ef10_ev_init(struct efx_channel *channel)
if (implemented & MC_CMD_GET_WORKAROUNDS_OUT_BUG26807 &&
!nic_data->workaround_26807) {
+ unsigned int flags;
+
rc = efx_mcdi_set_workaround(efx,
MC_CMD_WORKAROUND_BUG26807,
- true, NULL);
- if (!rc)
+ true, &flags);
+
+ 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;
- else if (rc == -EPERM)
+ } else if (rc == -EPERM) {
rc = 0;
+ }
}
}