Netdev List
 help / color / mirror / Atom feed
* [Patch] netxen_nic: Bugfix for wrong RUNNING status of NX3031 NICs with no link
@ 2014-01-02  6:32 jiang.biao2
  2014-01-02  8:24 ` David Miller
  0 siblings, 1 reply; 7+ messages in thread
From: jiang.biao2 @ 2014-01-02  6:32 UTC (permalink / raw)
  To: Manish Chopra, Sony Chacko, Rajesh Borundia; +Cc: netdev, li.fengmao



From: Li Fengmao <li.fengmao@zte.com.cn>

Ifconfig command displays RUNNING status when there is no link on
NX3031 NICs. The problem is caused by the wrong calling order of
netif_carrier_off() and register_netdev() in netxen_setup_netdev(),
dev->reg_state is initialized to NETREG_UNINITIALIZED before
registering network device, so the linkwatch_fire_event() will not
be called to notify the link change event in netif_carrier_off(),
and the operational status of network device will be set to
IF_OPER_UNKNOWN. In that case, the IFF_RUNNING flags will be set,
which result in the wrong RUNNING status in the result of ifconfig
command.

It can be solved by calling netif_carrier_off() after
register_netdev() in netxen_setup_netdev() to ensure the
notification of the link change event. And then the operational
status of device will be set to IF_OPER_DOWN correctly.

Steps to reproduce the bug:
1. Prepare a NX3031 NIC with no network cable on it.
2. Reboot the system. (e.g exec reboot command)
3. Activate the interface. (e.g ifconfig eth0 up)
4. The operstatus of the NX3031 NIC will be RUNNING in the result of
ifconfig command.

Signed-off-by: Li Fengmao <li.fengmao@zte.com.cn>
Reviewed-by: Long Chun <long.chun@zte.com.cn>
Reviewed-by: Wang Liang <wang.liang82@zte.com.cn>
Reviewed-by: Cai Qu <cai.qu@zte.com.cn>
Reviewed-by: Jiang Biao <jiang.biao2@zte.com.cn>

--- a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
+++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
@@ -1404,13 +1404,13 @@ netxen_setup_netdev(struct netxen_adapte
 	if (netxen_read_mac_addr(adapter))
 		dev_warn(&pdev->dev, "failed to read mac addr\n");

-	netif_carrier_off(netdev);
-
 	err = register_netdev(netdev);
 	if (err) {
 		dev_err(&pdev->dev, "failed to register net device\n");
 		return err;
 	}
+
+	netif_carrier_off(netdev);

 	return 0;
 }

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2014-01-06 20:24 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-02  6:32 [Patch] netxen_nic: Bugfix for wrong RUNNING status of NX3031 NICs with no link jiang.biao2
2014-01-02  8:24 ` David Miller
2014-01-02  9:16   ` jiang.biao2
2014-01-02 18:00     ` Ben Hutchings
     [not found]       ` <OF9AC42061.4BF09F2E-ON48257C55.00253C5A-48257C55.0027274D@zte.com.cn>
2014-01-03  7:18         ` =?iso-2022-jp-3?B?GyRCRXobJChQJTsbKEI6?= " David Miller
2014-01-06 20:24         ` 答复: " Ben Hutchings
     [not found]   ` <OFB91B6321.D74C0B57-ON48257C54.00308F8C-48257C54.0030D7E7@zte.com.cn>
2014-01-02 17:33     ` =?iso-2022-jp-3?B?GyRCRXobJChQJTsbKEI6?= " David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox