diff options
author | Michael Brown | 2008-03-21 23:15:31 +0100 |
---|---|---|
committer | Michael Brown | 2008-03-21 23:15:31 +0100 |
commit | 8afb36c3bc08ff0c9bdf0a8496cb08a8bfe287f3 (patch) | |
tree | 4369c087ca4c75593fe6d287fca658516d20a9d8 /src/drivers/net/rtl8139.c | |
parent | [DHCP] Kill off some no-longer-used DHCP functions (diff) | |
download | ipxe-8afb36c3bc08ff0c9bdf0a8496cb08a8bfe287f3.tar.gz ipxe-8afb36c3bc08ff0c9bdf0a8496cb08a8bfe287f3.tar.xz ipxe-8afb36c3bc08ff0c9bdf0a8496cb08a8bfe287f3.zip |
[Settings] Migrate DHCP and NVO code to the new settings API (untested)
Diffstat (limited to 'src/drivers/net/rtl8139.c')
-rw-r--r-- | src/drivers/net/rtl8139.c | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/src/drivers/net/rtl8139.c b/src/drivers/net/rtl8139.c index 83fac554..c432884c 100644 --- a/src/drivers/net/rtl8139.c +++ b/src/drivers/net/rtl8139.c @@ -261,9 +261,10 @@ static struct nvo_fragment rtl_nvo_fragments[] = { /** * Set up for EEPROM access * - * @v rtl RTL8139 NIC + * @v netdev Net device */ -static void rtl_init_eeprom ( struct rtl8139_nic *rtl ) { +static void rtl_init_eeprom ( struct net_device *netdev ) { + struct rtl8139_nic *rtl = netdev->priv; int ee9356; int vpd; @@ -288,19 +289,20 @@ static void rtl_init_eeprom ( struct rtl8139_nic *rtl ) { if ( vpd ) { DBG ( "EEPROM in use for VPD; cannot use for options\n" ); } else { - rtl->nvo.nvs = &rtl->eeprom.nvs; - rtl->nvo.fragments = rtl_nvo_fragments; + nvo_init ( &rtl->nvo, &rtl->eeprom.nvs, rtl_nvo_fragments, + &netdev->refcnt ); } } /** * Reset NIC * - * @v rtl RTL8139 NIC + * @v netdev Net device * * Issues a hardware reset and waits for the reset to complete. */ -static void rtl_reset ( struct rtl8139_nic *rtl ) { +static void rtl_reset ( struct net_device *netdev ) { + struct rtl8139_nic *rtl = netdev->priv; /* Reset chip */ outb ( CmdReset, rtl->ioaddr + ChipCmd ); @@ -352,7 +354,7 @@ static void rtl_close ( struct net_device *netdev ) { struct rtl8139_nic *rtl = netdev->priv; /* Reset the hardware to disable everything in one go */ - rtl_reset ( rtl ); + rtl_reset ( netdev ); /* Free RX ring */ free ( rtl->rx.ring ); @@ -366,7 +368,8 @@ static void rtl_close ( struct net_device *netdev ) { * @v iobuf I/O buffer * @ret rc Return status code */ -static int rtl_transmit ( struct net_device *netdev, struct io_buffer *iobuf ) { +static int rtl_transmit ( struct net_device *netdev, + struct io_buffer *iobuf ) { struct rtl8139_nic *rtl = netdev->priv; /* Check for space in TX ring */ @@ -512,8 +515,8 @@ static int rtl_probe ( struct pci_device *pci, adjust_pci_device ( pci ); /* Reset the NIC, set up EEPROM access and read MAC address */ - rtl_reset ( rtl ); - rtl_init_eeprom ( rtl ); + rtl_reset ( netdev ); + rtl_init_eeprom ( netdev ); nvs_read ( &rtl->eeprom.nvs, EE_MAC, netdev->ll_addr, ETH_ALEN ); /* Register network device */ @@ -522,7 +525,8 @@ static int rtl_probe ( struct pci_device *pci, /* Register non-volatile storage */ if ( rtl->nvo.nvs ) { - if ( ( rc = nvo_register ( &rtl->nvo ) ) != 0 ) + if ( ( rc = register_nvo ( &rtl->nvo, + netdev_settings ( netdev ) ) ) != 0) goto err_register_nvo; } @@ -531,7 +535,7 @@ static int rtl_probe ( struct pci_device *pci, err_register_nvo: unregister_netdev ( netdev ); err_register_netdev: - rtl_reset ( rtl ); + rtl_reset ( netdev ); netdev_nullify ( netdev ); netdev_put ( netdev ); return rc; @@ -547,9 +551,9 @@ static void rtl_remove ( struct pci_device *pci ) { struct rtl8139_nic *rtl = netdev->priv; if ( rtl->nvo.nvs ) - nvo_unregister ( &rtl->nvo ); + unregister_nvo ( &rtl->nvo ); unregister_netdev ( netdev ); - rtl_reset ( rtl ); + rtl_reset ( netdev ); netdev_nullify ( netdev ); netdev_put ( netdev ); } |