diff options
Diffstat (limited to 'target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h')
-rw-r--r-- | target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h index 3397ca828b..8665cadd7d 100644 --- a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h +++ b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h @@ -85,6 +85,9 @@ struct ag71xx_desc { u32 pad; } __attribute__((aligned(4))); +#define AG71XX_DESC_SIZE roundup(sizeof(struct ag71xx_desc), \ + L1_CACHE_BYTES) + struct ag71xx_buf { union { struct sk_buff *skb; @@ -102,10 +105,9 @@ struct ag71xx_ring { u8 *descs_cpu; dma_addr_t descs_dma; u16 desc_split; - u16 desc_size; + u16 order; unsigned int curr; unsigned int dirty; - unsigned int size; }; struct ag71xx_mdio { @@ -205,7 +207,13 @@ static inline int ag71xx_desc_empty(struct ag71xx_desc *desc) static inline struct ag71xx_desc * ag71xx_ring_desc(struct ag71xx_ring *ring, int idx) { - return (struct ag71xx_desc *) &ring->descs_cpu[idx * ring->desc_size]; + return (struct ag71xx_desc *) &ring->descs_cpu[idx * AG71XX_DESC_SIZE]; +} + +static inline int +ag71xx_ring_size_order(int size) +{ + return fls(size - 1); } /* Register offsets */ |