Commit 6f059c3e authored by Dale Farnsworth's avatar Dale Farnsworth Committed by Jeff Garzik

[PATCH] mv643xx_eth: Cache align skb->data if CONFIG_NOT_COHERENT_CACHE

When I/O is non-cache-coherent, we need to ensure that the I/O buffers
we use don't share cache lines with other data.
Signed-off-by: default avatarDale Farnsworth <dale@farnsworth.org>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 9362860f
...@@ -42,13 +42,23 @@ ...@@ -42,13 +42,23 @@
#define MAX_DESCS_PER_SKB 1 #define MAX_DESCS_PER_SKB 1
#endif #endif
/*
* The MV643XX HW requires 8-byte alignment. However, when I/O
* is non-cache-coherent, we need to ensure that the I/O buffers
* we use don't share cache lines with other data.
*/
#if defined(CONFIG_DMA_NONCOHERENT) || defined(CONFIG_NOT_COHERENT_CACHE)
#define ETH_DMA_ALIGN L1_CACHE_BYTES
#else
#define ETH_DMA_ALIGN 8
#endif
#define ETH_VLAN_HLEN 4 #define ETH_VLAN_HLEN 4
#define ETH_FCS_LEN 4 #define ETH_FCS_LEN 4
#define ETH_DMA_ALIGN 8 /* hw requires 8-byte alignment */
#define ETH_HW_IP_ALIGN 2 /* hw aligns IP header */ #define ETH_HW_IP_ALIGN 2 /* hw aligns IP header */
#define ETH_WRAPPER_LEN (ETH_HW_IP_ALIGN + ETH_HLEN + \ #define ETH_WRAPPER_LEN (ETH_HW_IP_ALIGN + ETH_HLEN + \
ETH_VLAN_HLEN + ETH_FCS_LEN) ETH_VLAN_HLEN + ETH_FCS_LEN)
#define ETH_RX_SKB_SIZE ((dev->mtu + ETH_WRAPPER_LEN + 7) & ~0x7) #define ETH_RX_SKB_SIZE (dev->mtu + ETH_WRAPPER_LEN + ETH_DMA_ALIGN)
#define ETH_RX_QUEUES_ENABLED (1 << 0) /* use only Q0 for receive */ #define ETH_RX_QUEUES_ENABLED (1 << 0) /* use only Q0 for receive */
#define ETH_TX_QUEUES_ENABLED (1 << 0) /* use only Q0 for transmit */ #define ETH_TX_QUEUES_ENABLED (1 << 0) /* use only Q0 for transmit */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment