1#ifndef BACKENDS_TOFINO_BF_UTILS_DYNAMIC_HASH_DYNAMIC_HASH_H_
2#define BACKENDS_TOFINO_BF_UTILS_DYNAMIC_HASH_DYNAMIC_HASH_H_
7#include "backends/tofino/bf-utils/dynamic_hash/bfn_hash_algorithm.h"
13#define PARITY_GROUPS_DYN 16
14#define HASH_MATRIX_WIDTH_DYN 52
15#define HASH_SEED_LENGTH 64
17#define BYTE_PAIRS_PER_PARITY_GROUP 4
19enum ixbar_input_type { tCONST, tPHV };
31 uint32_t sib_sym_group;
32} hash_symmetric_info_t;
51 enum ixbar_input_type type;
52 uint32_t ixbar_bit_position;
54 hash_symmetric_info_t symmetric_info;
70 uint32_t p4_hash_output_bit;
71 uint32_t gfm_start_bit;
73} hash_matrix_output_t;
88 uint32_t num_hash_bits;
89 uint32_t *gfm_bit_posn;
90 uint32_t *p4_hash_output_bit_posn;
91} hash_calc_rotate_info_t;
98 ixbar_input_t *ixbar_inputs;
101 hash_matrix_output_t *hash_matrix_outputs;
104 uint32_t parity_group;
113 uint64_t column_value;
123 uint64_t hash_seed_value;
124 uint64_t hash_seed_used;
129 uint32_t byte_pair_index;
136} galois_field_matrix_delta_t;
141 unsigned hash_seed_and_value;
142 unsigned hash_seed_or_value;
148 galois_field_matrix_delta_t *galois_field_matrix_regs;
152 hash_seed_delta_t *hash_seed_regs;
171void determine_hash_matrix(
const ixbar_init_t *ixbar_init,
const ixbar_input_t *inputs,
172 uint32_t inputs_sz,
const bfn_hash_algorithm_t *alg,
173 hash_column_t hash_matrix[PARITY_GROUPS_DYN][HASH_MATRIX_WIDTH_DYN]);
189void determine_seed(
const hash_matrix_output_t *hash_matrix_outputs, uint32_t outputs_sz,
190 const ixbar_input_t *inputs, uint32_t inputs_sz, uint32_t total_input_bits,
191 const bfn_hash_algorithm_t *alg, hash_seed_t *hash_seed);
208void determine_tofino_regs(
const ixbar_init_t *ixbar_init,
const ixbar_input_t *inputs,
209 uint32_t input_sz,
const bfn_hash_algorithm_t *alg,
210 hash_calc_rotate_info_t *rot_info, hash_regs_t *hash_regs);
Definition dynamic_hash.h:128
Definition dynamic_hash.h:69
Definition dynamic_hash.h:86
Definition dynamic_hash.h:112
Definition dynamic_hash.h:146
Definition dynamic_hash.h:122
Definition dynamic_hash.h:139
Contains Symmetric hashing info for a hash input.
Definition dynamic_hash.h:24
Definition dynamic_hash.h:97