From 6a7ad1e7285db4c9bc57414f1e0169d733284aa9 Mon Sep 17 00:00:00 2001 From: zhanghongyu Date: Fri, 11 Oct 2024 12:27:58 +0800 Subject: [PATCH] drivers/net/{e1000|igc}: limit no packet is transmit after carrier off if the drvier tx queue is full up during the network cable unplugging, there will be no txdone interrupt after inserting the network cable, transmit cannot be recovered. Modified to no longer fill the driver with packet when link down. Signed-off-by: zhanghongyu --- drivers/net/e1000.c | 5 +++++ drivers/net/igc.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/drivers/net/e1000.c b/drivers/net/e1000.c index 423201b5333..2f3d9922e82 100644 --- a/drivers/net/e1000.c +++ b/drivers/net/e1000.c @@ -498,6 +498,11 @@ static int e1000_transmit(FAR struct netdev_lowerhalf_s *dev, return -EINVAL; } + if (!IFF_IS_RUNNING(dev->netdev.d_flags)) + { + return -ENETDOWN; + } + /* Store TX packet reference */ priv->tx_pkt[priv->tx_now] = pkt; diff --git a/drivers/net/igc.c b/drivers/net/igc.c index 328bfd1bf9c..9645b2e0b64 100644 --- a/drivers/net/igc.c +++ b/drivers/net/igc.c @@ -456,6 +456,11 @@ static int igc_transmit(FAR struct netdev_lowerhalf_s *dev, return -EINVAL; } + if (!IFF_IS_RUNNING(dev->netdev.d_flags)) + { + return -ENETDOWN; + } + /* Store TX packet reference */ priv->tx_pkt[priv->tx_now] = pkt;