Sfoglia il codice sorgente

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

Signed-off-by: Michael Brown <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown 15 anni fa
parent
commit
97ef28aea0

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

548
 		undinic->hacks |= UNDI_HACK_EB54;
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
 	/* Register network device */
551
 	/* Register network device */
555
 	if ( ( rc = register_netdev ( netdev ) ) != 0 )
552
 	if ( ( rc = register_netdev ( netdev ) ) != 0 )
556
 		goto err_register;
553
 		goto err_register;
557
 
554
 
555
+	/* Mark as link up; we don't handle link state */
556
+	netdev_link_up ( netdev );
557
+
558
 	DBGC ( undinic, "UNDINIC %p added\n", undinic );
558
 	DBGC ( undinic, "UNDINIC %p added\n", undinic );
559
 	return 0;
559
 	return 0;
560
 
560
 

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

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

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

938
 	HWAddr[4] = inf_3c90x->eeprom[eepromHwAddrOffset + 2] >> 8;
938
 	HWAddr[4] = inf_3c90x->eeprom[eepromHwAddrOffset + 2] >> 8;
939
 	HWAddr[5] = inf_3c90x->eeprom[eepromHwAddrOffset + 2] & 0xFF;
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
 	if ((rc = register_netdev(netdev)) != 0) {
941
 	if ((rc = register_netdev(netdev)) != 0) {
945
 		DBG("3c90x: register_netdev() failed\n");
942
 		DBG("3c90x: register_netdev() failed\n");
946
 		netdev_put(netdev);
943
 		netdev_put(netdev);
947
 		return rc;
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
 	return 0;
950
 	return 0;
951
 }
951
 }
952
 
952
 

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

248
 	hw->dmar_block = atl1e_dma_req_1024;
248
 	hw->dmar_block = atl1e_dma_req_1024;
249
 	hw->dmaw_block = atl1e_dma_req_1024;
249
 	hw->dmaw_block = atl1e_dma_req_1024;
250
 
250
 
251
-	netdev_link_down(adapter->netdev);
252
-
253
 	return 0;
251
 	return 0;
254
 }
252
 }
255
 
253
 
1212
 		goto err_free_netdev;
1210
 		goto err_free_netdev;
1213
 	}
1211
 	}
1214
 
1212
 
1215
-	netdev_link_down(netdev);
1216
-
1217
 	cards_found++;
1213
 	cards_found++;
1218
 	return 0;
1214
 	return 0;
1219
 
1215
 

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

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

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

803
 	/* reset the hardware with the new settings */
803
 	/* reset the hardware with the new settings */
804
 	e1000_reset ( adapter );
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
 	if ( ( err = register_netdev ( netdev ) ) != 0)
806
 	if ( ( err = register_netdev ( netdev ) ) != 0)
810
 		goto err_register;
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
 	for (i = 0; i < 6; i++)
812
 	for (i = 0; i < 6; i++)
813
 		DBG ("%02x%s", netdev->ll_addr[i], i == 5 ? "\n" : ":");
813
 		DBG ("%02x%s", netdev->ll_addr[i], i == 5 ? "\n" : ":");
814
 
814
 

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

1155
 	/* reset the hardware with the new settings */
1155
 	/* reset the hardware with the new settings */
1156
 	e1000e_reset ( adapter );
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
 	if ( ( err = register_netdev ( netdev ) ) != 0) {
1158
 	if ( ( err = register_netdev ( netdev ) ) != 0) {
1162
                 DBG ( "err_register\n" );
1159
                 DBG ( "err_register\n" );
1163
 		goto err_register;
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
 	for (i = 0; i < 6; i++)
1166
 	for (i = 0; i < 6; i++)
1167
 		DBG ("%02x%s", netdev->ll_addr[i], i == 5 ? "\n" : ":");
1167
 		DBG ("%02x%s", netdev->ll_addr[i], i == 5 ? "\n" : ":");
1168
 
1168
 

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

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

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

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

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

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

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

905
 	 * driver. */
905
 	 * driver. */
906
 	igb_get_hw_control(adapter);
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
 	if ( ( err = register_netdev ( netdev ) ) != 0) {
908
 	if ( ( err = register_netdev ( netdev ) ) != 0) {
912
 		DBG ( "err_register\n" );
909
 		DBG ( "err_register\n" );
913
 		goto err_register;
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
 	for (i = 0; i < 6; i++) {
916
 	for (i = 0; i < 6; i++) {
917
 		DBG ("%02x%s", netdev->ll_addr[i], i == 5 ? "\n" : ":");
917
 		DBG ("%02x%s", netdev->ll_addr[i], i == 5 ? "\n" : ":");
918
         }
918
         }

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

1249
 	 * Bring down phy before interface is opened.
1249
 	 * Bring down phy before interface is opened.
1250
 	 */
1250
 	 */
1251
 	jme_phy_off(jme);
1251
 	jme_phy_off(jme);
1252
-	netdev_link_down(netdev);
1253
 
1252
 
1254
 	/*
1253
 	/*
1255
 	 * Reset MAC processor and reload EEPROM for MAC Address
1254
 	 * Reset MAC processor and reload EEPROM for MAC Address

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

114
 	 */
114
 	 */
115
 	dev->desc.irq = nic.irqno;
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
 	if ( ( rc = register_netdev ( netdev ) ) != 0 )
117
 	if ( ( rc = register_netdev ( netdev ) ) != 0 )
121
 		goto err_register;
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
 	/* Do not remove this message */
123
 	/* Do not remove this message */
124
 	printf ( "WARNING: Using legacy NIC wrapper on %s\n",
124
 	printf ( "WARNING: Using legacy NIC wrapper on %s\n",
125
 		 netdev->ll_protocol->ntoa ( nic.node_addr ) );
125
 		 netdev->ll_protocol->ntoa ( nic.node_addr ) );

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

208
 		last = last1;
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
 	if ((rc = register_netdev (netdev)) != 0)
211
 	if ((rc = register_netdev (netdev)) != 0)
215
 		goto err_register_netdev;
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
 	return 0;
217
 	return 0;
218
 
218
 
219
 err_register_netdev:
219
 err_register_netdev:

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

252
 	status = pnic_command ( pnic, PNIC_CMD_READ_MAC, NULL, 0,
252
 	status = pnic_command ( pnic, PNIC_CMD_READ_MAC, NULL, 0,
253
 				netdev->hw_addr, ETH_ALEN, NULL );
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
 	/* Register network device */
255
 	/* Register network device */
259
 	if ( ( rc = register_netdev ( netdev ) ) != 0 )
256
 	if ( ( rc = register_netdev ( netdev ) ) != 0 )
260
 		goto err;
257
 		goto err;
261
 
258
 
259
+	/* Mark as link up; PNIC has no concept of link state */
260
+	netdev_link_up ( netdev );
261
+
262
 	return 0;
262
 	return 0;
263
 
263
 
264
  err:
264
  err:

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

528
 	rtl_init_eeprom ( netdev );
528
 	rtl_init_eeprom ( netdev );
529
 	nvs_read ( &rtl->eeprom.nvs, EE_MAC, netdev->hw_addr, ETH_ALEN );
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
 	/* Register network device */
531
 	/* Register network device */
535
 	if ( ( rc = register_netdev ( netdev ) ) != 0 )
532
 	if ( ( rc = register_netdev ( netdev ) ) != 0 )
536
 		goto err_register_netdev;
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
 	/* Register non-volatile storage */
538
 	/* Register non-volatile storage */
539
 	if ( rtl->nvo.nvs ) {
539
 	if ( rtl->nvo.nvs ) {
540
 		if ( ( rc = register_nvo ( &rtl->nvo,
540
 		if ( ( rc = register_nvo ( &rtl->nvo,

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

1143
 	sis190_set_speed_auto(dev);
1143
 	sis190_set_speed_auto(dev);
1144
 	sis190_phy_task(tp);
1144
 	sis190_phy_task(tp);
1145
 
1145
 
1146
-	netdev_link_down(dev);
1147
 out:
1146
 out:
1148
 	return rc;
1147
 	return rc;
1149
 
1148
 

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

2324
 	/* read the mac address */
2324
 	/* read the mac address */
2325
 	memcpy(dev->hw_addr, (void *) (hw->regs + B2_MAC_1 + port*8), ETH_ALEN);
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
 	return dev;
2327
 	return dev;
2331
 }
2328
 }
2332
 
2329
 

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

378
 		       eth_ntoa ( netdev->hw_addr ) );
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
 	/* Mark link as up, control virtqueue is not used */
385
 	/* Mark link as up, control virtqueue is not used */
382
 	netdev_link_up ( netdev );
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
 	return rc;
395
 	return rc;
390
 }
396
 }
391
 
397
 

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

443
 		goto _out2;
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
 	 * interrupt comes the state will be automatically changed to
447
 	 * interrupt comes the state will be automatically changed to
448
 	 * the right state.
448
 	 * the right state.
449
 	 */
449
 	 */
450
-	netdev_link_down(ndev);
451
 
450
 
452
 	vxge_debug(VXGE_INFO, "%s: Ethernet device registered\n",
451
 	vxge_debug(VXGE_INFO, "%s: Ethernet device registered\n",
453
 		VXGE_DRIVER_NAME);
452
 		VXGE_DRIVER_NAME);

Loading…
Annulla
Salva