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 <thomas.petazzoni@free-electrons.com> Cc: Gregory CLEMENT <gregory.clement@free-electrons.com> Tested-by: Arnaud Ebalard <arno@natisbad.org> Signed-off-by: Willy Tarreau <w@1wt.eu> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
5428213c04
commit
34e4179df6
|
@ -611,6 +611,7 @@ mvneta_rxq_next_desc_get(struct mvneta_rx_queue *rxq)
|
||||||
int rx_desc = rxq->next_desc_to_proc;
|
int rx_desc = rxq->next_desc_to_proc;
|
||||||
|
|
||||||
rxq->next_desc_to_proc = MVNETA_QUEUE_NEXT_DESC(rxq, rx_desc);
|
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;
|
return rxq->descs + rx_desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1442,7 +1443,6 @@ static int mvneta_rx(struct mvneta_port *pp, int rx_todo,
|
||||||
u32 rx_status;
|
u32 rx_status;
|
||||||
int rx_bytes, err;
|
int rx_bytes, err;
|
||||||
|
|
||||||
prefetch(rx_desc);
|
|
||||||
rx_done++;
|
rx_done++;
|
||||||
rx_filled++;
|
rx_filled++;
|
||||||
rx_status = rx_desc->status;
|
rx_status = rx_desc->status;
|
||||||
|
|
Loading…
Reference in New Issue