diff --git a/src/drivers/net/3c90x.c b/src/drivers/net/3c90x.c
index 63e0777..1b8190c 100644
--- a/src/drivers/net/3c90x.c
+++ b/src/drivers/net/3c90x.c
@@ -272,7 +272,7 @@
  */
 static void a3c90x_process_tx_packets(struct net_device *netdev)
 {
-	struct INF_3C90X *p = netdev_priv(netdev);
+	struct INF_3C90X *p = netdev->priv;
 	unsigned int downlist_ptr;
 
 	DBGP("a3c90x_process_tx_packets\n");
@@ -320,7 +320,7 @@
 static int a3c90x_transmit(struct net_device *netdev,
 			   struct io_buffer *iob)
 {
-	struct INF_3C90X *inf_3c90x = netdev_priv(netdev);
+	struct INF_3C90X *inf_3c90x = netdev->priv;
 	struct TXD *tx_cur_desc;
 	struct TXD *tx_prev_desc;
 
@@ -518,7 +518,7 @@
 {
 	int i;
 	unsigned int rx_status;
-	struct INF_3C90X *p = netdev_priv(netdev);
+	struct INF_3C90X *p = netdev->priv;
 	struct RXD *rx_cur_desc;
 
 	DBGP("a3c90x_process_rx_packets\n");
@@ -567,7 +567,7 @@
  */
 static void a3c90x_poll(struct net_device *netdev)
 {
-	struct INF_3C90X *p = netdev_priv(netdev);
+	struct INF_3C90X *p = netdev->priv;
 	uint16_t raw_status, int_status;
 
 	DBGP("a3c90x_poll\n");
@@ -611,7 +611,7 @@
 static void a3c90x_remove(struct pci_device *pci)
 {
 	struct net_device *netdev = pci_get_drvdata(pci);
-	struct INF_3C90X *inf_3c90x = netdev_priv(netdev);
+	struct INF_3C90X *inf_3c90x = netdev->priv;
 
 	DBGP("a3c90x_remove\n");
 
@@ -628,7 +628,7 @@
 
 static void a3c90x_irq(struct net_device *netdev, int enable)
 {
-	struct INF_3C90X *p = netdev_priv(netdev);
+	struct INF_3C90X *p = netdev->priv;
 
 	DBGP("a3c90x_irq\n");
 
@@ -657,7 +657,7 @@
 	unsigned int cfg;
 	unsigned int mopt;
 	unsigned short linktype;
-	struct INF_3C90X *inf_3c90x = netdev_priv(netdev);
+	struct INF_3C90X *inf_3c90x = netdev->priv;
 
 	DBGP("a3c90x_hw_start\n");
 
@@ -796,7 +796,7 @@
 static int a3c90x_open(struct net_device *netdev)
 {
 	int rc;
-	struct INF_3C90X *inf_3c90x = netdev_priv(netdev);
+	struct INF_3C90X *inf_3c90x = netdev->priv;
 
 	DBGP("a3c90x_open\n");
 
@@ -845,7 +845,7 @@
  */
 static void a3c90x_close(struct net_device *netdev)
 {
-	struct INF_3C90X *inf_3c90x = netdev_priv(netdev);
+	struct INF_3C90X *inf_3c90x = netdev->priv;
 
 	DBGP("a3c90x_close\n");
 
@@ -895,7 +895,7 @@
 	pci_set_drvdata(pci, netdev);
 	netdev->dev = &pci->dev;
 
-	inf_3c90x = netdev_priv(netdev);
+	inf_3c90x = netdev->priv;
 	memset(inf_3c90x, 0, sizeof(*inf_3c90x));
 
 	adjust_pci_device(pci);
diff --git a/src/drivers/net/atl1e.c b/src/drivers/net/atl1e.c
index 0f0df53..1acbb3c 100644
--- a/src/drivers/net/atl1e.c
+++ b/src/drivers/net/atl1e.c
@@ -173,7 +173,7 @@
 static int atl1e_mdio_read(struct net_device *netdev, int phy_id __unused,
 			   int reg_num)
 {
-	struct atl1e_adapter *adapter = netdev_priv(netdev);
+	struct atl1e_adapter *adapter = netdev->priv;
 	u16 result;
 
 	atl1e_read_phy_reg(&adapter->hw, reg_num & MDIO_REG_ADDR_MASK, &result);
@@ -183,7 +183,7 @@
 static void atl1e_mdio_write(struct net_device *netdev, int phy_id __unused,
 			     int reg_num, int val)
 {
-	struct atl1e_adapter *adapter = netdev_priv(netdev);
+	struct atl1e_adapter *adapter = netdev->priv;
 
 	atl1e_write_phy_reg(&adapter->hw, reg_num & MDIO_REG_ADDR_MASK, val);
 }
@@ -841,7 +841,7 @@
  */
 static void atl1e_poll(struct net_device *netdev)
 {
-	struct atl1e_adapter *adapter = netdev_priv(netdev);
+	struct atl1e_adapter *adapter = netdev->priv;
 	struct atl1e_hw *hw = &adapter->hw;
 	int max_ints = 64;
 	u32 status;
@@ -963,7 +963,7 @@
 
 static int atl1e_xmit_frame(struct net_device *netdev, struct io_buffer *iob)
 {
-	struct atl1e_adapter *adapter = netdev_priv(netdev);
+	struct atl1e_adapter *adapter = netdev->priv;
 	u16 tpd_req = 1;
 	struct atl1e_tpd_desc *tpd;
 
@@ -1013,7 +1013,7 @@
 
 void atl1e_irq(struct net_device *netdev, int enable)
 {
-	struct atl1e_adapter *adapter = netdev_priv(netdev);
+	struct atl1e_adapter *adapter = netdev->priv;
 
 	if (enable)
 		atl1e_irq_enable(adapter);
@@ -1051,7 +1051,7 @@
  */
 static int atl1e_open(struct net_device *netdev)
 {
-	struct atl1e_adapter *adapter = netdev_priv(netdev);
+	struct atl1e_adapter *adapter = netdev->priv;
 	int err;
 
 	/* allocate rx/tx dma buffer & descriptors */
@@ -1086,7 +1086,7 @@
  */
 static void atl1e_close(struct net_device *netdev)
 {
-	struct atl1e_adapter *adapter = netdev_priv(netdev);
+	struct atl1e_adapter *adapter = netdev->priv;
 
 	atl1e_down(adapter);
 	atl1e_free_ring_resources(adapter);
@@ -1138,7 +1138,7 @@
 
 	atl1e_init_netdev(netdev, pdev);
 
-	adapter = netdev_priv(netdev);
+	adapter = netdev->priv;
 	adapter->bd_number = cards_found;
 	adapter->netdev = netdev;
 	adapter->pdev = pdev;
@@ -1227,7 +1227,7 @@
 static void atl1e_remove(struct pci_device *pdev)
 {
 	struct net_device *netdev = pci_get_drvdata(pdev);
-	struct atl1e_adapter *adapter = netdev_priv(netdev);
+	struct atl1e_adapter *adapter = netdev->priv;
 
 	unregister_netdev(netdev);
 	atl1e_free_ring_resources(adapter);
diff --git a/src/drivers/net/b44.c b/src/drivers/net/b44.c
index eaf6d35..1ca7e2e 100644
--- a/src/drivers/net/b44.c
+++ b/src/drivers/net/b44.c
@@ -622,7 +622,7 @@
 
 static void b44_set_rx_mode(struct net_device *netdev)
 {
-	struct b44_private *bp = netdev_priv(netdev);
+	struct b44_private *bp = netdev->priv;
 	unsigned char zero[6] = { 0, 0, 0, 0, 0, 0 };
 	u32 val;
 	int i;
@@ -667,7 +667,7 @@
 	netdev->dev = &pci->dev;
 
 	/* Set up private data */
-	bp = netdev_priv(netdev);
+	bp = netdev->priv;
 	memset(bp, 0, sizeof(*bp));
 	bp->netdev = netdev;
 	bp->pci = pci;
@@ -712,7 +712,7 @@
 static void b44_remove(struct pci_device *pci)
 {
 	struct net_device *netdev = pci_get_drvdata(pci);
-	struct b44_private *bp = netdev_priv(netdev);
+	struct b44_private *bp = netdev->priv;
 
 	ssb_core_disable(bp);
 	unregister_netdev(netdev);
@@ -729,7 +729,7 @@
  */
 static void b44_irq(struct net_device *netdev, int enable)
 {
-	struct b44_private *bp = netdev_priv(netdev);
+	struct b44_private *bp = netdev->priv;
 
 	/* Interrupt mask specifies which events generate interrupts */
 	bw32(bp, B44_IMASK, enable ? IMASK_DEF : IMASK_DISABLE);
@@ -743,7 +743,7 @@
  */
 static int b44_open(struct net_device *netdev)
 {
-	struct b44_private *bp = netdev_priv(netdev);
+	struct b44_private *bp = netdev->priv;
 	int rc;
 
 	rc = b44_init_tx_ring(bp);
@@ -769,7 +769,7 @@
  */
 static void b44_close(struct net_device *netdev)
 {
-	struct b44_private *bp = netdev_priv(netdev);
+	struct b44_private *bp = netdev->priv;
 
 	b44_chip_reset(bp, B44_FULL_RESET);
 	b44_free_tx_ring(bp);
@@ -785,7 +785,7 @@
  */
 static int b44_transmit(struct net_device *netdev, struct io_buffer *iobuf)
 {
-	struct b44_private *bp = netdev_priv(netdev);
+	struct b44_private *bp = netdev->priv;
 	u32 cur = bp->tx_cur;
 	u32 ctrl;
 
@@ -905,7 +905,7 @@
  */
 static void b44_poll(struct net_device *netdev)
 {
-	struct b44_private *bp = netdev_priv(netdev);
+	struct b44_private *bp = netdev->priv;
 	u32 istat;
 
 	/* Interrupt status */
diff --git a/src/drivers/net/bnxt/bnxt.c b/src/drivers/net/bnxt/bnxt.c
index e387650..605aea3 100644
--- a/src/drivers/net/bnxt/bnxt.c
+++ b/src/drivers/net/bnxt/bnxt.c
@@ -307,7 +307,7 @@
 
 static void bnxt_tx_complete ( struct net_device *dev, u16 hw_idx )
 {
-	struct bnxt *bp = netdev_priv ( dev );
+	struct bnxt *bp = dev->priv;
 	struct io_buffer *iob;
 
 	iob = bp->tx.iob[hw_idx];
@@ -484,7 +484,7 @@
 static int bnxt_rx_complete ( struct net_device *dev,
 		struct rx_pkt_cmpl *rx_cmp )
 {
-	struct bnxt *bp = netdev_priv ( dev );
+	struct bnxt *bp = dev->priv;
 	struct rx_pkt_cmpl_hi *rx_cmp_hi;
 	u8  cmpl_bit = bp->cq.completion_bit;
 
@@ -1927,7 +1927,7 @@
 
 static int bnxt_open ( struct net_device *dev )
 {
-	struct bnxt *bp = netdev_priv ( dev );
+	struct bnxt *bp = dev->priv;
 
 	DBGP ( "%s\n", __func__ );
 	bnxt_mm_nic ( bp );
@@ -1952,7 +1952,7 @@
 
 static int bnxt_tx ( struct net_device *dev, struct io_buffer *iob )
 {
-	struct bnxt *bp = netdev_priv ( dev );
+	struct bnxt *bp = dev->priv;
 	u16 len, entry;
 	dma_addr_t mapping;
 
@@ -2009,7 +2009,7 @@
 
 static void bnxt_service_cq ( struct net_device *dev )
 {
-	struct bnxt *bp = netdev_priv ( dev );
+	struct bnxt *bp = dev->priv;
 	struct cmpl_base *cmp;
 	struct tx_cmpl *tx;
 	u16 old_cid = bp->cq.cons_id;
@@ -2057,7 +2057,7 @@
 
 static void bnxt_service_nq ( struct net_device *dev )
 {
-	struct bnxt *bp = netdev_priv ( dev );
+	struct bnxt *bp = dev->priv;
 	struct nq_base *nqp;
 	u16 old_cid = bp->nq.cons_id;
 	int done = SERVICE_NEXT_NQ_BD;
@@ -2102,7 +2102,7 @@
 
 static void bnxt_close ( struct net_device *dev )
 {
-	struct bnxt *bp = netdev_priv ( dev );
+	struct bnxt *bp = dev->priv;
 
 	DBGP ( "%s\n", __func__ );
 	bnxt_down_nic (bp);
@@ -2143,7 +2143,7 @@
 	netdev_init ( netdev, &bnxt_netdev_ops );
 
 	/* Driver private area for this device */
-	bp = netdev_priv ( netdev );
+	bp = netdev->priv;
 
 	/* Set PCI driver private data */
 	pci_set_drvdata ( pci, netdev );
@@ -2197,7 +2197,7 @@
 static void bnxt_remove_one ( struct pci_device *pci )
 {
 	struct net_device *netdev = pci_get_drvdata ( pci );
-	struct bnxt *bp = netdev_priv ( netdev );
+	struct bnxt *bp = netdev->priv;
 
 	DBGP ( "%s\n", __func__ );
 	/* Unregister network device */
diff --git a/src/drivers/net/eepro100.c b/src/drivers/net/eepro100.c
index 1a802b5..a0551a8 100644
--- a/src/drivers/net/eepro100.c
+++ b/src/drivers/net/eepro100.c
@@ -690,7 +690,7 @@
  */
 static void ifec_free ( struct net_device *netdev )
 {
-	struct ifec_private *priv = netdev_priv ( netdev );
+	struct ifec_private *priv = netdev->priv;
 	int i;
 
 	DBGP ( "ifec_free\n" );
diff --git a/src/drivers/net/efi/snpnet.c b/src/drivers/net/efi/snpnet.c
index 69ec6f5..3b09d49 100644
--- a/src/drivers/net/efi/snpnet.c
+++ b/src/drivers/net/efi/snpnet.c
@@ -97,7 +97,7 @@
  * @v netdev		Network device
  */
 static void snpnet_dump_mode ( struct net_device *netdev ) {
-	struct snp_nic *snp = netdev_priv ( netdev );
+	struct snp_nic *snp = netdev->priv;
 	EFI_SIMPLE_NETWORK_MODE *mode = snp->snp->Mode;
 	size_t mac_len = mode->HwAddressSize;
 	unsigned int i;
@@ -136,7 +136,7 @@
  * @v netdev		Network device
  */
 static void snpnet_check_link ( struct net_device *netdev ) {
-	struct snp_nic *snp = netdev_priv ( netdev );
+	struct snp_nic *snp = netdev->priv;
 	EFI_SIMPLE_NETWORK_MODE *mode = snp->snp->Mode;
 
 	/* Do nothing unless media presence detection is supported */
@@ -160,7 +160,7 @@
  */
 static int snpnet_transmit ( struct net_device *netdev,
 			     struct io_buffer *iobuf ) {
-	struct snp_nic *snp = netdev_priv ( netdev );
+	struct snp_nic *snp = netdev->priv;
 	EFI_STATUS efirc;
 	int rc;
 
diff --git a/src/drivers/net/etherfabric.c b/src/drivers/net/etherfabric.c
index e43d433..b40596b 100644
--- a/src/drivers/net/etherfabric.c
+++ b/src/drivers/net/etherfabric.c
@@ -3725,7 +3725,7 @@
 static int
 efab_transmit ( struct net_device *netdev, struct io_buffer *iob )
 {
-	struct efab_nic *efab = netdev_priv ( netdev );
+	struct efab_nic *efab = netdev->priv;
 	struct efab_tx_queue *tx_queue = &efab->tx_queue;
 	int fill_level, space;
 	falcon_tx_desc_t *txd;
@@ -3844,7 +3844,7 @@
 static void
 efab_poll ( struct net_device *netdev )
 {
-	struct efab_nic *efab = netdev_priv ( netdev );
+	struct efab_nic *efab = netdev->priv;
 	struct efab_ev_queue *ev_queue = &efab->ev_queue;
 	struct efab_rx_queue *rx_queue = &efab->rx_queue;
 	falcon_event_t *evt;
@@ -3883,7 +3883,7 @@
 static void
 efab_irq ( struct net_device *netdev, int enable )
 {
-	struct efab_nic *efab = netdev_priv ( netdev );
+	struct efab_nic *efab = netdev->priv;
 	struct efab_ev_queue *ev_queue = &efab->ev_queue;
 
 	switch ( enable ) {
@@ -4032,7 +4032,7 @@
 static void
 efab_close ( struct net_device *netdev )
 {
-	struct efab_nic *efab = netdev_priv ( netdev );
+	struct efab_nic *efab = netdev->priv;
 
 	falcon_fini_resources ( efab );
 	efab_free_resources ( efab );
@@ -4043,7 +4043,7 @@
 static int
 efab_open ( struct net_device *netdev )
 {
-	struct efab_nic *efab = netdev_priv ( netdev );
+	struct efab_nic *efab = netdev->priv;
 	struct efab_rx_queue *rx_queue = &efab->rx_queue;
 	int rc;
 
@@ -4104,7 +4104,7 @@
 efab_remove ( struct pci_device *pci )
 {
 	struct net_device *netdev = pci_get_drvdata ( pci );
-	struct efab_nic *efab = netdev_priv ( netdev );
+	struct efab_nic *efab = netdev->priv;
 
 	if ( efab->membase ) {
 		falcon_reset ( efab );
@@ -4143,7 +4143,7 @@
 	pci_set_drvdata ( pci, netdev );
 	netdev->dev = &pci->dev;
 
-	efab = netdev_priv ( netdev );
+	efab = netdev->priv;
 	memset ( efab, 0, sizeof ( *efab ) );
 	efab->netdev = netdev;
 
diff --git a/src/drivers/net/forcedeth.c b/src/drivers/net/forcedeth.c
index 7fba08a..ec3a5bd 100644
--- a/src/drivers/net/forcedeth.c
+++ b/src/drivers/net/forcedeth.c
@@ -677,7 +677,7 @@
 static int
 forcedeth_open ( struct net_device *netdev )
 {
-	struct forcedeth_private *priv = netdev_priv ( netdev );
+	struct forcedeth_private *priv = netdev->priv;
 	void *ioaddr = priv->mmio_addr;
 	int i;
 	int rc;
@@ -794,7 +794,7 @@
 static int
 forcedeth_transmit ( struct net_device *netdev, struct io_buffer *iobuf )
 {
-	struct forcedeth_private *priv = netdev_priv ( netdev );
+	struct forcedeth_private *priv = netdev->priv;
 	void *ioaddr = priv->mmio_addr;
 	struct ring_desc *tx_curr_desc;
 	u32 size = iob_len ( iobuf );
@@ -853,7 +853,7 @@
 static void
 nv_process_tx_packets ( struct net_device *netdev )
 {
-	struct forcedeth_private *priv = netdev_priv ( netdev );
+	struct forcedeth_private *priv = netdev->priv;
 	struct ring_desc *tx_curr_desc;
 	u32 flaglen;
 
@@ -899,7 +899,7 @@
 static void
 nv_process_rx_packets ( struct net_device *netdev )
 {
-	struct forcedeth_private *priv = netdev_priv ( netdev );
+	struct forcedeth_private *priv = netdev->priv;
 	struct io_buffer *curr_iob;
 	struct ring_desc *rx_curr_desc;
 	u32 flags, len;
@@ -960,7 +960,7 @@
 static void
 forcedeth_link_status ( struct net_device *netdev )
 {
-	struct forcedeth_private *priv = netdev_priv ( netdev );
+	struct forcedeth_private *priv = netdev->priv;
 	void *ioaddr = priv->mmio_addr;
 
 	/* Clear the MII link change status by reading the MIIStatus register */
@@ -981,7 +981,7 @@
 static void
 forcedeth_poll ( struct net_device *netdev )
 {
-	struct forcedeth_private *priv = netdev_priv ( netdev );
+	struct forcedeth_private *priv = netdev->priv;
 	void *ioaddr = priv->mmio_addr;
 	u32 status;
 
@@ -1018,7 +1018,7 @@
 static void
 forcedeth_close ( struct net_device *netdev )
 {
-	struct forcedeth_private *priv = netdev_priv ( netdev );
+	struct forcedeth_private *priv = netdev->priv;
 
 	DBGP ( "forcedeth_close\n" );
 
@@ -1045,7 +1045,7 @@
 static void
 forcedeth_irq ( struct net_device *netdev, int action )
 {
-	struct forcedeth_private *priv = netdev_priv ( netdev );
+	struct forcedeth_private *priv = netdev->priv;
 
 	DBGP ( "forcedeth_irq\n" );
 
@@ -1814,7 +1814,7 @@
 	netdev->dev = &pdev->dev;
 
 	/* Get a reference to our private data */
-	priv = netdev_priv ( netdev );
+	priv = netdev->priv;
 
 	/* We'll need these set up for the rest of the routines */
 	priv->pci_dev = pdev;
diff --git a/src/drivers/net/igbvf/igbvf_main.c b/src/drivers/net/igbvf/igbvf_main.c
index a5ed0c4..862ad6a 100644
--- a/src/drivers/net/igbvf/igbvf_main.c
+++ b/src/drivers/net/igbvf/igbvf_main.c
@@ -179,7 +179,7 @@
  **/
 static void igbvf_irq ( struct net_device *netdev, int enable )
 {
-	struct igbvf_adapter *adapter = netdev_priv ( netdev );
+	struct igbvf_adapter *adapter = netdev->priv;
 
 	DBG ( "igbvf_irq\n" );
 
@@ -197,7 +197,7 @@
  **/
 static void igbvf_process_tx_packets ( struct net_device *netdev )
 {
-	struct igbvf_adapter *adapter = netdev_priv ( netdev );
+	struct igbvf_adapter *adapter = netdev->priv;
 	uint32_t i;
 	uint32_t tx_status;
 	union e1000_adv_tx_desc *tx_curr_desc;
@@ -243,7 +243,7 @@
  **/
 static void igbvf_process_rx_packets ( struct net_device *netdev )
 {
-	struct igbvf_adapter *adapter = netdev_priv ( netdev );
+	struct igbvf_adapter *adapter = netdev->priv;
 	struct e1000_hw *hw = &adapter->hw;
 	uint32_t i;
 	uint32_t rx_status;
@@ -306,7 +306,7 @@
  */
 static void igbvf_poll ( struct net_device *netdev )
 {
-	struct igbvf_adapter *adapter = netdev_priv ( netdev );
+	struct igbvf_adapter *adapter = netdev->priv;
 	uint32_t rx_status;
 	union e1000_adv_rx_desc *rx_curr_desc;
 
@@ -612,7 +612,7 @@
  **/
 static int igbvf_open ( struct net_device *netdev )
 {
-	struct igbvf_adapter *adapter = netdev_priv ( netdev );
+	struct igbvf_adapter *adapter = netdev->priv;
 	int err;
 
 	DBG ("igbvf_open\n");
@@ -667,7 +667,7 @@
  **/
 static void igbvf_close ( struct net_device *netdev )
 {
-	struct igbvf_adapter *adapter = netdev_priv ( netdev );
+	struct igbvf_adapter *adapter = netdev->priv;
         struct e1000_hw *hw = &adapter->hw;
         uint32_t rxdctl;
 
@@ -698,7 +698,7 @@
  */
 static int igbvf_transmit ( struct net_device *netdev, struct io_buffer *iobuf )
 {
-	struct igbvf_adapter *adapter = netdev_priv ( netdev );
+	struct igbvf_adapter *adapter = netdev->priv;
 	struct e1000_hw *hw = &adapter->hw;
 	uint32_t tx_curr = adapter->tx_tail;
 	union e1000_adv_tx_desc *tx_curr_desc;
@@ -810,7 +810,7 @@
 	netdev->dev = &pdev->dev;
 
 	/* Initialize driver private storage */
-	adapter = netdev_priv ( netdev );
+	adapter = netdev->priv;
 	memset ( adapter, 0, ( sizeof ( *adapter ) ) );
 
 	adapter->pdev = pdev;
@@ -924,7 +924,7 @@
 void igbvf_remove ( struct pci_device *pdev )
 {
 	struct net_device *netdev = pci_get_drvdata ( pdev );
-	struct igbvf_adapter *adapter = netdev_priv ( netdev );
+	struct igbvf_adapter *adapter = netdev->priv;
 
 	DBG ( "igbvf_remove\n" );
 
diff --git a/src/drivers/net/jme.c b/src/drivers/net/jme.c
index c730772..298109c 100644
--- a/src/drivers/net/jme.c
+++ b/src/drivers/net/jme.c
@@ -1153,7 +1153,7 @@
 static void
 jme_load_macaddr(struct net_device *netdev)
 {
-	struct jme_adapter *jme = netdev_priv(netdev);
+	struct jme_adapter *jme = netdev->priv;
 	unsigned char macaddr[6];
 	u32 val;
 
diff --git a/src/drivers/net/pcnet32.c b/src/drivers/net/pcnet32.c
index c0dea86..7da884e 100644
--- a/src/drivers/net/pcnet32.c
+++ b/src/drivers/net/pcnet32.c
@@ -690,7 +690,7 @@
 static int
 pcnet32_open ( struct net_device *netdev )
 {
-	struct pcnet32_private *priv = netdev_priv ( netdev );
+	struct pcnet32_private *priv = netdev->priv;
 	unsigned long ioaddr = priv->pci_dev->ioaddr;
 	int rc;
 	u16 val;
@@ -754,7 +754,7 @@
 static int
 pcnet32_transmit ( struct net_device *netdev, struct io_buffer *iobuf )
 {
-	struct pcnet32_private *priv = netdev_priv ( netdev );
+	struct pcnet32_private *priv = netdev->priv;
 	unsigned long ioaddr = priv->pci_dev->ioaddr;
 	uint32_t tx_len = iob_len ( iobuf );
 	struct pcnet32_tx_desc *tx_curr_desc;
@@ -802,7 +802,7 @@
 static void
 pcnet32_process_tx_packets ( struct net_device *netdev )
 {
-	struct pcnet32_private *priv = netdev_priv ( netdev );
+	struct pcnet32_private *priv = netdev->priv;
 	struct pcnet32_tx_desc *tx_curr_desc;
 
 	DBGP ( "pcnet32_process_tx_packets\n" );
@@ -848,7 +848,7 @@
 static void
 pcnet32_process_rx_packets ( struct net_device *netdev )
 {
-	struct pcnet32_private *priv = netdev_priv ( netdev );
+	struct pcnet32_private *priv = netdev->priv;
 	struct pcnet32_rx_desc *rx_curr_desc;
 	u16 status;
 	u32 len;
@@ -913,7 +913,7 @@
 static void
 pcnet32_poll ( struct net_device *netdev )
 {
-	struct pcnet32_private *priv = netdev_priv ( netdev );
+	struct pcnet32_private *priv = netdev->priv;
 	unsigned long ioaddr = priv->pci_dev->ioaddr;
 	u16 status;
 
@@ -946,7 +946,7 @@
 static void
 pcnet32_close ( struct net_device *netdev )
 {
-	struct pcnet32_private *priv = netdev_priv ( netdev );
+	struct pcnet32_private *priv = netdev->priv;
 	unsigned long ioaddr = priv->pci_dev->ioaddr;
 
 	DBGP ( "pcnet32_close\n" );
@@ -1003,7 +1003,7 @@
 static void
 pcnet32_irq ( struct net_device *netdev, int action )
 {
-	struct pcnet32_private *priv = netdev_priv ( netdev );
+	struct pcnet32_private *priv = netdev->priv;
 
 	DBGP ( "pcnet32_irq\n" );
 
@@ -1061,7 +1061,7 @@
 	netdev->dev = &pdev->dev;
 
 	/* Get a reference to our private data */
-	priv = netdev_priv ( netdev );
+	priv = netdev->priv;
 
 	/* We'll need these set up for the rest of the routines */
 	priv->pci_dev = pdev;
diff --git a/src/drivers/net/phantom/phantom.c b/src/drivers/net/phantom/phantom.c
index 8434590..e5fd1f3 100644
--- a/src/drivers/net/phantom/phantom.c
+++ b/src/drivers/net/phantom/phantom.c
@@ -1062,7 +1062,7 @@
  * @v netdev		Network device
  */
 static void phantom_poll_link_state ( struct net_device *netdev ) {
-	struct phantom_nic *phantom = netdev_priv ( netdev );
+	struct phantom_nic *phantom = netdev->priv;
 	uint32_t xg_state_p3;
 	unsigned int link;
 
@@ -1109,7 +1109,7 @@
  * @v netdev		Net device
  */
 static void phantom_refill_rx_ring ( struct net_device *netdev ) {
-	struct phantom_nic *phantom = netdev_priv ( netdev );
+	struct phantom_nic *phantom = netdev->priv;
 	struct io_buffer *iobuf;
 	struct phantom_rds rds;
 	unsigned int handle;
@@ -1160,7 +1160,7 @@
  * @ret rc		Return status code
  */
 static int phantom_open ( struct net_device *netdev ) {
-	struct phantom_nic *phantom = netdev_priv ( netdev );
+	struct phantom_nic *phantom = netdev->priv;
 	int rc;
 
 	/* Allocate and zero descriptor rings */
@@ -1220,7 +1220,7 @@
  * @v netdev		Net device
  */
 static void phantom_close ( struct net_device *netdev ) {
-	struct phantom_nic *phantom = netdev_priv ( netdev );
+	struct phantom_nic *phantom = netdev->priv;
 	struct io_buffer *iobuf;
 	unsigned int i;
 
@@ -1258,7 +1258,7 @@
  */
 static int phantom_transmit ( struct net_device *netdev,
 			      struct io_buffer *iobuf ) {
-	struct phantom_nic *phantom = netdev_priv ( netdev );
+	struct phantom_nic *phantom = netdev->priv;
 	union phantom_cds cds;
 	int index;
 
@@ -1297,7 +1297,7 @@
  * @v netdev	Network device
  */
 static void phantom_poll ( struct net_device *netdev ) {
-	struct phantom_nic *phantom = netdev_priv ( netdev );
+	struct phantom_nic *phantom = netdev->priv;
 	struct io_buffer *iobuf;
 	unsigned int irq_vector;
 	unsigned int irq_state;
@@ -1434,7 +1434,7 @@
  * @v enable	Interrupts should be enabled
  */
 static void phantom_irq ( struct net_device *netdev, int enable ) {
-	struct phantom_nic *phantom = netdev_priv ( netdev );
+	struct phantom_nic *phantom = netdev->priv;
 
 	phantom_writel ( phantom, ( enable ? 1 : 0 ),
 			 phantom->sds_irq_mask_crb );
@@ -2070,7 +2070,7 @@
 		goto err_alloc_etherdev;
 	}
 	netdev_init ( netdev, &phantom_operations );
-	phantom = netdev_priv ( netdev );
+	phantom = netdev->priv;
 	pci_set_drvdata ( pci, netdev );
 	netdev->dev = &pci->dev;
 	memset ( phantom, 0, sizeof ( *phantom ) );
@@ -2161,7 +2161,7 @@
  */
 static void phantom_remove ( struct pci_device *pci ) {
 	struct net_device *netdev = pci_get_drvdata ( pci );
-	struct phantom_nic *phantom = netdev_priv ( netdev );
+	struct phantom_nic *phantom = netdev->priv;
 
 	unregister_settings ( &phantom->settings );
 	unregister_netdev ( netdev );
diff --git a/src/drivers/net/sfc/efx_common.c b/src/drivers/net/sfc/efx_common.c
index ad572b1..2b7a88a 100644
--- a/src/drivers/net/sfc/efx_common.c
+++ b/src/drivers/net/sfc/efx_common.c
@@ -70,7 +70,7 @@
  ******************************************************************************/
 void efx_probe(struct net_device *netdev, enum efx_revision revision)
 {
-	struct efx_nic *efx = netdev_priv(netdev);
+	struct efx_nic *efx = netdev->priv;
 	struct pci_device *pci = container_of(netdev->dev,
 					      struct pci_device, dev);
 	unsigned int reg = PCI_BASE_ADDRESS_0;
@@ -97,7 +97,7 @@
 
 void efx_remove(struct net_device *netdev)
 {
-	struct efx_nic *efx = netdev_priv(netdev);
+	struct efx_nic *efx = netdev->priv;
 
 	iounmap(efx->membase);
 	efx->membase = NULL;
diff --git a/src/drivers/net/sfc/efx_hunt.c b/src/drivers/net/sfc/efx_hunt.c
index 0bce3e4..abe3e83 100644
--- a/src/drivers/net/sfc/efx_hunt.c
+++ b/src/drivers/net/sfc/efx_hunt.c
@@ -100,7 +100,7 @@
 int
 efx_hunt_transmit(struct net_device *netdev, struct io_buffer *iob)
 {
-	struct efx_nic *efx = netdev_priv(netdev);
+	struct efx_nic *efx = netdev->priv;
 	struct efx_tx_queue *txq = &efx->txq;
 	int fill_level, space;
 	efx_tx_desc_t *txd;
@@ -155,7 +155,7 @@
 
 int efx_hunt_tx_init(struct net_device *netdev, dma_addr_t *dma_addr)
 {
-	struct efx_nic *efx = netdev_priv(netdev);
+	struct efx_nic *efx = netdev->priv;
 	struct efx_tx_queue *txq = &efx->txq;
 	size_t bytes;
 
@@ -270,7 +270,7 @@
 
 int efx_hunt_rx_init(struct net_device *netdev, dma_addr_t *dma_addr)
 {
-	struct efx_nic *efx = netdev_priv(netdev);
+	struct efx_nic *efx = netdev->priv;
 	struct efx_rx_queue *rxq = &efx->rxq;
 	size_t bytes;
 
@@ -294,7 +294,7 @@
  ******************************************************************************/
 int efx_hunt_ev_init(struct net_device *netdev, dma_addr_t *dma_addr)
 {
-	struct efx_nic *efx = netdev_priv(netdev);
+	struct efx_nic *efx = netdev->priv;
 	struct efx_ev_queue *evq = &efx->evq;
 	size_t bytes;
 
@@ -404,7 +404,7 @@
 
 void efx_hunt_poll(struct net_device *netdev)
 {
-	struct efx_nic *efx = netdev_priv(netdev);
+	struct efx_nic *efx = netdev->priv;
 	struct efx_ev_queue *evq = &efx->evq;
 	efx_event_t *evt;
 	int budget = 10;
@@ -443,7 +443,7 @@
 
 void efx_hunt_irq(struct net_device *netdev, int enable)
 {
-	struct efx_nic *efx = netdev_priv(netdev);
+	struct efx_nic *efx = netdev->priv;
 
 	efx->int_en = enable;
 
@@ -465,7 +465,7 @@
  ******************************************************************************/
 int efx_hunt_open(struct net_device *netdev)
 {
-	struct efx_nic *efx = netdev_priv(netdev);
+	struct efx_nic *efx = netdev->priv;
 	efx_dword_t cmd;
 
 	/* Set interrupt moderation to 0*/
@@ -486,7 +486,7 @@
 
 void efx_hunt_close(struct net_device *netdev)
 {
-	struct efx_nic *efx = netdev_priv(netdev);
+	struct efx_nic *efx = netdev->priv;
 	struct efx_rx_queue *rxq = &efx->rxq;
 	struct efx_tx_queue *txq = &efx->txq;
 	int i;
diff --git a/src/drivers/net/sfc/sfc_hunt.c b/src/drivers/net/sfc/sfc_hunt.c
index a37670a..43ac229 100644
--- a/src/drivers/net/sfc/sfc_hunt.c
+++ b/src/drivers/net/sfc/sfc_hunt.c
@@ -1043,7 +1043,7 @@
 static void
 hunt_poll(struct net_device *netdev)
 {
-	struct hunt_nic *hunt = netdev_priv(netdev);
+	struct hunt_nic *hunt = netdev->priv;
 
 	/* If called while already polling, return immediately */
 	if (hunt->efx.state & EFX_STATE_POLLING)
@@ -1071,7 +1071,7 @@
  ******************************************************************************/
 static int hunt_open(struct net_device *netdev)
 {
-	struct hunt_nic *hunt = netdev_priv(netdev);
+	struct hunt_nic *hunt = netdev->priv;
 	int rc;
 
 	/* Allocate VIs */
@@ -1133,7 +1133,7 @@
 
 static void hunt_close(struct net_device *netdev)
 {
-	struct hunt_nic *hunt = netdev_priv(netdev);
+	struct hunt_nic *hunt = netdev->priv;
 
 	/* Stop datapath */
 	efx_hunt_close(netdev);
@@ -1187,7 +1187,7 @@
 	netdev->dev = &pci->dev;
 	netdev->state |= NETDEV_IRQ_UNSUPPORTED;
 
-	hunt = netdev_priv(netdev);
+	hunt = netdev->priv;
 	memset(hunt, 0, sizeof(*hunt));
 	efx = &hunt->efx;
 
@@ -1290,7 +1290,7 @@
 static void hunt_remove(struct pci_device *pci)
 {
 	struct net_device *netdev = pci_get_drvdata(pci);
-	struct hunt_nic *hunt = netdev_priv(netdev);
+	struct hunt_nic *hunt = netdev->priv;
 
 	if (!(hunt->flags &
 	      (1 << MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_NO_ACTIVE_PORT))) {
diff --git a/src/drivers/net/sis190.c b/src/drivers/net/sis190.c
index 0e4f076..034cac9 100644
--- a/src/drivers/net/sis190.c
+++ b/src/drivers/net/sis190.c
@@ -107,14 +107,14 @@
 
 static void __mdio_write(struct net_device *dev, int phy_id, int reg, int val)
 {
-	struct sis190_private *tp = netdev_priv(dev);
+	struct sis190_private *tp = dev->priv;
 
 	mdio_write(tp->mmio_addr, phy_id, reg, val);
 }
 
 static int __mdio_read(struct net_device *dev, int phy_id, int reg)
 {
-	struct sis190_private *tp = netdev_priv(dev);
+	struct sis190_private *tp = dev->priv;
 
 	return mdio_read(tp->mmio_addr, phy_id, reg);
 }
@@ -343,7 +343,7 @@
  */
 static void sis190_poll(struct net_device *dev)
 {
-	struct sis190_private *tp = netdev_priv(dev);
+	struct sis190_private *tp = dev->priv;
 	void  *ioaddr = tp->mmio_addr;
 	u32 status;
 
@@ -374,7 +374,7 @@
 
 static int sis190_init_ring(struct net_device *dev)
 {
-	struct sis190_private *tp = netdev_priv(dev);
+	struct sis190_private *tp = dev->priv;
 
 	sis190_init_ring_indexes(tp);
 
@@ -395,7 +395,7 @@
 
 static void sis190_set_rx_mode(struct net_device *dev)
 {
-	struct sis190_private *tp = netdev_priv(dev);
+	struct sis190_private *tp = dev->priv;
 	void *ioaddr = tp->mmio_addr;
 	u32 mc_filter[2];	/* Multicast hash filter */
 	u16 rx_mode;
@@ -419,7 +419,7 @@
 
 static void sis190_hw_start(struct net_device *dev)
 {
-	struct sis190_private *tp = netdev_priv(dev);
+	struct sis190_private *tp = dev->priv;
 	void *ioaddr = tp->mmio_addr;
 
 	sis190_soft_reset(ioaddr);
@@ -548,7 +548,7 @@
 
 static int sis190_open(struct net_device *dev)
 {
-	struct sis190_private *tp = netdev_priv(dev);
+	struct sis190_private *tp = dev->priv;
 	int rc;
 
 	/* Allocate TX ring */
@@ -587,7 +587,7 @@
 
 static void sis190_down(struct net_device *dev)
 {
-	struct sis190_private *tp = netdev_priv(dev);
+	struct sis190_private *tp = dev->priv;
 	void  *ioaddr = tp->mmio_addr;
 
 	do {
@@ -597,7 +597,7 @@
 
 static void sis190_free(struct net_device *dev)
 {
-	struct sis190_private *tp = netdev_priv(dev);
+	struct sis190_private *tp = dev->priv;
 	int i;
 
 	free_phys(tp->TxDescRing, TX_RING_BYTES);
@@ -630,7 +630,7 @@
 
 static int sis190_transmit(struct net_device *dev, struct io_buffer *iob)
 {
-	struct sis190_private *tp = netdev_priv(dev);
+	struct sis190_private *tp = dev->priv;
 	void  *ioaddr = tp->mmio_addr;
 	u32 len, entry;
 	struct TxDesc *desc;
@@ -804,7 +804,7 @@
  */
 static int sis190_mii_probe(struct net_device *dev)
 {
-	struct sis190_private *tp = netdev_priv(dev);
+	struct sis190_private *tp = dev->priv;
 	struct mii_if_info *mii_if = &tp->mii_if;
 	void *ioaddr = tp->mmio_addr;
 	int phy_id;
@@ -858,7 +858,7 @@
 
 static void sis190_mii_remove(struct net_device *dev)
 {
-	struct sis190_private *tp = netdev_priv(dev);
+	struct sis190_private *tp = dev->priv;
 
 	sis190_free_phy(&tp->first_phy);
 }
@@ -879,7 +879,7 @@
 
 	dev->dev = &pdev->dev;
 
-	tp = netdev_priv(dev);
+	tp = dev->priv;
 	memset(tp, 0, sizeof(*tp));
 
 	tp->dev = dev;
@@ -916,7 +916,7 @@
 static int sis190_get_mac_addr_from_eeprom(struct pci_device *pdev __unused,
 						     struct net_device *dev)
 {
-	struct sis190_private *tp = netdev_priv(dev);
+	struct sis190_private *tp = dev->priv;
 	void *ioaddr = tp->mmio_addr;
 	u16 sig;
 	int i;
@@ -955,7 +955,7 @@
 static int sis190_get_mac_addr_from_apc(struct pci_device *pdev,
 					struct net_device *dev)
 {
-	struct sis190_private *tp = netdev_priv(dev);
+	struct sis190_private *tp = dev->priv;
 	struct pci_device *isa_bridge = NULL;
 	struct device *d;
 	u8 reg, tmp8;
@@ -1018,7 +1018,7 @@
  */
 static inline void sis190_init_rxfilter(struct net_device *dev)
 {
-	struct sis190_private *tp = netdev_priv(dev);
+	struct sis190_private *tp = dev->priv;
 	void *ioaddr = tp->mmio_addr;
 	u16 ctl;
 	int i;
@@ -1057,7 +1057,7 @@
 
 static void sis190_set_speed_auto(struct net_device *dev)
 {
-	struct sis190_private *tp = netdev_priv(dev);
+	struct sis190_private *tp = dev->priv;
 	void *ioaddr = tp->mmio_addr;
 	int phy_id = tp->mii_if.phy_id;
 	int val;
@@ -1082,7 +1082,7 @@
 
 static void sis190_irq(struct net_device *dev, int enable)
 {
-	struct sis190_private *tp = netdev_priv(dev);
+	struct sis190_private *tp = dev->priv;
 	void *ioaddr = tp->mmio_addr;
 
 	SIS_W32(IntrStatus, 0xffffffff);
@@ -1116,7 +1116,7 @@
 
 	pci_set_drvdata(pdev, dev);
 
-	tp = netdev_priv(dev);
+	tp = dev->priv;
 
 	rc = sis190_get_mac_addr(pdev, dev);
 	if (rc < 0)
diff --git a/src/drivers/net/skge.c b/src/drivers/net/skge.c
index 5aa5e2a..cc7f0b9 100755
--- a/src/drivers/net/skge.c
+++ b/src/drivers/net/skge.c
@@ -213,7 +213,7 @@
  *
  * static int skge_get_eeprom_len(struct net_device *dev)
  * {
- * 	struct skge_port *skge = netdev_priv(dev);
+ * 	struct skge_port *skge = dev->priv;
  * 	u32 reg2;
  *
  * 	pci_read_config_dword(skge->hw->pdev, PCI_DEV_REG2, &reg2);
@@ -248,7 +248,7 @@
  * static int skge_get_eeprom(struct net_device *dev, struct ethtool_eeprom *eeprom,
  * 			   u8 *data)
  * {
- * 	struct skge_port *skge = netdev_priv(dev);
+ * 	struct skge_port *skge = dev->priv;
  * 	struct pci_dev *pdev = skge->hw->pdev;
  * 	int cap = pci_find_capability(pdev, PCI_CAP_ID_VPD);
  * 	int length = eeprom->len;
@@ -274,7 +274,7 @@
  * static int skge_set_eeprom(struct net_device *dev, struct ethtool_eeprom *eeprom,
  * 			   u8 *data)
  * {
- * 	struct skge_port *skge = netdev_priv(dev);
+ * 	struct skge_port *skge = dev->priv;
  * 	struct pci_dev *pdev = skge->hw->pdev;
  * 	int cap = pci_find_capability(pdev, PCI_CAP_ID_VPD);
  * 	int length = eeprom->len;
@@ -415,7 +415,7 @@
 static void xm_link_down(struct skge_hw *hw, int port)
 {
 	struct net_device *dev = hw->dev[port];
-	struct skge_port *skge = netdev_priv(dev);
+	struct skge_port *skge = dev->priv;
 
 	xm_write16(hw, port, XM_IMSK, XM_IMSK_DISABLE);
 
@@ -553,7 +553,7 @@
 static void bcom_check_link(struct skge_hw *hw, int port)
 {
 	struct net_device *dev = hw->dev[port];
-	struct skge_port *skge = netdev_priv(dev);
+	struct skge_port *skge = dev->priv;
 	u16 status;
 
 	/* read twice because of latch */
@@ -751,7 +751,7 @@
 
 static int xm_check_link(struct net_device *dev)
 {
-	struct skge_port *skge = netdev_priv(dev);
+	struct skge_port *skge = dev->priv;
 	struct skge_hw *hw = skge->hw;
 	int port = skge->port;
 	u16 status;
@@ -852,7 +852,7 @@
 static void genesis_mac_init(struct skge_hw *hw, int port)
 {
 	struct net_device *dev = hw->dev[port];
-	struct skge_port *skge = netdev_priv(dev);
+	struct skge_port *skge = dev->priv;
 	int i;
 	u32 r;
 	const u8 zero[6]  = { 0 };
@@ -1209,7 +1209,7 @@
 /* Marvell Phy Initialization */
 static void yukon_init(struct skge_hw *hw, int port)
 {
-	struct skge_port *skge = netdev_priv(hw->dev[port]);
+	struct skge_port *skge = hw->dev[port]->priv;
 	u16 ctrl, ct1000, adv;
 
 	if (skge->autoneg == AUTONEG_ENABLE) {
@@ -1325,7 +1325,7 @@
 
 static void yukon_mac_init(struct skge_hw *hw, int port)
 {
-	struct skge_port *skge = netdev_priv(hw->dev[port]);
+	struct skge_port *skge = hw->dev[port]->priv;
 	int i;
 	u32 reg;
 	const u8 *addr = hw->dev[port]->ll_addr;
@@ -1691,7 +1691,7 @@
 
 void skge_free(struct net_device *dev)
 {
-	struct skge_port *skge = netdev_priv(dev);
+	struct skge_port *skge = dev->priv;
 
 	free(skge->rx_ring.start);
 	skge->rx_ring.start = NULL;
@@ -1706,7 +1706,7 @@
 
 static int skge_up(struct net_device *dev)
 {
-	struct skge_port *skge = netdev_priv(dev);
+	struct skge_port *skge = dev->priv;
 	struct skge_hw *hw = skge->hw;
 	int port = skge->port;
 	u32 chunk, ram_addr;
@@ -1789,7 +1789,7 @@
 
 static void skge_down(struct net_device *dev)
 {
-	struct skge_port *skge = netdev_priv(dev);
+	struct skge_port *skge = dev->priv;
 	struct skge_hw *hw = skge->hw;
 	int port = skge->port;
 
@@ -1862,7 +1862,7 @@
 
 static int skge_xmit_frame(struct net_device *dev, struct io_buffer *iob)
 {
-	struct skge_port *skge = netdev_priv(dev);
+	struct skge_port *skge = dev->priv;
 	struct skge_hw *hw = skge->hw;
 	struct skge_element *e;
 	struct skge_tx_desc *td;
@@ -1908,7 +1908,7 @@
 /* Free all buffers in transmit ring */
 static void skge_tx_clean(struct net_device *dev)
 {
-	struct skge_port *skge = netdev_priv(dev);
+	struct skge_port *skge = dev->priv;
 	struct skge_element *e;
 
 	for (e = skge->tx_ring.to_clean; e != skge->tx_ring.to_use; e = e->next) {
@@ -1939,7 +1939,7 @@
 /* Free all buffers in Tx ring which are no longer owned by device */
 static void skge_tx_done(struct net_device *dev)
 {
-	struct skge_port *skge = netdev_priv(dev);
+	struct skge_port *skge = dev->priv;
 	struct skge_ring *ring = &skge->tx_ring;
 	struct skge_element *e;
 
@@ -1961,7 +1961,7 @@
 
 static void skge_rx_refill(struct net_device *dev)
 {
-	struct skge_port *skge = netdev_priv(dev);
+	struct skge_port *skge = dev->priv;
 	struct skge_ring *ring = &skge->rx_ring;
 	struct skge_element *e;
 	struct io_buffer *iob;
@@ -2003,7 +2003,7 @@
 
 static void skge_rx_done(struct net_device *dev)
 {
-	struct skge_port *skge = netdev_priv(dev);
+	struct skge_port *skge = dev->priv;
 	struct skge_ring *ring = &skge->rx_ring;
 	struct skge_rx_desc *rd;
 	struct skge_element *e;
@@ -2050,7 +2050,7 @@
 
 static void skge_poll(struct net_device *dev)
 {
-	struct skge_port *skge = netdev_priv(dev);
+	struct skge_port *skge = dev->priv;
 	struct skge_hw *hw = skge->hw;
 	u32 status;
 
@@ -2085,7 +2085,7 @@
 
 	for (port = 0; port < hw->ports; port++) {
 		struct net_device *dev = hw->dev[port];
-		struct skge_port *skge = netdev_priv(dev);
+		struct skge_port *skge = dev->priv;
 
 		if (hw->chip_id != CHIP_ID_GENESIS)
 			yukon_phy_intr(skge);
@@ -2302,7 +2302,7 @@
 
 	dev->dev = &hw->pdev->dev;
 
-	skge = netdev_priv(dev);
+	skge = dev->priv;
 	skge->netdev = dev;
 	skge->hw = hw;
 
@@ -2446,7 +2446,7 @@
  * This is a iPXE Network Driver API function.
  */
 static void skge_net_irq ( struct net_device *dev, int enable ) {
-	struct skge_port *skge = netdev_priv(dev);
+	struct skge_port *skge = dev->priv;
 	struct skge_hw *hw = skge->hw;
 
 	if (enable)
diff --git a/src/drivers/net/sky2.c b/src/drivers/net/sky2.c
index 9d612c9..2639658 100644
--- a/src/drivers/net/sky2.c
+++ b/src/drivers/net/sky2.c
@@ -296,7 +296,7 @@
 
 static void sky2_phy_init(struct sky2_hw *hw, unsigned port)
 {
-	struct sky2_port *sky2 = netdev_priv(hw->dev[port]);
+	struct sky2_port *sky2 = hw->dev[port]->priv;
 	u16 ctrl, ct1000, adv, pg, ledctrl, ledover, reg;
 
 	if (sky2->autoneg == AUTONEG_ENABLE &&
@@ -1128,7 +1128,7 @@
 /* Bring up network interface. */
 static int sky2_up(struct net_device *dev)
 {
-	struct sky2_port *sky2 = netdev_priv(dev);
+	struct sky2_port *sky2 = dev->priv;
 	struct sky2_hw *hw = sky2->hw;
 	unsigned port = sky2->port;
 	u32 imask, ramsize;
@@ -1237,7 +1237,7 @@
  */
 static int sky2_xmit_frame(struct net_device *dev, struct io_buffer *iob)
 {
-	struct sky2_port *sky2 = netdev_priv(dev);
+	struct sky2_port *sky2 = dev->priv;
 	struct sky2_hw *hw = sky2->hw;
 	struct sky2_tx_le *le = NULL;
 	struct tx_ring_info *re;
@@ -1303,7 +1303,7 @@
 /* Cleanup all untransmitted buffers, assume transmitter not running */
 static void sky2_tx_clean(struct net_device *dev)
 {
-	struct sky2_port *sky2 = netdev_priv(dev);
+	struct sky2_port *sky2 = dev->priv;
 
 	sky2_tx_complete(sky2, sky2->tx_prod);
 }
@@ -1311,7 +1311,7 @@
 /* Network shutdown */
 static void sky2_down(struct net_device *dev)
 {
-	struct sky2_port *sky2 = netdev_priv(dev);
+	struct sky2_port *sky2 = dev->priv;
 	struct sky2_hw *hw = sky2->hw;
 	unsigned port = sky2->port;
 	u16 ctrl;
@@ -1511,7 +1511,7 @@
 static void sky2_phy_intr(struct sky2_hw *hw, unsigned port)
 {
 	struct net_device *dev = hw->dev[port];
-	struct sky2_port *sky2 = netdev_priv(dev);
+	struct sky2_port *sky2 = dev->priv;
 	u16 istatus, phystat;
 
 	istatus = gm_phy_read(hw, port, PHY_MARV_INT_STAT);
@@ -1570,7 +1570,7 @@
 static struct io_buffer *sky2_receive(struct net_device *dev,
 				      u16 length, u32 status)
 {
-	struct sky2_port *sky2 = netdev_priv(dev);
+	struct sky2_port *sky2 = dev->priv;
 	struct rx_ring_info *re = sky2->rx_ring + sky2->rx_next;
 	struct io_buffer *iob = NULL;
 	u16 count = (status & GMR_FS_LEN) >> 16;
@@ -1634,7 +1634,7 @@
 /* Transmit complete */
 static inline void sky2_tx_done(struct net_device *dev, u16 last)
 {
-	struct sky2_port *sky2 = netdev_priv(dev);
+	struct sky2_port *sky2 = dev->priv;
 
 	sky2_tx_complete(sky2, last);
 }
@@ -1700,10 +1700,10 @@
 	sky2_write32(hw, STAT_CTRL, SC_STAT_CLR_IRQ);
 
 	if (rx[0])
-		sky2_rx_update(netdev_priv(hw->dev[0]), Q_R1);
+		sky2_rx_update(hw->dev[0]->priv, Q_R1);
 
 	if (rx[1])
-		sky2_rx_update(netdev_priv(hw->dev[1]), Q_R2);
+		sky2_rx_update(hw->dev[1]->priv, Q_R2);
 }
 
 static void sky2_hw_error(struct sky2_hw *hw, unsigned port, u32 status)
@@ -1809,7 +1809,7 @@
 			  u16 q, unsigned ring_size __unused)
 {
 	struct net_device *dev = hw->dev[port];
-	struct sky2_port *sky2 = netdev_priv(dev);
+	struct sky2_port *sky2 = dev->priv;
 	int idx;
 	const u64 *le = (q == Q_R1 || q == Q_R2)
 		? (u64 *) sky2->rx_le : (u64 *) sky2->tx_le;
@@ -1853,7 +1853,7 @@
 
 static void sky2_poll(struct net_device *dev)
 {
-	struct sky2_port *sky2 = netdev_priv(dev);
+	struct sky2_port *sky2 = dev->priv;
 	struct sky2_hw *hw = sky2->hw;
 	u32 status = sky2_read32(hw, B0_Y2_SP_EISR);
 	u16 idx;
@@ -2152,7 +2152,7 @@
 
 static void sky2_set_multicast(struct net_device *dev)
 {
-	struct sky2_port *sky2 = netdev_priv(dev);
+	struct sky2_port *sky2 = dev->priv;
 	struct sky2_hw *hw = sky2->hw;
 	unsigned port = sky2->port;
 	u16 reg;
@@ -2189,7 +2189,7 @@
 
 	dev->dev = &hw->pdev->dev;
 
-	sky2 = netdev_priv(dev);
+	sky2 = dev->priv;
 	sky2->netdev = dev;
 	sky2->hw = hw;
 
@@ -2241,7 +2241,7 @@
 
 static void sky2_net_irq(struct net_device *dev, int enable)
 {
-	struct sky2_port *sky2 = netdev_priv(dev);
+	struct sky2_port *sky2 = dev->priv;
 	struct sky2_hw *hw = sky2->hw;
 
 	u32 imask = sky2_read32(hw, B0_IMSK);
diff --git a/src/drivers/net/tg3/tg3.c b/src/drivers/net/tg3/tg3.c
index cec599c..559c2d6 100644
--- a/src/drivers/net/tg3/tg3.c
+++ b/src/drivers/net/tg3/tg3.c
@@ -233,7 +233,7 @@
 static int tg3_open(struct net_device *dev)
 {	DBGP("%s\n", __func__);
 
-	struct tg3 *tp = netdev_priv(dev);
+	struct tg3 *tp = dev->priv;
 	struct tg3_rx_prodring_set *tpr = &tp->prodring;
 	int err = 0;
 
@@ -299,7 +299,7 @@
 static int tg3_transmit(struct net_device *dev, struct io_buffer *iob)
 {	DBGP("%s\n", __func__);
 
-	struct tg3 *tp = netdev_priv(dev);
+	struct tg3 *tp = dev->priv;
 	u32 len, entry;
 	dma_addr_t mapping;
 
@@ -333,7 +333,7 @@
 static void tg3_tx_complete(struct net_device *dev)
 {	DBGP("%s\n", __func__);
 
-	struct tg3 *tp = netdev_priv(dev);
+	struct tg3 *tp = dev->priv;
 	u32 hw_idx = tp->hw_status->idx[0].tx_consumer;
 	u32 sw_idx = tp->tx_cons;
 
@@ -427,7 +427,7 @@
 static void tg3_rx_complete(struct net_device *dev)
 {	DBGP("%s\n", __func__);
 
-	struct tg3 *tp = netdev_priv(dev);
+	struct tg3 *tp = dev->priv;
 
 	u32 sw_idx = tp->rx_rcb_ptr;
 	u16 hw_idx;
@@ -478,7 +478,7 @@
 static void tg3_poll(struct net_device *dev)
 {	DBGP("%s\n", __func__);
 
-	struct tg3 *tp = netdev_priv(dev);
+	struct tg3 *tp = dev->priv;
 
 	/* ACK interrupts */
 	/*
@@ -496,7 +496,7 @@
 static void tg3_close(struct net_device *dev)
 {	DBGP("%s\n", __func__);
 
-	struct tg3 *tp = netdev_priv(dev);
+	struct tg3 *tp = dev->priv;
 
 	DBGP("%s\n", __func__);
 
@@ -511,7 +511,7 @@
 static void tg3_irq(struct net_device *dev, int enable)
 {	DBGP("%s\n", __func__);
 
-	struct tg3 *tp = netdev_priv(dev);
+	struct tg3 *tp = dev->priv;
 
 	DBGP("%s: %d\n", __func__, enable);
 
@@ -735,7 +735,7 @@
 
 	dev->dev = &pdev->dev;
 
-	tp = netdev_priv(dev);
+	tp = dev->priv;
 	tp->pdev = pdev;
 	tp->dev = dev;
 	tp->rx_mode = TG3_DEF_RX_MODE;
diff --git a/src/drivers/net/tg3/tg3_hw.c b/src/drivers/net/tg3/tg3_hw.c
index 798f851..9a70413 100644
--- a/src/drivers/net/tg3/tg3_hw.c
+++ b/src/drivers/net/tg3/tg3_hw.c
@@ -1717,7 +1717,7 @@
 static void __tg3_set_rx_mode(struct net_device *dev)
 {	DBGP("%s\n", __func__);
 
-	struct tg3 *tp = netdev_priv(dev);
+	struct tg3 *tp = dev->priv;
 	u32 rx_mode;
 
 	rx_mode = tp->rx_mode & ~(RX_MODE_PROMISC |
diff --git a/src/drivers/net/vmxnet3.c b/src/drivers/net/vmxnet3.c
index 63bcf0e..3800d6b 100644
--- a/src/drivers/net/vmxnet3.c
+++ b/src/drivers/net/vmxnet3.c
@@ -90,7 +90,7 @@
  */
 static int vmxnet3_transmit ( struct net_device *netdev,
 			      struct io_buffer *iobuf ) {
-	struct vmxnet3_nic *vmxnet = netdev_priv ( netdev );
+	struct vmxnet3_nic *vmxnet = netdev->priv;
 	struct vmxnet3_tx_desc *tx_desc;
 	unsigned int fill;
 	unsigned int desc_idx;
@@ -139,7 +139,7 @@
  * @v netdev		Network device
  */
 static void vmxnet3_poll_tx ( struct net_device *netdev ) {
-	struct vmxnet3_nic *vmxnet = netdev_priv ( netdev );
+	struct vmxnet3_nic *vmxnet = netdev->priv;
 	struct vmxnet3_tx_comp *tx_comp;
 	struct io_buffer *iobuf;
 	unsigned int comp_idx;
@@ -188,7 +188,7 @@
  * @v netdev		Network device
  */
 static void vmxnet3_flush_tx ( struct net_device *netdev ) {
-	struct vmxnet3_nic *vmxnet = netdev_priv ( netdev );
+	struct vmxnet3_nic *vmxnet = netdev->priv;
 	unsigned int i;
 
 	for ( i = 0 ; i < VMXNET3_NUM_TX_DESC ; i++ ) {
@@ -206,7 +206,7 @@
  * @v netdev		Network device
  */
 static void vmxnet3_refill_rx ( struct net_device *netdev ) {
-	struct vmxnet3_nic *vmxnet = netdev_priv ( netdev );
+	struct vmxnet3_nic *vmxnet = netdev->priv;
 	struct vmxnet3_rx_desc *rx_desc;
 	struct io_buffer *iobuf;
 	unsigned int orig_rx_prod = vmxnet->count.rx_prod;
@@ -261,7 +261,7 @@
  * @v netdev		Network device
  */
 static void vmxnet3_poll_rx ( struct net_device *netdev ) {
-	struct vmxnet3_nic *vmxnet = netdev_priv ( netdev );
+	struct vmxnet3_nic *vmxnet = netdev->priv;
 	struct vmxnet3_rx_comp *rx_comp;
 	struct io_buffer *iobuf;
 	unsigned int comp_idx;
@@ -315,7 +315,7 @@
  * @v netdev		Network device
  */
 static void vmxnet3_flush_rx ( struct net_device *netdev ) {
-	struct vmxnet3_nic *vmxnet = netdev_priv ( netdev );
+	struct vmxnet3_nic *vmxnet = netdev->priv;
 	struct io_buffer *iobuf;
 	unsigned int i;
 
@@ -333,7 +333,7 @@
  * @v netdev		Network device
  */
 static void vmxnet3_check_link ( struct net_device *netdev ) {
-	struct vmxnet3_nic *vmxnet = netdev_priv ( netdev );
+	struct vmxnet3_nic *vmxnet = netdev->priv;
 	uint32_t state;
 	int link_up;
 	unsigned int link_speed;
@@ -360,7 +360,7 @@
  * @v netdev		Network device
  */
 static void vmxnet3_poll_events ( struct net_device *netdev ) {
-	struct vmxnet3_nic *vmxnet = netdev_priv ( netdev );
+	struct vmxnet3_nic *vmxnet = netdev->priv;
 	uint32_t events;
 
 	/* Do nothing unless there are events to process */
@@ -424,7 +424,7 @@
  * @v enable		Interrupts should be enabled
  */
 static void vmxnet3_irq ( struct net_device *netdev, int enable ) {
-	struct vmxnet3_nic *vmxnet = netdev_priv ( netdev );
+	struct vmxnet3_nic *vmxnet = netdev->priv;
 
 	DBGC ( vmxnet, "VMXNET3 %p %s IRQ not implemented\n",
 	       vmxnet, ( enable ? "enable" : "disable" ) );
@@ -456,7 +456,7 @@
  * @ret rc		Return status code
  */
 static int vmxnet3_open ( struct net_device *netdev ) {
-	struct vmxnet3_nic *vmxnet = netdev_priv ( netdev );
+	struct vmxnet3_nic *vmxnet = netdev->priv;
 	struct vmxnet3_shared *shared;
 	struct vmxnet3_queues *queues;
 	uint64_t shared_bus;
@@ -554,7 +554,7 @@
  * @v netdev		Network device
  */
 static void vmxnet3_close ( struct net_device *netdev ) {
-	struct vmxnet3_nic *vmxnet = netdev_priv ( netdev );
+	struct vmxnet3_nic *vmxnet = netdev->priv;
 
 	vmxnet3_command ( vmxnet, VMXNET3_CMD_QUIESCE_DEV );
 	vmxnet3_command ( vmxnet, VMXNET3_CMD_RESET_DEV );
@@ -633,7 +633,7 @@
 		goto err_alloc_etherdev;
 	}
 	netdev_init ( netdev, &vmxnet3_operations );
-	vmxnet = netdev_priv ( netdev );
+	vmxnet = netdev->priv;
 	pci_set_drvdata ( pci, netdev );
 	netdev->dev = &pci->dev;
 	memset ( vmxnet, 0, sizeof ( *vmxnet ) );
@@ -699,7 +699,7 @@
  */
 static void vmxnet3_remove ( struct pci_device *pci ) {
 	struct net_device *netdev = pci_get_drvdata ( pci );
-	struct vmxnet3_nic *vmxnet = netdev_priv ( netdev );
+	struct vmxnet3_nic *vmxnet = netdev->priv;
 
 	unregister_netdev ( netdev );
 	iounmap ( vmxnet->vd );
diff --git a/src/drivers/net/vxge/vxge_main.c b/src/drivers/net/vxge/vxge_main.c
index 6319283..e323701 100644
--- a/src/drivers/net/vxge/vxge_main.c
+++ b/src/drivers/net/vxge/vxge_main.c
@@ -186,7 +186,7 @@
 
 	vxge_trace();
 
-	vdev = (struct vxgedev *)netdev_priv(dev);
+	vdev = (struct vxgedev *)dev->priv;
 
 	if (!is_vxge_card_up(vdev)) {
 		vxge_debug(VXGE_ERR,
@@ -235,7 +235,7 @@
 
 	vxge_debug(VXGE_POLL, "%s:%d \n", __func__, __LINE__);
 
-	vdev = (struct vxgedev *)netdev_priv(ndev);
+	vdev = (struct vxgedev *)ndev->priv;
 	hldev = (struct __vxge_hw_device *)pci_get_drvdata(vdev->pdev);
 
 	if (!is_vxge_card_up(vdev))
@@ -263,7 +263,7 @@
 	vxge_debug(VXGE_INFO,
 		"%s:%d action(%d)\n", __func__, __LINE__, action);
 
-	vdev = (struct vxgedev *)netdev_priv(netdev);
+	vdev = (struct vxgedev *)netdev->priv;
 	hldev = (struct __vxge_hw_device *)pci_get_drvdata(vdev->pdev);
 
 	switch (action) {
@@ -297,7 +297,7 @@
 	vxge_debug(VXGE_INFO, "%s: %s:%d\n",
 			VXGE_DRIVER_NAME, __func__, __LINE__);
 
-	vdev = (struct vxgedev *)netdev_priv(dev);
+	vdev = (struct vxgedev *)dev->priv;
 	hldev = (struct __vxge_hw_device *)pci_get_drvdata(vdev->pdev);
 
 	/* make sure you have link off by default every time Nic is
@@ -369,7 +369,7 @@
 	vxge_debug(VXGE_INFO, "%s: %s:%d\n",
 		dev->name, __func__, __LINE__);
 
-	vdev = (struct vxgedev *)netdev_priv(dev);
+	vdev = (struct vxgedev *)dev->priv;
 	hldev = (struct __vxge_hw_device *)pci_get_drvdata(vdev->pdev);
 
 	if (!is_vxge_card_up(vdev))
@@ -420,7 +420,7 @@
 
 	vxge_debug(VXGE_INFO, "%s:%d  netdev registering\n",
 		__func__, __LINE__);
-	vdev = netdev_priv(ndev);
+	vdev = ndev->priv;
 	memset(vdev, 0, sizeof(struct vxgedev));
 
 	vdev->ndev = ndev;
@@ -683,7 +683,7 @@
 		return;
 
 	ndev = hldev->ndev;
-	vdev = netdev_priv(ndev);
+	vdev = ndev->priv;
 
 	iounmap(vdev->bar0);
 
diff --git a/src/include/ipxe/netdevice.h b/src/include/ipxe/netdevice.h
index af932c2..a65dbfd 100644
--- a/src/include/ipxe/netdevice.h
+++ b/src/include/ipxe/netdevice.h
@@ -569,17 +569,6 @@
 }
 
 /**
- * Get driver private area for this network device
- *
- * @v netdev		Network device
- * @ret priv		Driver private area for this network device
- */
-static inline __attribute__ (( always_inline )) void *
-netdev_priv ( struct net_device *netdev ) {
-        return netdev->priv;
-}
-
-/**
  * Get per-netdevice configuration settings block
  *
  * @v netdev		Network device
