}
else
{
- memset(p5tuple_pkt->l3_zero_pad, 0, sizeof(p5tuple_pkt->l3_zero_pad));
+ clib_memset(p5tuple_pkt->l3_zero_pad, 0, sizeof(p5tuple_pkt->l3_zero_pad));
clib_memcpy (&p5tuple_pkt->ip4_addr,
get_ptr_to_offset (b0,
offsetof (ip4_header_t,
*pkey++ = *pmatch++ & *pmask++;
*pkey++ = *pmatch++ & *pmask++;
- kv_key->pkt.mask_type_index_lsb = mask_type_index;
+ /*
+ * The use of temporary variable convinces the compiler
+ * to make a u64 write, avoiding the stall on crc32 operation
+ * just a bit later.
+ */
+ fa_packet_info_t tmp_pkt = kv_key->pkt;
+ tmp_pkt.mask_type_index_lsb = mask_type_index;
+ kv_key->pkt.as_u64 = tmp_pkt.as_u64;
+
int res =
clib_bihash_search_inline_2_48_8 (&am->acl_lookup_hash, &kv, &result);