summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/e1000e
diff options
context:
space:
mode:
authorAlexander Lobakin <aleksander.lobakin@intel.com>2024-05-23 10:45:29 -0700
committerJakub Kicinski <kuba@kernel.org>2024-05-27 17:11:43 -0700
commitd514c8b54209de7a95ab37259fe32c7406976bd9 (patch)
treeaed85382b94ba3cac3cf253ba4d51fbc5defda8e /drivers/net/ethernet/intel/e1000e
parent266aa3b4812e97942a8ce5c7aafa7da059f7b5b8 (diff)
downloadlinux-stable-d514c8b54209de7a95ab37259fe32c7406976bd9.tar.gz
linux-stable-d514c8b54209de7a95ab37259fe32c7406976bd9.tar.bz2
linux-stable-d514c8b54209de7a95ab37259fe32c7406976bd9.zip
idpf: don't enable NAPI and interrupts prior to allocating Rx buffers
Currently, idpf enables NAPI and interrupts prior to allocating Rx buffers. This may lead to frame loss (there are no buffers to place incoming frames) and even crashes on quick ifup-ifdown. Interrupts must be enabled only after all the resources are here and available. Split interrupt init into two phases: initialization and enabling, and perform the second only after the queues are fully initialized. Note that we can't just move interrupt initialization down the init process, as the queues must have correct a ::q_vector pointer set and NAPI already added in order to allocate buffers correctly. Also, during the deinit process, disable HW interrupts first and only then disable NAPI. Otherwise, there can be a HW event leading to napi_schedule(), but the NAPI will already be unavailable. Fixes: d4d558718266 ("idpf: initialize interrupts and enable vport") Reported-by: Michal Kubiak <michal.kubiak@intel.com> Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com> Signed-off-by: Alexander Lobakin <aleksander.lobakin@intel.com> Reviewed-by: Simon Horman <horms@kernel.org> Tested-by: Krishneil Singh <krishneil.k.singh@intel.com> Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> Link: https://lore.kernel.org/r/20240523-net-2024-05-23-intel-net-fixes-v1-1-17a923e0bb5f@intel.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'drivers/net/ethernet/intel/e1000e')
0 files changed, 0 insertions, 0 deletions