mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-19 04:14:49 +08:00
gianfar: Optimize struct gfar_priv_tx_q for two cache lines
Resize and regroup structure members to eliminate memory holes and to pack the structure into 2 cache lines (from 3). tx_ring_size was resized from 4 to 2 bytes and few members were re-grouped in order to eliminate byte holes and achieve compactness. Where possible, few members were grouped according to their usage and access order (i.e. start_xmit vs. clean_tx_ring members), less important members were pushed at the end. Signed-off-by: Claudiu Manoil <claudiu.manoil@freescale.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
243bb4c6d7
commit
0cd3fdea07
@ -935,26 +935,25 @@ struct tx_q_stats {
|
||||
* @txtime: coalescing value if based on time
|
||||
*/
|
||||
struct gfar_priv_tx_q {
|
||||
/* cacheline 1 */
|
||||
spinlock_t txlock __attribute__ ((aligned (SMP_CACHE_BYTES)));
|
||||
struct sk_buff ** tx_skbuff;
|
||||
/* Buffer descriptor pointers */
|
||||
dma_addr_t tx_bd_dma_base;
|
||||
struct txbd8 *tx_bd_base;
|
||||
struct txbd8 *cur_tx;
|
||||
struct txbd8 *dirty_tx;
|
||||
struct tx_q_stats stats;
|
||||
struct net_device *dev;
|
||||
struct gfar_priv_grp *grp;
|
||||
u16 skb_curtx;
|
||||
u16 skb_dirtytx;
|
||||
u16 qindex;
|
||||
unsigned int tx_ring_size;
|
||||
unsigned int num_txbdfree;
|
||||
unsigned short skb_curtx;
|
||||
unsigned short tx_ring_size;
|
||||
struct tx_q_stats stats;
|
||||
struct gfar_priv_grp *grp;
|
||||
/* cacheline 2 */
|
||||
struct net_device *dev;
|
||||
struct sk_buff **tx_skbuff;
|
||||
struct txbd8 *dirty_tx;
|
||||
unsigned short skb_dirtytx;
|
||||
unsigned short qindex;
|
||||
/* Configuration info for the coalescing features */
|
||||
unsigned char txcoalescing;
|
||||
unsigned int txcoalescing;
|
||||
unsigned long txic;
|
||||
unsigned short txcount;
|
||||
unsigned short txtime;
|
||||
dma_addr_t tx_bd_dma_base;
|
||||
};
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user