There are several corner cases where driver might get a 2nd notification
about the same link change. Don't log any additional changes if the
physical carrier is already reported as it should.

Signed-off-by: Yuval Mintz <yuval.mi...@qlogic.com>
---
 drivers/net/ethernet/qlogic/qede/qede_main.c | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/qlogic/qede/qede_main.c 
b/drivers/net/ethernet/qlogic/qede/qede_main.c
index f07b9a9..c0dd236 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_main.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_main.c
@@ -2780,13 +2780,17 @@ static void qede_link_update(void *dev, struct 
qed_link_output *link)
        }
 
        if (link->link_up) {
-               DP_NOTICE(edev, "Link is up\n");
-               netif_tx_start_all_queues(edev->ndev);
-               netif_carrier_on(edev->ndev);
+               if (!netif_carrier_ok(edev->ndev)) {
+                       DP_NOTICE(edev, "Link is up\n");
+                       netif_tx_start_all_queues(edev->ndev);
+                       netif_carrier_on(edev->ndev);
+               }
        } else {
-               DP_NOTICE(edev, "Link is down\n");
-               netif_tx_disable(edev->ndev);
-               netif_carrier_off(edev->ndev);
+               if (netif_carrier_ok(edev->ndev)) {
+                       DP_NOTICE(edev, "Link is down\n");
+                       netif_tx_disable(edev->ndev);
+                       netif_carrier_off(edev->ndev);
+               }
        }
 }
 
-- 
1.9.3

Reply via email to