nvethernet: Add workqueue to set Rx mode.

Issue:
Network RTNL lock disables scheduler which causes IVC hang.

Fix:
- Add workqueue to set Rx mode.
- Change IVC spinlock to workqueue.
- Add virtualization check for macsec clk init.
- Add Read & Write Register.

Bug 2694285

Change-Id: I8354b500c62c0145eeed9a66bfcc8227fc8999e7
Signed-off-by: Nagaraj annaiah <nannaiah@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2520309
This commit is contained in:
nannaiah
2021-04-25 21:47:54 -07:00
committed by Revanth Kumar Uppala
parent c804eef959
commit 975e946c85
7 changed files with 88 additions and 35 deletions

View File

@@ -281,7 +281,7 @@ struct ether_ivc_ctxt {
/** ivc cookie */
struct tegra_hv_ivc_cookie *ivck;
/** ivc lock */
spinlock_t ivck_lock;
struct mutex ivck_lock;
/** ivc work */
struct work_struct ivc_work;
/** wait for event */
@@ -440,6 +440,10 @@ struct ether_priv_data {
unsigned int promisc_mode;
/** Delayed work queue to read RMON counters periodically */
struct delayed_work ether_stats_work;
/** process rx work */
struct work_struct set_rx_mode_work;
/** rx lock */
struct mutex rx_mode_lock;
/** Flag to check if EEE LPI is enabled for the MAC */
unsigned int eee_enabled;
/** Flag to check if EEE LPI is active currently */