mirror of
https://github.com/ipxe/ipxe
synced 2026-02-28 03:11:18 +03:00
[3c90x] Fix a3c90x_close() and a3c90x_remove() methods.
Both methods disabled packet tx and rx just to have it enabled again by calling a3c90x_reset(). Fixed by disabling tx and rx after the call to a3c90x_reset(). Tested by booting Ubuntu intrepid(8.10) directly from gPXE and pxelinux. Tested on 3c905, 3c905B, 3c905C. Signed-off-by: Marty Connor <mdc@etherboot.org>
This commit is contained in:
committed by
Marty Connor
parent
1bb420448c
commit
584e378241
@@ -619,13 +619,13 @@ static void a3c90x_remove(struct pci_device *pci)
|
|||||||
|
|
||||||
DBGP("a3c90x_remove\n");
|
DBGP("a3c90x_remove\n");
|
||||||
|
|
||||||
unregister_netdev(netdev);
|
a3c90x_reset(inf_3c90x);
|
||||||
|
|
||||||
/* Disable the receiver and transmitter. */
|
/* Disable the receiver and transmitter. */
|
||||||
outw(cmdRxDisable, inf_3c90x->IOAddr + regCommandIntStatus_w);
|
outw(cmdRxDisable, inf_3c90x->IOAddr + regCommandIntStatus_w);
|
||||||
outw(cmdTxDisable, inf_3c90x->IOAddr + regCommandIntStatus_w);
|
outw(cmdTxDisable, inf_3c90x->IOAddr + regCommandIntStatus_w);
|
||||||
|
|
||||||
a3c90x_reset(inf_3c90x);
|
unregister_netdev(netdev);
|
||||||
netdev_nullify(netdev);
|
netdev_nullify(netdev);
|
||||||
netdev_put(netdev);
|
netdev_put(netdev);
|
||||||
}
|
}
|
||||||
@@ -845,9 +845,9 @@ static void a3c90x_close(struct net_device *netdev)
|
|||||||
|
|
||||||
DBGP("a3c90x_close\n");
|
DBGP("a3c90x_close\n");
|
||||||
|
|
||||||
|
a3c90x_reset(inf_3c90x);
|
||||||
outw(cmdRxDisable, inf_3c90x->IOAddr + regCommandIntStatus_w);
|
outw(cmdRxDisable, inf_3c90x->IOAddr + regCommandIntStatus_w);
|
||||||
outw(cmdTxDisable, inf_3c90x->IOAddr + regCommandIntStatus_w);
|
outw(cmdTxDisable, inf_3c90x->IOAddr + regCommandIntStatus_w);
|
||||||
a3c90x_reset(inf_3c90x);
|
|
||||||
a3c90x_free_resources(inf_3c90x);
|
a3c90x_free_resources(inf_3c90x);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user