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  *
38*14b24e2bSVaishali Kulkarni  * Name:        nvm_fcoe_cfg.h
39*14b24e2bSVaishali Kulkarni  *
40*14b24e2bSVaishali Kulkarni  * Description: NVM config file for FCoE configurations
41*14b24e2bSVaishali Kulkarni  *
42*14b24e2bSVaishali Kulkarni  * Created:     04/11/2016
43*14b24e2bSVaishali Kulkarni  *
44*14b24e2bSVaishali Kulkarni  * Version:     0.3
45*14b24e2bSVaishali Kulkarni  *
46*14b24e2bSVaishali Kulkarni  ****************************************************************************/
47*14b24e2bSVaishali Kulkarni 
48*14b24e2bSVaishali Kulkarni #ifndef NVM_FCOE_CFG_H
49*14b24e2bSVaishali Kulkarni #define NVM_FCOE_CFG_H
50*14b24e2bSVaishali Kulkarni 
51*14b24e2bSVaishali Kulkarni #define NUM_OF_FCOE_TARGET_PER_PF 8
52*14b24e2bSVaishali Kulkarni #define NUM_OF_FCOE_PF_SUPPORTED  4   // One PF per Port
53*14b24e2bSVaishali Kulkarni 
54*14b24e2bSVaishali Kulkarni union nvm_fc_world_wide_address
55*14b24e2bSVaishali Kulkarni {
56*14b24e2bSVaishali Kulkarni   u8  byte[8];
57*14b24e2bSVaishali Kulkarni   u32 value[2];
58*14b24e2bSVaishali Kulkarni };
59*14b24e2bSVaishali Kulkarni 
60*14b24e2bSVaishali Kulkarni union nvm_fc_lun
61*14b24e2bSVaishali Kulkarni {
62*14b24e2bSVaishali Kulkarni   u8  byte[8];
63*14b24e2bSVaishali Kulkarni   u32 value[2];
64*14b24e2bSVaishali Kulkarni };
65*14b24e2bSVaishali Kulkarni 
66*14b24e2bSVaishali Kulkarni 
67*14b24e2bSVaishali Kulkarni 
68*14b24e2bSVaishali Kulkarni struct nvm_fcoe_generic
69*14b24e2bSVaishali Kulkarni {
70*14b24e2bSVaishali Kulkarni   u32 ctrl_flags;                                                             /* 0x0 */
71*14b24e2bSVaishali Kulkarni   #define NVM_FCOE_CFG_GEN_WORLD_LOGIN                  0x00000001
72*14b24e2bSVaishali Kulkarni   #define NVM_FCOE_CFG_GEN_SELECTIVE_LOGIN              0x00000002
73*14b24e2bSVaishali Kulkarni   #define NVM_FCOE_CFG_GEN_FIP_VLAN_DISCOVERY           0x00000004
74*14b24e2bSVaishali Kulkarni 
75*14b24e2bSVaishali Kulkarni   u32 retry_count;                                                                /* 0x4 */
76*14b24e2bSVaishali Kulkarni   #define NVM_FCOE_CFG_GEN_FABRIC_LOGIN_RETRY_MASK        0x000000FF
77*14b24e2bSVaishali Kulkarni   #define NVM_FCOE_CFG_GEN_FABRIC_LOGIN_RETRY_OFFSET      0
78*14b24e2bSVaishali Kulkarni   #define NVM_FCOE_CFG_GEN_TARGET_LOGIN_RETRY_MASK        0x0000FF00
79*14b24e2bSVaishali Kulkarni   #define NVM_FCOE_CFG_GEN_TARGET_LOGIN_RETRY_OFFSET      8
80*14b24e2bSVaishali Kulkarni 
81*14b24e2bSVaishali Kulkarni   u32 rsvd[30];                                                               /* 0x8 */
82*14b24e2bSVaishali Kulkarni };
83*14b24e2bSVaishali Kulkarni 
84*14b24e2bSVaishali Kulkarni struct nvm_fcoe_initiator
85*14b24e2bSVaishali Kulkarni {
86*14b24e2bSVaishali Kulkarni   u32 fip_vlan;                                                               /* 0x0 */
87*14b24e2bSVaishali Kulkarni   #define NVM_FCOE_CFG_INITIATOR_FIP_DEFAULT_VLAN_MASK        0x00000FFF
88*14b24e2bSVaishali Kulkarni   #define NVM_FCOE_CFG_INITIATOR_FIP_DEFAULT_VLAN_OFFSET      0
89*14b24e2bSVaishali Kulkarni 
90*14b24e2bSVaishali Kulkarni   union nvm_fc_world_wide_address node_name;                                 /* 0x4 */
91*14b24e2bSVaishali Kulkarni   union nvm_fc_world_wide_address port_name;                                 /* 0xC */
92*14b24e2bSVaishali Kulkarni 
93*14b24e2bSVaishali Kulkarni   u32 rsvd[27];                                                               /* 0x14 */
94*14b24e2bSVaishali Kulkarni };
95*14b24e2bSVaishali Kulkarni 
96*14b24e2bSVaishali Kulkarni struct nvm_fcoe_target
97*14b24e2bSVaishali Kulkarni {
98*14b24e2bSVaishali Kulkarni   u32 ctrl_flags;                                                             /* 0x0 */
99*14b24e2bSVaishali Kulkarni   #define NVM_FCOE_CFG_TARGET_ENABLED   0x00000001
100*14b24e2bSVaishali Kulkarni 
101*14b24e2bSVaishali Kulkarni   union nvm_fc_world_wide_address port_name;                                 /* 0x4 */
102*14b24e2bSVaishali Kulkarni   union nvm_fc_lun lun;                                                      /* 0xC */
103*14b24e2bSVaishali Kulkarni 
104*14b24e2bSVaishali Kulkarni   u32 rsvd[27];                                                               /* 0x14 */
105*14b24e2bSVaishali Kulkarni };
106*14b24e2bSVaishali Kulkarni 
107*14b24e2bSVaishali Kulkarni struct nvm_fcoe_block
108*14b24e2bSVaishali Kulkarni {
109*14b24e2bSVaishali Kulkarni   u32 id;                                                                     /* 0x0 */
110*14b24e2bSVaishali Kulkarni   #define NVM_FCOE_CFG_BLK_MAPPED_PF_ID_MASK         0x0000000F
111*14b24e2bSVaishali Kulkarni   #define NVM_FCOE_CFG_BLK_MAPPED_PF_ID_OFFSET       0
112*14b24e2bSVaishali Kulkarni   #define NVM_FCOE_CFG_BLK_CTRL_FLAG_MASK            0x00000FF0
113*14b24e2bSVaishali Kulkarni   #define NVM_FCOE_CFG_BLK_CTRL_FLAG_OFFSET          4
114*14b24e2bSVaishali Kulkarni   #define NVM_FCOE_CFG_BLK_CTRL_FLAG_IS_NOT_EMPTY    (1 << 0)
115*14b24e2bSVaishali Kulkarni   #define NVM_FCOE_CFG_BLK_CTRL_FLAG_PF_MAPPED       (1 << 1)
116*14b24e2bSVaishali Kulkarni 
117*14b24e2bSVaishali Kulkarni   u32 rsvd_1[8];                                                              /* 0x4 */
118*14b24e2bSVaishali Kulkarni 
119*14b24e2bSVaishali Kulkarni   struct nvm_fcoe_generic     generic;                                        /* 0x24 */
120*14b24e2bSVaishali Kulkarni   struct nvm_fcoe_initiator   initiator;                                      /* 0xA4 */
121*14b24e2bSVaishali Kulkarni   struct nvm_fcoe_target      target[NUM_OF_FCOE_TARGET_PER_PF];              /* 0x124 */
122*14b24e2bSVaishali Kulkarni 
123*14b24e2bSVaishali Kulkarni   u32 rsvd[183];                                                              /* 0x524 */
124*14b24e2bSVaishali Kulkarni   /* total size - 0x800 - 2048 bytes - 2K blocks */
125*14b24e2bSVaishali Kulkarni };
126*14b24e2bSVaishali Kulkarni 
127*14b24e2bSVaishali Kulkarni struct nvm_fcoe_cfg
128*14b24e2bSVaishali Kulkarni {
129*14b24e2bSVaishali Kulkarni   u32 id;                                                                     /* 0x0 */
130*14b24e2bSVaishali Kulkarni   #define NVM_FCOE_CFG_BLK_VERSION_MINOR_MASK     0x000000FF
131*14b24e2bSVaishali Kulkarni   #define NVM_FCOE_CFG_BLK_VERSION_MAJOR_MASK     0x0000FF00
132*14b24e2bSVaishali Kulkarni   #define NVM_FCOE_CFG_BLK_SIGNATURE_MASK         0xFFFF0000
133*14b24e2bSVaishali Kulkarni   #define NVM_FCOE_CFG_BLK_SIGNATURE              0x46430000    // FC - FCoE Config
134*14b24e2bSVaishali Kulkarni 
135*14b24e2bSVaishali Kulkarni   #define NVM_FCOE_CFG_BLK_VERSION_MAJOR          0
136*14b24e2bSVaishali Kulkarni   #define NVM_FCOE_CFG_BLK_VERSION_MINOR          6
137*14b24e2bSVaishali Kulkarni   #define NVM_FCOE_CFG_BLK_VERSION                (NVM_FCOE_CFG_BLK_VERSION_MAJOR << 8) | NVM_FCOE_CFG_BLK_VERSION_MINOR;
138*14b24e2bSVaishali Kulkarni 
139*14b24e2bSVaishali Kulkarni   struct nvm_fcoe_block    block[NUM_OF_FCOE_PF_SUPPORTED];                   /* 0x4 */
140*14b24e2bSVaishali Kulkarni 
141*14b24e2bSVaishali Kulkarni };
142*14b24e2bSVaishali Kulkarni 
143*14b24e2bSVaishali Kulkarni #endif
144*14b24e2bSVaishali Kulkarni 
145