Skip to content

Commit

Permalink
gianfar: Optimize struct gfar_priv_tx_q for two cache lines
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Claudiu Manoil authored and David S. Miller committed Jan 29, 2013
1 parent 243bb4c commit 0cd3fde
Showing 1 changed file with 12 additions and 13 deletions.
25 changes: 12 additions & 13 deletions drivers/net/ethernet/freescale/gianfar.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
unsigned int num_txbdfree;
unsigned short skb_curtx;
unsigned short tx_ring_size;
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;
/* 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;
};

/*
Expand Down

0 comments on commit 0cd3fde

Please sign in to comment.