From ba419cc89433fd2a3a09fd0fce37cc68b14705f3 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 5d9c5bf7c1a..10b24ffd7a9 100644 --- a/drivers/net/e1000.c +++ b/drivers/net/e1000.c @@ -572,6 +572,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 5cb5e9a3e12..c3b689f2b63 100644 --- a/drivers/net/igc.c +++ b/drivers/net/igc.c @@ -526,6 +526,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;