Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 66f9513a authored by Rasesh Mody's avatar Rasesh Mody Committed by David S. Miller
Browse files

bna: RX Processing and Config Changes



Change Details:
 - Prefetch header in GRO path. This reduces napi_frags_skb time from 9% to 5%.
 - Changed the configurable limit of RxQ depth to 16384 (was 2048).
 - bnad_rx_unmap_q elements are cachealigned.

Signed-off-by: default avatarRasesh Mody <rmody@brocade.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e29aa339
Loading
Loading
Loading
Loading
+5 −0
Original line number Original line Diff line number Diff line
@@ -536,6 +536,11 @@ bnad_cq_setup_skb_frags(struct bna_rcb *rcb, struct sk_buff *skb,


	unmap_q = rcb->unmap_q;
	unmap_q = rcb->unmap_q;
	bnad = rcb->bnad;
	bnad = rcb->bnad;

	/* prefetch header */
	prefetch(page_address(unmap_q->unmap[sop_ci].page) +
			unmap_q->unmap[sop_ci].page_offset);

	for (vec = 1, ci = sop_ci; vec <= nvecs; vec++) {
	for (vec = 1, ci = sop_ci; vec <= nvecs; vec++) {
		unmap = &unmap_q->unmap[ci];
		unmap = &unmap_q->unmap[ci];
		BNA_QE_INDX_INC(ci, rcb->q_depth);
		BNA_QE_INDX_INC(ci, rcb->q_depth);
+3 −3
Original line number Original line Diff line number Diff line
@@ -84,7 +84,7 @@ struct bnad_rx_ctrl {
#define BNAD_IOCETH_TIMEOUT	     10000
#define BNAD_IOCETH_TIMEOUT	     10000


#define BNAD_MIN_Q_DEPTH		512
#define BNAD_MIN_Q_DEPTH		512
#define BNAD_MAX_RXQ_DEPTH		2048
#define BNAD_MAX_RXQ_DEPTH		16384
#define BNAD_MAX_TXQ_DEPTH		2048
#define BNAD_MAX_TXQ_DEPTH		2048


#define BNAD_JUMBO_MTU			9000
#define BNAD_JUMBO_MTU			9000
@@ -237,9 +237,9 @@ struct bnad_rx_vector {


struct bnad_rx_unmap {
struct bnad_rx_unmap {
	struct page		*page;
	struct page		*page;
	u32			page_offset;
	struct sk_buff		*skb;
	struct sk_buff		*skb;
	struct bnad_rx_vector	vector;
	struct bnad_rx_vector	vector;
	u32			page_offset;
};
};


enum bnad_rxbuf_type {
enum bnad_rxbuf_type {
@@ -257,7 +257,7 @@ struct bnad_rx_unmap_q {
	int			alloc_order;
	int			alloc_order;
	u32			map_size;
	u32			map_size;
	enum bnad_rxbuf_type	type;
	enum bnad_rxbuf_type	type;
	struct bnad_rx_unmap	unmap[0];
	struct bnad_rx_unmap	unmap[0] ____cacheline_aligned;
};
};


#define BNAD_PCI_DEV_IS_CAT2(_bnad) \
#define BNAD_PCI_DEV_IS_CAT2(_bnad) \