X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_table%2Frte_table_hash_key32.c;h=a7aba49237753da07cae270dcc7d9ccca02f17ea;hb=99c12dcca65d;hp=b3ae73e32579b580ff045781b78e3f7133dbf006;hpb=5217261c6a47a5b70de5d05998d711b69f3d167b;p=dpdk.git diff --git a/lib/librte_table/rte_table_hash_key32.c b/lib/librte_table/rte_table_hash_key32.c index b3ae73e325..a7aba49237 100644 --- a/lib/librte_table/rte_table_hash_key32.c +++ b/lib/librte_table/rte_table_hash_key32.c @@ -591,16 +591,17 @@ rte_table_hash_entry_delete_key32_ext( pos = 3; \ } -#define lookup1_stage0(pkt0_index, mbuf0, pkts, pkts_mask) \ +#define lookup1_stage0(pkt0_index, mbuf0, pkts, pkts_mask, f) \ { \ uint64_t pkt_mask; \ + uint32_t key_offset = f->key_offset; \ \ pkt0_index = __builtin_ctzll(pkts_mask); \ pkt_mask = 1LLU << pkt0_index; \ pkts_mask &= ~pkt_mask; \ \ mbuf0 = pkts[pkt0_index]; \ - rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf0, 0)); \ + rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf0, key_offset));\ } #define lookup1_stage1(mbuf1, bucket1, f) \ @@ -698,36 +699,38 @@ rte_table_hash_entry_delete_key32_ext( } #define lookup2_stage0(pkt00_index, pkt01_index, mbuf00, mbuf01,\ - pkts, pkts_mask) \ + pkts, pkts_mask, f) \ { \ uint64_t pkt00_mask, pkt01_mask; \ + uint32_t key_offset = f->key_offset; \ \ pkt00_index = __builtin_ctzll(pkts_mask); \ pkt00_mask = 1LLU << pkt00_index; \ pkts_mask &= ~pkt00_mask; \ \ mbuf00 = pkts[pkt00_index]; \ - rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf00, 0)); \ + rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf00, key_offset));\ \ pkt01_index = __builtin_ctzll(pkts_mask); \ pkt01_mask = 1LLU << pkt01_index; \ pkts_mask &= ~pkt01_mask; \ \ mbuf01 = pkts[pkt01_index]; \ - rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf01, 0)); \ + rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf01, key_offset));\ } #define lookup2_stage0_with_odd_support(pkt00_index, pkt01_index,\ - mbuf00, mbuf01, pkts, pkts_mask) \ + mbuf00, mbuf01, pkts, pkts_mask, f) \ { \ uint64_t pkt00_mask, pkt01_mask; \ + uint32_t key_offset = f->key_offset; \ \ pkt00_index = __builtin_ctzll(pkts_mask); \ pkt00_mask = 1LLU << pkt00_index; \ pkts_mask &= ~pkt00_mask; \ \ mbuf00 = pkts[pkt00_index]; \ - rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf00, 0)); \ + rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf00, key_offset)); \ \ pkt01_index = __builtin_ctzll(pkts_mask); \ if (pkts_mask == 0) \ @@ -737,7 +740,7 @@ rte_table_hash_entry_delete_key32_ext( pkts_mask &= ~pkt01_mask; \ \ mbuf01 = pkts[pkt01_index]; \ - rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf01, 0)); \ + rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf01, key_offset)); \ } #define lookup2_stage1(mbuf10, mbuf11, bucket10, bucket11, f) \ @@ -852,7 +855,7 @@ rte_table_hash_lookup_key32_lru( struct rte_mbuf *mbuf; uint32_t pkt_index; - lookup1_stage0(pkt_index, mbuf, pkts, pkts_mask); + lookup1_stage0(pkt_index, mbuf, pkts, pkts_mask, f); lookup1_stage1(mbuf, bucket, f); lookup1_stage2_lru(pkt_index, mbuf, bucket, pkts_mask_out, entries, f); @@ -869,7 +872,7 @@ rte_table_hash_lookup_key32_lru( */ /* Pipeline stage 0 */ lookup2_stage0(pkt00_index, pkt01_index, mbuf00, mbuf01, pkts, - pkts_mask); + pkts_mask, f); /* Pipeline feed */ mbuf10 = mbuf00; @@ -879,7 +882,7 @@ rte_table_hash_lookup_key32_lru( /* Pipeline stage 0 */ lookup2_stage0(pkt00_index, pkt01_index, mbuf00, mbuf01, pkts, - pkts_mask); + pkts_mask, f); /* Pipeline stage 1 */ lookup2_stage1(mbuf10, mbuf11, bucket10, bucket11, f); @@ -903,7 +906,7 @@ rte_table_hash_lookup_key32_lru( /* Pipeline stage 0 */ lookup2_stage0_with_odd_support(pkt00_index, pkt01_index, - mbuf00, mbuf01, pkts, pkts_mask); + mbuf00, mbuf01, pkts, pkts_mask, f); /* Pipeline stage 1 */ lookup2_stage1(mbuf10, mbuf11, bucket10, bucket11, f); @@ -981,7 +984,7 @@ rte_table_hash_lookup_key32_ext( struct rte_mbuf *mbuf; uint32_t pkt_index; - lookup1_stage0(pkt_index, mbuf, pkts, pkts_mask); + lookup1_stage0(pkt_index, mbuf, pkts, pkts_mask, f); lookup1_stage1(mbuf, bucket, f); lookup1_stage2_ext(pkt_index, mbuf, bucket, pkts_mask_out, entries, buckets_mask, buckets, @@ -997,7 +1000,7 @@ rte_table_hash_lookup_key32_ext( */ /* Pipeline stage 0 */ lookup2_stage0(pkt00_index, pkt01_index, mbuf00, mbuf01, pkts, - pkts_mask); + pkts_mask, f); /* Pipeline feed */ mbuf10 = mbuf00; @@ -1007,7 +1010,7 @@ rte_table_hash_lookup_key32_ext( /* Pipeline stage 0 */ lookup2_stage0(pkt00_index, pkt01_index, mbuf00, mbuf01, pkts, - pkts_mask); + pkts_mask, f); /* Pipeline stage 1 */ lookup2_stage1(mbuf10, mbuf11, bucket10, bucket11, f); @@ -1031,7 +1034,7 @@ rte_table_hash_lookup_key32_ext( /* Pipeline stage 0 */ lookup2_stage0_with_odd_support(pkt00_index, pkt01_index, - mbuf00, mbuf01, pkts, pkts_mask); + mbuf00, mbuf01, pkts, pkts_mask, f); /* Pipeline stage 1 */ lookup2_stage1(mbuf10, mbuf11, bucket10, bucket11, f);