Message ID | 20230807103624.468230-10-karol.kolacinski@intel.com |
---|---|
State | Changes Requested |
Headers | show |
Series | ice: fix timestamping in reset process | expand |
On 8/7/23 12:36, Karol Kolacinski wrote: > The ice driver currently attempts to destroy and re-initialize the Tx > timestamp tracker during the reset flow. The release of the Tx tracker > only happened during CORE reset or GLOBAL reset. The ice_ptp_rebuild() > function always calls the ice_ptp_init_tx function which will allocate > a new tracker data structure, resulting in memory leaks during PF reset. > > Certainly the driver should not be allocating a new tracker without > removing the old tracker data, as this results in a memory leak. > Additionally, there's no reason to remove the tracker memory during a > reset. Remove this logic from the reset and rebuild flow. Instead of > releasing the Tx tracker, flush outstanding timestamps just before we > reset the PHY timestamp block in ice_ptp_cfg_phy_interrupt(). Looks like you are missing some part of this patch or it went into other (perhaps 4/9, ice_ptp_flush_all_tx_tracker) Anyway, either fix wording here or bring it back here. > > Change-type: ImplementationChange Haha, sure :) > Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> > --- > drivers/net/ethernet/intel/ice/ice_ptp.c | 12 ------------ > 1 file changed, 12 deletions(-) > > diff --git a/drivers/net/ethernet/intel/ice/ice_ptp.c b/drivers/net/ethernet/intel/ice/ice_ptp.c > index 5dc0c9a27180..d10c43f9266b 100644 > --- a/drivers/net/ethernet/intel/ice/ice_ptp.c > +++ b/drivers/net/ethernet/intel/ice/ice_ptp.c > @@ -2629,18 +2629,6 @@ void ice_ptp_rebuild(struct ice_pf *pf, enum ice_reset_req reset_type) > if (ice_pf_src_tmr_owned(pf) && reset_type != ICE_RESET_PFR) > ice_ptp_rebuild_owner(pf); > > - /* Init Tx structures */ > - if (ice_is_e810(&pf->hw)) { > - err = ice_ptp_init_tx_e810(pf, &ptp->port.tx); > - } else { > - kthread_init_delayed_work(&ptp->port.ov_work, > - ice_ptp_wait_for_offsets); > - err = ice_ptp_init_tx_e822(pf, &ptp->port.tx, > - ptp->port.port_num); > - } > - if (err) > - goto err; > - > ptp->state = ICE_PTP_READY; > > /* Start periodic work going */
diff --git a/drivers/net/ethernet/intel/ice/ice_ptp.c b/drivers/net/ethernet/intel/ice/ice_ptp.c index 5dc0c9a27180..d10c43f9266b 100644 --- a/drivers/net/ethernet/intel/ice/ice_ptp.c +++ b/drivers/net/ethernet/intel/ice/ice_ptp.c @@ -2629,18 +2629,6 @@ void ice_ptp_rebuild(struct ice_pf *pf, enum ice_reset_req reset_type) if (ice_pf_src_tmr_owned(pf) && reset_type != ICE_RESET_PFR) ice_ptp_rebuild_owner(pf); - /* Init Tx structures */ - if (ice_is_e810(&pf->hw)) { - err = ice_ptp_init_tx_e810(pf, &ptp->port.tx); - } else { - kthread_init_delayed_work(&ptp->port.ov_work, - ice_ptp_wait_for_offsets); - err = ice_ptp_init_tx_e822(pf, &ptp->port.tx, - ptp->port.port_num); - } - if (err) - goto err; - ptp->state = ICE_PTP_READY; /* Start periodic work going */
The ice driver currently attempts to destroy and re-initialize the Tx timestamp tracker during the reset flow. The release of the Tx tracker only happened during CORE reset or GLOBAL reset. The ice_ptp_rebuild() function always calls the ice_ptp_init_tx function which will allocate a new tracker data structure, resulting in memory leaks during PF reset. Certainly the driver should not be allocating a new tracker without removing the old tracker data, as this results in a memory leak. Additionally, there's no reason to remove the tracker memory during a reset. Remove this logic from the reset and rebuild flow. Instead of releasing the Tx tracker, flush outstanding timestamps just before we reset the PHY timestamp block in ice_ptp_cfg_phy_interrupt(). Change-type: ImplementationChange Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> --- drivers/net/ethernet/intel/ice/ice_ptp.c | 12 ------------ 1 file changed, 12 deletions(-)