Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
be_mgmt.h
Go to the documentation of this file.
1 
20 #ifndef _BEISCSI_MGMT_
21 #define _BEISCSI_MGMT_
22 
23 #include <scsi/scsi_bsg_iscsi.h>
24 #include "be_iscsi.h"
25 #include "be_main.h"
26 
27 #define IP_ACTION_ADD 0x01
28 #define IP_ACTION_DEL 0x02
29 
30 #define IP_V6_LEN 16
31 #define IP_V4_LEN 4
32 
37 struct amap_mcc_sge {
38  u8 pa_lo[32]; /* dword 0 */
39  u8 pa_hi[32]; /* dword 1 */
40  u8 length[32]; /* DWORD 2 */
41 } __packed;
42 
48  union {
49  struct amap_mcc_sge sgl[19];
50  u8 embedded[59 * 32]; /* DWORDS 57 to 115 */
51  } u;
52 } __packed;
53 
58 struct amap_mcc_wrb {
59  u8 embedded; /* DWORD 0 */
60  u8 rsvd0[2]; /* DWORD 0 */
61  u8 sge_count[5]; /* DWORD 0 */
62  u8 rsvd1[16]; /* DWORD 0 */
63  u8 special[8]; /* DWORD 0 */
65  u8 tag[64]; /* DWORD 2 */
66  u8 rsvd2[32]; /* DWORD 4 */
68 };
69 
70 struct mcc_sge {
71  u32 pa_lo; /* dword 0 */
72  u32 pa_hi; /* dword 1 */
73  u32 length; /* DWORD 2 */
74 } __packed;
75 
77  union {
78  struct mcc_sge sgl[19];
79  u32 embedded[59]; /* DWORDS 57 to 115 */
80  } u;
81 } __packed;
82 
83 #define MCC_WRB_EMBEDDED_MASK 0x00000001
84 
85 struct mcc_wrb {
86  u32 dw[0]; /* DWORD 0 */
88  u32 tag[2]; /* DWORD 2 */
89  u32 rsvd2[1]; /* DWORD 4 */
91 };
92 
93 int mgmt_epfw_cleanup(struct beiscsi_hba *phba, unsigned short chute);
94 int mgmt_open_connection(struct beiscsi_hba *phba,
95  struct sockaddr *dst_addr,
96  struct beiscsi_endpoint *beiscsi_ep,
97  struct be_dma_mem *nonemb_cmd);
98 
99 unsigned int mgmt_upload_connection(struct beiscsi_hba *phba,
100  unsigned short cid,
101  unsigned int upload_flag);
102 unsigned int mgmt_invalidate_icds(struct beiscsi_hba *phba,
103  struct invalidate_command_table *inv_tbl,
104  unsigned int num_invalidate, unsigned int cid,
105  struct be_dma_mem *nonemb_cmd);
106 unsigned int mgmt_vendor_specific_fw_cmd(struct be_ctrl_info *ctrl,
107  struct beiscsi_hba *phba,
108  struct bsg_job *job,
109  struct be_dma_mem *nonemb_cmd);
110 
111 #define BEISCSI_NO_RST_ISSUE 0
114  unsigned int session_handle;
115  unsigned short cid;
116  unsigned short unused;
117  unsigned short cleanup_type;
118  unsigned short save_cfg;
119 } __packed;
120 
122  unsigned int session_handle;
123  unsigned short cid;
124  unsigned short unused;
125 } __packed;
126 
130 } __packed;
131 
134  unsigned int ref_handle;
135  unsigned int icd_count;
137  unsigned short cleanup_type;
138  unsigned short unused;
139 } __packed;
140 
142  unsigned int ref_handle;
143  unsigned int icd_count;
144  unsigned int icd_status[128];
145 } __packed;
146 
150 } __packed;
151 
158  u8 rsvd0[2];
189 } __packed;
190 
203  u8 rsvd0[3];
205 } __packed;
206 
210 } __packed;
211 
215 } __packed;
216 
219  unsigned short region;
220  unsigned short offset;
221  unsigned short sector;
222 } __packed;
223 
224 /* configuration management */
225 
226 #define GET_MGMT_CONTROLLER_WS(phba) (phba->pmgmt_ws)
227 
228 /* MGMT CMD flags */
229 
230 #define MGMT_CMDH_FREE (1<<0)
231 
232 /* --- MGMT_ERROR_CODES --- */
233 /* Error Codes returned in the status field of the CMD response header */
234 #define MGMT_STATUS_SUCCESS 0 /* The CMD completed without errors */
235 #define MGMT_STATUS_FAILED 1 /* Error status in the Status field of */
236  /* the CMD_RESPONSE_HEADER */
237 
238 #define ISCSI_GET_PDU_TEMPLATE_ADDRESS(pc, pa) {\
239  pa->lo = phba->init_mem[ISCSI_MEM_GLOBAL_HEADER].mem_array[0].\
240  bus_address.u.a32.address_lo; \
241  pa->hi = phba->init_mem[ISCSI_MEM_GLOBAL_HEADER].mem_array[0].\
242  bus_address.u.a32.address_hi; \
243 }
244 
245 #define BEISCSI_WRITE_FLASH 0
246 #define BEISCSI_READ_FLASH 1
247 
249  struct beiscsi_hba *phba;
250  struct beiscsi_sess *sess;
253  unsigned short ip_type;
255  unsigned long dst_addr;
256  unsigned short ep_cid;
257  unsigned int fw_handle;
260 };
261 
263  struct beiscsi_hba *phba);
264 
265 unsigned int mgmt_invalidate_connection(struct beiscsi_hba *phba,
266  struct beiscsi_endpoint *beiscsi_ep,
267  unsigned short cid,
268  unsigned short issue_reset,
269  unsigned short savecfg_flag);
270 
271 int mgmt_set_ip(struct beiscsi_hba *phba,
272  struct iscsi_iface_param_info *ip_param,
273  struct iscsi_iface_param_info *subnet_param,
274  uint32_t boot_proto);
275 
276 unsigned int mgmt_get_boot_target(struct beiscsi_hba *phba);
277 
278 unsigned int mgmt_reopen_session(struct beiscsi_hba *phba,
279  unsigned int reopen_type,
280  unsigned sess_handle);
281 
282 unsigned int mgmt_get_session_info(struct beiscsi_hba *phba,
283  u32 boot_session_handle,
284  struct be_dma_mem *nonemb_cmd);
285 
286 int mgmt_get_nic_conf(struct beiscsi_hba *phba,
287  struct be_cmd_get_nic_conf_resp *mac);
288 
289 int mgmt_get_if_info(struct beiscsi_hba *phba, int ip_type,
290  struct be_cmd_get_if_info_resp *if_info);
291 
292 int mgmt_get_gateway(struct beiscsi_hba *phba, int ip_type,
294 
295 int mgmt_set_gateway(struct beiscsi_hba *phba,
296  struct iscsi_iface_param_info *gateway_param);
297 
298 int be_mgmt_get_boot_shandle(struct beiscsi_hba *phba,
299  unsigned int *s_handle);
300 
301 unsigned int mgmt_get_all_if_id(struct beiscsi_hba *phba);
302 
303 int mgmt_set_vlan(struct beiscsi_hba *phba, uint16_t vlan_tag);
304 #endif