7#ifndef BACKENDS_TOFINO_BF_UTILS_DYNAMIC_HASH_DYNAMIC_HASH_H_
8#define BACKENDS_TOFINO_BF_UTILS_DYNAMIC_HASH_DYNAMIC_HASH_H_
12#include "backends/tofino/bf-utils/dynamic_hash/bfn_hash_algorithm.h"
18#define PARITY_GROUPS_DYN 16
19#define HASH_MATRIX_WIDTH_DYN 52
20#define HASH_SEED_LENGTH 64
22#define BYTE_PAIRS_PER_PARITY_GROUP 4
24enum ixbar_input_type { tCONST, tPHV };
36 uint32_t sib_sym_group;
37} hash_symmetric_info_t;
56 enum ixbar_input_type type;
57 uint32_t ixbar_bit_position;
59 hash_symmetric_info_t symmetric_info;
75 uint32_t p4_hash_output_bit;
76 uint32_t gfm_start_bit;
78} hash_matrix_output_t;
93 uint32_t num_hash_bits;
94 uint32_t *gfm_bit_posn;
95 uint32_t *p4_hash_output_bit_posn;
96} hash_calc_rotate_info_t;
103 ixbar_input_t *ixbar_inputs;
106 hash_matrix_output_t *hash_matrix_outputs;
109 uint32_t parity_group;
118 uint64_t column_value;
128 uint64_t hash_seed_value;
129 uint64_t hash_seed_used;
134 uint32_t byte_pair_index;
141} galois_field_matrix_delta_t;
146 unsigned hash_seed_and_value;
147 unsigned hash_seed_or_value;
153 galois_field_matrix_delta_t *galois_field_matrix_regs;
157 hash_seed_delta_t *hash_seed_regs;
176void determine_hash_matrix(
const ixbar_init_t *ixbar_init,
const ixbar_input_t *inputs,
177 uint32_t inputs_sz,
const bfn_hash_algorithm_t *alg,
178 hash_column_t hash_matrix[PARITY_GROUPS_DYN][HASH_MATRIX_WIDTH_DYN]);
194void determine_seed(
const hash_matrix_output_t *hash_matrix_outputs, uint32_t outputs_sz,
195 const ixbar_input_t *inputs, uint32_t inputs_sz, uint32_t total_input_bits,
196 const bfn_hash_algorithm_t *alg, hash_seed_t *hash_seed);
213void determine_tofino_regs(
const ixbar_init_t *ixbar_init,
const ixbar_input_t *inputs,
214 uint32_t input_sz,
const bfn_hash_algorithm_t *alg,
215 hash_calc_rotate_info_t *rot_info, hash_regs_t *hash_regs);
Definition dynamic_hash.h:133
Definition dynamic_hash.h:74
Definition dynamic_hash.h:91
Definition dynamic_hash.h:117
Definition dynamic_hash.h:151
Definition dynamic_hash.h:127
Definition dynamic_hash.h:144
Contains Symmetric hashing info for a hash input.
Definition dynamic_hash.h:29
Definition dynamic_hash.h:102