lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 17 Jul 2007 09:45:11 +0100
From:	Stephen Hemminger <shemminger@...ux-foundation.org>
To:	Jeremy Fitzhardinge <jeremy@...source.com>
Cc:	Linus Torvalds <torvalds@...ux-foundation.com>,
	Andi Kleen <ak@...e.de>,
	Andrew Morton <akpm@...ux-foundation.com>,
	lkml <linux-kernel@...r.kernel.org>,
	Jeremy Fitzhardinge <jeremy@...p.org>,
	Xen-devel <xen-devel@...ts.xensource.com>,
	Chris Wright <chrisw@...s-sol.org>,
	Ian Pratt <ian.pratt@...source.com>,
	Christian Limpach <Christian.Limpach@...cam.ac.uk>,
	Jeff Garzik <jeff@...zik.org>,
	Christoph Hellwig <hch@...radead.org>,
	Rusty Russell <rusty@...tcorp.com.au>,
	Herbert Xu <herbert@...dor.apana.org.au>,
	Keir Fraser <Keir.Fraser@...cam.ac.uk>, netdev@...r.kernel.org
Subject: Re: [patch 37/44] xen: add virtual network device driver


> +struct netfront_info {
> +	struct list_head list;
> +	struct net_device *netdev;
> +
> +	struct net_device_stats stats;

There is now a net_device_stats element inside net_device on
2.6.21 or later.

> +
> +	struct xen_netif_tx_front_ring tx;
> +	struct xen_netif_rx_front_ring rx;
> +
> +	spinlock_t   tx_lock;
> +	spinlock_t   rx_lock;

It might be a performance advantage to reorder/align these
structure elements to put transmit hot elements together, and
put tx and rx on different cache lines?

> +	unsigned int evtchn;
> +
> +	/* 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;
> +
> +	/*
> +	 * {tx,rx}_skbs store outstanding skbuffs. Free tx_skb entries
> +	 * are linked from tx_skb_freelist through skb_entry.link.
> +	 *
> +	 *  NB. Freelist index entries are always going to be less than
> +	 *  PAGE_OFFSET, whereas pointers to skbs will always be equal or
> +	 *  greater than PAGE_OFFSET: we use this property to distinguish
> +	 *  them.
> +	 */
> +	union skb_entry {
> +		struct sk_buff *skb;
> +		unsigned link;
> +	} tx_skbs[NET_TX_RING_SIZE];
> +	grant_ref_t gref_tx_head;
> +	grant_ref_t grant_tx_ref[NET_TX_RING_SIZE];
> +	unsigned tx_skb_freelist;
> +
> +	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];
> +};
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists