From 8f98714b1bd818aaf97da0dfc338d963f3aec143 Mon Sep 17 00:00:00 2001 From: Zoltan Kiss Date: Thu, 22 Oct 2015 18:10:27 +0100 Subject: netdev-odp: prefetch packet header immediately Since "dpif-netdev: move header prefetch earlier into the receive function" emc_processing doesn't do that, it has to be done right after receive. Signed-off-by: Zoltan Kiss --- lib/netdev-odp.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/netdev-odp.c b/lib/netdev-odp.c index 09405b781..d29147056 100644 --- a/lib/netdev-odp.c +++ b/lib/netdev-odp.c @@ -620,8 +620,10 @@ netdev_odp_rxq_recv(struct netdev_rxq *rxq_, struct dp_packet **packets, /* Build the array of dp_packet pointers */ for (i = 0; i < pkts; i++) { packets[i] = (struct dp_packet*) odp_packet_user_area(pkt_tbl[i]); - OVS_PREFETCH(packets[i]); + ovs_prefetch_range((void*)packets[i], offsetof(struct dp_packet, md) + offsetof(struct pkt_metadata, tunnel.ip_src)); + OVS_PREFETCH(odp_packet_data(pkt_tbl[i])); } + for (i = 0; i < pkts; i++) { packets[i]->odp_pkt = pkt_tbl[i]; dp_packet_init_odp(packets[i], SHM_PKT_POOL_BUF_SIZE); -- cgit v1.2.3