This is an automated email from the ASF dual-hosted git repository. xiaoxiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit 0a8ef045ab691269e472540a044ba94343d1c3c1 Author: p-szafonimateusz <p-szafonimate...@xiaomi.com> AuthorDate: Thu May 29 12:05:36 2025 +0200 drivers/net/{e1000|igc}: update link status when card is enabled Update link status in case link status interrupt is missing. Signed-off-by: p-szafonimateusz <p-szafonimate...@xiaomi.com> --- drivers/net/e1000.c | 13 ++++++------- drivers/net/igc.c | 15 +++++++-------- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/drivers/net/e1000.c b/drivers/net/e1000.c index 4750c007e0..c87ae3a5f4 100644 --- a/drivers/net/e1000.c +++ b/drivers/net/e1000.c @@ -144,10 +144,6 @@ struct e1000_driver_s struct netdev_lowerhalf_s dev; struct work_s work; - /* Driver state */ - - bool bifup; - /* Packets list */ FAR netpkt_t **tx_pkt; @@ -985,13 +981,17 @@ static int e1000_ifup(FAR struct netdev_lowerhalf_s *dev) dev->netdev.d_ipv6addr[6], dev->netdev.d_ipv6addr[7]); #endif + flags = enter_critical_section(); + /* Enable the Ethernet */ - flags = enter_critical_section(); e1000_enable(priv); - priv->bifup = true; leave_critical_section(flags); + /* Update link status in case link status interrupt is missing */ + + e1000_link_work(priv); + return OK; } @@ -1028,7 +1028,6 @@ static int e1000_ifdown(FAR struct netdev_lowerhalf_s *dev) /* Mark the device "down" */ - priv->bifup = false; leave_critical_section(flags); return OK; } diff --git a/drivers/net/igc.c b/drivers/net/igc.c index 4da6c11af6..778c513af2 100644 --- a/drivers/net/igc.c +++ b/drivers/net/igc.c @@ -125,10 +125,6 @@ struct igc_driver_s struct netdev_lowerhalf_s dev; struct work_s work; - /* Driver state */ - - bool bifup; - /* Packets list */ FAR netpkt_t **tx_pkt; @@ -580,7 +576,7 @@ static int igc_transmit(FAR struct netdev_lowerhalf_s *dev, * *****************************************************************************/ -static FAR netpkt_t * igc_receive(FAR struct netdev_lowerhalf_s *dev) +static FAR netpkt_t *igc_receive(FAR struct netdev_lowerhalf_s *dev) { FAR struct igc_driver_s *priv = (FAR struct igc_driver_s *)dev; FAR netpkt_t *pkt = NULL; @@ -866,13 +862,17 @@ static int igc_ifup(FAR struct netdev_lowerhalf_s *dev) dev->netdev.d_ipv6addr[6], dev->netdev.d_ipv6addr[7]); #endif + flags = enter_critical_section(); + /* Enable the Ethernet */ - flags = enter_critical_section(); igc_enable(priv); - priv->bifup = true; leave_critical_section(flags); + /* Update link status in case link status interrupt is missing */ + + igc_link_work(priv); + return OK; } @@ -909,7 +909,6 @@ static int igc_ifdown(FAR struct netdev_lowerhalf_s *dev) /* Mark the device "down" */ - priv->bifup = false; leave_critical_section(flags); return OK; }