Skip to content

Commit 1fec749

Browse files
net: eth: disabling hot plugging, memory leak fix
1 parent 54e809f commit 1fec749

File tree

1 file changed

+15
-13
lines changed

1 file changed

+15
-13
lines changed

drivers/net/ethernet/altera/intel_fpga_eth_main.c

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,10 @@
1-
// SPDX-License-Identifier: GPL-2.0
1+
// SPDX-License-Identifier: GPL
22
/* Intel FPGA Ethernet MAC driver
3-
* Copyright (C) 2020-2022 Intel Corporation. All rights reserved
3+
* Copyright (C) 2022,2023 Intel Corporation. All rights reserved
44
*
55
* Contributors:
6-
* Roman Bulgakov
7-
* Yu Ying Choov
8-
* Dalon Westergreen
9-
* Joyce Ooi
10-
* Arzu Ozdogan-tackin
6+
* Preetam Narayan
117
*
12-
* Original driver contributed by GlobalLogic.
138
*/
149

1510
#include <linux/etherdevice.h>
@@ -33,7 +28,6 @@
3328
#include "intel_fpga_eth_main.h"
3429
#include "intel_fpga_eth_hssi_itf.h"
3530

36-
#define WATCHDOG_TX_TIMEOUT (1 * HZ)/3
3731
#define MAX_STABILITY_CHECK 10
3832

3933
/* Module parameters */
@@ -230,6 +224,9 @@ static void xtile_free_skbufs(struct net_device *dev)
230224

231225
for (i = 0; i < tx_descs; i++)
232226
xtile_free_tx_buffer(priv, &priv->dma_priv.tx_ring[i]);
227+
228+
kfree(priv->dma_priv.tx_ring);
229+
kfree(priv->dma_priv.rx_ring);
233230
}
234231

235232
/* Reallocate the skb for the reception process
@@ -462,10 +459,8 @@ static irqreturn_t intel_fpga_xtile_isr(int irq, void *dev_id)
462459
__napi_schedule(&priv->napi);
463460
}
464461

465-
if ( irq == priv->rx_irq )
466-
priv->dmaops->clear_rxirq(&priv->dma_priv);
467-
else
468-
priv->dmaops->clear_txirq(&priv->dma_priv);
462+
priv->dmaops->clear_rxirq(&priv->dma_priv);
463+
priv->dmaops->clear_txirq(&priv->dma_priv);
469464

470465
spin_unlock(&priv->rxdma_irq_lock);
471466

@@ -691,6 +686,13 @@ static int xtile_shutdown(struct net_device *dev)
691686
/* Unregister TX interrupt */
692687
devm_free_irq(priv->device, priv->tx_irq, dev);
693688

689+
/* to ensure we have acquired the lock and do proper cleaning */
690+
spin_lock(&priv->tx_lock);
691+
spin_lock(&priv->mac_cfg_lock);
692+
693+
spin_unlock(&priv->tx_lock);
694+
spin_unlock(&priv->mac_cfg_lock);
695+
694696
/* disable and reset the MAC, empties fifo */
695697
/* Trigger RX digital reset */
696698
pma_digital_reset(priv, false, true);

0 commit comments

Comments
 (0)