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 12172dc7614SVishwanathapura, Niranjana * @def_port_mask: bitmask of default ports 12272dc7614SVishwanathapura, Niranjana * @pkey: partition key 12372dc7614SVishwanathapura, Niranjana * @u_mcast_dlid: unknown multicast dlid 12472dc7614SVishwanathapura, Niranjana * @u_ucast_dlid: array of unknown unicast dlids 125b209a368SNiranjana Vishwanathapura * @rc: routing control 12662f1e84eSNiranjana Vishwanathapura * @eth_mtu: Ethernet MTU 12772dc7614SVishwanathapura, Niranjana */ 12872dc7614SVishwanathapura, Niranjana struct opa_vesw_info { 12972dc7614SVishwanathapura, Niranjana __be16 fabric_id; 13072dc7614SVishwanathapura, Niranjana __be16 vesw_id; 13172dc7614SVishwanathapura, Niranjana 13272dc7614SVishwanathapura, Niranjana u8 rsvd0[6]; 13372dc7614SVishwanathapura, Niranjana __be16 def_port_mask; 13472dc7614SVishwanathapura, Niranjana 13572dc7614SVishwanathapura, Niranjana u8 rsvd1[2]; 13672dc7614SVishwanathapura, Niranjana __be16 pkey; 13772dc7614SVishwanathapura, Niranjana 13872dc7614SVishwanathapura, Niranjana u8 rsvd2[4]; 13972dc7614SVishwanathapura, Niranjana __be32 u_mcast_dlid; 14072dc7614SVishwanathapura, Niranjana __be32 u_ucast_dlid[OPA_VESW_MAX_NUM_DEF_PORT]; 14172dc7614SVishwanathapura, Niranjana 142b209a368SNiranjana Vishwanathapura __be32 rc; 143b209a368SNiranjana Vishwanathapura 144b209a368SNiranjana Vishwanathapura u8 rsvd3[56]; 14562f1e84eSNiranjana Vishwanathapura __be16 eth_mtu; 14672dc7614SVishwanathapura, Niranjana u8 rsvd4[2]; 14772dc7614SVishwanathapura, Niranjana } __packed; 14872dc7614SVishwanathapura, Niranjana 14972dc7614SVishwanathapura, Niranjana /** 15072dc7614SVishwanathapura, Niranjana * struct opa_per_veswport_info - OPA vnic per port information 15172dc7614SVishwanathapura, Niranjana * @port_num: port number 15272dc7614SVishwanathapura, Niranjana * @eth_link_status: current ethernet link state 15372dc7614SVishwanathapura, Niranjana * @base_mac_addr: base mac address 15472dc7614SVishwanathapura, Niranjana * @config_state: configured port state 15572dc7614SVishwanathapura, Niranjana * @oper_state: operational port state 15672dc7614SVishwanathapura, Niranjana * @max_mac_tbl_ent: max number of mac table entries 15772dc7614SVishwanathapura, Niranjana * @max_smac_ent: max smac entries in mac table 15872dc7614SVishwanathapura, Niranjana * @mac_tbl_digest: mac table digest 15972dc7614SVishwanathapura, Niranjana * @encap_slid: base slid for the port 16072dc7614SVishwanathapura, Niranjana * @pcp_to_sc_uc: sc by pcp index for unicast ethernet packets 16172dc7614SVishwanathapura, Niranjana * @pcp_to_vl_uc: vl by pcp index for unicast ethernet packets 16272dc7614SVishwanathapura, Niranjana * @pcp_to_sc_mc: sc by pcp index for multicast ethernet packets 16372dc7614SVishwanathapura, Niranjana * @pcp_to_vl_mc: vl by pcp index for multicast ethernet packets 16472dc7614SVishwanathapura, Niranjana * @non_vlan_sc_uc: sc for non-vlan unicast ethernet packets 16572dc7614SVishwanathapura, Niranjana * @non_vlan_vl_uc: vl for non-vlan unicast ethernet packets 16672dc7614SVishwanathapura, Niranjana * @non_vlan_sc_mc: sc for non-vlan multicast ethernet packets 16772dc7614SVishwanathapura, Niranjana * @non_vlan_vl_mc: vl for non-vlan multicast ethernet packets 16872dc7614SVishwanathapura, Niranjana * @uc_macs_gen_count: generation count for unicast macs list 16972dc7614SVishwanathapura, Niranjana * @mc_macs_gen_count: generation count for multicast macs list 17072dc7614SVishwanathapura, Niranjana */ 17172dc7614SVishwanathapura, Niranjana struct opa_per_veswport_info { 17272dc7614SVishwanathapura, Niranjana __be32 port_num; 17372dc7614SVishwanathapura, Niranjana 17472dc7614SVishwanathapura, Niranjana u8 eth_link_status; 17572dc7614SVishwanathapura, Niranjana u8 rsvd0[3]; 17672dc7614SVishwanathapura, Niranjana 17772dc7614SVishwanathapura, Niranjana u8 base_mac_addr[ETH_ALEN]; 17872dc7614SVishwanathapura, Niranjana u8 config_state; 17972dc7614SVishwanathapura, Niranjana u8 oper_state; 18072dc7614SVishwanathapura, Niranjana 18172dc7614SVishwanathapura, Niranjana __be16 max_mac_tbl_ent; 18272dc7614SVishwanathapura, Niranjana __be16 max_smac_ent; 18372dc7614SVishwanathapura, Niranjana __be32 mac_tbl_digest; 18472dc7614SVishwanathapura, Niranjana u8 rsvd1[4]; 18572dc7614SVishwanathapura, Niranjana 18672dc7614SVishwanathapura, Niranjana __be32 encap_slid; 18772dc7614SVishwanathapura, Niranjana 18872dc7614SVishwanathapura, Niranjana u8 pcp_to_sc_uc[OPA_VNIC_MAX_NUM_PCP]; 18972dc7614SVishwanathapura, Niranjana u8 pcp_to_vl_uc[OPA_VNIC_MAX_NUM_PCP]; 19072dc7614SVishwanathapura, Niranjana u8 pcp_to_sc_mc[OPA_VNIC_MAX_NUM_PCP]; 19172dc7614SVishwanathapura, Niranjana u8 pcp_to_vl_mc[OPA_VNIC_MAX_NUM_PCP]; 19272dc7614SVishwanathapura, Niranjana 19372dc7614SVishwanathapura, Niranjana u8 non_vlan_sc_uc; 19472dc7614SVishwanathapura, Niranjana u8 non_vlan_vl_uc; 19572dc7614SVishwanathapura, Niranjana u8 non_vlan_sc_mc; 19672dc7614SVishwanathapura, Niranjana u8 non_vlan_vl_mc; 19772dc7614SVishwanathapura, Niranjana 19872dc7614SVishwanathapura, Niranjana u8 rsvd2[48]; 19972dc7614SVishwanathapura, Niranjana 20072dc7614SVishwanathapura, Niranjana __be16 uc_macs_gen_count; 20172dc7614SVishwanathapura, Niranjana __be16 mc_macs_gen_count; 20272dc7614SVishwanathapura, Niranjana 20372dc7614SVishwanathapura, Niranjana u8 rsvd3[8]; 20472dc7614SVishwanathapura, Niranjana } __packed; 20572dc7614SVishwanathapura, Niranjana 20672dc7614SVishwanathapura, Niranjana /** 20772dc7614SVishwanathapura, Niranjana * struct opa_veswport_info - OPA vnic port information 20872dc7614SVishwanathapura, Niranjana * @vesw: OPA vnic switch information 20972dc7614SVishwanathapura, Niranjana * @vport: OPA vnic per port information 21072dc7614SVishwanathapura, Niranjana * 21172dc7614SVishwanathapura, Niranjana * On host, each of the virtual ethernet ports belongs 21272dc7614SVishwanathapura, Niranjana * to a different virtual ethernet switches. 21372dc7614SVishwanathapura, Niranjana */ 21472dc7614SVishwanathapura, Niranjana struct opa_veswport_info { 21572dc7614SVishwanathapura, Niranjana struct opa_vesw_info vesw; 21672dc7614SVishwanathapura, Niranjana struct opa_per_veswport_info vport; 21772dc7614SVishwanathapura, Niranjana }; 21872dc7614SVishwanathapura, Niranjana 21972dc7614SVishwanathapura, Niranjana /** 22072dc7614SVishwanathapura, Niranjana * struct opa_veswport_mactable_entry - single entry in the forwarding table 22172dc7614SVishwanathapura, Niranjana * @mac_addr: MAC address 22272dc7614SVishwanathapura, Niranjana * @mac_addr_mask: MAC address bit mask 22372dc7614SVishwanathapura, Niranjana * @dlid_sd: Matching DLID and side data 22472dc7614SVishwanathapura, Niranjana * 22572dc7614SVishwanathapura, Niranjana * On the host each virtual ethernet port will have 22672dc7614SVishwanathapura, Niranjana * a forwarding table. These tables are used to 22772dc7614SVishwanathapura, Niranjana * map a MAC to a LID and other data. For more 22872dc7614SVishwanathapura, Niranjana * details see struct opa_veswport_mactable_entries. 22972dc7614SVishwanathapura, Niranjana * This is the structure of a single mactable entry 23072dc7614SVishwanathapura, Niranjana */ 23172dc7614SVishwanathapura, Niranjana struct opa_veswport_mactable_entry { 23272dc7614SVishwanathapura, Niranjana u8 mac_addr[ETH_ALEN]; 23372dc7614SVishwanathapura, Niranjana u8 mac_addr_mask[ETH_ALEN]; 23472dc7614SVishwanathapura, Niranjana __be32 dlid_sd; 23572dc7614SVishwanathapura, Niranjana } __packed; 23672dc7614SVishwanathapura, Niranjana 23772dc7614SVishwanathapura, Niranjana /** 23872dc7614SVishwanathapura, Niranjana * struct opa_veswport_mactable - Forwarding table array 23972dc7614SVishwanathapura, Niranjana * @offset: mac table starting offset 24072dc7614SVishwanathapura, Niranjana * @num_entries: Number of entries to get or set 24172dc7614SVishwanathapura, Niranjana * @mac_tbl_digest: mac table digest 24272dc7614SVishwanathapura, Niranjana * @tbl_entries[]: Array of table entries 24372dc7614SVishwanathapura, Niranjana * 24472dc7614SVishwanathapura, Niranjana * The EM sends down this structure in a MAD indicating 24572dc7614SVishwanathapura, Niranjana * the starting offset in the forwarding table that this 24672dc7614SVishwanathapura, Niranjana * entry is to be loaded into and the number of entries 24772dc7614SVishwanathapura, Niranjana * that that this MAD instance contains 24872dc7614SVishwanathapura, Niranjana * The mac_tbl_digest has been added to this MAD structure. It will be set by 24972dc7614SVishwanathapura, Niranjana * the EM and it will be used by the EM to check if there are any 25072dc7614SVishwanathapura, Niranjana * discrepancies with this value and the value 25172dc7614SVishwanathapura, Niranjana * maintained by the EM in the case of VNIC port being deleted or unloaded 25272dc7614SVishwanathapura, Niranjana * A new instantiation of a VNIC will always have a value of zero. 25372dc7614SVishwanathapura, Niranjana * This value is stored as part of the vnic adapter structure and will be 25472dc7614SVishwanathapura, Niranjana * accessed by the GET and SET routines for both the mactable entries and the 25572dc7614SVishwanathapura, Niranjana * veswport info. 25672dc7614SVishwanathapura, Niranjana */ 25772dc7614SVishwanathapura, Niranjana struct opa_veswport_mactable { 25872dc7614SVishwanathapura, Niranjana __be16 offset; 25972dc7614SVishwanathapura, Niranjana __be16 num_entries; 26072dc7614SVishwanathapura, Niranjana __be32 mac_tbl_digest; 261*5b361328SGustavo A. R. Silva struct opa_veswport_mactable_entry tbl_entries[]; 26272dc7614SVishwanathapura, Niranjana } __packed; 26372dc7614SVishwanathapura, Niranjana 26472dc7614SVishwanathapura, Niranjana /** 26572dc7614SVishwanathapura, Niranjana * struct opa_veswport_summary_counters - summary counters 26672dc7614SVishwanathapura, Niranjana * @vp_instance: vport instance on the OPA port 26772dc7614SVishwanathapura, Niranjana * @vesw_id: virtual ethernet switch id 26872dc7614SVishwanathapura, Niranjana * @veswport_num: virtual ethernet switch port number 26972dc7614SVishwanathapura, Niranjana * @tx_errors: transmit errors 27072dc7614SVishwanathapura, Niranjana * @rx_errors: receive errors 27172dc7614SVishwanathapura, Niranjana * @tx_packets: transmit packets 27272dc7614SVishwanathapura, Niranjana * @rx_packets: receive packets 27372dc7614SVishwanathapura, Niranjana * @tx_bytes: transmit bytes 27472dc7614SVishwanathapura, Niranjana * @rx_bytes: receive bytes 27572dc7614SVishwanathapura, Niranjana * @tx_unicast: unicast packets transmitted 27672dc7614SVishwanathapura, Niranjana * @tx_mcastbcast: multicast/broadcast packets transmitted 27772dc7614SVishwanathapura, Niranjana * @tx_untagged: non-vlan packets transmitted 27872dc7614SVishwanathapura, Niranjana * @tx_vlan: vlan packets transmitted 27972dc7614SVishwanathapura, Niranjana * @tx_64_size: transmit packet length is 64 bytes 28072dc7614SVishwanathapura, Niranjana * @tx_65_127: transmit packet length is >=65 and < 127 bytes 28172dc7614SVishwanathapura, Niranjana * @tx_128_255: transmit packet length is >=128 and < 255 bytes 28272dc7614SVishwanathapura, Niranjana * @tx_256_511: transmit packet length is >=256 and < 511 bytes 28372dc7614SVishwanathapura, Niranjana * @tx_512_1023: transmit packet length is >=512 and < 1023 bytes 28472dc7614SVishwanathapura, Niranjana * @tx_1024_1518: transmit packet length is >=1024 and < 1518 bytes 28572dc7614SVishwanathapura, Niranjana * @tx_1519_max: transmit packet length >= 1519 bytes 28672dc7614SVishwanathapura, Niranjana * @rx_unicast: unicast packets received 28772dc7614SVishwanathapura, Niranjana * @rx_mcastbcast: multicast/broadcast packets received 28872dc7614SVishwanathapura, Niranjana * @rx_untagged: non-vlan packets received 28972dc7614SVishwanathapura, Niranjana * @rx_vlan: vlan packets received 29072dc7614SVishwanathapura, Niranjana * @rx_64_size: received packet length is 64 bytes 29172dc7614SVishwanathapura, Niranjana * @rx_65_127: received packet length is >=65 and < 127 bytes 29272dc7614SVishwanathapura, Niranjana * @rx_128_255: received packet length is >=128 and < 255 bytes 29372dc7614SVishwanathapura, Niranjana * @rx_256_511: received packet length is >=256 and < 511 bytes 29472dc7614SVishwanathapura, Niranjana * @rx_512_1023: received packet length is >=512 and < 1023 bytes 29572dc7614SVishwanathapura, Niranjana * @rx_1024_1518: received packet length is >=1024 and < 1518 bytes 29672dc7614SVishwanathapura, Niranjana * @rx_1519_max: received packet length >= 1519 bytes 29772dc7614SVishwanathapura, Niranjana * 29872dc7614SVishwanathapura, Niranjana * All the above are counters of corresponding conditions. 29972dc7614SVishwanathapura, Niranjana */ 30072dc7614SVishwanathapura, Niranjana struct opa_veswport_summary_counters { 30172dc7614SVishwanathapura, Niranjana __be16 vp_instance; 30272dc7614SVishwanathapura, Niranjana __be16 vesw_id; 30372dc7614SVishwanathapura, Niranjana __be32 veswport_num; 30472dc7614SVishwanathapura, Niranjana 30572dc7614SVishwanathapura, Niranjana __be64 tx_errors; 30672dc7614SVishwanathapura, Niranjana __be64 rx_errors; 30772dc7614SVishwanathapura, Niranjana __be64 tx_packets; 30872dc7614SVishwanathapura, Niranjana __be64 rx_packets; 30972dc7614SVishwanathapura, Niranjana __be64 tx_bytes; 31072dc7614SVishwanathapura, Niranjana __be64 rx_bytes; 31172dc7614SVishwanathapura, Niranjana 31272dc7614SVishwanathapura, Niranjana __be64 tx_unicast; 31372dc7614SVishwanathapura, Niranjana __be64 tx_mcastbcast; 31472dc7614SVishwanathapura, Niranjana 31572dc7614SVishwanathapura, Niranjana __be64 tx_untagged; 31672dc7614SVishwanathapura, Niranjana __be64 tx_vlan; 31772dc7614SVishwanathapura, Niranjana 31872dc7614SVishwanathapura, Niranjana __be64 tx_64_size; 31972dc7614SVishwanathapura, Niranjana __be64 tx_65_127; 32072dc7614SVishwanathapura, Niranjana __be64 tx_128_255; 32172dc7614SVishwanathapura, Niranjana __be64 tx_256_511; 32272dc7614SVishwanathapura, Niranjana __be64 tx_512_1023; 32372dc7614SVishwanathapura, Niranjana __be64 tx_1024_1518; 32472dc7614SVishwanathapura, Niranjana __be64 tx_1519_max; 32572dc7614SVishwanathapura, Niranjana 32672dc7614SVishwanathapura, Niranjana __be64 rx_unicast; 32772dc7614SVishwanathapura, Niranjana __be64 rx_mcastbcast; 32872dc7614SVishwanathapura, Niranjana 32972dc7614SVishwanathapura, Niranjana __be64 rx_untagged; 33072dc7614SVishwanathapura, Niranjana __be64 rx_vlan; 33172dc7614SVishwanathapura, Niranjana 33272dc7614SVishwanathapura, Niranjana __be64 rx_64_size; 33372dc7614SVishwanathapura, Niranjana __be64 rx_65_127; 33472dc7614SVishwanathapura, Niranjana __be64 rx_128_255; 33572dc7614SVishwanathapura, Niranjana __be64 rx_256_511; 33672dc7614SVishwanathapura, Niranjana __be64 rx_512_1023; 33772dc7614SVishwanathapura, Niranjana __be64 rx_1024_1518; 33872dc7614SVishwanathapura, Niranjana __be64 rx_1519_max; 33972dc7614SVishwanathapura, Niranjana 34072dc7614SVishwanathapura, Niranjana __be64 reserved[16]; 34172dc7614SVishwanathapura, Niranjana } __packed; 34272dc7614SVishwanathapura, Niranjana 34372dc7614SVishwanathapura, Niranjana /** 34472dc7614SVishwanathapura, Niranjana * struct opa_veswport_error_counters - error counters 34572dc7614SVishwanathapura, Niranjana * @vp_instance: vport instance on the OPA port 34672dc7614SVishwanathapura, Niranjana * @vesw_id: virtual ethernet switch id 34772dc7614SVishwanathapura, Niranjana * @veswport_num: virtual ethernet switch port number 34872dc7614SVishwanathapura, Niranjana * @tx_errors: transmit errors 34972dc7614SVishwanathapura, Niranjana * @rx_errors: receive errors 35072dc7614SVishwanathapura, Niranjana * @tx_smac_filt: smac filter errors 35172dc7614SVishwanathapura, Niranjana * @tx_dlid_zero: transmit packets with invalid dlid 35272dc7614SVishwanathapura, Niranjana * @tx_logic: other transmit errors 35372dc7614SVishwanathapura, Niranjana * @tx_drop_state: packet tansmission in non-forward port state 35472dc7614SVishwanathapura, Niranjana * @rx_bad_veswid: received packet with invalid vesw id 35572dc7614SVishwanathapura, Niranjana * @rx_runt: received ethernet packet with length < 64 bytes 35672dc7614SVishwanathapura, Niranjana * @rx_oversize: received ethernet packet with length > MTU size 35772dc7614SVishwanathapura, Niranjana * @rx_eth_down: received packets when interface is down 35872dc7614SVishwanathapura, Niranjana * @rx_drop_state: received packets in non-forwarding port state 35972dc7614SVishwanathapura, Niranjana * @rx_logic: other receive errors 36072dc7614SVishwanathapura, Niranjana * 3617f04c71fSDillon Brock * All the above are counters of corresponding error conditions. 36272dc7614SVishwanathapura, Niranjana */ 36372dc7614SVishwanathapura, Niranjana struct opa_veswport_error_counters { 36472dc7614SVishwanathapura, Niranjana __be16 vp_instance; 36572dc7614SVishwanathapura, Niranjana __be16 vesw_id; 36672dc7614SVishwanathapura, Niranjana __be32 veswport_num; 36772dc7614SVishwanathapura, Niranjana 36872dc7614SVishwanathapura, Niranjana __be64 tx_errors; 36972dc7614SVishwanathapura, Niranjana __be64 rx_errors; 37072dc7614SVishwanathapura, Niranjana 37172dc7614SVishwanathapura, Niranjana __be64 rsvd0; 37272dc7614SVishwanathapura, Niranjana __be64 tx_smac_filt; 37372dc7614SVishwanathapura, Niranjana __be64 rsvd1; 37472dc7614SVishwanathapura, Niranjana __be64 rsvd2; 37572dc7614SVishwanathapura, Niranjana __be64 rsvd3; 37672dc7614SVishwanathapura, Niranjana __be64 tx_dlid_zero; 37772dc7614SVishwanathapura, Niranjana __be64 rsvd4; 37872dc7614SVishwanathapura, Niranjana __be64 tx_logic; 37972dc7614SVishwanathapura, Niranjana __be64 rsvd5; 38072dc7614SVishwanathapura, Niranjana __be64 tx_drop_state; 38172dc7614SVishwanathapura, Niranjana 38272dc7614SVishwanathapura, Niranjana __be64 rx_bad_veswid; 38372dc7614SVishwanathapura, Niranjana __be64 rsvd6; 38472dc7614SVishwanathapura, Niranjana __be64 rx_runt; 38572dc7614SVishwanathapura, Niranjana __be64 rx_oversize; 38672dc7614SVishwanathapura, Niranjana __be64 rsvd7; 38772dc7614SVishwanathapura, Niranjana __be64 rx_eth_down; 38872dc7614SVishwanathapura, Niranjana __be64 rx_drop_state; 38972dc7614SVishwanathapura, Niranjana __be64 rx_logic; 39072dc7614SVishwanathapura, Niranjana __be64 rsvd8; 39172dc7614SVishwanathapura, Niranjana 39272dc7614SVishwanathapura, Niranjana __be64 rsvd9[16]; 39372dc7614SVishwanathapura, Niranjana } __packed; 39472dc7614SVishwanathapura, Niranjana 39572dc7614SVishwanathapura, Niranjana /** 39672dc7614SVishwanathapura, Niranjana * struct opa_veswport_trap - Trap message sent to EM by VNIC 39772dc7614SVishwanathapura, Niranjana * @fabric_id: 10 bit fabric id 39872dc7614SVishwanathapura, Niranjana * @veswid: 12 bit virtual ethernet switch id 39972dc7614SVishwanathapura, Niranjana * @veswportnum: logical port number on the Virtual switch 40072dc7614SVishwanathapura, Niranjana * @opaportnum: physical port num (redundant on host) 40172dc7614SVishwanathapura, Niranjana * @veswportindex: switch port index on opa port 0 based 40272dc7614SVishwanathapura, Niranjana * @opcode: operation 40372dc7614SVishwanathapura, Niranjana * @reserved: 32 bit for alignment 40472dc7614SVishwanathapura, Niranjana * 40572dc7614SVishwanathapura, Niranjana * The VNIC will send trap messages to the Ethernet manager to 40672dc7614SVishwanathapura, Niranjana * inform it about changes to the VNIC config, behaviour etc. 40772dc7614SVishwanathapura, Niranjana * This is the format of the trap payload. 40872dc7614SVishwanathapura, Niranjana */ 40972dc7614SVishwanathapura, Niranjana struct opa_veswport_trap { 41072dc7614SVishwanathapura, Niranjana __be16 fabric_id; 41172dc7614SVishwanathapura, Niranjana __be16 veswid; 41272dc7614SVishwanathapura, Niranjana __be32 veswportnum; 41372dc7614SVishwanathapura, Niranjana __be16 opaportnum; 41472dc7614SVishwanathapura, Niranjana u8 veswportindex; 41572dc7614SVishwanathapura, Niranjana u8 opcode; 41672dc7614SVishwanathapura, Niranjana __be32 reserved; 41772dc7614SVishwanathapura, Niranjana } __packed; 41872dc7614SVishwanathapura, Niranjana 41972dc7614SVishwanathapura, Niranjana /** 42072dc7614SVishwanathapura, Niranjana * struct opa_vnic_iface_macs_entry - single entry in the mac list 42172dc7614SVishwanathapura, Niranjana * @mac_addr: MAC address 42272dc7614SVishwanathapura, Niranjana */ 42372dc7614SVishwanathapura, Niranjana struct opa_vnic_iface_mac_entry { 42472dc7614SVishwanathapura, Niranjana u8 mac_addr[ETH_ALEN]; 42572dc7614SVishwanathapura, Niranjana }; 42672dc7614SVishwanathapura, Niranjana 42772dc7614SVishwanathapura, Niranjana /** 42872dc7614SVishwanathapura, Niranjana * struct opa_veswport_iface_macs - Msg to set globally administered MAC 42972dc7614SVishwanathapura, Niranjana * @start_idx: position of first entry (0 based) 43072dc7614SVishwanathapura, Niranjana * @num_macs_in_msg: number of MACs in this message 43172dc7614SVishwanathapura, Niranjana * @tot_macs_in_lst: The total number of MACs the agent has 43272dc7614SVishwanathapura, Niranjana * @gen_count: gen_count to indicate change 43372dc7614SVishwanathapura, Niranjana * @entry: The mac list entry 43472dc7614SVishwanathapura, Niranjana * 43572dc7614SVishwanathapura, Niranjana * Same attribute IDS and attribute modifiers as in locally administered 43672dc7614SVishwanathapura, Niranjana * addresses used to set globally administered addresses 43772dc7614SVishwanathapura, Niranjana */ 43872dc7614SVishwanathapura, Niranjana struct opa_veswport_iface_macs { 43972dc7614SVishwanathapura, Niranjana __be16 start_idx; 44072dc7614SVishwanathapura, Niranjana __be16 num_macs_in_msg; 44172dc7614SVishwanathapura, Niranjana __be16 tot_macs_in_lst; 44272dc7614SVishwanathapura, Niranjana __be16 gen_count; 443*5b361328SGustavo A. R. Silva struct opa_vnic_iface_mac_entry entry[]; 44472dc7614SVishwanathapura, Niranjana } __packed; 44572dc7614SVishwanathapura, Niranjana 44672dc7614SVishwanathapura, Niranjana /** 44772dc7614SVishwanathapura, Niranjana * struct opa_vnic_vema_mad - Generic VEMA MAD 44872dc7614SVishwanathapura, Niranjana * @mad_hdr: Generic MAD header 44972dc7614SVishwanathapura, Niranjana * @rmpp_hdr: RMPP header for vendor specific MADs 45072dc7614SVishwanathapura, Niranjana * @oui: Unique org identifier 45172dc7614SVishwanathapura, Niranjana * @data: MAD data 45272dc7614SVishwanathapura, Niranjana */ 45372dc7614SVishwanathapura, Niranjana struct opa_vnic_vema_mad { 45472dc7614SVishwanathapura, Niranjana struct ib_mad_hdr mad_hdr; 45572dc7614SVishwanathapura, Niranjana struct ib_rmpp_hdr rmpp_hdr; 45672dc7614SVishwanathapura, Niranjana u8 reserved; 45772dc7614SVishwanathapura, Niranjana u8 oui[3]; 45872dc7614SVishwanathapura, Niranjana u8 data[OPA_VNIC_EMA_DATA]; 45972dc7614SVishwanathapura, Niranjana }; 46072dc7614SVishwanathapura, Niranjana 46172dc7614SVishwanathapura, Niranjana /** 46272dc7614SVishwanathapura, Niranjana * struct opa_vnic_notice_attr - Generic Notice MAD 46372dc7614SVishwanathapura, Niranjana * @gen_type: Generic/Specific bit and type of notice 46472dc7614SVishwanathapura, Niranjana * @oui_1: Vendor ID byte 1 46572dc7614SVishwanathapura, Niranjana * @oui_2: Vendor ID byte 2 46672dc7614SVishwanathapura, Niranjana * @oui_3: Vendor ID byte 3 46772dc7614SVishwanathapura, Niranjana * @trap_num: Trap number 46872dc7614SVishwanathapura, Niranjana * @toggle_count: Notice toggle bit and count value 46972dc7614SVishwanathapura, Niranjana * @issuer_lid: Trap issuer's lid 47072dc7614SVishwanathapura, Niranjana * @issuer_gid: Issuer GID (only if Report method) 47172dc7614SVishwanathapura, Niranjana * @raw_data: Trap message body 47272dc7614SVishwanathapura, Niranjana */ 47372dc7614SVishwanathapura, Niranjana struct opa_vnic_notice_attr { 47472dc7614SVishwanathapura, Niranjana u8 gen_type; 47572dc7614SVishwanathapura, Niranjana u8 oui_1; 47672dc7614SVishwanathapura, Niranjana u8 oui_2; 47772dc7614SVishwanathapura, Niranjana u8 oui_3; 47872dc7614SVishwanathapura, Niranjana __be16 trap_num; 47972dc7614SVishwanathapura, Niranjana __be16 toggle_count; 48072dc7614SVishwanathapura, Niranjana __be32 issuer_lid; 48172dc7614SVishwanathapura, Niranjana __be32 reserved; 48272dc7614SVishwanathapura, Niranjana u8 issuer_gid[16]; 48372dc7614SVishwanathapura, Niranjana u8 raw_data[64]; 48472dc7614SVishwanathapura, Niranjana } __packed; 48572dc7614SVishwanathapura, Niranjana 48672dc7614SVishwanathapura, Niranjana /** 48772dc7614SVishwanathapura, Niranjana * struct opa_vnic_vema_mad_trap - Generic VEMA MAD Trap 48872dc7614SVishwanathapura, Niranjana * @mad_hdr: Generic MAD header 48972dc7614SVishwanathapura, Niranjana * @rmpp_hdr: RMPP header for vendor specific MADs 49072dc7614SVishwanathapura, Niranjana * @oui: Unique org identifier 49172dc7614SVishwanathapura, Niranjana * @notice: Notice structure 49272dc7614SVishwanathapura, Niranjana */ 49372dc7614SVishwanathapura, Niranjana struct opa_vnic_vema_mad_trap { 49472dc7614SVishwanathapura, Niranjana struct ib_mad_hdr mad_hdr; 49572dc7614SVishwanathapura, Niranjana struct ib_rmpp_hdr rmpp_hdr; 49672dc7614SVishwanathapura, Niranjana u8 reserved; 49772dc7614SVishwanathapura, Niranjana u8 oui[3]; 49872dc7614SVishwanathapura, Niranjana struct opa_vnic_notice_attr notice; 49972dc7614SVishwanathapura, Niranjana }; 50072dc7614SVishwanathapura, Niranjana 5017d6f728cSVishwanathapura, Niranjana #endif /* _OPA_VNIC_ENCAP_H */ 502