igbvf: add PCI reset handler functions
authorDawid Wesierski <dawidx.wesierski@intel.com>
Wed, 1 Mar 2023 10:57:05 +0000 (11:57 +0100)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Tue, 21 Mar 2023 18:37:16 +0000 (11:37 -0700)
commit5a9b7bfb0d15e0877115b8fa6992ebc59855c5d7
tree6f122cfff5284c356e787e6133624ca569b4f1c3
parentd71980d47e270a7dffef4f3541d550cbde686d9a
igbvf: add PCI reset handler functions

There was a problem with resuming ping after conducting a PCI reset.
This commit adds two functions, igbvf_io_prepare and igbvf_io_done,
which, after being added to the pci_error_handlers struct,
will prepare the drivers for a PCI reset and then bring the interface up
and reset it after. This will prevent the driver from ending up in
incorrect state. Test_and_set_bit is highly reliable in this context,
so we are not including a timeout in this commit

This introduces 900ms - 1100ms of overhead to this operation but it's in
non-time-critical flow. And also allows the driver to continue
functioning after the reset.

Functionality documented in ethernet-controller-i350-datasheet 4.2.1.3
https://www.intel.com/content/www/us/en/products/details/ethernet/gigabit-controllers/i350-controllers/docs.html

Signed-off-by: Dawid Wesierski <dawidx.wesierski@intel.com>
Signed-off-by: Kamil Maziarz <kamil.maziarz@intel.com>
Reviewed-by: Michal Kubiak <michal.kubiak@intel.com>
Tested-by: Marek Szlosek <marek.szlosek@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/igbvf/netdev.c