diff options
Diffstat (limited to 'drivers/net/ethernet/intel/iavf/iavf_main.c')
| -rw-r--r-- | drivers/net/ethernet/intel/iavf/iavf_main.c | 17 | 
1 files changed, 8 insertions, 9 deletions
diff --git a/drivers/net/ethernet/intel/iavf/iavf_main.c b/drivers/net/ethernet/intel/iavf/iavf_main.c index 7b300c86ceda..6a2e6d64bc3a 100644 --- a/drivers/net/ethernet/intel/iavf/iavf_main.c +++ b/drivers/net/ethernet/intel/iavf/iavf_main.c @@ -314,15 +314,13 @@ void iavf_schedule_reset(struct iavf_adapter *adapter, u64 flags)  }  /** - * iavf_schedule_request_stats - Set the flags and schedule statistics request + * iavf_schedule_aq_request - Set the flags and schedule aq request   * @adapter: board private structure - * - * Sets IAVF_FLAG_AQ_REQUEST_STATS flag so iavf_watchdog_task() will explicitly - * request and refresh ethtool stats + * @flags: requested aq flags   **/ -void iavf_schedule_request_stats(struct iavf_adapter *adapter) +void iavf_schedule_aq_request(struct iavf_adapter *adapter, u64 flags)  { -	adapter->aq_required |= IAVF_FLAG_AQ_REQUEST_STATS; +	adapter->aq_required |= flags;  	mod_delayed_work(adapter->wq, &adapter->watchdog_task, 0);  } @@ -823,7 +821,7 @@ iavf_vlan_filter *iavf_add_vlan(struct iavf_adapter *adapter,  		list_add_tail(&f->list, &adapter->vlan_filter_list);  		f->state = IAVF_VLAN_ADD;  		adapter->num_vlan_filters++; -		adapter->aq_required |= IAVF_FLAG_AQ_ADD_VLAN_FILTER; +		iavf_schedule_aq_request(adapter, IAVF_FLAG_AQ_ADD_VLAN_FILTER);  	}  clearout: @@ -845,7 +843,7 @@ static void iavf_del_vlan(struct iavf_adapter *adapter, struct iavf_vlan vlan)  	f = iavf_find_vlan(adapter, vlan);  	if (f) {  		f->state = IAVF_VLAN_REMOVE; -		adapter->aq_required |= IAVF_FLAG_AQ_DEL_VLAN_FILTER; +		iavf_schedule_aq_request(adapter, IAVF_FLAG_AQ_DEL_VLAN_FILTER);  	}  	spin_unlock_bh(&adapter->mac_vlan_list_lock); @@ -1421,7 +1419,8 @@ void iavf_down(struct iavf_adapter *adapter)  	iavf_clear_fdir_filters(adapter);  	iavf_clear_adv_rss_conf(adapter); -	if (!(adapter->flags & IAVF_FLAG_PF_COMMS_FAILED)) { +	if (!(adapter->flags & IAVF_FLAG_PF_COMMS_FAILED) && +	    !(test_bit(__IAVF_IN_REMOVE_TASK, &adapter->crit_section))) {  		/* cancel any current operation */  		adapter->current_op = VIRTCHNL_OP_UNKNOWN;  		/* Schedule operations to close down the HW. Don't wait  |