Re: [PATCH 06/14] fm10k: add Vector RX function
From: Chen, Jing D <hidden>
Date: 2015-09-30 13:18:24
-----Original Message----- From: Ananyev, Konstantin Sent: Tuesday, September 29, 2015 9:14 PM To: Chen, Jing D; dev@dpdk.org Subject: RE: [dpdk-dev] [PATCH 06/14] fm10k: add Vector RX functionquoted
+ /* A. load 4 packet in one loop + * [A*. mask out 4 unused dirty field in desc] + * B. copy 4 mbuf point from swring to rx_pkts + * C. calc the number of DD bits among the 4 packets + * [C*. extract the end-of-packet bit, if requested] + * D. fill info. from desc to mbuf + */ + for (pos = 0, nb_pkts_recd = 0; pos < nb_pkts; + pos += RTE_FM10K_DESCS_PER_LOOP, + rxdp += RTE_FM10K_DESCS_PER_LOOP) { + __m128i descs0[RTE_FM10K_DESCS_PER_LOOP]; + __m128i pkt_mb1, pkt_mb2, pkt_mb3, pkt_mb4; + __m128i zero, staterr, sterr_tmp1, sterr_tmp2; + __m128i mbp1, mbp2; /* two mbuf pointer in one XMM reg.*/quoted
+ + if (split_packet) { + rte_prefetch0(&rx_pkts[pos]->cacheline1); + rte_prefetch0(&rx_pkts[pos + 1]->cacheline1); + rte_prefetch0(&rx_pkts[pos + 2]->cacheline1); + rte_prefetch0(&rx_pkts[pos + 3]->cacheline1); + }Same thing as with i40e vPMD: You are pretching junk addreses here. Check out Zoltan's patch: http://dpdk.org/dev/patchwork/patch/7190/ and related conversation: http://dpdk.org/ml/archives/dev/2015-September/023715.html I think there is the same issue here. Konstantin
Thanks for the comments, Konstantin! I'll check the material you referred to.