1*bc712f1cSDenis Pryazhennikov /* SPDX-License-Identifier: BSD-3-Clause 2*bc712f1cSDenis Pryazhennikov * 3*bc712f1cSDenis Pryazhennikov * Copyright (c) 2023 Advanced Micro Devices, Inc. 4*bc712f1cSDenis Pryazhennikov */ 5*bc712f1cSDenis Pryazhennikov 6*bc712f1cSDenis Pryazhennikov #ifndef _SFC_TBL_META_H 7*bc712f1cSDenis Pryazhennikov #define _SFC_TBL_META_H 8*bc712f1cSDenis Pryazhennikov 9*bc712f1cSDenis Pryazhennikov #include <rte_hash.h> 10*bc712f1cSDenis Pryazhennikov 11*bc712f1cSDenis Pryazhennikov #include "efx.h" 12*bc712f1cSDenis Pryazhennikov 13*bc712f1cSDenis Pryazhennikov #ifdef __cplusplus 14*bc712f1cSDenis Pryazhennikov extern "C" { 15*bc712f1cSDenis Pryazhennikov #endif 16*bc712f1cSDenis Pryazhennikov 17*bc712f1cSDenis Pryazhennikov /* Metadata about table layout */ 18*bc712f1cSDenis Pryazhennikov struct sfc_tbl_meta { 19*bc712f1cSDenis Pryazhennikov efx_table_id_t table_id; 20*bc712f1cSDenis Pryazhennikov efx_table_descriptor_t descriptor; 21*bc712f1cSDenis Pryazhennikov efx_table_field_descriptor_t *keys; 22*bc712f1cSDenis Pryazhennikov efx_table_field_descriptor_t *responses; 23*bc712f1cSDenis Pryazhennikov }; 24*bc712f1cSDenis Pryazhennikov 25*bc712f1cSDenis Pryazhennikov struct sfc_tbl_meta_cache { 26*bc712f1cSDenis Pryazhennikov struct rte_hash *cache; 27*bc712f1cSDenis Pryazhennikov }; 28*bc712f1cSDenis Pryazhennikov 29*bc712f1cSDenis Pryazhennikov struct sfc_adapter; 30*bc712f1cSDenis Pryazhennikov 31*bc712f1cSDenis Pryazhennikov const struct sfc_tbl_meta *sfc_tbl_meta_lookup(struct sfc_adapter *sa, 32*bc712f1cSDenis Pryazhennikov efx_table_id_t table_id); 33*bc712f1cSDenis Pryazhennikov 34*bc712f1cSDenis Pryazhennikov int sfc_tbl_meta_init(struct sfc_adapter *sa); 35*bc712f1cSDenis Pryazhennikov void sfc_tbl_meta_fini(struct sfc_adapter *sa); 36*bc712f1cSDenis Pryazhennikov 37*bc712f1cSDenis Pryazhennikov #endif /* _SFC_TBL_META_H */ 38