diff options
Diffstat (limited to 'drivers/net/ethernet/intel/ice/ice_main.c')
| -rw-r--r-- | drivers/net/ethernet/intel/ice/ice_main.c | 12 | 
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c index 5b1198859da7..963a5f40e071 100644 --- a/drivers/net/ethernet/intel/ice/ice_main.c +++ b/drivers/net/ethernet/intel/ice/ice_main.c @@ -3769,6 +3769,7 @@ u16 ice_get_avail_rxq_count(struct ice_pf *pf)  static void ice_deinit_pf(struct ice_pf *pf)  {  	ice_service_task_stop(pf); +	mutex_destroy(&pf->adev_mutex);  	mutex_destroy(&pf->sw_mutex);  	mutex_destroy(&pf->tc_mutex);  	mutex_destroy(&pf->avail_q_mutex); @@ -3847,6 +3848,7 @@ static int ice_init_pf(struct ice_pf *pf)  	mutex_init(&pf->sw_mutex);  	mutex_init(&pf->tc_mutex); +	mutex_init(&pf->adev_mutex);  	INIT_HLIST_HEAD(&pf->aq_wait_list);  	spin_lock_init(&pf->aq_wait_lock); @@ -6170,9 +6172,10 @@ static int ice_up_complete(struct ice_vsi *vsi)  			ice_ptp_link_change(pf, pf->hw.pf_id, true);  	} -	/* clear this now, and the first stats read will be used as baseline */ -	vsi->stat_offsets_loaded = false; - +	/* Perform an initial read of the statistics registers now to +	 * set the baseline so counters are ready when interface is up +	 */ +	ice_update_eth_stats(vsi);  	ice_service_task_schedule(pf);  	return 0; @@ -6929,12 +6932,15 @@ static void ice_rebuild(struct ice_pf *pf, enum ice_reset_req reset_type)  	dev_dbg(dev, "rebuilding PF after reset_type=%d\n", reset_type); +#define ICE_EMP_RESET_SLEEP_MS 5000  	if (reset_type == ICE_RESET_EMPR) {  		/* If an EMP reset has occurred, any previously pending flash  		 * update will have completed. We no longer know whether or  		 * not the NVM update EMP reset is restricted.  		 */  		pf->fw_emp_reset_disabled = false; + +		msleep(ICE_EMP_RESET_SLEEP_MS);  	}  	err = ice_init_all_ctrlq(hw);  | 
