Browse Source

[netdevice] Call netdev_link_[up|down|err]() only while registered

Signed-off-by: Michael Brown <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown 13 years ago
parent
commit
97ef28aea0

+ 3
- 3
src/arch/i386/drivers/net/undinet.c View File

@@ -548,13 +548,13 @@ int undinet_probe ( struct undi_device *undi ) {
548 548
 		undinic->hacks |= UNDI_HACK_EB54;
549 549
 	}
550 550
 
551
-	/* Mark as link up; we don't handle link state */
552
-	netdev_link_up ( netdev );
553
-
554 551
 	/* Register network device */
555 552
 	if ( ( rc = register_netdev ( netdev ) ) != 0 )
556 553
 		goto err_register;
557 554
 
555
+	/* Mark as link up; we don't handle link state */
556
+	netdev_link_up ( netdev );
557
+
558 558
 	DBGC ( undinic, "UNDINIC %p added\n", undinic );
559 559
 	return 0;
560 560
 

+ 2
- 2
src/drivers/linux/tap.c View File

@@ -200,11 +200,11 @@ static int tap_probe(struct linux_device *device, struct linux_device_request *r
200 200
 	netdev->dev = &device->dev;
201 201
 	memset(nic, 0, sizeof(*nic));
202 202
 
203
-	netdev_link_up(netdev);
204
-
205 203
 	if ((rc = register_netdev(netdev)) != 0)
206 204
 		goto err_register;
207 205
 
206
+	netdev_link_up(netdev);
207
+
208 208
 	/* Look for the mandatory if setting */
209 209
 	if_setting = linux_find_setting("if", &request->settings);
210 210
 

+ 3
- 3
src/drivers/net/3c90x.c View File

@@ -938,15 +938,15 @@ static int a3c90x_probe(struct pci_device *pci,
938 938
 	HWAddr[4] = inf_3c90x->eeprom[eepromHwAddrOffset + 2] >> 8;
939 939
 	HWAddr[5] = inf_3c90x->eeprom[eepromHwAddrOffset + 2] & 0xFF;
940 940
 
941
-	/* we don't handle linkstates yet, so we're always up */
942
-	netdev_link_up(netdev);
943
-
944 941
 	if ((rc = register_netdev(netdev)) != 0) {
945 942
 		DBG("3c90x: register_netdev() failed\n");
946 943
 		netdev_put(netdev);
947 944
 		return rc;
948 945
 	}
949 946
 
947
+	/* we don't handle linkstates yet, so we're always up */
948
+	netdev_link_up(netdev);
949
+
950 950
 	return 0;
951 951
 }
952 952
 

+ 0
- 4
src/drivers/net/atl1e.c View File

@@ -248,8 +248,6 @@ static int atl1e_sw_init(struct atl1e_adapter *adapter)
248 248
 	hw->dmar_block = atl1e_dma_req_1024;
249 249
 	hw->dmaw_block = atl1e_dma_req_1024;
250 250
 
251
-	netdev_link_down(adapter->netdev);
252
-
253 251
 	return 0;
254 252
 }
255 253
 
@@ -1212,8 +1210,6 @@ static int atl1e_probe(struct pci_device *pdev,
1212 1210
 		goto err_free_netdev;
1213 1211
 	}
1214 1212
 
1215
-	netdev_link_down(netdev);
1216
-
1217 1213
 	cards_found++;
1218 1214
 	return 0;
1219 1215
 

+ 3
- 3
src/drivers/net/b44.c View File

@@ -682,9 +682,6 @@ static int b44_probe(struct pci_device *pci, const struct pci_device_id *id)
682 682
 
683 683
 	b44_load_mac_and_phy_addr(bp);
684 684
 
685
-	/* Link management currently not implemented */
686
-	netdev_link_up(netdev);
687
-
688 685
 	rc = register_netdev(netdev);
689 686
 	if (rc != 0) {
690 687
 		iounmap(bp->regs);
@@ -692,6 +689,9 @@ static int b44_probe(struct pci_device *pci, const struct pci_device_id *id)
692 689
 		return rc;
693 690
 	}
694 691
 
692
+	/* Link management currently not implemented */
693
+	netdev_link_up(netdev);
694
+
695 695
 	b44_chip_reset(bp, B44_CHIP_RESET_FULL);
696 696
 
697 697
 	DBG("b44 %s (%04x:%04x) regs=%p MAC=%s\n", id->name, id->vendor,

+ 3
- 3
src/drivers/net/e1000/e1000_main.c View File

@@ -803,12 +803,12 @@ int e1000_probe ( struct pci_device *pdev,
803 803
 	/* reset the hardware with the new settings */
804 804
 	e1000_reset ( adapter );
805 805
 
806
-	/* Mark as link up; we don't yet handle link state */
807
-	netdev_link_up ( netdev );
808
-
809 806
 	if ( ( err = register_netdev ( netdev ) ) != 0)
810 807
 		goto err_register;
811 808
 
809
+	/* Mark as link up; we don't yet handle link state */
810
+	netdev_link_up ( netdev );
811
+
812 812
 	for (i = 0; i < 6; i++)
813 813
 		DBG ("%02x%s", netdev->ll_addr[i], i == 5 ? "\n" : ":");
814 814
 

+ 3
- 3
src/drivers/net/e1000e/e1000e_main.c View File

@@ -1155,14 +1155,14 @@ int e1000e_probe ( struct pci_device *pdev,
1155 1155
 	/* reset the hardware with the new settings */
1156 1156
 	e1000e_reset ( adapter );
1157 1157
 
1158
-	/* Mark as link up; we don't yet handle link state */
1159
-	netdev_link_up ( netdev );
1160
-
1161 1158
 	if ( ( err = register_netdev ( netdev ) ) != 0) {
1162 1159
                 DBG ( "err_register\n" );
1163 1160
 		goto err_register;
1164 1161
         }
1165 1162
 
1163
+	/* Mark as link up; we don't yet handle link state */
1164
+	netdev_link_up ( netdev );
1165
+
1166 1166
 	for (i = 0; i < 6; i++)
1167 1167
 		DBG ("%02x%s", netdev->ll_addr[i], i == 5 ? "\n" : ":");
1168 1168
 

+ 2
- 2
src/drivers/net/eepro100.c View File

@@ -209,11 +209,11 @@ static int ifec_pci_probe ( struct pci_device *pci,
209 209
 	nvs_read ( &priv->eeprom.nvs, EEPROM_ADDR_MDIO_REGISTER,
210 210
 		   &priv->mdio_register, 2 );
211 211
 
212
-	netdev_link_up ( netdev );
213
-
214 212
 	if ( ( rc = register_netdev ( netdev ) ) != 0 )
215 213
 		goto error;
216 214
 
215
+	netdev_link_up ( netdev );
216
+
217 217
 	DBGP ( "ints\n" );
218 218
 
219 219
 	return 0;

+ 3
- 3
src/drivers/net/efi/snpnet.c View File

@@ -300,13 +300,13 @@ int snpnet_probe ( struct snp_device *snpdev ) {
300 300
 	memcpy ( netdev->hw_addr, snp->Mode->PermanentAddress.Addr,
301 301
 		 snp->Mode->HwAddressSize );
302 302
 
303
-	/* Mark as link up; we don't handle link state */
304
-	netdev_link_up ( netdev );
305
-
306 303
 	/* Register network device */
307 304
 	if ( ( rc = register_netdev ( netdev ) ) != 0 )
308 305
 		goto err_register;
309 306
 
307
+	/* Mark as link up; we don't handle link state */
308
+	netdev_link_up ( netdev );
309
+
310 310
 	DBGC ( snp, "SNP %p added\n", snp );
311 311
 	return 0;
312 312
 

+ 1
- 1
src/drivers/net/etherfabric.c View File

@@ -4183,10 +4183,10 @@ efab_probe ( struct pci_device *pci,
4183 4183
 
4184 4184
 	memcpy ( netdev->hw_addr, efab->mac_addr, ETH_ALEN );
4185 4185
 
4186
-	netdev_link_up ( netdev );
4187 4186
 	rc = register_netdev ( netdev );
4188 4187
 	if ( rc )
4189 4188
 		goto fail4;
4189
+	netdev_link_up ( netdev );
4190 4190
 
4191 4191
 	/* Advertise non-volatile storage */
4192 4192
 	if ( efab->nvo.nvs ) {

+ 3
- 3
src/drivers/net/igb/igb_main.c View File

@@ -905,14 +905,14 @@ int igb_probe ( struct pci_device *pdev,
905 905
 	 * driver. */
906 906
 	igb_get_hw_control(adapter);
907 907
 
908
-	/* Mark as link up; we don't yet handle link state */
909
-	netdev_link_up ( netdev );
910
-
911 908
 	if ( ( err = register_netdev ( netdev ) ) != 0) {
912 909
 		DBG ( "err_register\n" );
913 910
 		goto err_register;
914 911
 	}
915 912
 
913
+	/* Mark as link up; we don't yet handle link state */
914
+	netdev_link_up ( netdev );
915
+
916 916
 	for (i = 0; i < 6; i++) {
917 917
 		DBG ("%02x%s", netdev->ll_addr[i], i == 5 ? "\n" : ":");
918 918
         }

+ 0
- 1
src/drivers/net/jme.c View File

@@ -1249,7 +1249,6 @@ jme_probe(struct pci_device *pci, const struct pci_device_id *id __unused)
1249 1249
 	 * Bring down phy before interface is opened.
1250 1250
 	 */
1251 1251
 	jme_phy_off(jme);
1252
-	netdev_link_down(netdev);
1253 1252
 
1254 1253
 	/*
1255 1254
 	 * Reset MAC processor and reload EEPROM for MAC Address

+ 3
- 3
src/drivers/net/legacy.c View File

@@ -114,12 +114,12 @@ int legacy_probe ( void *hwdev,
114 114
 	 */
115 115
 	dev->desc.irq = nic.irqno;
116 116
 
117
-	/* Mark as link up; legacy devices don't handle link state */
118
-	netdev_link_up ( netdev );
119
-
120 117
 	if ( ( rc = register_netdev ( netdev ) ) != 0 )
121 118
 		goto err_register;
122 119
 
120
+	/* Mark as link up; legacy devices don't handle link state */
121
+	netdev_link_up ( netdev );
122
+
123 123
 	/* Do not remove this message */
124 124
 	printf ( "WARNING: Using legacy NIC wrapper on %s\n",
125 125
 		 netdev->ll_protocol->ntoa ( nic.node_addr ) );

+ 3
- 3
src/drivers/net/natsemi.c View File

@@ -208,12 +208,12 @@ static int natsemi_probe (struct pci_device *pci,
208 208
 		last = last1;
209 209
 	}
210 210
 
211
-	/* Mark as link up; we don't yet handle link state */
212
-	netdev_link_up ( netdev );
213
-
214 211
 	if ((rc = register_netdev (netdev)) != 0)
215 212
 		goto err_register_netdev;
216 213
 
214
+	/* Mark as link up; we don't yet handle link state */
215
+	netdev_link_up ( netdev );
216
+
217 217
 	return 0;
218 218
 
219 219
 err_register_netdev:

+ 3
- 3
src/drivers/net/pnic.c View File

@@ -252,13 +252,13 @@ static int pnic_probe ( struct pci_device *pci,
252 252
 	status = pnic_command ( pnic, PNIC_CMD_READ_MAC, NULL, 0,
253 253
 				netdev->hw_addr, ETH_ALEN, NULL );
254 254
 
255
-	/* Mark as link up; PNIC has no concept of link state */
256
-	netdev_link_up ( netdev );
257
-
258 255
 	/* Register network device */
259 256
 	if ( ( rc = register_netdev ( netdev ) ) != 0 )
260 257
 		goto err;
261 258
 
259
+	/* Mark as link up; PNIC has no concept of link state */
260
+	netdev_link_up ( netdev );
261
+
262 262
 	return 0;
263 263
 
264 264
  err:

+ 3
- 3
src/drivers/net/rtl8139.c View File

@@ -528,13 +528,13 @@ static int rtl_probe ( struct pci_device *pci,
528 528
 	rtl_init_eeprom ( netdev );
529 529
 	nvs_read ( &rtl->eeprom.nvs, EE_MAC, netdev->hw_addr, ETH_ALEN );
530 530
 
531
-	/* Mark as link up; we don't yet handle link state */
532
-	netdev_link_up ( netdev );
533
-	
534 531
 	/* Register network device */
535 532
 	if ( ( rc = register_netdev ( netdev ) ) != 0 )
536 533
 		goto err_register_netdev;
537 534
 
535
+	/* Mark as link up; we don't yet handle link state */
536
+	netdev_link_up ( netdev );
537
+
538 538
 	/* Register non-volatile storage */
539 539
 	if ( rtl->nvo.nvs ) {
540 540
 		if ( ( rc = register_nvo ( &rtl->nvo,

+ 0
- 1
src/drivers/net/sis190.c View File

@@ -1143,7 +1143,6 @@ static int sis190_probe(struct pci_device *pdev,
1143 1143
 	sis190_set_speed_auto(dev);
1144 1144
 	sis190_phy_task(tp);
1145 1145
 
1146
-	netdev_link_down(dev);
1147 1146
 out:
1148 1147
 	return rc;
1149 1148
 

+ 0
- 3
src/drivers/net/skge.c View File

@@ -2324,9 +2324,6 @@ static struct net_device *skge_devinit(struct skge_hw *hw, int port,
2324 2324
 	/* read the mac address */
2325 2325
 	memcpy(dev->hw_addr, (void *) (hw->regs + B2_MAC_1 + port*8), ETH_ALEN);
2326 2326
 
2327
-	/* device is off until link detection */
2328
-	netdev_link_down(dev);
2329
-
2330 2327
 	return dev;
2331 2328
 }
2332 2329
 

+ 11
- 5
src/drivers/net/virtio-net.c View File

@@ -378,14 +378,20 @@ static int virtnet_probe ( struct pci_device *pci,
378 378
 		       eth_ntoa ( netdev->hw_addr ) );
379 379
 	}
380 380
 
381
+	/* Register network device */
382
+	if ( ( rc = register_netdev ( netdev ) ) != 0 )
383
+		goto err_register_netdev;
384
+
381 385
 	/* Mark link as up, control virtqueue is not used */
382 386
 	netdev_link_up ( netdev );
383 387
 
384
-	if ( ( rc = register_netdev ( netdev ) ) != 0 ) {
385
-		vp_reset ( ioaddr );
386
-		netdev_nullify ( netdev );
387
-		netdev_put ( netdev );
388
-	}
388
+	return 0;
389
+
390
+	unregister_netdev ( netdev );
391
+ err_register_netdev:
392
+	vp_reset ( ioaddr );
393
+	netdev_nullify ( netdev );
394
+	netdev_put ( netdev );
389 395
 	return rc;
390 396
 }
391 397
 

+ 1
- 2
src/drivers/net/vxge/vxge_main.c View File

@@ -443,11 +443,10 @@ int vxge_device_register(struct __vxge_hw_device *hldev,
443 443
 		goto _out2;
444 444
 	}
445 445
 
446
-	/* Make Link state as off at this point, when the Link change
446
+	/* Leave link state as off at this point, when the link change
447 447
 	 * interrupt comes the state will be automatically changed to
448 448
 	 * the right state.
449 449
 	 */
450
-	netdev_link_down(ndev);
451 450
 
452 451
 	vxge_debug(VXGE_INFO, "%s: Ethernet device registered\n",
453 452
 		VXGE_DRIVER_NAME);

Loading…
Cancel
Save