Skip to content

Commit

Permalink
[BNX2]: Separate tx producer and consumer fields
Browse files Browse the repository at this point in the history
Put the tx producer and consumer fields in separate cache lines in
the device structure, similar to the VJ net channel queue structure.

Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Michael Chan authored and David S. Miller committed Mar 23, 2006
1 parent f2a4f05 commit 29b1217
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 9 deletions.
1 change: 1 addition & 0 deletions drivers/net/bnx2.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
#include <linux/workqueue.h>
#include <linux/crc32.h>
#include <linux/prefetch.h>
#include <linux/cache.h>

#include "bnx2.h"
#include "bnx2_fw.h"
Expand Down
21 changes: 12 additions & 9 deletions drivers/net/bnx2.h
Original file line number Diff line number Diff line change
Expand Up @@ -3877,15 +3877,17 @@ struct bnx2 {
#define USING_MSI_FLAG 0x20
#define ASF_ENABLE_FLAG 0x40

struct tx_bd *tx_desc_ring;
struct sw_bd *tx_buf_ring;
u32 tx_prod_bseq;
u16 tx_prod;
u16 tx_cons;
int tx_ring_size;

u16 hw_tx_cons;
u16 hw_rx_cons;
/* Put tx producer and consumer fields in separate cache lines. */

u32 tx_prod_bseq __attribute__((aligned(L1_CACHE_BYTES)));
u16 tx_prod;

struct tx_bd *tx_desc_ring;
struct sw_bd *tx_buf_ring;
int tx_ring_size;

u16 tx_cons __attribute__((aligned(L1_CACHE_BYTES)));
u16 hw_tx_cons;

#ifdef BCM_VLAN
struct vlan_group *vlgrp;
Expand All @@ -3899,6 +3901,7 @@ struct bnx2 {
u32 rx_prod_bseq;
u16 rx_prod;
u16 rx_cons;
u16 hw_rx_cons;

u32 rx_csum;

Expand Down

0 comments on commit 29b1217

Please sign in to comment.