diff --git a/target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h b/target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h index fca072a83a4d3b..141c657f008c39 100644 --- a/target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h +++ b/target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h @@ -107,13 +107,16 @@ struct ag71xx_buf { }; struct ag71xx_ring { - struct ag71xx_buf *buf; - u8 *descs_cpu; - dma_addr_t descs_dma; - u16 desc_split; - u16 order; + /* "Hot" fields in the data path. */ unsigned int curr; unsigned int dirty; + + /* "Cold" fields - not used in the data path. */ + struct ag71xx_buf *buf; + u16 order; + u16 desc_split; + dma_addr_t descs_dma; + u8 *descs_cpu; }; struct ag71xx_int_stats { @@ -151,21 +154,20 @@ struct ag71xx { * Critical data related to the per-packet data path are clustered * early in this structure to help improve the D-cache footprint. */ - struct ag71xx_ring rx_ring ____cacheline_aligned; - struct ag71xx_ring tx_ring ____cacheline_aligned; + struct ag71xx_ring rx_ring; + u16 rx_buf_size; + u16 rx_buf_offset; + u32 msg_enable; + struct ag71xx_ring tx_ring; int mac_idx; - u16 desc_pktlen_mask; - u16 rx_buf_size; - u8 rx_buf_offset; u8 tx_hang_workaround:1; + struct napi_struct napi; struct net_device *dev; struct platform_device *pdev; spinlock_t lock; - struct napi_struct napi; - u32 msg_enable; /* * From this point onwards we're not looking at per-packet fields. @@ -184,12 +186,12 @@ struct ag71xx { unsigned int speed; int duplex; - struct delayed_work restart_work; - struct timer_list oom_timer; - struct reset_control *mac_reset; struct reset_control *mdio_reset; + struct delayed_work restart_work; + struct timer_list oom_timer; + u32 fifodata[3]; u32 plldata[3]; u32 pllreg[3];