Skip to content

Commit

Permalink
xen-netfront: rearrange netfront structure to separate tx and rx
Browse files Browse the repository at this point in the history
Keep tx and rx elements separate on different cachelines to prevent
bouncing.

Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
Acked-by: Jeff Garzik <jgarzik@pobox.com>
Cc: Stephen Hemminger <shemminger@linux-foundation.org>
Cc: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
  • Loading branch information
Jeremy Fitzhardinge authored and Jeff Garzik committed Oct 15, 2007
1 parent e9edda6 commit 84284d3
Showing 1 changed file with 17 additions and 18 deletions.
35 changes: 17 additions & 18 deletions drivers/net/xen-netfront.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,22 +74,12 @@ struct netfront_info {

struct napi_struct napi;

struct xen_netif_tx_front_ring tx;
struct xen_netif_rx_front_ring rx;

spinlock_t tx_lock;
spinlock_t rx_lock;

unsigned int evtchn;
struct xenbus_device *xbdev;

/* Receive-ring batched refills. */
#define RX_MIN_TARGET 8
#define RX_DFL_MIN_TARGET 64
#define RX_MAX_TARGET min_t(int, NET_RX_RING_SIZE, 256)
unsigned rx_min_target, rx_max_target, rx_target;
struct sk_buff_head rx_batch;

struct timer_list rx_refill_timer;
spinlock_t tx_lock;
struct xen_netif_tx_front_ring tx;
int tx_ring_ref;

/*
* {tx,rx}_skbs store outstanding skbuffs. Free tx_skb entries
Expand All @@ -108,14 +98,23 @@ struct netfront_info {
grant_ref_t grant_tx_ref[NET_TX_RING_SIZE];
unsigned tx_skb_freelist;

spinlock_t rx_lock ____cacheline_aligned_in_smp;
struct xen_netif_rx_front_ring rx;
int rx_ring_ref;

/* Receive-ring batched refills. */
#define RX_MIN_TARGET 8
#define RX_DFL_MIN_TARGET 64
#define RX_MAX_TARGET min_t(int, NET_RX_RING_SIZE, 256)
unsigned rx_min_target, rx_max_target, rx_target;
struct sk_buff_head rx_batch;

struct timer_list rx_refill_timer;

struct sk_buff *rx_skbs[NET_RX_RING_SIZE];
grant_ref_t gref_rx_head;
grant_ref_t grant_rx_ref[NET_RX_RING_SIZE];

struct xenbus_device *xbdev;
int tx_ring_ref;
int rx_ring_ref;

unsigned long rx_pfn_array[NET_RX_RING_SIZE];
struct multicall_entry rx_mcl[NET_RX_RING_SIZE+1];
struct mmu_update rx_mmu[NET_RX_RING_SIZE];
Expand Down

0 comments on commit 84284d3

Please sign in to comment.