1*14b24e2bSVaishali Kulkarni /* 2*14b24e2bSVaishali Kulkarni * CDDL HEADER START 3*14b24e2bSVaishali Kulkarni * 4*14b24e2bSVaishali Kulkarni * The contents of this file are subject to the terms of the 5*14b24e2bSVaishali Kulkarni * Common Development and Distribution License, v.1, (the "License"). 6*14b24e2bSVaishali Kulkarni * You may not use this file except in compliance with the License. 7*14b24e2bSVaishali Kulkarni * 8*14b24e2bSVaishali Kulkarni * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*14b24e2bSVaishali Kulkarni * or http://opensource.org/licenses/CDDL-1.0. 10*14b24e2bSVaishali Kulkarni * See the License for the specific language governing permissions 11*14b24e2bSVaishali Kulkarni * and limitations under the License. 12*14b24e2bSVaishali Kulkarni * 13*14b24e2bSVaishali Kulkarni * When distributing Covered Code, include this CDDL HEADER in each 14*14b24e2bSVaishali Kulkarni * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*14b24e2bSVaishali Kulkarni * If applicable, add the following below this CDDL HEADER, with the 16*14b24e2bSVaishali Kulkarni * fields enclosed by brackets "[]" replaced with your own identifying 17*14b24e2bSVaishali Kulkarni * information: Portions Copyright [yyyy] [name of copyright owner] 18*14b24e2bSVaishali Kulkarni * 19*14b24e2bSVaishali Kulkarni * CDDL HEADER END 20*14b24e2bSVaishali Kulkarni */ 21*14b24e2bSVaishali Kulkarni 22*14b24e2bSVaishali Kulkarni /* 23*14b24e2bSVaishali Kulkarni * Copyright 2014-2017 Cavium, Inc. 24*14b24e2bSVaishali Kulkarni * The contents of this file are subject to the terms of the Common Development 25*14b24e2bSVaishali Kulkarni * and Distribution License, v.1, (the "License"). 26*14b24e2bSVaishali Kulkarni 27*14b24e2bSVaishali Kulkarni * You may not use this file except in compliance with the License. 28*14b24e2bSVaishali Kulkarni 29*14b24e2bSVaishali Kulkarni * You can obtain a copy of the License at available 30*14b24e2bSVaishali Kulkarni * at http://opensource.org/licenses/CDDL-1.0 31*14b24e2bSVaishali Kulkarni 32*14b24e2bSVaishali Kulkarni * See the License for the specific language governing permissions and 33*14b24e2bSVaishali Kulkarni * limitations under the License. 34*14b24e2bSVaishali Kulkarni */ 35*14b24e2bSVaishali Kulkarni 36*14b24e2bSVaishali Kulkarni /**************************************************************************** 37*14b24e2bSVaishali Kulkarni * Copyright(c) 2009-2015 Broadcom Corporation, all rights reserved 38*14b24e2bSVaishali Kulkarni * Proprietary and Confidential Information. 39*14b24e2bSVaishali Kulkarni * 40*14b24e2bSVaishali Kulkarni * This source file is the property of Broadcom Corporation, and 41*14b24e2bSVaishali Kulkarni * may not be copied or distributed in any isomorphic form without 42*14b24e2bSVaishali Kulkarni * the prior written consent of Broadcom Corporation. 43*14b24e2bSVaishali Kulkarni * 44*14b24e2bSVaishali Kulkarni * Name: bdn.h 45*14b24e2bSVaishali Kulkarni * 46*14b24e2bSVaishali Kulkarni * Description: BDN definitions 47*14b24e2bSVaishali Kulkarni * 48*14b24e2bSVaishali Kulkarni * Author: Yaniv Rosner 49*14b24e2bSVaishali Kulkarni * 50*14b24e2bSVaishali Kulkarni ****************************************************************************/ 51*14b24e2bSVaishali Kulkarni 52*14b24e2bSVaishali Kulkarni #ifndef BDN_H 53*14b24e2bSVaishali Kulkarni #define BDN_H 54*14b24e2bSVaishali Kulkarni 55*14b24e2bSVaishali Kulkarni #if 0 56*14b24e2bSVaishali Kulkarni typedef u32 bdn_cfg; 57*14b24e2bSVaishali Kulkarni #define BDN_CFG_SIZE_MASK 0x0000ffff 58*14b24e2bSVaishali Kulkarni #define BDN_CFG_SIZE_OFFSET 0 59*14b24e2bSVaishali Kulkarni #define BDN_CFG_STATE_MASK 0x00ff0000 60*14b24e2bSVaishali Kulkarni #define BDN_CFG_STATE_OFFSET 16 61*14b24e2bSVaishali Kulkarni #define BDN_CFG_STATE_ACTIVE 0x00010000 62*14b24e2bSVaishali Kulkarni #define BDN_CFG_STATE_PENDING 0x00020000 63*14b24e2bSVaishali Kulkarni #define BDN_CFG_STATE_DEFAULT 0x00040000 64*14b24e2bSVaishali Kulkarni 65*14b24e2bSVaishali Kulkarni #define SERVER_DESCRIPTION_MAX_LENGTH 64 66*14b24e2bSVaishali Kulkarni struct server_descrip { 67*14b24e2bSVaishali Kulkarni u8 len; 68*14b24e2bSVaishali Kulkarni u8 str[SERVER_DESCRIPTION_MAX_LENGTH]; 69*14b24e2bSVaishali Kulkarni }; 70*14b24e2bSVaishali Kulkarni 71*14b24e2bSVaishali Kulkarni #define SERVER_UUID_LENGTH 36 72*14b24e2bSVaishali Kulkarni struct server_uuid { 73*14b24e2bSVaishali Kulkarni u8 len; 74*14b24e2bSVaishali Kulkarni u8 str[SERVER_UUID_LENGTH]; 75*14b24e2bSVaishali Kulkarni }; 76*14b24e2bSVaishali Kulkarni 77*14b24e2bSVaishali Kulkarni #define GENERALIZED_TIME_MAX_SIZE 16 /* YYYYMMDDhhmmss.s */ 78*14b24e2bSVaishali Kulkarni struct generalized_time { 79*14b24e2bSVaishali Kulkarni u8 len; 80*14b24e2bSVaishali Kulkarni u8 time_str[GENERALIZED_TIME_MAX_SIZE]; 81*14b24e2bSVaishali Kulkarni }; 82*14b24e2bSVaishali Kulkarni #define CONNECTION_ID_LENGTH 16 83*14b24e2bSVaishali Kulkarni 84*14b24e2bSVaishali Kulkarni #define SLOT_TYPE_NUM_MAX_LENGTH 32 85*14b24e2bSVaishali Kulkarni struct slot_type_num { 86*14b24e2bSVaishali Kulkarni u8 len; 87*14b24e2bSVaishali Kulkarni u8 str[SLOT_TYPE_NUM_MAX_LENGTH]; 88*14b24e2bSVaishali Kulkarni }; 89*14b24e2bSVaishali Kulkarni 90*14b24e2bSVaishali Kulkarni #define ILO_MGMT_MAX_NUM_OF_ADDR 3 91*14b24e2bSVaishali Kulkarni #define ILO_MGMT_ADDR_MAX_LENGTH 16 92*14b24e2bSVaishali Kulkarni struct iLO_mgmt_addr { 93*14b24e2bSVaishali Kulkarni u8 num_of_add; 94*14b24e2bSVaishali Kulkarni u8 len_of_add[ILO_MGMT_MAX_NUM_OF_ADDR]; 95*14b24e2bSVaishali Kulkarni u8 str[ILO_MGMT_MAX_NUM_OF_ADDR][ILO_MGMT_ADDR_MAX_LENGTH]; 96*14b24e2bSVaishali Kulkarni }; 97*14b24e2bSVaishali Kulkarni 98*14b24e2bSVaishali Kulkarni #define ENCLOSURE_ID_LENGTH 36 99*14b24e2bSVaishali Kulkarni struct enclosure_id { 100*14b24e2bSVaishali Kulkarni u8 len; 101*14b24e2bSVaishali Kulkarni u8 str[ENCLOSURE_ID_LENGTH]; 102*14b24e2bSVaishali Kulkarni u8 res[3]; 103*14b24e2bSVaishali Kulkarni }; 104*14b24e2bSVaishali Kulkarni 105*14b24e2bSVaishali Kulkarni struct base_dev_next_os { 106*14b24e2bSVaishali Kulkarni u8 reset_2_factory; 107*14b24e2bSVaishali Kulkarni u8 res[3]; 108*14b24e2bSVaishali Kulkarni }; 109*14b24e2bSVaishali Kulkarni 110*14b24e2bSVaishali Kulkarni struct base_dev_now { 111*14b24e2bSVaishali Kulkarni u8 one_view_config; 112*14b24e2bSVaishali Kulkarni u8 res[3]; 113*14b24e2bSVaishali Kulkarni }; 114*14b24e2bSVaishali Kulkarni 115*14b24e2bSVaishali Kulkarni struct base_dev { 116*14b24e2bSVaishali Kulkarni struct base_dev_now now; 117*14b24e2bSVaishali Kulkarni struct base_dev_next_os next_os; 118*14b24e2bSVaishali Kulkarni }; 119*14b24e2bSVaishali Kulkarni 120*14b24e2bSVaishali Kulkarni struct server_info { 121*14b24e2bSVaishali Kulkarni u8 optional_bitmap; 122*14b24e2bSVaishali Kulkarni #define SERVER_INFO_ILO_MGMT_VLAN_PRESENT (1<<0) 123*14b24e2bSVaishali Kulkarni #define SERVER_INFO_DATA_TIMESTAMP_PRESENT (1<<1) 124*14b24e2bSVaishali Kulkarni #define SERVER_INFO_ENCLOSURE_ID_PRESENT (1<<2) 125*14b24e2bSVaishali Kulkarni struct server_descrip server_descrip; 126*14b24e2bSVaishali Kulkarni struct server_uuid server_uuid; 127*14b24e2bSVaishali Kulkarni struct slot_type_num slot_type_num; 128*14b24e2bSVaishali Kulkarni struct iLO_mgmt_addr iLO_mgmt_addr; 129*14b24e2bSVaishali Kulkarni u16 iLO_mgmt_vlan; 130*14b24e2bSVaishali Kulkarni struct generalized_time data_timestamp; 131*14b24e2bSVaishali Kulkarni }; 132*14b24e2bSVaishali Kulkarni 133*14b24e2bSVaishali Kulkarni struct Codec_Info { 134*14b24e2bSVaishali Kulkarni u32 version; /* Version of Codec */ 135*14b24e2bSVaishali Kulkarni 136*14b24e2bSVaishali Kulkarni enum codec_location { 137*14b24e2bSVaishali Kulkarni e_None = 0, 138*14b24e2bSVaishali Kulkarni e_Here = 1, 139*14b24e2bSVaishali Kulkarni e_FRU_EEPROM = 2 140*14b24e2bSVaishali Kulkarni } loc; /* DEFAULT e-None */ 141*14b24e2bSVaishali Kulkarni u16 total_size; /* total size of Codec in bytes.Max size 32K (64K?)*/ 142*14b24e2bSVaishali Kulkarni u16 num_msg_segments; /* number of segments = total size / max message payload size */ 143*14b24e2bSVaishali Kulkarni }; 144*14b24e2bSVaishali Kulkarni 145*14b24e2bSVaishali Kulkarni #define MAX_CODEC_SIZE 0x8000 146*14b24e2bSVaishali Kulkarni #define CODEC_SEGMENT_SIZE 0x400 147*14b24e2bSVaishali Kulkarni #define NUMBER_OF_SEGMENTS (MAX_CODEC_SIZE/CODEC_SEGMENT_SIZE) 148*14b24e2bSVaishali Kulkarni struct codec_t { 149*14b24e2bSVaishali Kulkarni u8 data[NUMBER_OF_SEGMENTS][CODEC_SEGMENT_SIZE]; 150*14b24e2bSVaishali Kulkarni }; 151*14b24e2bSVaishali Kulkarni 152*14b24e2bSVaishali Kulkarni struct bdn_netport_now { 153*14b24e2bSVaishali Kulkarni bdn_cfg hdr; 154*14b24e2bSVaishali Kulkarni u8 enable_port; 155*14b24e2bSVaishali Kulkarni u8 enable_diag; 156*14b24e2bSVaishali Kulkarni u8 num_pfs_min_bw; 157*14b24e2bSVaishali Kulkarni u8 num_pfs_max_bw; 158*14b24e2bSVaishali Kulkarni u8 min_bw[MCP_GLOB_FUNC_MAX]; 159*14b24e2bSVaishali Kulkarni u8 max_bw[MCP_GLOB_FUNC_MAX]; 160*14b24e2bSVaishali Kulkarni }; 161*14b24e2bSVaishali Kulkarni 162*14b24e2bSVaishali Kulkarni struct bdn_netport_on_port_reset { 163*14b24e2bSVaishali Kulkarni bdn_cfg hdr; 164*14b24e2bSVaishali Kulkarni u32 link_config; 165*14b24e2bSVaishali Kulkarni /* Same definitions as in PORT_HW_CFG_SPEED_CAPABILITY_D3_MASK */ 166*14b24e2bSVaishali Kulkarni #define BDN_LINK_CONFIG_ADVERTISED_SPEED_MASK 0x0000ffff 167*14b24e2bSVaishali Kulkarni #define BDN_LINK_CONFIG_ADVERTISED_SPEED_SHIFT 0 168*14b24e2bSVaishali Kulkarni /* Same definitions as PORT_FEATURE_FLOW_CONTROL_MASK */ 169*14b24e2bSVaishali Kulkarni #define BDN_LINK_CONFIG_FLOW_CONTROL_MASK 0x00070000 170*14b24e2bSVaishali Kulkarni #define BDN_LINK_CONFIG_FLOW_CONTROL_SHIFT 16 171*14b24e2bSVaishali Kulkarni 172*14b24e2bSVaishali Kulkarni #define BDN_LINK_CONFIG_PFC_ENABLED_MASK 0x00080000 173*14b24e2bSVaishali Kulkarni #define BDN_LINK_CONFIG_PFC_ENABLED_SHIFT 19 174*14b24e2bSVaishali Kulkarni 175*14b24e2bSVaishali Kulkarni #define BDN_LINK_CONFIG_EEE_ENABLED_MASK 0x00100000 176*14b24e2bSVaishali Kulkarni #define BDN_LINK_CONFIG_EEE_ENABLED_SHIFT 20 177*14b24e2bSVaishali Kulkarni }; 178*14b24e2bSVaishali Kulkarni 179*14b24e2bSVaishali Kulkarni struct bdn_netport_next_os_boot { 180*14b24e2bSVaishali Kulkarni bdn_cfg hdr; 181*14b24e2bSVaishali Kulkarni u8 num_pfs; 182*14b24e2bSVaishali Kulkarni u8 num_vf_per_pf[MCP_GLOB_FUNC_MAX]; 183*14b24e2bSVaishali Kulkarni }; 184*14b24e2bSVaishali Kulkarni 185*14b24e2bSVaishali Kulkarni struct bdn_netport_diag_ctrl { 186*14b24e2bSVaishali Kulkarni bdn_cfg hdr; 187*14b24e2bSVaishali Kulkarni u8 port_reset; 188*14b24e2bSVaishali Kulkarni u8 local_loopback; 189*14b24e2bSVaishali Kulkarni u8 remote_loopback; 190*14b24e2bSVaishali Kulkarni u8 rsrv[1]; 191*14b24e2bSVaishali Kulkarni }; 192*14b24e2bSVaishali Kulkarni 193*14b24e2bSVaishali Kulkarni struct bdn_netport { 194*14b24e2bSVaishali Kulkarni struct bdn_netport_now now; 195*14b24e2bSVaishali Kulkarni struct bdn_netport_on_port_reset on_port_reset; /* On Port Reset */ 196*14b24e2bSVaishali Kulkarni struct bdn_netport_next_os_boot next_os_boot; /* Next OS Boot */ 197*14b24e2bSVaishali Kulkarni struct bdn_netport_diag_ctrl diag_ctrl; 198*14b24e2bSVaishali Kulkarni }; 199*14b24e2bSVaishali Kulkarni 200*14b24e2bSVaishali Kulkarni #define CONNECTION_ID_LEN 16 201*14b24e2bSVaishali Kulkarni struct bdn_flexfunc_now { 202*14b24e2bSVaishali Kulkarni bdn_cfg hdr; 203*14b24e2bSVaishali Kulkarni u8 connection_id[CONNECTION_ID_LEN]; 204*14b24e2bSVaishali Kulkarni u8 fnic_enabled; 205*14b24e2bSVaishali Kulkarni u8 rsrv[3]; 206*14b24e2bSVaishali Kulkarni }; 207*14b24e2bSVaishali Kulkarni 208*14b24e2bSVaishali Kulkarni struct bdn_flexfunc_next_os_boot { 209*14b24e2bSVaishali Kulkarni bdn_cfg hdr; 210*14b24e2bSVaishali Kulkarni u32 optional_bitmap; 211*14b24e2bSVaishali Kulkarni #define FLEXFUNC_CFG_NEXT_OS_C2S_PCP_MAP_PRESENT (1<<0) 212*14b24e2bSVaishali Kulkarni #define FLEXFUNC_CFG_NEXT_OS_PORT_ASSIGNMENT_PRESENT (1<<1) 213*14b24e2bSVaishali Kulkarni #define FLEXFUNC_CFG_NEXT_OS_EMB_LAG_PRESENT (1<<2) 214*14b24e2bSVaishali Kulkarni u8 mac_addr[6]; 215*14b24e2bSVaishali Kulkarni u8 func_type; 216*14b24e2bSVaishali Kulkarni u8 boot_mode; 217*14b24e2bSVaishali Kulkarni u8 c_2_s_pcp_map[9]; /* Maps O/S C-VLAN PCP value to S-VLAN PCP value for TX 218*14b24e2bSVaishali Kulkarni * -- items 1-8 correspond to the O/S C-VLAN PCP values 0-7 219*14b24e2bSVaishali Kulkarni * -- item 9 is the default if no C-VLAN present 220*14b24e2bSVaishali Kulkarni * -- Values in these 9 bytes are the expected S-PCP values. 221*14b24e2bSVaishali Kulkarni * -- If NetDev-Device-Module: EVB-Support.c-2-s-pcp-map = FALSE, then 222*14b24e2bSVaishali Kulkarni * -- all values must be identical 223*14b24e2bSVaishali Kulkarni * -- else, it supports C-PCP -> S-PCP mapping 224*14b24e2bSVaishali Kulkarni */ 225*14b24e2bSVaishali Kulkarni u16 mtu_size; 226*14b24e2bSVaishali Kulkarni u8 rsrv[1]; 227*14b24e2bSVaishali Kulkarni }; 228*14b24e2bSVaishali Kulkarni 229*14b24e2bSVaishali Kulkarni struct bdn_flex_func_diag_ctrl { 230*14b24e2bSVaishali Kulkarni bdn_cfg hdr; 231*14b24e2bSVaishali Kulkarni u8 enable_wol; 232*14b24e2bSVaishali Kulkarni u8 rsrv[3]; 233*14b24e2bSVaishali Kulkarni }; 234*14b24e2bSVaishali Kulkarni 235*14b24e2bSVaishali Kulkarni struct bdn_flex_func { 236*14b24e2bSVaishali Kulkarni struct bdn_flexfunc_now now; 237*14b24e2bSVaishali Kulkarni struct bdn_flexfunc_next_os_boot next_os_boot; /* Next OS Boot */ 238*14b24e2bSVaishali Kulkarni struct bdn_flex_func_diag_ctrl diag_ctrl; 239*14b24e2bSVaishali Kulkarni }; 240*14b24e2bSVaishali Kulkarni 241*14b24e2bSVaishali Kulkarni #define FC_NPIV_WWPN_SIZE 8 242*14b24e2bSVaishali Kulkarni #define FC_NPIV_WWNN_SIZE 8 243*14b24e2bSVaishali Kulkarni struct bdn_npiv_settings { 244*14b24e2bSVaishali Kulkarni u8 npiv_wwpn[FC_NPIV_WWPN_SIZE]; 245*14b24e2bSVaishali Kulkarni u8 npiv_wwnn[FC_NPIV_WWNN_SIZE]; 246*14b24e2bSVaishali Kulkarni }; 247*14b24e2bSVaishali Kulkarni 248*14b24e2bSVaishali Kulkarni struct bdn_fc_npiv_cfg { 249*14b24e2bSVaishali Kulkarni /* hdr used internally by the MFW */ 250*14b24e2bSVaishali Kulkarni u32 hdr; 251*14b24e2bSVaishali Kulkarni u32 num_of_npiv; 252*14b24e2bSVaishali Kulkarni }; 253*14b24e2bSVaishali Kulkarni 254*14b24e2bSVaishali Kulkarni #define MAX_NUMBER_NPIV 64 255*14b24e2bSVaishali Kulkarni struct bdn_fc_npiv_tbl { 256*14b24e2bSVaishali Kulkarni struct bdn_fc_npiv_cfg fc_npiv_cfg; 257*14b24e2bSVaishali Kulkarni struct bdn_npiv_settings settings[MAX_NUMBER_NPIV]; 258*14b24e2bSVaishali Kulkarni }; 259*14b24e2bSVaishali Kulkarni 260*14b24e2bSVaishali Kulkarni 261*14b24e2bSVaishali Kulkarni struct bdn_fc_npiv { 262*14b24e2bSVaishali Kulkarni struct bdn_fc_npiv_tbl now; /* Next device level reset */ 263*14b24e2bSVaishali Kulkarni }; 264*14b24e2bSVaishali Kulkarni 265*14b24e2bSVaishali Kulkarni struct bdn_iscsi_initiator_cfg { 266*14b24e2bSVaishali Kulkarni u32 optional_bitmap; 267*14b24e2bSVaishali Kulkarni #define ISCSI_INITIATOR_ROUTE_PRESENT (1<<0) 268*14b24e2bSVaishali Kulkarni #define ISCSI_INITIATOR_PRIMARY_DNS_PRESENT (1<<1) 269*14b24e2bSVaishali Kulkarni #define ISCSI_INITIATOR_SECONDARY_DNS_PRESENT (1<<2) 270*14b24e2bSVaishali Kulkarni u8 name[232]; 271*14b24e2bSVaishali Kulkarni u8 ip_add[16]; 272*14b24e2bSVaishali Kulkarni u8 netmask[16]; 273*14b24e2bSVaishali Kulkarni u8 route[16]; 274*14b24e2bSVaishali Kulkarni u8 primary_dns[16]; 275*14b24e2bSVaishali Kulkarni u8 secondary_dns[16]; 276*14b24e2bSVaishali Kulkarni }; 277*14b24e2bSVaishali Kulkarni 278*14b24e2bSVaishali Kulkarni struct bdn_iscsi_target_params { 279*14b24e2bSVaishali Kulkarni u32 optional_bitmap; 280*14b24e2bSVaishali Kulkarni #define ISCSI_TARGET_LLMNR_ENABLE_PRESENT (1<<0) 281*14b24e2bSVaishali Kulkarni #define ISCSI_TARGET_ROUTE_ADV_ENABLE_PRESENT (1<<1) 282*14b24e2bSVaishali Kulkarni #define ISCSI_TARGET_IPV2_PRESENT (1<<2) 283*14b24e2bSVaishali Kulkarni u8 name[232]; 284*14b24e2bSVaishali Kulkarni u32 lun; 285*14b24e2bSVaishali Kulkarni u8 ip_addr[16]; 286*14b24e2bSVaishali Kulkarni u32 tcp_port; 287*14b24e2bSVaishali Kulkarni u8 ip_addr_2[16]; 288*14b24e2bSVaishali Kulkarni u32 tcp_port_2; 289*14b24e2bSVaishali Kulkarni u32 llmnr_en; 290*14b24e2bSVaishali Kulkarni u32 route_adv_en; 291*14b24e2bSVaishali Kulkarni }; 292*14b24e2bSVaishali Kulkarni 293*14b24e2bSVaishali Kulkarni struct bdn_iscsi_authentication { 294*14b24e2bSVaishali Kulkarni u32 optional_bitmap; 295*14b24e2bSVaishali Kulkarni #define ISCSI_AUTH_CHAP_USERNAME_PRESENT (1<<0) 296*14b24e2bSVaishali Kulkarni #define ISCSI_AUTH_CHAP_SECRET_PRESENT (1<<1) 297*14b24e2bSVaishali Kulkarni #define ISCSI_AUTH_MUTUAL_USERNAME_PRESENT (1<<2) 298*14b24e2bSVaishali Kulkarni #define ISCSI_AUTH_MUTUAL_SECRET_PRESENT (1<<3) 299*14b24e2bSVaishali Kulkarni u32 auth_meth; 300*14b24e2bSVaishali Kulkarni u8 username[232]; 301*14b24e2bSVaishali Kulkarni u8 secret[16]; 302*14b24e2bSVaishali Kulkarni u32 secret_len; 303*14b24e2bSVaishali Kulkarni u8 mutual_username[232]; 304*14b24e2bSVaishali Kulkarni u8 mutual_secret[16]; 305*14b24e2bSVaishali Kulkarni u32 mutual_secret_len; 306*14b24e2bSVaishali Kulkarni }; 307*14b24e2bSVaishali Kulkarni 308*14b24e2bSVaishali Kulkarni struct bdn_iscsi_boot_cfg { 309*14b24e2bSVaishali Kulkarni u32 optional_bitmap; 310*14b24e2bSVaishali Kulkarni #define ISCSI_CFG_CVID_PRESENT (1<<0) 311*14b24e2bSVaishali Kulkarni #define ISCSI_CFG_DNS_VIA_DHCP_PRESENT (1<<1) 312*14b24e2bSVaishali Kulkarni #define ISCSI_CFG_TARGET_INFO_DHCP_PRESENT (1<<2) 313*14b24e2bSVaishali Kulkarni #define ISCSI_CFG_INITIATOR_PRESENT (1<<3) 314*14b24e2bSVaishali Kulkarni #define ISCSI_CFG_TARGET_PRESENT (1<<4) 315*14b24e2bSVaishali Kulkarni #define ISCSI_CFG_DHCP_VENDOR_ID_PRESENT (1<<5) 316*14b24e2bSVaishali Kulkarni #define ISCSI_CFG_AUTH_PRESENT (1<<6) 317*14b24e2bSVaishali Kulkarni #define ISCSI_AUTH_HEADER_DIGEST_FLAG_PRESENT (1<<7) 318*14b24e2bSVaishali Kulkarni #define ISCSI_AUTH_DATA_DIGEST_FLAG_PRESENT (1<<8) 319*14b24e2bSVaishali Kulkarni bdn_cfg hdr; 320*14b24e2bSVaishali Kulkarni u32 cvid; 321*14b24e2bSVaishali Kulkarni u32 ip_add_type; 322*14b24e2bSVaishali Kulkarni u32 dns_via_dhcp; 323*14b24e2bSVaishali Kulkarni u32 target_via_dhcp; 324*14b24e2bSVaishali Kulkarni u8 dhcp_vendor_id[32]; 325*14b24e2bSVaishali Kulkarni u32 head_digest_flag_en; 326*14b24e2bSVaishali Kulkarni u32 data_digest_flag_en; 327*14b24e2bSVaishali Kulkarni }; 328*14b24e2bSVaishali Kulkarni 329*14b24e2bSVaishali Kulkarni struct bdn_iscsi_boot_next_dlr { 330*14b24e2bSVaishali Kulkarni struct bdn_iscsi_boot_cfg cfg; /* Next device level reset */ 331*14b24e2bSVaishali Kulkarni struct bdn_iscsi_initiator_cfg initiator_cfg; 332*14b24e2bSVaishali Kulkarni struct bdn_iscsi_target_params target_params; 333*14b24e2bSVaishali Kulkarni struct bdn_iscsi_authentication authentication; 334*14b24e2bSVaishali Kulkarni }; 335*14b24e2bSVaishali Kulkarni 336*14b24e2bSVaishali Kulkarni struct bdn_iscsi_boot { 337*14b24e2bSVaishali Kulkarni struct bdn_iscsi_boot_next_dlr next_dlr; /* Next device level reset */ 338*14b24e2bSVaishali Kulkarni }; 339*14b24e2bSVaishali Kulkarni 340*14b24e2bSVaishali Kulkarni #define FCOE_TARGETS_WWPN_SIZE 8 341*14b24e2bSVaishali Kulkarni #define FCOE_TARGETS_LUN_SIZE 8 342*14b24e2bSVaishali Kulkarni 343*14b24e2bSVaishali Kulkarni struct bdn_fcoe_targets { 344*14b24e2bSVaishali Kulkarni u8 wwpn[FCOE_TARGETS_WWPN_SIZE]; 345*14b24e2bSVaishali Kulkarni u8 lun_id[FCOE_TARGETS_LUN_SIZE]; 346*14b24e2bSVaishali Kulkarni }; 347*14b24e2bSVaishali Kulkarni 348*14b24e2bSVaishali Kulkarni struct bdn_fcoe_boot_cfg { 349*14b24e2bSVaishali Kulkarni u32 optional_bitmap; 350*14b24e2bSVaishali Kulkarni #define FCOE_CFG_CVID_PRESENT (1<<0) 351*14b24e2bSVaishali Kulkarni #define FCOE_BASE_WWNN_PRESENT (1<<1) 352*14b24e2bSVaishali Kulkarni #define FCOE_WWPN_PRESENT (1<<2) 353*14b24e2bSVaishali Kulkarni bdn_cfg hdr; 354*14b24e2bSVaishali Kulkarni u32 cvid; 355*14b24e2bSVaishali Kulkarni u8 base_wwnn[FCOE_TARGETS_WWPN_SIZE]; /* Host World wide name*/ 356*14b24e2bSVaishali Kulkarni u8 wwpn[FCOE_TARGETS_WWPN_SIZE]; /* base wwpn */ 357*14b24e2bSVaishali Kulkarni u32 num_of_fcoe_targets; 358*14b24e2bSVaishali Kulkarni }; 359*14b24e2bSVaishali Kulkarni 360*14b24e2bSVaishali Kulkarni struct bdn_fcoe_boot_next_dlr { 361*14b24e2bSVaishali Kulkarni struct bdn_fcoe_boot_cfg cfg; /* Next device level reset */ 362*14b24e2bSVaishali Kulkarni struct bdn_fcoe_targets fcoe_targets[8]; 363*14b24e2bSVaishali Kulkarni }; 364*14b24e2bSVaishali Kulkarni 365*14b24e2bSVaishali Kulkarni struct bdn_fcoe_boot { 366*14b24e2bSVaishali Kulkarni struct bdn_fcoe_boot_next_dlr next_dlr; /* Next device level reset */ 367*14b24e2bSVaishali Kulkarni }; 368*14b24e2bSVaishali Kulkarni #ifndef PF_NUM_MAX 369*14b24e2bSVaishali Kulkarni #define PF_NUM_MAX 8 370*14b24e2bSVaishali Kulkarni #endif 371*14b24e2bSVaishali Kulkarni struct bdn_ncsi_next_dlr { 372*14b24e2bSVaishali Kulkarni bdn_cfg hdr; 373*14b24e2bSVaishali Kulkarni u32 ncsi_scid; 374*14b24e2bSVaishali Kulkarni }; 375*14b24e2bSVaishali Kulkarni 376*14b24e2bSVaishali Kulkarni struct bdn_ncsi { 377*14b24e2bSVaishali Kulkarni struct bdn_ncsi_next_dlr bdn_ncsi_next_dlr; 378*14b24e2bSVaishali Kulkarni }; 379*14b24e2bSVaishali Kulkarni 380*14b24e2bSVaishali Kulkarni // Rapid-Response-Poll-Module definition 381*14b24e2bSVaishali Kulkarni #define MAX_CCT_SIZE 64 382*14b24e2bSVaishali Kulkarni #define VALID_RPP_SIGNATURE 0x69616853 383*14b24e2bSVaishali Kulkarni struct rpp_sum_stc { 384*14b24e2bSVaishali Kulkarni u32 hash; 385*14b24e2bSVaishali Kulkarni u32 num; 386*14b24e2bSVaishali Kulkarni }; 387*14b24e2bSVaishali Kulkarni 388*14b24e2bSVaishali Kulkarni struct digest_stc { 389*14b24e2bSVaishali Kulkarni u8 type; 390*14b24e2bSVaishali Kulkarni u8 inst; 391*14b24e2bSVaishali Kulkarni u16 digest; 392*14b24e2bSVaishali Kulkarni }; 393*14b24e2bSVaishali Kulkarni 394*14b24e2bSVaishali Kulkarni struct bdn_rapid_respon_stc { 395*14b24e2bSVaishali Kulkarni u32 sig; 396*14b24e2bSVaishali Kulkarni struct rpp_sum_stc rpp_sum; 397*14b24e2bSVaishali Kulkarni u8 num_of_cct; 398*14b24e2bSVaishali Kulkarni u8 res[3]; 399*14b24e2bSVaishali Kulkarni struct digest_stc cct[MAX_CCT_SIZE]; 400*14b24e2bSVaishali Kulkarni #ifdef CONFIG_SUPPORT_SCI 401*14b24e2bSVaishali Kulkarni struct digest_stc sci[MAX_CCT_SIZE]; 402*14b24e2bSVaishali Kulkarni #endif 403*14b24e2bSVaishali Kulkarni }; 404*14b24e2bSVaishali Kulkarni 405*14b24e2bSVaishali Kulkarni struct bdn { 406*14b24e2bSVaishali Kulkarni u32 size; 407*14b24e2bSVaishali Kulkarni struct base_dev base_dev; 408*14b24e2bSVaishali Kulkarni struct server_info server_info; 409*14b24e2bSVaishali Kulkarni struct bdn_netport netport[MCP_GLOB_PORT_MAX * MCP_GLOB_PATH_MAX]; 410*14b24e2bSVaishali Kulkarni struct bdn_flex_func flexfunc[PF_NUM_MAX]; 411*14b24e2bSVaishali Kulkarni struct bdn_fc_npiv fc_npiv[MCP_GLOB_PORT_MAX * MCP_GLOB_PATH_MAX]; 412*14b24e2bSVaishali Kulkarni struct bdn_iscsi_boot iscsi_boot[MCP_GLOB_PORT_MAX * MCP_GLOB_PATH_MAX]; 413*14b24e2bSVaishali Kulkarni struct bdn_fcoe_boot fcoe_boot[MCP_GLOB_PORT_MAX * MCP_GLOB_PATH_MAX]; 414*14b24e2bSVaishali Kulkarni struct bdn_ncsi ncsi; 415*14b24e2bSVaishali Kulkarni struct bdn_rapid_respon_stc rpp_stc; 416*14b24e2bSVaishali Kulkarni struct enclosure_id serv_info_enc_id; 417*14b24e2bSVaishali Kulkarni u32 crc; 418*14b24e2bSVaishali Kulkarni }; 419*14b24e2bSVaishali Kulkarni 420*14b24e2bSVaishali Kulkarni union bdn_image { 421*14b24e2bSVaishali Kulkarni struct bdn bdn; 422*14b24e2bSVaishali Kulkarni u8 rsrv[0x9000]; 423*14b24e2bSVaishali Kulkarni }; 424*14b24e2bSVaishali Kulkarni 425*14b24e2bSVaishali Kulkarni /* Expected BDN size is basically the offset of rsrv within the bdn structure */ 426*14b24e2bSVaishali Kulkarni #define BDN_SIZE (sizeof(struct bdn)) 427*14b24e2bSVaishali Kulkarni #define BDN_SERVER_INFO() (ASN1_P->bdn_addr + OFFSETOF(struct bdn, server_info)) 428*14b24e2bSVaishali Kulkarni #define BDN_BASE_DEV_NEXT_OS() (ASN1_P->bdn_addr + OFFSETOF(struct bdn, base_dev.next_os)) 429*14b24e2bSVaishali Kulkarni #define BDN_BASE_DEV_NOW() (ASN1_P->bdn_addr + OFFSETOF(struct bdn, base_dev.now)) 430*14b24e2bSVaishali Kulkarni /* #define BDN_CODEC_INFO() (ASN1_P->bdn_addr + OFFSETOF(struct bdn, codec_info)) */ 431*14b24e2bSVaishali Kulkarni /* #define BDN_CODEC_DATA() (ASN1_P->bdn_addr + OFFSETOF(struct bdn, codec)) */ 432*14b24e2bSVaishali Kulkarni #define BDN_NETPORT_NOW(papo) (ASN1_P->bdn_addr + OFFSETOF(struct bdn, netport[(papo.path << 1) + papo.port].now)) 433*14b24e2bSVaishali Kulkarni #define BDN_NETPORT_ON_PORT_RESET(papo) (ASN1_P->bdn_addr + OFFSETOF(struct bdn, netport[(papo.path << 1) + papo.port].on_port_reset)) 434*14b24e2bSVaishali Kulkarni #define BDN_NETPORT_NEXT_OS_BOOT(papo) (ASN1_P->bdn_addr + OFFSETOF(struct bdn, netport[(papo.path << 1) + papo.port].next_os_boot)) 435*14b24e2bSVaishali Kulkarni #define BDN_NETPORT_DIAG_CTRL(papo) (ASN1_P->bdn_addr + OFFSETOF(struct bdn, netport[(papo.path << 1) + papo.port].diag_ctrl)) 436*14b24e2bSVaishali Kulkarni #define BDN_FLEXFUNC_NOW(pf_num) (ASN1_P->bdn_addr + OFFSETOF(struct bdn, flexfunc[pf_num].now)) 437*14b24e2bSVaishali Kulkarni #define BDN_FLEXFUNC_NEXT_OS_BOOT(pf_num) (ASN1_P->bdn_addr + OFFSETOF(struct bdn, flexfunc[pf_num].next_os_boot)) 438*14b24e2bSVaishali Kulkarni #define BDN_FLEXFUNC_DIAG_CTRL(pf_num) (ASN1_P->bdn_addr + OFFSETOF(struct bdn, flexfunc[pf_num].diag_ctrl)) 439*14b24e2bSVaishali Kulkarni #define BDN_FC_NPIV_NOW(papo) (ASN1_P->bdn_addr + OFFSETOF(struct bdn, fc_npiv[(papo.path << 1) + papo.port].now)) 440*14b24e2bSVaishali Kulkarni #define BDN_FC_NPIV_NOW_CFG(papo) (ASN1_P->bdn_addr + OFFSETOF(struct bdn, fc_npiv[(papo.path << 1) + papo.port].now.fc_npiv_cfg)) 441*14b24e2bSVaishali Kulkarni #define BDN_FC_NPIV_NOW_SETTINGS(papo, idx) (ASN1_P->bdn_addr + OFFSETOF(struct bdn, fc_npiv[(papo.path << 1) + papo.port].now.settings[idx])) 442*14b24e2bSVaishali Kulkarni #define BDN_ISCSI_BOOT_NEXT_DLR_CFG(papo) (ASN1_P->bdn_addr + OFFSETOF(struct bdn, iscsi_boot[(papo.path << 1) + papo.port].next_dlr.cfg)) 443*14b24e2bSVaishali Kulkarni #define BDN_ISCSI_BOOT_NEXT_DLR_INITIATOR(papo) (ASN1_P->bdn_addr + OFFSETOF(struct bdn, iscsi_boot[(papo.path << 1) + papo.port].next_dlr.initiator_cfg)) 444*14b24e2bSVaishali Kulkarni #define BDN_ISCSI_BOOT_NEXT_DLR_TARGET(papo) (ASN1_P->bdn_addr + OFFSETOF(struct bdn, iscsi_boot[(papo.path << 1) + papo.port].next_dlr.target_params)) 445*14b24e2bSVaishali Kulkarni #define BDN_ISCSI_BOOT_NEXT_DLR_AUTHENTICATION(papo) (ASN1_P->bdn_addr + OFFSETOF(struct bdn, iscsi_boot[(papo.path << 1) + papo.port].next_dlr.authentication)) 446*14b24e2bSVaishali Kulkarni #define BDN_FCOE_BOOT_NEXT_DLR_CFG(papo) (ASN1_P->bdn_addr + OFFSETOF(struct bdn, fcoe_boot[(papo.path << 1) + papo.port].next_dlr.cfg)) 447*14b24e2bSVaishali Kulkarni #define BDN_FCOE_BOOT_NEXT_DLR_TARGET(papo, idx) (ASN1_P->bdn_addr + OFFSETOF(struct bdn, fcoe_boot[(papo.path << 1) + papo.port].next_dlr.fcoe_targets[idx])) 448*14b24e2bSVaishali Kulkarni #define BDN_NCSI_NEXT_DLR() (ASN1_P->bdn_addr + OFFSETOF(struct bdn, ncsi.bdn_ncsi_next_dlr)) 449*14b24e2bSVaishali Kulkarni #define BDN_RAPID_RESPONSE (ASN1_P->bdn_addr + OFFSETOF(struct bdn, rpp_stc)) 450*14b24e2bSVaishali Kulkarni #define BDN_SERV_INFO_ENC_ID() (ASN1_P->bdn_addr + OFFSETOF(struct bdn, serv_info_enc_id)) 451*14b24e2bSVaishali Kulkarni #define BDN_CRC() (ASN1_P->bdn_addr + sizeof(union bdn_image)) 452*14b24e2bSVaishali Kulkarni #endif 453*14b24e2bSVaishali Kulkarni 454*14b24e2bSVaishali Kulkarni #define BDN_SIZE_IMAGE_MAX (0x9000) 455*14b24e2bSVaishali Kulkarni 456*14b24e2bSVaishali Kulkarni #define BDN_SIZE_OF_MAC (6) 457*14b24e2bSVaishali Kulkarni #define BDN_SIZE_OF_WWN (8) 458*14b24e2bSVaishali Kulkarni #define BDN_SIZE_OF_IPV4 (4) 459*14b24e2bSVaishali Kulkarni #define BDN_SIZE_OF_IPV6 (16) 460*14b24e2bSVaishali Kulkarni #define BDN_DIR_MAX (8) 461*14b24e2bSVaishali Kulkarni #define BDN_SIZE_OF_PF_PER_PORT (16) 462*14b24e2bSVaishali Kulkarni #define BDN_SIZE_OF_CONNECTION_ID (16) 463*14b24e2bSVaishali Kulkarni #define BDN_SIZE_OF_C2SPCP_MAP (9) 464*14b24e2bSVaishali Kulkarni #define BDN_SIZE_OF_ISCSI_NAME (236) 465*14b24e2bSVaishali Kulkarni #define BDN_SIZE_OF_ISCSI_SEC (16) 466*14b24e2bSVaishali Kulkarni #define BDN_SIZE_OF_FCOE_TARGETS (8) 467*14b24e2bSVaishali Kulkarni #define BDN_SIZE_OF_FCOE_LUN_ID (8) 468*14b24e2bSVaishali Kulkarni #define BDN_SIZE_OF_DHCP_VENDOR_ID (32) 469*14b24e2bSVaishali Kulkarni #define BDN_SIZE_OF_SERV_DESC (64) 470*14b24e2bSVaishali Kulkarni #define BDN_SIZE_OF_SERV_UUID (36) 471*14b24e2bSVaishali Kulkarni #define BDN_SIZE_OF_SERV_SLOT (32) 472*14b24e2bSVaishali Kulkarni #define BDN_NUM_OF_ILO_ADDR (3) 473*14b24e2bSVaishali Kulkarni #define BDN_SIZE_OF_ILO_ADDR (16) 474*14b24e2bSVaishali Kulkarni #define BDN_SIZE_OF_SERV_TIME (20) 475*14b24e2bSVaishali Kulkarni #define BDN_SIZE_OF_ENCLOSURE_ID (36) 476*14b24e2bSVaishali Kulkarni #define BDN_CCT_MAX_SIZE (64) 477*14b24e2bSVaishali Kulkarni #define BDN_SCI_MAX_SIZE (64) 478*14b24e2bSVaishali Kulkarni 479*14b24e2bSVaishali Kulkarni struct bdn_dir { 480*14b24e2bSVaishali Kulkarni u16 offset; 481*14b24e2bSVaishali Kulkarni u16 length; 482*14b24e2bSVaishali Kulkarni }; 483*14b24e2bSVaishali Kulkarni 484*14b24e2bSVaishali Kulkarni #define BDN_DIR_CFG_NOW (0) 485*14b24e2bSVaishali Kulkarni #define BDN_DIR_CFG_NEXT_FLR (1) 486*14b24e2bSVaishali Kulkarni #define BDN_DIR_CFG_PORT_RESET (2) 487*14b24e2bSVaishali Kulkarni #define BDN_DIR_CFG_NEXT_DLR (3) 488*14b24e2bSVaishali Kulkarni #define BDN_DIR_CFG_NEXT_OS_BOOT (4) 489*14b24e2bSVaishali Kulkarni #define BDN_DIR_CFG_NEXT_PWR_CYC (5) 490*14b24e2bSVaishali Kulkarni #define BDN_DIR_CFG_DIAG_CTRL (6) 491*14b24e2bSVaishali Kulkarni 492*14b24e2bSVaishali Kulkarni typedef u32 bdn_cfg_state; 493*14b24e2bSVaishali Kulkarni #define BDN_CFG_STATE_MASK 0x000000ff 494*14b24e2bSVaishali Kulkarni #define BDN_CFG_STATE_OFFSET 0 495*14b24e2bSVaishali Kulkarni #define BDN_CFG_STATE_NA 0x00000000 496*14b24e2bSVaishali Kulkarni #define BDN_CFG_STATE_ACTIVE 0x00000001 497*14b24e2bSVaishali Kulkarni #define BDN_CFG_STATE_PENDING 0x00000002 498*14b24e2bSVaishali Kulkarni #define BDN_CFG_STATE_DEFAULT 0x00000004 499*14b24e2bSVaishali Kulkarni 500*14b24e2bSVaishali Kulkarni #define BDN_CFG_STATE_IS(x, y) ((((x)->state & BDN_CFG_STATE_MASK) >> BDN_CFG_STATE_OFFSET) == BDN_CFG_STATE_##y) 501*14b24e2bSVaishali Kulkarni #define BDN_OPTIONAL_SET(x, y) (x)->optional |= (1 << (y)) 502*14b24e2bSVaishali Kulkarni #define BDN_OPTIONAL_CHECK(x, y) ((x)->optional & (1 << (y))) 503*14b24e2bSVaishali Kulkarni 504*14b24e2bSVaishali Kulkarni /*.************************* Base-Device-Module************************* */ 505*14b24e2bSVaishali Kulkarni struct bdn_base_now { 506*14b24e2bSVaishali Kulkarni bdn_cfg_state state; 507*14b24e2bSVaishali Kulkarni u32 optional; 508*14b24e2bSVaishali Kulkarni 509*14b24e2bSVaishali Kulkarni u32 rsv:24, 510*14b24e2bSVaishali Kulkarni dci_mgmt:8; 511*14b24e2bSVaishali Kulkarni 512*14b24e2bSVaishali Kulkarni u32 rsrv; 513*14b24e2bSVaishali Kulkarni }; 514*14b24e2bSVaishali Kulkarni 515*14b24e2bSVaishali Kulkarni struct bdn_base_osb { 516*14b24e2bSVaishali Kulkarni bdn_cfg_state state; 517*14b24e2bSVaishali Kulkarni u32 optional; 518*14b24e2bSVaishali Kulkarni 519*14b24e2bSVaishali Kulkarni u32 rsv:31, 520*14b24e2bSVaishali Kulkarni reset_2_factory:1; 521*14b24e2bSVaishali Kulkarni 522*14b24e2bSVaishali Kulkarni u32 rsrv; 523*14b24e2bSVaishali Kulkarni }; 524*14b24e2bSVaishali Kulkarni 525*14b24e2bSVaishali Kulkarni struct bdn_base { 526*14b24e2bSVaishali Kulkarni struct bdn_dir dir[BDN_DIR_MAX]; 527*14b24e2bSVaishali Kulkarni 528*14b24e2bSVaishali Kulkarni struct bdn_base_now now; 529*14b24e2bSVaishali Kulkarni struct bdn_base_osb osb; /* Next os reboot */ 530*14b24e2bSVaishali Kulkarni }; 531*14b24e2bSVaishali Kulkarni 532*14b24e2bSVaishali Kulkarni /*.************************* Network-Device-Module********************** */ 533*14b24e2bSVaishali Kulkarni struct bdn_nport_now { 534*14b24e2bSVaishali Kulkarni bdn_cfg_state state; 535*14b24e2bSVaishali Kulkarni u32 optional; 536*14b24e2bSVaishali Kulkarni #define BDN_NETPORT_NOW_OPT_MIN_BW (0) 537*14b24e2bSVaishali Kulkarni #define BDN_NETPORT_NOW_OPT_MAX_BW (1) 538*14b24e2bSVaishali Kulkarni 539*14b24e2bSVaishali Kulkarni u32 rsv:14, 540*14b24e2bSVaishali Kulkarni enable_port:1, 541*14b24e2bSVaishali Kulkarni enable_diag:1, 542*14b24e2bSVaishali Kulkarni num_pfs_min_bw:8, 543*14b24e2bSVaishali Kulkarni num_pfs_max_bw:8; 544*14b24e2bSVaishali Kulkarni 545*14b24e2bSVaishali Kulkarni u8 min_bw[BDN_SIZE_OF_PF_PER_PORT]; 546*14b24e2bSVaishali Kulkarni u8 max_bw[BDN_SIZE_OF_PF_PER_PORT]; 547*14b24e2bSVaishali Kulkarni 548*14b24e2bSVaishali Kulkarni u32 rsrv; 549*14b24e2bSVaishali Kulkarni }; 550*14b24e2bSVaishali Kulkarni 551*14b24e2bSVaishali Kulkarni struct bdn_nport_plr { 552*14b24e2bSVaishali Kulkarni bdn_cfg_state state; 553*14b24e2bSVaishali Kulkarni u32 optional; 554*14b24e2bSVaishali Kulkarni #define BDN_NETPORT_RESET_OPT_ADV_SPEED (0) 555*14b24e2bSVaishali Kulkarni #define BDN_NETPORT_RESET_OPT_FLOW_CTRL (1) 556*14b24e2bSVaishali Kulkarni #define BDN_NETPORT_RESET_OPT_EEE_ENABLE (2) 557*14b24e2bSVaishali Kulkarni 558*14b24e2bSVaishali Kulkarni u32 rsv:11, 559*14b24e2bSVaishali Kulkarni eee_enable:1, 560*14b24e2bSVaishali Kulkarni flow_ctrl:4, 561*14b24e2bSVaishali Kulkarni adv_speed:16; 562*14b24e2bSVaishali Kulkarni 563*14b24e2bSVaishali Kulkarni u32 rsrv; 564*14b24e2bSVaishali Kulkarni }; 565*14b24e2bSVaishali Kulkarni 566*14b24e2bSVaishali Kulkarni struct bdn_nport_osb { 567*14b24e2bSVaishali Kulkarni bdn_cfg_state state; 568*14b24e2bSVaishali Kulkarni u32 optional; 569*14b24e2bSVaishali Kulkarni #define BDN_NETPORT_BOOT_OPT_NUM_VF (0) 570*14b24e2bSVaishali Kulkarni #define BDN_NETPORT_BOOT_OPT_NPIV_ENABLE (1) 571*14b24e2bSVaishali Kulkarni 572*14b24e2bSVaishali Kulkarni u32 rsv:23, 573*14b24e2bSVaishali Kulkarni npiv_enable:1, 574*14b24e2bSVaishali Kulkarni num_pfs:8; 575*14b24e2bSVaishali Kulkarni u8 num_vfs[BDN_SIZE_OF_PF_PER_PORT]; 576*14b24e2bSVaishali Kulkarni 577*14b24e2bSVaishali Kulkarni u32 rsrv; 578*14b24e2bSVaishali Kulkarni }; 579*14b24e2bSVaishali Kulkarni 580*14b24e2bSVaishali Kulkarni struct bdn_nport_dgn { 581*14b24e2bSVaishali Kulkarni bdn_cfg_state state; 582*14b24e2bSVaishali Kulkarni u32 optional; 583*14b24e2bSVaishali Kulkarni 584*14b24e2bSVaishali Kulkarni u32 rsv:29, 585*14b24e2bSVaishali Kulkarni port_reset:1, 586*14b24e2bSVaishali Kulkarni local_loopback:1, 587*14b24e2bSVaishali Kulkarni remote_loopback:1; 588*14b24e2bSVaishali Kulkarni 589*14b24e2bSVaishali Kulkarni u32 rsrv; 590*14b24e2bSVaishali Kulkarni }; 591*14b24e2bSVaishali Kulkarni 592*14b24e2bSVaishali Kulkarni struct bdn_nport { 593*14b24e2bSVaishali Kulkarni struct bdn_dir dir[BDN_DIR_MAX]; 594*14b24e2bSVaishali Kulkarni 595*14b24e2bSVaishali Kulkarni struct bdn_nport_now now; 596*14b24e2bSVaishali Kulkarni struct bdn_nport_plr plr; /* Next device level reset */ 597*14b24e2bSVaishali Kulkarni struct bdn_nport_osb osb; /* Next os reboot */ 598*14b24e2bSVaishali Kulkarni struct bdn_nport_dgn dgn; 599*14b24e2bSVaishali Kulkarni }; 600*14b24e2bSVaishali Kulkarni 601*14b24e2bSVaishali Kulkarni /* ************************* FlexFunc-Module************************* */ 602*14b24e2bSVaishali Kulkarni struct bdn_flex_now { 603*14b24e2bSVaishali Kulkarni bdn_cfg_state state; 604*14b24e2bSVaishali Kulkarni u32 optional; 605*14b24e2bSVaishali Kulkarni 606*14b24e2bSVaishali Kulkarni u8 connection_id[BDN_SIZE_OF_CONNECTION_ID]; 607*14b24e2bSVaishali Kulkarni u32 rsv:31, 608*14b24e2bSVaishali Kulkarni fnic_enabled:1; 609*14b24e2bSVaishali Kulkarni 610*14b24e2bSVaishali Kulkarni u32 rsrv; 611*14b24e2bSVaishali Kulkarni }; 612*14b24e2bSVaishali Kulkarni 613*14b24e2bSVaishali Kulkarni struct bdn_flex_dlr { 614*14b24e2bSVaishali Kulkarni bdn_cfg_state state; 615*14b24e2bSVaishali Kulkarni u32 optional; 616*14b24e2bSVaishali Kulkarni #define BDN_FLEXFUNC_DLR_OPT_FC_WWNN (0) 617*14b24e2bSVaishali Kulkarni #define BDN_FLEXFUNC_DLR_OPT_FC_WWPN (1) 618*14b24e2bSVaishali Kulkarni 619*14b24e2bSVaishali Kulkarni u8 fc_wwnn[BDN_SIZE_OF_WWN]; 620*14b24e2bSVaishali Kulkarni u8 fc_wwpn[BDN_SIZE_OF_WWN]; 621*14b24e2bSVaishali Kulkarni 622*14b24e2bSVaishali Kulkarni u32 rsrv[2]; 623*14b24e2bSVaishali Kulkarni }; 624*14b24e2bSVaishali Kulkarni 625*14b24e2bSVaishali Kulkarni struct bdn_flex_osb { 626*14b24e2bSVaishali Kulkarni bdn_cfg_state state; 627*14b24e2bSVaishali Kulkarni u32 optional; 628*14b24e2bSVaishali Kulkarni #define BDN_FLEXFUNC_BOOT_OPT_C2SPCP_MAP (0) 629*14b24e2bSVaishali Kulkarni #define BDN_FLEXFUNC_BOOT_OPT_PORT_ASSIGNMENT (1) 630*14b24e2bSVaishali Kulkarni #define BDN_FLEXFUNC_BOOT_OPT_EMB_LAG (2) 631*14b24e2bSVaishali Kulkarni #define BDN_FLEXFUNC_BOOT_OPT_MTU_SIZE (3) 632*14b24e2bSVaishali Kulkarni #define BDN_FLEXFUNC_BOOT_OPT_OVER_MTU (4) 633*14b24e2bSVaishali Kulkarni 634*14b24e2bSVaishali Kulkarni u8 mac_addr[BDN_SIZE_OF_MAC]; 635*14b24e2bSVaishali Kulkarni u8 c_2_s_pcp_map[BDN_SIZE_OF_C2SPCP_MAP]; 636*14b24e2bSVaishali Kulkarni /* Maps O/S C-VLAN PCP value to S-VLAN PCP value for TX 637*14b24e2bSVaishali Kulkarni * -- items 1-8 correspond to the O/S C-VLAN PCP values 0-7 638*14b24e2bSVaishali Kulkarni * -- item 9 is the default if no C-VLAN present 639*14b24e2bSVaishali Kulkarni * -- Values in these 9 bytes are the expected S-PCP values. 640*14b24e2bSVaishali Kulkarni * -- If NetDev-Device-Module: EVB-Support.c-2-s-pcp-map = FALSE, then 641*14b24e2bSVaishali Kulkarni * -- all values must be identical 642*14b24e2bSVaishali Kulkarni * -- else, it supports C-PCP -> S-PCP mapping 643*14b24e2bSVaishali Kulkarni */ 644*14b24e2bSVaishali Kulkarni u8 func_type; 645*14b24e2bSVaishali Kulkarni u32 rsv:2, 646*14b24e2bSVaishali Kulkarni valid_mac_addr:1, 647*14b24e2bSVaishali Kulkarni override_mtu:1, 648*14b24e2bSVaishali Kulkarni boot_mode:4, 649*14b24e2bSVaishali Kulkarni port_assign:4, 650*14b24e2bSVaishali Kulkarni emb_lag:4, 651*14b24e2bSVaishali Kulkarni mtu_size:16; 652*14b24e2bSVaishali Kulkarni 653*14b24e2bSVaishali Kulkarni u32 rsrv; 654*14b24e2bSVaishali Kulkarni }; 655*14b24e2bSVaishali Kulkarni 656*14b24e2bSVaishali Kulkarni struct bdn_flex_dgn { 657*14b24e2bSVaishali Kulkarni bdn_cfg_state state; 658*14b24e2bSVaishali Kulkarni u32 optional; 659*14b24e2bSVaishali Kulkarni 660*14b24e2bSVaishali Kulkarni u32 rsv:31, 661*14b24e2bSVaishali Kulkarni enable_wol:1; 662*14b24e2bSVaishali Kulkarni 663*14b24e2bSVaishali Kulkarni u32 rsrv; 664*14b24e2bSVaishali Kulkarni }; 665*14b24e2bSVaishali Kulkarni 666*14b24e2bSVaishali Kulkarni struct bdn_flex { 667*14b24e2bSVaishali Kulkarni struct bdn_dir dir[BDN_DIR_MAX]; 668*14b24e2bSVaishali Kulkarni 669*14b24e2bSVaishali Kulkarni struct bdn_flex_now now; 670*14b24e2bSVaishali Kulkarni struct bdn_flex_dlr dlr; /* Next device level reset */ 671*14b24e2bSVaishali Kulkarni struct bdn_flex_osb osb; /* Next os reboot */ 672*14b24e2bSVaishali Kulkarni struct bdn_flex_dgn dgn; 673*14b24e2bSVaishali Kulkarni }; 674*14b24e2bSVaishali Kulkarni 675*14b24e2bSVaishali Kulkarni /* ************************* FC-NPIV-Module************************* */ 676*14b24e2bSVaishali Kulkarni struct bdn_npiv_dlr { 677*14b24e2bSVaishali Kulkarni bdn_cfg_state state; 678*14b24e2bSVaishali Kulkarni u32 optional; 679*14b24e2bSVaishali Kulkarni 680*14b24e2bSVaishali Kulkarni struct dci_fc_npiv_tbl npiv_tbl; 681*14b24e2bSVaishali Kulkarni }; 682*14b24e2bSVaishali Kulkarni 683*14b24e2bSVaishali Kulkarni struct bdn_npiv { 684*14b24e2bSVaishali Kulkarni struct bdn_dir dir[BDN_DIR_MAX]; 685*14b24e2bSVaishali Kulkarni 686*14b24e2bSVaishali Kulkarni struct bdn_npiv_dlr dlr; /* Next device level reset */ 687*14b24e2bSVaishali Kulkarni }; 688*14b24e2bSVaishali Kulkarni 689*14b24e2bSVaishali Kulkarni /* ************************* iSCSI-Boot-Module************************* */ 690*14b24e2bSVaishali Kulkarni struct bdn_iscsi_init { 691*14b24e2bSVaishali Kulkarni u32 rsv:21, 692*14b24e2bSVaishali Kulkarni opt_route:1, 693*14b24e2bSVaishali Kulkarni opt_pri_dns:1, 694*14b24e2bSVaishali Kulkarni opt_sec_dns:1, 695*14b24e2bSVaishali Kulkarni name_size:8; 696*14b24e2bSVaishali Kulkarni 697*14b24e2bSVaishali Kulkarni u8 ip_add[BDN_SIZE_OF_IPV6]; 698*14b24e2bSVaishali Kulkarni u8 netmask[BDN_SIZE_OF_IPV6]; 699*14b24e2bSVaishali Kulkarni u8 route[BDN_SIZE_OF_IPV6]; 700*14b24e2bSVaishali Kulkarni u8 primary_dns[BDN_SIZE_OF_IPV6]; 701*14b24e2bSVaishali Kulkarni u8 secondary_dns[BDN_SIZE_OF_IPV6]; 702*14b24e2bSVaishali Kulkarni u8 name[BDN_SIZE_OF_ISCSI_NAME]; 703*14b24e2bSVaishali Kulkarni }; 704*14b24e2bSVaishali Kulkarni 705*14b24e2bSVaishali Kulkarni struct bdn_iscsi_trgt { 706*14b24e2bSVaishali Kulkarni u32 optional; 707*14b24e2bSVaishali Kulkarni #define BDN_ISCSI_TARGET_OPT_LLMNR_ENABLE (0) 708*14b24e2bSVaishali Kulkarni #define BDN_ISCSI_TARGET_OPT_ROUTE_ADV_ENABLE (1) 709*14b24e2bSVaishali Kulkarni 710*14b24e2bSVaishali Kulkarni u32 rsv:21, 711*14b24e2bSVaishali Kulkarni opt_ip2:1, 712*14b24e2bSVaishali Kulkarni llmnr_en:1, 713*14b24e2bSVaishali Kulkarni route_adv_en:1, 714*14b24e2bSVaishali Kulkarni name_size:8; 715*14b24e2bSVaishali Kulkarni 716*14b24e2bSVaishali Kulkarni u32 lun; 717*14b24e2bSVaishali Kulkarni u16 tcpport; 718*14b24e2bSVaishali Kulkarni u16 tcpport2; 719*14b24e2bSVaishali Kulkarni 720*14b24e2bSVaishali Kulkarni u8 ip[BDN_SIZE_OF_IPV6]; 721*14b24e2bSVaishali Kulkarni u8 ip2[BDN_SIZE_OF_IPV6]; 722*14b24e2bSVaishali Kulkarni u8 name[BDN_SIZE_OF_ISCSI_NAME]; 723*14b24e2bSVaishali Kulkarni 724*14b24e2bSVaishali Kulkarni u32 rsrv; 725*14b24e2bSVaishali Kulkarni }; 726*14b24e2bSVaishali Kulkarni 727*14b24e2bSVaishali Kulkarni struct bdn_iscsi_auth { 728*14b24e2bSVaishali Kulkarni u32 rsv:2, 729*14b24e2bSVaishali Kulkarni c_sec_size:6, 730*14b24e2bSVaishali Kulkarni auth_method:2, 731*14b24e2bSVaishali Kulkarni m_sec_size:6, 732*14b24e2bSVaishali Kulkarni c_name_size:8, 733*14b24e2bSVaishali Kulkarni m_name_size:8; 734*14b24e2bSVaishali Kulkarni 735*14b24e2bSVaishali Kulkarni u8 chap_username[BDN_SIZE_OF_ISCSI_NAME]; 736*14b24e2bSVaishali Kulkarni u8 chap_secret[BDN_SIZE_OF_ISCSI_SEC]; 737*14b24e2bSVaishali Kulkarni u8 mutual_username[BDN_SIZE_OF_ISCSI_NAME]; 738*14b24e2bSVaishali Kulkarni u8 mutual_secret[BDN_SIZE_OF_ISCSI_SEC]; 739*14b24e2bSVaishali Kulkarni 740*14b24e2bSVaishali Kulkarni u32 rsrv; 741*14b24e2bSVaishali Kulkarni }; 742*14b24e2bSVaishali Kulkarni 743*14b24e2bSVaishali Kulkarni struct bdn_iboot_dlr { 744*14b24e2bSVaishali Kulkarni bdn_cfg_state state; 745*14b24e2bSVaishali Kulkarni u32 optional; 746*14b24e2bSVaishali Kulkarni #define BDN_ISCSI_BOOT_OPT_CVID (0) 747*14b24e2bSVaishali Kulkarni #define BDN_ISCSI_BOOT_OPT_INITIATOR (1) 748*14b24e2bSVaishali Kulkarni #define BDN_ISCSI_BOOT_OPT_TARGET (2) 749*14b24e2bSVaishali Kulkarni #define BDN_ISCSI_BOOT_OPT_AUTH (3) 750*14b24e2bSVaishali Kulkarni #define BDN_ISCSI_BOOT_OPT_HEAD_DIGEST_EN (4) 751*14b24e2bSVaishali Kulkarni #define BDN_ISCSI_BOOT_OPT_DATA_DIGEST_EN (5) 752*14b24e2bSVaishali Kulkarni 753*14b24e2bSVaishali Kulkarni u32 rsv:4, 754*14b24e2bSVaishali Kulkarni initiator_dhcp:1, 755*14b24e2bSVaishali Kulkarni target_dhcp:1, 756*14b24e2bSVaishali Kulkarni head_digest_en:1, 757*14b24e2bSVaishali Kulkarni data_digest_en:1, 758*14b24e2bSVaishali Kulkarni dhcp_vendor_id_size:8, 759*14b24e2bSVaishali Kulkarni ip_type:4, 760*14b24e2bSVaishali Kulkarni cvid:12; 761*14b24e2bSVaishali Kulkarni 762*14b24e2bSVaishali Kulkarni u8 dhcp_vendor_id[BDN_SIZE_OF_DHCP_VENDOR_ID]; 763*14b24e2bSVaishali Kulkarni 764*14b24e2bSVaishali Kulkarni u32 rsrv; 765*14b24e2bSVaishali Kulkarni 766*14b24e2bSVaishali Kulkarni struct bdn_iscsi_init init; 767*14b24e2bSVaishali Kulkarni struct bdn_iscsi_trgt trgt; 768*14b24e2bSVaishali Kulkarni struct bdn_iscsi_auth auth; 769*14b24e2bSVaishali Kulkarni }; 770*14b24e2bSVaishali Kulkarni 771*14b24e2bSVaishali Kulkarni struct bdn_iboot { 772*14b24e2bSVaishali Kulkarni struct bdn_dir dir[BDN_DIR_MAX]; 773*14b24e2bSVaishali Kulkarni 774*14b24e2bSVaishali Kulkarni struct bdn_iboot_dlr dlr; /* Next device level reset */ 775*14b24e2bSVaishali Kulkarni }; 776*14b24e2bSVaishali Kulkarni 777*14b24e2bSVaishali Kulkarni /* ************************* FCoE-Boot-Module************************* */ 778*14b24e2bSVaishali Kulkarni struct bdn_fcoe_trgt { 779*14b24e2bSVaishali Kulkarni u8 wwpn[BDN_SIZE_OF_WWN]; 780*14b24e2bSVaishali Kulkarni u8 lunid[BDN_SIZE_OF_FCOE_LUN_ID]; 781*14b24e2bSVaishali Kulkarni }; 782*14b24e2bSVaishali Kulkarni 783*14b24e2bSVaishali Kulkarni struct bdn_fboot_dlr { 784*14b24e2bSVaishali Kulkarni bdn_cfg_state state; 785*14b24e2bSVaishali Kulkarni u32 optional; 786*14b24e2bSVaishali Kulkarni 787*14b24e2bSVaishali Kulkarni u32 rsv:24, 788*14b24e2bSVaishali Kulkarni num_of_targets:4; 789*14b24e2bSVaishali Kulkarni 790*14b24e2bSVaishali Kulkarni struct bdn_fcoe_trgt trgt[BDN_SIZE_OF_FCOE_TARGETS]; 791*14b24e2bSVaishali Kulkarni 792*14b24e2bSVaishali Kulkarni u32 rsrv; 793*14b24e2bSVaishali Kulkarni }; 794*14b24e2bSVaishali Kulkarni 795*14b24e2bSVaishali Kulkarni struct bdn_fboot { 796*14b24e2bSVaishali Kulkarni struct bdn_dir dir[BDN_DIR_MAX]; 797*14b24e2bSVaishali Kulkarni 798*14b24e2bSVaishali Kulkarni struct bdn_fboot_dlr dlr; /* Next device level reset */ 799*14b24e2bSVaishali Kulkarni }; 800*14b24e2bSVaishali Kulkarni 801*14b24e2bSVaishali Kulkarni /* ************************* NCSI-Module ************************* */ 802*14b24e2bSVaishali Kulkarni struct bdn_ncsi_dlr { 803*14b24e2bSVaishali Kulkarni bdn_cfg_state state; 804*14b24e2bSVaishali Kulkarni u32 optional; 805*14b24e2bSVaishali Kulkarni 806*14b24e2bSVaishali Kulkarni u32 ncsi_scid:12, 807*14b24e2bSVaishali Kulkarni rsv:20; 808*14b24e2bSVaishali Kulkarni u32 rsv2; 809*14b24e2bSVaishali Kulkarni }; 810*14b24e2bSVaishali Kulkarni 811*14b24e2bSVaishali Kulkarni struct bdn_ncsi { 812*14b24e2bSVaishali Kulkarni struct bdn_dir dir[BDN_DIR_MAX]; 813*14b24e2bSVaishali Kulkarni 814*14b24e2bSVaishali Kulkarni struct bdn_ncsi_dlr dlr; 815*14b24e2bSVaishali Kulkarni }; 816*14b24e2bSVaishali Kulkarni 817*14b24e2bSVaishali Kulkarni /* ************************* Server-Info-Module************************* */ 818*14b24e2bSVaishali Kulkarni struct bdn_serv { 819*14b24e2bSVaishali Kulkarni bdn_cfg_state state; 820*14b24e2bSVaishali Kulkarni u32 optional; 821*14b24e2bSVaishali Kulkarni #define BDN_SERV_INFO_OPT_ILO_VLAN (0) 822*14b24e2bSVaishali Kulkarni #define BDN_SERV_INFO_OPT_TIMESTAMP (1) 823*14b24e2bSVaishali Kulkarni #define BDN_SERV_INFO_OPT_ENCLOSURE (2) 824*14b24e2bSVaishali Kulkarni 825*14b24e2bSVaishali Kulkarni u16 ilo_vlan; 826*14b24e2bSVaishali Kulkarni u8 serv_desc_size; 827*14b24e2bSVaishali Kulkarni u8 serv_uuid_size; 828*14b24e2bSVaishali Kulkarni u8 slot_info_size; 829*14b24e2bSVaishali Kulkarni u8 timestamp_size; 830*14b24e2bSVaishali Kulkarni u8 enclosure_size; 831*14b24e2bSVaishali Kulkarni u8 ilo_addr_num; 832*14b24e2bSVaishali Kulkarni u8 ilo_addr_size[BDN_NUM_OF_ILO_ADDR]; 833*14b24e2bSVaishali Kulkarni u8 crc8; /* the crc8 from last put command */ 834*14b24e2bSVaishali Kulkarni 835*14b24e2bSVaishali Kulkarni u8 serv_desc[BDN_SIZE_OF_SERV_DESC]; 836*14b24e2bSVaishali Kulkarni u8 serv_uuid[BDN_SIZE_OF_SERV_UUID]; 837*14b24e2bSVaishali Kulkarni u8 slot_info[BDN_SIZE_OF_SERV_SLOT]; 838*14b24e2bSVaishali Kulkarni u8 ilo_addr[BDN_NUM_OF_ILO_ADDR][BDN_SIZE_OF_ILO_ADDR]; 839*14b24e2bSVaishali Kulkarni u8 timestamp[BDN_SIZE_OF_SERV_TIME]; 840*14b24e2bSVaishali Kulkarni u8 enclosure[BDN_SIZE_OF_ENCLOSURE_ID]; 841*14b24e2bSVaishali Kulkarni }; 842*14b24e2bSVaishali Kulkarni 843*14b24e2bSVaishali Kulkarni /* ********************* Rapid-Response-Poll-Module ******************** */ 844*14b24e2bSVaishali Kulkarni struct bdn_rrp_digest { 845*14b24e2bSVaishali Kulkarni u8 object; 846*14b24e2bSVaishali Kulkarni u8 index; /* the index from zero */ 847*14b24e2bSVaishali Kulkarni u16 digest; 848*14b24e2bSVaishali Kulkarni }; 849*14b24e2bSVaishali Kulkarni 850*14b24e2bSVaishali Kulkarni struct bdn_rrp { 851*14b24e2bSVaishali Kulkarni bdn_cfg_state state; 852*14b24e2bSVaishali Kulkarni u32 optional; 853*14b24e2bSVaishali Kulkarni #define BDN_RRP_OPT_CCT (0) 854*14b24e2bSVaishali Kulkarni #define BDN_RRP_OPT_SCI (1) 855*14b24e2bSVaishali Kulkarni 856*14b24e2bSVaishali Kulkarni u32 hash; 857*14b24e2bSVaishali Kulkarni u32 num_cct:8, 858*14b24e2bSVaishali Kulkarni num_sci:8, 859*14b24e2bSVaishali Kulkarni rsv:16; 860*14b24e2bSVaishali Kulkarni 861*14b24e2bSVaishali Kulkarni struct bdn_rrp_digest cct[BDN_CCT_MAX_SIZE]; 862*14b24e2bSVaishali Kulkarni struct bdn_rrp_digest sci[BDN_SCI_MAX_SIZE]; 863*14b24e2bSVaishali Kulkarni }; 864*14b24e2bSVaishali Kulkarni 865*14b24e2bSVaishali Kulkarni /* 0x20 bytes */ 866*14b24e2bSVaishali Kulkarni struct bdn_head { 867*14b24e2bSVaishali Kulkarni u32 signature; 868*14b24e2bSVaishali Kulkarni #define BDN_HEAD_SIGN_SHIFT (8) 869*14b24e2bSVaishali Kulkarni #define BDN_HEAD_SIGN_MASK (0xffffff << BDN_HEAD_SIGN_SHIFT) 870*14b24e2bSVaishali Kulkarni #define BDN_HEAD_SIGN_VALID (((u32)'B' << 16) | ((u32)'D' << 8) | 'N') 871*14b24e2bSVaishali Kulkarni #define BDN_HEAD_SIGN_VER_SHIFT (0) 872*14b24e2bSVaishali Kulkarni #define BDN_HEAD_SIGN_VER_MASK (0xff << BDN_HEAD_SIGN_VER_SHIFT) 873*14b24e2bSVaishali Kulkarni #define BDN_HEAD_SIGN_VER_CURRENT (1) 874*14b24e2bSVaishali Kulkarni #define BDN_HEAD_SIGN_CURRENT ((BDN_HEAD_SIGN_VALID << BDN_HEAD_SIGN_SHIFT) | (BDN_HEAD_SIGN_VER_CURRENT << BDN_HEAD_SIGN_VER_SHIFT)) 875*14b24e2bSVaishali Kulkarni 876*14b24e2bSVaishali Kulkarni u32 num_port:8, 877*14b24e2bSVaishali Kulkarni num_func:8, 878*14b24e2bSVaishali Kulkarni rsrv_bit:16; 879*14b24e2bSVaishali Kulkarni 880*14b24e2bSVaishali Kulkarni struct bdn_dir glob; 881*14b24e2bSVaishali Kulkarni struct bdn_dir port; 882*14b24e2bSVaishali Kulkarni struct bdn_dir func; 883*14b24e2bSVaishali Kulkarni 884*14b24e2bSVaishali Kulkarni u32 rsrv[3]; 885*14b24e2bSVaishali Kulkarni }; 886*14b24e2bSVaishali Kulkarni 887*14b24e2bSVaishali Kulkarni struct bdn_glob { 888*14b24e2bSVaishali Kulkarni #define BDN_DIR_GLOB_SERV_INFO 0 889*14b24e2bSVaishali Kulkarni #define BDN_DIR_GLOB_BASE_DEV 1 890*14b24e2bSVaishali Kulkarni #define BDN_DIR_GLOB_NCSI 2 891*14b24e2bSVaishali Kulkarni #define BDN_DIR_GLOB_RRP 3 892*14b24e2bSVaishali Kulkarni struct bdn_dir dir[BDN_DIR_MAX]; 893*14b24e2bSVaishali Kulkarni 894*14b24e2bSVaishali Kulkarni struct bdn_serv serv; 895*14b24e2bSVaishali Kulkarni struct bdn_base base; 896*14b24e2bSVaishali Kulkarni struct bdn_ncsi ncsi; 897*14b24e2bSVaishali Kulkarni struct bdn_rrp rrp; 898*14b24e2bSVaishali Kulkarni 899*14b24e2bSVaishali Kulkarni u32 rsrv[8]; 900*14b24e2bSVaishali Kulkarni }; 901*14b24e2bSVaishali Kulkarni 902*14b24e2bSVaishali Kulkarni struct bdn_port { 903*14b24e2bSVaishali Kulkarni #define BDN_DIR_PORT_NETPORT 0 904*14b24e2bSVaishali Kulkarni #define BDN_DIR_PORT_FC_NPIV 1 905*14b24e2bSVaishali Kulkarni #define BDN_DIR_PORT_ISCSI_BOOT 2 906*14b24e2bSVaishali Kulkarni #define BDN_DIR_PORT_FCOE_BOOT 3 907*14b24e2bSVaishali Kulkarni struct bdn_dir dir[BDN_DIR_MAX]; 908*14b24e2bSVaishali Kulkarni 909*14b24e2bSVaishali Kulkarni struct bdn_nport port; 910*14b24e2bSVaishali Kulkarni struct bdn_npiv npiv; 911*14b24e2bSVaishali Kulkarni struct bdn_iboot iboot; 912*14b24e2bSVaishali Kulkarni struct bdn_fboot fboot; 913*14b24e2bSVaishali Kulkarni 914*14b24e2bSVaishali Kulkarni }; 915*14b24e2bSVaishali Kulkarni 916*14b24e2bSVaishali Kulkarni struct bdn_func { 917*14b24e2bSVaishali Kulkarni #define BDN_DIR_FUNC_FLEX_FUNC 0 918*14b24e2bSVaishali Kulkarni struct bdn_dir dir[BDN_DIR_MAX]; 919*14b24e2bSVaishali Kulkarni 920*14b24e2bSVaishali Kulkarni struct bdn_flex flex; 921*14b24e2bSVaishali Kulkarni 922*14b24e2bSVaishali Kulkarni u32 rsrv[4]; 923*14b24e2bSVaishali Kulkarni }; 924*14b24e2bSVaishali Kulkarni 925*14b24e2bSVaishali Kulkarni struct bdn { 926*14b24e2bSVaishali Kulkarni struct bdn_head head; 927*14b24e2bSVaishali Kulkarni struct bdn_glob glob; 928*14b24e2bSVaishali Kulkarni struct bdn_port port[MCP_GLOB_PORT_MAX]; 929*14b24e2bSVaishali Kulkarni struct bdn_func func[MCP_GLOB_FUNC_MAX]; 930*14b24e2bSVaishali Kulkarni }; 931*14b24e2bSVaishali Kulkarni 932*14b24e2bSVaishali Kulkarni #define BDN_OFFSET_GLOB(x) (OFFSETOF(struct bdn, glob.x) & 0xffff) 933*14b24e2bSVaishali Kulkarni #define BDN_OFFSET_BASE(x) (OFFSETOF(struct bdn, glob.base.x) & 0xffff) 934*14b24e2bSVaishali Kulkarni #define BDN_OFFSET_NCSI(x) (OFFSETOF(struct bdn, glob.ncsi.x) & 0xffff) 935*14b24e2bSVaishali Kulkarni #define BDN_OFFSET_PORT(x, y) (OFFSETOF(struct bdn, port[(x)].y) & 0xffff) 936*14b24e2bSVaishali Kulkarni #define BDN_OFFSET_NPORT(x, y) (OFFSETOF(struct bdn, port[(x)].port.y) & 0xffff) 937*14b24e2bSVaishali Kulkarni #define BDN_OFFSET_NPIV(x, y) (OFFSETOF(struct bdn, port[(x)].npiv.y) & 0xffff) 938*14b24e2bSVaishali Kulkarni #define BDN_OFFSET_IBOOT(x, y) (OFFSETOF(struct bdn, port[(x)].iboot.y) & 0xffff) 939*14b24e2bSVaishali Kulkarni #define BDN_OFFSET_FBOOT(x, y) (OFFSETOF(struct bdn, port[(x)].fboot.y) & 0xffff) 940*14b24e2bSVaishali Kulkarni #define BDN_OFFSET_FUNC(x, y) (OFFSETOF(struct bdn, func[(x)].y) & 0xffff) 941*14b24e2bSVaishali Kulkarni #define BDN_OFFSET_FLEX(x, y) (OFFSETOF(struct bdn, func[(x)].flex.y) & 0xffff) 942*14b24e2bSVaishali Kulkarni #define BDN_OFFSET_CRC (BDN_SIZE_IMAGE_MAX - 4) 943*14b24e2bSVaishali Kulkarni 944*14b24e2bSVaishali Kulkarni union bdn_image { 945*14b24e2bSVaishali Kulkarni struct bdn bdn; 946*14b24e2bSVaishali Kulkarni u8_t rsrv[BDN_SIZE_IMAGE_MAX]; 947*14b24e2bSVaishali Kulkarni }; 948*14b24e2bSVaishali Kulkarni 949*14b24e2bSVaishali Kulkarni #endif /* BDN_H */ 950