mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-24 10:11:26 +03:00
nvethernet: consume the timestamp if available in tx done
Issue: Observed Tx timestamp timeout from application since workqueue is not getting scheduled at the driver layer to consume the Tx timestamp from the OSI layer which resulted in tx_timeout from APP layer. Fix: Invoke the timestamp consume function in tx done instead of scheduling through workqueue. Schedule the work queue only if the timestamp is not found. Bug 3658701 Change-Id: If97aebc1980f685e3cc34f135ace91298ee78657 Signed-off-by: Bhadram Varka <vbhadram@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2732444 Reviewed-by: Troy Kong <troyk@nvidia.com> Reviewed-by: Narayan Reddy <narayanr@nvidia.com> Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com> Reviewed-by: Rakesh Goyal <rgoyal@nvidia.com> Reviewed-by: Bitan Biswas <bbiswas@nvidia.com> Tested-by: Troy Kong <troyk@nvidia.com> GVS: Gerrit_Virtual_Submit
This commit is contained in:
committed by
Revanth Kumar Uppala
parent
cafe9a309c
commit
76abafe3a3
@@ -125,11 +125,6 @@
|
||||
*/
|
||||
#define ETHER_DEFAULT_PTP_QUEUE 3U
|
||||
|
||||
/**
|
||||
* @brief TX timestamp miss threshold
|
||||
*/
|
||||
#define TS_MISS_THRESHOLD 200U
|
||||
|
||||
/**
|
||||
* @brief SEC to MSEC converter
|
||||
*/
|
||||
@@ -626,6 +621,8 @@ struct ether_priv_data {
|
||||
#endif
|
||||
/** Protect critical section of TX TS SKB list */
|
||||
raw_spinlock_t txts_lock;
|
||||
/** Ref count for ether_get_tx_ts_func */
|
||||
atomic_t tx_ts_ref_cnt;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -800,6 +797,18 @@ int ether_tc_setup_cbs(struct ether_priv_data *pdata,
|
||||
struct tc_cbs_qopt_offload *qopt);
|
||||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Get Tx done timestamp from OSI and update in skb
|
||||
*
|
||||
* @param[in] pdata: Pointer to private data structure.
|
||||
*
|
||||
* @note Network interface should be up
|
||||
*
|
||||
* @retval 0 on success
|
||||
* @retval EAGAIN on Failure
|
||||
*/
|
||||
int ether_get_tx_ts(struct ether_priv_data *pdata);
|
||||
#ifdef ETHER_NVGRO
|
||||
void ether_nvgro_purge_timer(struct timer_list *t);
|
||||
#endif /* ETHER_NVGRO */
|
||||
|
||||
Reference in New Issue
Block a user