1#ifndef BACKENDS_TOFINO_BF_UTILS_DYNAMIC_HASH_DYNAMIC_HASH_H_
2#define BACKENDS_TOFINO_BF_UTILS_DYNAMIC_HASH_DYNAMIC_HASH_H_
6#include "backends/tofino/bf-utils/dynamic_hash/bfn_hash_algorithm.h"
12#define PARITY_GROUPS_DYN 16
13#define HASH_MATRIX_WIDTH_DYN 52
14#define HASH_SEED_LENGTH 64
16#define BYTE_PAIRS_PER_PARITY_GROUP 4
18enum ixbar_input_type { tCONST, tPHV };
30 uint32_t sib_sym_group;
31} hash_symmetric_info_t;
50 enum ixbar_input_type type;
51 uint32_t ixbar_bit_position;
53 hash_symmetric_info_t symmetric_info;
69 uint32_t p4_hash_output_bit;
70 uint32_t gfm_start_bit;
72} hash_matrix_output_t;
87 uint32_t num_hash_bits;
88 uint32_t *gfm_bit_posn;
89 uint32_t *p4_hash_output_bit_posn;
90} hash_calc_rotate_info_t;
97 ixbar_input_t *ixbar_inputs;
100 hash_matrix_output_t *hash_matrix_outputs;
103 uint32_t parity_group;
112 uint64_t column_value;
122 uint64_t hash_seed_value;
123 uint64_t hash_seed_used;
128 uint32_t byte_pair_index;
135} galois_field_matrix_delta_t;
140 unsigned hash_seed_and_value;
141 unsigned hash_seed_or_value;
147 galois_field_matrix_delta_t *galois_field_matrix_regs;
151 hash_seed_delta_t *hash_seed_regs;
170void determine_hash_matrix(
const ixbar_init_t *ixbar_init,
const ixbar_input_t *inputs,
171 uint32_t inputs_sz,
const bfn_hash_algorithm_t *alg,
172 hash_column_t hash_matrix[PARITY_GROUPS_DYN][HASH_MATRIX_WIDTH_DYN]);
188void determine_seed(
const hash_matrix_output_t *hash_matrix_outputs, uint32_t outputs_sz,
189 const ixbar_input_t *inputs, uint32_t inputs_sz, uint32_t total_input_bits,
190 const bfn_hash_algorithm_t *alg, hash_seed_t *hash_seed);
207void determine_tofino_regs(
const ixbar_init_t *ixbar_init,
const ixbar_input_t *inputs,
208 uint32_t input_sz,
const bfn_hash_algorithm_t *alg,
209 hash_calc_rotate_info_t *rot_info, hash_regs_t *hash_regs);
Definition dynamic_hash.h:127
Definition dynamic_hash.h:68
Definition dynamic_hash.h:85
Definition dynamic_hash.h:111
Definition dynamic_hash.h:145
Definition dynamic_hash.h:121
Definition dynamic_hash.h:138
Contains Symmetric hashing info for a hash input.
Definition dynamic_hash.h:23
Definition dynamic_hash.h:96