summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/freescale/fec.h
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2014-03-23 15:17:13 +0000
committerRussell King <rmk+kernel@arm.linux.org.uk>2014-10-17 14:35:13 +0100
commit7e7801e54ee1429d7ec4c87fd12633f86b100f9f (patch)
tree5dbabe294d992071fc4095ea2808869373c534df /drivers/net/ethernet/freescale/fec.h
parent9d498e576d9caa2240a2c85d1b664da046c94d08 (diff)
net: fec: use a union for the buffer descriptors
Using a union gives clearer C code than the existing solution, and allows the removal of some odd code from the receive path whose purpose was to merely store the enhanced buffer descriptor. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'drivers/net/ethernet/freescale/fec.h')
-rw-r--r--drivers/net/ethernet/freescale/fec.h14
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/net/ethernet/freescale/fec.h b/drivers/net/ethernet/freescale/fec.h
index a1caee8fd648..e850e7e5118f 100644
--- a/drivers/net/ethernet/freescale/fec.h
+++ b/drivers/net/ethernet/freescale/fec.h
@@ -170,6 +170,11 @@ struct bufdesc_ex {
unsigned short res0[4];
};
+union bufdesc_u {
+ struct bufdesc bd;
+ struct bufdesc_ex ebd;
+};
+
/*
* The following definitions courtesy of commproc.h, which where
* Copyright (c) 1997 Dan Malek (dmalek@jlc.net).
@@ -288,14 +293,13 @@ struct fec_enet_private {
dma_addr_t rx_bd_dma;
dma_addr_t tx_bd_dma;
/* Address of Rx and Tx buffers */
- struct bufdesc *rx_bd_base;
- struct bufdesc *tx_bd_base;
+ union bufdesc_u *rx_bd_base;
+ union bufdesc_u *tx_bd_base;
/* The next free ring entry */
- struct bufdesc *cur_rx, *cur_tx;
+ union bufdesc_u *cur_rx, *cur_tx;
/* The ring entries to be free()ed */
- struct bufdesc *dirty_tx;
+ union bufdesc_u *dirty_tx;
- unsigned short bufdesc_size;
unsigned short tx_ring_size;
unsigned short rx_ring_size;
unsigned short tx_stop_threshold;