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;
 }

Reply via email to