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