1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright(c) 2007 Intel Corporation. All rights reserved. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Maintained at www.Open-FCoE.org 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #ifndef _FC_GS_H_ 9*4882a593Smuzhiyun #define _FC_GS_H_ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #include <linux/types.h> 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun /* 14*4882a593Smuzhiyun * Fibre Channel Services - Common Transport. 15*4882a593Smuzhiyun * From T11.org FC-GS-2 Rev 5.3 November 1998. 16*4882a593Smuzhiyun */ 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun struct fc_ct_hdr { 19*4882a593Smuzhiyun __u8 ct_rev; /* revision */ 20*4882a593Smuzhiyun __u8 ct_in_id[3]; /* N_Port ID of original requestor */ 21*4882a593Smuzhiyun __u8 ct_fs_type; /* type of fibre channel service */ 22*4882a593Smuzhiyun __u8 ct_fs_subtype; /* subtype */ 23*4882a593Smuzhiyun __u8 ct_options; 24*4882a593Smuzhiyun __u8 _ct_resvd1; 25*4882a593Smuzhiyun __be16 ct_cmd; /* command / response code */ 26*4882a593Smuzhiyun __be16 ct_mr_size; /* maximum / residual size */ 27*4882a593Smuzhiyun __u8 _ct_resvd2; 28*4882a593Smuzhiyun __u8 ct_reason; /* reject reason */ 29*4882a593Smuzhiyun __u8 ct_explan; /* reason code explanation */ 30*4882a593Smuzhiyun __u8 ct_vendor; /* vendor unique data */ 31*4882a593Smuzhiyun }; 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun #define FC_CT_HDR_LEN 16 /* expected sizeof (struct fc_ct_hdr) */ 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun enum fc_ct_rev { 36*4882a593Smuzhiyun FC_CT_REV = 1 /* common transport revision */ 37*4882a593Smuzhiyun }; 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun /* 40*4882a593Smuzhiyun * ct_fs_type values. 41*4882a593Smuzhiyun */ 42*4882a593Smuzhiyun enum fc_ct_fs_type { 43*4882a593Smuzhiyun FC_FST_ALIAS = 0xf8, /* alias service */ 44*4882a593Smuzhiyun FC_FST_MGMT = 0xfa, /* management service */ 45*4882a593Smuzhiyun FC_FST_TIME = 0xfb, /* time service */ 46*4882a593Smuzhiyun FC_FST_DIR = 0xfc, /* directory service */ 47*4882a593Smuzhiyun }; 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun /* 50*4882a593Smuzhiyun * ct_cmd: Command / response codes 51*4882a593Smuzhiyun */ 52*4882a593Smuzhiyun enum fc_ct_cmd { 53*4882a593Smuzhiyun FC_FS_RJT = 0x8001, /* reject */ 54*4882a593Smuzhiyun FC_FS_ACC = 0x8002, /* accept */ 55*4882a593Smuzhiyun }; 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun /* 58*4882a593Smuzhiyun * FS_RJT reason codes. 59*4882a593Smuzhiyun */ 60*4882a593Smuzhiyun enum fc_ct_reason { 61*4882a593Smuzhiyun FC_FS_RJT_CMD = 0x01, /* invalid command code */ 62*4882a593Smuzhiyun FC_FS_RJT_VER = 0x02, /* invalid version level */ 63*4882a593Smuzhiyun FC_FS_RJT_LOG = 0x03, /* logical error */ 64*4882a593Smuzhiyun FC_FS_RJT_IUSIZ = 0x04, /* invalid IU size */ 65*4882a593Smuzhiyun FC_FS_RJT_BSY = 0x05, /* logical busy */ 66*4882a593Smuzhiyun FC_FS_RJT_PROTO = 0x07, /* protocol error */ 67*4882a593Smuzhiyun FC_FS_RJT_UNABL = 0x09, /* unable to perform command request */ 68*4882a593Smuzhiyun FC_FS_RJT_UNSUP = 0x0b, /* command not supported */ 69*4882a593Smuzhiyun }; 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun /* 72*4882a593Smuzhiyun * FS_RJT reason code explanations. 73*4882a593Smuzhiyun */ 74*4882a593Smuzhiyun enum fc_ct_explan { 75*4882a593Smuzhiyun FC_FS_EXP_NONE = 0x00, /* no additional explanation */ 76*4882a593Smuzhiyun FC_FS_EXP_PID = 0x01, /* port ID not registered */ 77*4882a593Smuzhiyun FC_FS_EXP_PNAM = 0x02, /* port name not registered */ 78*4882a593Smuzhiyun FC_FS_EXP_NNAM = 0x03, /* node name not registered */ 79*4882a593Smuzhiyun FC_FS_EXP_COS = 0x04, /* class of service not registered */ 80*4882a593Smuzhiyun FC_FS_EXP_FTNR = 0x07, /* FC-4 types not registered */ 81*4882a593Smuzhiyun /* definitions not complete */ 82*4882a593Smuzhiyun }; 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun #endif /* _FC_GS_H_ */ 85