sfc: on MC reset, clear PIO buffer linkage in TXQs
Subsystems (3)
PATCH 1/1 sfc: on MC reset, clear PIO buffer linkage in TXQs
Otherwise, if we fail to allocate new PIO buffers, our TXQs will try to use the old ones, which aren't there any more.
Fixes 183233bec810 "sfc: Allocate and link PIO buffers; map them with write-combining"
Signed-off-by Edward Cree <[email protected]>
--- drivers/net/ethernet/sfc/ef10.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)
drivers/net/ethernet/sfc/ef10.c +16 -0
@@ -619,6 +619,17 @@ fail: return rc; } +static void efx_ef10_forget_old_piobufs (struct efx_nic *efx) +{ +struct efx_channel *channel; +struct efx_tx_queue *tx_queue; + +/* All our existing PIO buffers went away */ +efx_for_each_channel (channel, efx) +efx_for_each_channel_tx_queue (tx_queue, channel) + tx_queue->piobuf =NULL ; +} +#else /* !EFX_USE_PIO */ static int efx_ef10_alloc_piobufs (struct efx_nic *efx,unsigned int n)
@@ -635,6 +646,10 @@ static void efx_ef10_free_piobufs(struct efx_nic *efx) { } +static void efx_ef10_forget_old_piobufs (struct efx_nic *efx) +{ +} +#endif /* EFX_USE_PIO */ static void efx_ef10_remove (struct efx_nic *efx)
@@ -1018,6 +1033,7 @@ static void efx_ef10_reset_mc_allocations(struct efx_nic *efx) nic_data->must_realloc_vis = true; nic_data->must_restore_filters = true; nic_data->must_restore_piobufs = true; +efx_ef10_forget_old_piobufs (efx); nic_data->rx_rss_context =EFX_EF10_RSS_CONTEXT_INVALID ;/* Driver-created vswitches and vports must be re-created */
David Miller
maintainerFrom: Edward Cree <[email protected]>
Date: Tue, 24 May 2016 18:53:36 +0100
Quoted 5 lines
Otherwise, if we fail to allocate new PIO buffers, our TXQs will try to use the old ones, which aren't there any more.
Fixes 183233bec810 "sfc: Allocate and link PIO buffers; map them with write-combining"Signed-off-by Edward Cree <[email protected]>
Applied and queued up for -stable.