diff options
Diffstat (limited to 'drivers/net/ethernet/intel/ice/ice_ptp.c')
| -rw-r--r-- | drivers/net/ethernet/intel/ice/ice_ptp.c | 13 | 
1 files changed, 8 insertions, 5 deletions
| diff --git a/drivers/net/ethernet/intel/ice/ice_ptp.c b/drivers/net/ethernet/intel/ice/ice_ptp.c index e358eb1d719f..fb0f6365a6d6 100644 --- a/drivers/net/ethernet/intel/ice/ice_ptp.c +++ b/drivers/net/ethernet/intel/ice/ice_ptp.c @@ -2701,16 +2701,19 @@ irqreturn_t ice_ptp_ts_irq(struct ice_pf *pf)  		 */  		if (hw->dev_caps.ts_dev_info.ts_ll_int_read) {  			struct ice_ptp_tx *tx = &pf->ptp.port.tx; -			u8 idx; +			u8 idx, last;  			if (!ice_pf_state_is_nominal(pf))  				return IRQ_HANDLED;  			spin_lock(&tx->lock); -			idx = find_next_bit_wrap(tx->in_use, tx->len, -						 tx->last_ll_ts_idx_read + 1); -			if (idx != tx->len) -				ice_ptp_req_tx_single_tstamp(tx, idx); +			if (tx->init) { +				last = tx->last_ll_ts_idx_read + 1; +				idx = find_next_bit_wrap(tx->in_use, tx->len, +							 last); +				if (idx != tx->len) +					ice_ptp_req_tx_single_tstamp(tx, idx); +			}  			spin_unlock(&tx->lock);  			return IRQ_HANDLED; | 
