staging: octeon: Propagate tx initialization failures

Instead of calling panic(), log and propagate the error upwards for
better error handling.

Pass platform_device to tx initializer to match the rx
initializer interface and to log device specific failures.

Signed-off-by: Prashant Rahul <prashantrahul23@gmail.com>
Tested-by: Klara Modin <klarasmodin@gmail.com>
Tested-by: Klara Modin <klarasomdin@gmail.com>
Link: https://patch.msgid.link/20260702-staging-driver-octeon-panic-v2-3-2c2b6ae086dd@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Prashant Rahul
2026-07-02 12:36:16 +05:30
committed by Greg Kroah-Hartman
parent ae43503640
commit 53113fbfb9
3 changed files with 11 additions and 10 deletions

View File

@@ -5,6 +5,7 @@
* Copyright (c) 2003-2010 Cavium Networks
*/
#include <linux/platform_device.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/netdevice.h>
@@ -649,19 +650,19 @@ static irqreturn_t cvm_oct_tx_cleanup_watchdog(int cpl, void *dev_id)
return IRQ_HANDLED;
}
void cvm_oct_tx_initialize(void)
int cvm_oct_tx_initialize(struct platform_device *pdev)
{
int i;
int ret;
/* Disable the interrupt. */
cvmx_write_csr(CVMX_CIU_TIMX(1), 0);
/* Register an IRQ handler to receive CIU_TIMX(1) interrupts */
i = request_irq(OCTEON_IRQ_TIMER1,
cvm_oct_tx_cleanup_watchdog, 0,
"Ethernet", cvm_oct_device);
if (i)
panic("Could not acquire Ethernet IRQ %d\n", OCTEON_IRQ_TIMER1);
ret = request_irq(OCTEON_IRQ_TIMER1, cvm_oct_tx_cleanup_watchdog, 0,
"Ethernet", cvm_oct_device);
if (ret)
dev_warn(&pdev->dev, "Could not acquire Ethernet IRQ %d\n",
OCTEON_IRQ_TIMER1);
return ret;
}
void cvm_oct_tx_shutdown(void)

View File

@@ -9,6 +9,6 @@ netdev_tx_t cvm_oct_xmit(struct sk_buff *skb, struct net_device *dev);
netdev_tx_t cvm_oct_xmit_pow(struct sk_buff *skb, struct net_device *dev);
int cvm_oct_transmit_qos(struct net_device *dev, void *work_queue_entry,
int do_free, int qos);
void cvm_oct_tx_initialize(void);
int cvm_oct_tx_initialize(struct platform_device *pdev);
void cvm_oct_tx_shutdown(void);
void cvm_oct_tx_shutdown_dev(struct net_device *dev);

View File

@@ -934,7 +934,7 @@ static int cvm_oct_probe(struct platform_device *pdev)
}
}
cvm_oct_tx_initialize();
cvm_oct_tx_initialize(pdev);
cvm_oct_rx_initialize(pdev);
/*