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
41
42/* End of structure dao_pem_dev_conf. */
43
45#define DAO_PEM_CTRL_REGION_MAX 384
46
48#define DAO_PEM_CTRL_REGION_MASK_MAX (RTE_ALIGN(DAO_PEM_CTRL_REGION_MAX, 64) / 64)
49
51#define DAO_PEM_DEFAULT_HOST_PAGE_SZ (64 * 1024UL)
53#define DAO_PEM_MAX_VFS 128
54
56#define PEM_PFVF_DEV_ID_PF_MASK 0xF000
58#define PEM_PFVF_DEV_ID_PF_SHIFT 12
60#define PEM_PFVF_DEV_ID_VF_MASK 0x0FFF
62#define PEM_PFVF_DEV_ID_VF_SHIFT 0
63
65#define DAO_PEM_DEV_ID_MAX 2
66
77int dao_pem_dev_init(uint16_t pem_devid, struct dao_pem_dev_conf *conf);
78
87int dao_pem_dev_fini(uint16_t pem_devid);
88
90typedef int (*dao_pem_ctrl_region_cb_t)(void *ctx, uintptr_t shadow, uint32_t off, uint64_t val,
91 uint64_t shadow_val);
92
114int dao_pem_ctrl_region_register(uint16_t pem_devid, uintptr_t base, uint32_t len,
115 dao_pem_ctrl_region_cb_t cb, void *ctx, bool sync_shadow);
132int dao_pem_ctrl_region_unregister(uint16_t pem_devid, uintptr_t base, uint32_t len,
133 dao_pem_ctrl_region_cb_t cb, void *ctx);
134
151int dao_pem_vf_region_info_get(uint16_t pem_devid, uint16_t dev_id, uint8_t bar_idx,
152 uint64_t *addr, uint64_t *size);
153
162size_t dao_pem_host_page_sz(uint16_t pem_devid);
163
178uint8_t dao_pem_host_interrupt_setup(uint16_t pem_devid, int vfid, uint64_t **intr_addr,
179 uint64_t **ack_addr);
180
189uint16_t dao_pem_max_vfs_get(uint16_t pem_devid);
190
201int dao_pem_host_dev_add(uint16_t pem_devid, int vfid);
202
213int dao_pem_host_dev_del(uint16_t pem_devid, int vfid);
214
229int dao_pem_sdp_reg_write(uint16_t pem_devid, uint64_t offset, uint64_t value);
230
245int dao_pem_sdp_reg_read(uint16_t pem_devid, uint64_t offset, uint64_t *value);
246
256int dao_pem_fw_ready_notify(uint16_t pem_devid);
257
267int dao_pem_fw_cleanup_notify(uint16_t pem_devid);
268
278int dao_pem_get_sec_strm_id(uint8_t *sec_strm_id);
279
280#endif /* __INCLUDE_DAO_PEM_H__ */
int dao_pem_host_dev_add(uint16_t pem_devid, int vfid)
int dao_pem_dev_fini(uint16_t pem_devid)
int dao_pem_fw_ready_notify(uint16_t pem_devid)
int dao_pem_host_dev_del(uint16_t pem_devid, int vfid)
int dao_pem_sdp_reg_read(uint16_t pem_devid, uint64_t offset, uint64_t *value)
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:90
int dao_pem_fw_cleanup_notify(uint16_t pem_devid)
int dao_pem_sdp_reg_write(uint16_t pem_devid, uint64_t offset, uint64_t value)
uint8_t dao_pem_host_interrupt_setup(uint16_t pem_devid, int vfid, uint64_t **intr_addr, uint64_t **ack_addr)
int dao_pem_get_sec_strm_id(uint8_t *sec_strm_id)
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)
uint16_t virtio_dev_count
Definition dao_pem.h:37
size_t host_page_sz
Definition dao_pem.h:33