Functions

rte_pmd_qdma_dbg_regdump

Syntax:

int rte_pmd_qdma_dbg_regdump (uint8_t port_id)

Details:

Dumps the QDMA configuration registers for the given port

None

Parameters:

port_id Port ID

Returns:

‘0’ on success and “< 0” on failure

rte_pmd_qdma_dbg_reg_info_dump

Syntax:

int rte_pmd_qdma_dbg_reg_info_dump (
    uint8_t port_id,
    uint32_t num_regs,
    uint32_t reg_addr
    )

Details:

Dumps the QDMA register field information for a given register offset

None

Parameters:

port_id Port ID
reg_addr Register Address

Returns:

‘0’ on success and “< 0” on failure

rte_pmd_qdma_dbg_qdevice

Syntax:

int rte_pmd_qdma_dbg_qdevice (uint8_t port_id)

Details:

Dumps the device specific SW structure for the given port

None

Parameters:

port_id Port ID

Returns:

‘0’ on success and “< 0” on failure

rte_pmd_qdma_dbg_qinfo

Syntax:

int rte_pmd_qdma_dbg_qinfo (
    uint8_t port_id,
    uint16_t queue
    )

Details:

Dumps the queue contexts and queue specific SW structures for the given queue ID

None

Parameters:

port_id Port ID
queue Queue ID relative to the Port

Returns:

‘0’ on success and “< 0” on failure

rte_pmd_qdma_dbg_qdesc

Syntax:

int rte_pmd_qdma_dbg_qdesc (
    uint8_t port_id,
    uint16_t queue,
    int start,
    int end,
    enum rte_pmd_qdma_xdebug_desc_type type
    )

Details:

Dumps the Queue descriptors

None

Parameters:

port_id Port ID
queue Queue ID relative to the Port
start Start index of the descriptor to dump
end End index of the descriptor to dump
type Descriptor type

Returns:

‘0’ on success and “< 0” on failure

rte_pmd_qdma_get_bar_details

Syntax:

int rte_pmd_qdma_get_bar_details (
    int port_id,
    int32_t* config_bar_idx,
    int32_t* user_bar_idx,
    int32_t* bypass_bar_idx
    )

Details:

Returns the BAR indices of the QDMA BARs

None

Parameters:

port_id Port ID
config_bar_idx Config BAR index
user_bar_idx AXI Master Lite BAR(user bar) index
bypass_bar_idx AXI Bridge Master BAR(bypass bar) index

Returns:

‘0’ on success and ‘< 0’ on failure

rte_pmd_qdma_get_queue_base

Syntax:

int rte_pmd_qdma_get_queue_base (
    int port_id,
    uint32_t* queue_base
    )

Details:

Returns queue base for given port

Application can call this API only after successful call to rte_eh_dev_configure() API

Parameters:

port_id Port ID
queue_base Queue base

Returns:

‘0’ on success and ‘< 0’ on failure

rte_pmd_qdma_get_pci_func_type

Syntax:

int rte_pmd_qdma_get_pci_func_type (
    int port_id,
    enum rte_pmd_qdma_pci_func_type* func_type
    )

Details:

Retrieves PCIe function type i.e. PF or VF

Returns the PCIe function type i.e. PF or VF of the given port

Parameters:

port_id Port ID
func_type Indicates PCIe function type

Returns:

‘0’ on success and ‘< 0’ on failure

rte_pmd_qdma_get_immediate_data_state

Syntax:

int rte_pmd_qdma_get_immediate_data_state (
    int port_id,
    uint32_t qid,
    int* state
    )

Details:

Returns immediate data state i.e. whether enabled or disabled, for the specified queue

Application can call this function after rte_eth_rx_queue_setup() is called. API is applicable for streaming queues only.

Parameters:

port_id Port ID
qid Queue ID
state Pointer to the state specifying whether immediate data is enabled or not

Returns:

‘0’ on success and ‘< 0’ on failure

rte_pmd_qdma_set_queue_mode

Syntax:

int rte_pmd_qdma_set_queue_mode (
    int port_id,
    uint32_t qid,
    enum rte_pmd_qdma_queue_mode_t mode
    )

Details:

Sets queue interface mode for the specified queue

Application can call this API after successful call to rte_eth_dev_configure() but before rte_eth_tx_queue_setup()/rte_eth_rx_queue_setup() API. By default, all queues are setup in streaming mode.

Parameters:

port_id Port ID
qid Queue ID
mode Queue interface mode to be set

Returns:

‘0’ on success and ‘< 0’ on failure

rte_pmd_qdma_set_immediate_data_state

Syntax:

int rte_pmd_qdma_set_immediate_data_state (
    int port_id,
    uint32_t qid,
    uint8_t state
    )

Details:

Sets immediate data state i.e. enable or disable, for the specified queue. If enabled, the user defined data in the completion ring are dumped in to a queue specific file “q_<qid>_immmediate_data.txt” in the local directory.

Application can call this API after successful call to rte_eth_rx_queue_setup() API. This API is applicable for streaming queues only.

Parameters:

port_id Port ID
qid Queue ID
state Immediate data state to be set. Set ‘0’ to disable and ‘1’ to enable.

Returns:

‘0’ on success and ‘< 0’ on failure

rte_pmd_qdma_set_cmpt_overflow_check

Syntax:

int rte_pmd_qdma_set_cmpt_overflow_check (
    int port_id,
    uint32_t qid,
    uint8_t enable
    )

Details:

Enables or disables the overflow check (whether PIDX is overflowing the CIDX) performed by QDMA on the completion descriptor ring of specified queue.

Application can call this API after successful call to rte_eth_rx_queue_setup() API, but before calling rte_eth_rx_queue_start() or rte_eth_dev_start() API.

Parameters:

port_id Port ID
qid Queue ID
enable ‘1’ to enable and ‘0’ to disable the overflow check

Returns:

‘0’ on success and ‘< 0’ on failure

rte_pmd_qdma_set_cmpt_descriptor_size

Syntax:

int rte_pmd_qdma_set_cmpt_descriptor_size (
    int port_id,
    uint32_t qid,
    enum rte_pmd_qdma_cmpt_desc_len size
    )

Details:

Configures the completion ring descriptor size

Application can call this API after successful call to rte_eth_dev_configure() but before rte_eth_rx_queue_setup() API when queue is in streaming mode, and before rte_pmd_qdma_dev_cmptq_setup when queue is in memory mapped mode. By default, the completion desciptor size is set to 8 bytes.

Parameters:

port_id Port ID
qid Queue ID
size Descriptor size to be configured

Returns:

‘0’ on success and ‘< 0’ on failure

rte_pmd_qdma_set_cmpt_trigger_mode

Syntax:

int rte_pmd_qdma_set_cmpt_trigger_mode (
    int port_id,
    uint32_t qid,
    enum rte_pmd_qdma_tigger_mode_t mode
    )

Details:

Configures the trigger mode for completion ring CIDX updates

Application can call this API before calling rte_eth_rx_queue_start() or rte_eth_dev_start() API. By default, trigger mode is set to RTE_PMD_QDMA_TRIG_MODE_USER_TIMER_COUNT.

Parameters:

port_id Port ID
qid Queue ID
mode Trigger mode to be configured

Returns:

‘0’ on success and ‘< 0’ on failure

rte_pmd_qdma_set_cmpt_timer

Syntax:

int rte_pmd_qdma_set_cmpt_timer (
    int port_id,
    uint32_t qid,
    uint32_t value
    )

Details:

Configures the timer interval in microseconds to trigger the completion ring CIDX updates

Application can call this API before calling rte_eth_rx_queue_start() or rte_eth_dev_start() API.

Parameters:

port_id Port ID
qid Queue ID
value Timer interval for completion trigger to be configured

Returns:

‘0’ on success and ‘< 0’ on failure

rte_pmd_qdma_set_c2h_descriptor_prefetch

Syntax:

int rte_pmd_qdma_set_c2h_descriptor_prefetch (
    int port_id,
    uint32_t qid,
    uint8_t enable
    )

Details:

Enables or disables prefetch of the descriptors by prefetch engine

Application can call this API after successful call to rte_eth_rx_queue_setup() API, but before calling rte_eth_rx_queue_start() or rte_eth_dev_start() API.

Parameters:

port_id Port ID
qid Queue ID
enable ‘1’ to enable and ‘0’ to disable the descriptor prefetch

Returns:

‘0’ on success and ‘< 0’ on failure

rte_pmd_qdma_set_mm_endpoint_addr

Syntax:

int rte_pmd_qdma_set_mm_endpoint_addr (
    int port_id,
    uint32_t qid,
    enum rte_pmd_qdma_dir_type dir,
    uint32_t addr
    )

Details:

Sets the PCIe endpoint memory offset at which to perform DMA operation for the specified queue operating in memory mapped mode.

This API can be called before Tx/Rx burst API’s (rte_eth_tx_burst() and rte_eth_rx_burst()) are called.

Parameters:

port_id Port ID
qid Queue ID
dir Direction i.e. Tx or Rx
addr Destination address for Tx, Source address for Rx

Returns:

‘0’ on success and ‘< 0’ on failure

rte_pmd_qdma_configure_tx_bypass

Syntax:

int rte_pmd_qdma_configure_tx_bypass (
    int port_id,
    uint32_t qid,
    enum rte_pmd_qdma_tx_bypass_mode bypass_mode,
    enum rte_pmd_qdma_bypass_desc_len size
    )

Details:

Sets the Tx bypass mode and bypass descriptor size for the specified queue

Application can call this API after successful call to rte_eth_dev_configure() but before tx_setup() API. By default, all queues are configured in internal mode i.e. bypass disabled. If size is specified zero, then the bypass descriptor size is set to the one used in internal mode.

Parameters:

port_id Port ID
qid Queue ID
bypass_mode Bypass mode to be set
size Bypass descriptor size to be set

Returns:

‘0’ on success and ‘< 0’ on failure

rte_pmd_qdma_configure_rx_bypass

Syntax:

int rte_pmd_qdma_configure_rx_bypass (
    int port_id,
    uint32_t qid,
    enum rte_pmd_qdma_rx_bypass_mode bypass_mode,
    enum rte_pmd_qdma_bypass_desc_len size
    )

Details:

Sets the Rx bypass mode and bypass descriptor size for the specified queue

Application can call this API after successful call to rte_eth_dev_configure() but before rte_eth_rx_queue_setup() API. By default, all queues are configured in internal mode i.e. bypass disabled. If size is specified zero, then the bypass descriptor size is set to the one used in internal mode.

Parameters:

port_id Port ID
qid Queue ID
bypass_mode Bypass mode to be set
size Bypass descriptor size to be set

Returns:

‘0’ on success and ‘< 0’ on failure

rte_pmd_qdma_get_device_capabilities

Syntax:

int rte_pmd_qdma_get_device_capabilities (
    int port_id,
    struct rte_pmd_qdma_dev_attributes* dev_attr
    )

Details:

Retrive the device capabilities

None.

Parameters:

port_id Port ID
dev_attr Pointer to the device capabilities structure

Returns:

‘0’ on success and ‘< 0’ on failure

rte_pmd_qdma_dev_cmptq_setup

Syntax:

int rte_pmd_qdma_dev_cmptq_setup (
    int port_id,
    uint32_t cmpt_queue_id,
    uint16_t nb_cmpt_desc,
    unsigned int socket_id
    )

Details:

Allocate and set up a completion queue for memory mapped mode

Application can call this API after successful call to rte_eth_dev_configure() and rte_pmd_qdma_set_queue_mode() for queues in memory mapped mode.

Parameters:

port_id Port ID
qid Queue ID
nb_cmpt_desc Completion queue ring size
socket_id The socket_id argument is the socket identifier in case of NUMA. Its value can be SOCKET_ID_ANY if there is no NUMA constraint for the DMA memory allocated for the transmit descriptors of the ring.

Returns:

‘0’ on success and ‘< 0’ on failure

rte_pmd_qdma_dev_cmptq_start

Syntax:

int rte_pmd_qdma_dev_cmptq_start (
    int port_id,
    uint32_t qid
    )

Details:

Start the MM completion queue

Application can call this API after successful call to rte_pmd_qdma_dev_cmptq_setup() API when queue is in memory mapped mode.

Parameters:

port_id Port ID
qid Queue ID

Returns:

‘0’ on success and ‘< 0’ on failure

rte_pmd_qdma_dev_cmptq_stop

Syntax:

int rte_pmd_qdma_dev_cmptq_stop (
    int port_id,
    uint32_t qid
    )

Details:

Stop the MM completion queue

Application can call this API after successful call to rte_pmd_qdma_dev_cmptq_start() API when queue is in memory mapped mode.

Parameters:

port_id Port ID
qid Queue ID

Returns:

‘0’ on success and ‘< 0’ on failure

rte_pmd_qdma_mm_cmpt_process

Syntax:

uint16_t rte_pmd_qdma_mm_cmpt_process (
    int port_id,
    uint32_t qid,
    void* cmpt_buff,
    uint16_t nb_entries
    )

Details:

Process the MM Completion queue entries

Application can call this API after successful call to rte_pmd_qdma_dev_cmptq_start() API

Parameters:

port_id Port ID
qid Queue ID
cmpt_buff User buffer pointer to store the completion data
nb_entries Number of compeltion entries to process

Returns:

‘number of entries processed’ on success and ‘< 0’ on failure