|
@@ -25,6 +25,8 @@
|
|
|
#include "i40e_prototype.h"
|
|
|
static int i40evf_setup_all_tx_resources(struct i40evf_adapter *adapter);
|
|
|
static int i40evf_setup_all_rx_resources(struct i40evf_adapter *adapter);
|
|
|
+static void i40evf_free_all_tx_resources(struct i40evf_adapter *adapter);
|
|
|
+static void i40evf_free_all_rx_resources(struct i40evf_adapter *adapter);
|
|
|
static int i40evf_close(struct net_device *netdev);
|
|
|
|
|
|
char i40evf_driver_name[] = "i40evf";
|
|
@@ -1534,9 +1536,13 @@ static void i40evf_reset_task(struct work_struct *work)
|
|
|
rstat_val);
|
|
|
adapter->flags |= I40EVF_FLAG_PF_COMMS_FAILED;
|
|
|
|
|
|
- if (netif_running(adapter->netdev))
|
|
|
- i40evf_close(adapter->netdev);
|
|
|
-
|
|
|
+ if (netif_running(adapter->netdev)) {
|
|
|
+ set_bit(__I40E_DOWN, &adapter->vsi.state);
|
|
|
+ i40evf_down(adapter);
|
|
|
+ i40evf_free_traffic_irqs(adapter);
|
|
|
+ i40evf_free_all_tx_resources(adapter);
|
|
|
+ i40evf_free_all_rx_resources(adapter);
|
|
|
+ }
|
|
|
i40evf_free_misc_irq(adapter);
|
|
|
i40evf_reset_interrupt_capability(adapter);
|
|
|
i40evf_free_queues(adapter);
|