From: willy tarreau Date: Thu, 16 Jan 2014 07:20:15 +0000 (+0100) Subject: net: mvneta: prefetch next rx descriptor instead of current one X-Git-Tag: upstream/snapshot3+hdmi~3572^2~146^2~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=34e4179df65d72d83e71860b099d71e0f3aa1210;p=platform%2Fadaptation%2Frenesas_rcar%2Frenesas_kernel.git net: mvneta: prefetch next rx descriptor instead of current one Currently, the mvneta driver tries to prefetch the current Rx descriptor during read. Tests have shown that prefetching the next one instead increases general performance by about 1% on HTTP traffic. Cc: Thomas Petazzoni Cc: Gregory CLEMENT Tested-by: Arnaud Ebalard Signed-off-by: Willy Tarreau Signed-off-by: David S. Miller --- diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c index aa3a4f7..c7b37e0 100644 --- a/drivers/net/ethernet/marvell/mvneta.c +++ b/drivers/net/ethernet/marvell/mvneta.c @@ -611,6 +611,7 @@ mvneta_rxq_next_desc_get(struct mvneta_rx_queue *rxq) int rx_desc = rxq->next_desc_to_proc; rxq->next_desc_to_proc = MVNETA_QUEUE_NEXT_DESC(rxq, rx_desc); + prefetch(rxq->descs + rxq->next_desc_to_proc); return rxq->descs + rx_desc; } @@ -1442,7 +1443,6 @@ static int mvneta_rx(struct mvneta_port *pp, int rx_todo, u32 rx_status; int rx_bytes, err; - prefetch(rx_desc); rx_done++; rx_filled++; rx_status = rx_desc->status;