bfad_bsg.h 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360
  1. /*
  2. * Copyright (c) 2005-2010 Brocade Communications Systems, Inc.
  3. * All rights reserved
  4. * www.brocade.com
  5. *
  6. * Linux driver for Brocade Fibre Channel Host Bus Adapter.
  7. *
  8. * This program is free software; you can redistribute it and/or modify it
  9. * under the terms of the GNU General Public License (GPL) Version 2 as
  10. * published by the Free Software Foundation
  11. *
  12. * This program is distributed in the hope that it will be useful, but
  13. * WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  15. * General Public License for more details.
  16. */
  17. #ifndef BFAD_BSG_H
  18. #define BFAD_BSG_H
  19. #include "bfa_defs.h"
  20. #include "bfa_defs_fcs.h"
  21. /* Definitions of vendor unique structures and command codes passed in
  22. * using FC_BSG_HST_VENDOR message code.
  23. */
  24. enum {
  25. IOCMD_IOC_ENABLE = 0x1,
  26. IOCMD_IOC_DISABLE,
  27. IOCMD_IOC_GET_ATTR,
  28. IOCMD_IOC_GET_INFO,
  29. IOCMD_IOC_GET_STATS,
  30. IOCMD_IOC_GET_FWSTATS,
  31. IOCMD_IOCFC_GET_ATTR,
  32. IOCMD_IOCFC_SET_INTR,
  33. IOCMD_PORT_ENABLE,
  34. IOCMD_PORT_DISABLE,
  35. IOCMD_PORT_GET_ATTR,
  36. IOCMD_PORT_GET_STATS,
  37. IOCMD_LPORT_GET_ATTR,
  38. IOCMD_LPORT_GET_RPORTS,
  39. IOCMD_LPORT_GET_STATS,
  40. IOCMD_LPORT_GET_IOSTATS,
  41. IOCMD_RPORT_GET_ATTR,
  42. IOCMD_RPORT_GET_ADDR,
  43. IOCMD_RPORT_GET_STATS,
  44. IOCMD_FABRIC_GET_LPORTS,
  45. IOCMD_FCPIM_MODSTATS,
  46. IOCMD_FCPIM_DEL_ITN_STATS,
  47. IOCMD_ITNIM_GET_ATTR,
  48. IOCMD_ITNIM_GET_IOSTATS,
  49. IOCMD_ITNIM_GET_ITNSTATS,
  50. IOCMD_IOC_PCIFN_CFG,
  51. IOCMD_FCPORT_ENABLE,
  52. IOCMD_FCPORT_DISABLE,
  53. IOCMD_PCIFN_CREATE,
  54. IOCMD_PCIFN_DELETE,
  55. IOCMD_PCIFN_BW,
  56. IOCMD_ADAPTER_CFG_MODE,
  57. IOCMD_PORT_CFG_MODE,
  58. IOCMD_FLASH_ENABLE_OPTROM,
  59. IOCMD_FLASH_DISABLE_OPTROM,
  60. IOCMD_FAA_ENABLE,
  61. IOCMD_FAA_DISABLE,
  62. IOCMD_FAA_QUERY,
  63. IOCMD_CEE_GET_ATTR,
  64. IOCMD_CEE_GET_STATS,
  65. IOCMD_CEE_RESET_STATS,
  66. IOCMD_SFP_MEDIA,
  67. IOCMD_SFP_SPEED,
  68. };
  69. struct bfa_bsg_gen_s {
  70. bfa_status_t status;
  71. u16 bfad_num;
  72. u16 rsvd;
  73. };
  74. struct bfa_bsg_ioc_info_s {
  75. bfa_status_t status;
  76. u16 bfad_num;
  77. u16 rsvd;
  78. char serialnum[64];
  79. char hwpath[BFA_STRING_32];
  80. char adapter_hwpath[BFA_STRING_32];
  81. char guid[BFA_ADAPTER_SYM_NAME_LEN*2];
  82. char name[BFA_ADAPTER_SYM_NAME_LEN];
  83. char port_name[BFA_ADAPTER_SYM_NAME_LEN];
  84. char eth_name[BFA_ADAPTER_SYM_NAME_LEN];
  85. wwn_t pwwn;
  86. wwn_t nwwn;
  87. wwn_t factorypwwn;
  88. wwn_t factorynwwn;
  89. mac_t mac;
  90. mac_t factory_mac; /* Factory mac address */
  91. mac_t current_mac; /* Currently assigned mac address */
  92. enum bfa_ioc_type_e ioc_type;
  93. u16 pvid; /* Port vlan id */
  94. u16 rsvd1;
  95. u32 host;
  96. u32 bandwidth; /* For PF support */
  97. u32 rsvd2;
  98. };
  99. struct bfa_bsg_ioc_attr_s {
  100. bfa_status_t status;
  101. u16 bfad_num;
  102. u16 rsvd;
  103. struct bfa_ioc_attr_s ioc_attr;
  104. };
  105. struct bfa_bsg_ioc_stats_s {
  106. bfa_status_t status;
  107. u16 bfad_num;
  108. u16 rsvd;
  109. struct bfa_ioc_stats_s ioc_stats;
  110. };
  111. struct bfa_bsg_ioc_fwstats_s {
  112. bfa_status_t status;
  113. u16 bfad_num;
  114. u16 rsvd;
  115. u32 buf_size;
  116. u32 rsvd1;
  117. u64 buf_ptr;
  118. };
  119. struct bfa_bsg_iocfc_attr_s {
  120. bfa_status_t status;
  121. u16 bfad_num;
  122. u16 rsvd;
  123. struct bfa_iocfc_attr_s iocfc_attr;
  124. };
  125. struct bfa_bsg_iocfc_intr_s {
  126. bfa_status_t status;
  127. u16 bfad_num;
  128. u16 rsvd;
  129. struct bfa_iocfc_intr_attr_s attr;
  130. };
  131. struct bfa_bsg_port_attr_s {
  132. bfa_status_t status;
  133. u16 bfad_num;
  134. u16 rsvd;
  135. struct bfa_port_attr_s attr;
  136. };
  137. struct bfa_bsg_port_stats_s {
  138. bfa_status_t status;
  139. u16 bfad_num;
  140. u16 rsvd;
  141. u32 buf_size;
  142. u32 rsvd1;
  143. u64 buf_ptr;
  144. };
  145. struct bfa_bsg_lport_attr_s {
  146. bfa_status_t status;
  147. u16 bfad_num;
  148. u16 vf_id;
  149. wwn_t pwwn;
  150. struct bfa_lport_attr_s port_attr;
  151. };
  152. struct bfa_bsg_lport_stats_s {
  153. bfa_status_t status;
  154. u16 bfad_num;
  155. u16 vf_id;
  156. wwn_t pwwn;
  157. struct bfa_lport_stats_s port_stats;
  158. };
  159. struct bfa_bsg_lport_iostats_s {
  160. bfa_status_t status;
  161. u16 bfad_num;
  162. u16 vf_id;
  163. wwn_t pwwn;
  164. struct bfa_itnim_iostats_s iostats;
  165. };
  166. struct bfa_bsg_lport_get_rports_s {
  167. bfa_status_t status;
  168. u16 bfad_num;
  169. u16 vf_id;
  170. wwn_t pwwn;
  171. u64 rbuf_ptr;
  172. u32 nrports;
  173. u32 rsvd;
  174. };
  175. struct bfa_bsg_rport_attr_s {
  176. bfa_status_t status;
  177. u16 bfad_num;
  178. u16 vf_id;
  179. wwn_t pwwn;
  180. wwn_t rpwwn;
  181. struct bfa_rport_attr_s attr;
  182. };
  183. struct bfa_bsg_rport_stats_s {
  184. bfa_status_t status;
  185. u16 bfad_num;
  186. u16 vf_id;
  187. wwn_t pwwn;
  188. wwn_t rpwwn;
  189. struct bfa_rport_stats_s stats;
  190. };
  191. struct bfa_bsg_rport_scsi_addr_s {
  192. bfa_status_t status;
  193. u16 bfad_num;
  194. u16 vf_id;
  195. wwn_t pwwn;
  196. wwn_t rpwwn;
  197. u32 host;
  198. u32 bus;
  199. u32 target;
  200. u32 lun;
  201. };
  202. struct bfa_bsg_fabric_get_lports_s {
  203. bfa_status_t status;
  204. u16 bfad_num;
  205. u16 vf_id;
  206. u64 buf_ptr;
  207. u32 nports;
  208. u32 rsvd;
  209. };
  210. struct bfa_bsg_fcpim_modstats_s {
  211. bfa_status_t status;
  212. u16 bfad_num;
  213. struct bfa_itnim_iostats_s modstats;
  214. };
  215. struct bfa_bsg_fcpim_del_itn_stats_s {
  216. bfa_status_t status;
  217. u16 bfad_num;
  218. struct bfa_fcpim_del_itn_stats_s modstats;
  219. };
  220. struct bfa_bsg_itnim_attr_s {
  221. bfa_status_t status;
  222. u16 bfad_num;
  223. u16 vf_id;
  224. wwn_t lpwwn;
  225. wwn_t rpwwn;
  226. struct bfa_itnim_attr_s attr;
  227. };
  228. struct bfa_bsg_itnim_iostats_s {
  229. bfa_status_t status;
  230. u16 bfad_num;
  231. u16 vf_id;
  232. wwn_t lpwwn;
  233. wwn_t rpwwn;
  234. struct bfa_itnim_iostats_s iostats;
  235. };
  236. struct bfa_bsg_itnim_itnstats_s {
  237. bfa_status_t status;
  238. u16 bfad_num;
  239. u16 vf_id;
  240. wwn_t lpwwn;
  241. wwn_t rpwwn;
  242. struct bfa_itnim_stats_s itnstats;
  243. };
  244. struct bfa_bsg_pcifn_cfg_s {
  245. bfa_status_t status;
  246. u16 bfad_num;
  247. u16 rsvd;
  248. struct bfa_ablk_cfg_s pcifn_cfg;
  249. };
  250. struct bfa_bsg_pcifn_s {
  251. bfa_status_t status;
  252. u16 bfad_num;
  253. u16 pcifn_id;
  254. u32 bandwidth;
  255. u8 port;
  256. enum bfi_pcifn_class pcifn_class;
  257. u8 rsvd[1];
  258. };
  259. struct bfa_bsg_adapter_cfg_mode_s {
  260. bfa_status_t status;
  261. u16 bfad_num;
  262. u16 rsvd;
  263. struct bfa_adapter_cfg_mode_s cfg;
  264. };
  265. struct bfa_bsg_port_cfg_mode_s {
  266. bfa_status_t status;
  267. u16 bfad_num;
  268. u16 instance;
  269. struct bfa_port_cfg_mode_s cfg;
  270. };
  271. struct bfa_bsg_faa_attr_s {
  272. bfa_status_t status;
  273. u16 bfad_num;
  274. u16 rsvd;
  275. struct bfa_faa_attr_s faa_attr;
  276. };
  277. struct bfa_bsg_cee_attr_s {
  278. bfa_status_t status;
  279. u16 bfad_num;
  280. u16 rsvd;
  281. u32 buf_size;
  282. u32 rsvd1;
  283. u64 buf_ptr;
  284. };
  285. struct bfa_bsg_cee_stats_s {
  286. bfa_status_t status;
  287. u16 bfad_num;
  288. u16 rsvd;
  289. u32 buf_size;
  290. u32 rsvd1;
  291. u64 buf_ptr;
  292. };
  293. struct bfa_bsg_sfp_media_s {
  294. bfa_status_t status;
  295. u16 bfad_num;
  296. u16 rsvd;
  297. enum bfa_defs_sfp_media_e media;
  298. };
  299. struct bfa_bsg_sfp_speed_s {
  300. bfa_status_t status;
  301. u16 bfad_num;
  302. u16 rsvd;
  303. enum bfa_port_speed speed;
  304. };
  305. struct bfa_bsg_fcpt_s {
  306. bfa_status_t status;
  307. u16 vf_id;
  308. wwn_t lpwwn;
  309. wwn_t dpwwn;
  310. u32 tsecs;
  311. int cts;
  312. enum fc_cos cos;
  313. struct fchs_s fchs;
  314. };
  315. #define bfa_bsg_fcpt_t struct bfa_bsg_fcpt_s
  316. struct bfa_bsg_data {
  317. int payload_len;
  318. void *payload;
  319. };
  320. #define bfad_chk_iocmd_sz(__payload_len, __hdrsz, __bufsz) \
  321. (((__payload_len) != ((__hdrsz) + (__bufsz))) ? \
  322. BFA_STATUS_FAILED : BFA_STATUS_OK)
  323. #endif /* BFAD_BSG_H */