diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2007-02-26 14:52:06 -0500 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-02-27 04:21:25 -0500 |
commit | 908b637fe793165b6aecdc875cdca67c4959a1ad (patch) | |
tree | 6fecf3ac52658a42ea77eb48313ed445a43112e9 | |
parent | 92b0c4e240d0768f875bd08d01ec26d87b9546d1 (diff) |
Alignment in mv643xx_eth
The driver contains this little piece of candy:
#if defined(CONFIG_DMA_NONCOHERENT) || defined(CONFIG_NOT_COHERENT_CACHE)
#define ETH_DMA_ALIGN L1_CACHE_BYTES
#else
#define ETH_DMA_ALIGN 8
#endif
Any reason why we're not using dma_get_cache_alignment() instead?
Ralf
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
-rw-r--r-- | drivers/net/mv643xx_eth.c | 6 | ||||
-rw-r--r-- | drivers/net/mv643xx_eth.h | 11 |
2 files changed, 3 insertions, 14 deletions
diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c index d98e53efa2ef..3e045a695dbc 100644 --- a/drivers/net/mv643xx_eth.c +++ b/drivers/net/mv643xx_eth.c | |||
@@ -147,13 +147,13 @@ static void mv643xx_eth_rx_refill_descs(struct net_device *dev) | |||
147 | int unaligned; | 147 | int unaligned; |
148 | 148 | ||
149 | while (mp->rx_desc_count < mp->rx_ring_size) { | 149 | while (mp->rx_desc_count < mp->rx_ring_size) { |
150 | skb = dev_alloc_skb(ETH_RX_SKB_SIZE + ETH_DMA_ALIGN); | 150 | skb = dev_alloc_skb(ETH_RX_SKB_SIZE + dma_get_cache_alignment()); |
151 | if (!skb) | 151 | if (!skb) |
152 | break; | 152 | break; |
153 | mp->rx_desc_count++; | 153 | mp->rx_desc_count++; |
154 | unaligned = (u32)skb->data & (ETH_DMA_ALIGN - 1); | 154 | unaligned = (u32)skb->data & (dma_get_cache_alignment() - 1); |
155 | if (unaligned) | 155 | if (unaligned) |
156 | skb_reserve(skb, ETH_DMA_ALIGN - unaligned); | 156 | skb_reserve(skb, dma_get_cache_alignment() - unaligned); |
157 | pkt_info.cmd_sts = ETH_RX_ENABLE_INTERRUPT; | 157 | pkt_info.cmd_sts = ETH_RX_ENABLE_INTERRUPT; |
158 | pkt_info.byte_cnt = ETH_RX_SKB_SIZE; | 158 | pkt_info.byte_cnt = ETH_RX_SKB_SIZE; |
159 | pkt_info.buf_ptr = dma_map_single(NULL, skb->data, | 159 | pkt_info.buf_ptr = dma_map_single(NULL, skb->data, |
diff --git a/drivers/net/mv643xx_eth.h b/drivers/net/mv643xx_eth.h index 33c5fafdbbd3..7cb0a41c5cb4 100644 --- a/drivers/net/mv643xx_eth.h +++ b/drivers/net/mv643xx_eth.h | |||
@@ -42,17 +42,6 @@ | |||
42 | #define MAX_DESCS_PER_SKB 1 | 42 | #define MAX_DESCS_PER_SKB 1 |
43 | #endif | 43 | #endif |
44 | 44 | ||
45 | /* | ||
46 | * The MV643XX HW requires 8-byte alignment. However, when I/O | ||
47 | * is non-cache-coherent, we need to ensure that the I/O buffers | ||
48 | * we use don't share cache lines with other data. | ||
49 | */ | ||
50 | #if defined(CONFIG_DMA_NONCOHERENT) || defined(CONFIG_NOT_COHERENT_CACHE) | ||
51 | #define ETH_DMA_ALIGN L1_CACHE_BYTES | ||
52 | #else | ||
53 | #define ETH_DMA_ALIGN 8 | ||
54 | #endif | ||
55 | |||
56 | #define ETH_VLAN_HLEN 4 | 45 | #define ETH_VLAN_HLEN 4 |
57 | #define ETH_FCS_LEN 4 | 46 | #define ETH_FCS_LEN 4 |
58 | #define ETH_HW_IP_ALIGN 2 /* hw aligns IP header */ | 47 | #define ETH_HW_IP_ALIGN 2 /* hw aligns IP header */ |