17d6f728cSVishwanathapura, Niranjana #ifndef _OPA_VNIC_ENCAP_H 27d6f728cSVishwanathapura, Niranjana #define _OPA_VNIC_ENCAP_H 37d6f728cSVishwanathapura, Niranjana /* 47d6f728cSVishwanathapura, Niranjana * Copyright(c) 2017 Intel Corporation. 57d6f728cSVishwanathapura, Niranjana * 67d6f728cSVishwanathapura, Niranjana * This file is provided under a dual BSD/GPLv2 license. When using or 77d6f728cSVishwanathapura, Niranjana * redistributing this file, you may do so under either license. 87d6f728cSVishwanathapura, Niranjana * 97d6f728cSVishwanathapura, Niranjana * GPL LICENSE SUMMARY 107d6f728cSVishwanathapura, Niranjana * 117d6f728cSVishwanathapura, Niranjana * This program is free software; you can redistribute it and/or modify 127d6f728cSVishwanathapura, Niranjana * it under the terms of version 2 of the GNU General Public License as 137d6f728cSVishwanathapura, Niranjana * published by the Free Software Foundation. 147d6f728cSVishwanathapura, Niranjana * 157d6f728cSVishwanathapura, Niranjana * This program is distributed in the hope that it will be useful, but 167d6f728cSVishwanathapura, Niranjana * WITHOUT ANY WARRANTY; without even the implied warranty of 177d6f728cSVishwanathapura, Niranjana * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 187d6f728cSVishwanathapura, Niranjana * General Public License for more details. 197d6f728cSVishwanathapura, Niranjana * 207d6f728cSVishwanathapura, Niranjana * BSD LICENSE 217d6f728cSVishwanathapura, Niranjana * 227d6f728cSVishwanathapura, Niranjana * Redistribution and use in source and binary forms, with or without 237d6f728cSVishwanathapura, Niranjana * modification, are permitted provided that the following conditions 247d6f728cSVishwanathapura, Niranjana * are met: 257d6f728cSVishwanathapura, Niranjana * 267d6f728cSVishwanathapura, Niranjana * - Redistributions of source code must retain the above copyright 277d6f728cSVishwanathapura, Niranjana * notice, this list of conditions and the following disclaimer. 287d6f728cSVishwanathapura, Niranjana * - Redistributions in binary form must reproduce the above copyright 297d6f728cSVishwanathapura, Niranjana * notice, this list of conditions and the following disclaimer in 307d6f728cSVishwanathapura, Niranjana * the documentation and/or other materials provided with the 317d6f728cSVishwanathapura, Niranjana * distribution. 327d6f728cSVishwanathapura, Niranjana * - Neither the name of Intel Corporation nor the names of its 337d6f728cSVishwanathapura, Niranjana * contributors may be used to endorse or promote products derived 347d6f728cSVishwanathapura, Niranjana * from this software without specific prior written permission. 357d6f728cSVishwanathapura, Niranjana * 367d6f728cSVishwanathapura, Niranjana * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 377d6f728cSVishwanathapura, Niranjana * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 387d6f728cSVishwanathapura, Niranjana * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 397d6f728cSVishwanathapura, Niranjana * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 407d6f728cSVishwanathapura, Niranjana * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 417d6f728cSVishwanathapura, Niranjana * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 427d6f728cSVishwanathapura, Niranjana * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 437d6f728cSVishwanathapura, Niranjana * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 447d6f728cSVishwanathapura, Niranjana * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 457d6f728cSVishwanathapura, Niranjana * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 467d6f728cSVishwanathapura, Niranjana * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 477d6f728cSVishwanathapura, Niranjana * 487d6f728cSVishwanathapura, Niranjana */ 497d6f728cSVishwanathapura, Niranjana 507d6f728cSVishwanathapura, Niranjana /* 517d6f728cSVishwanathapura, Niranjana * This file contains all OPA VNIC declaration required for encapsulation 527d6f728cSVishwanathapura, Niranjana * and decapsulation of Ethernet packets 537d6f728cSVishwanathapura, Niranjana */ 547d6f728cSVishwanathapura, Niranjana 5572dc7614SVishwanathapura, Niranjana #include <linux/types.h> 5672dc7614SVishwanathapura, Niranjana #include <rdma/ib_mad.h> 5772dc7614SVishwanathapura, Niranjana 5872dc7614SVishwanathapura, Niranjana /* EMA class version */ 5972dc7614SVishwanathapura, Niranjana #define OPA_EMA_CLASS_VERSION 0x80 6072dc7614SVishwanathapura, Niranjana 6172dc7614SVishwanathapura, Niranjana /* 6272dc7614SVishwanathapura, Niranjana * Define the Intel vendor management class for OPA 6372dc7614SVishwanathapura, Niranjana * ETHERNET MANAGEMENT 6472dc7614SVishwanathapura, Niranjana */ 6572dc7614SVishwanathapura, Niranjana #define OPA_MGMT_CLASS_INTEL_EMA 0x34 6672dc7614SVishwanathapura, Niranjana 6772dc7614SVishwanathapura, Niranjana /* EM attribute IDs */ 6872dc7614SVishwanathapura, Niranjana #define OPA_EM_ATTR_CLASS_PORT_INFO 0x0001 6972dc7614SVishwanathapura, Niranjana #define OPA_EM_ATTR_VESWPORT_INFO 0x0011 7072dc7614SVishwanathapura, Niranjana #define OPA_EM_ATTR_VESWPORT_MAC_ENTRIES 0x0012 7172dc7614SVishwanathapura, Niranjana #define OPA_EM_ATTR_IFACE_UCAST_MACS 0x0013 7272dc7614SVishwanathapura, Niranjana #define OPA_EM_ATTR_IFACE_MCAST_MACS 0x0014 7372dc7614SVishwanathapura, Niranjana #define OPA_EM_ATTR_DELETE_VESW 0x0015 7472dc7614SVishwanathapura, Niranjana #define OPA_EM_ATTR_VESWPORT_SUMMARY_COUNTERS 0x0020 7572dc7614SVishwanathapura, Niranjana #define OPA_EM_ATTR_VESWPORT_ERROR_COUNTERS 0x0022 7672dc7614SVishwanathapura, Niranjana 777d6f728cSVishwanathapura, Niranjana /* VNIC configured and operational state values */ 787d6f728cSVishwanathapura, Niranjana #define OPA_VNIC_STATE_DROP_ALL 0x1 797d6f728cSVishwanathapura, Niranjana #define OPA_VNIC_STATE_FORWARDING 0x3 807d6f728cSVishwanathapura, Niranjana 817d6f728cSVishwanathapura, Niranjana #define OPA_VESW_MAX_NUM_DEF_PORT 16 827d6f728cSVishwanathapura, Niranjana #define OPA_VNIC_MAX_NUM_PCP 8 837d6f728cSVishwanathapura, Niranjana 8472dc7614SVishwanathapura, Niranjana #define OPA_VNIC_EMA_DATA (OPA_MGMT_MAD_SIZE - IB_MGMT_VENDOR_HDR) 8572dc7614SVishwanathapura, Niranjana 8672dc7614SVishwanathapura, Niranjana /* Defines for vendor specific notice(trap) attributes */ 8772dc7614SVishwanathapura, Niranjana #define OPA_INTEL_EMA_NOTICE_TYPE_INFO 0x04 8872dc7614SVishwanathapura, Niranjana 8972dc7614SVishwanathapura, Niranjana /* INTEL OUI */ 9072dc7614SVishwanathapura, Niranjana #define INTEL_OUI_1 0x00 9172dc7614SVishwanathapura, Niranjana #define INTEL_OUI_2 0x06 9272dc7614SVishwanathapura, Niranjana #define INTEL_OUI_3 0x6a 9372dc7614SVishwanathapura, Niranjana 9472dc7614SVishwanathapura, Niranjana /* Trap opcodes sent from VNIC */ 9572dc7614SVishwanathapura, Niranjana #define OPA_VESWPORT_TRAP_IFACE_UCAST_MAC_CHANGE 0x1 9672dc7614SVishwanathapura, Niranjana #define OPA_VESWPORT_TRAP_IFACE_MCAST_MAC_CHANGE 0x2 9772dc7614SVishwanathapura, Niranjana #define OPA_VESWPORT_TRAP_ETH_LINK_STATUS_CHANGE 0x3 9872dc7614SVishwanathapura, Niranjana 9972dc7614SVishwanathapura, Niranjana #define OPA_VNIC_DLID_SD_IS_SRC_MAC(dlid_sd) (!!((dlid_sd) & 0x20)) 10072dc7614SVishwanathapura, Niranjana #define OPA_VNIC_DLID_SD_GET_DLID(dlid_sd) ((dlid_sd) >> 8) 10172dc7614SVishwanathapura, Niranjana 102cfd34f8eSVishwanathapura, Niranjana /* VNIC Ethernet link status */ 103cfd34f8eSVishwanathapura, Niranjana #define OPA_VNIC_ETH_LINK_UP 1 104cfd34f8eSVishwanathapura, Niranjana #define OPA_VNIC_ETH_LINK_DOWN 2 105cfd34f8eSVishwanathapura, Niranjana 106b209a368SNiranjana Vishwanathapura /* routing control */ 107b209a368SNiranjana Vishwanathapura #define OPA_VNIC_ENCAP_RC_DEFAULT 0 108b209a368SNiranjana Vishwanathapura #define OPA_VNIC_ENCAP_RC_IPV4 4 109b209a368SNiranjana Vishwanathapura #define OPA_VNIC_ENCAP_RC_IPV4_UDP 8 110b209a368SNiranjana Vishwanathapura #define OPA_VNIC_ENCAP_RC_IPV4_TCP 12 111b209a368SNiranjana Vishwanathapura #define OPA_VNIC_ENCAP_RC_IPV6 16 112b209a368SNiranjana Vishwanathapura #define OPA_VNIC_ENCAP_RC_IPV6_TCP 20 113b209a368SNiranjana Vishwanathapura #define OPA_VNIC_ENCAP_RC_IPV6_UDP 24 114b209a368SNiranjana Vishwanathapura 115b209a368SNiranjana Vishwanathapura #define OPA_VNIC_ENCAP_RC_EXT(w, b) (((w) >> OPA_VNIC_ENCAP_RC_ ## b) & 0x7) 116b209a368SNiranjana Vishwanathapura 11772dc7614SVishwanathapura, Niranjana /** 11872dc7614SVishwanathapura, Niranjana * struct opa_vesw_info - OPA vnic switch information 11972dc7614SVishwanathapura, Niranjana * @fabric_id: 10-bit fabric id 12072dc7614SVishwanathapura, Niranjana * @vesw_id: 12-bit virtual ethernet switch id 12111708142SColton Lewis * @rsvd0: reserved bytes 12272dc7614SVishwanathapura, Niranjana * @def_port_mask: bitmask of default ports 12311708142SColton Lewis * @rsvd1: reserved bytes 12472dc7614SVishwanathapura, Niranjana * @pkey: partition key 12511708142SColton Lewis * @rsvd2: reserved bytes 12672dc7614SVishwanathapura, Niranjana * @u_mcast_dlid: unknown multicast dlid 12772dc7614SVishwanathapura, Niranjana * @u_ucast_dlid: array of unknown unicast dlids 12811708142SColton Lewis * @rsvd3: reserved bytes 129b209a368SNiranjana Vishwanathapura * @rc: routing control 13062f1e84eSNiranjana Vishwanathapura * @eth_mtu: Ethernet MTU 13111708142SColton Lewis * @rsvd4: reserved bytes 13272dc7614SVishwanathapura, Niranjana */ 13372dc7614SVishwanathapura, Niranjana struct opa_vesw_info { 13472dc7614SVishwanathapura, Niranjana __be16 fabric_id; 13572dc7614SVishwanathapura, Niranjana __be16 vesw_id; 13672dc7614SVishwanathapura, Niranjana 13772dc7614SVishwanathapura, Niranjana u8 rsvd0[6]; 13872dc7614SVishwanathapura, Niranjana __be16 def_port_mask; 13972dc7614SVishwanathapura, Niranjana 14072dc7614SVishwanathapura, Niranjana u8 rsvd1[2]; 14172dc7614SVishwanathapura, Niranjana __be16 pkey; 14272dc7614SVishwanathapura, Niranjana 14372dc7614SVishwanathapura, Niranjana u8 rsvd2[4]; 14472dc7614SVishwanathapura, Niranjana __be32 u_mcast_dlid; 14572dc7614SVishwanathapura, Niranjana __be32 u_ucast_dlid[OPA_VESW_MAX_NUM_DEF_PORT]; 14672dc7614SVishwanathapura, Niranjana 147b209a368SNiranjana Vishwanathapura __be32 rc; 148b209a368SNiranjana Vishwanathapura 149b209a368SNiranjana Vishwanathapura u8 rsvd3[56]; 15062f1e84eSNiranjana Vishwanathapura __be16 eth_mtu; 15172dc7614SVishwanathapura, Niranjana u8 rsvd4[2]; 15272dc7614SVishwanathapura, Niranjana } __packed; 15372dc7614SVishwanathapura, Niranjana 15472dc7614SVishwanathapura, Niranjana /** 15572dc7614SVishwanathapura, Niranjana * struct opa_per_veswport_info - OPA vnic per port information 15672dc7614SVishwanathapura, Niranjana * @port_num: port number 15772dc7614SVishwanathapura, Niranjana * @eth_link_status: current ethernet link state 15811708142SColton Lewis * @rsvd0: reserved bytes 15972dc7614SVishwanathapura, Niranjana * @base_mac_addr: base mac address 16072dc7614SVishwanathapura, Niranjana * @config_state: configured port state 16172dc7614SVishwanathapura, Niranjana * @oper_state: operational port state 16272dc7614SVishwanathapura, Niranjana * @max_mac_tbl_ent: max number of mac table entries 16372dc7614SVishwanathapura, Niranjana * @max_smac_ent: max smac entries in mac table 16472dc7614SVishwanathapura, Niranjana * @mac_tbl_digest: mac table digest 16511708142SColton Lewis * @rsvd1: reserved bytes 16672dc7614SVishwanathapura, Niranjana * @encap_slid: base slid for the port 16772dc7614SVishwanathapura, Niranjana * @pcp_to_sc_uc: sc by pcp index for unicast ethernet packets 16872dc7614SVishwanathapura, Niranjana * @pcp_to_vl_uc: vl by pcp index for unicast ethernet packets 16972dc7614SVishwanathapura, Niranjana * @pcp_to_sc_mc: sc by pcp index for multicast ethernet packets 17072dc7614SVishwanathapura, Niranjana * @pcp_to_vl_mc: vl by pcp index for multicast ethernet packets 17172dc7614SVishwanathapura, Niranjana * @non_vlan_sc_uc: sc for non-vlan unicast ethernet packets 17272dc7614SVishwanathapura, Niranjana * @non_vlan_vl_uc: vl for non-vlan unicast ethernet packets 17372dc7614SVishwanathapura, Niranjana * @non_vlan_sc_mc: sc for non-vlan multicast ethernet packets 17472dc7614SVishwanathapura, Niranjana * @non_vlan_vl_mc: vl for non-vlan multicast ethernet packets 17511708142SColton Lewis * @rsvd2: reserved bytes 17672dc7614SVishwanathapura, Niranjana * @uc_macs_gen_count: generation count for unicast macs list 17772dc7614SVishwanathapura, Niranjana * @mc_macs_gen_count: generation count for multicast macs list 17811708142SColton Lewis * @rsvd3: reserved bytes 17972dc7614SVishwanathapura, Niranjana */ 18072dc7614SVishwanathapura, Niranjana struct opa_per_veswport_info { 18172dc7614SVishwanathapura, Niranjana __be32 port_num; 18272dc7614SVishwanathapura, Niranjana 18372dc7614SVishwanathapura, Niranjana u8 eth_link_status; 18472dc7614SVishwanathapura, Niranjana u8 rsvd0[3]; 18572dc7614SVishwanathapura, Niranjana 18672dc7614SVishwanathapura, Niranjana u8 base_mac_addr[ETH_ALEN]; 18772dc7614SVishwanathapura, Niranjana u8 config_state; 18872dc7614SVishwanathapura, Niranjana u8 oper_state; 18972dc7614SVishwanathapura, Niranjana 19072dc7614SVishwanathapura, Niranjana __be16 max_mac_tbl_ent; 19172dc7614SVishwanathapura, Niranjana __be16 max_smac_ent; 19272dc7614SVishwanathapura, Niranjana __be32 mac_tbl_digest; 19372dc7614SVishwanathapura, Niranjana u8 rsvd1[4]; 19472dc7614SVishwanathapura, Niranjana 19572dc7614SVishwanathapura, Niranjana __be32 encap_slid; 19672dc7614SVishwanathapura, Niranjana 19772dc7614SVishwanathapura, Niranjana u8 pcp_to_sc_uc[OPA_VNIC_MAX_NUM_PCP]; 19872dc7614SVishwanathapura, Niranjana u8 pcp_to_vl_uc[OPA_VNIC_MAX_NUM_PCP]; 19972dc7614SVishwanathapura, Niranjana u8 pcp_to_sc_mc[OPA_VNIC_MAX_NUM_PCP]; 20072dc7614SVishwanathapura, Niranjana u8 pcp_to_vl_mc[OPA_VNIC_MAX_NUM_PCP]; 20172dc7614SVishwanathapura, Niranjana 20272dc7614SVishwanathapura, Niranjana u8 non_vlan_sc_uc; 20372dc7614SVishwanathapura, Niranjana u8 non_vlan_vl_uc; 20472dc7614SVishwanathapura, Niranjana u8 non_vlan_sc_mc; 20572dc7614SVishwanathapura, Niranjana u8 non_vlan_vl_mc; 20672dc7614SVishwanathapura, Niranjana 20772dc7614SVishwanathapura, Niranjana u8 rsvd2[48]; 20872dc7614SVishwanathapura, Niranjana 20972dc7614SVishwanathapura, Niranjana __be16 uc_macs_gen_count; 21072dc7614SVishwanathapura, Niranjana __be16 mc_macs_gen_count; 21172dc7614SVishwanathapura, Niranjana 21272dc7614SVishwanathapura, Niranjana u8 rsvd3[8]; 21372dc7614SVishwanathapura, Niranjana } __packed; 21472dc7614SVishwanathapura, Niranjana 21572dc7614SVishwanathapura, Niranjana /** 21672dc7614SVishwanathapura, Niranjana * struct opa_veswport_info - OPA vnic port information 21772dc7614SVishwanathapura, Niranjana * @vesw: OPA vnic switch information 21872dc7614SVishwanathapura, Niranjana * @vport: OPA vnic per port information 21972dc7614SVishwanathapura, Niranjana * 22072dc7614SVishwanathapura, Niranjana * On host, each of the virtual ethernet ports belongs 22172dc7614SVishwanathapura, Niranjana * to a different virtual ethernet switches. 22272dc7614SVishwanathapura, Niranjana */ 22372dc7614SVishwanathapura, Niranjana struct opa_veswport_info { 22472dc7614SVishwanathapura, Niranjana struct opa_vesw_info vesw; 22572dc7614SVishwanathapura, Niranjana struct opa_per_veswport_info vport; 22672dc7614SVishwanathapura, Niranjana }; 22772dc7614SVishwanathapura, Niranjana 22872dc7614SVishwanathapura, Niranjana /** 22972dc7614SVishwanathapura, Niranjana * struct opa_veswport_mactable_entry - single entry in the forwarding table 23072dc7614SVishwanathapura, Niranjana * @mac_addr: MAC address 23172dc7614SVishwanathapura, Niranjana * @mac_addr_mask: MAC address bit mask 23272dc7614SVishwanathapura, Niranjana * @dlid_sd: Matching DLID and side data 23372dc7614SVishwanathapura, Niranjana * 23472dc7614SVishwanathapura, Niranjana * On the host each virtual ethernet port will have 23572dc7614SVishwanathapura, Niranjana * a forwarding table. These tables are used to 23672dc7614SVishwanathapura, Niranjana * map a MAC to a LID and other data. For more 23772dc7614SVishwanathapura, Niranjana * details see struct opa_veswport_mactable_entries. 23872dc7614SVishwanathapura, Niranjana * This is the structure of a single mactable entry 23972dc7614SVishwanathapura, Niranjana */ 24072dc7614SVishwanathapura, Niranjana struct opa_veswport_mactable_entry { 24172dc7614SVishwanathapura, Niranjana u8 mac_addr[ETH_ALEN]; 24272dc7614SVishwanathapura, Niranjana u8 mac_addr_mask[ETH_ALEN]; 24372dc7614SVishwanathapura, Niranjana __be32 dlid_sd; 24472dc7614SVishwanathapura, Niranjana } __packed; 24572dc7614SVishwanathapura, Niranjana 24672dc7614SVishwanathapura, Niranjana /** 24772dc7614SVishwanathapura, Niranjana * struct opa_veswport_mactable - Forwarding table array 24872dc7614SVishwanathapura, Niranjana * @offset: mac table starting offset 24972dc7614SVishwanathapura, Niranjana * @num_entries: Number of entries to get or set 25072dc7614SVishwanathapura, Niranjana * @mac_tbl_digest: mac table digest 251a4da83c2SMauro Carvalho Chehab * @tbl_entries: Array of table entries 25272dc7614SVishwanathapura, Niranjana * 25372dc7614SVishwanathapura, Niranjana * The EM sends down this structure in a MAD indicating 25472dc7614SVishwanathapura, Niranjana * the starting offset in the forwarding table that this 25572dc7614SVishwanathapura, Niranjana * entry is to be loaded into and the number of entries 25672dc7614SVishwanathapura, Niranjana * that that this MAD instance contains 25772dc7614SVishwanathapura, Niranjana * The mac_tbl_digest has been added to this MAD structure. It will be set by 25872dc7614SVishwanathapura, Niranjana * the EM and it will be used by the EM to check if there are any 25972dc7614SVishwanathapura, Niranjana * discrepancies with this value and the value 26072dc7614SVishwanathapura, Niranjana * maintained by the EM in the case of VNIC port being deleted or unloaded 26172dc7614SVishwanathapura, Niranjana * A new instantiation of a VNIC will always have a value of zero. 26272dc7614SVishwanathapura, Niranjana * This value is stored as part of the vnic adapter structure and will be 26372dc7614SVishwanathapura, Niranjana * accessed by the GET and SET routines for both the mactable entries and the 26472dc7614SVishwanathapura, Niranjana * veswport info. 26572dc7614SVishwanathapura, Niranjana */ 26672dc7614SVishwanathapura, Niranjana struct opa_veswport_mactable { 26772dc7614SVishwanathapura, Niranjana __be16 offset; 26872dc7614SVishwanathapura, Niranjana __be16 num_entries; 26972dc7614SVishwanathapura, Niranjana __be32 mac_tbl_digest; 2705b361328SGustavo A. R. Silva struct opa_veswport_mactable_entry tbl_entries[]; 27172dc7614SVishwanathapura, Niranjana } __packed; 27272dc7614SVishwanathapura, Niranjana 27372dc7614SVishwanathapura, Niranjana /** 27472dc7614SVishwanathapura, Niranjana * struct opa_veswport_summary_counters - summary counters 27572dc7614SVishwanathapura, Niranjana * @vp_instance: vport instance on the OPA port 27672dc7614SVishwanathapura, Niranjana * @vesw_id: virtual ethernet switch id 27772dc7614SVishwanathapura, Niranjana * @veswport_num: virtual ethernet switch port number 27872dc7614SVishwanathapura, Niranjana * @tx_errors: transmit errors 27972dc7614SVishwanathapura, Niranjana * @rx_errors: receive errors 28072dc7614SVishwanathapura, Niranjana * @tx_packets: transmit packets 28172dc7614SVishwanathapura, Niranjana * @rx_packets: receive packets 28272dc7614SVishwanathapura, Niranjana * @tx_bytes: transmit bytes 28372dc7614SVishwanathapura, Niranjana * @rx_bytes: receive bytes 28472dc7614SVishwanathapura, Niranjana * @tx_unicast: unicast packets transmitted 28572dc7614SVishwanathapura, Niranjana * @tx_mcastbcast: multicast/broadcast packets transmitted 28672dc7614SVishwanathapura, Niranjana * @tx_untagged: non-vlan packets transmitted 28772dc7614SVishwanathapura, Niranjana * @tx_vlan: vlan packets transmitted 28872dc7614SVishwanathapura, Niranjana * @tx_64_size: transmit packet length is 64 bytes 28972dc7614SVishwanathapura, Niranjana * @tx_65_127: transmit packet length is >=65 and < 127 bytes 29072dc7614SVishwanathapura, Niranjana * @tx_128_255: transmit packet length is >=128 and < 255 bytes 29172dc7614SVishwanathapura, Niranjana * @tx_256_511: transmit packet length is >=256 and < 511 bytes 29272dc7614SVishwanathapura, Niranjana * @tx_512_1023: transmit packet length is >=512 and < 1023 bytes 29372dc7614SVishwanathapura, Niranjana * @tx_1024_1518: transmit packet length is >=1024 and < 1518 bytes 29472dc7614SVishwanathapura, Niranjana * @tx_1519_max: transmit packet length >= 1519 bytes 29572dc7614SVishwanathapura, Niranjana * @rx_unicast: unicast packets received 29672dc7614SVishwanathapura, Niranjana * @rx_mcastbcast: multicast/broadcast packets received 29772dc7614SVishwanathapura, Niranjana * @rx_untagged: non-vlan packets received 29872dc7614SVishwanathapura, Niranjana * @rx_vlan: vlan packets received 29972dc7614SVishwanathapura, Niranjana * @rx_64_size: received packet length is 64 bytes 30072dc7614SVishwanathapura, Niranjana * @rx_65_127: received packet length is >=65 and < 127 bytes 30172dc7614SVishwanathapura, Niranjana * @rx_128_255: received packet length is >=128 and < 255 bytes 30272dc7614SVishwanathapura, Niranjana * @rx_256_511: received packet length is >=256 and < 511 bytes 30372dc7614SVishwanathapura, Niranjana * @rx_512_1023: received packet length is >=512 and < 1023 bytes 30472dc7614SVishwanathapura, Niranjana * @rx_1024_1518: received packet length is >=1024 and < 1518 bytes 30572dc7614SVishwanathapura, Niranjana * @rx_1519_max: received packet length >= 1519 bytes 30611708142SColton Lewis * @reserved: reserved bytes 30772dc7614SVishwanathapura, Niranjana * 30872dc7614SVishwanathapura, Niranjana * All the above are counters of corresponding conditions. 30972dc7614SVishwanathapura, Niranjana */ 31072dc7614SVishwanathapura, Niranjana struct opa_veswport_summary_counters { 31172dc7614SVishwanathapura, Niranjana __be16 vp_instance; 31272dc7614SVishwanathapura, Niranjana __be16 vesw_id; 31372dc7614SVishwanathapura, Niranjana __be32 veswport_num; 31472dc7614SVishwanathapura, Niranjana 31572dc7614SVishwanathapura, Niranjana __be64 tx_errors; 31672dc7614SVishwanathapura, Niranjana __be64 rx_errors; 31772dc7614SVishwanathapura, Niranjana __be64 tx_packets; 31872dc7614SVishwanathapura, Niranjana __be64 rx_packets; 31972dc7614SVishwanathapura, Niranjana __be64 tx_bytes; 32072dc7614SVishwanathapura, Niranjana __be64 rx_bytes; 32172dc7614SVishwanathapura, Niranjana 32272dc7614SVishwanathapura, Niranjana __be64 tx_unicast; 32372dc7614SVishwanathapura, Niranjana __be64 tx_mcastbcast; 32472dc7614SVishwanathapura, Niranjana 32572dc7614SVishwanathapura, Niranjana __be64 tx_untagged; 32672dc7614SVishwanathapura, Niranjana __be64 tx_vlan; 32772dc7614SVishwanathapura, Niranjana 32872dc7614SVishwanathapura, Niranjana __be64 tx_64_size; 32972dc7614SVishwanathapura, Niranjana __be64 tx_65_127; 33072dc7614SVishwanathapura, Niranjana __be64 tx_128_255; 33172dc7614SVishwanathapura, Niranjana __be64 tx_256_511; 33272dc7614SVishwanathapura, Niranjana __be64 tx_512_1023; 33372dc7614SVishwanathapura, Niranjana __be64 tx_1024_1518; 33472dc7614SVishwanathapura, Niranjana __be64 tx_1519_max; 33572dc7614SVishwanathapura, Niranjana 33672dc7614SVishwanathapura, Niranjana __be64 rx_unicast; 33772dc7614SVishwanathapura, Niranjana __be64 rx_mcastbcast; 33872dc7614SVishwanathapura, Niranjana 33972dc7614SVishwanathapura, Niranjana __be64 rx_untagged; 34072dc7614SVishwanathapura, Niranjana __be64 rx_vlan; 34172dc7614SVishwanathapura, Niranjana 34272dc7614SVishwanathapura, Niranjana __be64 rx_64_size; 34372dc7614SVishwanathapura, Niranjana __be64 rx_65_127; 34472dc7614SVishwanathapura, Niranjana __be64 rx_128_255; 34572dc7614SVishwanathapura, Niranjana __be64 rx_256_511; 34672dc7614SVishwanathapura, Niranjana __be64 rx_512_1023; 34772dc7614SVishwanathapura, Niranjana __be64 rx_1024_1518; 34872dc7614SVishwanathapura, Niranjana __be64 rx_1519_max; 34972dc7614SVishwanathapura, Niranjana 35072dc7614SVishwanathapura, Niranjana __be64 reserved[16]; 35172dc7614SVishwanathapura, Niranjana } __packed; 35272dc7614SVishwanathapura, Niranjana 35372dc7614SVishwanathapura, Niranjana /** 35472dc7614SVishwanathapura, Niranjana * struct opa_veswport_error_counters - error counters 35572dc7614SVishwanathapura, Niranjana * @vp_instance: vport instance on the OPA port 35672dc7614SVishwanathapura, Niranjana * @vesw_id: virtual ethernet switch id 35772dc7614SVishwanathapura, Niranjana * @veswport_num: virtual ethernet switch port number 35872dc7614SVishwanathapura, Niranjana * @tx_errors: transmit errors 35972dc7614SVishwanathapura, Niranjana * @rx_errors: receive errors 36011708142SColton Lewis * @rsvd0: reserved bytes 36172dc7614SVishwanathapura, Niranjana * @tx_smac_filt: smac filter errors 36211708142SColton Lewis * @rsvd1: reserved bytes 36311708142SColton Lewis * @rsvd2: reserved bytes 36411708142SColton Lewis * @rsvd3: reserved bytes 36572dc7614SVishwanathapura, Niranjana * @tx_dlid_zero: transmit packets with invalid dlid 36611708142SColton Lewis * @rsvd4: reserved bytes 36772dc7614SVishwanathapura, Niranjana * @tx_logic: other transmit errors 36811708142SColton Lewis * @rsvd5: reserved bytes 36972dc7614SVishwanathapura, Niranjana * @tx_drop_state: packet tansmission in non-forward port state 37072dc7614SVishwanathapura, Niranjana * @rx_bad_veswid: received packet with invalid vesw id 37111708142SColton Lewis * @rsvd6: reserved bytes 37272dc7614SVishwanathapura, Niranjana * @rx_runt: received ethernet packet with length < 64 bytes 37372dc7614SVishwanathapura, Niranjana * @rx_oversize: received ethernet packet with length > MTU size 37411708142SColton Lewis * @rsvd7: reserved bytes 37572dc7614SVishwanathapura, Niranjana * @rx_eth_down: received packets when interface is down 37672dc7614SVishwanathapura, Niranjana * @rx_drop_state: received packets in non-forwarding port state 37772dc7614SVishwanathapura, Niranjana * @rx_logic: other receive errors 37811708142SColton Lewis * @rsvd8: reserved bytes 37911708142SColton Lewis * @rsvd9: reserved bytes 38072dc7614SVishwanathapura, Niranjana * 3817f04c71fSDillon Brock * All the above are counters of corresponding error conditions. 38272dc7614SVishwanathapura, Niranjana */ 38372dc7614SVishwanathapura, Niranjana struct opa_veswport_error_counters { 38472dc7614SVishwanathapura, Niranjana __be16 vp_instance; 38572dc7614SVishwanathapura, Niranjana __be16 vesw_id; 38672dc7614SVishwanathapura, Niranjana __be32 veswport_num; 38772dc7614SVishwanathapura, Niranjana 38872dc7614SVishwanathapura, Niranjana __be64 tx_errors; 38972dc7614SVishwanathapura, Niranjana __be64 rx_errors; 39072dc7614SVishwanathapura, Niranjana 39172dc7614SVishwanathapura, Niranjana __be64 rsvd0; 39272dc7614SVishwanathapura, Niranjana __be64 tx_smac_filt; 39372dc7614SVishwanathapura, Niranjana __be64 rsvd1; 39472dc7614SVishwanathapura, Niranjana __be64 rsvd2; 39572dc7614SVishwanathapura, Niranjana __be64 rsvd3; 39672dc7614SVishwanathapura, Niranjana __be64 tx_dlid_zero; 39772dc7614SVishwanathapura, Niranjana __be64 rsvd4; 39872dc7614SVishwanathapura, Niranjana __be64 tx_logic; 39972dc7614SVishwanathapura, Niranjana __be64 rsvd5; 40072dc7614SVishwanathapura, Niranjana __be64 tx_drop_state; 40172dc7614SVishwanathapura, Niranjana 40272dc7614SVishwanathapura, Niranjana __be64 rx_bad_veswid; 40372dc7614SVishwanathapura, Niranjana __be64 rsvd6; 40472dc7614SVishwanathapura, Niranjana __be64 rx_runt; 40572dc7614SVishwanathapura, Niranjana __be64 rx_oversize; 40672dc7614SVishwanathapura, Niranjana __be64 rsvd7; 40772dc7614SVishwanathapura, Niranjana __be64 rx_eth_down; 40872dc7614SVishwanathapura, Niranjana __be64 rx_drop_state; 40972dc7614SVishwanathapura, Niranjana __be64 rx_logic; 41072dc7614SVishwanathapura, Niranjana __be64 rsvd8; 41172dc7614SVishwanathapura, Niranjana 41272dc7614SVishwanathapura, Niranjana __be64 rsvd9[16]; 41372dc7614SVishwanathapura, Niranjana } __packed; 41472dc7614SVishwanathapura, Niranjana 41572dc7614SVishwanathapura, Niranjana /** 41672dc7614SVishwanathapura, Niranjana * struct opa_veswport_trap - Trap message sent to EM by VNIC 41772dc7614SVishwanathapura, Niranjana * @fabric_id: 10 bit fabric id 41872dc7614SVishwanathapura, Niranjana * @veswid: 12 bit virtual ethernet switch id 41972dc7614SVishwanathapura, Niranjana * @veswportnum: logical port number on the Virtual switch 42072dc7614SVishwanathapura, Niranjana * @opaportnum: physical port num (redundant on host) 42172dc7614SVishwanathapura, Niranjana * @veswportindex: switch port index on opa port 0 based 42272dc7614SVishwanathapura, Niranjana * @opcode: operation 42372dc7614SVishwanathapura, Niranjana * @reserved: 32 bit for alignment 42472dc7614SVishwanathapura, Niranjana * 42572dc7614SVishwanathapura, Niranjana * The VNIC will send trap messages to the Ethernet manager to 42672dc7614SVishwanathapura, Niranjana * inform it about changes to the VNIC config, behaviour etc. 42772dc7614SVishwanathapura, Niranjana * This is the format of the trap payload. 42872dc7614SVishwanathapura, Niranjana */ 42972dc7614SVishwanathapura, Niranjana struct opa_veswport_trap { 43072dc7614SVishwanathapura, Niranjana __be16 fabric_id; 43172dc7614SVishwanathapura, Niranjana __be16 veswid; 43272dc7614SVishwanathapura, Niranjana __be32 veswportnum; 43372dc7614SVishwanathapura, Niranjana __be16 opaportnum; 43472dc7614SVishwanathapura, Niranjana u8 veswportindex; 43572dc7614SVishwanathapura, Niranjana u8 opcode; 43672dc7614SVishwanathapura, Niranjana __be32 reserved; 43772dc7614SVishwanathapura, Niranjana } __packed; 43872dc7614SVishwanathapura, Niranjana 43972dc7614SVishwanathapura, Niranjana /** 440*2988ca08SMauro Carvalho Chehab * struct opa_vnic_iface_mac_entry - single entry in the mac list 44172dc7614SVishwanathapura, Niranjana * @mac_addr: MAC address 44272dc7614SVishwanathapura, Niranjana */ 44372dc7614SVishwanathapura, Niranjana struct opa_vnic_iface_mac_entry { 44472dc7614SVishwanathapura, Niranjana u8 mac_addr[ETH_ALEN]; 44572dc7614SVishwanathapura, Niranjana }; 44672dc7614SVishwanathapura, Niranjana 44772dc7614SVishwanathapura, Niranjana /** 44872dc7614SVishwanathapura, Niranjana * struct opa_veswport_iface_macs - Msg to set globally administered MAC 44972dc7614SVishwanathapura, Niranjana * @start_idx: position of first entry (0 based) 45072dc7614SVishwanathapura, Niranjana * @num_macs_in_msg: number of MACs in this message 45172dc7614SVishwanathapura, Niranjana * @tot_macs_in_lst: The total number of MACs the agent has 45272dc7614SVishwanathapura, Niranjana * @gen_count: gen_count to indicate change 45372dc7614SVishwanathapura, Niranjana * @entry: The mac list entry 45472dc7614SVishwanathapura, Niranjana * 45572dc7614SVishwanathapura, Niranjana * Same attribute IDS and attribute modifiers as in locally administered 45672dc7614SVishwanathapura, Niranjana * addresses used to set globally administered addresses 45772dc7614SVishwanathapura, Niranjana */ 45872dc7614SVishwanathapura, Niranjana struct opa_veswport_iface_macs { 45972dc7614SVishwanathapura, Niranjana __be16 start_idx; 46072dc7614SVishwanathapura, Niranjana __be16 num_macs_in_msg; 46172dc7614SVishwanathapura, Niranjana __be16 tot_macs_in_lst; 46272dc7614SVishwanathapura, Niranjana __be16 gen_count; 4635b361328SGustavo A. R. Silva struct opa_vnic_iface_mac_entry entry[]; 46472dc7614SVishwanathapura, Niranjana } __packed; 46572dc7614SVishwanathapura, Niranjana 46672dc7614SVishwanathapura, Niranjana /** 46772dc7614SVishwanathapura, Niranjana * struct opa_vnic_vema_mad - Generic VEMA MAD 46872dc7614SVishwanathapura, Niranjana * @mad_hdr: Generic MAD header 46972dc7614SVishwanathapura, Niranjana * @rmpp_hdr: RMPP header for vendor specific MADs 47011708142SColton Lewis * @reserved: reserved bytes 47172dc7614SVishwanathapura, Niranjana * @oui: Unique org identifier 47272dc7614SVishwanathapura, Niranjana * @data: MAD data 47372dc7614SVishwanathapura, Niranjana */ 47472dc7614SVishwanathapura, Niranjana struct opa_vnic_vema_mad { 47572dc7614SVishwanathapura, Niranjana struct ib_mad_hdr mad_hdr; 47672dc7614SVishwanathapura, Niranjana struct ib_rmpp_hdr rmpp_hdr; 47772dc7614SVishwanathapura, Niranjana u8 reserved; 47872dc7614SVishwanathapura, Niranjana u8 oui[3]; 47972dc7614SVishwanathapura, Niranjana u8 data[OPA_VNIC_EMA_DATA]; 48072dc7614SVishwanathapura, Niranjana }; 48172dc7614SVishwanathapura, Niranjana 48272dc7614SVishwanathapura, Niranjana /** 48372dc7614SVishwanathapura, Niranjana * struct opa_vnic_notice_attr - Generic Notice MAD 48472dc7614SVishwanathapura, Niranjana * @gen_type: Generic/Specific bit and type of notice 48572dc7614SVishwanathapura, Niranjana * @oui_1: Vendor ID byte 1 48672dc7614SVishwanathapura, Niranjana * @oui_2: Vendor ID byte 2 48772dc7614SVishwanathapura, Niranjana * @oui_3: Vendor ID byte 3 48872dc7614SVishwanathapura, Niranjana * @trap_num: Trap number 48972dc7614SVishwanathapura, Niranjana * @toggle_count: Notice toggle bit and count value 49072dc7614SVishwanathapura, Niranjana * @issuer_lid: Trap issuer's lid 49111708142SColton Lewis * @reserved: reserved bytes 49272dc7614SVishwanathapura, Niranjana * @issuer_gid: Issuer GID (only if Report method) 49372dc7614SVishwanathapura, Niranjana * @raw_data: Trap message body 49472dc7614SVishwanathapura, Niranjana */ 49572dc7614SVishwanathapura, Niranjana struct opa_vnic_notice_attr { 49672dc7614SVishwanathapura, Niranjana u8 gen_type; 49772dc7614SVishwanathapura, Niranjana u8 oui_1; 49872dc7614SVishwanathapura, Niranjana u8 oui_2; 49972dc7614SVishwanathapura, Niranjana u8 oui_3; 50072dc7614SVishwanathapura, Niranjana __be16 trap_num; 50172dc7614SVishwanathapura, Niranjana __be16 toggle_count; 50272dc7614SVishwanathapura, Niranjana __be32 issuer_lid; 50372dc7614SVishwanathapura, Niranjana __be32 reserved; 50472dc7614SVishwanathapura, Niranjana u8 issuer_gid[16]; 50572dc7614SVishwanathapura, Niranjana u8 raw_data[64]; 50672dc7614SVishwanathapura, Niranjana } __packed; 50772dc7614SVishwanathapura, Niranjana 50872dc7614SVishwanathapura, Niranjana /** 50972dc7614SVishwanathapura, Niranjana * struct opa_vnic_vema_mad_trap - Generic VEMA MAD Trap 51072dc7614SVishwanathapura, Niranjana * @mad_hdr: Generic MAD header 51172dc7614SVishwanathapura, Niranjana * @rmpp_hdr: RMPP header for vendor specific MADs 51211708142SColton Lewis * @reserved: reserved bytes 51372dc7614SVishwanathapura, Niranjana * @oui: Unique org identifier 51472dc7614SVishwanathapura, Niranjana * @notice: Notice structure 51572dc7614SVishwanathapura, Niranjana */ 51672dc7614SVishwanathapura, Niranjana struct opa_vnic_vema_mad_trap { 51772dc7614SVishwanathapura, Niranjana struct ib_mad_hdr mad_hdr; 51872dc7614SVishwanathapura, Niranjana struct ib_rmpp_hdr rmpp_hdr; 51972dc7614SVishwanathapura, Niranjana u8 reserved; 52072dc7614SVishwanathapura, Niranjana u8 oui[3]; 52172dc7614SVishwanathapura, Niranjana struct opa_vnic_notice_attr notice; 52272dc7614SVishwanathapura, Niranjana }; 52372dc7614SVishwanathapura, Niranjana 5247d6f728cSVishwanathapura, Niranjana #endif /* _OPA_VNIC_ENCAP_H */ 525