Data Accelerator Offload
Loading...
Searching...
No Matches
dao_pem.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: Marvell-MIT
2 * Copyright (c) 2023 Marvell.
3 */
4
11#ifndef __INCLUDE_DAO_PEM_H__
12#define __INCLUDE_DAO_PEM_H__
13
14#include <fcntl.h>
15#include <inttypes.h>
16#include <stdint.h>
17#include <stdio.h>
18#include <stdlib.h>
19#include <sys/mman.h>
20#include <sys/stat.h>
21#include <sys/types.h>
22#include <unistd.h>
23
24#include <rte_cycles.h>
25#include <rte_eal.h>
26#include <rte_hexdump.h>
27#include <rte_lcore.h>
28#include <rte_mbuf.h>
29
34};
35
36/* End of structure dao_pem_dev_conf. */
37
39#define DAO_PEM_CTRL_REGION_MAX 384
40
42#define DAO_PEM_CTRL_REGION_MASK_MAX (RTE_ALIGN(DAO_PEM_CTRL_REGION_MAX, 64) / 64)
43
45#define DAO_PEM_DEFAULT_HOST_PAGE_SZ (64 * 1024UL)
47#define DAO_PEM_MAX_VFS 128
48
50#define PEM_PFVF_DEV_ID_PF_MASK 0xF000
52#define PEM_PFVF_DEV_ID_PF_SHIFT 12
54#define PEM_PFVF_DEV_ID_VF_MASK 0x0FFF
56#define PEM_PFVF_DEV_ID_VF_SHIFT 0
57
59#define DAO_PEM_DEV_ID_MAX 2
60
71int dao_pem_dev_init(uint16_t pem_devid, struct dao_pem_dev_conf *conf);
72
81int dao_pem_dev_fini(uint16_t pem_devid);
82
84typedef int (*dao_pem_ctrl_region_cb_t)(void *ctx, uintptr_t shadow, uint32_t off, uint64_t val,
85 uint64_t shadow_val);
86
108int dao_pem_ctrl_region_register(uint16_t pem_devid, uintptr_t base, uint32_t len,
109 dao_pem_ctrl_region_cb_t cb, void *ctx, bool sync_shadow);
126int dao_pem_ctrl_region_unregister(uint16_t pem_devid, uintptr_t base, uint32_t len,
127 dao_pem_ctrl_region_cb_t cb, void *ctx);
128
145int dao_pem_vf_region_info_get(uint16_t pem_devid, uint16_t dev_id, uint8_t bar_idx,
146 uint64_t *addr, uint64_t *size);
147
156size_t dao_pem_host_page_sz(uint16_t pem_devid);
157
170uint8_t dao_pem_host_interrupt_setup(uint16_t pem_devid, int vfid, uint64_t **intr_addr);
171
180uint16_t dao_pem_max_vfs_get(uint16_t pem_devid);
181#endif /* __INCLUDE_DAO_PEM_H__ */
int dao_pem_dev_fini(uint16_t pem_devid)
uint16_t dao_pem_max_vfs_get(uint16_t pem_devid)
int dao_pem_ctrl_region_unregister(uint16_t pem_devid, uintptr_t base, uint32_t len, dao_pem_ctrl_region_cb_t cb, void *ctx)
int(* dao_pem_ctrl_region_cb_t)(void *ctx, uintptr_t shadow, uint32_t off, uint64_t val, uint64_t shadow_val)
Definition dao_pem.h:84
int dao_pem_dev_init(uint16_t pem_devid, struct dao_pem_dev_conf *conf)
int dao_pem_vf_region_info_get(uint16_t pem_devid, uint16_t dev_id, uint8_t bar_idx, uint64_t *addr, uint64_t *size)
size_t dao_pem_host_page_sz(uint16_t pem_devid)
int dao_pem_ctrl_region_register(uint16_t pem_devid, uintptr_t base, uint32_t len, dao_pem_ctrl_region_cb_t cb, void *ctx, bool sync_shadow)
uint8_t dao_pem_host_interrupt_setup(uint16_t pem_devid, int vfid, uint64_t **intr_addr)
size_t host_page_sz
Definition dao_pem.h:33