From 00e9f705d408548f755155ee07cde73b8f6227ee Mon Sep 17 00:00:00 2001 From: Mahesh Patil Date: Wed, 26 Jun 2024 05:48:58 +0000 Subject: [PATCH] nvethernet: Ignore lane bringup restart task - Adding WAR to ignore lane bringup restart task as it is causing lane bring up failures in SLT EQOS/MGBE - Populate RSS hash table with enabled num_of_dma channels Bug 4709627 Change-Id: I195db0371f69dfcedc1c67023c1279af426dd7e6 Signed-off-by: Mahesh Patil Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3162313 Reviewed-by: Nagaraj Annaiah Reviewed-by: Ashutosh Jha --- drivers/net/ethernet/nvidia/nvethernet/ether_linux.c | 4 ++++ drivers/net/ethernet/nvidia/nvethernet/osd.c | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c b/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c index 5ab72e23..207d42fa 100644 --- a/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c +++ b/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c @@ -7152,6 +7152,10 @@ static void ether_init_rss(struct ether_priv_data *pdata, /* generate random key */ netdev_rss_key_fill(osi_core->rss.key, sizeof(osi_core->rss.key)); + /* In T26x mgbe default 8 VDMA channels enabled */ + if (osi_core->mac == OSI_MAC_HW_MGBE_T26X) { + num_q = pdata->osi_dma->num_dma_chans; + } /* initialize hash table */ for (i = 0; i < OSI_RSS_MAX_TABLE_SIZE; i++) osi_core->rss.table[i] = ethtool_rxfh_indir_default(i, num_q); diff --git a/drivers/net/ethernet/nvidia/nvethernet/osd.c b/drivers/net/ethernet/nvidia/nvethernet/osd.c index d9ace224..7832bd3c 100644 --- a/drivers/net/ethernet/nvidia/nvethernet/osd.c +++ b/drivers/net/ethernet/nvidia/nvethernet/osd.c @@ -878,6 +878,10 @@ void ether_restart_lane_bringup_task(struct tasklet_struct *t) { struct ether_priv_data *pdata = from_tasklet(pdata, t, lane_restart_task); + if (pdata->osi_core->mac == OSI_MAC_HW_MGBE_T26X) { + netdev_info(pdata->ndev, "Ignoring restart_lane_bringup_task!!!\n"); + return; + } if (pdata->tx_start_stop == OSI_DISABLE) { netif_tx_lock(pdata->ndev); netif_carrier_off(pdata->ndev);