nvethernet: Add IVC fix

Issue: rt_spinlock causes IVC failures.

Fix:
1. Change rt_spinlock to spinlock.
2. Add timeout to ivc_can_read.

Bug 2694285

Change-Id: Ib603c304e750a33262e8509ed3f869030b934958
Signed-off-by: Nagaraj Annaiah <nannaiah@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2497217
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: Srinivas Ramachandran <srinivasra@nvidia.com>
Reviewed-by: Ashutosh Jha <ajha@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
This commit is contained in:
nannaiah
2021-03-11 11:09:17 -08:00
committed by Revanth Kumar Uppala
parent f4d30eb89b
commit 8c8eceeeb7
3 changed files with 33 additions and 11 deletions

View File

@@ -128,6 +128,23 @@
*/
#define ETHER_TX_MAX_FRAME_SIZE GSO_MAX_SIZE
/**
* @brief IVC wait timeout.
*/
#define IVC_WAIT_TIMEOUT (msecs_to_jiffies(100))
/**
* @brief IVC read timeout cnt.
* used as 20*IVC_WAIT_TIMEOUT hence Max is 2 sec timeout.
*/
#define IVC_READ_TIMEOUT_CNT 20
/**
* @brief IVC channel timeout.
* Used with 1 millisec so max timeout is 50 ms.
*/
#define IVC_CHANNEL_TIMEOUT_CNT 50
/**
* @brief Check if Tx data buffer length is within bounds.
*
@@ -241,7 +258,7 @@ struct ether_ivc_ctxt {
/** ivc cookie */
struct tegra_hv_ivc_cookie *ivck;
/** ivc lock */
raw_spinlock_t ivck_lock;
spinlock_t ivck_lock;
/** ivc work */
struct work_struct ivc_work;
/** wait for event */