Data Accelerator Offload
Loading...
Searching...
No Matches
Data Structures | Macros | Typedefs | Functions
dao_pem.h File Reference
#include <fcntl.h>
#include <inttypes.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <rte_cycles.h>
#include <rte_eal.h>
#include <rte_hexdump.h>
#include <rte_lcore.h>
#include <rte_mbuf.h>

Go to the source code of this file.

Data Structures

struct  dao_pem_dev_conf
 

Macros

#define DAO_PEM_CTRL_REGION_MAX   384
 
#define DAO_PEM_CTRL_REGION_MASK_MAX   (RTE_ALIGN(DAO_PEM_CTRL_REGION_MAX, 64) / 64)
 
#define DAO_PEM_DEFAULT_HOST_PAGE_SZ   (64 * 1024UL)
 
#define DAO_PEM_MAX_VFS   128
 
#define PEM_PFVF_DEV_ID_PF_MASK   0xF000
 
#define PEM_PFVF_DEV_ID_PF_SHIFT   12
 
#define PEM_PFVF_DEV_ID_VF_MASK   0x0FFF
 
#define PEM_PFVF_DEV_ID_VF_SHIFT   0
 
#define DAO_PEM_DEV_ID_MAX   2
 

Typedefs

typedef int(* dao_pem_ctrl_region_cb_t) (void *ctx, uintptr_t shadow, uint32_t off, uint64_t val, uint64_t shadow_val)
 

Functions

int dao_pem_dev_init (uint16_t pem_devid, struct dao_pem_dev_conf *conf)
 
int dao_pem_dev_fini (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)
 
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_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)
 
uint8_t dao_pem_host_interrupt_setup (uint16_t pem_devid, int vfid, uint64_t **intr_addr)
 
uint16_t dao_pem_max_vfs_get (uint16_t pem_devid)
 

Detailed Description

DAO PEM library

Definition in file dao_pem.h.

Macro Definition Documentation

◆ DAO_PEM_CTRL_REGION_MAX

#define DAO_PEM_CTRL_REGION_MAX   384

PEM control region max

Definition at line 39 of file dao_pem.h.

◆ DAO_PEM_CTRL_REGION_MASK_MAX

#define DAO_PEM_CTRL_REGION_MASK_MAX   (RTE_ALIGN(DAO_PEM_CTRL_REGION_MAX, 64) / 64)

PEM control region mask

Definition at line 42 of file dao_pem.h.

◆ DAO_PEM_DEFAULT_HOST_PAGE_SZ

#define DAO_PEM_DEFAULT_HOST_PAGE_SZ   (64 * 1024UL)

Default PEM Host page size

Definition at line 45 of file dao_pem.h.

◆ DAO_PEM_MAX_VFS

#define DAO_PEM_MAX_VFS   128

Max VF's supported

Definition at line 47 of file dao_pem.h.

◆ PEM_PFVF_DEV_ID_PF_MASK

#define PEM_PFVF_DEV_ID_PF_MASK   0xF000

PFVF DEV ID PF mask

Definition at line 50 of file dao_pem.h.

◆ PEM_PFVF_DEV_ID_PF_SHIFT

#define PEM_PFVF_DEV_ID_PF_SHIFT   12

PFVF DEV ID PF shift

Definition at line 52 of file dao_pem.h.

◆ PEM_PFVF_DEV_ID_VF_MASK

#define PEM_PFVF_DEV_ID_VF_MASK   0x0FFF

PFVF DEV ID VF mask

Definition at line 54 of file dao_pem.h.

◆ PEM_PFVF_DEV_ID_VF_SHIFT

#define PEM_PFVF_DEV_ID_VF_SHIFT   0

PFVF DEV ID VF shift

Definition at line 56 of file dao_pem.h.

◆ DAO_PEM_DEV_ID_MAX

#define DAO_PEM_DEV_ID_MAX   2

PEM device ID max

Definition at line 59 of file dao_pem.h.

Typedef Documentation

◆ dao_pem_ctrl_region_cb_t

typedef int(* dao_pem_ctrl_region_cb_t) (void *ctx, uintptr_t shadow, uint32_t off, uint64_t val, uint64_t shadow_val)

Callback for region changes

Definition at line 84 of file dao_pem.h.

Function Documentation

◆ dao_pem_dev_init()

int dao_pem_dev_init ( uint16_t  pem_devid,
struct dao_pem_dev_conf conf 
)

PEM device init

Parameters
pem_devidPEM device ID to init.
confPEM device configuration.
Returns
Zero on success.

◆ dao_pem_dev_fini()

int dao_pem_dev_fini ( uint16_t  pem_devid)

PEM device fini

Parameters
pem_devidPEM device ID to cleanup.
Returns
Zero on success.

◆ dao_pem_ctrl_region_register()

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 
)

PEM control region register.

Registers a portion of BAR region to be polled on and get notification if something changes in the area.

Parameters
pem_devidPEM device ID
baseBAR region base address.
lenBAR region len.
cbCallback to receive for changes in the region.
ctxContext pointer passed to callback.
sync_shadowFlag to indicate whether to sync shadow at time this API return.
Returns
Zero on success.

◆ dao_pem_ctrl_region_unregister()

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 
)

PEM control region unregister.

Parameters
pem_devidPEM device ID
baseregion base address.
lenregion len.
cbCallback.
ctxContext pointer passed to callback.
Returns
Zero on success.

◆ dao_pem_vf_region_info_get()

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 
)

PEM VF region info get.

Parameters
pem_devidPEM device ID
dev_idPF/VF device ID.
bar_idxBAR index to get info.
addrPointer to store BAR address.
sizePointer to store BAR size..
Returns
Zero on success.

◆ dao_pem_host_page_sz()

size_t dao_pem_host_page_sz ( uint16_t  pem_devid)

PEM host page size get.

Parameters
pem_devidPEM device ID
Returns
Non-Zero value on success.

◆ dao_pem_host_interrupt_setup()

uint8_t dao_pem_host_interrupt_setup ( uint16_t  pem_devid,
int  vfid,
uint64_t **  intr_addr 
)

PEM VF host interrupt setup.

Parameters
pem_devidPEM device ID.
vfidVF device ID.
intr_addrPointer to an array of addresses to be filled that triggers host interrupt upon write.
Returns
Number of interrupts configured.

◆ dao_pem_max_vfs_get()

uint16_t dao_pem_max_vfs_get ( uint16_t  pem_devid)

PEM max VFs get.

Parameters
pem_devidPEM device ID
Returns
Max VFs supported.