d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * common flags - right now it duplicates the #defines in the PF code -
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * TODO: put in another common header file
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define SW_VFPF_QUEUE_FLG_CACHE_ALIGN 0x0002
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define SW_VFPF_QUEUE_DROP_IP_CS_ERR (1 << 0)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define SW_VFPF_QUEUE_DROP_TCP_CS_ERR (1 << 1)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define SW_VFPF_QUEUE_DROP_UDP_CS_ERR (1 << 3)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define SW_VFPF_VFDEF_INFO_AUX_DIRECT_DQ 0x01
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/* simple response */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* the following fields are for debug purposes */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* TODO: future:
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi statistics resc?, other resc? */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/* simple operation request on queue */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* Number hash bits to take into an account */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* Indirection table */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8 ind_table[T_ETH_INDIRECTION_TABLE_SIZE];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* RSS hash values */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8 hw_sb_id; /* aka absolute igu id, used to ack the sb */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * in case of status NO_RESOURCE in message hdr, pf will fill
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * this struct with suggested amount of resources for next
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * acquire request
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi struct sw_hw_sb_info hw_sbs[PFVF_MAX_SBS_PER_VF];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* TODO: stats resc? cid for the ramrod? stats_id? spq prod id? */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u64 sb_addr[PFVF_MAX_SBS_PER_VF]; /* vf_sb based */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/* Setup Queue */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* physical addresses */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* sb + hc info */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16 hc_rate; /* desired interrupts per sec. */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* valid iff VFPF_QUEUE_FLG_HC */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* rx buffer info */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16 stat_id; /* valid iff VFPF_QUEUE_FLG_STATS */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* valid iff VFPF_QUEUE_FLG_TPA */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8 drop_flags; /* VFPF_QUEUE_DROP_X, for Linux all should
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * be turned off, see setup_rx_queue()
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * for reference
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8 cache_line_log; /* VFPF_QUEUE_FLG_CACHE_ALIGN
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * see init_rx_queue()
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* physical addresses */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* sb + hc info */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16 hc_rate; /* desired interrupts per sec. */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* valid iff VFPF_QUEUE_FLG_HC */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16 stat_id; /* valid iff VFPF_QUEUE_FLG_STATS */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8 traffic_type; /* see in setup_context() */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/* Set Queue Filters */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define VFPF_Q_FILTER_DEST_MAC_PRESENT 0x01
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define VFPF_Q_FILTER_VLAN_TAG_PRESENT 0x02
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define VFPF_SET_Q_FILTERS_MAC_VLAN_CHANGED 0x01
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define VFPF_SET_Q_FILTERS_MULTICAST_CHANGED 0x02
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define VFPF_SET_Q_FILTERS_RX_MASK_CHANGED 0x04
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi// #define PFVF_MAX_MAC_FILTERS 1
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi// #define PFVF_MAX_VLAN_FILTERS 1
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define PFVF_MAX_FILTERS (PFVF_MAX_MAC_FILTERS +\
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi struct vf_pf_q_mac_vlan_filter filters[PFVF_MAX_FILTERS];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi// #define PFVF_MAX_MULTICAST_PER_VF 1
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8 multicast[PFVF_MAX_MULTICAST_PER_VF][6];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define VFPF_RX_MASK_ACCEPT_NONE 0x00000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define VFPF_RX_MASK_ACCEPT_MATCHED_UNICAST 0x00000001
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define VFPF_RX_MASK_ACCEPT_MATCHED_MULTICAST 0x00000002
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define VFPF_RX_MASK_ACCEPT_ALL_UNICAST 0x00000004
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define VFPF_RX_MASK_ACCEPT_ALL_MULTICAST 0x00000008
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define VFPF_RX_MASK_ACCEPT_BROADCAST 0x00000010
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* TODO: #define VFPF_RX_MASK_ACCEPT_ANY_VLAN 0x00000020 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/* close VF (disable VF) */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/* rlease the VF's acquired resources */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi struct vf_pf_msg_set_q_filters set_q_filters;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi struct pf_vf_msg_acquire_resp acquire_resp;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define PFVF_OP_VER_MAX(op_arry) (sizeof(op_arry)/sizeof(*op_arry) - 1)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* sizeof(vf_pf_msg_acquire) - offsetof(struct vf_pf_msg_acquire, fieldX), */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define PFVF_ACQUIRE_VER PFVF_OP_VER_MAX(acquire_req_sz)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {sizeof(struct vf_pf_msg_init_vf), sizeof(struct pf_vf_msg_resp)}
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define PFVF_INIT_VF_VER PFVF_OP_VER_MAX(init_vf_req_sz)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {sizeof(struct vf_pf_msg_setup_q), sizeof(struct pf_vf_msg_resp)}
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define PFVF_SETUP_Q_VER PFVF_OP_VER_MAX(setup_q_req_sz)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchistatic const msg_sz_t set_q_filters_req_sz[] = {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {sizeof(struct vf_pf_msg_set_q_filters), sizeof(struct pf_vf_msg_resp)}
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define PFVF_SET_Q_FILTERS_VER PFVF_OP_VER_MAX(set_q_filters_req_sz)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchistatic const msg_sz_t activate_q_req_sz[] = {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {sizeof(struct vf_pf_msg_q_op), sizeof(struct pf_vf_msg_resp)}
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define PFVF_ACTIVATE_Q_VER PFVF_OP_VER_MAX(activate_q_req_sz)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchistatic const msg_sz_t deactivate_q_req_sz[] = {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {sizeof(struct vf_pf_msg_q_op), sizeof(struct pf_vf_msg_resp)}
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define PFVF_DEACTIVATE_Q_VER PFVF_OP_VER_MAX(deactivate_q_req_sz)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchistatic const msg_sz_t teardown_q_req_sz[] = {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {sizeof(struct vf_pf_msg_q_op), sizeof(struct pf_vf_msg_resp)}
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define PFVF_TEARDOWN_Q_VER PFVF_OP_VER_MAX(teardown_q_req_sz)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {sizeof(struct vf_pf_msg_close_vf), sizeof(struct pf_vf_msg_resp)}
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define PFVF_CLOSE_VF_VER PFVF_OP_VER_MAX(close_vf_req_sz)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchistatic const msg_sz_t release_vf_req_sz[] = {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {sizeof(struct vf_pf_msg_release_vf), sizeof(struct pf_vf_msg_resp)}
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define PFVF_RELEASE_VF_VER PFVF_OP_VER_MAX(release_vf_req_sz)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchistatic const msg_sz_t update_rss_req_sz[] = {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {sizeof(struct vf_pf_msg_rss), sizeof(struct pf_vf_msg_resp)}
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define PFVF_UPDATE_RSS_VER PFVF_OP_VER_MAX(update_rss_req_sz)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchistatic const msg_sz_t update_rsc_req_sz[] = {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {sizeof(struct vf_pf_msg_rsc), sizeof(struct pf_vf_msg_resp)}
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define PFVF_UPDATE_RSC_VER PFVF_OP_VER_MAX(update_rsc_req_sz)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/** To get size of message of the type X(request or response)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * for the op_code Y of the version Z one should use
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * op_code_req_sz[Y][Z].req_sz/resp_sz
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi ******************************************************************/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/* const msg_sz_t* op_codes_req_sz[] = {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (const msg_sz_t*)acquire_req_sz,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (const msg_sz_t*)init_vf_req_sz,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (const msg_sz_t*)setup_q_req_sz,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (const msg_sz_t*)set_q_filters_req_sz,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (const msg_sz_t*)activate_q_req_sz,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (const msg_sz_t*)deactivate_q_req_sz,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (const msg_sz_t*)teardown_q_req_sz,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (const msg_sz_t*)close_vf_req_sz,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (const msg_sz_t*)release_vf_req_sz
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#endif /* VF_PF_SW_IF_H */