rte_memcpy(mbufs2, mbufs, sizeof(mbufs[0]) * n_pkts);
/* prefetch for optimization */
prox_rte_ether_hdr * hdr[MAX_PKT_BURST];
- //for (uint16_t i = 0; i < n_pkts; ++i) {
- // PREFETCH0(mbufs2[i]);
- //}
+ for (uint16_t j = 0; j < n_pkts; ++j) {
+ PREFETCH0(mbufs2[j]);
+ }
for (uint16_t j = 0; j < n_pkts; ++j) {
hdr[j] = rte_pktmbuf_mtod(mbufs2[j], prox_rte_ether_hdr *);
PREFETCH0(hdr[j]);
}
for (uint16_t j = 0; j < n_pkts; ++j) {
- rte_pktmbuf_refcnt_update(mbufs2[j], (task->n_dests - 1) * task->multiplier);
+ rte_pktmbuf_refcnt_update(mbufs2[j], task->n_dests * task->multiplier - 1);
prox_rte_ipv4_hdr *pip = (prox_rte_ipv4_hdr *) (hdr[j] + 1);
- if ((task->mirror_size != 0) && (hdr[j]->ether_type == RTE_ETHER_TYPE_IPV4) && ((pip->next_proto_id == IPPROTO_UDP) || (pip->next_proto_id == IPPROTO_TCP))) {
+ if ((task->mirror_size != 0) && (hdr[j]->ether_type == ETYPE_IPv4) && ((pip->next_proto_id == IPPROTO_UDP) || (pip->next_proto_id == IPPROTO_TCP))) {
rte_pktmbuf_pkt_len(mbufs2[j]) = task->mirror_size;
rte_pktmbuf_data_len(mbufs2[j]) = task->mirror_size;
pip->total_length = rte_bswap16(task->mirror_size-sizeof(prox_rte_ether_hdr));