1*d14abf15SRobert Mustacchi #ifndef VF_PF_SW_IF_H 2*d14abf15SRobert Mustacchi #define VF_PF_SW_IF_H 3*d14abf15SRobert Mustacchi 4*d14abf15SRobert Mustacchi 5*d14abf15SRobert Mustacchi /* 6*d14abf15SRobert Mustacchi * common flags - right now it duplicates the #defines in the PF code - 7*d14abf15SRobert Mustacchi * TODO: put in another common header file 8*d14abf15SRobert Mustacchi */ 9*d14abf15SRobert Mustacchi #define SW_VFPF_QUEUE_FLG_TPA 0x0001 10*d14abf15SRobert Mustacchi #define SW_VFPF_QUEUE_FLG_CACHE_ALIGN 0x0002 11*d14abf15SRobert Mustacchi #define SW_VFPF_QUEUE_FLG_STATS 0x0004 12*d14abf15SRobert Mustacchi #define SW_VFPF_QUEUE_FLG_OV 0x0008 13*d14abf15SRobert Mustacchi #define SW_VFPF_QUEUE_FLG_VLAN 0x0010 14*d14abf15SRobert Mustacchi #define SW_VFPF_QUEUE_FLG_COS 0x0020 15*d14abf15SRobert Mustacchi #define SW_VFPF_QUEUE_FLG_HC 0x0040 16*d14abf15SRobert Mustacchi #define SW_VFPF_QUEUE_FLG_DHC 0x0080 17*d14abf15SRobert Mustacchi 18*d14abf15SRobert Mustacchi #define SW_VFPF_QUEUE_DROP_IP_CS_ERR (1 << 0) 19*d14abf15SRobert Mustacchi #define SW_VFPF_QUEUE_DROP_TCP_CS_ERR (1 << 1) 20*d14abf15SRobert Mustacchi #define SW_VFPF_QUEUE_DROP_TTL0 (1 << 2) 21*d14abf15SRobert Mustacchi #define SW_VFPF_QUEUE_DROP_UDP_CS_ERR (1 << 3) 22*d14abf15SRobert Mustacchi 23*d14abf15SRobert Mustacchi #define SW_VFPF_VFDEF_INFO_AUX_DIRECT_DQ 0x01 24*d14abf15SRobert Mustacchi 25*d14abf15SRobert Mustacchi enum { 26*d14abf15SRobert Mustacchi SW_PFVF_STATUS_WAITING = 0, 27*d14abf15SRobert Mustacchi SW_PFVF_STATUS_SUCCESS, 28*d14abf15SRobert Mustacchi SW_PFVF_STATUS_FAILURE, 29*d14abf15SRobert Mustacchi SW_PFVF_STATUS_NOT_SUPPORTED, 30*d14abf15SRobert Mustacchi SW_PFVF_STATUS_MISMATCH_PF_VF_VERSION, 31*d14abf15SRobert Mustacchi SW_PFVF_STATUS_NO_RESOURCE, 32*d14abf15SRobert Mustacchi SW_PFVF_STATUS_MISMATCH_FW_HSI 33*d14abf15SRobert Mustacchi }; 34*d14abf15SRobert Mustacchi 35*d14abf15SRobert Mustacchi /* Headers */ 36*d14abf15SRobert Mustacchi struct vf_pf_msg_hdr { 37*d14abf15SRobert Mustacchi u16 opcode; 38*d14abf15SRobert Mustacchi 39*d14abf15SRobert Mustacchi #define PFVF_IF_VERSION 1 40*d14abf15SRobert Mustacchi u8 if_ver; 41*d14abf15SRobert Mustacchi u8 opcode_ver; 42*d14abf15SRobert Mustacchi u32 resp_msg_offset; 43*d14abf15SRobert Mustacchi }; 44*d14abf15SRobert Mustacchi 45*d14abf15SRobert Mustacchi struct pf_vf_msg_hdr { 46*d14abf15SRobert Mustacchi u8 status; 47*d14abf15SRobert Mustacchi u8 opcode_ver; 48*d14abf15SRobert Mustacchi u16 opcode; 49*d14abf15SRobert Mustacchi }; 50*d14abf15SRobert Mustacchi 51*d14abf15SRobert Mustacchi /* simple response */ 52*d14abf15SRobert Mustacchi struct pf_vf_msg_resp { 53*d14abf15SRobert Mustacchi struct pf_vf_msg_hdr hdr; 54*d14abf15SRobert Mustacchi }; 55*d14abf15SRobert Mustacchi 56*d14abf15SRobert Mustacchi 57*d14abf15SRobert Mustacchi /* Acquire */ 58*d14abf15SRobert Mustacchi struct vf_pf_msg_acquire { 59*d14abf15SRobert Mustacchi struct vf_pf_msg_hdr hdr; 60*d14abf15SRobert Mustacchi 61*d14abf15SRobert Mustacchi struct sw_vf_pf_vfdev_info 62*d14abf15SRobert Mustacchi { 63*d14abf15SRobert Mustacchi /* the following fields are for debug purposes */ 64*d14abf15SRobert Mustacchi u8 vf_id; /* ME register value */ 65*d14abf15SRobert Mustacchi u8 vf_os; /* e.g. Linux, W2K8 */ 66*d14abf15SRobert Mustacchi u8 vf_aux; 67*d14abf15SRobert Mustacchi u8 fp_hsi_ver; 68*d14abf15SRobert Mustacchi u32 vf_fw_hsi_version; /* e.g. 6.0.12 */ 69*d14abf15SRobert Mustacchi } vfdev_info; 70*d14abf15SRobert Mustacchi 71*d14abf15SRobert Mustacchi struct sw_vf_pf_resc_request 72*d14abf15SRobert Mustacchi { 73*d14abf15SRobert Mustacchi u8 num_rxqs; 74*d14abf15SRobert Mustacchi u8 num_txqs; 75*d14abf15SRobert Mustacchi u8 num_sbs; 76*d14abf15SRobert Mustacchi u8 num_mac_filters; 77*d14abf15SRobert Mustacchi u8 num_vlan_filters; 78*d14abf15SRobert Mustacchi u8 num_mc_filters; 79*d14abf15SRobert Mustacchi u8 reserved1; 80*d14abf15SRobert Mustacchi u8 reserved2; 81*d14abf15SRobert Mustacchi 82*d14abf15SRobert Mustacchi /* TODO: future: 83*d14abf15SRobert Mustacchi statistics resc?, other resc? */ 84*d14abf15SRobert Mustacchi } resc_request; 85*d14abf15SRobert Mustacchi }; 86*d14abf15SRobert Mustacchi 87*d14abf15SRobert Mustacchi 88*d14abf15SRobert Mustacchi /* simple operation request on queue */ 89*d14abf15SRobert Mustacchi struct vf_pf_msg_q_op { 90*d14abf15SRobert Mustacchi struct vf_pf_msg_hdr hdr; 91*d14abf15SRobert Mustacchi u8 vf_qid; 92*d14abf15SRobert Mustacchi u8 padding[3]; 93*d14abf15SRobert Mustacchi }; 94*d14abf15SRobert Mustacchi 95*d14abf15SRobert Mustacchi struct vf_pf_msg_rss { 96*d14abf15SRobert Mustacchi struct vf_pf_msg_hdr hdr; 97*d14abf15SRobert Mustacchi u32 rss_flags; 98*d14abf15SRobert Mustacchi 99*d14abf15SRobert Mustacchi /* Number hash bits to take into an account */ 100*d14abf15SRobert Mustacchi u8 rss_result_mask; 101*d14abf15SRobert Mustacchi 102*d14abf15SRobert Mustacchi u8 ind_table_size; 103*d14abf15SRobert Mustacchi u8 rss_key_size; 104*d14abf15SRobert Mustacchi 105*d14abf15SRobert Mustacchi /* Indirection table */ 106*d14abf15SRobert Mustacchi u8 ind_table[T_ETH_INDIRECTION_TABLE_SIZE]; 107*d14abf15SRobert Mustacchi 108*d14abf15SRobert Mustacchi /* RSS hash values */ 109*d14abf15SRobert Mustacchi u32 rss_key[10]; 110*d14abf15SRobert Mustacchi }; 111*d14abf15SRobert Mustacchi 112*d14abf15SRobert Mustacchi struct vf_pf_msg_rsc { 113*d14abf15SRobert Mustacchi struct vf_pf_msg_hdr hdr; 114*d14abf15SRobert Mustacchi u32 rsc_ipv4_state; 115*d14abf15SRobert Mustacchi u32 rsc_ipv6_state; 116*d14abf15SRobert Mustacchi }; 117*d14abf15SRobert Mustacchi 118*d14abf15SRobert Mustacchi struct sw_hw_sb_info { 119*d14abf15SRobert Mustacchi u8 hw_sb_id; /* aka absolute igu id, used to ack the sb */ 120*d14abf15SRobert Mustacchi u8 sb_qid; /* used to update DHC for sb */ 121*d14abf15SRobert Mustacchi }; 122*d14abf15SRobert Mustacchi 123*d14abf15SRobert Mustacchi struct pf_vf_msg_acquire_resp { 124*d14abf15SRobert Mustacchi struct pf_vf_msg_hdr hdr; 125*d14abf15SRobert Mustacchi 126*d14abf15SRobert Mustacchi struct sw_pf_vf_pfdev_info 127*d14abf15SRobert Mustacchi { 128*d14abf15SRobert Mustacchi u32 chip_num; 129*d14abf15SRobert Mustacchi 130*d14abf15SRobert Mustacchi u32 pf_cap; 131*d14abf15SRobert Mustacchi #define PFVF_CAP_RSS 0x00000001 132*d14abf15SRobert Mustacchi #define PFVF_CAP_DHC 0x00000002 133*d14abf15SRobert Mustacchi #define PFVF_CAP_TPA 0x00000004 134*d14abf15SRobert Mustacchi #define PFVF_DEBUG 0x80000000 135*d14abf15SRobert Mustacchi 136*d14abf15SRobert Mustacchi u16 db_size; 137*d14abf15SRobert Mustacchi u8 indices_per_sb; 138*d14abf15SRobert Mustacchi u8 padding; 139*d14abf15SRobert Mustacchi } pfdev_info; 140*d14abf15SRobert Mustacchi 141*d14abf15SRobert Mustacchi struct sw_pf_vf_resc 142*d14abf15SRobert Mustacchi { 143*d14abf15SRobert Mustacchi /* 144*d14abf15SRobert Mustacchi * in case of status NO_RESOURCE in message hdr, pf will fill 145*d14abf15SRobert Mustacchi * this struct with suggested amount of resources for next 146*d14abf15SRobert Mustacchi * acquire request 147*d14abf15SRobert Mustacchi */ 148*d14abf15SRobert Mustacchi 149*d14abf15SRobert Mustacchi #define PFVF_MAX_QUEUES_PER_VF 16 150*d14abf15SRobert Mustacchi #define PFVF_MAX_SBS_PER_VF 16 151*d14abf15SRobert Mustacchi struct sw_hw_sb_info hw_sbs[PFVF_MAX_SBS_PER_VF]; 152*d14abf15SRobert Mustacchi u8 hw_qid[PFVF_MAX_QUEUES_PER_VF]; 153*d14abf15SRobert Mustacchi u8 num_rxqs; 154*d14abf15SRobert Mustacchi u8 num_txqs; 155*d14abf15SRobert Mustacchi u8 num_sbs; 156*d14abf15SRobert Mustacchi u8 num_mac_filters; 157*d14abf15SRobert Mustacchi u8 num_vlan_filters; 158*d14abf15SRobert Mustacchi u8 num_mc_filters; 159*d14abf15SRobert Mustacchi u8 igu_test_cnt; 160*d14abf15SRobert Mustacchi u8 igu_cnt; 161*d14abf15SRobert Mustacchi u8 permanent_mac_addr[8]; 162*d14abf15SRobert Mustacchi u8 current_mac_addr[8]; 163*d14abf15SRobert Mustacchi /* TODO: stats resc? cid for the ramrod? stats_id? spq prod id? */ 164*d14abf15SRobert Mustacchi } resc; 165*d14abf15SRobert Mustacchi }; 166*d14abf15SRobert Mustacchi 167*d14abf15SRobert Mustacchi /* Init VF */ 168*d14abf15SRobert Mustacchi struct vf_pf_msg_init_vf { 169*d14abf15SRobert Mustacchi struct vf_pf_msg_hdr hdr; 170*d14abf15SRobert Mustacchi 171*d14abf15SRobert Mustacchi u64 sb_addr[PFVF_MAX_SBS_PER_VF]; /* vf_sb based */ 172*d14abf15SRobert Mustacchi u64 spq_addr; 173*d14abf15SRobert Mustacchi u64 stats_addr; 174*d14abf15SRobert Mustacchi }; 175*d14abf15SRobert Mustacchi 176*d14abf15SRobert Mustacchi /* Setup Queue */ 177*d14abf15SRobert Mustacchi struct vf_pf_msg_setup_q { 178*d14abf15SRobert Mustacchi struct vf_pf_msg_hdr hdr; 179*d14abf15SRobert Mustacchi u8 vf_qid; /* index in hw_qid[] */ 180*d14abf15SRobert Mustacchi 181*d14abf15SRobert Mustacchi u8 param_valid; 182*d14abf15SRobert Mustacchi #define VFPF_RXQ_VALID 0x01 183*d14abf15SRobert Mustacchi #define VFPF_TXQ_VALID 0x02 184*d14abf15SRobert Mustacchi 185*d14abf15SRobert Mustacchi u16 padding; 186*d14abf15SRobert Mustacchi 187*d14abf15SRobert Mustacchi struct sw_vf_pf_rxq_params { 188*d14abf15SRobert Mustacchi /* physical addresses */ 189*d14abf15SRobert Mustacchi u64 rcq_addr; 190*d14abf15SRobert Mustacchi u64 rcq_np_addr; 191*d14abf15SRobert Mustacchi u64 rxq_addr; 192*d14abf15SRobert Mustacchi u64 sge_addr; 193*d14abf15SRobert Mustacchi 194*d14abf15SRobert Mustacchi /* sb + hc info */ 195*d14abf15SRobert Mustacchi u8 vf_sb; /* index in hw_sbs[] */ 196*d14abf15SRobert Mustacchi u8 sb_index; /* Index in the SB */ 197*d14abf15SRobert Mustacchi u16 hc_rate; /* desired interrupts per sec. */ 198*d14abf15SRobert Mustacchi /* valid iff VFPF_QUEUE_FLG_HC */ 199*d14abf15SRobert Mustacchi /* rx buffer info */ 200*d14abf15SRobert Mustacchi u16 mtu; 201*d14abf15SRobert Mustacchi u16 buf_sz; 202*d14abf15SRobert Mustacchi u16 flags; /* VFPF_QUEUE_FLG_X flags */ 203*d14abf15SRobert Mustacchi u16 stat_id; /* valid iff VFPF_QUEUE_FLG_STATS */ 204*d14abf15SRobert Mustacchi 205*d14abf15SRobert Mustacchi /* valid iff VFPF_QUEUE_FLG_TPA */ 206*d14abf15SRobert Mustacchi u16 sge_buf_sz; 207*d14abf15SRobert Mustacchi u16 tpa_agg_sz; 208*d14abf15SRobert Mustacchi u8 max_sge_pkt; 209*d14abf15SRobert Mustacchi 210*d14abf15SRobert Mustacchi u8 drop_flags; /* VFPF_QUEUE_DROP_X, for Linux all should 211*d14abf15SRobert Mustacchi * be turned off, see setup_rx_queue() 212*d14abf15SRobert Mustacchi * for reference 213*d14abf15SRobert Mustacchi */ 214*d14abf15SRobert Mustacchi 215*d14abf15SRobert Mustacchi u8 cache_line_log; /* VFPF_QUEUE_FLG_CACHE_ALIGN 216*d14abf15SRobert Mustacchi * see init_rx_queue() 217*d14abf15SRobert Mustacchi */ 218*d14abf15SRobert Mustacchi u8 padding; 219*d14abf15SRobert Mustacchi } rxq; 220*d14abf15SRobert Mustacchi 221*d14abf15SRobert Mustacchi struct sw_vf_pf_txq_params { 222*d14abf15SRobert Mustacchi /* physical addresses */ 223*d14abf15SRobert Mustacchi u64 txq_addr; 224*d14abf15SRobert Mustacchi 225*d14abf15SRobert Mustacchi /* sb + hc info */ 226*d14abf15SRobert Mustacchi u8 vf_sb; /* index in hw_sbs[] */ 227*d14abf15SRobert Mustacchi u8 sb_index; /* Index in the SB */ 228*d14abf15SRobert Mustacchi u16 hc_rate; /* desired interrupts per sec. */ 229*d14abf15SRobert Mustacchi /* valid iff VFPF_QUEUE_FLG_HC */ 230*d14abf15SRobert Mustacchi u32 flags; /* VFPF_QUEUE_FLG_X flags */ 231*d14abf15SRobert Mustacchi u16 stat_id; /* valid iff VFPF_QUEUE_FLG_STATS */ 232*d14abf15SRobert Mustacchi u8 traffic_type; /* see in setup_context() */ 233*d14abf15SRobert Mustacchi u8 padding; 234*d14abf15SRobert Mustacchi } txq; 235*d14abf15SRobert Mustacchi }; 236*d14abf15SRobert Mustacchi 237*d14abf15SRobert Mustacchi 238*d14abf15SRobert Mustacchi /* Set Queue Filters */ 239*d14abf15SRobert Mustacchi struct vf_pf_q_mac_vlan_filter { 240*d14abf15SRobert Mustacchi u32 flags; 241*d14abf15SRobert Mustacchi #define VFPF_Q_FILTER_DEST_MAC_PRESENT 0x01 242*d14abf15SRobert Mustacchi #define VFPF_Q_FILTER_VLAN_TAG_PRESENT 0x02 243*d14abf15SRobert Mustacchi 244*d14abf15SRobert Mustacchi #define VFPF_Q_FILTER_SET_MAC 0x100 245*d14abf15SRobert Mustacchi 246*d14abf15SRobert Mustacchi u8 dest_mac[6]; 247*d14abf15SRobert Mustacchi u16 vlan_tag; 248*d14abf15SRobert Mustacchi }; 249*d14abf15SRobert Mustacchi 250*d14abf15SRobert Mustacchi struct vf_pf_msg_set_q_filters { 251*d14abf15SRobert Mustacchi struct vf_pf_msg_hdr hdr; 252*d14abf15SRobert Mustacchi 253*d14abf15SRobert Mustacchi u32 flags; 254*d14abf15SRobert Mustacchi #define VFPF_SET_Q_FILTERS_MAC_VLAN_CHANGED 0x01 255*d14abf15SRobert Mustacchi #define VFPF_SET_Q_FILTERS_MULTICAST_CHANGED 0x02 256*d14abf15SRobert Mustacchi #define VFPF_SET_Q_FILTERS_RX_MASK_CHANGED 0x04 257*d14abf15SRobert Mustacchi 258*d14abf15SRobert Mustacchi u8 vf_qid; /* index in hw_qid[] */ 259*d14abf15SRobert Mustacchi u8 n_mac_vlan_filters; 260*d14abf15SRobert Mustacchi u8 n_multicast; 261*d14abf15SRobert Mustacchi u8 padding; 262*d14abf15SRobert Mustacchi 263*d14abf15SRobert Mustacchi #define PFVF_MAX_MAC_FILTERS 16 264*d14abf15SRobert Mustacchi #define PFVF_MAX_VLAN_FILTERS 16 265*d14abf15SRobert Mustacchi // #define PFVF_MAX_MAC_FILTERS 1 266*d14abf15SRobert Mustacchi // #define PFVF_MAX_VLAN_FILTERS 1 267*d14abf15SRobert Mustacchi #define PFVF_MAX_FILTERS (PFVF_MAX_MAC_FILTERS +\ 268*d14abf15SRobert Mustacchi PFVF_MAX_VLAN_FILTERS) 269*d14abf15SRobert Mustacchi struct vf_pf_q_mac_vlan_filter filters[PFVF_MAX_FILTERS]; 270*d14abf15SRobert Mustacchi 271*d14abf15SRobert Mustacchi #define PFVF_MAX_MULTICAST_PER_VF 32 272*d14abf15SRobert Mustacchi // #define PFVF_MAX_MULTICAST_PER_VF 1 273*d14abf15SRobert Mustacchi u8 multicast[PFVF_MAX_MULTICAST_PER_VF][6]; 274*d14abf15SRobert Mustacchi 275*d14abf15SRobert Mustacchi u32 rx_mask; 276*d14abf15SRobert Mustacchi #define VFPF_RX_MASK_ACCEPT_NONE 0x00000000 277*d14abf15SRobert Mustacchi #define VFPF_RX_MASK_ACCEPT_MATCHED_UNICAST 0x00000001 278*d14abf15SRobert Mustacchi #define VFPF_RX_MASK_ACCEPT_MATCHED_MULTICAST 0x00000002 279*d14abf15SRobert Mustacchi #define VFPF_RX_MASK_ACCEPT_ALL_UNICAST 0x00000004 280*d14abf15SRobert Mustacchi #define VFPF_RX_MASK_ACCEPT_ALL_MULTICAST 0x00000008 281*d14abf15SRobert Mustacchi #define VFPF_RX_MASK_ACCEPT_BROADCAST 0x00000010 282*d14abf15SRobert Mustacchi /* TODO: #define VFPF_RX_MASK_ACCEPT_ANY_VLAN 0x00000020 */ 283*d14abf15SRobert Mustacchi }; 284*d14abf15SRobert Mustacchi 285*d14abf15SRobert Mustacchi 286*d14abf15SRobert Mustacchi /* close VF (disable VF) */ 287*d14abf15SRobert Mustacchi struct vf_pf_msg_close_vf { 288*d14abf15SRobert Mustacchi struct vf_pf_msg_hdr hdr; 289*d14abf15SRobert Mustacchi u16 vf_id; /* for debug */ 290*d14abf15SRobert Mustacchi u16 padding; 291*d14abf15SRobert Mustacchi }; 292*d14abf15SRobert Mustacchi 293*d14abf15SRobert Mustacchi /* rlease the VF's acquired resources */ 294*d14abf15SRobert Mustacchi struct vf_pf_msg_release_vf { 295*d14abf15SRobert Mustacchi struct vf_pf_msg_hdr hdr; 296*d14abf15SRobert Mustacchi u16 vf_id; /* for debug */ 297*d14abf15SRobert Mustacchi u16 padding; 298*d14abf15SRobert Mustacchi }; 299*d14abf15SRobert Mustacchi 300*d14abf15SRobert Mustacchi 301*d14abf15SRobert Mustacchi union vf_pf_msg { 302*d14abf15SRobert Mustacchi struct vf_pf_msg_hdr hdr; 303*d14abf15SRobert Mustacchi struct vf_pf_msg_acquire acquire; 304*d14abf15SRobert Mustacchi struct vf_pf_msg_init_vf init_vf; 305*d14abf15SRobert Mustacchi struct vf_pf_msg_close_vf close_vf; 306*d14abf15SRobert Mustacchi struct vf_pf_msg_q_op q_op; 307*d14abf15SRobert Mustacchi struct vf_pf_msg_setup_q setup_q; 308*d14abf15SRobert Mustacchi struct vf_pf_msg_set_q_filters set_q_filters; 309*d14abf15SRobert Mustacchi struct vf_pf_msg_release_vf release_vf; 310*d14abf15SRobert Mustacchi struct vf_pf_msg_rss update_rss; 311*d14abf15SRobert Mustacchi struct vf_pf_msg_rsc update_rsc; 312*d14abf15SRobert Mustacchi }; 313*d14abf15SRobert Mustacchi 314*d14abf15SRobert Mustacchi 315*d14abf15SRobert Mustacchi union pf_vf_msg { 316*d14abf15SRobert Mustacchi struct pf_vf_msg_resp resp; 317*d14abf15SRobert Mustacchi struct pf_vf_msg_acquire_resp acquire_resp; 318*d14abf15SRobert Mustacchi }; 319*d14abf15SRobert Mustacchi 320*d14abf15SRobert Mustacchi typedef struct { 321*d14abf15SRobert Mustacchi u32 req_sz; 322*d14abf15SRobert Mustacchi u32 resp_sz; 323*d14abf15SRobert Mustacchi } msg_sz_t; 324*d14abf15SRobert Mustacchi 325*d14abf15SRobert Mustacchi #define PFVF_OP_VER_MAX(op_arry) (sizeof(op_arry)/sizeof(*op_arry) - 1) 326*d14abf15SRobert Mustacchi 327*d14abf15SRobert Mustacchi static const msg_sz_t acquire_req_sz[] = { 328*d14abf15SRobert Mustacchi /* sizeof(vf_pf_msg_acquire) - offsetof(struct vf_pf_msg_acquire, fieldX), */ 329*d14abf15SRobert Mustacchi {sizeof(struct vf_pf_msg_acquire), 330*d14abf15SRobert Mustacchi sizeof(struct pf_vf_msg_acquire_resp)} 331*d14abf15SRobert Mustacchi }; 332*d14abf15SRobert Mustacchi #define PFVF_ACQUIRE_VER PFVF_OP_VER_MAX(acquire_req_sz) 333*d14abf15SRobert Mustacchi 334*d14abf15SRobert Mustacchi static const msg_sz_t init_vf_req_sz[] = { 335*d14abf15SRobert Mustacchi {sizeof(struct vf_pf_msg_init_vf), sizeof(struct pf_vf_msg_resp)} 336*d14abf15SRobert Mustacchi }; 337*d14abf15SRobert Mustacchi #define PFVF_INIT_VF_VER PFVF_OP_VER_MAX(init_vf_req_sz) 338*d14abf15SRobert Mustacchi 339*d14abf15SRobert Mustacchi static const msg_sz_t setup_q_req_sz[] = { 340*d14abf15SRobert Mustacchi {sizeof(struct vf_pf_msg_setup_q), sizeof(struct pf_vf_msg_resp)} 341*d14abf15SRobert Mustacchi }; 342*d14abf15SRobert Mustacchi #define PFVF_SETUP_Q_VER PFVF_OP_VER_MAX(setup_q_req_sz) 343*d14abf15SRobert Mustacchi 344*d14abf15SRobert Mustacchi static const msg_sz_t set_q_filters_req_sz[] = { 345*d14abf15SRobert Mustacchi {sizeof(struct vf_pf_msg_set_q_filters), sizeof(struct pf_vf_msg_resp)} 346*d14abf15SRobert Mustacchi }; 347*d14abf15SRobert Mustacchi #define PFVF_SET_Q_FILTERS_VER PFVF_OP_VER_MAX(set_q_filters_req_sz) 348*d14abf15SRobert Mustacchi 349*d14abf15SRobert Mustacchi static const msg_sz_t activate_q_req_sz[] = { 350*d14abf15SRobert Mustacchi {sizeof(struct vf_pf_msg_q_op), sizeof(struct pf_vf_msg_resp)} 351*d14abf15SRobert Mustacchi }; 352*d14abf15SRobert Mustacchi #define PFVF_ACTIVATE_Q_VER PFVF_OP_VER_MAX(activate_q_req_sz) 353*d14abf15SRobert Mustacchi 354*d14abf15SRobert Mustacchi static const msg_sz_t deactivate_q_req_sz[] = { 355*d14abf15SRobert Mustacchi {sizeof(struct vf_pf_msg_q_op), sizeof(struct pf_vf_msg_resp)} 356*d14abf15SRobert Mustacchi }; 357*d14abf15SRobert Mustacchi #define PFVF_DEACTIVATE_Q_VER PFVF_OP_VER_MAX(deactivate_q_req_sz) 358*d14abf15SRobert Mustacchi 359*d14abf15SRobert Mustacchi static const msg_sz_t teardown_q_req_sz[] = { 360*d14abf15SRobert Mustacchi {sizeof(struct vf_pf_msg_q_op), sizeof(struct pf_vf_msg_resp)} 361*d14abf15SRobert Mustacchi }; 362*d14abf15SRobert Mustacchi #define PFVF_TEARDOWN_Q_VER PFVF_OP_VER_MAX(teardown_q_req_sz) 363*d14abf15SRobert Mustacchi 364*d14abf15SRobert Mustacchi static const msg_sz_t close_vf_req_sz[] = { 365*d14abf15SRobert Mustacchi {sizeof(struct vf_pf_msg_close_vf), sizeof(struct pf_vf_msg_resp)} 366*d14abf15SRobert Mustacchi }; 367*d14abf15SRobert Mustacchi #define PFVF_CLOSE_VF_VER PFVF_OP_VER_MAX(close_vf_req_sz) 368*d14abf15SRobert Mustacchi 369*d14abf15SRobert Mustacchi static const msg_sz_t release_vf_req_sz[] = { 370*d14abf15SRobert Mustacchi {sizeof(struct vf_pf_msg_release_vf), sizeof(struct pf_vf_msg_resp)} 371*d14abf15SRobert Mustacchi }; 372*d14abf15SRobert Mustacchi #define PFVF_RELEASE_VF_VER PFVF_OP_VER_MAX(release_vf_req_sz) 373*d14abf15SRobert Mustacchi 374*d14abf15SRobert Mustacchi static const msg_sz_t update_rss_req_sz[] = { 375*d14abf15SRobert Mustacchi {sizeof(struct vf_pf_msg_rss), sizeof(struct pf_vf_msg_resp)} 376*d14abf15SRobert Mustacchi }; 377*d14abf15SRobert Mustacchi #define PFVF_UPDATE_RSS_VER PFVF_OP_VER_MAX(update_rss_req_sz) 378*d14abf15SRobert Mustacchi 379*d14abf15SRobert Mustacchi static const msg_sz_t update_rsc_req_sz[] = { 380*d14abf15SRobert Mustacchi {sizeof(struct vf_pf_msg_rsc), sizeof(struct pf_vf_msg_resp)} 381*d14abf15SRobert Mustacchi }; 382*d14abf15SRobert Mustacchi #define PFVF_UPDATE_RSC_VER PFVF_OP_VER_MAX(update_rsc_req_sz) 383*d14abf15SRobert Mustacchi 384*d14abf15SRobert Mustacchi enum { 385*d14abf15SRobert Mustacchi PFVF_OP_ACQUIRE = 0, 386*d14abf15SRobert Mustacchi PFVF_OP_INIT_VF, 387*d14abf15SRobert Mustacchi PFVF_OP_SETUP_Q, 388*d14abf15SRobert Mustacchi PFVF_OP_SET_Q_FILTERS, 389*d14abf15SRobert Mustacchi PFVF_OP_ACTIVATE_Q, 390*d14abf15SRobert Mustacchi PFVF_OP_DEACTIVATE_Q, 391*d14abf15SRobert Mustacchi PFVF_OP_TEARDOWN_Q, 392*d14abf15SRobert Mustacchi PFVF_OP_CLOSE_VF, 393*d14abf15SRobert Mustacchi PFVF_OP_RELEASE_VF, 394*d14abf15SRobert Mustacchi PFVF_OP_UPDATE_RSS, 395*d14abf15SRobert Mustacchi PFVF_OP_UPDATE_RSC, 396*d14abf15SRobert Mustacchi PFVF_OP_MAX 397*d14abf15SRobert Mustacchi }; 398*d14abf15SRobert Mustacchi 399*d14abf15SRobert Mustacchi 400*d14abf15SRobert Mustacchi /** To get size of message of the type X(request or response) 401*d14abf15SRobert Mustacchi * for the op_code Y of the version Z one should use 402*d14abf15SRobert Mustacchi * 403*d14abf15SRobert Mustacchi * op_code_req_sz[Y][Z].req_sz/resp_sz 404*d14abf15SRobert Mustacchi ******************************************************************/ 405*d14abf15SRobert Mustacchi /* const msg_sz_t* op_codes_req_sz[] = { 406*d14abf15SRobert Mustacchi (const msg_sz_t*)acquire_req_sz, 407*d14abf15SRobert Mustacchi (const msg_sz_t*)init_vf_req_sz, 408*d14abf15SRobert Mustacchi (const msg_sz_t*)setup_q_req_sz, 409*d14abf15SRobert Mustacchi (const msg_sz_t*)set_q_filters_req_sz, 410*d14abf15SRobert Mustacchi (const msg_sz_t*)activate_q_req_sz, 411*d14abf15SRobert Mustacchi (const msg_sz_t*)deactivate_q_req_sz, 412*d14abf15SRobert Mustacchi (const msg_sz_t*)teardown_q_req_sz, 413*d14abf15SRobert Mustacchi (const msg_sz_t*)close_vf_req_sz, 414*d14abf15SRobert Mustacchi (const msg_sz_t*)release_vf_req_sz 415*d14abf15SRobert Mustacchi }; */ 416*d14abf15SRobert Mustacchi 417*d14abf15SRobert Mustacchi #endif /* VF_PF_SW_IF_H */ 418