X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fbnxt%2Ftf_core%2Ftf_tbl.h;h=cb7ce9d17b99b589d28a3101241e16bccd802a22;hb=11c854e23b19db2fcd357465faf1d73ebd9ad057;hp=5a5e72f134488443e6bf6c43b06b86551be9a9a6;hpb=4943fad64c061a047931a8245f33a7bc5c3070b9;p=dpdk.git diff --git a/drivers/net/bnxt/tf_core/tf_tbl.h b/drivers/net/bnxt/tf_core/tf_tbl.h index 5a5e72f134..cb7ce9d17b 100644 --- a/drivers/net/bnxt/tf_core/tf_tbl.h +++ b/drivers/net/bnxt/tf_core/tf_tbl.h @@ -7,6 +7,7 @@ #define _TF_TBL_H_ #include +#include "stack.h" enum tf_pg_tbl_lvl { PT_LVL_0, @@ -15,6 +16,48 @@ enum tf_pg_tbl_lvl { PT_LVL_MAX }; +enum tf_em_table_type { + KEY0_TABLE, + KEY1_TABLE, + RECORD_TABLE, + EFC_TABLE, + MAX_TABLE +}; + +struct tf_em_page_tbl { + uint32_t pg_count; + uint32_t pg_size; + void **pg_va_tbl; + uint64_t *pg_pa_tbl; +}; + +struct tf_em_table { + int type; + uint32_t num_entries; + uint16_t ctx_id; + uint32_t entry_size; + int num_lvl; + uint32_t page_cnt[PT_LVL_MAX]; + uint64_t num_data_pages; + void *l0_addr; + uint64_t l0_dma_addr; + struct tf_em_page_tbl pg_tbl[PT_LVL_MAX]; +}; + +struct tf_em_ctx_mem_info { + struct tf_em_table em_tables[MAX_TABLE]; +}; + +/** table scope control block content */ +struct tf_em_caps { + uint32_t flags; + uint32_t supported; + uint32_t max_entries_supported; + uint16_t key_entry_size; + uint16_t record_entry_size; + uint16_t efc_entry_size; +}; + /** Invalid table scope id */ #define TF_TBL_SCOPE_INVALID 0xffffffff @@ -27,9 +70,49 @@ enum tf_pg_tbl_lvl { struct tf_tbl_scope_cb { uint32_t tbl_scope_id; int index; + struct tf_em_ctx_mem_info em_ctx_info[TF_DIR_MAX]; + struct tf_em_caps em_caps[TF_DIR_MAX]; + struct stack ext_pool[TF_DIR_MAX][TF_EXT_POOL_CNT_MAX]; uint32_t *ext_pool_mem[TF_DIR_MAX][TF_EXT_POOL_CNT_MAX]; }; +/** Hardware Page sizes supported for EEM: 4K, 8K, 64K, 256K, 1M, 2M, 4M, 1G. + * Round-down other page sizes to the lower hardware page size supported. + */ +#define PAGE_SHIFT 22 /** 2M */ + +#if (PAGE_SHIFT < 12) /** < 4K >> 4K */ +#define TF_EM_PAGE_SHIFT 12 +#define TF_EM_PAGE_SIZE_ENUM HWRM_TF_CTXT_MEM_RGTR_INPUT_PAGE_SIZE_4K +#elif (PAGE_SHIFT <= 13) /** 4K, 8K */ +#define TF_EM_PAGE_SHIFT 13 +#define TF_EM_PAGE_SIZE_ENUM HWRM_TF_CTXT_MEM_RGTR_INPUT_PAGE_SIZE_8K +#elif (PAGE_SHIFT < 16) /** 16K, 32K >> 8K */ +#define TF_EM_PAGE_SHIFT 15 +#define TF_EM_PAGE_SIZE_ENUM HWRM_TF_CTXT_MEM_RGTR_INPUT_PAGE_SIZE_32K +#elif (PAGE_SHIFT <= 17) /** 64K, 128K >> 64K */ +#define TF_EM_PAGE_SHIFT 16 +#define TF_EM_PAGE_SIZE_ENUM HWRM_TF_CTXT_MEM_RGTR_INPUT_PAGE_SIZE_64K +#elif (PAGE_SHIFT <= 19) /** 256K, 512K >> 256K */ +#define TF_EM_PAGE_SHIFT 18 +#define TF_EM_PAGE_SIZE_ENUM HWRM_TF_CTXT_MEM_RGTR_INPUT_PAGE_SIZE_256K +#elif (PAGE_SHIFT <= 21) /** 1M */ +#define TF_EM_PAGE_SHIFT 20 +#define TF_EM_PAGE_SIZE_ENUM HWRM_TF_CTXT_MEM_RGTR_INPUT_PAGE_SIZE_1M +#elif (PAGE_SHIFT <= 22) /** 2M, 4M */ +#define TF_EM_PAGE_SHIFT 21 +#define TF_EM_PAGE_SIZE_ENUM HWRM_TF_CTXT_MEM_RGTR_INPUT_PAGE_SIZE_2M +#elif (PAGE_SHIFT <= 29) /** 8M ... 512M >> 4M */ +#define TF_EM_PAGE_SHIFT 22 +#define TF_EM_PAGE_SIZE_ENUM HWRM_TF_CTXT_MEM_RGTR_INPUT_PAGE_SIZE_4M +#else /** >= 1G >> 1G */ +#define TF_EM_PAGE_SHIFT 30 +#define TF_EM_PAGE_SIZE_ENUM HWRM_TF_CTXT_MEM_RGTR_INPUT_PAGE_SIZE_1G +#endif + +#define TF_EM_PAGE_SIZE (1 << TF_EM_PAGE_SHIFT) +#define TF_EM_PAGE_ALIGNMENT (1 << TF_EM_PAGE_SHIFT) + /** * Initialize table pool structure to indicate * no table scope has been associated with the