@ -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 ( ) ;