1a3667aaeSNaresh Kumar Inna /* 2a3667aaeSNaresh Kumar Inna * This file is part of the Chelsio FCoE driver for Linux. 3a3667aaeSNaresh Kumar Inna * 4a3667aaeSNaresh Kumar Inna * Copyright (c) 2009-2010 Chelsio Communications, Inc. All rights reserved. 5a3667aaeSNaresh Kumar Inna * 6a3667aaeSNaresh Kumar Inna * This software is available to you under a choice of one of two 7a3667aaeSNaresh Kumar Inna * licenses. You may choose to be licensed under the terms of the GNU 8a3667aaeSNaresh Kumar Inna * General Public License (GPL) Version 2, available from the file 9a3667aaeSNaresh Kumar Inna * COPYING in the main directory of this source tree, or the 10a3667aaeSNaresh Kumar Inna * OpenIB.org BSD license below: 11a3667aaeSNaresh Kumar Inna * 12a3667aaeSNaresh Kumar Inna * Redistribution and use in source and binary forms, with or 13a3667aaeSNaresh Kumar Inna * without modification, are permitted provided that the following 14a3667aaeSNaresh Kumar Inna * conditions are met: 15a3667aaeSNaresh Kumar Inna * 16a3667aaeSNaresh Kumar Inna * - Redistributions of source code must retain the above 17a3667aaeSNaresh Kumar Inna * copyright notice, this list of conditions and the following 18a3667aaeSNaresh Kumar Inna * disclaimer. 19a3667aaeSNaresh Kumar Inna * 20a3667aaeSNaresh Kumar Inna * - Redistributions in binary form must reproduce the above 21a3667aaeSNaresh Kumar Inna * copyright notice, this list of conditions and the following 22a3667aaeSNaresh Kumar Inna * disclaimer in the documentation and/or other materials 23a3667aaeSNaresh Kumar Inna * provided with the distribution. 24a3667aaeSNaresh Kumar Inna * 25a3667aaeSNaresh Kumar Inna * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 26a3667aaeSNaresh Kumar Inna * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 27a3667aaeSNaresh Kumar Inna * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 28a3667aaeSNaresh Kumar Inna * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 29a3667aaeSNaresh Kumar Inna * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 30a3667aaeSNaresh Kumar Inna * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 31a3667aaeSNaresh Kumar Inna * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 32a3667aaeSNaresh Kumar Inna * SOFTWARE. 33a3667aaeSNaresh Kumar Inna */ 34a3667aaeSNaresh Kumar Inna 35a3667aaeSNaresh Kumar Inna #ifndef _T4FW_API_STOR_H_ 36a3667aaeSNaresh Kumar Inna #define _T4FW_API_STOR_H_ 37a3667aaeSNaresh Kumar Inna 38a3667aaeSNaresh Kumar Inna 39a3667aaeSNaresh Kumar Inna /****************************************************************************** 40a3667aaeSNaresh Kumar Inna * R E T U R N V A L U E S 41a3667aaeSNaresh Kumar Inna ********************************/ 42a3667aaeSNaresh Kumar Inna 43a3667aaeSNaresh Kumar Inna enum fw_fcoe_link_sub_op { 44a3667aaeSNaresh Kumar Inna FCOE_LINK_DOWN = 0x0, 45a3667aaeSNaresh Kumar Inna FCOE_LINK_UP = 0x1, 46a3667aaeSNaresh Kumar Inna FCOE_LINK_COND = 0x2, 47a3667aaeSNaresh Kumar Inna }; 48a3667aaeSNaresh Kumar Inna 49a3667aaeSNaresh Kumar Inna enum fw_fcoe_link_status { 50a3667aaeSNaresh Kumar Inna FCOE_LINKDOWN = 0x0, 51a3667aaeSNaresh Kumar Inna FCOE_LINKUP = 0x1, 52a3667aaeSNaresh Kumar Inna }; 53a3667aaeSNaresh Kumar Inna 54a3667aaeSNaresh Kumar Inna enum fw_ofld_prot { 55a3667aaeSNaresh Kumar Inna PROT_FCOE = 0x1, 56a3667aaeSNaresh Kumar Inna PROT_ISCSI = 0x2, 57a3667aaeSNaresh Kumar Inna }; 58a3667aaeSNaresh Kumar Inna 59a3667aaeSNaresh Kumar Inna enum rport_type_fcoe { 60a3667aaeSNaresh Kumar Inna FLOGI_VFPORT = 0x1, /* 0xfffffe */ 61a3667aaeSNaresh Kumar Inna FDISC_VFPORT = 0x2, /* 0xfffffe */ 62a3667aaeSNaresh Kumar Inna NS_VNPORT = 0x3, /* 0xfffffc */ 63a3667aaeSNaresh Kumar Inna REG_FC4_VNPORT = 0x4, /* any FC4 type VN_PORT */ 64a3667aaeSNaresh Kumar Inna REG_VNPORT = 0x5, /* 0xfffxxx - non FC4 port in switch */ 65a3667aaeSNaresh Kumar Inna FDMI_VNPORT = 0x6, /* 0xfffffa */ 66a3667aaeSNaresh Kumar Inna FAB_CTLR_VNPORT = 0x7, /* 0xfffffd */ 67a3667aaeSNaresh Kumar Inna }; 68a3667aaeSNaresh Kumar Inna 69a3667aaeSNaresh Kumar Inna enum event_cause_fcoe { 70a3667aaeSNaresh Kumar Inna PLOGI_ACC_RCVD = 0x01, 71a3667aaeSNaresh Kumar Inna PLOGI_RJT_RCVD = 0x02, 72a3667aaeSNaresh Kumar Inna PLOGI_RCVD = 0x03, 73a3667aaeSNaresh Kumar Inna PLOGO_RCVD = 0x04, 74a3667aaeSNaresh Kumar Inna PRLI_ACC_RCVD = 0x05, 75a3667aaeSNaresh Kumar Inna PRLI_RJT_RCVD = 0x06, 76a3667aaeSNaresh Kumar Inna PRLI_RCVD = 0x07, 77a3667aaeSNaresh Kumar Inna PRLO_RCVD = 0x08, 78a3667aaeSNaresh Kumar Inna NPORT_ID_CHGD = 0x09, 79a3667aaeSNaresh Kumar Inna FLOGO_RCVD = 0x0a, 80a3667aaeSNaresh Kumar Inna CLR_VIRT_LNK_RCVD = 0x0b, 81a3667aaeSNaresh Kumar Inna FLOGI_ACC_RCVD = 0x0c, 82a3667aaeSNaresh Kumar Inna FLOGI_RJT_RCVD = 0x0d, 83a3667aaeSNaresh Kumar Inna FDISC_ACC_RCVD = 0x0e, 84a3667aaeSNaresh Kumar Inna FDISC_RJT_RCVD = 0x0f, 85a3667aaeSNaresh Kumar Inna FLOGI_TMO_MAX_RETRY = 0x10, 86a3667aaeSNaresh Kumar Inna IMPL_LOGO_ADISC_ACC = 0x11, 87a3667aaeSNaresh Kumar Inna IMPL_LOGO_ADISC_RJT = 0x12, 88a3667aaeSNaresh Kumar Inna IMPL_LOGO_ADISC_CNFLT = 0x13, 89a3667aaeSNaresh Kumar Inna PRLI_TMO = 0x14, 90a3667aaeSNaresh Kumar Inna ADISC_TMO = 0x15, 91a3667aaeSNaresh Kumar Inna RSCN_DEV_LOST = 0x16, 92a3667aaeSNaresh Kumar Inna SCR_ACC_RCVD = 0x17, 93a3667aaeSNaresh Kumar Inna ADISC_RJT_RCVD = 0x18, 94a3667aaeSNaresh Kumar Inna LOGO_SNT = 0x19, 95a3667aaeSNaresh Kumar Inna PROTO_ERR_IMPL_LOGO = 0x1a, 96a3667aaeSNaresh Kumar Inna }; 97a3667aaeSNaresh Kumar Inna 98a3667aaeSNaresh Kumar Inna enum fcoe_cmn_type { 99a3667aaeSNaresh Kumar Inna FCOE_ELS, 100a3667aaeSNaresh Kumar Inna FCOE_CT, 101a3667aaeSNaresh Kumar Inna FCOE_SCSI_CMD, 102a3667aaeSNaresh Kumar Inna FCOE_UNSOL_ELS, 103a3667aaeSNaresh Kumar Inna }; 104a3667aaeSNaresh Kumar Inna 105a3667aaeSNaresh Kumar Inna enum fw_wr_stor_opcodes { 106a3667aaeSNaresh Kumar Inna FW_RDEV_WR = 0x38, 107a3667aaeSNaresh Kumar Inna FW_FCOE_ELS_CT_WR = 0x30, 108a3667aaeSNaresh Kumar Inna FW_SCSI_WRITE_WR = 0x31, 109a3667aaeSNaresh Kumar Inna FW_SCSI_READ_WR = 0x32, 110a3667aaeSNaresh Kumar Inna FW_SCSI_CMD_WR = 0x33, 111a3667aaeSNaresh Kumar Inna FW_SCSI_ABRT_CLS_WR = 0x34, 112a3667aaeSNaresh Kumar Inna }; 113a3667aaeSNaresh Kumar Inna 114a3667aaeSNaresh Kumar Inna struct fw_rdev_wr { 115a3667aaeSNaresh Kumar Inna __be32 op_to_immdlen; 116a3667aaeSNaresh Kumar Inna __be32 alloc_to_len16; 117a3667aaeSNaresh Kumar Inna __be64 cookie; 118a3667aaeSNaresh Kumar Inna u8 protocol; 119a3667aaeSNaresh Kumar Inna u8 event_cause; 120a3667aaeSNaresh Kumar Inna u8 cur_state; 121a3667aaeSNaresh Kumar Inna u8 prev_state; 122a3667aaeSNaresh Kumar Inna __be32 flags_to_assoc_flowid; 123a3667aaeSNaresh Kumar Inna union rdev_entry { 124a3667aaeSNaresh Kumar Inna struct fcoe_rdev_entry { 125a3667aaeSNaresh Kumar Inna __be32 flowid; 126a3667aaeSNaresh Kumar Inna u8 protocol; 127a3667aaeSNaresh Kumar Inna u8 event_cause; 128a3667aaeSNaresh Kumar Inna u8 flags; 129a3667aaeSNaresh Kumar Inna u8 rjt_reason; 130a3667aaeSNaresh Kumar Inna u8 cur_login_st; 131a3667aaeSNaresh Kumar Inna u8 prev_login_st; 132a3667aaeSNaresh Kumar Inna __be16 rcv_fr_sz; 133a3667aaeSNaresh Kumar Inna u8 rd_xfer_rdy_to_rport_type; 134a3667aaeSNaresh Kumar Inna u8 vft_to_qos; 135a3667aaeSNaresh Kumar Inna u8 org_proc_assoc_to_acc_rsp_code; 136a3667aaeSNaresh Kumar Inna u8 enh_disc_to_tgt; 137a3667aaeSNaresh Kumar Inna u8 wwnn[8]; 138a3667aaeSNaresh Kumar Inna u8 wwpn[8]; 139a3667aaeSNaresh Kumar Inna __be16 iqid; 140a3667aaeSNaresh Kumar Inna u8 fc_oui[3]; 141a3667aaeSNaresh Kumar Inna u8 r_id[3]; 142a3667aaeSNaresh Kumar Inna } fcoe_rdev; 143a3667aaeSNaresh Kumar Inna struct iscsi_rdev_entry { 144a3667aaeSNaresh Kumar Inna __be32 flowid; 145a3667aaeSNaresh Kumar Inna u8 protocol; 146a3667aaeSNaresh Kumar Inna u8 event_cause; 147a3667aaeSNaresh Kumar Inna u8 flags; 148a3667aaeSNaresh Kumar Inna u8 r3; 149a3667aaeSNaresh Kumar Inna __be16 iscsi_opts; 150a3667aaeSNaresh Kumar Inna __be16 tcp_opts; 151a3667aaeSNaresh Kumar Inna __be16 ip_opts; 152a3667aaeSNaresh Kumar Inna __be16 max_rcv_len; 153a3667aaeSNaresh Kumar Inna __be16 max_snd_len; 154a3667aaeSNaresh Kumar Inna __be16 first_brst_len; 155a3667aaeSNaresh Kumar Inna __be16 max_brst_len; 156a3667aaeSNaresh Kumar Inna __be16 r4; 157a3667aaeSNaresh Kumar Inna __be16 def_time2wait; 158a3667aaeSNaresh Kumar Inna __be16 def_time2ret; 159a3667aaeSNaresh Kumar Inna __be16 nop_out_intrvl; 160a3667aaeSNaresh Kumar Inna __be16 non_scsi_to; 161a3667aaeSNaresh Kumar Inna __be16 isid; 162a3667aaeSNaresh Kumar Inna __be16 tsid; 163a3667aaeSNaresh Kumar Inna __be16 port; 164a3667aaeSNaresh Kumar Inna __be16 tpgt; 165a3667aaeSNaresh Kumar Inna u8 r5[6]; 166a3667aaeSNaresh Kumar Inna __be16 iqid; 167a3667aaeSNaresh Kumar Inna } iscsi_rdev; 168a3667aaeSNaresh Kumar Inna } u; 169a3667aaeSNaresh Kumar Inna }; 170a3667aaeSNaresh Kumar Inna 171a3667aaeSNaresh Kumar Inna #define FW_RDEV_WR_FLOWID_GET(x) (((x) >> 8) & 0xfffff) 172a3667aaeSNaresh Kumar Inna #define FW_RDEV_WR_ASSOC_FLOWID_GET(x) (((x) >> 0) & 0xfffff) 173a3667aaeSNaresh Kumar Inna #define FW_RDEV_WR_RPORT_TYPE_GET(x) (((x) >> 0) & 0x1f) 174a3667aaeSNaresh Kumar Inna #define FW_RDEV_WR_NPIV_GET(x) (((x) >> 6) & 0x1) 175a3667aaeSNaresh Kumar Inna #define FW_RDEV_WR_CLASS_GET(x) (((x) >> 4) & 0x3) 176a3667aaeSNaresh Kumar Inna #define FW_RDEV_WR_TASK_RETRY_ID_GET(x) (((x) >> 5) & 0x1) 177a3667aaeSNaresh Kumar Inna #define FW_RDEV_WR_RETRY_GET(x) (((x) >> 4) & 0x1) 178a3667aaeSNaresh Kumar Inna #define FW_RDEV_WR_CONF_CMPL_GET(x) (((x) >> 3) & 0x1) 179a3667aaeSNaresh Kumar Inna #define FW_RDEV_WR_INI_GET(x) (((x) >> 1) & 0x1) 180a3667aaeSNaresh Kumar Inna #define FW_RDEV_WR_TGT_GET(x) (((x) >> 0) & 0x1) 181a3667aaeSNaresh Kumar Inna 182a3667aaeSNaresh Kumar Inna struct fw_fcoe_els_ct_wr { 183a3667aaeSNaresh Kumar Inna __be32 op_immdlen; 184a3667aaeSNaresh Kumar Inna __be32 flowid_len16; 1855036f0a0SNaresh Kumar Inna u64 cookie; 186a3667aaeSNaresh Kumar Inna __be16 iqid; 187a3667aaeSNaresh Kumar Inna u8 tmo_val; 188a3667aaeSNaresh Kumar Inna u8 els_ct_type; 189a3667aaeSNaresh Kumar Inna u8 ctl_pri; 190a3667aaeSNaresh Kumar Inna u8 cp_en_class; 191a3667aaeSNaresh Kumar Inna __be16 xfer_cnt; 192a3667aaeSNaresh Kumar Inna u8 fl_to_sp; 193a3667aaeSNaresh Kumar Inna u8 l_id[3]; 194a3667aaeSNaresh Kumar Inna u8 r5; 195a3667aaeSNaresh Kumar Inna u8 r_id[3]; 196a3667aaeSNaresh Kumar Inna __be64 rsp_dmaaddr; 197a3667aaeSNaresh Kumar Inna __be32 rsp_dmalen; 198a3667aaeSNaresh Kumar Inna __be32 r6; 199a3667aaeSNaresh Kumar Inna }; 200a3667aaeSNaresh Kumar Inna 201a3667aaeSNaresh Kumar Inna #define FW_FCOE_ELS_CT_WR_OPCODE(x) ((x) << 24) 202a3667aaeSNaresh Kumar Inna #define FW_FCOE_ELS_CT_WR_OPCODE_GET(x) (((x) >> 24) & 0xff) 203a3667aaeSNaresh Kumar Inna #define FW_FCOE_ELS_CT_WR_IMMDLEN(x) ((x) << 0) 204a3667aaeSNaresh Kumar Inna #define FW_FCOE_ELS_CT_WR_IMMDLEN_GET(x) (((x) >> 0) & 0xff) 205a3667aaeSNaresh Kumar Inna #define FW_FCOE_ELS_CT_WR_SP(x) ((x) << 0) 206a3667aaeSNaresh Kumar Inna 207a3667aaeSNaresh Kumar Inna struct fw_scsi_write_wr { 208a3667aaeSNaresh Kumar Inna __be32 op_immdlen; 209a3667aaeSNaresh Kumar Inna __be32 flowid_len16; 2105036f0a0SNaresh Kumar Inna u64 cookie; 211a3667aaeSNaresh Kumar Inna __be16 iqid; 212a3667aaeSNaresh Kumar Inna u8 tmo_val; 213a3667aaeSNaresh Kumar Inna u8 use_xfer_cnt; 214a3667aaeSNaresh Kumar Inna union fw_scsi_write_priv { 215a3667aaeSNaresh Kumar Inna struct fcoe_write_priv { 216a3667aaeSNaresh Kumar Inna u8 ctl_pri; 217a3667aaeSNaresh Kumar Inna u8 cp_en_class; 218a3667aaeSNaresh Kumar Inna u8 r3_lo[2]; 219a3667aaeSNaresh Kumar Inna } fcoe; 220a3667aaeSNaresh Kumar Inna struct iscsi_write_priv { 221a3667aaeSNaresh Kumar Inna u8 r3[4]; 222a3667aaeSNaresh Kumar Inna } iscsi; 223a3667aaeSNaresh Kumar Inna } u; 224a3667aaeSNaresh Kumar Inna __be32 xfer_cnt; 225a3667aaeSNaresh Kumar Inna __be32 ini_xfer_cnt; 226a3667aaeSNaresh Kumar Inna __be64 rsp_dmaaddr; 227a3667aaeSNaresh Kumar Inna __be32 rsp_dmalen; 228a3667aaeSNaresh Kumar Inna __be32 r4; 229a3667aaeSNaresh Kumar Inna }; 230a3667aaeSNaresh Kumar Inna 231a3667aaeSNaresh Kumar Inna #define FW_SCSI_WRITE_WR_IMMDLEN(x) ((x) << 0) 232a3667aaeSNaresh Kumar Inna 233a3667aaeSNaresh Kumar Inna struct fw_scsi_read_wr { 234a3667aaeSNaresh Kumar Inna __be32 op_immdlen; 235a3667aaeSNaresh Kumar Inna __be32 flowid_len16; 2365036f0a0SNaresh Kumar Inna u64 cookie; 237a3667aaeSNaresh Kumar Inna __be16 iqid; 238a3667aaeSNaresh Kumar Inna u8 tmo_val; 239a3667aaeSNaresh Kumar Inna u8 use_xfer_cnt; 240a3667aaeSNaresh Kumar Inna union fw_scsi_read_priv { 241a3667aaeSNaresh Kumar Inna struct fcoe_read_priv { 242a3667aaeSNaresh Kumar Inna u8 ctl_pri; 243a3667aaeSNaresh Kumar Inna u8 cp_en_class; 244a3667aaeSNaresh Kumar Inna u8 r3_lo[2]; 245a3667aaeSNaresh Kumar Inna } fcoe; 246a3667aaeSNaresh Kumar Inna struct iscsi_read_priv { 247a3667aaeSNaresh Kumar Inna u8 r3[4]; 248a3667aaeSNaresh Kumar Inna } iscsi; 249a3667aaeSNaresh Kumar Inna } u; 250a3667aaeSNaresh Kumar Inna __be32 xfer_cnt; 251a3667aaeSNaresh Kumar Inna __be32 ini_xfer_cnt; 252a3667aaeSNaresh Kumar Inna __be64 rsp_dmaaddr; 253a3667aaeSNaresh Kumar Inna __be32 rsp_dmalen; 254a3667aaeSNaresh Kumar Inna __be32 r4; 255a3667aaeSNaresh Kumar Inna }; 256a3667aaeSNaresh Kumar Inna 257a3667aaeSNaresh Kumar Inna #define FW_SCSI_READ_WR_IMMDLEN(x) ((x) << 0) 258a3667aaeSNaresh Kumar Inna 259a3667aaeSNaresh Kumar Inna struct fw_scsi_cmd_wr { 260a3667aaeSNaresh Kumar Inna __be32 op_immdlen; 261a3667aaeSNaresh Kumar Inna __be32 flowid_len16; 2625036f0a0SNaresh Kumar Inna u64 cookie; 263a3667aaeSNaresh Kumar Inna __be16 iqid; 264a3667aaeSNaresh Kumar Inna u8 tmo_val; 265a3667aaeSNaresh Kumar Inna u8 r3; 266a3667aaeSNaresh Kumar Inna union fw_scsi_cmd_priv { 267a3667aaeSNaresh Kumar Inna struct fcoe_cmd_priv { 268a3667aaeSNaresh Kumar Inna u8 ctl_pri; 269a3667aaeSNaresh Kumar Inna u8 cp_en_class; 270a3667aaeSNaresh Kumar Inna u8 r4_lo[2]; 271a3667aaeSNaresh Kumar Inna } fcoe; 272a3667aaeSNaresh Kumar Inna struct iscsi_cmd_priv { 273a3667aaeSNaresh Kumar Inna u8 r4[4]; 274a3667aaeSNaresh Kumar Inna } iscsi; 275a3667aaeSNaresh Kumar Inna } u; 276a3667aaeSNaresh Kumar Inna u8 r5[8]; 277a3667aaeSNaresh Kumar Inna __be64 rsp_dmaaddr; 278a3667aaeSNaresh Kumar Inna __be32 rsp_dmalen; 279a3667aaeSNaresh Kumar Inna __be32 r6; 280a3667aaeSNaresh Kumar Inna }; 281a3667aaeSNaresh Kumar Inna 282a3667aaeSNaresh Kumar Inna #define FW_SCSI_CMD_WR_IMMDLEN(x) ((x) << 0) 283a3667aaeSNaresh Kumar Inna 284a3667aaeSNaresh Kumar Inna #define SCSI_ABORT 0 285a3667aaeSNaresh Kumar Inna #define SCSI_CLOSE 1 286a3667aaeSNaresh Kumar Inna 287a3667aaeSNaresh Kumar Inna struct fw_scsi_abrt_cls_wr { 288a3667aaeSNaresh Kumar Inna __be32 op_immdlen; 289a3667aaeSNaresh Kumar Inna __be32 flowid_len16; 2905036f0a0SNaresh Kumar Inna u64 cookie; 291a3667aaeSNaresh Kumar Inna __be16 iqid; 292a3667aaeSNaresh Kumar Inna u8 tmo_val; 293a3667aaeSNaresh Kumar Inna u8 sub_opcode_to_chk_all_io; 294a3667aaeSNaresh Kumar Inna u8 r3[4]; 2955036f0a0SNaresh Kumar Inna u64 t_cookie; 296a3667aaeSNaresh Kumar Inna }; 297a3667aaeSNaresh Kumar Inna 298a3667aaeSNaresh Kumar Inna #define FW_SCSI_ABRT_CLS_WR_SUB_OPCODE(x) ((x) << 2) 299a3667aaeSNaresh Kumar Inna #define FW_SCSI_ABRT_CLS_WR_SUB_OPCODE_GET(x) (((x) >> 2) & 0x3f) 300a3667aaeSNaresh Kumar Inna #define FW_SCSI_ABRT_CLS_WR_CHK_ALL_IO(x) ((x) << 0) 301a3667aaeSNaresh Kumar Inna 302a3667aaeSNaresh Kumar Inna enum fw_cmd_stor_opcodes { 303a3667aaeSNaresh Kumar Inna FW_FCOE_RES_INFO_CMD = 0x31, 304a3667aaeSNaresh Kumar Inna FW_FCOE_LINK_CMD = 0x32, 305a3667aaeSNaresh Kumar Inna FW_FCOE_VNP_CMD = 0x33, 306a3667aaeSNaresh Kumar Inna FW_FCOE_SPARAMS_CMD = 0x35, 307a3667aaeSNaresh Kumar Inna FW_FCOE_STATS_CMD = 0x37, 308a3667aaeSNaresh Kumar Inna FW_FCOE_FCF_CMD = 0x38, 309a3667aaeSNaresh Kumar Inna }; 310a3667aaeSNaresh Kumar Inna 311a3667aaeSNaresh Kumar Inna struct fw_fcoe_res_info_cmd { 312a3667aaeSNaresh Kumar Inna __be32 op_to_read; 313a3667aaeSNaresh Kumar Inna __be32 retval_len16; 314a3667aaeSNaresh Kumar Inna __be16 e_d_tov; 315a3667aaeSNaresh Kumar Inna __be16 r_a_tov_seq; 316a3667aaeSNaresh Kumar Inna __be16 r_a_tov_els; 317a3667aaeSNaresh Kumar Inna __be16 r_r_tov; 318a3667aaeSNaresh Kumar Inna __be32 max_xchgs; 319a3667aaeSNaresh Kumar Inna __be32 max_ssns; 320a3667aaeSNaresh Kumar Inna __be32 used_xchgs; 321a3667aaeSNaresh Kumar Inna __be32 used_ssns; 322a3667aaeSNaresh Kumar Inna __be32 max_fcfs; 323a3667aaeSNaresh Kumar Inna __be32 max_vnps; 324a3667aaeSNaresh Kumar Inna __be32 used_fcfs; 325a3667aaeSNaresh Kumar Inna __be32 used_vnps; 326a3667aaeSNaresh Kumar Inna }; 327a3667aaeSNaresh Kumar Inna 328a3667aaeSNaresh Kumar Inna struct fw_fcoe_link_cmd { 329a3667aaeSNaresh Kumar Inna __be32 op_to_portid; 330a3667aaeSNaresh Kumar Inna __be32 retval_len16; 331a3667aaeSNaresh Kumar Inna __be32 sub_opcode_fcfi; 332a3667aaeSNaresh Kumar Inna u8 r3; 333a3667aaeSNaresh Kumar Inna u8 lstatus; 334a3667aaeSNaresh Kumar Inna __be16 flags; 335a3667aaeSNaresh Kumar Inna u8 r4; 336a3667aaeSNaresh Kumar Inna u8 set_vlan; 337a3667aaeSNaresh Kumar Inna __be16 vlan_id; 338a3667aaeSNaresh Kumar Inna __be32 vnpi_pkd; 339a3667aaeSNaresh Kumar Inna __be16 r6; 340a3667aaeSNaresh Kumar Inna u8 phy_mac[6]; 341a3667aaeSNaresh Kumar Inna u8 vnport_wwnn[8]; 342a3667aaeSNaresh Kumar Inna u8 vnport_wwpn[8]; 343a3667aaeSNaresh Kumar Inna }; 344a3667aaeSNaresh Kumar Inna 345a3667aaeSNaresh Kumar Inna #define FW_FCOE_LINK_CMD_PORTID(x) ((x) << 0) 346a3667aaeSNaresh Kumar Inna #define FW_FCOE_LINK_CMD_PORTID_GET(x) (((x) >> 0) & 0xf) 347a3667aaeSNaresh Kumar Inna #define FW_FCOE_LINK_CMD_SUB_OPCODE(x) ((x) << 24U) 348a3667aaeSNaresh Kumar Inna #define FW_FCOE_LINK_CMD_FCFI(x) ((x) << 0) 349a3667aaeSNaresh Kumar Inna #define FW_FCOE_LINK_CMD_FCFI_GET(x) (((x) >> 0) & 0xffffff) 350a3667aaeSNaresh Kumar Inna #define FW_FCOE_LINK_CMD_VNPI_GET(x) (((x) >> 0) & 0xfffff) 351a3667aaeSNaresh Kumar Inna 352a3667aaeSNaresh Kumar Inna struct fw_fcoe_vnp_cmd { 353a3667aaeSNaresh Kumar Inna __be32 op_to_fcfi; 354a3667aaeSNaresh Kumar Inna __be32 alloc_to_len16; 355a3667aaeSNaresh Kumar Inna __be32 gen_wwn_to_vnpi; 356a3667aaeSNaresh Kumar Inna __be32 vf_id; 357a3667aaeSNaresh Kumar Inna __be16 iqid; 358a3667aaeSNaresh Kumar Inna u8 vnport_mac[6]; 359a3667aaeSNaresh Kumar Inna u8 vnport_wwnn[8]; 360a3667aaeSNaresh Kumar Inna u8 vnport_wwpn[8]; 361a3667aaeSNaresh Kumar Inna u8 cmn_srv_parms[16]; 362a3667aaeSNaresh Kumar Inna u8 clsp_word_0_1[8]; 363a3667aaeSNaresh Kumar Inna }; 364a3667aaeSNaresh Kumar Inna 365a3667aaeSNaresh Kumar Inna #define FW_FCOE_VNP_CMD_FCFI(x) ((x) << 0) 366a3667aaeSNaresh Kumar Inna #define FW_FCOE_VNP_CMD_ALLOC (1U << 31) 367a3667aaeSNaresh Kumar Inna #define FW_FCOE_VNP_CMD_FREE (1U << 30) 368a3667aaeSNaresh Kumar Inna #define FW_FCOE_VNP_CMD_MODIFY (1U << 29) 369a3667aaeSNaresh Kumar Inna #define FW_FCOE_VNP_CMD_GEN_WWN (1U << 22) 370a3667aaeSNaresh Kumar Inna #define FW_FCOE_VNP_CMD_VFID_EN (1U << 20) 371a3667aaeSNaresh Kumar Inna #define FW_FCOE_VNP_CMD_VNPI(x) ((x) << 0) 372a3667aaeSNaresh Kumar Inna #define FW_FCOE_VNP_CMD_VNPI_GET(x) (((x) >> 0) & 0xfffff) 373a3667aaeSNaresh Kumar Inna 374a3667aaeSNaresh Kumar Inna struct fw_fcoe_sparams_cmd { 375a3667aaeSNaresh Kumar Inna __be32 op_to_portid; 376a3667aaeSNaresh Kumar Inna __be32 retval_len16; 377a3667aaeSNaresh Kumar Inna u8 r3[7]; 378a3667aaeSNaresh Kumar Inna u8 cos; 379a3667aaeSNaresh Kumar Inna u8 lport_wwnn[8]; 380a3667aaeSNaresh Kumar Inna u8 lport_wwpn[8]; 381a3667aaeSNaresh Kumar Inna u8 cmn_srv_parms[16]; 382a3667aaeSNaresh Kumar Inna u8 cls_srv_parms[16]; 383a3667aaeSNaresh Kumar Inna }; 384a3667aaeSNaresh Kumar Inna 385a3667aaeSNaresh Kumar Inna #define FW_FCOE_SPARAMS_CMD_PORTID(x) ((x) << 0) 386a3667aaeSNaresh Kumar Inna 387a3667aaeSNaresh Kumar Inna struct fw_fcoe_stats_cmd { 388a3667aaeSNaresh Kumar Inna __be32 op_to_flowid; 389a3667aaeSNaresh Kumar Inna __be32 free_to_len16; 390a3667aaeSNaresh Kumar Inna union fw_fcoe_stats { 391a3667aaeSNaresh Kumar Inna struct fw_fcoe_stats_ctl { 392a3667aaeSNaresh Kumar Inna u8 nstats_port; 393a3667aaeSNaresh Kumar Inna u8 port_valid_ix; 394a3667aaeSNaresh Kumar Inna __be16 r6; 395a3667aaeSNaresh Kumar Inna __be32 r7; 396a3667aaeSNaresh Kumar Inna __be64 stat0; 397a3667aaeSNaresh Kumar Inna __be64 stat1; 398a3667aaeSNaresh Kumar Inna __be64 stat2; 399a3667aaeSNaresh Kumar Inna __be64 stat3; 400a3667aaeSNaresh Kumar Inna __be64 stat4; 401a3667aaeSNaresh Kumar Inna __be64 stat5; 402a3667aaeSNaresh Kumar Inna } ctl; 403a3667aaeSNaresh Kumar Inna struct fw_fcoe_port_stats { 404a3667aaeSNaresh Kumar Inna __be64 tx_bcast_bytes; 405a3667aaeSNaresh Kumar Inna __be64 tx_bcast_frames; 406a3667aaeSNaresh Kumar Inna __be64 tx_mcast_bytes; 407a3667aaeSNaresh Kumar Inna __be64 tx_mcast_frames; 408a3667aaeSNaresh Kumar Inna __be64 tx_ucast_bytes; 409a3667aaeSNaresh Kumar Inna __be64 tx_ucast_frames; 410a3667aaeSNaresh Kumar Inna __be64 tx_drop_frames; 411a3667aaeSNaresh Kumar Inna __be64 tx_offload_bytes; 412a3667aaeSNaresh Kumar Inna __be64 tx_offload_frames; 413a3667aaeSNaresh Kumar Inna __be64 rx_bcast_bytes; 414a3667aaeSNaresh Kumar Inna __be64 rx_bcast_frames; 415a3667aaeSNaresh Kumar Inna __be64 rx_mcast_bytes; 416a3667aaeSNaresh Kumar Inna __be64 rx_mcast_frames; 417a3667aaeSNaresh Kumar Inna __be64 rx_ucast_bytes; 418a3667aaeSNaresh Kumar Inna __be64 rx_ucast_frames; 419a3667aaeSNaresh Kumar Inna __be64 rx_err_frames; 420a3667aaeSNaresh Kumar Inna } port_stats; 421a3667aaeSNaresh Kumar Inna struct fw_fcoe_fcf_stats { 422a3667aaeSNaresh Kumar Inna __be32 fip_tx_bytes; 423a3667aaeSNaresh Kumar Inna __be32 fip_tx_fr; 424a3667aaeSNaresh Kumar Inna __be64 fcf_ka; 425a3667aaeSNaresh Kumar Inna __be64 mcast_adv_rcvd; 426a3667aaeSNaresh Kumar Inna __be16 ucast_adv_rcvd; 427a3667aaeSNaresh Kumar Inna __be16 sol_sent; 428a3667aaeSNaresh Kumar Inna __be16 vlan_req; 429a3667aaeSNaresh Kumar Inna __be16 vlan_rpl; 430a3667aaeSNaresh Kumar Inna __be16 clr_vlink; 431a3667aaeSNaresh Kumar Inna __be16 link_down; 432a3667aaeSNaresh Kumar Inna __be16 link_up; 433a3667aaeSNaresh Kumar Inna __be16 logo; 434a3667aaeSNaresh Kumar Inna __be16 flogi_req; 435a3667aaeSNaresh Kumar Inna __be16 flogi_rpl; 436a3667aaeSNaresh Kumar Inna __be16 fdisc_req; 437a3667aaeSNaresh Kumar Inna __be16 fdisc_rpl; 438a3667aaeSNaresh Kumar Inna __be16 fka_prd_chg; 439a3667aaeSNaresh Kumar Inna __be16 fc_map_chg; 440a3667aaeSNaresh Kumar Inna __be16 vfid_chg; 441a3667aaeSNaresh Kumar Inna u8 no_fka_req; 442a3667aaeSNaresh Kumar Inna u8 no_vnp; 443a3667aaeSNaresh Kumar Inna } fcf_stats; 444a3667aaeSNaresh Kumar Inna struct fw_fcoe_pcb_stats { 445a3667aaeSNaresh Kumar Inna __be64 tx_bytes; 446a3667aaeSNaresh Kumar Inna __be64 tx_frames; 447a3667aaeSNaresh Kumar Inna __be64 rx_bytes; 448a3667aaeSNaresh Kumar Inna __be64 rx_frames; 449a3667aaeSNaresh Kumar Inna __be32 vnp_ka; 450a3667aaeSNaresh Kumar Inna __be32 unsol_els_rcvd; 451a3667aaeSNaresh Kumar Inna __be64 unsol_cmd_rcvd; 452a3667aaeSNaresh Kumar Inna __be16 implicit_logo; 453a3667aaeSNaresh Kumar Inna __be16 flogi_inv_sparm; 454a3667aaeSNaresh Kumar Inna __be16 fdisc_inv_sparm; 455a3667aaeSNaresh Kumar Inna __be16 flogi_rjt; 456a3667aaeSNaresh Kumar Inna __be16 fdisc_rjt; 457a3667aaeSNaresh Kumar Inna __be16 no_ssn; 458a3667aaeSNaresh Kumar Inna __be16 mac_flt_fail; 459a3667aaeSNaresh Kumar Inna __be16 inv_fr_rcvd; 460a3667aaeSNaresh Kumar Inna } pcb_stats; 461a3667aaeSNaresh Kumar Inna struct fw_fcoe_scb_stats { 462a3667aaeSNaresh Kumar Inna __be64 tx_bytes; 463a3667aaeSNaresh Kumar Inna __be64 tx_frames; 464a3667aaeSNaresh Kumar Inna __be64 rx_bytes; 465a3667aaeSNaresh Kumar Inna __be64 rx_frames; 466a3667aaeSNaresh Kumar Inna __be32 host_abrt_req; 467a3667aaeSNaresh Kumar Inna __be32 adap_auto_abrt; 468a3667aaeSNaresh Kumar Inna __be32 adap_abrt_rsp; 469a3667aaeSNaresh Kumar Inna __be32 host_ios_req; 470a3667aaeSNaresh Kumar Inna __be16 ssn_offl_ios; 471a3667aaeSNaresh Kumar Inna __be16 ssn_not_rdy_ios; 472a3667aaeSNaresh Kumar Inna u8 rx_data_ddp_err; 473a3667aaeSNaresh Kumar Inna u8 ddp_flt_set_err; 474a3667aaeSNaresh Kumar Inna __be16 rx_data_fr_err; 475a3667aaeSNaresh Kumar Inna u8 bad_st_abrt_req; 476a3667aaeSNaresh Kumar Inna u8 no_io_abrt_req; 477a3667aaeSNaresh Kumar Inna u8 abort_tmo; 478a3667aaeSNaresh Kumar Inna u8 abort_tmo_2; 479a3667aaeSNaresh Kumar Inna __be32 abort_req; 480a3667aaeSNaresh Kumar Inna u8 no_ppod_res_tmo; 481a3667aaeSNaresh Kumar Inna u8 bp_tmo; 482a3667aaeSNaresh Kumar Inna u8 adap_auto_cls; 483a3667aaeSNaresh Kumar Inna u8 no_io_cls_req; 484a3667aaeSNaresh Kumar Inna __be32 host_cls_req; 485a3667aaeSNaresh Kumar Inna __be64 unsol_cmd_rcvd; 486a3667aaeSNaresh Kumar Inna __be32 plogi_req_rcvd; 487a3667aaeSNaresh Kumar Inna __be32 prli_req_rcvd; 488a3667aaeSNaresh Kumar Inna __be16 logo_req_rcvd; 489a3667aaeSNaresh Kumar Inna __be16 prlo_req_rcvd; 490a3667aaeSNaresh Kumar Inna __be16 plogi_rjt_rcvd; 491a3667aaeSNaresh Kumar Inna __be16 prli_rjt_rcvd; 492a3667aaeSNaresh Kumar Inna __be32 adisc_req_rcvd; 493a3667aaeSNaresh Kumar Inna __be32 rscn_rcvd; 494a3667aaeSNaresh Kumar Inna __be32 rrq_req_rcvd; 495a3667aaeSNaresh Kumar Inna __be32 unsol_els_rcvd; 496a3667aaeSNaresh Kumar Inna u8 adisc_rjt_rcvd; 497a3667aaeSNaresh Kumar Inna u8 scr_rjt; 498a3667aaeSNaresh Kumar Inna u8 ct_rjt; 499a3667aaeSNaresh Kumar Inna u8 inval_bls_rcvd; 500a3667aaeSNaresh Kumar Inna __be32 ba_rjt_rcvd; 501a3667aaeSNaresh Kumar Inna } scb_stats; 502a3667aaeSNaresh Kumar Inna } u; 503a3667aaeSNaresh Kumar Inna }; 504a3667aaeSNaresh Kumar Inna 505a3667aaeSNaresh Kumar Inna #define FW_FCOE_STATS_CMD_FLOWID(x) ((x) << 0) 506a3667aaeSNaresh Kumar Inna #define FW_FCOE_STATS_CMD_FREE (1U << 30) 507a3667aaeSNaresh Kumar Inna #define FW_FCOE_STATS_CMD_NSTATS(x) ((x) << 4) 508a3667aaeSNaresh Kumar Inna #define FW_FCOE_STATS_CMD_PORT(x) ((x) << 0) 509a3667aaeSNaresh Kumar Inna #define FW_FCOE_STATS_CMD_PORT_VALID (1U << 7) 510a3667aaeSNaresh Kumar Inna #define FW_FCOE_STATS_CMD_IX(x) ((x) << 0) 511a3667aaeSNaresh Kumar Inna 512a3667aaeSNaresh Kumar Inna struct fw_fcoe_fcf_cmd { 513a3667aaeSNaresh Kumar Inna __be32 op_to_fcfi; 514a3667aaeSNaresh Kumar Inna __be32 retval_len16; 515a3667aaeSNaresh Kumar Inna __be16 priority_pkd; 516a3667aaeSNaresh Kumar Inna u8 mac[6]; 517a3667aaeSNaresh Kumar Inna u8 name_id[8]; 518a3667aaeSNaresh Kumar Inna u8 fabric[8]; 519a3667aaeSNaresh Kumar Inna __be16 vf_id; 520a3667aaeSNaresh Kumar Inna __be16 max_fcoe_size; 521a3667aaeSNaresh Kumar Inna u8 vlan_id; 522a3667aaeSNaresh Kumar Inna u8 fc_map[3]; 523a3667aaeSNaresh Kumar Inna __be32 fka_adv; 524a3667aaeSNaresh Kumar Inna __be32 r6; 525a3667aaeSNaresh Kumar Inna u8 r7_hi; 526a3667aaeSNaresh Kumar Inna u8 fpma_to_portid; 527a3667aaeSNaresh Kumar Inna u8 spma_mac[6]; 528a3667aaeSNaresh Kumar Inna __be64 r8; 529a3667aaeSNaresh Kumar Inna }; 530a3667aaeSNaresh Kumar Inna 531a3667aaeSNaresh Kumar Inna #define FW_FCOE_FCF_CMD_FCFI(x) ((x) << 0) 532a3667aaeSNaresh Kumar Inna #define FW_FCOE_FCF_CMD_FCFI_GET(x) (((x) >> 0) & 0xfffff) 533a3667aaeSNaresh Kumar Inna #define FW_FCOE_FCF_CMD_PRIORITY_GET(x) (((x) >> 0) & 0xff) 534a3667aaeSNaresh Kumar Inna #define FW_FCOE_FCF_CMD_FPMA_GET(x) (((x) >> 6) & 0x1) 535a3667aaeSNaresh Kumar Inna #define FW_FCOE_FCF_CMD_SPMA_GET(x) (((x) >> 5) & 0x1) 536a3667aaeSNaresh Kumar Inna #define FW_FCOE_FCF_CMD_LOGIN_GET(x) (((x) >> 4) & 0x1) 537a3667aaeSNaresh Kumar Inna #define FW_FCOE_FCF_CMD_PORTID_GET(x) (((x) >> 0) & 0xf) 538a3667aaeSNaresh Kumar Inna 539a3667aaeSNaresh Kumar Inna #endif /* _T4FW_API_STOR_H_ */ 540