FD.io VPP  v20.09-64-g4f7b92f0a
Vector Packet Processing
device.c File Reference
+ Include dependency graph for device.c:

Go to the source code of this file.

Data Structures

struct  virtchnl_promisc_info_t
 

Macros

#define AVF_MBOX_LEN   64
 
#define AVF_MBOX_BUF_SZ   512
 
#define AVF_RXQ_SZ   512
 
#define AVF_TXQ_SZ   512
 
#define AVF_ITR_INT   250
 
#define PCI_VENDOR_ID_INTEL   0x8086
 
#define PCI_DEVICE_ID_INTEL_AVF   0x1889
 
#define PCI_DEVICE_ID_INTEL_X710_VF   0x154c
 
#define PCI_DEVICE_ID_INTEL_X722_VF   0x37cd
 

Enumerations

enum  avf_irq_state_t { AVF_IRQ_STATE_DISABLED, AVF_IRQ_STATE_ENABLED, AVF_IRQ_STATE_WB_ON_ITR }
 

Functions

void avf_delete_if (vlib_main_t *vm, avf_device_t *ad, int with_barrier)
 
static void avf_irq_0_set_state (avf_device_t *ad, avf_irq_state_t state)
 
static void avf_irq_n_set_state (avf_device_t *ad, u8 line, avf_irq_state_t state)
 
clib_error_tavf_aq_desc_enq (vlib_main_t *vm, avf_device_t *ad, avf_aq_desc_t *dt, void *data, int len)
 
clib_error_tavf_cmd_rx_ctl_reg_write (vlib_main_t *vm, avf_device_t *ad, u32 reg, u32 val)
 
clib_error_tavf_rxq_init (vlib_main_t *vm, avf_device_t *ad, u16 qid, u16 rxq_size)
 
clib_error_tavf_txq_init (vlib_main_t *vm, avf_device_t *ad, u16 qid, u16 txq_size)
 
void avf_arq_slot_init (avf_device_t *ad, u16 slot)
 
static uword avf_dma_addr (vlib_main_t *vm, avf_device_t *ad, void *p)
 
static void avf_adminq_init (vlib_main_t *vm, avf_device_t *ad)
 
clib_error_tavf_send_to_pf (vlib_main_t *vm, avf_device_t *ad, virtchnl_ops_t op, void *in, int in_len, void *out, int out_len)
 
clib_error_tavf_op_version (vlib_main_t *vm, avf_device_t *ad, virtchnl_version_info_t *ver)
 
clib_error_tavf_op_get_vf_resources (vlib_main_t *vm, avf_device_t *ad, virtchnl_vf_resource_t *res)
 
clib_error_tavf_op_config_rss_lut (vlib_main_t *vm, avf_device_t *ad)
 
clib_error_tavf_op_config_rss_key (vlib_main_t *vm, avf_device_t *ad)
 
clib_error_tavf_op_disable_vlan_stripping (vlib_main_t *vm, avf_device_t *ad)
 
clib_error_tavf_config_promisc_mode (vlib_main_t *vm, avf_device_t *ad, int is_enable)
 
clib_error_tavf_op_config_vsi_queues (vlib_main_t *vm, avf_device_t *ad)
 
clib_error_tavf_op_config_irq_map (vlib_main_t *vm, avf_device_t *ad)
 
clib_error_tavf_op_add_eth_addr (vlib_main_t *vm, avf_device_t *ad, u8 count, u8 *macs)
 
clib_error_tavf_op_enable_queues (vlib_main_t *vm, avf_device_t *ad, u32 rx, u32 tx)
 
clib_error_tavf_op_get_stats (vlib_main_t *vm, avf_device_t *ad, virtchnl_eth_stats_t *es)
 
clib_error_tavf_device_reset (vlib_main_t *vm, avf_device_t *ad)
 
clib_error_tavf_request_queues (vlib_main_t *vm, avf_device_t *ad, u16 num_queue_pairs)
 
clib_error_tavf_device_init (vlib_main_t *vm, avf_main_t *am, avf_device_t *ad, avf_create_if_args_t *args)
 
void avf_process_one_device (vlib_main_t *vm, avf_device_t *ad, int is_irq)
 
static u32 avf_flag_change (vnet_main_t *vnm, vnet_hw_interface_t *hw, u32 flags)
 
static uword avf_process (vlib_main_t *vm, vlib_node_runtime_t *rt, vlib_frame_t *f)
 
static void avf_irq_0_handler (vlib_main_t *vm, vlib_pci_dev_handle_t h, u16 line)
 
static void avf_irq_n_handler (vlib_main_t *vm, vlib_pci_dev_handle_t h, u16 line)
 
void avf_create_if (vlib_main_t *vm, avf_create_if_args_t *args)
 
static clib_error_tavf_interface_admin_up_down (vnet_main_t *vnm, u32 hw_if_index, u32 flags)
 
static clib_error_tavf_interface_rx_mode_change (vnet_main_t *vnm, u32 hw_if_index, u32 qid, vnet_hw_interface_rx_mode mode)
 
static void avf_set_interface_next_node (vnet_main_t *vnm, u32 hw_if_index, u32 node_index)
 
static void avf_clear_hw_interface_counters (u32 instance)
 
 VNET_DEVICE_CLASS (avf_device_class,)
 
clib_error_tavf_init (vlib_main_t *vm)
 

Variables

avf_main_t avf_main
 
static pci_device_id_t avf_pci_device_ids []
 
static const char * virtchnl_event_names []
 
vlib_node_registration_t avf_process_node
 (constructor) VLIB_REGISTER_NODE (avf_process_node) More...
 
static char * avf_tx_func_error_strings []
 

Macro Definition Documentation

◆ AVF_ITR_INT

#define AVF_ITR_INT   250

Definition at line 30 of file device.c.

◆ AVF_MBOX_BUF_SZ

#define AVF_MBOX_BUF_SZ   512

Definition at line 27 of file device.c.

◆ AVF_MBOX_LEN

#define AVF_MBOX_LEN   64

Definition at line 26 of file device.c.

◆ AVF_RXQ_SZ

#define AVF_RXQ_SZ   512

Definition at line 28 of file device.c.

◆ AVF_TXQ_SZ

#define AVF_TXQ_SZ   512

Definition at line 29 of file device.c.

◆ PCI_DEVICE_ID_INTEL_AVF

#define PCI_DEVICE_ID_INTEL_AVF   0x1889

Definition at line 33 of file device.c.

◆ PCI_DEVICE_ID_INTEL_X710_VF

#define PCI_DEVICE_ID_INTEL_X710_VF   0x154c

Definition at line 34 of file device.c.

◆ PCI_DEVICE_ID_INTEL_X722_VF

#define PCI_DEVICE_ID_INTEL_X722_VF   0x37cd

Definition at line 35 of file device.c.

◆ PCI_VENDOR_ID_INTEL

#define PCI_VENDOR_ID_INTEL   0x8086

Definition at line 32 of file device.c.

Enumeration Type Documentation

◆ avf_irq_state_t

Enumerator
AVF_IRQ_STATE_DISABLED 
AVF_IRQ_STATE_ENABLED 
AVF_IRQ_STATE_WB_ON_ITR 

Definition at line 53 of file device.c.

Function Documentation

◆ avf_adminq_init()

static void avf_adminq_init ( vlib_main_t vm,
avf_device_t ad 
)
static

Definition at line 357 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_aq_desc_enq()

clib_error_t* avf_aq_desc_enq ( vlib_main_t vm,
avf_device_t ad,
avf_aq_desc_t dt,
void *  data,
int  len 
)

Definition at line 122 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_arq_slot_init()

void avf_arq_slot_init ( avf_device_t ad,
u16  slot 
)

Definition at line 337 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_clear_hw_interface_counters()

static void avf_clear_hw_interface_counters ( u32  instance)
static

Definition at line 1670 of file device.c.

+ Here is the call graph for this function:

◆ avf_cmd_rx_ctl_reg_write()

clib_error_t* avf_cmd_rx_ctl_reg_write ( vlib_main_t vm,
avf_device_t ad,
u32  reg,
u32  val 
)

Definition at line 209 of file device.c.

+ Here is the call graph for this function:

◆ avf_config_promisc_mode()

clib_error_t* avf_config_promisc_mode ( vlib_main_t vm,
avf_device_t ad,
int  is_enable 
)

Definition at line 632 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_create_if()

void avf_create_if ( vlib_main_t vm,
avf_create_if_args_t args 
)

Definition at line 1422 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_delete_if()

void avf_delete_if ( vlib_main_t vm,
avf_device_t ad,
int  with_barrier 
)

Definition at line 1358 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_device_init()

clib_error_t* avf_device_init ( vlib_main_t vm,
avf_main_t am,
avf_device_t ad,
avf_create_if_args_t args 
)

Definition at line 893 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_device_reset()

clib_error_t* avf_device_reset ( vlib_main_t vm,
avf_device_t ad 
)

Definition at line 806 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_dma_addr()

static uword avf_dma_addr ( vlib_main_t vm,
avf_device_t ad,
void *  p 
)
inlinestatic

Definition at line 350 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_flag_change()

static u32 avf_flag_change ( vnet_main_t vnm,
vnet_hw_interface_t hw,
u32  flags 
)
static

Definition at line 1162 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_init()

clib_error_t* avf_init ( vlib_main_t vm)

Definition at line 1693 of file device.c.

+ Here is the call graph for this function:

◆ avf_interface_admin_up_down()

static clib_error_t* avf_interface_admin_up_down ( vnet_main_t vnm,
u32  hw_if_index,
u32  flags 
)
static

Definition at line 1591 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_interface_rx_mode_change()

static clib_error_t* avf_interface_rx_mode_change ( vnet_main_t vnm,
u32  hw_if_index,
u32  qid,
vnet_hw_interface_rx_mode  mode 
)
static

Definition at line 1615 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_irq_0_handler()

static void avf_irq_0_handler ( vlib_main_t vm,
vlib_pci_dev_handle_t  h,
u16  line 
)
static

Definition at line 1287 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_irq_0_set_state()

static void avf_irq_0_set_state ( avf_device_t ad,
avf_irq_state_t  state 
)
inlinestatic

Definition at line 61 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_irq_n_handler()

static void avf_irq_n_handler ( vlib_main_t vm,
vlib_pci_dev_handle_t  h,
u16  line 
)
static

Definition at line 1324 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_irq_n_set_state()

static void avf_irq_n_set_state ( avf_device_t ad,
u8  line,
avf_irq_state_t  state 
)
inlinestatic

Definition at line 90 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_op_add_eth_addr()

clib_error_t* avf_op_add_eth_addr ( vlib_main_t vm,
avf_device_t ad,
u8  count,
u8 macs 
)

Definition at line 738 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_op_config_irq_map()

clib_error_t* avf_op_config_irq_map ( vlib_main_t vm,
avf_device_t ad 
)

Definition at line 707 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_op_config_rss_key()

clib_error_t* avf_op_config_rss_key ( vlib_main_t vm,
avf_device_t ad 
)

Definition at line 599 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_op_config_rss_lut()

clib_error_t* avf_op_config_rss_lut ( vlib_main_t vm,
avf_device_t ad 
)

Definition at line 576 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_op_config_vsi_queues()

clib_error_t* avf_op_config_vsi_queues ( vlib_main_t vm,
avf_device_t ad 
)

Definition at line 651 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_op_disable_vlan_stripping()

clib_error_t* avf_op_disable_vlan_stripping ( vlib_main_t vm,
avf_device_t ad 
)

Definition at line 623 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_op_enable_queues()

clib_error_t* avf_op_enable_queues ( vlib_main_t vm,
avf_device_t ad,
u32  rx,
u32  tx 
)

Definition at line 766 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_op_get_stats()

clib_error_t* avf_op_get_stats ( vlib_main_t vm,
avf_device_t ad,
virtchnl_eth_stats_t es 
)

Definition at line 792 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_op_get_vf_resources()

clib_error_t* avf_op_get_vf_resources ( vlib_main_t vm,
avf_device_t ad,
virtchnl_vf_resource_t res 
)

Definition at line 538 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_op_version()

clib_error_t* avf_op_version ( vlib_main_t vm,
avf_device_t ad,
virtchnl_version_info_t ver 
)

Definition at line 516 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_process()

static uword avf_process ( vlib_main_t vm,
vlib_node_runtime_t rt,
vlib_frame_t f 
)
static

Definition at line 1191 of file device.c.

+ Here is the call graph for this function:

◆ avf_process_one_device()

void avf_process_one_device ( vlib_main_t vm,
avf_device_t ad,
int  is_irq 
)

Definition at line 1016 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_request_queues()

clib_error_t* avf_request_queues ( vlib_main_t vm,
avf_device_t ad,
u16  num_queue_pairs 
)

Definition at line 844 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_rxq_init()

clib_error_t* avf_rxq_init ( vlib_main_t vm,
avf_device_t ad,
u16  qid,
u16  rxq_size 
)

Definition at line 240 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_send_to_pf()

clib_error_t* avf_send_to_pf ( vlib_main_t vm,
avf_device_t ad,
virtchnl_ops_t  op,
void *  in,
int  in_len,
void *  out,
int  out_len 
)

Definition at line 394 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_set_interface_next_node()

static void avf_set_interface_next_node ( vnet_main_t vnm,
u32  hw_if_index,
u32  node_index 
)
static

Definition at line 1646 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ avf_txq_init()

clib_error_t* avf_txq_init ( vlib_main_t vm,
avf_device_t ad,
u16  qid,
u16  txq_size 
)

Definition at line 291 of file device.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ VNET_DEVICE_CLASS()

VNET_DEVICE_CLASS ( avf_device_class  )

Variable Documentation

◆ avf_main

avf_main_t avf_main

Definition at line 37 of file device.c.

◆ avf_pci_device_ids

pci_device_id_t avf_pci_device_ids[]
static
Initial value:
= {
{.vendor_id = PCI_VENDOR_ID_INTEL,.device_id = PCI_DEVICE_ID_INTEL_AVF},
{.vendor_id = PCI_VENDOR_ID_INTEL,.device_id = PCI_DEVICE_ID_INTEL_X710_VF},
{.vendor_id = PCI_VENDOR_ID_INTEL,.device_id = PCI_DEVICE_ID_INTEL_X722_VF},
{0},
}
#define PCI_DEVICE_ID_INTEL_AVF
Definition: device.c:33
#define PCI_DEVICE_ID_INTEL_X710_VF
Definition: device.c:34
#define PCI_VENDOR_ID_INTEL
Definition: device.c:32
#define PCI_DEVICE_ID_INTEL_X722_VF
Definition: device.c:35

Definition at line 40 of file device.c.

◆ avf_process_node

vlib_node_registration_t avf_process_node
Initial value:
= {
.function = avf_process,
.name = "avf-process",
}
static uword avf_process(vlib_main_t *vm, vlib_node_runtime_t *rt, vlib_frame_t *f)
Definition: device.c:1191

(constructor) VLIB_REGISTER_NODE (avf_process_node)

Definition at line 1279 of file device.c.

◆ avf_tx_func_error_strings

char* avf_tx_func_error_strings[]
static
Initial value:
= {
#define _(n,s)
}
#define foreach_avf_tx_func_error
Definition: avf.h:346

Definition at line 1663 of file device.c.

◆ virtchnl_event_names

const char* virtchnl_event_names[]
static
Initial value:

Definition at line 47 of file device.c.