|
@@ -295,8 +295,8 @@ struct i40e_vsi *i40e_find_vsi_from_id(struct i40e_pf *pf, u16 id)
|
|
|
**/
|
|
|
void i40e_service_event_schedule(struct i40e_pf *pf)
|
|
|
{
|
|
|
- if (!test_bit(__I40E_DOWN, &pf->state) &&
|
|
|
- !test_bit(__I40E_RESET_RECOVERY_PENDING, &pf->state))
|
|
|
+ if (!test_bit(__I40E_VSI_DOWN, pf->state) &&
|
|
|
+ !test_bit(__I40E_RESET_RECOVERY_PENDING, pf->state))
|
|
|
queue_work(i40e_wq, &pf->service_task);
|
|
|
}
|
|
|
|
|
@@ -377,13 +377,13 @@ static void i40e_tx_timeout(struct net_device *netdev)
|
|
|
|
|
|
switch (pf->tx_timeout_recovery_level) {
|
|
|
case 1:
|
|
|
- set_bit(__I40E_PF_RESET_REQUESTED, &pf->state);
|
|
|
+ set_bit(__I40E_PF_RESET_REQUESTED, pf->state);
|
|
|
break;
|
|
|
case 2:
|
|
|
- set_bit(__I40E_CORE_RESET_REQUESTED, &pf->state);
|
|
|
+ set_bit(__I40E_CORE_RESET_REQUESTED, pf->state);
|
|
|
break;
|
|
|
case 3:
|
|
|
- set_bit(__I40E_GLOBAL_RESET_REQUESTED, &pf->state);
|
|
|
+ set_bit(__I40E_GLOBAL_RESET_REQUESTED, pf->state);
|
|
|
break;
|
|
|
default:
|
|
|
netdev_err(netdev, "tx_timeout recovery unsuccessful\n");
|
|
@@ -422,7 +422,7 @@ static void i40e_get_netdev_stats_struct(struct net_device *netdev,
|
|
|
struct rtnl_link_stats64 *vsi_stats = i40e_get_vsi_stats_struct(vsi);
|
|
|
int i;
|
|
|
|
|
|
- if (test_bit(__I40E_VSI_DOWN, &vsi->state))
|
|
|
+ if (test_bit(__I40E_VSI_DOWN, vsi->state))
|
|
|
return;
|
|
|
|
|
|
if (!vsi->tx_rings)
|
|
@@ -753,8 +753,8 @@ static void i40e_update_vsi_stats(struct i40e_vsi *vsi)
|
|
|
u64 tx_p, tx_b;
|
|
|
u16 q;
|
|
|
|
|
|
- if (test_bit(__I40E_VSI_DOWN, &vsi->state) ||
|
|
|
- test_bit(__I40E_CONFIG_BUSY, &pf->state))
|
|
|
+ if (test_bit(__I40E_VSI_DOWN, vsi->state) ||
|
|
|
+ test_bit(__I40E_CONFIG_BUSY, pf->state))
|
|
|
return;
|
|
|
|
|
|
ns = i40e_get_vsi_stats_struct(vsi);
|
|
@@ -1346,7 +1346,7 @@ struct i40e_mac_filter *i40e_add_filter(struct i40e_vsi *vsi,
|
|
|
* to failed, so we don't bother to try sending the filter
|
|
|
* to the hardware.
|
|
|
*/
|
|
|
- if (test_bit(__I40E_VSI_OVERFLOW_PROMISC, &vsi->state))
|
|
|
+ if (test_bit(__I40E_VSI_OVERFLOW_PROMISC, vsi->state))
|
|
|
f->state = I40E_FILTER_FAILED;
|
|
|
else
|
|
|
f->state = I40E_FILTER_NEW;
|
|
@@ -1525,8 +1525,8 @@ static int i40e_set_mac(struct net_device *netdev, void *p)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
- if (test_bit(__I40E_VSI_DOWN, &vsi->back->state) ||
|
|
|
- test_bit(__I40E_RESET_RECOVERY_PENDING, &vsi->back->state))
|
|
|
+ if (test_bit(__I40E_VSI_DOWN, vsi->back->state) ||
|
|
|
+ test_bit(__I40E_RESET_RECOVERY_PENDING, vsi->back->state))
|
|
|
return -EADDRNOTAVAIL;
|
|
|
|
|
|
if (ether_addr_equal(hw->mac.addr, addr->sa_data))
|
|
@@ -1920,7 +1920,7 @@ void i40e_aqc_add_filters(struct i40e_vsi *vsi, const char *vsi_name,
|
|
|
|
|
|
if (fcnt != num_add) {
|
|
|
*promisc_changed = true;
|
|
|
- set_bit(__I40E_VSI_OVERFLOW_PROMISC, &vsi->state);
|
|
|
+ set_bit(__I40E_VSI_OVERFLOW_PROMISC, vsi->state);
|
|
|
dev_warn(&vsi->back->pdev->dev,
|
|
|
"Error %s adding RX filters on %s, promiscuous mode forced on\n",
|
|
|
i40e_aq_str(hw, aq_err),
|
|
@@ -2003,7 +2003,7 @@ int i40e_sync_vsi_filters(struct i40e_vsi *vsi)
|
|
|
struct i40e_aqc_add_macvlan_element_data *add_list;
|
|
|
struct i40e_aqc_remove_macvlan_element_data *del_list;
|
|
|
|
|
|
- while (test_and_set_bit(__I40E_VSI_SYNCING_FILTERS, &vsi->state))
|
|
|
+ while (test_and_set_bit(__I40E_VSI_SYNCING_FILTERS, vsi->state))
|
|
|
usleep_range(1000, 2000);
|
|
|
pf = vsi->back;
|
|
|
|
|
@@ -2140,7 +2140,7 @@ int i40e_sync_vsi_filters(struct i40e_vsi *vsi)
|
|
|
num_add = 0;
|
|
|
hlist_for_each_entry_safe(new, h, &tmp_add_list, hlist) {
|
|
|
if (test_bit(__I40E_VSI_OVERFLOW_PROMISC,
|
|
|
- &vsi->state)) {
|
|
|
+ vsi->state)) {
|
|
|
new->state = I40E_FILTER_FAILED;
|
|
|
continue;
|
|
|
}
|
|
@@ -2227,20 +2227,20 @@ int i40e_sync_vsi_filters(struct i40e_vsi *vsi)
|
|
|
* safely exit if we didn't just enter, we no longer have any failed
|
|
|
* filters, and we have reduced filters below the threshold value.
|
|
|
*/
|
|
|
- if (test_bit(__I40E_VSI_OVERFLOW_PROMISC, &vsi->state) &&
|
|
|
+ if (test_bit(__I40E_VSI_OVERFLOW_PROMISC, vsi->state) &&
|
|
|
!promisc_changed && !failed_filters &&
|
|
|
(vsi->active_filters < vsi->promisc_threshold)) {
|
|
|
dev_info(&pf->pdev->dev,
|
|
|
"filter logjam cleared on %s, leaving overflow promiscuous mode\n",
|
|
|
vsi_name);
|
|
|
- clear_bit(__I40E_VSI_OVERFLOW_PROMISC, &vsi->state);
|
|
|
+ clear_bit(__I40E_VSI_OVERFLOW_PROMISC, vsi->state);
|
|
|
promisc_changed = true;
|
|
|
vsi->promisc_threshold = 0;
|
|
|
}
|
|
|
|
|
|
/* if the VF is not trusted do not do promisc */
|
|
|
if ((vsi->type == I40E_VSI_SRIOV) && !pf->vf[vsi->vf_id].trusted) {
|
|
|
- clear_bit(__I40E_VSI_OVERFLOW_PROMISC, &vsi->state);
|
|
|
+ clear_bit(__I40E_VSI_OVERFLOW_PROMISC, vsi->state);
|
|
|
goto out;
|
|
|
}
|
|
|
|
|
@@ -2265,12 +2265,12 @@ int i40e_sync_vsi_filters(struct i40e_vsi *vsi)
|
|
|
}
|
|
|
if ((changed_flags & IFF_PROMISC) ||
|
|
|
(promisc_changed &&
|
|
|
- test_bit(__I40E_VSI_OVERFLOW_PROMISC, &vsi->state))) {
|
|
|
+ test_bit(__I40E_VSI_OVERFLOW_PROMISC, vsi->state))) {
|
|
|
bool cur_promisc;
|
|
|
|
|
|
cur_promisc = (!!(vsi->current_netdev_flags & IFF_PROMISC) ||
|
|
|
test_bit(__I40E_VSI_OVERFLOW_PROMISC,
|
|
|
- &vsi->state));
|
|
|
+ vsi->state));
|
|
|
if ((vsi->type == I40E_VSI_MAIN) &&
|
|
|
(pf->lan_veb != I40E_NO_VEB) &&
|
|
|
!(pf->flags & I40E_FLAG_MFP_ENABLED)) {
|
|
@@ -2353,7 +2353,7 @@ out:
|
|
|
if (retval)
|
|
|
vsi->flags |= I40E_VSI_FLAG_FILTER_CHANGED;
|
|
|
|
|
|
- clear_bit(__I40E_VSI_SYNCING_FILTERS, &vsi->state);
|
|
|
+ clear_bit(__I40E_VSI_SYNCING_FILTERS, vsi->state);
|
|
|
return retval;
|
|
|
|
|
|
err_no_memory:
|
|
@@ -2365,7 +2365,7 @@ err_no_memory_locked:
|
|
|
spin_unlock_bh(&vsi->mac_filter_hash_lock);
|
|
|
|
|
|
vsi->flags |= I40E_VSI_FLAG_FILTER_CHANGED;
|
|
|
- clear_bit(__I40E_VSI_SYNCING_FILTERS, &vsi->state);
|
|
|
+ clear_bit(__I40E_VSI_SYNCING_FILTERS, vsi->state);
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
|
|
@@ -3611,29 +3611,29 @@ static irqreturn_t i40e_intr(int irq, void *data)
|
|
|
* this is not a performance path and napi_schedule()
|
|
|
* can deal with rescheduling.
|
|
|
*/
|
|
|
- if (!test_bit(__I40E_DOWN, &pf->state))
|
|
|
+ if (!test_bit(__I40E_VSI_DOWN, pf->state))
|
|
|
napi_schedule_irqoff(&q_vector->napi);
|
|
|
}
|
|
|
|
|
|
if (icr0 & I40E_PFINT_ICR0_ADMINQ_MASK) {
|
|
|
ena_mask &= ~I40E_PFINT_ICR0_ENA_ADMINQ_MASK;
|
|
|
- set_bit(__I40E_ADMINQ_EVENT_PENDING, &pf->state);
|
|
|
+ set_bit(__I40E_ADMINQ_EVENT_PENDING, pf->state);
|
|
|
i40e_debug(&pf->hw, I40E_DEBUG_NVM, "AdminQ event\n");
|
|
|
}
|
|
|
|
|
|
if (icr0 & I40E_PFINT_ICR0_MAL_DETECT_MASK) {
|
|
|
ena_mask &= ~I40E_PFINT_ICR0_ENA_MAL_DETECT_MASK;
|
|
|
- set_bit(__I40E_MDD_EVENT_PENDING, &pf->state);
|
|
|
+ set_bit(__I40E_MDD_EVENT_PENDING, pf->state);
|
|
|
}
|
|
|
|
|
|
if (icr0 & I40E_PFINT_ICR0_VFLR_MASK) {
|
|
|
ena_mask &= ~I40E_PFINT_ICR0_ENA_VFLR_MASK;
|
|
|
- set_bit(__I40E_VFLR_EVENT_PENDING, &pf->state);
|
|
|
+ set_bit(__I40E_VFLR_EVENT_PENDING, pf->state);
|
|
|
}
|
|
|
|
|
|
if (icr0 & I40E_PFINT_ICR0_GRST_MASK) {
|
|
|
- if (!test_bit(__I40E_RESET_RECOVERY_PENDING, &pf->state))
|
|
|
- set_bit(__I40E_RESET_INTR_RECEIVED, &pf->state);
|
|
|
+ if (!test_bit(__I40E_RESET_RECOVERY_PENDING, pf->state))
|
|
|
+ set_bit(__I40E_RESET_INTR_RECEIVED, pf->state);
|
|
|
ena_mask &= ~I40E_PFINT_ICR0_ENA_GRST_MASK;
|
|
|
val = rd32(hw, I40E_GLGEN_RSTAT);
|
|
|
val = (val & I40E_GLGEN_RSTAT_RESET_TYPE_MASK)
|
|
@@ -3644,7 +3644,7 @@ static irqreturn_t i40e_intr(int irq, void *data)
|
|
|
pf->globr_count++;
|
|
|
} else if (val == I40E_RESET_EMPR) {
|
|
|
pf->empr_count++;
|
|
|
- set_bit(__I40E_EMP_RESET_INTR_RECEIVED, &pf->state);
|
|
|
+ set_bit(__I40E_EMP_RESET_INTR_RECEIVED, pf->state);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -3677,7 +3677,7 @@ static irqreturn_t i40e_intr(int irq, void *data)
|
|
|
(icr0_remaining & I40E_PFINT_ICR0_PCI_EXCEPTION_MASK) ||
|
|
|
(icr0_remaining & I40E_PFINT_ICR0_ECC_ERR_MASK)) {
|
|
|
dev_info(&pf->pdev->dev, "device will be reset\n");
|
|
|
- set_bit(__I40E_PF_RESET_REQUESTED, &pf->state);
|
|
|
+ set_bit(__I40E_PF_RESET_REQUESTED, pf->state);
|
|
|
i40e_service_event_schedule(pf);
|
|
|
}
|
|
|
ena_mask &= ~icr0_remaining;
|
|
@@ -3687,7 +3687,7 @@ static irqreturn_t i40e_intr(int irq, void *data)
|
|
|
enable_intr:
|
|
|
/* re-enable interrupt causes */
|
|
|
wr32(hw, I40E_PFINT_ICR0_ENA, ena_mask);
|
|
|
- if (!test_bit(__I40E_DOWN, &pf->state)) {
|
|
|
+ if (!test_bit(__I40E_VSI_DOWN, pf->state)) {
|
|
|
i40e_service_event_schedule(pf);
|
|
|
i40e_irq_dynamic_enable_icr0(pf, false);
|
|
|
}
|
|
@@ -3907,7 +3907,7 @@ static void i40e_netpoll(struct net_device *netdev)
|
|
|
int i;
|
|
|
|
|
|
/* if interface is down do nothing */
|
|
|
- if (test_bit(__I40E_VSI_DOWN, &vsi->state))
|
|
|
+ if (test_bit(__I40E_VSI_DOWN, vsi->state))
|
|
|
return;
|
|
|
|
|
|
if (pf->flags & I40E_FLAG_MSIX_ENABLED) {
|
|
@@ -4144,7 +4144,7 @@ int i40e_vsi_start_rings(struct i40e_vsi *vsi)
|
|
|
void i40e_vsi_stop_rings(struct i40e_vsi *vsi)
|
|
|
{
|
|
|
/* When port TX is suspended, don't wait */
|
|
|
- if (test_bit(__I40E_PORT_SUSPENDED, &vsi->back->state))
|
|
|
+ if (test_bit(__I40E_PORT_SUSPENDED, vsi->back->state))
|
|
|
return i40e_vsi_stop_rings_no_wait(vsi);
|
|
|
|
|
|
/* do rx first for enable and last for disable
|
|
@@ -4436,14 +4436,14 @@ static void i40e_napi_disable_all(struct i40e_vsi *vsi)
|
|
|
static void i40e_vsi_close(struct i40e_vsi *vsi)
|
|
|
{
|
|
|
struct i40e_pf *pf = vsi->back;
|
|
|
- if (!test_and_set_bit(__I40E_VSI_DOWN, &vsi->state))
|
|
|
+ if (!test_and_set_bit(__I40E_VSI_DOWN, vsi->state))
|
|
|
i40e_down(vsi);
|
|
|
i40e_vsi_free_irq(vsi);
|
|
|
i40e_vsi_free_tx_resources(vsi);
|
|
|
i40e_vsi_free_rx_resources(vsi);
|
|
|
vsi->current_netdev_flags = 0;
|
|
|
pf->flags |= I40E_FLAG_SERVICE_CLIENT_REQUESTED;
|
|
|
- if (test_bit(__I40E_RESET_RECOVERY_PENDING, &pf->state))
|
|
|
+ if (test_bit(__I40E_RESET_RECOVERY_PENDING, pf->state))
|
|
|
pf->flags |= I40E_FLAG_CLIENT_RESET;
|
|
|
}
|
|
|
|
|
@@ -4453,10 +4453,10 @@ static void i40e_vsi_close(struct i40e_vsi *vsi)
|
|
|
**/
|
|
|
static void i40e_quiesce_vsi(struct i40e_vsi *vsi)
|
|
|
{
|
|
|
- if (test_bit(__I40E_VSI_DOWN, &vsi->state))
|
|
|
+ if (test_bit(__I40E_VSI_DOWN, vsi->state))
|
|
|
return;
|
|
|
|
|
|
- set_bit(__I40E_VSI_NEEDS_RESTART, &vsi->state);
|
|
|
+ set_bit(__I40E_VSI_NEEDS_RESTART, vsi->state);
|
|
|
if (vsi->netdev && netif_running(vsi->netdev))
|
|
|
vsi->netdev->netdev_ops->ndo_stop(vsi->netdev);
|
|
|
else
|
|
@@ -4469,7 +4469,7 @@ static void i40e_quiesce_vsi(struct i40e_vsi *vsi)
|
|
|
**/
|
|
|
static void i40e_unquiesce_vsi(struct i40e_vsi *vsi)
|
|
|
{
|
|
|
- if (!test_and_clear_bit(__I40E_VSI_NEEDS_RESTART, &vsi->state))
|
|
|
+ if (!test_and_clear_bit(__I40E_VSI_NEEDS_RESTART, vsi->state))
|
|
|
return;
|
|
|
|
|
|
if (vsi->netdev && netif_running(vsi->netdev))
|
|
@@ -4637,8 +4637,8 @@ static void i40e_detect_recover_hung(struct i40e_pf *pf)
|
|
|
return;
|
|
|
|
|
|
/* Make sure, VSI state is not DOWN/RECOVERY_PENDING */
|
|
|
- if (test_bit(__I40E_VSI_DOWN, &vsi->back->state) ||
|
|
|
- test_bit(__I40E_RESET_RECOVERY_PENDING, &vsi->back->state))
|
|
|
+ if (test_bit(__I40E_VSI_DOWN, vsi->back->state) ||
|
|
|
+ test_bit(__I40E_RESET_RECOVERY_PENDING, vsi->back->state))
|
|
|
return;
|
|
|
|
|
|
/* Make sure type is MAIN VSI */
|
|
@@ -5185,7 +5185,7 @@ static int i40e_resume_port_tx(struct i40e_pf *pf)
|
|
|
i40e_stat_str(&pf->hw, ret),
|
|
|
i40e_aq_str(&pf->hw, pf->hw.aq.asq_last_status));
|
|
|
/* Schedule PF reset to recover */
|
|
|
- set_bit(__I40E_PF_RESET_REQUESTED, &pf->state);
|
|
|
+ set_bit(__I40E_PF_RESET_REQUESTED, pf->state);
|
|
|
i40e_service_event_schedule(pf);
|
|
|
}
|
|
|
|
|
@@ -5353,7 +5353,7 @@ static int i40e_up_complete(struct i40e_vsi *vsi)
|
|
|
if (err)
|
|
|
return err;
|
|
|
|
|
|
- clear_bit(__I40E_VSI_DOWN, &vsi->state);
|
|
|
+ clear_bit(__I40E_VSI_DOWN, vsi->state);
|
|
|
i40e_napi_enable_all(vsi);
|
|
|
i40e_vsi_enable_irq(vsi);
|
|
|
|
|
@@ -5402,12 +5402,12 @@ static void i40e_vsi_reinit_locked(struct i40e_vsi *vsi)
|
|
|
struct i40e_pf *pf = vsi->back;
|
|
|
|
|
|
WARN_ON(in_interrupt());
|
|
|
- while (test_and_set_bit(__I40E_CONFIG_BUSY, &pf->state))
|
|
|
+ while (test_and_set_bit(__I40E_CONFIG_BUSY, pf->state))
|
|
|
usleep_range(1000, 2000);
|
|
|
i40e_down(vsi);
|
|
|
|
|
|
i40e_up(vsi);
|
|
|
- clear_bit(__I40E_CONFIG_BUSY, &pf->state);
|
|
|
+ clear_bit(__I40E_CONFIG_BUSY, pf->state);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -5540,8 +5540,8 @@ int i40e_open(struct net_device *netdev)
|
|
|
int err;
|
|
|
|
|
|
/* disallow open during test or if eeprom is broken */
|
|
|
- if (test_bit(__I40E_TESTING, &pf->state) ||
|
|
|
- test_bit(__I40E_BAD_EEPROM, &pf->state))
|
|
|
+ if (test_bit(__I40E_TESTING, pf->state) ||
|
|
|
+ test_bit(__I40E_BAD_EEPROM, pf->state))
|
|
|
return -EBUSY;
|
|
|
|
|
|
netif_carrier_off(netdev);
|
|
@@ -5787,7 +5787,7 @@ void i40e_do_reset(struct i40e_pf *pf, u32 reset_flags, bool lock_acquired)
|
|
|
|
|
|
if (vsi != NULL &&
|
|
|
test_and_clear_bit(__I40E_VSI_REINIT_REQUESTED,
|
|
|
- &vsi->state))
|
|
|
+ vsi->state))
|
|
|
i40e_vsi_reinit_locked(pf->vsi[v]);
|
|
|
}
|
|
|
} else if (reset_flags & BIT_ULL(__I40E_DOWN_REQUESTED)) {
|
|
@@ -5800,8 +5800,8 @@ void i40e_do_reset(struct i40e_pf *pf, u32 reset_flags, bool lock_acquired)
|
|
|
|
|
|
if (vsi != NULL &&
|
|
|
test_and_clear_bit(__I40E_VSI_DOWN_REQUESTED,
|
|
|
- &vsi->state)) {
|
|
|
- set_bit(__I40E_VSI_DOWN, &vsi->state);
|
|
|
+ vsi->state)) {
|
|
|
+ set_bit(__I40E_VSI_DOWN, vsi->state);
|
|
|
i40e_down(vsi);
|
|
|
}
|
|
|
}
|
|
@@ -5942,7 +5942,7 @@ static int i40e_handle_lldp_event(struct i40e_pf *pf,
|
|
|
else
|
|
|
pf->flags &= ~I40E_FLAG_DCB_ENABLED;
|
|
|
|
|
|
- set_bit(__I40E_PORT_SUSPENDED, &pf->state);
|
|
|
+ set_bit(__I40E_PORT_SUSPENDED, pf->state);
|
|
|
/* Reconfiguration needed quiesce all VSIs */
|
|
|
i40e_pf_quiesce_all_vsi(pf);
|
|
|
|
|
@@ -5951,7 +5951,7 @@ static int i40e_handle_lldp_event(struct i40e_pf *pf,
|
|
|
|
|
|
ret = i40e_resume_port_tx(pf);
|
|
|
|
|
|
- clear_bit(__I40E_PORT_SUSPENDED, &pf->state);
|
|
|
+ clear_bit(__I40E_PORT_SUSPENDED, pf->state);
|
|
|
/* In case of error no point in resuming VSIs */
|
|
|
if (ret)
|
|
|
goto exit;
|
|
@@ -5960,7 +5960,7 @@ static int i40e_handle_lldp_event(struct i40e_pf *pf,
|
|
|
ret = i40e_pf_wait_queues_disabled(pf);
|
|
|
if (ret) {
|
|
|
/* Schedule PF reset to recover */
|
|
|
- set_bit(__I40E_PF_RESET_REQUESTED, &pf->state);
|
|
|
+ set_bit(__I40E_PF_RESET_REQUESTED, pf->state);
|
|
|
i40e_service_event_schedule(pf);
|
|
|
} else {
|
|
|
i40e_pf_unquiesce_all_vsi(pf);
|
|
@@ -6075,7 +6075,7 @@ void i40e_fdir_check_and_reenable(struct i40e_pf *pf)
|
|
|
u32 fcnt_prog, fcnt_avail;
|
|
|
struct hlist_node *node;
|
|
|
|
|
|
- if (test_bit(__I40E_FD_FLUSH_REQUESTED, &pf->state))
|
|
|
+ if (test_bit(__I40E_FD_FLUSH_REQUESTED, pf->state))
|
|
|
return;
|
|
|
|
|
|
/* Check if, FD SB or ATR was auto disabled and if there is enough room
|
|
@@ -6174,7 +6174,7 @@ static void i40e_fdir_flush_and_replay(struct i40e_pf *pf)
|
|
|
i40e_fdir_filter_restore(pf->vsi[pf->lan_vsi]);
|
|
|
if (!disable_atr && !pf->fd_tcp4_filter_cnt)
|
|
|
pf->hw_disabled_flags &= ~I40E_FLAG_FD_ATR_ENABLED;
|
|
|
- clear_bit(__I40E_FD_FLUSH_REQUESTED, &pf->state);
|
|
|
+ clear_bit(__I40E_FD_FLUSH_REQUESTED, pf->state);
|
|
|
if (I40E_DEBUG_FD & pf->hw.debug_mask)
|
|
|
dev_info(&pf->pdev->dev, "FD Filter table flushed and FD-SB replayed.\n");
|
|
|
}
|
|
@@ -6204,10 +6204,10 @@ static void i40e_fdir_reinit_subtask(struct i40e_pf *pf)
|
|
|
{
|
|
|
|
|
|
/* if interface is down do nothing */
|
|
|
- if (test_bit(__I40E_DOWN, &pf->state))
|
|
|
+ if (test_bit(__I40E_VSI_DOWN, pf->state))
|
|
|
return;
|
|
|
|
|
|
- if (test_bit(__I40E_FD_FLUSH_REQUESTED, &pf->state))
|
|
|
+ if (test_bit(__I40E_FD_FLUSH_REQUESTED, pf->state))
|
|
|
i40e_fdir_flush_and_replay(pf);
|
|
|
|
|
|
i40e_fdir_check_and_reenable(pf);
|
|
@@ -6221,7 +6221,7 @@ static void i40e_fdir_reinit_subtask(struct i40e_pf *pf)
|
|
|
**/
|
|
|
static void i40e_vsi_link_event(struct i40e_vsi *vsi, bool link_up)
|
|
|
{
|
|
|
- if (!vsi || test_bit(__I40E_VSI_DOWN, &vsi->state))
|
|
|
+ if (!vsi || test_bit(__I40E_VSI_DOWN, vsi->state))
|
|
|
return;
|
|
|
|
|
|
switch (vsi->type) {
|
|
@@ -6314,11 +6314,11 @@ static void i40e_link_event(struct i40e_pf *pf)
|
|
|
|
|
|
if (new_link == old_link &&
|
|
|
new_link_speed == old_link_speed &&
|
|
|
- (test_bit(__I40E_VSI_DOWN, &vsi->state) ||
|
|
|
+ (test_bit(__I40E_VSI_DOWN, vsi->state) ||
|
|
|
new_link == netif_carrier_ok(vsi->netdev)))
|
|
|
return;
|
|
|
|
|
|
- if (!test_bit(__I40E_VSI_DOWN, &vsi->state))
|
|
|
+ if (!test_bit(__I40E_VSI_DOWN, vsi->state))
|
|
|
i40e_print_link_message(vsi, new_link);
|
|
|
|
|
|
/* Notify the base of the switch tree connected to
|
|
@@ -6345,8 +6345,8 @@ static void i40e_watchdog_subtask(struct i40e_pf *pf)
|
|
|
int i;
|
|
|
|
|
|
/* if interface is down do nothing */
|
|
|
- if (test_bit(__I40E_DOWN, &pf->state) ||
|
|
|
- test_bit(__I40E_CONFIG_BUSY, &pf->state))
|
|
|
+ if (test_bit(__I40E_VSI_DOWN, pf->state) ||
|
|
|
+ test_bit(__I40E_CONFIG_BUSY, pf->state))
|
|
|
return;
|
|
|
|
|
|
/* make sure we don't do these things too often */
|
|
@@ -6384,31 +6384,31 @@ static void i40e_reset_subtask(struct i40e_pf *pf)
|
|
|
{
|
|
|
u32 reset_flags = 0;
|
|
|
|
|
|
- if (test_bit(__I40E_REINIT_REQUESTED, &pf->state)) {
|
|
|
+ if (test_bit(__I40E_REINIT_REQUESTED, pf->state)) {
|
|
|
reset_flags |= BIT(__I40E_REINIT_REQUESTED);
|
|
|
- clear_bit(__I40E_REINIT_REQUESTED, &pf->state);
|
|
|
+ clear_bit(__I40E_REINIT_REQUESTED, pf->state);
|
|
|
}
|
|
|
- if (test_bit(__I40E_PF_RESET_REQUESTED, &pf->state)) {
|
|
|
+ if (test_bit(__I40E_PF_RESET_REQUESTED, pf->state)) {
|
|
|
reset_flags |= BIT(__I40E_PF_RESET_REQUESTED);
|
|
|
- clear_bit(__I40E_PF_RESET_REQUESTED, &pf->state);
|
|
|
+ clear_bit(__I40E_PF_RESET_REQUESTED, pf->state);
|
|
|
}
|
|
|
- if (test_bit(__I40E_CORE_RESET_REQUESTED, &pf->state)) {
|
|
|
+ if (test_bit(__I40E_CORE_RESET_REQUESTED, pf->state)) {
|
|
|
reset_flags |= BIT(__I40E_CORE_RESET_REQUESTED);
|
|
|
- clear_bit(__I40E_CORE_RESET_REQUESTED, &pf->state);
|
|
|
+ clear_bit(__I40E_CORE_RESET_REQUESTED, pf->state);
|
|
|
}
|
|
|
- if (test_bit(__I40E_GLOBAL_RESET_REQUESTED, &pf->state)) {
|
|
|
+ if (test_bit(__I40E_GLOBAL_RESET_REQUESTED, pf->state)) {
|
|
|
reset_flags |= BIT(__I40E_GLOBAL_RESET_REQUESTED);
|
|
|
- clear_bit(__I40E_GLOBAL_RESET_REQUESTED, &pf->state);
|
|
|
+ clear_bit(__I40E_GLOBAL_RESET_REQUESTED, pf->state);
|
|
|
}
|
|
|
- if (test_bit(__I40E_DOWN_REQUESTED, &pf->state)) {
|
|
|
- reset_flags |= BIT(__I40E_DOWN_REQUESTED);
|
|
|
- clear_bit(__I40E_DOWN_REQUESTED, &pf->state);
|
|
|
+ if (test_bit(__I40E_VSI_DOWN_REQUESTED, pf->state)) {
|
|
|
+ reset_flags |= BIT(__I40E_VSI_DOWN_REQUESTED);
|
|
|
+ clear_bit(__I40E_VSI_DOWN_REQUESTED, pf->state);
|
|
|
}
|
|
|
|
|
|
/* If there's a recovery already waiting, it takes
|
|
|
* precedence before starting a new reset sequence.
|
|
|
*/
|
|
|
- if (test_bit(__I40E_RESET_INTR_RECEIVED, &pf->state)) {
|
|
|
+ if (test_bit(__I40E_RESET_INTR_RECEIVED, pf->state)) {
|
|
|
i40e_prep_for_reset(pf, false);
|
|
|
i40e_reset(pf);
|
|
|
i40e_rebuild(pf, false, false);
|
|
@@ -6416,8 +6416,8 @@ static void i40e_reset_subtask(struct i40e_pf *pf)
|
|
|
|
|
|
/* If we're already down or resetting, just bail */
|
|
|
if (reset_flags &&
|
|
|
- !test_bit(__I40E_DOWN, &pf->state) &&
|
|
|
- !test_bit(__I40E_CONFIG_BUSY, &pf->state)) {
|
|
|
+ !test_bit(__I40E_VSI_DOWN, pf->state) &&
|
|
|
+ !test_bit(__I40E_CONFIG_BUSY, pf->state)) {
|
|
|
rtnl_lock();
|
|
|
i40e_do_reset(pf, reset_flags, true);
|
|
|
rtnl_unlock();
|
|
@@ -6466,7 +6466,7 @@ static void i40e_clean_adminq_subtask(struct i40e_pf *pf)
|
|
|
u32 val;
|
|
|
|
|
|
/* Do not run clean AQ when PF reset fails */
|
|
|
- if (test_bit(__I40E_RESET_FAILED, &pf->state))
|
|
|
+ if (test_bit(__I40E_RESET_FAILED, pf->state))
|
|
|
return;
|
|
|
|
|
|
/* check for error indications */
|
|
@@ -6570,7 +6570,7 @@ static void i40e_clean_adminq_subtask(struct i40e_pf *pf)
|
|
|
} while (i++ < pf->adminq_work_limit);
|
|
|
|
|
|
if (i < pf->adminq_work_limit)
|
|
|
- clear_bit(__I40E_ADMINQ_EVENT_PENDING, &pf->state);
|
|
|
+ clear_bit(__I40E_ADMINQ_EVENT_PENDING, pf->state);
|
|
|
|
|
|
/* re-enable Admin queue interrupt cause */
|
|
|
val = rd32(hw, I40E_PFINT_ICR0_ENA);
|
|
@@ -6596,13 +6596,13 @@ static void i40e_verify_eeprom(struct i40e_pf *pf)
|
|
|
if (err) {
|
|
|
dev_info(&pf->pdev->dev, "eeprom check failed (%d), Tx/Rx traffic disabled\n",
|
|
|
err);
|
|
|
- set_bit(__I40E_BAD_EEPROM, &pf->state);
|
|
|
+ set_bit(__I40E_BAD_EEPROM, pf->state);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (!err && test_bit(__I40E_BAD_EEPROM, &pf->state)) {
|
|
|
+ if (!err && test_bit(__I40E_BAD_EEPROM, pf->state)) {
|
|
|
dev_info(&pf->pdev->dev, "eeprom check passed, Tx/Rx traffic enabled\n");
|
|
|
- clear_bit(__I40E_BAD_EEPROM, &pf->state);
|
|
|
+ clear_bit(__I40E_BAD_EEPROM, pf->state);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -6920,8 +6920,8 @@ static void i40e_prep_for_reset(struct i40e_pf *pf, bool lock_acquired)
|
|
|
i40e_status ret = 0;
|
|
|
u32 v;
|
|
|
|
|
|
- clear_bit(__I40E_RESET_INTR_RECEIVED, &pf->state);
|
|
|
- if (test_and_set_bit(__I40E_RESET_RECOVERY_PENDING, &pf->state))
|
|
|
+ clear_bit(__I40E_RESET_INTR_RECEIVED, pf->state);
|
|
|
+ if (test_and_set_bit(__I40E_RESET_RECOVERY_PENDING, pf->state))
|
|
|
return;
|
|
|
if (i40e_check_asq_alive(&pf->hw))
|
|
|
i40e_vc_notify_reset(pf);
|
|
@@ -6980,8 +6980,8 @@ static int i40e_reset(struct i40e_pf *pf)
|
|
|
ret = i40e_pf_reset(hw);
|
|
|
if (ret) {
|
|
|
dev_info(&pf->pdev->dev, "PF reset failed, %d\n", ret);
|
|
|
- set_bit(__I40E_RESET_FAILED, &pf->state);
|
|
|
- clear_bit(__I40E_RESET_RECOVERY_PENDING, &pf->state);
|
|
|
+ set_bit(__I40E_RESET_FAILED, pf->state);
|
|
|
+ clear_bit(__I40E_RESET_RECOVERY_PENDING, pf->state);
|
|
|
} else {
|
|
|
pf->pfr_count++;
|
|
|
}
|
|
@@ -7003,7 +7003,7 @@ static void i40e_rebuild(struct i40e_pf *pf, bool reinit, bool lock_acquired)
|
|
|
u32 val;
|
|
|
int v;
|
|
|
|
|
|
- if (test_bit(__I40E_DOWN, &pf->state))
|
|
|
+ if (test_bit(__I40E_VSI_DOWN, pf->state))
|
|
|
goto clear_recovery;
|
|
|
dev_dbg(&pf->pdev->dev, "Rebuilding internal switch\n");
|
|
|
|
|
@@ -7017,7 +7017,7 @@ static void i40e_rebuild(struct i40e_pf *pf, bool reinit, bool lock_acquired)
|
|
|
}
|
|
|
|
|
|
/* re-verify the eeprom if we just had an EMP reset */
|
|
|
- if (test_and_clear_bit(__I40E_EMP_RESET_INTR_RECEIVED, &pf->state))
|
|
|
+ if (test_and_clear_bit(__I40E_EMP_RESET_INTR_RECEIVED, pf->state))
|
|
|
i40e_verify_eeprom(pf);
|
|
|
|
|
|
i40e_clear_pxe_mode(hw);
|
|
@@ -7180,9 +7180,9 @@ end_unlock:
|
|
|
if (!lock_acquired)
|
|
|
rtnl_unlock();
|
|
|
end_core_reset:
|
|
|
- clear_bit(__I40E_RESET_FAILED, &pf->state);
|
|
|
+ clear_bit(__I40E_RESET_FAILED, pf->state);
|
|
|
clear_recovery:
|
|
|
- clear_bit(__I40E_RESET_RECOVERY_PENDING, &pf->state);
|
|
|
+ clear_bit(__I40E_RESET_RECOVERY_PENDING, pf->state);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -7235,7 +7235,7 @@ static void i40e_handle_mdd_event(struct i40e_pf *pf)
|
|
|
u32 reg;
|
|
|
int i;
|
|
|
|
|
|
- if (!test_bit(__I40E_MDD_EVENT_PENDING, &pf->state))
|
|
|
+ if (!test_bit(__I40E_MDD_EVENT_PENDING, pf->state))
|
|
|
return;
|
|
|
|
|
|
/* find what triggered the MDD event */
|
|
@@ -7287,7 +7287,7 @@ static void i40e_handle_mdd_event(struct i40e_pf *pf)
|
|
|
}
|
|
|
/* Queue belongs to the PF, initiate a reset */
|
|
|
if (pf_mdd_detected) {
|
|
|
- set_bit(__I40E_PF_RESET_REQUESTED, &pf->state);
|
|
|
+ set_bit(__I40E_PF_RESET_REQUESTED, pf->state);
|
|
|
i40e_service_event_schedule(pf);
|
|
|
}
|
|
|
}
|
|
@@ -7321,7 +7321,7 @@ static void i40e_handle_mdd_event(struct i40e_pf *pf)
|
|
|
}
|
|
|
|
|
|
/* re-enable mdd interrupt cause */
|
|
|
- clear_bit(__I40E_MDD_EVENT_PENDING, &pf->state);
|
|
|
+ clear_bit(__I40E_MDD_EVENT_PENDING, pf->state);
|
|
|
reg = rd32(hw, I40E_PFINT_ICR0_ENA);
|
|
|
reg |= I40E_PFINT_ICR0_ENA_MAL_DETECT_MASK;
|
|
|
wr32(hw, I40E_PFINT_ICR0_ENA, reg);
|
|
@@ -7399,11 +7399,10 @@ static void i40e_service_task(struct work_struct *work)
|
|
|
unsigned long start_time = jiffies;
|
|
|
|
|
|
/* don't bother with service tasks if a reset is in progress */
|
|
|
- if (test_bit(__I40E_RESET_RECOVERY_PENDING, &pf->state)) {
|
|
|
+ if (test_bit(__I40E_RESET_RECOVERY_PENDING, pf->state))
|
|
|
return;
|
|
|
- }
|
|
|
|
|
|
- if (test_and_set_bit(__I40E_SERVICE_SCHED, &pf->state))
|
|
|
+ if (test_and_set_bit(__I40E_SERVICE_SCHED, pf->state))
|
|
|
return;
|
|
|
|
|
|
i40e_detect_recover_hung(pf);
|
|
@@ -7431,16 +7430,16 @@ static void i40e_service_task(struct work_struct *work)
|
|
|
|
|
|
/* flush memory to make sure state is correct before next watchdog */
|
|
|
smp_mb__before_atomic();
|
|
|
- clear_bit(__I40E_SERVICE_SCHED, &pf->state);
|
|
|
+ clear_bit(__I40E_SERVICE_SCHED, pf->state);
|
|
|
|
|
|
/* If the tasks have taken longer than one timer cycle or there
|
|
|
* is more work to be done, reschedule the service task now
|
|
|
* rather than wait for the timer to tick again.
|
|
|
*/
|
|
|
if (time_after(jiffies, (start_time + pf->service_timer_period)) ||
|
|
|
- test_bit(__I40E_ADMINQ_EVENT_PENDING, &pf->state) ||
|
|
|
- test_bit(__I40E_MDD_EVENT_PENDING, &pf->state) ||
|
|
|
- test_bit(__I40E_VFLR_EVENT_PENDING, &pf->state))
|
|
|
+ test_bit(__I40E_ADMINQ_EVENT_PENDING, pf->state) ||
|
|
|
+ test_bit(__I40E_MDD_EVENT_PENDING, pf->state) ||
|
|
|
+ test_bit(__I40E_VFLR_EVENT_PENDING, pf->state))
|
|
|
i40e_service_event_schedule(pf);
|
|
|
}
|
|
|
|
|
@@ -7589,7 +7588,7 @@ static int i40e_vsi_mem_alloc(struct i40e_pf *pf, enum i40e_vsi_type type)
|
|
|
}
|
|
|
vsi->type = type;
|
|
|
vsi->back = pf;
|
|
|
- set_bit(__I40E_VSI_DOWN, &vsi->state);
|
|
|
+ set_bit(__I40E_VSI_DOWN, vsi->state);
|
|
|
vsi->flags = 0;
|
|
|
vsi->idx = vsi_idx;
|
|
|
vsi->int_rate_limit = 0;
|
|
@@ -8171,7 +8170,7 @@ static int i40e_setup_misc_vector(struct i40e_pf *pf)
|
|
|
/* Only request the irq if this is the first time through, and
|
|
|
* not when we're rebuilding after a Reset
|
|
|
*/
|
|
|
- if (!test_bit(__I40E_RESET_RECOVERY_PENDING, &pf->state)) {
|
|
|
+ if (!test_bit(__I40E_RESET_RECOVERY_PENDING, pf->state)) {
|
|
|
err = request_irq(pf->msix_entries[0].vector,
|
|
|
i40e_intr, 0, pf->int_name, pf);
|
|
|
if (err) {
|
|
@@ -9716,7 +9715,7 @@ static int i40e_add_vsi(struct i40e_vsi *vsi)
|
|
|
}
|
|
|
|
|
|
vsi->active_filters = 0;
|
|
|
- clear_bit(__I40E_VSI_OVERFLOW_PROMISC, &vsi->state);
|
|
|
+ clear_bit(__I40E_VSI_OVERFLOW_PROMISC, vsi->state);
|
|
|
spin_lock_bh(&vsi->mac_filter_hash_lock);
|
|
|
/* If macvlan filters already exist, force them to get loaded */
|
|
|
hash_for_each_safe(vsi->mac_filter_hash, bkt, h, f, hlist) {
|
|
@@ -9769,7 +9768,7 @@ int i40e_vsi_release(struct i40e_vsi *vsi)
|
|
|
return -ENODEV;
|
|
|
}
|
|
|
if (vsi == pf->vsi[pf->lan_vsi] &&
|
|
|
- !test_bit(__I40E_DOWN, &pf->state)) {
|
|
|
+ !test_bit(__I40E_VSI_DOWN, pf->state)) {
|
|
|
dev_info(&pf->pdev->dev, "Can't remove PF VSI\n");
|
|
|
return -ENODEV;
|
|
|
}
|
|
@@ -11005,7 +11004,7 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|
|
}
|
|
|
pf->next_vsi = 0;
|
|
|
pf->pdev = pdev;
|
|
|
- set_bit(__I40E_DOWN, &pf->state);
|
|
|
+ set_bit(__I40E_VSI_DOWN, pf->state);
|
|
|
|
|
|
hw = &pf->hw;
|
|
|
hw->back = pf;
|
|
@@ -11184,7 +11183,7 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|
|
pf->service_timer_period = HZ;
|
|
|
|
|
|
INIT_WORK(&pf->service_task, i40e_service_task);
|
|
|
- clear_bit(__I40E_SERVICE_SCHED, &pf->state);
|
|
|
+ clear_bit(__I40E_SERVICE_SCHED, pf->state);
|
|
|
|
|
|
/* NVM bit on means WoL disabled for the port */
|
|
|
i40e_read_nvm_word(hw, I40E_SR_NVM_WAKE_ON_LAN, &wol_nvm_bits);
|
|
@@ -11222,7 +11221,7 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|
|
/* prep for VF support */
|
|
|
if ((pf->flags & I40E_FLAG_SRIOV_ENABLED) &&
|
|
|
(pf->flags & I40E_FLAG_MSIX_ENABLED) &&
|
|
|
- !test_bit(__I40E_BAD_EEPROM, &pf->state)) {
|
|
|
+ !test_bit(__I40E_BAD_EEPROM, pf->state)) {
|
|
|
if (pci_num_vf(pdev))
|
|
|
pf->flags |= I40E_FLAG_VEB_MODE_ENABLED;
|
|
|
}
|
|
@@ -11295,7 +11294,7 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|
|
* before setting up the misc vector or we get a race and the vector
|
|
|
* ends up disabled forever.
|
|
|
*/
|
|
|
- clear_bit(__I40E_DOWN, &pf->state);
|
|
|
+ clear_bit(__I40E_VSI_DOWN, pf->state);
|
|
|
|
|
|
/* In case of MSIX we are going to setup the misc vector right here
|
|
|
* to handle admin queue events etc. In case of legacy and MSI
|
|
@@ -11315,7 +11314,7 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|
|
/* prep for VF support */
|
|
|
if ((pf->flags & I40E_FLAG_SRIOV_ENABLED) &&
|
|
|
(pf->flags & I40E_FLAG_MSIX_ENABLED) &&
|
|
|
- !test_bit(__I40E_BAD_EEPROM, &pf->state)) {
|
|
|
+ !test_bit(__I40E_BAD_EEPROM, pf->state)) {
|
|
|
/* disable link interrupts for VFs */
|
|
|
val = rd32(hw, I40E_PFGEN_PORTMDIO_NUM);
|
|
|
val &= ~I40E_PFGEN_PORTMDIO_NUM_VFLINK_STAT_ENA_MASK;
|
|
@@ -11450,7 +11449,7 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|
|
|
|
|
/* Unwind what we've done if something failed in the setup */
|
|
|
err_vsis:
|
|
|
- set_bit(__I40E_DOWN, &pf->state);
|
|
|
+ set_bit(__I40E_VSI_DOWN, pf->state);
|
|
|
i40e_clear_interrupt_scheme(pf);
|
|
|
kfree(pf->vsi);
|
|
|
err_switch_setup:
|
|
@@ -11501,8 +11500,8 @@ static void i40e_remove(struct pci_dev *pdev)
|
|
|
i40e_write_rx_ctl(hw, I40E_PFQF_HENA(1), 0);
|
|
|
|
|
|
/* no more scheduling of any task */
|
|
|
- set_bit(__I40E_SUSPENDED, &pf->state);
|
|
|
- set_bit(__I40E_DOWN, &pf->state);
|
|
|
+ set_bit(__I40E_SUSPENDED, pf->state);
|
|
|
+ set_bit(__I40E_VSI_DOWN, pf->state);
|
|
|
if (pf->service_timer.data)
|
|
|
del_timer_sync(&pf->service_timer);
|
|
|
if (pf->service_task.func)
|
|
@@ -11610,7 +11609,7 @@ static pci_ers_result_t i40e_pci_error_detected(struct pci_dev *pdev,
|
|
|
}
|
|
|
|
|
|
/* shutdown all operations */
|
|
|
- if (!test_bit(__I40E_SUSPENDED, &pf->state)) {
|
|
|
+ if (!test_bit(__I40E_SUSPENDED, pf->state)) {
|
|
|
rtnl_lock();
|
|
|
i40e_prep_for_reset(pf, true);
|
|
|
rtnl_unlock();
|
|
@@ -11677,7 +11676,7 @@ static void i40e_pci_error_resume(struct pci_dev *pdev)
|
|
|
struct i40e_pf *pf = pci_get_drvdata(pdev);
|
|
|
|
|
|
dev_dbg(&pdev->dev, "%s\n", __func__);
|
|
|
- if (test_bit(__I40E_SUSPENDED, &pf->state))
|
|
|
+ if (test_bit(__I40E_SUSPENDED, pf->state))
|
|
|
return;
|
|
|
|
|
|
rtnl_lock();
|
|
@@ -11741,8 +11740,8 @@ static void i40e_shutdown(struct pci_dev *pdev)
|
|
|
struct i40e_pf *pf = pci_get_drvdata(pdev);
|
|
|
struct i40e_hw *hw = &pf->hw;
|
|
|
|
|
|
- set_bit(__I40E_SUSPENDED, &pf->state);
|
|
|
- set_bit(__I40E_DOWN, &pf->state);
|
|
|
+ set_bit(__I40E_SUSPENDED, pf->state);
|
|
|
+ set_bit(__I40E_VSI_DOWN, pf->state);
|
|
|
rtnl_lock();
|
|
|
i40e_prep_for_reset(pf, true);
|
|
|
rtnl_unlock();
|
|
@@ -11790,8 +11789,8 @@ static int i40e_suspend(struct pci_dev *pdev, pm_message_t state)
|
|
|
struct i40e_hw *hw = &pf->hw;
|
|
|
int retval = 0;
|
|
|
|
|
|
- set_bit(__I40E_SUSPENDED, &pf->state);
|
|
|
- set_bit(__I40E_DOWN, &pf->state);
|
|
|
+ set_bit(__I40E_SUSPENDED, pf->state);
|
|
|
+ set_bit(__I40E_VSI_DOWN, pf->state);
|
|
|
|
|
|
if (pf->wol_en && (pf->flags & I40E_FLAG_WOL_MC_MAGIC_PKT_WAKE))
|
|
|
i40e_enable_mc_magic_wake(pf);
|
|
@@ -11842,8 +11841,8 @@ static int i40e_resume(struct pci_dev *pdev)
|
|
|
pci_wake_from_d3(pdev, false);
|
|
|
|
|
|
/* handling the reset will rebuild the device state */
|
|
|
- if (test_and_clear_bit(__I40E_SUSPENDED, &pf->state)) {
|
|
|
- clear_bit(__I40E_DOWN, &pf->state);
|
|
|
+ if (test_and_clear_bit(__I40E_SUSPENDED, pf->state)) {
|
|
|
+ clear_bit(__I40E_VSI_DOWN, pf->state);
|
|
|
rtnl_lock();
|
|
|
i40e_reset_and_rebuild(pf, false, true);
|
|
|
rtnl_unlock();
|