aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_mbx.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_mbx.c')
-rw-r--r--drivers/scsi/qla2xxx/qla_mbx.c759
1 files changed, 392 insertions, 367 deletions
diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c
index 3402746ec128..bc52aa01a49e 100644
--- a/drivers/scsi/qla2xxx/qla_mbx.c
+++ b/drivers/scsi/qla2xxx/qla_mbx.c
@@ -29,7 +29,7 @@
29 * Kernel context. 29 * Kernel context.
30 */ 30 */
31static int 31static int
32qla2x00_mailbox_command(scsi_qla_host_t *pvha, mbx_cmd_t *mcp) 32qla2x00_mailbox_command(scsi_qla_host_t *vha, mbx_cmd_t *mcp)
33{ 33{
34 int rval; 34 int rval;
35 unsigned long flags = 0; 35 unsigned long flags = 0;
@@ -42,15 +42,16 @@ qla2x00_mailbox_command(scsi_qla_host_t *pvha, mbx_cmd_t *mcp)
42 uint32_t cnt; 42 uint32_t cnt;
43 uint32_t mboxes; 43 uint32_t mboxes;
44 unsigned long wait_time; 44 unsigned long wait_time;
45 scsi_qla_host_t *ha = to_qla_parent(pvha); 45 struct qla_hw_data *ha = vha->hw;
46 scsi_qla_host_t *base_vha = pci_get_drvdata(ha->pdev);
46 47
47 reg = ha->iobase; 48 reg = ha->iobase;
48 io_lock_on = ha->flags.init_done; 49 io_lock_on = base_vha->flags.init_done;
49 50
50 rval = QLA_SUCCESS; 51 rval = QLA_SUCCESS;
51 abort_active = test_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags); 52 abort_active = test_bit(ABORT_ISP_ACTIVE, &base_vha->dpc_flags);
52 53
53 DEBUG11(printk("%s(%ld): entered.\n", __func__, pvha->host_no)); 54 DEBUG11(printk("%s(%ld): entered.\n", __func__, base_vha->host_no));
54 55
55 /* 56 /*
56 * Wait for active mailbox commands to finish by waiting at most tov 57 * Wait for active mailbox commands to finish by waiting at most tov
@@ -62,7 +63,7 @@ qla2x00_mailbox_command(scsi_qla_host_t *pvha, mbx_cmd_t *mcp)
62 mcp->tov * HZ)) { 63 mcp->tov * HZ)) {
63 /* Timeout occurred. Return error. */ 64 /* Timeout occurred. Return error. */
64 DEBUG2_3_11(printk("%s(%ld): cmd access timeout. " 65 DEBUG2_3_11(printk("%s(%ld): cmd access timeout. "
65 "Exiting.\n", __func__, ha->host_no)); 66 "Exiting.\n", __func__, base_vha->host_no));
66 return QLA_FUNCTION_TIMEOUT; 67 return QLA_FUNCTION_TIMEOUT;
67 } 68 }
68 } 69 }
@@ -72,7 +73,7 @@ qla2x00_mailbox_command(scsi_qla_host_t *pvha, mbx_cmd_t *mcp)
72 ha->mcp = mcp; 73 ha->mcp = mcp;
73 74
74 DEBUG11(printk("scsi(%ld): prepare to issue mbox cmd=0x%x.\n", 75 DEBUG11(printk("scsi(%ld): prepare to issue mbox cmd=0x%x.\n",
75 ha->host_no, mcp->mb[0])); 76 base_vha->host_no, mcp->mb[0]));
76 77
77 spin_lock_irqsave(&ha->hardware_lock, flags); 78 spin_lock_irqsave(&ha->hardware_lock, flags);
78 79
@@ -100,15 +101,16 @@ qla2x00_mailbox_command(scsi_qla_host_t *pvha, mbx_cmd_t *mcp)
100 101
101#if defined(QL_DEBUG_LEVEL_1) 102#if defined(QL_DEBUG_LEVEL_1)
102 printk("%s(%ld): Loaded MBX registers (displayed in bytes) = \n", 103 printk("%s(%ld): Loaded MBX registers (displayed in bytes) = \n",
103 __func__, ha->host_no); 104 __func__, base_vha->host_no);
104 qla2x00_dump_buffer((uint8_t *)mcp->mb, 16); 105 qla2x00_dump_buffer((uint8_t *)mcp->mb, 16);
105 printk("\n"); 106 printk("\n");
106 qla2x00_dump_buffer(((uint8_t *)mcp->mb + 0x10), 16); 107 qla2x00_dump_buffer(((uint8_t *)mcp->mb + 0x10), 16);
107 printk("\n"); 108 printk("\n");
108 qla2x00_dump_buffer(((uint8_t *)mcp->mb + 0x20), 8); 109 qla2x00_dump_buffer(((uint8_t *)mcp->mb + 0x20), 8);
109 printk("\n"); 110 printk("\n");
110 printk("%s(%ld): I/O address = %p.\n", __func__, ha->host_no, optr); 111 printk("%s(%ld): I/O address = %p.\n", __func__, base_vha->host_no,
111 qla2x00_dump_regs(ha); 112 optr);
113 qla2x00_dump_regs(base_vha);
112#endif 114#endif
113 115
114 /* Issue set host interrupt command to send cmd out. */ 116 /* Issue set host interrupt command to send cmd out. */
@@ -117,7 +119,7 @@ qla2x00_mailbox_command(scsi_qla_host_t *pvha, mbx_cmd_t *mcp)
117 119
118 /* Unlock mbx registers and wait for interrupt */ 120 /* Unlock mbx registers and wait for interrupt */
119 DEBUG11(printk("%s(%ld): going to unlock irq & waiting for interrupt. " 121 DEBUG11(printk("%s(%ld): going to unlock irq & waiting for interrupt. "
120 "jiffies=%lx.\n", __func__, ha->host_no, jiffies)); 122 "jiffies=%lx.\n", __func__, base_vha->host_no, jiffies));
121 123
122 /* Wait for mbx cmd completion until timeout */ 124 /* Wait for mbx cmd completion until timeout */
123 125
@@ -137,7 +139,7 @@ qla2x00_mailbox_command(scsi_qla_host_t *pvha, mbx_cmd_t *mcp)
137 139
138 } else { 140 } else {
139 DEBUG3_11(printk("%s(%ld): cmd=%x POLLING MODE.\n", __func__, 141 DEBUG3_11(printk("%s(%ld): cmd=%x POLLING MODE.\n", __func__,
140 ha->host_no, command)); 142 base_vha->host_no, command));
141 143
142 if (IS_FWI2_CAPABLE(ha)) 144 if (IS_FWI2_CAPABLE(ha))
143 WRT_REG_DWORD(&reg->isp24.hccr, HCCRX_SET_HOST_INT); 145 WRT_REG_DWORD(&reg->isp24.hccr, HCCRX_SET_HOST_INT);
@@ -151,7 +153,7 @@ qla2x00_mailbox_command(scsi_qla_host_t *pvha, mbx_cmd_t *mcp)
151 break; 153 break;
152 154
153 /* Check for pending interrupts. */ 155 /* Check for pending interrupts. */
154 qla2x00_poll(ha); 156 qla2x00_poll(ha->rsp);
155 157
156 if (command != MBC_LOAD_RISC_RAM_EXTENDED && 158 if (command != MBC_LOAD_RISC_RAM_EXTENDED &&
157 !ha->flags.mbox_int) 159 !ha->flags.mbox_int)
@@ -164,7 +166,7 @@ qla2x00_mailbox_command(scsi_qla_host_t *pvha, mbx_cmd_t *mcp)
164 uint16_t *iptr2; 166 uint16_t *iptr2;
165 167
166 DEBUG3_11(printk("%s(%ld): cmd %x completed.\n", __func__, 168 DEBUG3_11(printk("%s(%ld): cmd %x completed.\n", __func__,
167 ha->host_no, command)); 169 base_vha->host_no, command));
168 170
169 /* Got interrupt. Clear the flag. */ 171 /* Got interrupt. Clear the flag. */
170 ha->flags.mbox_int = 0; 172 ha->flags.mbox_int = 0;
@@ -200,12 +202,12 @@ qla2x00_mailbox_command(scsi_qla_host_t *pvha, mbx_cmd_t *mcp)
200 ictrl = RD_REG_WORD(&reg->isp.ictrl); 202 ictrl = RD_REG_WORD(&reg->isp.ictrl);
201 } 203 }
202 printk("%s(%ld): **** MB Command Timeout for cmd %x ****\n", 204 printk("%s(%ld): **** MB Command Timeout for cmd %x ****\n",
203 __func__, ha->host_no, command); 205 __func__, base_vha->host_no, command);
204 printk("%s(%ld): icontrol=%x jiffies=%lx\n", __func__, 206 printk("%s(%ld): icontrol=%x jiffies=%lx\n", __func__,
205 ha->host_no, ictrl, jiffies); 207 base_vha->host_no, ictrl, jiffies);
206 printk("%s(%ld): *** mailbox[0] = 0x%x ***\n", __func__, 208 printk("%s(%ld): *** mailbox[0] = 0x%x ***\n", __func__,
207 ha->host_no, mb0); 209 base_vha->host_no, mb0);
208 qla2x00_dump_regs(ha); 210 qla2x00_dump_regs(base_vha);
209#endif 211#endif
210 212
211 rval = QLA_FUNCTION_TIMEOUT; 213 rval = QLA_FUNCTION_TIMEOUT;
@@ -218,10 +220,10 @@ qla2x00_mailbox_command(scsi_qla_host_t *pvha, mbx_cmd_t *mcp)
218 220
219 if (abort_active || !io_lock_on) { 221 if (abort_active || !io_lock_on) {
220 DEBUG11(printk("%s(%ld): checking for additional resp " 222 DEBUG11(printk("%s(%ld): checking for additional resp "
221 "interrupt.\n", __func__, ha->host_no)); 223 "interrupt.\n", __func__, base_vha->host_no));
222 224
223 /* polling mode for non isp_abort commands. */ 225 /* polling mode for non isp_abort commands. */
224 qla2x00_poll(ha); 226 qla2x00_poll(ha->rsp);
225 } 227 }
226 228
227 if (rval == QLA_FUNCTION_TIMEOUT && 229 if (rval == QLA_FUNCTION_TIMEOUT &&
@@ -229,35 +231,37 @@ qla2x00_mailbox_command(scsi_qla_host_t *pvha, mbx_cmd_t *mcp)
229 if (!io_lock_on || (mcp->flags & IOCTL_CMD)) { 231 if (!io_lock_on || (mcp->flags & IOCTL_CMD)) {
230 /* not in dpc. schedule it for dpc to take over. */ 232 /* not in dpc. schedule it for dpc to take over. */
231 DEBUG(printk("%s(%ld): timeout schedule " 233 DEBUG(printk("%s(%ld): timeout schedule "
232 "isp_abort_needed.\n", __func__, ha->host_no)); 234 "isp_abort_needed.\n", __func__,
235 base_vha->host_no));
233 DEBUG2_3_11(printk("%s(%ld): timeout schedule " 236 DEBUG2_3_11(printk("%s(%ld): timeout schedule "
234 "isp_abort_needed.\n", __func__, ha->host_no)); 237 "isp_abort_needed.\n", __func__,
238 base_vha->host_no));
235 qla_printk(KERN_WARNING, ha, 239 qla_printk(KERN_WARNING, ha,
236 "Mailbox command timeout occurred. Scheduling ISP " 240 "Mailbox command timeout occurred. Scheduling ISP "
237 "abort.\n"); 241 "abort.\n");
238 set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags); 242 set_bit(ISP_ABORT_NEEDED, &base_vha->dpc_flags);
239 qla2xxx_wake_dpc(ha); 243 qla2xxx_wake_dpc(vha);
240 } else if (!abort_active) { 244 } else if (!abort_active) {
241 /* call abort directly since we are in the DPC thread */ 245 /* call abort directly since we are in the DPC thread */
242 DEBUG(printk("%s(%ld): timeout calling abort_isp\n", 246 DEBUG(printk("%s(%ld): timeout calling abort_isp\n",
243 __func__, ha->host_no)); 247 __func__, base_vha->host_no));
244 DEBUG2_3_11(printk("%s(%ld): timeout calling " 248 DEBUG2_3_11(printk("%s(%ld): timeout calling "
245 "abort_isp\n", __func__, ha->host_no)); 249 "abort_isp\n", __func__, base_vha->host_no));
246 qla_printk(KERN_WARNING, ha, 250 qla_printk(KERN_WARNING, ha,
247 "Mailbox command timeout occurred. Issuing ISP " 251 "Mailbox command timeout occurred. Issuing ISP "
248 "abort.\n"); 252 "abort.\n");
249 253
250 set_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags); 254 set_bit(ABORT_ISP_ACTIVE, &base_vha->dpc_flags);
251 clear_bit(ISP_ABORT_NEEDED, &ha->dpc_flags); 255 clear_bit(ISP_ABORT_NEEDED, &base_vha->dpc_flags);
252 if (qla2x00_abort_isp(ha)) { 256 if (qla2x00_abort_isp(base_vha)) {
253 /* Failed. retry later. */ 257 /* Failed. retry later. */
254 set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags); 258 set_bit(ISP_ABORT_NEEDED, &base_vha->dpc_flags);
255 } 259 }
256 clear_bit(ABORT_ISP_ACTIVE, &ha->dpc_flags); 260 clear_bit(ABORT_ISP_ACTIVE, &base_vha->dpc_flags);
257 DEBUG(printk("%s(%ld): finished abort_isp\n", __func__, 261 DEBUG(printk("%s(%ld): finished abort_isp\n", __func__,
258 ha->host_no)); 262 base_vha->host_no));
259 DEBUG2_3_11(printk("%s(%ld): finished abort_isp\n", 263 DEBUG2_3_11(printk("%s(%ld): finished abort_isp\n",
260 __func__, ha->host_no)); 264 __func__, base_vha->host_no));
261 } 265 }
262 } 266 }
263 267
@@ -267,24 +271,26 @@ qla2x00_mailbox_command(scsi_qla_host_t *pvha, mbx_cmd_t *mcp)
267 271
268 if (rval) { 272 if (rval) {
269 DEBUG2_3_11(printk("%s(%ld): **** FAILED. mbx0=%x, mbx1=%x, " 273 DEBUG2_3_11(printk("%s(%ld): **** FAILED. mbx0=%x, mbx1=%x, "
270 "mbx2=%x, cmd=%x ****\n", __func__, ha->host_no, 274 "mbx2=%x, cmd=%x ****\n", __func__, base_vha->host_no,
271 mcp->mb[0], mcp->mb[1], mcp->mb[2], command)); 275 mcp->mb[0], mcp->mb[1], mcp->mb[2], command));
272 } else { 276 } else {
273 DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); 277 DEBUG11(printk("%s(%ld): done.\n", __func__,
278 base_vha->host_no));
274 } 279 }
275 280
276 return rval; 281 return rval;
277} 282}
278 283
279int 284int
280qla2x00_load_ram(scsi_qla_host_t *ha, dma_addr_t req_dma, uint32_t risc_addr, 285qla2x00_load_ram(scsi_qla_host_t *vha, dma_addr_t req_dma, uint32_t risc_addr,
281 uint32_t risc_code_size) 286 uint32_t risc_code_size)
282{ 287{
283 int rval; 288 int rval;
289 struct qla_hw_data *ha = vha->hw;
284 mbx_cmd_t mc; 290 mbx_cmd_t mc;
285 mbx_cmd_t *mcp = &mc; 291 mbx_cmd_t *mcp = &mc;
286 292
287 DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 293 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
288 294
289 if (MSW(risc_addr) || IS_FWI2_CAPABLE(ha)) { 295 if (MSW(risc_addr) || IS_FWI2_CAPABLE(ha)) {
290 mcp->mb[0] = MBC_LOAD_RISC_RAM_EXTENDED; 296 mcp->mb[0] = MBC_LOAD_RISC_RAM_EXTENDED;
@@ -312,13 +318,13 @@ qla2x00_load_ram(scsi_qla_host_t *ha, dma_addr_t req_dma, uint32_t risc_addr,
312 mcp->in_mb = MBX_0; 318 mcp->in_mb = MBX_0;
313 mcp->tov = MBX_TOV_SECONDS; 319 mcp->tov = MBX_TOV_SECONDS;
314 mcp->flags = 0; 320 mcp->flags = 0;
315 rval = qla2x00_mailbox_command(ha, mcp); 321 rval = qla2x00_mailbox_command(vha, mcp);
316 322
317 if (rval != QLA_SUCCESS) { 323 if (rval != QLA_SUCCESS) {
318 DEBUG2_3_11(printk("%s(%ld): failed=%x mb[0]=%x.\n", __func__, 324 DEBUG2_3_11(printk("%s(%ld): failed=%x mb[0]=%x.\n", __func__,
319 ha->host_no, rval, mcp->mb[0])); 325 vha->host_no, rval, mcp->mb[0]));
320 } else { 326 } else {
321 DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); 327 DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
322 } 328 }
323 329
324 return rval; 330 return rval;
@@ -340,13 +346,14 @@ qla2x00_load_ram(scsi_qla_host_t *ha, dma_addr_t req_dma, uint32_t risc_addr,
340 * Kernel context. 346 * Kernel context.
341 */ 347 */
342int 348int
343qla2x00_execute_fw(scsi_qla_host_t *ha, uint32_t risc_addr) 349qla2x00_execute_fw(scsi_qla_host_t *vha, uint32_t risc_addr)
344{ 350{
345 int rval; 351 int rval;
352 struct qla_hw_data *ha = vha->hw;
346 mbx_cmd_t mc; 353 mbx_cmd_t mc;
347 mbx_cmd_t *mcp = &mc; 354 mbx_cmd_t *mcp = &mc;
348 355
349 DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 356 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
350 357
351 mcp->mb[0] = MBC_EXECUTE_FIRMWARE; 358 mcp->mb[0] = MBC_EXECUTE_FIRMWARE;
352 mcp->out_mb = MBX_0; 359 mcp->out_mb = MBX_0;
@@ -369,18 +376,18 @@ qla2x00_execute_fw(scsi_qla_host_t *ha, uint32_t risc_addr)
369 376
370 mcp->tov = MBX_TOV_SECONDS; 377 mcp->tov = MBX_TOV_SECONDS;
371 mcp->flags = 0; 378 mcp->flags = 0;
372 rval = qla2x00_mailbox_command(ha, mcp); 379 rval = qla2x00_mailbox_command(vha, mcp);
373 380
374 if (rval != QLA_SUCCESS) { 381 if (rval != QLA_SUCCESS) {
375 DEBUG2_3_11(printk("%s(%ld): failed=%x mb[0]=%x.\n", __func__, 382 DEBUG2_3_11(printk("%s(%ld): failed=%x mb[0]=%x.\n", __func__,
376 ha->host_no, rval, mcp->mb[0])); 383 vha->host_no, rval, mcp->mb[0]));
377 } else { 384 } else {
378 if (IS_FWI2_CAPABLE(ha)) { 385 if (IS_FWI2_CAPABLE(ha)) {
379 DEBUG11(printk("%s(%ld): done exchanges=%x.\n", 386 DEBUG11(printk("%s(%ld): done exchanges=%x.\n",
380 __func__, ha->host_no, mcp->mb[1])); 387 __func__, vha->host_no, mcp->mb[1]));
381 } else { 388 } else {
382 DEBUG11(printk("%s(%ld): done.\n", __func__, 389 DEBUG11(printk("%s(%ld): done.\n", __func__,
383 ha->host_no)); 390 vha->host_no));
384 } 391 }
385 } 392 }
386 393
@@ -404,28 +411,28 @@ qla2x00_execute_fw(scsi_qla_host_t *ha, uint32_t risc_addr)
404 * Kernel context. 411 * Kernel context.
405 */ 412 */
406void 413void
407qla2x00_get_fw_version(scsi_qla_host_t *ha, uint16_t *major, uint16_t *minor, 414qla2x00_get_fw_version(scsi_qla_host_t *vha, uint16_t *major, uint16_t *minor,
408 uint16_t *subminor, uint16_t *attributes, uint32_t *memory) 415 uint16_t *subminor, uint16_t *attributes, uint32_t *memory)
409{ 416{
410 int rval; 417 int rval;
411 mbx_cmd_t mc; 418 mbx_cmd_t mc;
412 mbx_cmd_t *mcp = &mc; 419 mbx_cmd_t *mcp = &mc;
413 420
414 DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 421 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
415 422
416 mcp->mb[0] = MBC_GET_FIRMWARE_VERSION; 423 mcp->mb[0] = MBC_GET_FIRMWARE_VERSION;
417 mcp->out_mb = MBX_0; 424 mcp->out_mb = MBX_0;
418 mcp->in_mb = MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0; 425 mcp->in_mb = MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
419 mcp->flags = 0; 426 mcp->flags = 0;
420 mcp->tov = MBX_TOV_SECONDS; 427 mcp->tov = MBX_TOV_SECONDS;
421 rval = qla2x00_mailbox_command(ha, mcp); 428 rval = qla2x00_mailbox_command(vha, mcp);
422 429
423 /* Return mailbox data. */ 430 /* Return mailbox data. */
424 *major = mcp->mb[1]; 431 *major = mcp->mb[1];
425 *minor = mcp->mb[2]; 432 *minor = mcp->mb[2];
426 *subminor = mcp->mb[3]; 433 *subminor = mcp->mb[3];
427 *attributes = mcp->mb[6]; 434 *attributes = mcp->mb[6];
428 if (IS_QLA2100(ha) || IS_QLA2200(ha)) 435 if (IS_QLA2100(vha->hw) || IS_QLA2200(vha->hw))
429 *memory = 0x1FFFF; /* Defaults to 128KB. */ 436 *memory = 0x1FFFF; /* Defaults to 128KB. */
430 else 437 else
431 *memory = (mcp->mb[5] << 16) | mcp->mb[4]; 438 *memory = (mcp->mb[5] << 16) | mcp->mb[4];
@@ -433,10 +440,10 @@ qla2x00_get_fw_version(scsi_qla_host_t *ha, uint16_t *major, uint16_t *minor,
433 if (rval != QLA_SUCCESS) { 440 if (rval != QLA_SUCCESS) {
434 /*EMPTY*/ 441 /*EMPTY*/
435 DEBUG2_3_11(printk("%s(%ld): failed=%x.\n", __func__, 442 DEBUG2_3_11(printk("%s(%ld): failed=%x.\n", __func__,
436 ha->host_no, rval)); 443 vha->host_no, rval));
437 } else { 444 } else {
438 /*EMPTY*/ 445 /*EMPTY*/
439 DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); 446 DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
440 } 447 }
441} 448}
442 449
@@ -455,32 +462,32 @@ qla2x00_get_fw_version(scsi_qla_host_t *ha, uint16_t *major, uint16_t *minor,
455 * Kernel context. 462 * Kernel context.
456 */ 463 */
457int 464int
458qla2x00_get_fw_options(scsi_qla_host_t *ha, uint16_t *fwopts) 465qla2x00_get_fw_options(scsi_qla_host_t *vha, uint16_t *fwopts)
459{ 466{
460 int rval; 467 int rval;
461 mbx_cmd_t mc; 468 mbx_cmd_t mc;
462 mbx_cmd_t *mcp = &mc; 469 mbx_cmd_t *mcp = &mc;
463 470
464 DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 471 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
465 472
466 mcp->mb[0] = MBC_GET_FIRMWARE_OPTION; 473 mcp->mb[0] = MBC_GET_FIRMWARE_OPTION;
467 mcp->out_mb = MBX_0; 474 mcp->out_mb = MBX_0;
468 mcp->in_mb = MBX_3|MBX_2|MBX_1|MBX_0; 475 mcp->in_mb = MBX_3|MBX_2|MBX_1|MBX_0;
469 mcp->tov = MBX_TOV_SECONDS; 476 mcp->tov = MBX_TOV_SECONDS;
470 mcp->flags = 0; 477 mcp->flags = 0;
471 rval = qla2x00_mailbox_command(ha, mcp); 478 rval = qla2x00_mailbox_command(vha, mcp);
472 479
473 if (rval != QLA_SUCCESS) { 480 if (rval != QLA_SUCCESS) {
474 /*EMPTY*/ 481 /*EMPTY*/
475 DEBUG2_3_11(printk("%s(%ld): failed=%x.\n", __func__, 482 DEBUG2_3_11(printk("%s(%ld): failed=%x.\n", __func__,
476 ha->host_no, rval)); 483 vha->host_no, rval));
477 } else { 484 } else {
478 fwopts[0] = mcp->mb[0]; 485 fwopts[0] = mcp->mb[0];
479 fwopts[1] = mcp->mb[1]; 486 fwopts[1] = mcp->mb[1];
480 fwopts[2] = mcp->mb[2]; 487 fwopts[2] = mcp->mb[2];
481 fwopts[3] = mcp->mb[3]; 488 fwopts[3] = mcp->mb[3];
482 489
483 DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); 490 DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
484 } 491 }
485 492
486 return rval; 493 return rval;
@@ -502,13 +509,13 @@ qla2x00_get_fw_options(scsi_qla_host_t *ha, uint16_t *fwopts)
502 * Kernel context. 509 * Kernel context.
503 */ 510 */
504int 511int
505qla2x00_set_fw_options(scsi_qla_host_t *ha, uint16_t *fwopts) 512qla2x00_set_fw_options(scsi_qla_host_t *vha, uint16_t *fwopts)
506{ 513{
507 int rval; 514 int rval;
508 mbx_cmd_t mc; 515 mbx_cmd_t mc;
509 mbx_cmd_t *mcp = &mc; 516 mbx_cmd_t *mcp = &mc;
510 517
511 DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 518 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
512 519
513 mcp->mb[0] = MBC_SET_FIRMWARE_OPTION; 520 mcp->mb[0] = MBC_SET_FIRMWARE_OPTION;
514 mcp->mb[1] = fwopts[1]; 521 mcp->mb[1] = fwopts[1];
@@ -516,7 +523,7 @@ qla2x00_set_fw_options(scsi_qla_host_t *ha, uint16_t *fwopts)
516 mcp->mb[3] = fwopts[3]; 523 mcp->mb[3] = fwopts[3];
517 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0; 524 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
518 mcp->in_mb = MBX_0; 525 mcp->in_mb = MBX_0;
519 if (IS_FWI2_CAPABLE(ha)) { 526 if (IS_FWI2_CAPABLE(vha->hw)) {
520 mcp->in_mb |= MBX_1; 527 mcp->in_mb |= MBX_1;
521 } else { 528 } else {
522 mcp->mb[10] = fwopts[10]; 529 mcp->mb[10] = fwopts[10];
@@ -526,17 +533,17 @@ qla2x00_set_fw_options(scsi_qla_host_t *ha, uint16_t *fwopts)
526 } 533 }
527 mcp->tov = MBX_TOV_SECONDS; 534 mcp->tov = MBX_TOV_SECONDS;
528 mcp->flags = 0; 535 mcp->flags = 0;
529 rval = qla2x00_mailbox_command(ha, mcp); 536 rval = qla2x00_mailbox_command(vha, mcp);
530 537
531 fwopts[0] = mcp->mb[0]; 538 fwopts[0] = mcp->mb[0];
532 539
533 if (rval != QLA_SUCCESS) { 540 if (rval != QLA_SUCCESS) {
534 /*EMPTY*/ 541 /*EMPTY*/
535 DEBUG2_3_11(printk("%s(%ld): failed=%x (%x/%x).\n", __func__, 542 DEBUG2_3_11(printk("%s(%ld): failed=%x (%x/%x).\n", __func__,
536 ha->host_no, rval, mcp->mb[0], mcp->mb[1])); 543 vha->host_no, rval, mcp->mb[0], mcp->mb[1]));
537 } else { 544 } else {
538 /*EMPTY*/ 545 /*EMPTY*/
539 DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); 546 DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
540 } 547 }
541 548
542 return rval; 549 return rval;
@@ -558,13 +565,14 @@ qla2x00_set_fw_options(scsi_qla_host_t *ha, uint16_t *fwopts)
558 * Kernel context. 565 * Kernel context.
559 */ 566 */
560int 567int
561qla2x00_mbx_reg_test(scsi_qla_host_t *ha) 568qla2x00_mbx_reg_test(scsi_qla_host_t *vha)
562{ 569{
563 int rval; 570 int rval;
571 struct qla_hw_data *ha = vha->hw;
564 mbx_cmd_t mc; 572 mbx_cmd_t mc;
565 mbx_cmd_t *mcp = &mc; 573 mbx_cmd_t *mcp = &mc;
566 574
567 DEBUG11(printk("qla2x00_mbx_reg_test(%ld): entered.\n", ha->host_no)); 575 DEBUG11(printk("qla2x00_mbx_reg_test(%ld): entered.\n", vha->host_no));
568 576
569 mcp->mb[0] = MBC_MAILBOX_REGISTER_TEST; 577 mcp->mb[0] = MBC_MAILBOX_REGISTER_TEST;
570 mcp->mb[1] = 0xAAAA; 578 mcp->mb[1] = 0xAAAA;
@@ -578,7 +586,7 @@ qla2x00_mbx_reg_test(scsi_qla_host_t *ha)
578 mcp->in_mb = MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0; 586 mcp->in_mb = MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
579 mcp->tov = MBX_TOV_SECONDS; 587 mcp->tov = MBX_TOV_SECONDS;
580 mcp->flags = 0; 588 mcp->flags = 0;
581 rval = qla2x00_mailbox_command(ha, mcp); 589 rval = qla2x00_mailbox_command(vha, mcp);
582 590
583 if (rval == QLA_SUCCESS) { 591 if (rval == QLA_SUCCESS) {
584 if (mcp->mb[1] != 0xAAAA || mcp->mb[2] != 0x5555 || 592 if (mcp->mb[1] != 0xAAAA || mcp->mb[2] != 0x5555 ||
@@ -591,7 +599,7 @@ qla2x00_mbx_reg_test(scsi_qla_host_t *ha)
591 struct device_reg_24xx __iomem *reg = 599 struct device_reg_24xx __iomem *reg =
592 &ha->iobase->isp24; 600 &ha->iobase->isp24;
593 601
594 qla2xxx_hw_event_log(ha, HW_EVENT_ISP_ERR, 0, 602 qla2xxx_hw_event_log(vha, HW_EVENT_ISP_ERR, 0,
595 LSW(RD_REG_DWORD(&reg->hccr)), 603 LSW(RD_REG_DWORD(&reg->hccr)),
596 LSW(RD_REG_DWORD(&reg->istatus))); 604 LSW(RD_REG_DWORD(&reg->istatus)));
597 } 605 }
@@ -600,11 +608,11 @@ qla2x00_mbx_reg_test(scsi_qla_host_t *ha)
600 if (rval != QLA_SUCCESS) { 608 if (rval != QLA_SUCCESS) {
601 /*EMPTY*/ 609 /*EMPTY*/
602 DEBUG2_3_11(printk("qla2x00_mbx_reg_test(%ld): failed=%x.\n", 610 DEBUG2_3_11(printk("qla2x00_mbx_reg_test(%ld): failed=%x.\n",
603 ha->host_no, rval)); 611 vha->host_no, rval));
604 } else { 612 } else {
605 /*EMPTY*/ 613 /*EMPTY*/
606 DEBUG11(printk("qla2x00_mbx_reg_test(%ld): done.\n", 614 DEBUG11(printk("qla2x00_mbx_reg_test(%ld): done.\n",
607 ha->host_no)); 615 vha->host_no));
608 } 616 }
609 617
610 return rval; 618 return rval;
@@ -626,18 +634,18 @@ qla2x00_mbx_reg_test(scsi_qla_host_t *ha)
626 * Kernel context. 634 * Kernel context.
627 */ 635 */
628int 636int
629qla2x00_verify_checksum(scsi_qla_host_t *ha, uint32_t risc_addr) 637qla2x00_verify_checksum(scsi_qla_host_t *vha, uint32_t risc_addr)
630{ 638{
631 int rval; 639 int rval;
632 mbx_cmd_t mc; 640 mbx_cmd_t mc;
633 mbx_cmd_t *mcp = &mc; 641 mbx_cmd_t *mcp = &mc;
634 642
635 DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 643 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
636 644
637 mcp->mb[0] = MBC_VERIFY_CHECKSUM; 645 mcp->mb[0] = MBC_VERIFY_CHECKSUM;
638 mcp->out_mb = MBX_0; 646 mcp->out_mb = MBX_0;
639 mcp->in_mb = MBX_0; 647 mcp->in_mb = MBX_0;
640 if (IS_FWI2_CAPABLE(ha)) { 648 if (IS_FWI2_CAPABLE(vha->hw)) {
641 mcp->mb[1] = MSW(risc_addr); 649 mcp->mb[1] = MSW(risc_addr);
642 mcp->mb[2] = LSW(risc_addr); 650 mcp->mb[2] = LSW(risc_addr);
643 mcp->out_mb |= MBX_2|MBX_1; 651 mcp->out_mb |= MBX_2|MBX_1;
@@ -650,14 +658,14 @@ qla2x00_verify_checksum(scsi_qla_host_t *ha, uint32_t risc_addr)
650 658
651 mcp->tov = MBX_TOV_SECONDS; 659 mcp->tov = MBX_TOV_SECONDS;
652 mcp->flags = 0; 660 mcp->flags = 0;
653 rval = qla2x00_mailbox_command(ha, mcp); 661 rval = qla2x00_mailbox_command(vha, mcp);
654 662
655 if (rval != QLA_SUCCESS) { 663 if (rval != QLA_SUCCESS) {
656 DEBUG2_3_11(printk("%s(%ld): failed=%x chk sum=%x.\n", __func__, 664 DEBUG2_3_11(printk("%s(%ld): failed=%x chk sum=%x.\n", __func__,
657 ha->host_no, rval, IS_FWI2_CAPABLE(ha) ? 665 vha->host_no, rval, IS_FWI2_CAPABLE(vha->hw) ?
658 (mcp->mb[2] << 16) | mcp->mb[1]: mcp->mb[1])); 666 (mcp->mb[2] << 16) | mcp->mb[1]: mcp->mb[1]));
659 } else { 667 } else {
660 DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); 668 DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
661 } 669 }
662 670
663 return rval; 671 return rval;
@@ -682,7 +690,7 @@ qla2x00_verify_checksum(scsi_qla_host_t *ha, uint32_t risc_addr)
682 * Kernel context. 690 * Kernel context.
683 */ 691 */
684static int 692static int
685qla2x00_issue_iocb_timeout(scsi_qla_host_t *ha, void *buffer, 693qla2x00_issue_iocb_timeout(scsi_qla_host_t *vha, void *buffer,
686 dma_addr_t phys_addr, size_t size, uint32_t tov) 694 dma_addr_t phys_addr, size_t size, uint32_t tov)
687{ 695{
688 int rval; 696 int rval;
@@ -699,30 +707,30 @@ qla2x00_issue_iocb_timeout(scsi_qla_host_t *ha, void *buffer,
699 mcp->in_mb = MBX_2|MBX_0; 707 mcp->in_mb = MBX_2|MBX_0;
700 mcp->tov = tov; 708 mcp->tov = tov;
701 mcp->flags = 0; 709 mcp->flags = 0;
702 rval = qla2x00_mailbox_command(ha, mcp); 710 rval = qla2x00_mailbox_command(vha, mcp);
703 711
704 if (rval != QLA_SUCCESS) { 712 if (rval != QLA_SUCCESS) {
705 /*EMPTY*/ 713 /*EMPTY*/
706 DEBUG(printk("qla2x00_issue_iocb(%ld): failed rval 0x%x\n", 714 DEBUG(printk("qla2x00_issue_iocb(%ld): failed rval 0x%x\n",
707 ha->host_no, rval)); 715 vha->host_no, rval));
708 DEBUG2(printk("qla2x00_issue_iocb(%ld): failed rval 0x%x\n", 716 DEBUG2(printk("qla2x00_issue_iocb(%ld): failed rval 0x%x\n",
709 ha->host_no, rval)); 717 vha->host_no, rval));
710 } else { 718 } else {
711 sts_entry_t *sts_entry = (sts_entry_t *) buffer; 719 sts_entry_t *sts_entry = (sts_entry_t *) buffer;
712 720
713 /* Mask reserved bits. */ 721 /* Mask reserved bits. */
714 sts_entry->entry_status &= 722 sts_entry->entry_status &=
715 IS_FWI2_CAPABLE(ha) ? RF_MASK_24XX :RF_MASK; 723 IS_FWI2_CAPABLE(vha->hw) ? RF_MASK_24XX : RF_MASK;
716 } 724 }
717 725
718 return rval; 726 return rval;
719} 727}
720 728
721int 729int
722qla2x00_issue_iocb(scsi_qla_host_t *ha, void *buffer, dma_addr_t phys_addr, 730qla2x00_issue_iocb(scsi_qla_host_t *vha, void *buffer, dma_addr_t phys_addr,
723 size_t size) 731 size_t size)
724{ 732{
725 return qla2x00_issue_iocb_timeout(ha, buffer, phys_addr, size, 733 return qla2x00_issue_iocb_timeout(vha, buffer, phys_addr, size,
726 MBX_TOV_SECONDS); 734 MBX_TOV_SECONDS);
727} 735}
728 736
@@ -741,7 +749,7 @@ qla2x00_issue_iocb(scsi_qla_host_t *ha, void *buffer, dma_addr_t phys_addr,
741 * Kernel context. 749 * Kernel context.
742 */ 750 */
743int 751int
744qla2x00_abort_command(scsi_qla_host_t *ha, srb_t *sp) 752qla2x00_abort_command(scsi_qla_host_t *vha, srb_t *sp)
745{ 753{
746 unsigned long flags = 0; 754 unsigned long flags = 0;
747 fc_port_t *fcport; 755 fc_port_t *fcport;
@@ -749,14 +757,16 @@ qla2x00_abort_command(scsi_qla_host_t *ha, srb_t *sp)
749 uint32_t handle; 757 uint32_t handle;
750 mbx_cmd_t mc; 758 mbx_cmd_t mc;
751 mbx_cmd_t *mcp = &mc; 759 mbx_cmd_t *mcp = &mc;
760 struct qla_hw_data *ha = vha->hw;
761 struct req_que *req = ha->req;
752 762
753 DEBUG11(printk("qla2x00_abort_command(%ld): entered.\n", ha->host_no)); 763 DEBUG11(printk("qla2x00_abort_command(%ld): entered.\n", vha->host_no));
754 764
755 fcport = sp->fcport; 765 fcport = sp->fcport;
756 766
757 spin_lock_irqsave(&ha->hardware_lock, flags); 767 spin_lock_irqsave(&ha->hardware_lock, flags);
758 for (handle = 1; handle < MAX_OUTSTANDING_COMMANDS; handle++) { 768 for (handle = 1; handle < MAX_OUTSTANDING_COMMANDS; handle++) {
759 if (ha->outstanding_cmds[handle] == sp) 769 if (req->outstanding_cmds[handle] == sp)
760 break; 770 break;
761 } 771 }
762 spin_unlock_irqrestore(&ha->hardware_lock, flags); 772 spin_unlock_irqrestore(&ha->hardware_lock, flags);
@@ -778,14 +788,14 @@ qla2x00_abort_command(scsi_qla_host_t *ha, srb_t *sp)
778 mcp->in_mb = MBX_0; 788 mcp->in_mb = MBX_0;
779 mcp->tov = MBX_TOV_SECONDS; 789 mcp->tov = MBX_TOV_SECONDS;
780 mcp->flags = 0; 790 mcp->flags = 0;
781 rval = qla2x00_mailbox_command(ha, mcp); 791 rval = qla2x00_mailbox_command(vha, mcp);
782 792
783 if (rval != QLA_SUCCESS) { 793 if (rval != QLA_SUCCESS) {
784 DEBUG2_3_11(printk("qla2x00_abort_command(%ld): failed=%x.\n", 794 DEBUG2_3_11(printk("qla2x00_abort_command(%ld): failed=%x.\n",
785 ha->host_no, rval)); 795 vha->host_no, rval));
786 } else { 796 } else {
787 DEBUG11(printk("qla2x00_abort_command(%ld): done.\n", 797 DEBUG11(printk("qla2x00_abort_command(%ld): done.\n",
788 ha->host_no)); 798 vha->host_no));
789 } 799 }
790 800
791 return rval; 801 return rval;
@@ -797,40 +807,40 @@ qla2x00_abort_target(struct fc_port *fcport, unsigned int l)
797 int rval, rval2; 807 int rval, rval2;
798 mbx_cmd_t mc; 808 mbx_cmd_t mc;
799 mbx_cmd_t *mcp = &mc; 809 mbx_cmd_t *mcp = &mc;
800 scsi_qla_host_t *ha; 810 scsi_qla_host_t *vha;
801 811
802 DEBUG11(printk("%s(%ld): entered.\n", __func__, fcport->ha->host_no)); 812 DEBUG11(printk("%s(%ld): entered.\n", __func__, fcport->vha->host_no));
803 813
804 l = l; 814 l = l;
805 ha = fcport->ha; 815 vha = fcport->vha;
806 mcp->mb[0] = MBC_ABORT_TARGET; 816 mcp->mb[0] = MBC_ABORT_TARGET;
807 mcp->out_mb = MBX_9|MBX_2|MBX_1|MBX_0; 817 mcp->out_mb = MBX_9|MBX_2|MBX_1|MBX_0;
808 if (HAS_EXTENDED_IDS(ha)) { 818 if (HAS_EXTENDED_IDS(vha->hw)) {
809 mcp->mb[1] = fcport->loop_id; 819 mcp->mb[1] = fcport->loop_id;
810 mcp->mb[10] = 0; 820 mcp->mb[10] = 0;
811 mcp->out_mb |= MBX_10; 821 mcp->out_mb |= MBX_10;
812 } else { 822 } else {
813 mcp->mb[1] = fcport->loop_id << 8; 823 mcp->mb[1] = fcport->loop_id << 8;
814 } 824 }
815 mcp->mb[2] = ha->loop_reset_delay; 825 mcp->mb[2] = vha->hw->loop_reset_delay;
816 mcp->mb[9] = ha->vp_idx; 826 mcp->mb[9] = vha->vp_idx;
817 827
818 mcp->in_mb = MBX_0; 828 mcp->in_mb = MBX_0;
819 mcp->tov = MBX_TOV_SECONDS; 829 mcp->tov = MBX_TOV_SECONDS;
820 mcp->flags = 0; 830 mcp->flags = 0;
821 rval = qla2x00_mailbox_command(ha, mcp); 831 rval = qla2x00_mailbox_command(vha, mcp);
822 if (rval != QLA_SUCCESS) { 832 if (rval != QLA_SUCCESS) {
823 DEBUG2_3_11(printk("%s(%ld): failed=%x.\n", __func__, 833 DEBUG2_3_11(printk("%s(%ld): failed=%x.\n", __func__,
824 ha->host_no, rval)); 834 vha->host_no, rval));
825 } 835 }
826 836
827 /* Issue marker IOCB. */ 837 /* Issue marker IOCB. */
828 rval2 = qla2x00_marker(ha, fcport->loop_id, 0, MK_SYNC_ID); 838 rval2 = qla2x00_marker(vha, fcport->loop_id, 0, MK_SYNC_ID);
829 if (rval2 != QLA_SUCCESS) { 839 if (rval2 != QLA_SUCCESS) {
830 DEBUG2_3_11(printk("%s(%ld): failed to issue Marker IOCB " 840 DEBUG2_3_11(printk("%s(%ld): failed to issue Marker IOCB "
831 "(%x).\n", __func__, ha->host_no, rval2)); 841 "(%x).\n", __func__, vha->host_no, rval2));
832 } else { 842 } else {
833 DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); 843 DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
834 } 844 }
835 845
836 return rval; 846 return rval;
@@ -842,37 +852,37 @@ qla2x00_lun_reset(struct fc_port *fcport, unsigned int l)
842 int rval, rval2; 852 int rval, rval2;
843 mbx_cmd_t mc; 853 mbx_cmd_t mc;
844 mbx_cmd_t *mcp = &mc; 854 mbx_cmd_t *mcp = &mc;
845 scsi_qla_host_t *ha; 855 scsi_qla_host_t *vha;
846 856
847 DEBUG11(printk("%s(%ld): entered.\n", __func__, fcport->ha->host_no)); 857 DEBUG11(printk("%s(%ld): entered.\n", __func__, fcport->vha->host_no));
848 858
849 ha = fcport->ha; 859 vha = fcport->vha;
850 mcp->mb[0] = MBC_LUN_RESET; 860 mcp->mb[0] = MBC_LUN_RESET;
851 mcp->out_mb = MBX_9|MBX_3|MBX_2|MBX_1|MBX_0; 861 mcp->out_mb = MBX_9|MBX_3|MBX_2|MBX_1|MBX_0;
852 if (HAS_EXTENDED_IDS(ha)) 862 if (HAS_EXTENDED_IDS(vha->hw))
853 mcp->mb[1] = fcport->loop_id; 863 mcp->mb[1] = fcport->loop_id;
854 else 864 else
855 mcp->mb[1] = fcport->loop_id << 8; 865 mcp->mb[1] = fcport->loop_id << 8;
856 mcp->mb[2] = l; 866 mcp->mb[2] = l;
857 mcp->mb[3] = 0; 867 mcp->mb[3] = 0;
858 mcp->mb[9] = ha->vp_idx; 868 mcp->mb[9] = vha->vp_idx;
859 869
860 mcp->in_mb = MBX_0; 870 mcp->in_mb = MBX_0;
861 mcp->tov = MBX_TOV_SECONDS; 871 mcp->tov = MBX_TOV_SECONDS;
862 mcp->flags = 0; 872 mcp->flags = 0;
863 rval = qla2x00_mailbox_command(ha, mcp); 873 rval = qla2x00_mailbox_command(vha, mcp);
864 if (rval != QLA_SUCCESS) { 874 if (rval != QLA_SUCCESS) {
865 DEBUG2_3_11(printk("%s(%ld): failed=%x.\n", __func__, 875 DEBUG2_3_11(printk("%s(%ld): failed=%x.\n", __func__,
866 ha->host_no, rval)); 876 vha->host_no, rval));
867 } 877 }
868 878
869 /* Issue marker IOCB. */ 879 /* Issue marker IOCB. */
870 rval2 = qla2x00_marker(ha, fcport->loop_id, l, MK_SYNC_ID_LUN); 880 rval2 = qla2x00_marker(vha, fcport->loop_id, l, MK_SYNC_ID_LUN);
871 if (rval2 != QLA_SUCCESS) { 881 if (rval2 != QLA_SUCCESS) {
872 DEBUG2_3_11(printk("%s(%ld): failed to issue Marker IOCB " 882 DEBUG2_3_11(printk("%s(%ld): failed to issue Marker IOCB "
873 "(%x).\n", __func__, ha->host_no, rval2)); 883 "(%x).\n", __func__, vha->host_no, rval2));
874 } else { 884 } else {
875 DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); 885 DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
876 } 886 }
877 887
878 return rval; 888 return rval;
@@ -899,7 +909,7 @@ qla2x00_lun_reset(struct fc_port *fcport, unsigned int l)
899 * Kernel context. 909 * Kernel context.
900 */ 910 */
901int 911int
902qla2x00_get_adapter_id(scsi_qla_host_t *ha, uint16_t *id, uint8_t *al_pa, 912qla2x00_get_adapter_id(scsi_qla_host_t *vha, uint16_t *id, uint8_t *al_pa,
903 uint8_t *area, uint8_t *domain, uint16_t *top, uint16_t *sw_cap) 913 uint8_t *area, uint8_t *domain, uint16_t *top, uint16_t *sw_cap)
904{ 914{
905 int rval; 915 int rval;
@@ -907,15 +917,15 @@ qla2x00_get_adapter_id(scsi_qla_host_t *ha, uint16_t *id, uint8_t *al_pa,
907 mbx_cmd_t *mcp = &mc; 917 mbx_cmd_t *mcp = &mc;
908 918
909 DEBUG11(printk("qla2x00_get_adapter_id(%ld): entered.\n", 919 DEBUG11(printk("qla2x00_get_adapter_id(%ld): entered.\n",
910 ha->host_no)); 920 vha->host_no));
911 921
912 mcp->mb[0] = MBC_GET_ADAPTER_LOOP_ID; 922 mcp->mb[0] = MBC_GET_ADAPTER_LOOP_ID;
913 mcp->mb[9] = ha->vp_idx; 923 mcp->mb[9] = vha->vp_idx;
914 mcp->out_mb = MBX_9|MBX_0; 924 mcp->out_mb = MBX_9|MBX_0;
915 mcp->in_mb = MBX_9|MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0; 925 mcp->in_mb = MBX_9|MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
916 mcp->tov = MBX_TOV_SECONDS; 926 mcp->tov = MBX_TOV_SECONDS;
917 mcp->flags = 0; 927 mcp->flags = 0;
918 rval = qla2x00_mailbox_command(ha, mcp); 928 rval = qla2x00_mailbox_command(vha, mcp);
919 if (mcp->mb[0] == MBS_COMMAND_ERROR) 929 if (mcp->mb[0] == MBS_COMMAND_ERROR)
920 rval = QLA_COMMAND_ERROR; 930 rval = QLA_COMMAND_ERROR;
921 else if (mcp->mb[0] == MBS_INVALID_COMMAND) 931 else if (mcp->mb[0] == MBS_INVALID_COMMAND)
@@ -932,11 +942,11 @@ qla2x00_get_adapter_id(scsi_qla_host_t *ha, uint16_t *id, uint8_t *al_pa,
932 if (rval != QLA_SUCCESS) { 942 if (rval != QLA_SUCCESS) {
933 /*EMPTY*/ 943 /*EMPTY*/
934 DEBUG2_3_11(printk("qla2x00_get_adapter_id(%ld): failed=%x.\n", 944 DEBUG2_3_11(printk("qla2x00_get_adapter_id(%ld): failed=%x.\n",
935 ha->host_no, rval)); 945 vha->host_no, rval));
936 } else { 946 } else {
937 /*EMPTY*/ 947 /*EMPTY*/
938 DEBUG11(printk("qla2x00_get_adapter_id(%ld): done.\n", 948 DEBUG11(printk("qla2x00_get_adapter_id(%ld): done.\n",
939 ha->host_no)); 949 vha->host_no));
940 } 950 }
941 951
942 return rval; 952 return rval;
@@ -958,7 +968,7 @@ qla2x00_get_adapter_id(scsi_qla_host_t *ha, uint16_t *id, uint8_t *al_pa,
958 * Kernel context. 968 * Kernel context.
959 */ 969 */
960int 970int
961qla2x00_get_retry_cnt(scsi_qla_host_t *ha, uint8_t *retry_cnt, uint8_t *tov, 971qla2x00_get_retry_cnt(scsi_qla_host_t *vha, uint8_t *retry_cnt, uint8_t *tov,
962 uint16_t *r_a_tov) 972 uint16_t *r_a_tov)
963{ 973{
964 int rval; 974 int rval;
@@ -967,19 +977,19 @@ qla2x00_get_retry_cnt(scsi_qla_host_t *ha, uint8_t *retry_cnt, uint8_t *tov,
967 mbx_cmd_t *mcp = &mc; 977 mbx_cmd_t *mcp = &mc;
968 978
969 DEBUG11(printk("qla2x00_get_retry_cnt(%ld): entered.\n", 979 DEBUG11(printk("qla2x00_get_retry_cnt(%ld): entered.\n",
970 ha->host_no)); 980 vha->host_no));
971 981
972 mcp->mb[0] = MBC_GET_RETRY_COUNT; 982 mcp->mb[0] = MBC_GET_RETRY_COUNT;
973 mcp->out_mb = MBX_0; 983 mcp->out_mb = MBX_0;
974 mcp->in_mb = MBX_3|MBX_2|MBX_1|MBX_0; 984 mcp->in_mb = MBX_3|MBX_2|MBX_1|MBX_0;
975 mcp->tov = MBX_TOV_SECONDS; 985 mcp->tov = MBX_TOV_SECONDS;
976 mcp->flags = 0; 986 mcp->flags = 0;
977 rval = qla2x00_mailbox_command(ha, mcp); 987 rval = qla2x00_mailbox_command(vha, mcp);
978 988
979 if (rval != QLA_SUCCESS) { 989 if (rval != QLA_SUCCESS) {
980 /*EMPTY*/ 990 /*EMPTY*/
981 DEBUG2_3_11(printk("qla2x00_get_retry_cnt(%ld): failed = %x.\n", 991 DEBUG2_3_11(printk("qla2x00_get_retry_cnt(%ld): failed = %x.\n",
982 ha->host_no, mcp->mb[0])); 992 vha->host_no, mcp->mb[0]));
983 } else { 993 } else {
984 /* Convert returned data and check our values. */ 994 /* Convert returned data and check our values. */
985 *r_a_tov = mcp->mb[3] / 2; 995 *r_a_tov = mcp->mb[3] / 2;
@@ -991,7 +1001,7 @@ qla2x00_get_retry_cnt(scsi_qla_host_t *ha, uint8_t *retry_cnt, uint8_t *tov,
991 } 1001 }
992 1002
993 DEBUG11(printk("qla2x00_get_retry_cnt(%ld): done. mb3=%d " 1003 DEBUG11(printk("qla2x00_get_retry_cnt(%ld): done. mb3=%d "
994 "ratov=%d.\n", ha->host_no, mcp->mb[3], ratov)); 1004 "ratov=%d.\n", vha->host_no, mcp->mb[3], ratov));
995 } 1005 }
996 1006
997 return rval; 1007 return rval;
@@ -1015,14 +1025,15 @@ qla2x00_get_retry_cnt(scsi_qla_host_t *ha, uint8_t *retry_cnt, uint8_t *tov,
1015 * Kernel context. 1025 * Kernel context.
1016 */ 1026 */
1017int 1027int
1018qla2x00_init_firmware(scsi_qla_host_t *ha, uint16_t size) 1028qla2x00_init_firmware(scsi_qla_host_t *vha, uint16_t size)
1019{ 1029{
1020 int rval; 1030 int rval;
1021 mbx_cmd_t mc; 1031 mbx_cmd_t mc;
1022 mbx_cmd_t *mcp = &mc; 1032 mbx_cmd_t *mcp = &mc;
1033 struct qla_hw_data *ha = vha->hw;
1023 1034
1024 DEBUG11(printk("qla2x00_init_firmware(%ld): entered.\n", 1035 DEBUG11(printk("qla2x00_init_firmware(%ld): entered.\n",
1025 ha->host_no)); 1036 vha->host_no));
1026 1037
1027 if (ha->flags.npiv_supported) 1038 if (ha->flags.npiv_supported)
1028 mcp->mb[0] = MBC_MID_INITIALIZE_FIRMWARE; 1039 mcp->mb[0] = MBC_MID_INITIALIZE_FIRMWARE;
@@ -1040,17 +1051,17 @@ qla2x00_init_firmware(scsi_qla_host_t *ha, uint16_t size)
1040 mcp->buf_size = size; 1051 mcp->buf_size = size;
1041 mcp->flags = MBX_DMA_OUT; 1052 mcp->flags = MBX_DMA_OUT;
1042 mcp->tov = MBX_TOV_SECONDS; 1053 mcp->tov = MBX_TOV_SECONDS;
1043 rval = qla2x00_mailbox_command(ha, mcp); 1054 rval = qla2x00_mailbox_command(vha, mcp);
1044 1055
1045 if (rval != QLA_SUCCESS) { 1056 if (rval != QLA_SUCCESS) {
1046 /*EMPTY*/ 1057 /*EMPTY*/
1047 DEBUG2_3_11(printk("qla2x00_init_firmware(%ld): failed=%x " 1058 DEBUG2_3_11(printk("qla2x00_init_firmware(%ld): failed=%x "
1048 "mb0=%x.\n", 1059 "mb0=%x.\n",
1049 ha->host_no, rval, mcp->mb[0])); 1060 vha->host_no, rval, mcp->mb[0]));
1050 } else { 1061 } else {
1051 /*EMPTY*/ 1062 /*EMPTY*/
1052 DEBUG11(printk("qla2x00_init_firmware(%ld): done.\n", 1063 DEBUG11(printk("qla2x00_init_firmware(%ld): done.\n",
1053 ha->host_no)); 1064 vha->host_no));
1054 } 1065 }
1055 1066
1056 return rval; 1067 return rval;
@@ -1073,7 +1084,7 @@ qla2x00_init_firmware(scsi_qla_host_t *ha, uint16_t size)
1073 * Kernel context. 1084 * Kernel context.
1074 */ 1085 */
1075int 1086int
1076qla2x00_get_port_database(scsi_qla_host_t *ha, fc_port_t *fcport, uint8_t opt) 1087qla2x00_get_port_database(scsi_qla_host_t *vha, fc_port_t *fcport, uint8_t opt)
1077{ 1088{
1078 int rval; 1089 int rval;
1079 mbx_cmd_t mc; 1090 mbx_cmd_t mc;
@@ -1081,14 +1092,15 @@ qla2x00_get_port_database(scsi_qla_host_t *ha, fc_port_t *fcport, uint8_t opt)
1081 port_database_t *pd; 1092 port_database_t *pd;
1082 struct port_database_24xx *pd24; 1093 struct port_database_24xx *pd24;
1083 dma_addr_t pd_dma; 1094 dma_addr_t pd_dma;
1095 struct qla_hw_data *ha = vha->hw;
1084 1096
1085 DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 1097 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
1086 1098
1087 pd24 = NULL; 1099 pd24 = NULL;
1088 pd = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &pd_dma); 1100 pd = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &pd_dma);
1089 if (pd == NULL) { 1101 if (pd == NULL) {
1090 DEBUG2_3(printk("%s(%ld): failed to allocate Port Database " 1102 DEBUG2_3(printk("%s(%ld): failed to allocate Port Database "
1091 "structure.\n", __func__, ha->host_no)); 1103 "structure.\n", __func__, vha->host_no));
1092 return QLA_MEMORY_ALLOC_FAILED; 1104 return QLA_MEMORY_ALLOC_FAILED;
1093 } 1105 }
1094 memset(pd, 0, max(PORT_DATABASE_SIZE, PORT_DATABASE_24XX_SIZE)); 1106 memset(pd, 0, max(PORT_DATABASE_SIZE, PORT_DATABASE_24XX_SIZE));
@@ -1100,7 +1112,7 @@ qla2x00_get_port_database(scsi_qla_host_t *ha, fc_port_t *fcport, uint8_t opt)
1100 mcp->mb[3] = LSW(pd_dma); 1112 mcp->mb[3] = LSW(pd_dma);
1101 mcp->mb[6] = MSW(MSD(pd_dma)); 1113 mcp->mb[6] = MSW(MSD(pd_dma));
1102 mcp->mb[7] = LSW(MSD(pd_dma)); 1114 mcp->mb[7] = LSW(MSD(pd_dma));
1103 mcp->mb[9] = ha->vp_idx; 1115 mcp->mb[9] = vha->vp_idx;
1104 mcp->out_mb = MBX_9|MBX_7|MBX_6|MBX_3|MBX_2|MBX_0; 1116 mcp->out_mb = MBX_9|MBX_7|MBX_6|MBX_3|MBX_2|MBX_0;
1105 mcp->in_mb = MBX_0; 1117 mcp->in_mb = MBX_0;
1106 if (IS_FWI2_CAPABLE(ha)) { 1118 if (IS_FWI2_CAPABLE(ha)) {
@@ -1120,7 +1132,7 @@ qla2x00_get_port_database(scsi_qla_host_t *ha, fc_port_t *fcport, uint8_t opt)
1120 PORT_DATABASE_24XX_SIZE : PORT_DATABASE_SIZE; 1132 PORT_DATABASE_24XX_SIZE : PORT_DATABASE_SIZE;
1121 mcp->flags = MBX_DMA_IN; 1133 mcp->flags = MBX_DMA_IN;
1122 mcp->tov = (ha->login_timeout * 2) + (ha->login_timeout / 2); 1134 mcp->tov = (ha->login_timeout * 2) + (ha->login_timeout / 2);
1123 rval = qla2x00_mailbox_command(ha, mcp); 1135 rval = qla2x00_mailbox_command(vha, mcp);
1124 if (rval != QLA_SUCCESS) 1136 if (rval != QLA_SUCCESS)
1125 goto gpd_error_out; 1137 goto gpd_error_out;
1126 1138
@@ -1132,7 +1144,7 @@ qla2x00_get_port_database(scsi_qla_host_t *ha, fc_port_t *fcport, uint8_t opt)
1132 pd24->last_login_state != PDS_PRLI_COMPLETE) { 1144 pd24->last_login_state != PDS_PRLI_COMPLETE) {
1133 DEBUG2(printk("%s(%ld): Unable to verify " 1145 DEBUG2(printk("%s(%ld): Unable to verify "
1134 "login-state (%x/%x) for loop_id %x\n", 1146 "login-state (%x/%x) for loop_id %x\n",
1135 __func__, ha->host_no, 1147 __func__, vha->host_no,
1136 pd24->current_login_state, 1148 pd24->current_login_state,
1137 pd24->last_login_state, fcport->loop_id)); 1149 pd24->last_login_state, fcport->loop_id));
1138 rval = QLA_FUNCTION_FAILED; 1150 rval = QLA_FUNCTION_FAILED;
@@ -1192,9 +1204,9 @@ gpd_error_out:
1192 1204
1193 if (rval != QLA_SUCCESS) { 1205 if (rval != QLA_SUCCESS) {
1194 DEBUG2_3_11(printk("%s(%ld): failed=%x mb[0]=%x mb[1]=%x.\n", 1206 DEBUG2_3_11(printk("%s(%ld): failed=%x mb[0]=%x mb[1]=%x.\n",
1195 __func__, ha->host_no, rval, mcp->mb[0], mcp->mb[1])); 1207 __func__, vha->host_no, rval, mcp->mb[0], mcp->mb[1]));
1196 } else { 1208 } else {
1197 DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); 1209 DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
1198 } 1210 }
1199 1211
1200 return rval; 1212 return rval;
@@ -1217,21 +1229,21 @@ gpd_error_out:
1217 * Kernel context. 1229 * Kernel context.
1218 */ 1230 */
1219int 1231int
1220qla2x00_get_firmware_state(scsi_qla_host_t *ha, uint16_t *states) 1232qla2x00_get_firmware_state(scsi_qla_host_t *vha, uint16_t *states)
1221{ 1233{
1222 int rval; 1234 int rval;
1223 mbx_cmd_t mc; 1235 mbx_cmd_t mc;
1224 mbx_cmd_t *mcp = &mc; 1236 mbx_cmd_t *mcp = &mc;
1225 1237
1226 DEBUG11(printk("qla2x00_get_firmware_state(%ld): entered.\n", 1238 DEBUG11(printk("qla2x00_get_firmware_state(%ld): entered.\n",
1227 ha->host_no)); 1239 vha->host_no));
1228 1240
1229 mcp->mb[0] = MBC_GET_FIRMWARE_STATE; 1241 mcp->mb[0] = MBC_GET_FIRMWARE_STATE;
1230 mcp->out_mb = MBX_0; 1242 mcp->out_mb = MBX_0;
1231 mcp->in_mb = MBX_3|MBX_2|MBX_1|MBX_0; 1243 mcp->in_mb = MBX_3|MBX_2|MBX_1|MBX_0;
1232 mcp->tov = MBX_TOV_SECONDS; 1244 mcp->tov = MBX_TOV_SECONDS;
1233 mcp->flags = 0; 1245 mcp->flags = 0;
1234 rval = qla2x00_mailbox_command(ha, mcp); 1246 rval = qla2x00_mailbox_command(vha, mcp);
1235 1247
1236 /* Return firmware states. */ 1248 /* Return firmware states. */
1237 states[0] = mcp->mb[1]; 1249 states[0] = mcp->mb[1];
@@ -1241,11 +1253,11 @@ qla2x00_get_firmware_state(scsi_qla_host_t *ha, uint16_t *states)
1241 if (rval != QLA_SUCCESS) { 1253 if (rval != QLA_SUCCESS) {
1242 /*EMPTY*/ 1254 /*EMPTY*/
1243 DEBUG2_3_11(printk("qla2x00_get_firmware_state(%ld): " 1255 DEBUG2_3_11(printk("qla2x00_get_firmware_state(%ld): "
1244 "failed=%x.\n", ha->host_no, rval)); 1256 "failed=%x.\n", vha->host_no, rval));
1245 } else { 1257 } else {
1246 /*EMPTY*/ 1258 /*EMPTY*/
1247 DEBUG11(printk("qla2x00_get_firmware_state(%ld): done.\n", 1259 DEBUG11(printk("qla2x00_get_firmware_state(%ld): done.\n",
1248 ha->host_no)); 1260 vha->host_no));
1249 } 1261 }
1250 1262
1251 return rval; 1263 return rval;
@@ -1270,7 +1282,7 @@ qla2x00_get_firmware_state(scsi_qla_host_t *ha, uint16_t *states)
1270 * Kernel context. 1282 * Kernel context.
1271 */ 1283 */
1272int 1284int
1273qla2x00_get_port_name(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t *name, 1285qla2x00_get_port_name(scsi_qla_host_t *vha, uint16_t loop_id, uint8_t *name,
1274 uint8_t opt) 1286 uint8_t opt)
1275{ 1287{
1276 int rval; 1288 int rval;
@@ -1278,12 +1290,12 @@ qla2x00_get_port_name(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t *name,
1278 mbx_cmd_t *mcp = &mc; 1290 mbx_cmd_t *mcp = &mc;
1279 1291
1280 DEBUG11(printk("qla2x00_get_port_name(%ld): entered.\n", 1292 DEBUG11(printk("qla2x00_get_port_name(%ld): entered.\n",
1281 ha->host_no)); 1293 vha->host_no));
1282 1294
1283 mcp->mb[0] = MBC_GET_PORT_NAME; 1295 mcp->mb[0] = MBC_GET_PORT_NAME;
1284 mcp->mb[9] = ha->vp_idx; 1296 mcp->mb[9] = vha->vp_idx;
1285 mcp->out_mb = MBX_9|MBX_1|MBX_0; 1297 mcp->out_mb = MBX_9|MBX_1|MBX_0;
1286 if (HAS_EXTENDED_IDS(ha)) { 1298 if (HAS_EXTENDED_IDS(vha->hw)) {
1287 mcp->mb[1] = loop_id; 1299 mcp->mb[1] = loop_id;
1288 mcp->mb[10] = opt; 1300 mcp->mb[10] = opt;
1289 mcp->out_mb |= MBX_10; 1301 mcp->out_mb |= MBX_10;
@@ -1294,12 +1306,12 @@ qla2x00_get_port_name(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t *name,
1294 mcp->in_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0; 1306 mcp->in_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
1295 mcp->tov = MBX_TOV_SECONDS; 1307 mcp->tov = MBX_TOV_SECONDS;
1296 mcp->flags = 0; 1308 mcp->flags = 0;
1297 rval = qla2x00_mailbox_command(ha, mcp); 1309 rval = qla2x00_mailbox_command(vha, mcp);
1298 1310
1299 if (rval != QLA_SUCCESS) { 1311 if (rval != QLA_SUCCESS) {
1300 /*EMPTY*/ 1312 /*EMPTY*/
1301 DEBUG2_3_11(printk("qla2x00_get_port_name(%ld): failed=%x.\n", 1313 DEBUG2_3_11(printk("qla2x00_get_port_name(%ld): failed=%x.\n",
1302 ha->host_no, rval)); 1314 vha->host_no, rval));
1303 } else { 1315 } else {
1304 if (name != NULL) { 1316 if (name != NULL) {
1305 /* This function returns name in big endian. */ 1317 /* This function returns name in big endian. */
@@ -1314,7 +1326,7 @@ qla2x00_get_port_name(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t *name,
1314 } 1326 }
1315 1327
1316 DEBUG11(printk("qla2x00_get_port_name(%ld): done.\n", 1328 DEBUG11(printk("qla2x00_get_port_name(%ld): done.\n",
1317 ha->host_no)); 1329 vha->host_no));
1318 } 1330 }
1319 1331
1320 return rval; 1332 return rval;
@@ -1336,45 +1348,45 @@ qla2x00_get_port_name(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t *name,
1336 * Kernel context. 1348 * Kernel context.
1337 */ 1349 */
1338int 1350int
1339qla2x00_lip_reset(scsi_qla_host_t *ha) 1351qla2x00_lip_reset(scsi_qla_host_t *vha)
1340{ 1352{
1341 int rval; 1353 int rval;
1342 mbx_cmd_t mc; 1354 mbx_cmd_t mc;
1343 mbx_cmd_t *mcp = &mc; 1355 mbx_cmd_t *mcp = &mc;
1344 1356
1345 DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 1357 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
1346 1358
1347 if (IS_FWI2_CAPABLE(ha)) { 1359 if (IS_FWI2_CAPABLE(vha->hw)) {
1348 mcp->mb[0] = MBC_LIP_FULL_LOGIN; 1360 mcp->mb[0] = MBC_LIP_FULL_LOGIN;
1349 mcp->mb[1] = BIT_6; 1361 mcp->mb[1] = BIT_6;
1350 mcp->mb[2] = 0; 1362 mcp->mb[2] = 0;
1351 mcp->mb[3] = ha->loop_reset_delay; 1363 mcp->mb[3] = vha->hw->loop_reset_delay;
1352 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0; 1364 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
1353 } else { 1365 } else {
1354 mcp->mb[0] = MBC_LIP_RESET; 1366 mcp->mb[0] = MBC_LIP_RESET;
1355 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0; 1367 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
1356 if (HAS_EXTENDED_IDS(ha)) { 1368 if (HAS_EXTENDED_IDS(vha->hw)) {
1357 mcp->mb[1] = 0x00ff; 1369 mcp->mb[1] = 0x00ff;
1358 mcp->mb[10] = 0; 1370 mcp->mb[10] = 0;
1359 mcp->out_mb |= MBX_10; 1371 mcp->out_mb |= MBX_10;
1360 } else { 1372 } else {
1361 mcp->mb[1] = 0xff00; 1373 mcp->mb[1] = 0xff00;
1362 } 1374 }
1363 mcp->mb[2] = ha->loop_reset_delay; 1375 mcp->mb[2] = vha->hw->loop_reset_delay;
1364 mcp->mb[3] = 0; 1376 mcp->mb[3] = 0;
1365 } 1377 }
1366 mcp->in_mb = MBX_0; 1378 mcp->in_mb = MBX_0;
1367 mcp->tov = MBX_TOV_SECONDS; 1379 mcp->tov = MBX_TOV_SECONDS;
1368 mcp->flags = 0; 1380 mcp->flags = 0;
1369 rval = qla2x00_mailbox_command(ha, mcp); 1381 rval = qla2x00_mailbox_command(vha, mcp);
1370 1382
1371 if (rval != QLA_SUCCESS) { 1383 if (rval != QLA_SUCCESS) {
1372 /*EMPTY*/ 1384 /*EMPTY*/
1373 DEBUG2_3_11(printk("%s(%ld): failed=%x.\n", 1385 DEBUG2_3_11(printk("%s(%ld): failed=%x.\n",
1374 __func__, ha->host_no, rval)); 1386 __func__, vha->host_no, rval));
1375 } else { 1387 } else {
1376 /*EMPTY*/ 1388 /*EMPTY*/
1377 DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); 1389 DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
1378 } 1390 }
1379 1391
1380 return rval; 1392 return rval;
@@ -1399,7 +1411,7 @@ qla2x00_lip_reset(scsi_qla_host_t *ha)
1399 * Kernel context. 1411 * Kernel context.
1400 */ 1412 */
1401int 1413int
1402qla2x00_send_sns(scsi_qla_host_t *ha, dma_addr_t sns_phys_address, 1414qla2x00_send_sns(scsi_qla_host_t *vha, dma_addr_t sns_phys_address,
1403 uint16_t cmd_size, size_t buf_size) 1415 uint16_t cmd_size, size_t buf_size)
1404{ 1416{
1405 int rval; 1417 int rval;
@@ -1407,10 +1419,11 @@ qla2x00_send_sns(scsi_qla_host_t *ha, dma_addr_t sns_phys_address,
1407 mbx_cmd_t *mcp = &mc; 1419 mbx_cmd_t *mcp = &mc;
1408 1420
1409 DEBUG11(printk("qla2x00_send_sns(%ld): entered.\n", 1421 DEBUG11(printk("qla2x00_send_sns(%ld): entered.\n",
1410 ha->host_no)); 1422 vha->host_no));
1411 1423
1412 DEBUG11(printk("qla2x00_send_sns: retry cnt=%d ratov=%d total " 1424 DEBUG11(printk("qla2x00_send_sns: retry cnt=%d ratov=%d total "
1413 "tov=%d.\n", ha->retry_count, ha->login_timeout, mcp->tov)); 1425 "tov=%d.\n", vha->hw->retry_count, vha->hw->login_timeout,
1426 mcp->tov));
1414 1427
1415 mcp->mb[0] = MBC_SEND_SNS_COMMAND; 1428 mcp->mb[0] = MBC_SEND_SNS_COMMAND;
1416 mcp->mb[1] = cmd_size; 1429 mcp->mb[1] = cmd_size;
@@ -1422,25 +1435,25 @@ qla2x00_send_sns(scsi_qla_host_t *ha, dma_addr_t sns_phys_address,
1422 mcp->in_mb = MBX_0|MBX_1; 1435 mcp->in_mb = MBX_0|MBX_1;
1423 mcp->buf_size = buf_size; 1436 mcp->buf_size = buf_size;
1424 mcp->flags = MBX_DMA_OUT|MBX_DMA_IN; 1437 mcp->flags = MBX_DMA_OUT|MBX_DMA_IN;
1425 mcp->tov = (ha->login_timeout * 2) + (ha->login_timeout / 2); 1438 mcp->tov = (vha->hw->login_timeout * 2) + (vha->hw->login_timeout / 2);
1426 rval = qla2x00_mailbox_command(ha, mcp); 1439 rval = qla2x00_mailbox_command(vha, mcp);
1427 1440
1428 if (rval != QLA_SUCCESS) { 1441 if (rval != QLA_SUCCESS) {
1429 /*EMPTY*/ 1442 /*EMPTY*/
1430 DEBUG(printk("qla2x00_send_sns(%ld): failed=%x mb[0]=%x " 1443 DEBUG(printk("qla2x00_send_sns(%ld): failed=%x mb[0]=%x "
1431 "mb[1]=%x.\n", ha->host_no, rval, mcp->mb[0], mcp->mb[1])); 1444 "mb[1]=%x.\n", vha->host_no, rval, mcp->mb[0], mcp->mb[1]));
1432 DEBUG2_3_11(printk("qla2x00_send_sns(%ld): failed=%x mb[0]=%x " 1445 DEBUG2_3_11(printk("qla2x00_send_sns(%ld): failed=%x mb[0]=%x "
1433 "mb[1]=%x.\n", ha->host_no, rval, mcp->mb[0], mcp->mb[1])); 1446 "mb[1]=%x.\n", vha->host_no, rval, mcp->mb[0], mcp->mb[1]));
1434 } else { 1447 } else {
1435 /*EMPTY*/ 1448 /*EMPTY*/
1436 DEBUG11(printk("qla2x00_send_sns(%ld): done.\n", ha->host_no)); 1449 DEBUG11(printk("qla2x00_send_sns(%ld): done.\n", vha->host_no));
1437 } 1450 }
1438 1451
1439 return rval; 1452 return rval;
1440} 1453}
1441 1454
1442int 1455int
1443qla24xx_login_fabric(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t domain, 1456qla24xx_login_fabric(scsi_qla_host_t *vha, uint16_t loop_id, uint8_t domain,
1444 uint8_t area, uint8_t al_pa, uint16_t *mb, uint8_t opt) 1457 uint8_t area, uint8_t al_pa, uint16_t *mb, uint8_t opt)
1445{ 1458{
1446 int rval; 1459 int rval;
@@ -1448,13 +1461,14 @@ qla24xx_login_fabric(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t domain,
1448 struct logio_entry_24xx *lg; 1461 struct logio_entry_24xx *lg;
1449 dma_addr_t lg_dma; 1462 dma_addr_t lg_dma;
1450 uint32_t iop[2]; 1463 uint32_t iop[2];
1464 struct qla_hw_data *ha = vha->hw;
1451 1465
1452 DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 1466 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
1453 1467
1454 lg = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &lg_dma); 1468 lg = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &lg_dma);
1455 if (lg == NULL) { 1469 if (lg == NULL) {
1456 DEBUG2_3(printk("%s(%ld): failed to allocate Login IOCB.\n", 1470 DEBUG2_3(printk("%s(%ld): failed to allocate Login IOCB.\n",
1457 __func__, ha->host_no)); 1471 __func__, vha->host_no));
1458 return QLA_MEMORY_ALLOC_FAILED; 1472 return QLA_MEMORY_ALLOC_FAILED;
1459 } 1473 }
1460 memset(lg, 0, sizeof(struct logio_entry_24xx)); 1474 memset(lg, 0, sizeof(struct logio_entry_24xx));
@@ -1470,14 +1484,14 @@ qla24xx_login_fabric(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t domain,
1470 lg->port_id[0] = al_pa; 1484 lg->port_id[0] = al_pa;
1471 lg->port_id[1] = area; 1485 lg->port_id[1] = area;
1472 lg->port_id[2] = domain; 1486 lg->port_id[2] = domain;
1473 lg->vp_index = ha->vp_idx; 1487 lg->vp_index = vha->vp_idx;
1474 rval = qla2x00_issue_iocb(ha, lg, lg_dma, 0); 1488 rval = qla2x00_issue_iocb(vha, lg, lg_dma, 0);
1475 if (rval != QLA_SUCCESS) { 1489 if (rval != QLA_SUCCESS) {
1476 DEBUG2_3_11(printk("%s(%ld): failed to issue Login IOCB " 1490 DEBUG2_3_11(printk("%s(%ld): failed to issue Login IOCB "
1477 "(%x).\n", __func__, ha->host_no, rval)); 1491 "(%x).\n", __func__, vha->host_no, rval));
1478 } else if (lg->entry_status != 0) { 1492 } else if (lg->entry_status != 0) {
1479 DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB " 1493 DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB "
1480 "-- error status (%x).\n", __func__, ha->host_no, 1494 "-- error status (%x).\n", __func__, vha->host_no,
1481 lg->entry_status)); 1495 lg->entry_status));
1482 rval = QLA_FUNCTION_FAILED; 1496 rval = QLA_FUNCTION_FAILED;
1483 } else if (lg->comp_status != __constant_cpu_to_le16(CS_COMPLETE)) { 1497 } else if (lg->comp_status != __constant_cpu_to_le16(CS_COMPLETE)) {
@@ -1486,7 +1500,7 @@ qla24xx_login_fabric(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t domain,
1486 1500
1487 DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB " 1501 DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB "
1488 "-- completion status (%x) ioparam=%x/%x.\n", __func__, 1502 "-- completion status (%x) ioparam=%x/%x.\n", __func__,
1489 ha->host_no, le16_to_cpu(lg->comp_status), iop[0], 1503 vha->host_no, le16_to_cpu(lg->comp_status), iop[0],
1490 iop[1])); 1504 iop[1]));
1491 1505
1492 switch (iop[0]) { 1506 switch (iop[0]) {
@@ -1515,7 +1529,7 @@ qla24xx_login_fabric(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t domain,
1515 break; 1529 break;
1516 } 1530 }
1517 } else { 1531 } else {
1518 DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); 1532 DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
1519 1533
1520 iop[0] = le32_to_cpu(lg->io_parameter[0]); 1534 iop[0] = le32_to_cpu(lg->io_parameter[0]);
1521 1535
@@ -1562,14 +1576,15 @@ qla24xx_login_fabric(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t domain,
1562 * Kernel context. 1576 * Kernel context.
1563 */ 1577 */
1564int 1578int
1565qla2x00_login_fabric(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t domain, 1579qla2x00_login_fabric(scsi_qla_host_t *vha, uint16_t loop_id, uint8_t domain,
1566 uint8_t area, uint8_t al_pa, uint16_t *mb, uint8_t opt) 1580 uint8_t area, uint8_t al_pa, uint16_t *mb, uint8_t opt)
1567{ 1581{
1568 int rval; 1582 int rval;
1569 mbx_cmd_t mc; 1583 mbx_cmd_t mc;
1570 mbx_cmd_t *mcp = &mc; 1584 mbx_cmd_t *mcp = &mc;
1585 struct qla_hw_data *ha = vha->hw;
1571 1586
1572 DEBUG11(printk("qla2x00_login_fabric(%ld): entered.\n", ha->host_no)); 1587 DEBUG11(printk("qla2x00_login_fabric(%ld): entered.\n", vha->host_no));
1573 1588
1574 mcp->mb[0] = MBC_LOGIN_FABRIC_PORT; 1589 mcp->mb[0] = MBC_LOGIN_FABRIC_PORT;
1575 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0; 1590 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
@@ -1586,7 +1601,7 @@ qla2x00_login_fabric(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t domain,
1586 mcp->in_mb = MBX_7|MBX_6|MBX_2|MBX_1|MBX_0; 1601 mcp->in_mb = MBX_7|MBX_6|MBX_2|MBX_1|MBX_0;
1587 mcp->tov = (ha->login_timeout * 2) + (ha->login_timeout / 2); 1602 mcp->tov = (ha->login_timeout * 2) + (ha->login_timeout / 2);
1588 mcp->flags = 0; 1603 mcp->flags = 0;
1589 rval = qla2x00_mailbox_command(ha, mcp); 1604 rval = qla2x00_mailbox_command(vha, mcp);
1590 1605
1591 /* Return mailbox statuses. */ 1606 /* Return mailbox statuses. */
1592 if (mb != NULL) { 1607 if (mb != NULL) {
@@ -1613,12 +1628,12 @@ qla2x00_login_fabric(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t domain,
1613 1628
1614 /*EMPTY*/ 1629 /*EMPTY*/
1615 DEBUG2_3_11(printk("qla2x00_login_fabric(%ld): failed=%x " 1630 DEBUG2_3_11(printk("qla2x00_login_fabric(%ld): failed=%x "
1616 "mb[0]=%x mb[1]=%x mb[2]=%x.\n", ha->host_no, rval, 1631 "mb[0]=%x mb[1]=%x mb[2]=%x.\n", vha->host_no, rval,
1617 mcp->mb[0], mcp->mb[1], mcp->mb[2])); 1632 mcp->mb[0], mcp->mb[1], mcp->mb[2]));
1618 } else { 1633 } else {
1619 /*EMPTY*/ 1634 /*EMPTY*/
1620 DEBUG11(printk("qla2x00_login_fabric(%ld): done.\n", 1635 DEBUG11(printk("qla2x00_login_fabric(%ld): done.\n",
1621 ha->host_no)); 1636 vha->host_no));
1622 } 1637 }
1623 1638
1624 return rval; 1639 return rval;
@@ -1641,19 +1656,20 @@ qla2x00_login_fabric(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t domain,
1641 * 1656 *
1642 */ 1657 */
1643int 1658int
1644qla2x00_login_local_device(scsi_qla_host_t *ha, fc_port_t *fcport, 1659qla2x00_login_local_device(scsi_qla_host_t *vha, fc_port_t *fcport,
1645 uint16_t *mb_ret, uint8_t opt) 1660 uint16_t *mb_ret, uint8_t opt)
1646{ 1661{
1647 int rval; 1662 int rval;
1648 mbx_cmd_t mc; 1663 mbx_cmd_t mc;
1649 mbx_cmd_t *mcp = &mc; 1664 mbx_cmd_t *mcp = &mc;
1665 struct qla_hw_data *ha = vha->hw;
1650 1666
1651 if (IS_FWI2_CAPABLE(ha)) 1667 if (IS_FWI2_CAPABLE(ha))
1652 return qla24xx_login_fabric(ha, fcport->loop_id, 1668 return qla24xx_login_fabric(vha, fcport->loop_id,
1653 fcport->d_id.b.domain, fcport->d_id.b.area, 1669 fcport->d_id.b.domain, fcport->d_id.b.area,
1654 fcport->d_id.b.al_pa, mb_ret, opt); 1670 fcport->d_id.b.al_pa, mb_ret, opt);
1655 1671
1656 DEBUG3(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 1672 DEBUG3(printk("%s(%ld): entered.\n", __func__, vha->host_no));
1657 1673
1658 mcp->mb[0] = MBC_LOGIN_LOOP_PORT; 1674 mcp->mb[0] = MBC_LOGIN_LOOP_PORT;
1659 if (HAS_EXTENDED_IDS(ha)) 1675 if (HAS_EXTENDED_IDS(ha))
@@ -1665,7 +1681,7 @@ qla2x00_login_local_device(scsi_qla_host_t *ha, fc_port_t *fcport,
1665 mcp->in_mb = MBX_7|MBX_6|MBX_1|MBX_0; 1681 mcp->in_mb = MBX_7|MBX_6|MBX_1|MBX_0;
1666 mcp->tov = (ha->login_timeout * 2) + (ha->login_timeout / 2); 1682 mcp->tov = (ha->login_timeout * 2) + (ha->login_timeout / 2);
1667 mcp->flags = 0; 1683 mcp->flags = 0;
1668 rval = qla2x00_mailbox_command(ha, mcp); 1684 rval = qla2x00_mailbox_command(vha, mcp);
1669 1685
1670 /* Return mailbox statuses. */ 1686 /* Return mailbox statuses. */
1671 if (mb_ret != NULL) { 1687 if (mb_ret != NULL) {
@@ -1686,33 +1702,34 @@ qla2x00_login_local_device(scsi_qla_host_t *ha, fc_port_t *fcport,
1686 rval = QLA_SUCCESS; 1702 rval = QLA_SUCCESS;
1687 1703
1688 DEBUG(printk("%s(%ld): failed=%x mb[0]=%x mb[1]=%x " 1704 DEBUG(printk("%s(%ld): failed=%x mb[0]=%x mb[1]=%x "
1689 "mb[6]=%x mb[7]=%x.\n", __func__, ha->host_no, rval, 1705 "mb[6]=%x mb[7]=%x.\n", __func__, vha->host_no, rval,
1690 mcp->mb[0], mcp->mb[1], mcp->mb[6], mcp->mb[7])); 1706 mcp->mb[0], mcp->mb[1], mcp->mb[6], mcp->mb[7]));
1691 DEBUG2_3(printk("%s(%ld): failed=%x mb[0]=%x mb[1]=%x " 1707 DEBUG2_3(printk("%s(%ld): failed=%x mb[0]=%x mb[1]=%x "
1692 "mb[6]=%x mb[7]=%x.\n", __func__, ha->host_no, rval, 1708 "mb[6]=%x mb[7]=%x.\n", __func__, vha->host_no, rval,
1693 mcp->mb[0], mcp->mb[1], mcp->mb[6], mcp->mb[7])); 1709 mcp->mb[0], mcp->mb[1], mcp->mb[6], mcp->mb[7]));
1694 } else { 1710 } else {
1695 /*EMPTY*/ 1711 /*EMPTY*/
1696 DEBUG3(printk("%s(%ld): done.\n", __func__, ha->host_no)); 1712 DEBUG3(printk("%s(%ld): done.\n", __func__, vha->host_no));
1697 } 1713 }
1698 1714
1699 return (rval); 1715 return (rval);
1700} 1716}
1701 1717
1702int 1718int
1703qla24xx_fabric_logout(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t domain, 1719qla24xx_fabric_logout(scsi_qla_host_t *vha, uint16_t loop_id, uint8_t domain,
1704 uint8_t area, uint8_t al_pa) 1720 uint8_t area, uint8_t al_pa)
1705{ 1721{
1706 int rval; 1722 int rval;
1707 struct logio_entry_24xx *lg; 1723 struct logio_entry_24xx *lg;
1708 dma_addr_t lg_dma; 1724 dma_addr_t lg_dma;
1725 struct qla_hw_data *ha = vha->hw;
1709 1726
1710 DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 1727 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
1711 1728
1712 lg = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &lg_dma); 1729 lg = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &lg_dma);
1713 if (lg == NULL) { 1730 if (lg == NULL) {
1714 DEBUG2_3(printk("%s(%ld): failed to allocate Logout IOCB.\n", 1731 DEBUG2_3(printk("%s(%ld): failed to allocate Logout IOCB.\n",
1715 __func__, ha->host_no)); 1732 __func__, vha->host_no));
1716 return QLA_MEMORY_ALLOC_FAILED; 1733 return QLA_MEMORY_ALLOC_FAILED;
1717 } 1734 }
1718 memset(lg, 0, sizeof(struct logio_entry_24xx)); 1735 memset(lg, 0, sizeof(struct logio_entry_24xx));
@@ -1725,25 +1742,25 @@ qla24xx_fabric_logout(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t domain,
1725 lg->port_id[0] = al_pa; 1742 lg->port_id[0] = al_pa;
1726 lg->port_id[1] = area; 1743 lg->port_id[1] = area;
1727 lg->port_id[2] = domain; 1744 lg->port_id[2] = domain;
1728 lg->vp_index = ha->vp_idx; 1745 lg->vp_index = vha->vp_idx;
1729 rval = qla2x00_issue_iocb(ha, lg, lg_dma, 0); 1746 rval = qla2x00_issue_iocb(vha, lg, lg_dma, 0);
1730 if (rval != QLA_SUCCESS) { 1747 if (rval != QLA_SUCCESS) {
1731 DEBUG2_3_11(printk("%s(%ld): failed to issue Logout IOCB " 1748 DEBUG2_3_11(printk("%s(%ld): failed to issue Logout IOCB "
1732 "(%x).\n", __func__, ha->host_no, rval)); 1749 "(%x).\n", __func__, vha->host_no, rval));
1733 } else if (lg->entry_status != 0) { 1750 } else if (lg->entry_status != 0) {
1734 DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB " 1751 DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB "
1735 "-- error status (%x).\n", __func__, ha->host_no, 1752 "-- error status (%x).\n", __func__, vha->host_no,
1736 lg->entry_status)); 1753 lg->entry_status));
1737 rval = QLA_FUNCTION_FAILED; 1754 rval = QLA_FUNCTION_FAILED;
1738 } else if (lg->comp_status != __constant_cpu_to_le16(CS_COMPLETE)) { 1755 } else if (lg->comp_status != __constant_cpu_to_le16(CS_COMPLETE)) {
1739 DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB " 1756 DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB "
1740 "-- completion status (%x) ioparam=%x/%x.\n", __func__, 1757 "-- completion status (%x) ioparam=%x/%x.\n", __func__,
1741 ha->host_no, le16_to_cpu(lg->comp_status), 1758 vha->host_no, le16_to_cpu(lg->comp_status),
1742 le32_to_cpu(lg->io_parameter[0]), 1759 le32_to_cpu(lg->io_parameter[0]),
1743 le32_to_cpu(lg->io_parameter[1]))); 1760 le32_to_cpu(lg->io_parameter[1])));
1744 } else { 1761 } else {
1745 /*EMPTY*/ 1762 /*EMPTY*/
1746 DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); 1763 DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
1747 } 1764 }
1748 1765
1749 dma_pool_free(ha->s_dma_pool, lg, lg_dma); 1766 dma_pool_free(ha->s_dma_pool, lg, lg_dma);
@@ -1768,7 +1785,7 @@ qla24xx_fabric_logout(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t domain,
1768 * Kernel context. 1785 * Kernel context.
1769 */ 1786 */
1770int 1787int
1771qla2x00_fabric_logout(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t domain, 1788qla2x00_fabric_logout(scsi_qla_host_t *vha, uint16_t loop_id, uint8_t domain,
1772 uint8_t area, uint8_t al_pa) 1789 uint8_t area, uint8_t al_pa)
1773{ 1790{
1774 int rval; 1791 int rval;
@@ -1776,11 +1793,11 @@ qla2x00_fabric_logout(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t domain,
1776 mbx_cmd_t *mcp = &mc; 1793 mbx_cmd_t *mcp = &mc;
1777 1794
1778 DEBUG11(printk("qla2x00_fabric_logout(%ld): entered.\n", 1795 DEBUG11(printk("qla2x00_fabric_logout(%ld): entered.\n",
1779 ha->host_no)); 1796 vha->host_no));
1780 1797
1781 mcp->mb[0] = MBC_LOGOUT_FABRIC_PORT; 1798 mcp->mb[0] = MBC_LOGOUT_FABRIC_PORT;
1782 mcp->out_mb = MBX_1|MBX_0; 1799 mcp->out_mb = MBX_1|MBX_0;
1783 if (HAS_EXTENDED_IDS(ha)) { 1800 if (HAS_EXTENDED_IDS(vha->hw)) {
1784 mcp->mb[1] = loop_id; 1801 mcp->mb[1] = loop_id;
1785 mcp->mb[10] = 0; 1802 mcp->mb[10] = 0;
1786 mcp->out_mb |= MBX_10; 1803 mcp->out_mb |= MBX_10;
@@ -1791,16 +1808,16 @@ qla2x00_fabric_logout(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t domain,
1791 mcp->in_mb = MBX_1|MBX_0; 1808 mcp->in_mb = MBX_1|MBX_0;
1792 mcp->tov = MBX_TOV_SECONDS; 1809 mcp->tov = MBX_TOV_SECONDS;
1793 mcp->flags = 0; 1810 mcp->flags = 0;
1794 rval = qla2x00_mailbox_command(ha, mcp); 1811 rval = qla2x00_mailbox_command(vha, mcp);
1795 1812
1796 if (rval != QLA_SUCCESS) { 1813 if (rval != QLA_SUCCESS) {
1797 /*EMPTY*/ 1814 /*EMPTY*/
1798 DEBUG2_3_11(printk("qla2x00_fabric_logout(%ld): failed=%x " 1815 DEBUG2_3_11(printk("qla2x00_fabric_logout(%ld): failed=%x "
1799 "mbx1=%x.\n", ha->host_no, rval, mcp->mb[1])); 1816 "mbx1=%x.\n", vha->host_no, rval, mcp->mb[1]));
1800 } else { 1817 } else {
1801 /*EMPTY*/ 1818 /*EMPTY*/
1802 DEBUG11(printk("qla2x00_fabric_logout(%ld): done.\n", 1819 DEBUG11(printk("qla2x00_fabric_logout(%ld): done.\n",
1803 ha->host_no)); 1820 vha->host_no));
1804 } 1821 }
1805 1822
1806 return rval; 1823 return rval;
@@ -1822,33 +1839,33 @@ qla2x00_fabric_logout(scsi_qla_host_t *ha, uint16_t loop_id, uint8_t domain,
1822 * Kernel context. 1839 * Kernel context.
1823 */ 1840 */
1824int 1841int
1825qla2x00_full_login_lip(scsi_qla_host_t *ha) 1842qla2x00_full_login_lip(scsi_qla_host_t *vha)
1826{ 1843{
1827 int rval; 1844 int rval;
1828 mbx_cmd_t mc; 1845 mbx_cmd_t mc;
1829 mbx_cmd_t *mcp = &mc; 1846 mbx_cmd_t *mcp = &mc;
1830 1847
1831 DEBUG11(printk("qla2x00_full_login_lip(%ld): entered.\n", 1848 DEBUG11(printk("qla2x00_full_login_lip(%ld): entered.\n",
1832 ha->host_no)); 1849 vha->host_no));
1833 1850
1834 mcp->mb[0] = MBC_LIP_FULL_LOGIN; 1851 mcp->mb[0] = MBC_LIP_FULL_LOGIN;
1835 mcp->mb[1] = IS_FWI2_CAPABLE(ha) ? BIT_3: 0; 1852 mcp->mb[1] = IS_FWI2_CAPABLE(vha->hw) ? BIT_3 : 0;
1836 mcp->mb[2] = 0; 1853 mcp->mb[2] = 0;
1837 mcp->mb[3] = 0; 1854 mcp->mb[3] = 0;
1838 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0; 1855 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
1839 mcp->in_mb = MBX_0; 1856 mcp->in_mb = MBX_0;
1840 mcp->tov = MBX_TOV_SECONDS; 1857 mcp->tov = MBX_TOV_SECONDS;
1841 mcp->flags = 0; 1858 mcp->flags = 0;
1842 rval = qla2x00_mailbox_command(ha, mcp); 1859 rval = qla2x00_mailbox_command(vha, mcp);
1843 1860
1844 if (rval != QLA_SUCCESS) { 1861 if (rval != QLA_SUCCESS) {
1845 /*EMPTY*/ 1862 /*EMPTY*/
1846 DEBUG2_3_11(printk("qla2x00_full_login_lip(%ld): failed=%x.\n", 1863 DEBUG2_3_11(printk("qla2x00_full_login_lip(%ld): failed=%x.\n",
1847 ha->host_no, rval)); 1864 vha->host_no, rval));
1848 } else { 1865 } else {
1849 /*EMPTY*/ 1866 /*EMPTY*/
1850 DEBUG11(printk("qla2x00_full_login_lip(%ld): done.\n", 1867 DEBUG11(printk("qla2x00_full_login_lip(%ld): done.\n",
1851 ha->host_no)); 1868 vha->host_no));
1852 } 1869 }
1853 1870
1854 return rval; 1871 return rval;
@@ -1867,7 +1884,7 @@ qla2x00_full_login_lip(scsi_qla_host_t *ha)
1867 * Kernel context. 1884 * Kernel context.
1868 */ 1885 */
1869int 1886int
1870qla2x00_get_id_list(scsi_qla_host_t *ha, void *id_list, dma_addr_t id_list_dma, 1887qla2x00_get_id_list(scsi_qla_host_t *vha, void *id_list, dma_addr_t id_list_dma,
1871 uint16_t *entries) 1888 uint16_t *entries)
1872{ 1889{
1873 int rval; 1890 int rval;
@@ -1875,20 +1892,20 @@ qla2x00_get_id_list(scsi_qla_host_t *ha, void *id_list, dma_addr_t id_list_dma,
1875 mbx_cmd_t *mcp = &mc; 1892 mbx_cmd_t *mcp = &mc;
1876 1893
1877 DEBUG11(printk("qla2x00_get_id_list(%ld): entered.\n", 1894 DEBUG11(printk("qla2x00_get_id_list(%ld): entered.\n",
1878 ha->host_no)); 1895 vha->host_no));
1879 1896
1880 if (id_list == NULL) 1897 if (id_list == NULL)
1881 return QLA_FUNCTION_FAILED; 1898 return QLA_FUNCTION_FAILED;
1882 1899
1883 mcp->mb[0] = MBC_GET_ID_LIST; 1900 mcp->mb[0] = MBC_GET_ID_LIST;
1884 mcp->out_mb = MBX_0; 1901 mcp->out_mb = MBX_0;
1885 if (IS_FWI2_CAPABLE(ha)) { 1902 if (IS_FWI2_CAPABLE(vha->hw)) {
1886 mcp->mb[2] = MSW(id_list_dma); 1903 mcp->mb[2] = MSW(id_list_dma);
1887 mcp->mb[3] = LSW(id_list_dma); 1904 mcp->mb[3] = LSW(id_list_dma);
1888 mcp->mb[6] = MSW(MSD(id_list_dma)); 1905 mcp->mb[6] = MSW(MSD(id_list_dma));
1889 mcp->mb[7] = LSW(MSD(id_list_dma)); 1906 mcp->mb[7] = LSW(MSD(id_list_dma));
1890 mcp->mb[8] = 0; 1907 mcp->mb[8] = 0;
1891 mcp->mb[9] = ha->vp_idx; 1908 mcp->mb[9] = vha->vp_idx;
1892 mcp->out_mb |= MBX_9|MBX_8|MBX_7|MBX_6|MBX_3|MBX_2; 1909 mcp->out_mb |= MBX_9|MBX_8|MBX_7|MBX_6|MBX_3|MBX_2;
1893 } else { 1910 } else {
1894 mcp->mb[1] = MSW(id_list_dma); 1911 mcp->mb[1] = MSW(id_list_dma);
@@ -1900,16 +1917,16 @@ qla2x00_get_id_list(scsi_qla_host_t *ha, void *id_list, dma_addr_t id_list_dma,
1900 mcp->in_mb = MBX_1|MBX_0; 1917 mcp->in_mb = MBX_1|MBX_0;
1901 mcp->tov = MBX_TOV_SECONDS; 1918 mcp->tov = MBX_TOV_SECONDS;
1902 mcp->flags = 0; 1919 mcp->flags = 0;
1903 rval = qla2x00_mailbox_command(ha, mcp); 1920 rval = qla2x00_mailbox_command(vha, mcp);
1904 1921
1905 if (rval != QLA_SUCCESS) { 1922 if (rval != QLA_SUCCESS) {
1906 /*EMPTY*/ 1923 /*EMPTY*/
1907 DEBUG2_3_11(printk("qla2x00_get_id_list(%ld): failed=%x.\n", 1924 DEBUG2_3_11(printk("qla2x00_get_id_list(%ld): failed=%x.\n",
1908 ha->host_no, rval)); 1925 vha->host_no, rval));
1909 } else { 1926 } else {
1910 *entries = mcp->mb[1]; 1927 *entries = mcp->mb[1];
1911 DEBUG11(printk("qla2x00_get_id_list(%ld): done.\n", 1928 DEBUG11(printk("qla2x00_get_id_list(%ld): done.\n",
1912 ha->host_no)); 1929 vha->host_no));
1913 } 1930 }
1914 1931
1915 return rval; 1932 return rval;
@@ -1929,7 +1946,7 @@ qla2x00_get_id_list(scsi_qla_host_t *ha, void *id_list, dma_addr_t id_list_dma,
1929 * Kernel context. 1946 * Kernel context.
1930 */ 1947 */
1931int 1948int
1932qla2x00_get_resource_cnts(scsi_qla_host_t *ha, uint16_t *cur_xchg_cnt, 1949qla2x00_get_resource_cnts(scsi_qla_host_t *vha, uint16_t *cur_xchg_cnt,
1933 uint16_t *orig_xchg_cnt, uint16_t *cur_iocb_cnt, 1950 uint16_t *orig_xchg_cnt, uint16_t *cur_iocb_cnt,
1934 uint16_t *orig_iocb_cnt, uint16_t *max_npiv_vports) 1951 uint16_t *orig_iocb_cnt, uint16_t *max_npiv_vports)
1935{ 1952{
@@ -1937,22 +1954,22 @@ qla2x00_get_resource_cnts(scsi_qla_host_t *ha, uint16_t *cur_xchg_cnt,
1937 mbx_cmd_t mc; 1954 mbx_cmd_t mc;
1938 mbx_cmd_t *mcp = &mc; 1955 mbx_cmd_t *mcp = &mc;
1939 1956
1940 DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 1957 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
1941 1958
1942 mcp->mb[0] = MBC_GET_RESOURCE_COUNTS; 1959 mcp->mb[0] = MBC_GET_RESOURCE_COUNTS;
1943 mcp->out_mb = MBX_0; 1960 mcp->out_mb = MBX_0;
1944 mcp->in_mb = MBX_11|MBX_10|MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0; 1961 mcp->in_mb = MBX_11|MBX_10|MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
1945 mcp->tov = MBX_TOV_SECONDS; 1962 mcp->tov = MBX_TOV_SECONDS;
1946 mcp->flags = 0; 1963 mcp->flags = 0;
1947 rval = qla2x00_mailbox_command(ha, mcp); 1964 rval = qla2x00_mailbox_command(vha, mcp);
1948 1965
1949 if (rval != QLA_SUCCESS) { 1966 if (rval != QLA_SUCCESS) {
1950 /*EMPTY*/ 1967 /*EMPTY*/
1951 DEBUG2_3_11(printk("%s(%ld): failed = %x.\n", __func__, 1968 DEBUG2_3_11(printk("%s(%ld): failed = %x.\n", __func__,
1952 ha->host_no, mcp->mb[0])); 1969 vha->host_no, mcp->mb[0]));
1953 } else { 1970 } else {
1954 DEBUG11(printk("%s(%ld): done. mb1=%x mb2=%x mb3=%x mb6=%x " 1971 DEBUG11(printk("%s(%ld): done. mb1=%x mb2=%x mb3=%x mb6=%x "
1955 "mb7=%x mb10=%x mb11=%x.\n", __func__, ha->host_no, 1972 "mb7=%x mb10=%x mb11=%x.\n", __func__, vha->host_no,
1956 mcp->mb[1], mcp->mb[2], mcp->mb[3], mcp->mb[6], mcp->mb[7], 1973 mcp->mb[1], mcp->mb[2], mcp->mb[3], mcp->mb[6], mcp->mb[7],
1957 mcp->mb[10], mcp->mb[11])); 1974 mcp->mb[10], mcp->mb[11]));
1958 1975
@@ -1964,7 +1981,7 @@ qla2x00_get_resource_cnts(scsi_qla_host_t *ha, uint16_t *cur_xchg_cnt,
1964 *cur_iocb_cnt = mcp->mb[7]; 1981 *cur_iocb_cnt = mcp->mb[7];
1965 if (orig_iocb_cnt) 1982 if (orig_iocb_cnt)
1966 *orig_iocb_cnt = mcp->mb[10]; 1983 *orig_iocb_cnt = mcp->mb[10];
1967 if (ha->flags.npiv_supported && max_npiv_vports) 1984 if (vha->hw->flags.npiv_supported && max_npiv_vports)
1968 *max_npiv_vports = mcp->mb[11]; 1985 *max_npiv_vports = mcp->mb[11];
1969 } 1986 }
1970 1987
@@ -1987,18 +2004,19 @@ qla2x00_get_resource_cnts(scsi_qla_host_t *ha, uint16_t *cur_xchg_cnt,
1987 * Kernel context. 2004 * Kernel context.
1988 */ 2005 */
1989int 2006int
1990qla2x00_get_fcal_position_map(scsi_qla_host_t *ha, char *pos_map) 2007qla2x00_get_fcal_position_map(scsi_qla_host_t *vha, char *pos_map)
1991{ 2008{
1992 int rval; 2009 int rval;
1993 mbx_cmd_t mc; 2010 mbx_cmd_t mc;
1994 mbx_cmd_t *mcp = &mc; 2011 mbx_cmd_t *mcp = &mc;
1995 char *pmap; 2012 char *pmap;
1996 dma_addr_t pmap_dma; 2013 dma_addr_t pmap_dma;
2014 struct qla_hw_data *ha = vha->hw;
1997 2015
1998 pmap = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &pmap_dma); 2016 pmap = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &pmap_dma);
1999 if (pmap == NULL) { 2017 if (pmap == NULL) {
2000 DEBUG2_3_11(printk("%s(%ld): **** Mem Alloc Failed ****", 2018 DEBUG2_3_11(printk("%s(%ld): **** Mem Alloc Failed ****",
2001 __func__, ha->host_no)); 2019 __func__, vha->host_no));
2002 return QLA_MEMORY_ALLOC_FAILED; 2020 return QLA_MEMORY_ALLOC_FAILED;
2003 } 2021 }
2004 memset(pmap, 0, FCAL_MAP_SIZE); 2022 memset(pmap, 0, FCAL_MAP_SIZE);
@@ -2013,11 +2031,11 @@ qla2x00_get_fcal_position_map(scsi_qla_host_t *ha, char *pos_map)
2013 mcp->buf_size = FCAL_MAP_SIZE; 2031 mcp->buf_size = FCAL_MAP_SIZE;
2014 mcp->flags = MBX_DMA_IN; 2032 mcp->flags = MBX_DMA_IN;
2015 mcp->tov = (ha->login_timeout * 2) + (ha->login_timeout / 2); 2033 mcp->tov = (ha->login_timeout * 2) + (ha->login_timeout / 2);
2016 rval = qla2x00_mailbox_command(ha, mcp); 2034 rval = qla2x00_mailbox_command(vha, mcp);
2017 2035
2018 if (rval == QLA_SUCCESS) { 2036 if (rval == QLA_SUCCESS) {
2019 DEBUG11(printk("%s(%ld): (mb0=%x/mb1=%x) FC/AL Position Map " 2037 DEBUG11(printk("%s(%ld): (mb0=%x/mb1=%x) FC/AL Position Map "
2020 "size (%x)\n", __func__, ha->host_no, mcp->mb[0], 2038 "size (%x)\n", __func__, vha->host_no, mcp->mb[0],
2021 mcp->mb[1], (unsigned)pmap[0])); 2039 mcp->mb[1], (unsigned)pmap[0]));
2022 DEBUG11(qla2x00_dump_buffer(pmap, pmap[0] + 1)); 2040 DEBUG11(qla2x00_dump_buffer(pmap, pmap[0] + 1));
2023 2041
@@ -2028,9 +2046,9 @@ qla2x00_get_fcal_position_map(scsi_qla_host_t *ha, char *pos_map)
2028 2046
2029 if (rval != QLA_SUCCESS) { 2047 if (rval != QLA_SUCCESS) {
2030 DEBUG2_3_11(printk("%s(%ld): failed=%x.\n", __func__, 2048 DEBUG2_3_11(printk("%s(%ld): failed=%x.\n", __func__,
2031 ha->host_no, rval)); 2049 vha->host_no, rval));
2032 } else { 2050 } else {
2033 DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); 2051 DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
2034 } 2052 }
2035 2053
2036 return rval; 2054 return rval;
@@ -2051,15 +2069,16 @@ qla2x00_get_fcal_position_map(scsi_qla_host_t *ha, char *pos_map)
2051 * BIT_1 = mailbox error. 2069 * BIT_1 = mailbox error.
2052 */ 2070 */
2053int 2071int
2054qla2x00_get_link_status(scsi_qla_host_t *ha, uint16_t loop_id, 2072qla2x00_get_link_status(scsi_qla_host_t *vha, uint16_t loop_id,
2055 struct link_statistics *stats, dma_addr_t stats_dma) 2073 struct link_statistics *stats, dma_addr_t stats_dma)
2056{ 2074{
2057 int rval; 2075 int rval;
2058 mbx_cmd_t mc; 2076 mbx_cmd_t mc;
2059 mbx_cmd_t *mcp = &mc; 2077 mbx_cmd_t *mcp = &mc;
2060 uint32_t *siter, *diter, dwords; 2078 uint32_t *siter, *diter, dwords;
2079 struct qla_hw_data *ha = vha->hw;
2061 2080
2062 DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 2081 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
2063 2082
2064 mcp->mb[0] = MBC_GET_LINK_STATUS; 2083 mcp->mb[0] = MBC_GET_LINK_STATUS;
2065 mcp->mb[2] = MSW(stats_dma); 2084 mcp->mb[2] = MSW(stats_dma);
@@ -2084,12 +2103,12 @@ qla2x00_get_link_status(scsi_qla_host_t *ha, uint16_t loop_id,
2084 } 2103 }
2085 mcp->tov = MBX_TOV_SECONDS; 2104 mcp->tov = MBX_TOV_SECONDS;
2086 mcp->flags = IOCTL_CMD; 2105 mcp->flags = IOCTL_CMD;
2087 rval = qla2x00_mailbox_command(ha, mcp); 2106 rval = qla2x00_mailbox_command(vha, mcp);
2088 2107
2089 if (rval == QLA_SUCCESS) { 2108 if (rval == QLA_SUCCESS) {
2090 if (mcp->mb[0] != MBS_COMMAND_COMPLETE) { 2109 if (mcp->mb[0] != MBS_COMMAND_COMPLETE) {
2091 DEBUG2_3_11(printk("%s(%ld): cmd failed. mbx0=%x.\n", 2110 DEBUG2_3_11(printk("%s(%ld): cmd failed. mbx0=%x.\n",
2092 __func__, ha->host_no, mcp->mb[0])); 2111 __func__, vha->host_no, mcp->mb[0]));
2093 rval = QLA_FUNCTION_FAILED; 2112 rval = QLA_FUNCTION_FAILED;
2094 } else { 2113 } else {
2095 /* Copy over data -- firmware data is LE. */ 2114 /* Copy over data -- firmware data is LE. */
@@ -2101,14 +2120,14 @@ qla2x00_get_link_status(scsi_qla_host_t *ha, uint16_t loop_id,
2101 } else { 2120 } else {
2102 /* Failed. */ 2121 /* Failed. */
2103 DEBUG2_3_11(printk("%s(%ld): failed=%x.\n", __func__, 2122 DEBUG2_3_11(printk("%s(%ld): failed=%x.\n", __func__,
2104 ha->host_no, rval)); 2123 vha->host_no, rval));
2105 } 2124 }
2106 2125
2107 return rval; 2126 return rval;
2108} 2127}
2109 2128
2110int 2129int
2111qla24xx_get_isp_stats(scsi_qla_host_t *ha, struct link_statistics *stats, 2130qla24xx_get_isp_stats(scsi_qla_host_t *vha, struct link_statistics *stats,
2112 dma_addr_t stats_dma) 2131 dma_addr_t stats_dma)
2113{ 2132{
2114 int rval; 2133 int rval;
@@ -2116,7 +2135,7 @@ qla24xx_get_isp_stats(scsi_qla_host_t *ha, struct link_statistics *stats,
2116 mbx_cmd_t *mcp = &mc; 2135 mbx_cmd_t *mcp = &mc;
2117 uint32_t *siter, *diter, dwords; 2136 uint32_t *siter, *diter, dwords;
2118 2137
2119 DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 2138 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
2120 2139
2121 mcp->mb[0] = MBC_GET_LINK_PRIV_STATS; 2140 mcp->mb[0] = MBC_GET_LINK_PRIV_STATS;
2122 mcp->mb[2] = MSW(stats_dma); 2141 mcp->mb[2] = MSW(stats_dma);
@@ -2124,18 +2143,18 @@ qla24xx_get_isp_stats(scsi_qla_host_t *ha, struct link_statistics *stats,
2124 mcp->mb[6] = MSW(MSD(stats_dma)); 2143 mcp->mb[6] = MSW(MSD(stats_dma));
2125 mcp->mb[7] = LSW(MSD(stats_dma)); 2144 mcp->mb[7] = LSW(MSD(stats_dma));
2126 mcp->mb[8] = sizeof(struct link_statistics) / 4; 2145 mcp->mb[8] = sizeof(struct link_statistics) / 4;
2127 mcp->mb[9] = ha->vp_idx; 2146 mcp->mb[9] = vha->vp_idx;
2128 mcp->mb[10] = 0; 2147 mcp->mb[10] = 0;
2129 mcp->out_mb = MBX_10|MBX_9|MBX_8|MBX_7|MBX_6|MBX_3|MBX_2|MBX_0; 2148 mcp->out_mb = MBX_10|MBX_9|MBX_8|MBX_7|MBX_6|MBX_3|MBX_2|MBX_0;
2130 mcp->in_mb = MBX_2|MBX_1|MBX_0; 2149 mcp->in_mb = MBX_2|MBX_1|MBX_0;
2131 mcp->tov = MBX_TOV_SECONDS; 2150 mcp->tov = MBX_TOV_SECONDS;
2132 mcp->flags = IOCTL_CMD; 2151 mcp->flags = IOCTL_CMD;
2133 rval = qla2x00_mailbox_command(ha, mcp); 2152 rval = qla2x00_mailbox_command(vha, mcp);
2134 2153
2135 if (rval == QLA_SUCCESS) { 2154 if (rval == QLA_SUCCESS) {
2136 if (mcp->mb[0] != MBS_COMMAND_COMPLETE) { 2155 if (mcp->mb[0] != MBS_COMMAND_COMPLETE) {
2137 DEBUG2_3_11(printk("%s(%ld): cmd failed. mbx0=%x.\n", 2156 DEBUG2_3_11(printk("%s(%ld): cmd failed. mbx0=%x.\n",
2138 __func__, ha->host_no, mcp->mb[0])); 2157 __func__, vha->host_no, mcp->mb[0]));
2139 rval = QLA_FUNCTION_FAILED; 2158 rval = QLA_FUNCTION_FAILED;
2140 } else { 2159 } else {
2141 /* Copy over data -- firmware data is LE. */ 2160 /* Copy over data -- firmware data is LE. */
@@ -2147,14 +2166,14 @@ qla24xx_get_isp_stats(scsi_qla_host_t *ha, struct link_statistics *stats,
2147 } else { 2166 } else {
2148 /* Failed. */ 2167 /* Failed. */
2149 DEBUG2_3_11(printk("%s(%ld): failed=%x.\n", __func__, 2168 DEBUG2_3_11(printk("%s(%ld): failed=%x.\n", __func__,
2150 ha->host_no, rval)); 2169 vha->host_no, rval));
2151 } 2170 }
2152 2171
2153 return rval; 2172 return rval;
2154} 2173}
2155 2174
2156int 2175int
2157qla24xx_abort_command(scsi_qla_host_t *ha, srb_t *sp) 2176qla24xx_abort_command(scsi_qla_host_t *vha, srb_t *sp)
2158{ 2177{
2159 int rval; 2178 int rval;
2160 fc_port_t *fcport; 2179 fc_port_t *fcport;
@@ -2163,18 +2182,19 @@ qla24xx_abort_command(scsi_qla_host_t *ha, srb_t *sp)
2163 struct abort_entry_24xx *abt; 2182 struct abort_entry_24xx *abt;
2164 dma_addr_t abt_dma; 2183 dma_addr_t abt_dma;
2165 uint32_t handle; 2184 uint32_t handle;
2166 scsi_qla_host_t *pha = to_qla_parent(ha); 2185 struct qla_hw_data *ha = vha->hw;
2186 struct req_que *req = ha->req;
2167 2187
2168 DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 2188 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
2169 2189
2170 fcport = sp->fcport; 2190 fcport = sp->fcport;
2171 2191
2172 spin_lock_irqsave(&pha->hardware_lock, flags); 2192 spin_lock_irqsave(&ha->hardware_lock, flags);
2173 for (handle = 1; handle < MAX_OUTSTANDING_COMMANDS; handle++) { 2193 for (handle = 1; handle < MAX_OUTSTANDING_COMMANDS; handle++) {
2174 if (pha->outstanding_cmds[handle] == sp) 2194 if (req->outstanding_cmds[handle] == sp)
2175 break; 2195 break;
2176 } 2196 }
2177 spin_unlock_irqrestore(&pha->hardware_lock, flags); 2197 spin_unlock_irqrestore(&ha->hardware_lock, flags);
2178 if (handle == MAX_OUTSTANDING_COMMANDS) { 2198 if (handle == MAX_OUTSTANDING_COMMANDS) {
2179 /* Command not found. */ 2199 /* Command not found. */
2180 return QLA_FUNCTION_FAILED; 2200 return QLA_FUNCTION_FAILED;
@@ -2183,7 +2203,7 @@ qla24xx_abort_command(scsi_qla_host_t *ha, srb_t *sp)
2183 abt = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &abt_dma); 2203 abt = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &abt_dma);
2184 if (abt == NULL) { 2204 if (abt == NULL) {
2185 DEBUG2_3(printk("%s(%ld): failed to allocate Abort IOCB.\n", 2205 DEBUG2_3(printk("%s(%ld): failed to allocate Abort IOCB.\n",
2186 __func__, ha->host_no)); 2206 __func__, vha->host_no));
2187 return QLA_MEMORY_ALLOC_FAILED; 2207 return QLA_MEMORY_ALLOC_FAILED;
2188 } 2208 }
2189 memset(abt, 0, sizeof(struct abort_entry_24xx)); 2209 memset(abt, 0, sizeof(struct abort_entry_24xx));
@@ -2196,22 +2216,22 @@ qla24xx_abort_command(scsi_qla_host_t *ha, srb_t *sp)
2196 abt->port_id[1] = fcport->d_id.b.area; 2216 abt->port_id[1] = fcport->d_id.b.area;
2197 abt->port_id[2] = fcport->d_id.b.domain; 2217 abt->port_id[2] = fcport->d_id.b.domain;
2198 abt->vp_index = fcport->vp_idx; 2218 abt->vp_index = fcport->vp_idx;
2199 rval = qla2x00_issue_iocb(ha, abt, abt_dma, 0); 2219 rval = qla2x00_issue_iocb(vha, abt, abt_dma, 0);
2200 if (rval != QLA_SUCCESS) { 2220 if (rval != QLA_SUCCESS) {
2201 DEBUG2_3_11(printk("%s(%ld): failed to issue IOCB (%x).\n", 2221 DEBUG2_3_11(printk("%s(%ld): failed to issue IOCB (%x).\n",
2202 __func__, ha->host_no, rval)); 2222 __func__, vha->host_no, rval));
2203 } else if (abt->entry_status != 0) { 2223 } else if (abt->entry_status != 0) {
2204 DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB " 2224 DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB "
2205 "-- error status (%x).\n", __func__, ha->host_no, 2225 "-- error status (%x).\n", __func__, vha->host_no,
2206 abt->entry_status)); 2226 abt->entry_status));
2207 rval = QLA_FUNCTION_FAILED; 2227 rval = QLA_FUNCTION_FAILED;
2208 } else if (abt->nport_handle != __constant_cpu_to_le16(0)) { 2228 } else if (abt->nport_handle != __constant_cpu_to_le16(0)) {
2209 DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB " 2229 DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB "
2210 "-- completion status (%x).\n", __func__, ha->host_no, 2230 "-- completion status (%x).\n", __func__, vha->host_no,
2211 le16_to_cpu(abt->nport_handle))); 2231 le16_to_cpu(abt->nport_handle)));
2212 rval = QLA_FUNCTION_FAILED; 2232 rval = QLA_FUNCTION_FAILED;
2213 } else { 2233 } else {
2214 DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); 2234 DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
2215 } 2235 }
2216 2236
2217 dma_pool_free(ha->s_dma_pool, abt, abt_dma); 2237 dma_pool_free(ha->s_dma_pool, abt, abt_dma);
@@ -2233,16 +2253,17 @@ __qla24xx_issue_tmf(char *name, uint32_t type, struct fc_port *fcport,
2233 int rval, rval2; 2253 int rval, rval2;
2234 struct tsk_mgmt_cmd *tsk; 2254 struct tsk_mgmt_cmd *tsk;
2235 dma_addr_t tsk_dma; 2255 dma_addr_t tsk_dma;
2236 scsi_qla_host_t *ha, *pha; 2256 scsi_qla_host_t *vha;
2257 struct qla_hw_data *ha;
2237 2258
2238 DEBUG11(printk("%s(%ld): entered.\n", __func__, fcport->ha->host_no)); 2259 DEBUG11(printk("%s(%ld): entered.\n", __func__, fcport->ha->host_no));
2239 2260
2240 ha = fcport->ha; 2261 vha = fcport->vha;
2241 pha = to_qla_parent(ha); 2262 ha = vha->hw;
2242 tsk = dma_pool_alloc(pha->s_dma_pool, GFP_KERNEL, &tsk_dma); 2263 tsk = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &tsk_dma);
2243 if (tsk == NULL) { 2264 if (tsk == NULL) {
2244 DEBUG2_3(printk("%s(%ld): failed to allocate Task Management " 2265 DEBUG2_3(printk("%s(%ld): failed to allocate Task Management "
2245 "IOCB.\n", __func__, ha->host_no)); 2266 "IOCB.\n", __func__, vha->host_no));
2246 return QLA_MEMORY_ALLOC_FAILED; 2267 return QLA_MEMORY_ALLOC_FAILED;
2247 } 2268 }
2248 memset(tsk, 0, sizeof(struct tsk_mgmt_cmd)); 2269 memset(tsk, 0, sizeof(struct tsk_mgmt_cmd));
@@ -2262,34 +2283,34 @@ __qla24xx_issue_tmf(char *name, uint32_t type, struct fc_port *fcport,
2262 sizeof(tsk->p.tsk.lun)); 2283 sizeof(tsk->p.tsk.lun));
2263 } 2284 }
2264 2285
2265 rval = qla2x00_issue_iocb(ha, tsk, tsk_dma, 0); 2286 rval = qla2x00_issue_iocb(vha, tsk, tsk_dma, 0);
2266 if (rval != QLA_SUCCESS) { 2287 if (rval != QLA_SUCCESS) {
2267 DEBUG2_3_11(printk("%s(%ld): failed to issue %s Reset IOCB " 2288 DEBUG2_3_11(printk("%s(%ld): failed to issue %s Reset IOCB "
2268 "(%x).\n", __func__, ha->host_no, name, rval)); 2289 "(%x).\n", __func__, vha->host_no, name, rval));
2269 } else if (tsk->p.sts.entry_status != 0) { 2290 } else if (tsk->p.sts.entry_status != 0) {
2270 DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB " 2291 DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB "
2271 "-- error status (%x).\n", __func__, ha->host_no, 2292 "-- error status (%x).\n", __func__, vha->host_no,
2272 tsk->p.sts.entry_status)); 2293 tsk->p.sts.entry_status));
2273 rval = QLA_FUNCTION_FAILED; 2294 rval = QLA_FUNCTION_FAILED;
2274 } else if (tsk->p.sts.comp_status != 2295 } else if (tsk->p.sts.comp_status !=
2275 __constant_cpu_to_le16(CS_COMPLETE)) { 2296 __constant_cpu_to_le16(CS_COMPLETE)) {
2276 DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB " 2297 DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB "
2277 "-- completion status (%x).\n", __func__, 2298 "-- completion status (%x).\n", __func__,
2278 ha->host_no, le16_to_cpu(tsk->p.sts.comp_status))); 2299 vha->host_no, le16_to_cpu(tsk->p.sts.comp_status)));
2279 rval = QLA_FUNCTION_FAILED; 2300 rval = QLA_FUNCTION_FAILED;
2280 } 2301 }
2281 2302
2282 /* Issue marker IOCB. */ 2303 /* Issue marker IOCB. */
2283 rval2 = qla2x00_marker(ha, fcport->loop_id, l, 2304 rval2 = qla2x00_marker(vha, fcport->loop_id, l,
2284 type == TCF_LUN_RESET ? MK_SYNC_ID_LUN: MK_SYNC_ID); 2305 type == TCF_LUN_RESET ? MK_SYNC_ID_LUN: MK_SYNC_ID);
2285 if (rval2 != QLA_SUCCESS) { 2306 if (rval2 != QLA_SUCCESS) {
2286 DEBUG2_3_11(printk("%s(%ld): failed to issue Marker IOCB " 2307 DEBUG2_3_11(printk("%s(%ld): failed to issue Marker IOCB "
2287 "(%x).\n", __func__, ha->host_no, rval2)); 2308 "(%x).\n", __func__, vha->host_no, rval2));
2288 } else { 2309 } else {
2289 DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); 2310 DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
2290 } 2311 }
2291 2312
2292 dma_pool_free(pha->s_dma_pool, tsk, tsk_dma); 2313 dma_pool_free(ha->s_dma_pool, tsk, tsk_dma);
2293 2314
2294 return rval; 2315 return rval;
2295} 2316}
@@ -2307,29 +2328,30 @@ qla24xx_lun_reset(struct fc_port *fcport, unsigned int l)
2307} 2328}
2308 2329
2309int 2330int
2310qla2x00_system_error(scsi_qla_host_t *ha) 2331qla2x00_system_error(scsi_qla_host_t *vha)
2311{ 2332{
2312 int rval; 2333 int rval;
2313 mbx_cmd_t mc; 2334 mbx_cmd_t mc;
2314 mbx_cmd_t *mcp = &mc; 2335 mbx_cmd_t *mcp = &mc;
2336 struct qla_hw_data *ha = vha->hw;
2315 2337
2316 if (!IS_QLA23XX(ha) && !IS_FWI2_CAPABLE(ha)) 2338 if (!IS_QLA23XX(ha) && !IS_FWI2_CAPABLE(ha))
2317 return QLA_FUNCTION_FAILED; 2339 return QLA_FUNCTION_FAILED;
2318 2340
2319 DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 2341 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
2320 2342
2321 mcp->mb[0] = MBC_GEN_SYSTEM_ERROR; 2343 mcp->mb[0] = MBC_GEN_SYSTEM_ERROR;
2322 mcp->out_mb = MBX_0; 2344 mcp->out_mb = MBX_0;
2323 mcp->in_mb = MBX_0; 2345 mcp->in_mb = MBX_0;
2324 mcp->tov = 5; 2346 mcp->tov = 5;
2325 mcp->flags = 0; 2347 mcp->flags = 0;
2326 rval = qla2x00_mailbox_command(ha, mcp); 2348 rval = qla2x00_mailbox_command(vha, mcp);
2327 2349
2328 if (rval != QLA_SUCCESS) { 2350 if (rval != QLA_SUCCESS) {
2329 DEBUG2_3_11(printk("%s(%ld): failed=%x.\n", __func__, 2351 DEBUG2_3_11(printk("%s(%ld): failed=%x.\n", __func__,
2330 ha->host_no, rval)); 2352 vha->host_no, rval));
2331 } else { 2353 } else {
2332 DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); 2354 DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
2333 } 2355 }
2334 2356
2335 return rval; 2357 return rval;
@@ -2342,14 +2364,14 @@ qla2x00_system_error(scsi_qla_host_t *ha)
2342 * Returns 2364 * Returns
2343 */ 2365 */
2344int 2366int
2345qla2x00_set_serdes_params(scsi_qla_host_t *ha, uint16_t sw_em_1g, 2367qla2x00_set_serdes_params(scsi_qla_host_t *vha, uint16_t sw_em_1g,
2346 uint16_t sw_em_2g, uint16_t sw_em_4g) 2368 uint16_t sw_em_2g, uint16_t sw_em_4g)
2347{ 2369{
2348 int rval; 2370 int rval;
2349 mbx_cmd_t mc; 2371 mbx_cmd_t mc;
2350 mbx_cmd_t *mcp = &mc; 2372 mbx_cmd_t *mcp = &mc;
2351 2373
2352 DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 2374 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
2353 2375
2354 mcp->mb[0] = MBC_SERDES_PARAMS; 2376 mcp->mb[0] = MBC_SERDES_PARAMS;
2355 mcp->mb[1] = BIT_0; 2377 mcp->mb[1] = BIT_0;
@@ -2360,61 +2382,61 @@ qla2x00_set_serdes_params(scsi_qla_host_t *ha, uint16_t sw_em_1g,
2360 mcp->in_mb = MBX_0; 2382 mcp->in_mb = MBX_0;
2361 mcp->tov = MBX_TOV_SECONDS; 2383 mcp->tov = MBX_TOV_SECONDS;
2362 mcp->flags = 0; 2384 mcp->flags = 0;
2363 rval = qla2x00_mailbox_command(ha, mcp); 2385 rval = qla2x00_mailbox_command(vha, mcp);
2364 2386
2365 if (rval != QLA_SUCCESS) { 2387 if (rval != QLA_SUCCESS) {
2366 /*EMPTY*/ 2388 /*EMPTY*/
2367 DEBUG2_3_11(printk("%s(%ld): failed=%x (%x).\n", __func__, 2389 DEBUG2_3_11(printk("%s(%ld): failed=%x (%x).\n", __func__,
2368 ha->host_no, rval, mcp->mb[0])); 2390 vha->host_no, rval, mcp->mb[0]));
2369 } else { 2391 } else {
2370 /*EMPTY*/ 2392 /*EMPTY*/
2371 DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); 2393 DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
2372 } 2394 }
2373 2395
2374 return rval; 2396 return rval;
2375} 2397}
2376 2398
2377int 2399int
2378qla2x00_stop_firmware(scsi_qla_host_t *ha) 2400qla2x00_stop_firmware(scsi_qla_host_t *vha)
2379{ 2401{
2380 int rval; 2402 int rval;
2381 mbx_cmd_t mc; 2403 mbx_cmd_t mc;
2382 mbx_cmd_t *mcp = &mc; 2404 mbx_cmd_t *mcp = &mc;
2383 2405
2384 if (!IS_FWI2_CAPABLE(ha)) 2406 if (!IS_FWI2_CAPABLE(vha->hw))
2385 return QLA_FUNCTION_FAILED; 2407 return QLA_FUNCTION_FAILED;
2386 2408
2387 DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 2409 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
2388 2410
2389 mcp->mb[0] = MBC_STOP_FIRMWARE; 2411 mcp->mb[0] = MBC_STOP_FIRMWARE;
2390 mcp->out_mb = MBX_0; 2412 mcp->out_mb = MBX_0;
2391 mcp->in_mb = MBX_0; 2413 mcp->in_mb = MBX_0;
2392 mcp->tov = 5; 2414 mcp->tov = 5;
2393 mcp->flags = 0; 2415 mcp->flags = 0;
2394 rval = qla2x00_mailbox_command(ha, mcp); 2416 rval = qla2x00_mailbox_command(vha, mcp);
2395 2417
2396 if (rval != QLA_SUCCESS) { 2418 if (rval != QLA_SUCCESS) {
2397 DEBUG2_3_11(printk("%s(%ld): failed=%x.\n", __func__, 2419 DEBUG2_3_11(printk("%s(%ld): failed=%x.\n", __func__,
2398 ha->host_no, rval)); 2420 vha->host_no, rval));
2399 } else { 2421 } else {
2400 DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); 2422 DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
2401 } 2423 }
2402 2424
2403 return rval; 2425 return rval;
2404} 2426}
2405 2427
2406int 2428int
2407qla2x00_enable_eft_trace(scsi_qla_host_t *ha, dma_addr_t eft_dma, 2429qla2x00_enable_eft_trace(scsi_qla_host_t *vha, dma_addr_t eft_dma,
2408 uint16_t buffers) 2430 uint16_t buffers)
2409{ 2431{
2410 int rval; 2432 int rval;
2411 mbx_cmd_t mc; 2433 mbx_cmd_t mc;
2412 mbx_cmd_t *mcp = &mc; 2434 mbx_cmd_t *mcp = &mc;
2413 2435
2414 if (!IS_FWI2_CAPABLE(ha)) 2436 if (!IS_FWI2_CAPABLE(vha->hw))
2415 return QLA_FUNCTION_FAILED; 2437 return QLA_FUNCTION_FAILED;
2416 2438
2417 DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 2439 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
2418 2440
2419 mcp->mb[0] = MBC_TRACE_CONTROL; 2441 mcp->mb[0] = MBC_TRACE_CONTROL;
2420 mcp->mb[1] = TC_EFT_ENABLE; 2442 mcp->mb[1] = TC_EFT_ENABLE;
@@ -2428,28 +2450,28 @@ qla2x00_enable_eft_trace(scsi_qla_host_t *ha, dma_addr_t eft_dma,
2428 mcp->in_mb = MBX_1|MBX_0; 2450 mcp->in_mb = MBX_1|MBX_0;
2429 mcp->tov = MBX_TOV_SECONDS; 2451 mcp->tov = MBX_TOV_SECONDS;
2430 mcp->flags = 0; 2452 mcp->flags = 0;
2431 rval = qla2x00_mailbox_command(ha, mcp); 2453 rval = qla2x00_mailbox_command(vha, mcp);
2432 if (rval != QLA_SUCCESS) { 2454 if (rval != QLA_SUCCESS) {
2433 DEBUG2_3_11(printk("%s(%ld): failed=%x mb[0]=%x mb[1]=%x.\n", 2455 DEBUG2_3_11(printk("%s(%ld): failed=%x mb[0]=%x mb[1]=%x.\n",
2434 __func__, ha->host_no, rval, mcp->mb[0], mcp->mb[1])); 2456 __func__, vha->host_no, rval, mcp->mb[0], mcp->mb[1]));
2435 } else { 2457 } else {
2436 DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); 2458 DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
2437 } 2459 }
2438 2460
2439 return rval; 2461 return rval;
2440} 2462}
2441 2463
2442int 2464int
2443qla2x00_disable_eft_trace(scsi_qla_host_t *ha) 2465qla2x00_disable_eft_trace(scsi_qla_host_t *vha)
2444{ 2466{
2445 int rval; 2467 int rval;
2446 mbx_cmd_t mc; 2468 mbx_cmd_t mc;
2447 mbx_cmd_t *mcp = &mc; 2469 mbx_cmd_t *mcp = &mc;
2448 2470
2449 if (!IS_FWI2_CAPABLE(ha)) 2471 if (!IS_FWI2_CAPABLE(vha->hw))
2450 return QLA_FUNCTION_FAILED; 2472 return QLA_FUNCTION_FAILED;
2451 2473
2452 DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 2474 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
2453 2475
2454 mcp->mb[0] = MBC_TRACE_CONTROL; 2476 mcp->mb[0] = MBC_TRACE_CONTROL;
2455 mcp->mb[1] = TC_EFT_DISABLE; 2477 mcp->mb[1] = TC_EFT_DISABLE;
@@ -2457,29 +2479,29 @@ qla2x00_disable_eft_trace(scsi_qla_host_t *ha)
2457 mcp->in_mb = MBX_1|MBX_0; 2479 mcp->in_mb = MBX_1|MBX_0;
2458 mcp->tov = MBX_TOV_SECONDS; 2480 mcp->tov = MBX_TOV_SECONDS;
2459 mcp->flags = 0; 2481 mcp->flags = 0;
2460 rval = qla2x00_mailbox_command(ha, mcp); 2482 rval = qla2x00_mailbox_command(vha, mcp);
2461 if (rval != QLA_SUCCESS) { 2483 if (rval != QLA_SUCCESS) {
2462 DEBUG2_3_11(printk("%s(%ld): failed=%x mb[0]=%x mb[1]=%x.\n", 2484 DEBUG2_3_11(printk("%s(%ld): failed=%x mb[0]=%x mb[1]=%x.\n",
2463 __func__, ha->host_no, rval, mcp->mb[0], mcp->mb[1])); 2485 __func__, vha->host_no, rval, mcp->mb[0], mcp->mb[1]));
2464 } else { 2486 } else {
2465 DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); 2487 DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
2466 } 2488 }
2467 2489
2468 return rval; 2490 return rval;
2469} 2491}
2470 2492
2471int 2493int
2472qla2x00_enable_fce_trace(scsi_qla_host_t *ha, dma_addr_t fce_dma, 2494qla2x00_enable_fce_trace(scsi_qla_host_t *vha, dma_addr_t fce_dma,
2473 uint16_t buffers, uint16_t *mb, uint32_t *dwords) 2495 uint16_t buffers, uint16_t *mb, uint32_t *dwords)
2474{ 2496{
2475 int rval; 2497 int rval;
2476 mbx_cmd_t mc; 2498 mbx_cmd_t mc;
2477 mbx_cmd_t *mcp = &mc; 2499 mbx_cmd_t *mcp = &mc;
2478 2500
2479 if (!IS_QLA25XX(ha)) 2501 if (!IS_QLA25XX(vha->hw))
2480 return QLA_FUNCTION_FAILED; 2502 return QLA_FUNCTION_FAILED;
2481 2503
2482 DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 2504 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
2483 2505
2484 mcp->mb[0] = MBC_TRACE_CONTROL; 2506 mcp->mb[0] = MBC_TRACE_CONTROL;
2485 mcp->mb[1] = TC_FCE_ENABLE; 2507 mcp->mb[1] = TC_FCE_ENABLE;
@@ -2497,12 +2519,12 @@ qla2x00_enable_fce_trace(scsi_qla_host_t *ha, dma_addr_t fce_dma,
2497 mcp->in_mb = MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0; 2519 mcp->in_mb = MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
2498 mcp->tov = MBX_TOV_SECONDS; 2520 mcp->tov = MBX_TOV_SECONDS;
2499 mcp->flags = 0; 2521 mcp->flags = 0;
2500 rval = qla2x00_mailbox_command(ha, mcp); 2522 rval = qla2x00_mailbox_command(vha, mcp);
2501 if (rval != QLA_SUCCESS) { 2523 if (rval != QLA_SUCCESS) {
2502 DEBUG2_3_11(printk("%s(%ld): failed=%x mb[0]=%x mb[1]=%x.\n", 2524 DEBUG2_3_11(printk("%s(%ld): failed=%x mb[0]=%x mb[1]=%x.\n",
2503 __func__, ha->host_no, rval, mcp->mb[0], mcp->mb[1])); 2525 __func__, vha->host_no, rval, mcp->mb[0], mcp->mb[1]));
2504 } else { 2526 } else {
2505 DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); 2527 DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
2506 2528
2507 if (mb) 2529 if (mb)
2508 memcpy(mb, mcp->mb, 8 * sizeof(*mb)); 2530 memcpy(mb, mcp->mb, 8 * sizeof(*mb));
@@ -2514,16 +2536,16 @@ qla2x00_enable_fce_trace(scsi_qla_host_t *ha, dma_addr_t fce_dma,
2514} 2536}
2515 2537
2516int 2538int
2517qla2x00_disable_fce_trace(scsi_qla_host_t *ha, uint64_t *wr, uint64_t *rd) 2539qla2x00_disable_fce_trace(scsi_qla_host_t *vha, uint64_t *wr, uint64_t *rd)
2518{ 2540{
2519 int rval; 2541 int rval;
2520 mbx_cmd_t mc; 2542 mbx_cmd_t mc;
2521 mbx_cmd_t *mcp = &mc; 2543 mbx_cmd_t *mcp = &mc;
2522 2544
2523 if (!IS_FWI2_CAPABLE(ha)) 2545 if (!IS_FWI2_CAPABLE(vha->hw))
2524 return QLA_FUNCTION_FAILED; 2546 return QLA_FUNCTION_FAILED;
2525 2547
2526 DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 2548 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
2527 2549
2528 mcp->mb[0] = MBC_TRACE_CONTROL; 2550 mcp->mb[0] = MBC_TRACE_CONTROL;
2529 mcp->mb[1] = TC_FCE_DISABLE; 2551 mcp->mb[1] = TC_FCE_DISABLE;
@@ -2533,12 +2555,12 @@ qla2x00_disable_fce_trace(scsi_qla_host_t *ha, uint64_t *wr, uint64_t *rd)
2533 MBX_1|MBX_0; 2555 MBX_1|MBX_0;
2534 mcp->tov = MBX_TOV_SECONDS; 2556 mcp->tov = MBX_TOV_SECONDS;
2535 mcp->flags = 0; 2557 mcp->flags = 0;
2536 rval = qla2x00_mailbox_command(ha, mcp); 2558 rval = qla2x00_mailbox_command(vha, mcp);
2537 if (rval != QLA_SUCCESS) { 2559 if (rval != QLA_SUCCESS) {
2538 DEBUG2_3_11(printk("%s(%ld): failed=%x mb[0]=%x mb[1]=%x.\n", 2560 DEBUG2_3_11(printk("%s(%ld): failed=%x mb[0]=%x mb[1]=%x.\n",
2539 __func__, ha->host_no, rval, mcp->mb[0], mcp->mb[1])); 2561 __func__, vha->host_no, rval, mcp->mb[0], mcp->mb[1]));
2540 } else { 2562 } else {
2541 DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); 2563 DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
2542 2564
2543 if (wr) 2565 if (wr)
2544 *wr = (uint64_t) mcp->mb[5] << 48 | 2566 *wr = (uint64_t) mcp->mb[5] << 48 |
@@ -2556,17 +2578,17 @@ qla2x00_disable_fce_trace(scsi_qla_host_t *ha, uint64_t *wr, uint64_t *rd)
2556} 2578}
2557 2579
2558int 2580int
2559qla2x00_read_sfp(scsi_qla_host_t *ha, dma_addr_t sfp_dma, uint16_t addr, 2581qla2x00_read_sfp(scsi_qla_host_t *vha, dma_addr_t sfp_dma, uint16_t addr,
2560 uint16_t off, uint16_t count) 2582 uint16_t off, uint16_t count)
2561{ 2583{
2562 int rval; 2584 int rval;
2563 mbx_cmd_t mc; 2585 mbx_cmd_t mc;
2564 mbx_cmd_t *mcp = &mc; 2586 mbx_cmd_t *mcp = &mc;
2565 2587
2566 if (!IS_FWI2_CAPABLE(ha)) 2588 if (!IS_FWI2_CAPABLE(vha->hw))
2567 return QLA_FUNCTION_FAILED; 2589 return QLA_FUNCTION_FAILED;
2568 2590
2569 DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 2591 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
2570 2592
2571 mcp->mb[0] = MBC_READ_SFP; 2593 mcp->mb[0] = MBC_READ_SFP;
2572 mcp->mb[1] = addr; 2594 mcp->mb[1] = addr;
@@ -2581,30 +2603,30 @@ qla2x00_read_sfp(scsi_qla_host_t *ha, dma_addr_t sfp_dma, uint16_t addr,
2581 mcp->in_mb = MBX_0; 2603 mcp->in_mb = MBX_0;
2582 mcp->tov = MBX_TOV_SECONDS; 2604 mcp->tov = MBX_TOV_SECONDS;
2583 mcp->flags = 0; 2605 mcp->flags = 0;
2584 rval = qla2x00_mailbox_command(ha, mcp); 2606 rval = qla2x00_mailbox_command(vha, mcp);
2585 2607
2586 if (rval != QLA_SUCCESS) { 2608 if (rval != QLA_SUCCESS) {
2587 DEBUG2_3_11(printk("%s(%ld): failed=%x (%x).\n", __func__, 2609 DEBUG2_3_11(printk("%s(%ld): failed=%x (%x).\n", __func__,
2588 ha->host_no, rval, mcp->mb[0])); 2610 vha->host_no, rval, mcp->mb[0]));
2589 } else { 2611 } else {
2590 DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); 2612 DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
2591 } 2613 }
2592 2614
2593 return rval; 2615 return rval;
2594} 2616}
2595 2617
2596int 2618int
2597qla2x00_set_idma_speed(scsi_qla_host_t *ha, uint16_t loop_id, 2619qla2x00_set_idma_speed(scsi_qla_host_t *vha, uint16_t loop_id,
2598 uint16_t port_speed, uint16_t *mb) 2620 uint16_t port_speed, uint16_t *mb)
2599{ 2621{
2600 int rval; 2622 int rval;
2601 mbx_cmd_t mc; 2623 mbx_cmd_t mc;
2602 mbx_cmd_t *mcp = &mc; 2624 mbx_cmd_t *mcp = &mc;
2603 2625
2604 if (!IS_IIDMA_CAPABLE(ha)) 2626 if (!IS_IIDMA_CAPABLE(vha->hw))
2605 return QLA_FUNCTION_FAILED; 2627 return QLA_FUNCTION_FAILED;
2606 2628
2607 DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 2629 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
2608 2630
2609 mcp->mb[0] = MBC_PORT_PARAMS; 2631 mcp->mb[0] = MBC_PORT_PARAMS;
2610 mcp->mb[1] = loop_id; 2632 mcp->mb[1] = loop_id;
@@ -2615,7 +2637,7 @@ qla2x00_set_idma_speed(scsi_qla_host_t *ha, uint16_t loop_id,
2615 mcp->in_mb = MBX_5|MBX_4|MBX_3|MBX_1|MBX_0; 2637 mcp->in_mb = MBX_5|MBX_4|MBX_3|MBX_1|MBX_0;
2616 mcp->tov = MBX_TOV_SECONDS; 2638 mcp->tov = MBX_TOV_SECONDS;
2617 mcp->flags = 0; 2639 mcp->flags = 0;
2618 rval = qla2x00_mailbox_command(ha, mcp); 2640 rval = qla2x00_mailbox_command(vha, mcp);
2619 2641
2620 /* Return mailbox statuses. */ 2642 /* Return mailbox statuses. */
2621 if (mb != NULL) { 2643 if (mb != NULL) {
@@ -2628,28 +2650,29 @@ qla2x00_set_idma_speed(scsi_qla_host_t *ha, uint16_t loop_id,
2628 2650
2629 if (rval != QLA_SUCCESS) { 2651 if (rval != QLA_SUCCESS) {
2630 DEBUG2_3_11(printk("%s(%ld): failed=%x.\n", __func__, 2652 DEBUG2_3_11(printk("%s(%ld): failed=%x.\n", __func__,
2631 ha->host_no, rval)); 2653 vha->host_no, rval));
2632 } else { 2654 } else {
2633 DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); 2655 DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
2634 } 2656 }
2635 2657
2636 return rval; 2658 return rval;
2637} 2659}
2638 2660
2639void 2661void
2640qla24xx_report_id_acquisition(scsi_qla_host_t *ha, 2662qla24xx_report_id_acquisition(scsi_qla_host_t *vha,
2641 struct vp_rpt_id_entry_24xx *rptid_entry) 2663 struct vp_rpt_id_entry_24xx *rptid_entry)
2642{ 2664{
2643 uint8_t vp_idx; 2665 uint8_t vp_idx;
2644 uint16_t stat = le16_to_cpu(rptid_entry->vp_idx); 2666 uint16_t stat = le16_to_cpu(rptid_entry->vp_idx);
2645 scsi_qla_host_t *vha; 2667 struct qla_hw_data *ha = vha->hw;
2668 scsi_qla_host_t *vp;
2646 2669
2647 if (rptid_entry->entry_status != 0) 2670 if (rptid_entry->entry_status != 0)
2648 return; 2671 return;
2649 2672
2650 if (rptid_entry->format == 0) { 2673 if (rptid_entry->format == 0) {
2651 DEBUG15(printk("%s:format 0 : scsi(%ld) number of VPs setup %d," 2674 DEBUG15(printk("%s:format 0 : scsi(%ld) number of VPs setup %d,"
2652 " number of VPs acquired %d\n", __func__, ha->host_no, 2675 " number of VPs acquired %d\n", __func__, vha->host_no,
2653 MSB(rptid_entry->vp_count), LSB(rptid_entry->vp_count))); 2676 MSB(rptid_entry->vp_count), LSB(rptid_entry->vp_count)));
2654 DEBUG15(printk("%s primary port id %02x%02x%02x\n", __func__, 2677 DEBUG15(printk("%s primary port id %02x%02x%02x\n", __func__,
2655 rptid_entry->port_id[2], rptid_entry->port_id[1], 2678 rptid_entry->port_id[2], rptid_entry->port_id[1],
@@ -2658,7 +2681,7 @@ qla24xx_report_id_acquisition(scsi_qla_host_t *ha,
2658 vp_idx = LSB(stat); 2681 vp_idx = LSB(stat);
2659 DEBUG15(printk("%s:format 1: scsi(%ld): VP[%d] enabled " 2682 DEBUG15(printk("%s:format 1: scsi(%ld): VP[%d] enabled "
2660 "- status %d - " 2683 "- status %d - "
2661 "with port id %02x%02x%02x\n",__func__,ha->host_no, 2684 "with port id %02x%02x%02x\n", __func__, vha->host_no,
2662 vp_idx, MSB(stat), 2685 vp_idx, MSB(stat),
2663 rptid_entry->port_id[2], rptid_entry->port_id[1], 2686 rptid_entry->port_id[2], rptid_entry->port_id[1],
2664 rptid_entry->port_id[0])); 2687 rptid_entry->port_id[0]));
@@ -2668,25 +2691,24 @@ qla24xx_report_id_acquisition(scsi_qla_host_t *ha,
2668 if (MSB(stat) == 1) 2691 if (MSB(stat) == 1)
2669 return; 2692 return;
2670 2693
2671 list_for_each_entry(vha, &ha->vp_list, vp_list) 2694 list_for_each_entry(vp, &ha->vp_list, list)
2672 if (vp_idx == vha->vp_idx) 2695 if (vp_idx == vp->vp_idx)
2673 break; 2696 break;
2674 2697 if (!vp)
2675 if (!vha)
2676 return; 2698 return;
2677 2699
2678 vha->d_id.b.domain = rptid_entry->port_id[2]; 2700 vp->d_id.b.domain = rptid_entry->port_id[2];
2679 vha->d_id.b.area = rptid_entry->port_id[1]; 2701 vp->d_id.b.area = rptid_entry->port_id[1];
2680 vha->d_id.b.al_pa = rptid_entry->port_id[0]; 2702 vp->d_id.b.al_pa = rptid_entry->port_id[0];
2681 2703
2682 /* 2704 /*
2683 * Cannot configure here as we are still sitting on the 2705 * Cannot configure here as we are still sitting on the
2684 * response queue. Handle it in dpc context. 2706 * response queue. Handle it in dpc context.
2685 */ 2707 */
2686 set_bit(VP_IDX_ACQUIRED, &vha->vp_flags); 2708 set_bit(VP_IDX_ACQUIRED, &vp->vp_flags);
2687 set_bit(VP_DPC_NEEDED, &ha->dpc_flags); 2709 set_bit(VP_DPC_NEEDED, &vha->dpc_flags);
2688 2710
2689 qla2xxx_wake_dpc(ha); 2711 qla2xxx_wake_dpc(vha);
2690 } 2712 }
2691} 2713}
2692 2714
@@ -2709,15 +2731,15 @@ qla24xx_modify_vp_config(scsi_qla_host_t *vha)
2709 int rval; 2731 int rval;
2710 struct vp_config_entry_24xx *vpmod; 2732 struct vp_config_entry_24xx *vpmod;
2711 dma_addr_t vpmod_dma; 2733 dma_addr_t vpmod_dma;
2712 scsi_qla_host_t *pha; 2734 struct qla_hw_data *ha = vha->hw;
2735 struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev);
2713 2736
2714 /* This can be called by the parent */ 2737 /* This can be called by the parent */
2715 pha = to_qla_parent(vha);
2716 2738
2717 vpmod = dma_pool_alloc(pha->s_dma_pool, GFP_KERNEL, &vpmod_dma); 2739 vpmod = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &vpmod_dma);
2718 if (!vpmod) { 2740 if (!vpmod) {
2719 DEBUG2_3(printk("%s(%ld): failed to allocate Modify VP " 2741 DEBUG2_3(printk("%s(%ld): failed to allocate Modify VP "
2720 "IOCB.\n", __func__, pha->host_no)); 2742 "IOCB.\n", __func__, vha->host_no));
2721 return QLA_MEMORY_ALLOC_FAILED; 2743 return QLA_MEMORY_ALLOC_FAILED;
2722 } 2744 }
2723 2745
@@ -2732,26 +2754,27 @@ qla24xx_modify_vp_config(scsi_qla_host_t *vha)
2732 memcpy(vpmod->port_name_idx1, vha->port_name, WWN_SIZE); 2754 memcpy(vpmod->port_name_idx1, vha->port_name, WWN_SIZE);
2733 vpmod->entry_count = 1; 2755 vpmod->entry_count = 1;
2734 2756
2735 rval = qla2x00_issue_iocb(pha, vpmod, vpmod_dma, 0); 2757 rval = qla2x00_issue_iocb(base_vha, vpmod, vpmod_dma, 0);
2736 if (rval != QLA_SUCCESS) { 2758 if (rval != QLA_SUCCESS) {
2737 DEBUG2_3_11(printk("%s(%ld): failed to issue VP config IOCB" 2759 DEBUG2_3_11(printk("%s(%ld): failed to issue VP config IOCB"
2738 "(%x).\n", __func__, pha->host_no, rval)); 2760 "(%x).\n", __func__, base_vha->host_no, rval));
2739 } else if (vpmod->comp_status != 0) { 2761 } else if (vpmod->comp_status != 0) {
2740 DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB " 2762 DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB "
2741 "-- error status (%x).\n", __func__, pha->host_no, 2763 "-- error status (%x).\n", __func__, base_vha->host_no,
2742 vpmod->comp_status)); 2764 vpmod->comp_status));
2743 rval = QLA_FUNCTION_FAILED; 2765 rval = QLA_FUNCTION_FAILED;
2744 } else if (vpmod->comp_status != __constant_cpu_to_le16(CS_COMPLETE)) { 2766 } else if (vpmod->comp_status != __constant_cpu_to_le16(CS_COMPLETE)) {
2745 DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB " 2767 DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB "
2746 "-- completion status (%x).\n", __func__, pha->host_no, 2768 "-- completion status (%x).\n", __func__, base_vha->host_no,
2747 le16_to_cpu(vpmod->comp_status))); 2769 le16_to_cpu(vpmod->comp_status)));
2748 rval = QLA_FUNCTION_FAILED; 2770 rval = QLA_FUNCTION_FAILED;
2749 } else { 2771 } else {
2750 /* EMPTY */ 2772 /* EMPTY */
2751 DEBUG11(printk("%s(%ld): done.\n", __func__, pha->host_no)); 2773 DEBUG11(printk("%s(%ld): done.\n", __func__,
2774 base_vha->host_no));
2752 fc_vport_set_state(vha->fc_vport, FC_VPORT_INITIALIZING); 2775 fc_vport_set_state(vha->fc_vport, FC_VPORT_INITIALIZING);
2753 } 2776 }
2754 dma_pool_free(pha->s_dma_pool, vpmod, vpmod_dma); 2777 dma_pool_free(ha->s_dma_pool, vpmod, vpmod_dma);
2755 2778
2756 return rval; 2779 return rval;
2757} 2780}
@@ -2778,11 +2801,12 @@ qla24xx_control_vp(scsi_qla_host_t *vha, int cmd)
2778 int map, pos; 2801 int map, pos;
2779 struct vp_ctrl_entry_24xx *vce; 2802 struct vp_ctrl_entry_24xx *vce;
2780 dma_addr_t vce_dma; 2803 dma_addr_t vce_dma;
2781 scsi_qla_host_t *ha = vha->parent; 2804 struct qla_hw_data *ha = vha->hw;
2782 int vp_index = vha->vp_idx; 2805 int vp_index = vha->vp_idx;
2806 struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev);
2783 2807
2784 DEBUG11(printk("%s(%ld): entered. Enabling index %d\n", __func__, 2808 DEBUG11(printk("%s(%ld): entered. Enabling index %d\n", __func__,
2785 ha->host_no, vp_index)); 2809 vha->host_no, vp_index));
2786 2810
2787 if (vp_index == 0 || vp_index >= ha->max_npiv_vports) 2811 if (vp_index == 0 || vp_index >= ha->max_npiv_vports)
2788 return QLA_PARAMETER_ERROR; 2812 return QLA_PARAMETER_ERROR;
@@ -2791,7 +2815,7 @@ qla24xx_control_vp(scsi_qla_host_t *vha, int cmd)
2791 if (!vce) { 2815 if (!vce) {
2792 DEBUG2_3(printk("%s(%ld): " 2816 DEBUG2_3(printk("%s(%ld): "
2793 "failed to allocate VP Control IOCB.\n", __func__, 2817 "failed to allocate VP Control IOCB.\n", __func__,
2794 ha->host_no)); 2818 base_vha->host_no));
2795 return QLA_MEMORY_ALLOC_FAILED; 2819 return QLA_MEMORY_ALLOC_FAILED;
2796 } 2820 }
2797 memset(vce, 0, sizeof(struct vp_ctrl_entry_24xx)); 2821 memset(vce, 0, sizeof(struct vp_ctrl_entry_24xx));
@@ -2810,30 +2834,30 @@ qla24xx_control_vp(scsi_qla_host_t *vha, int cmd)
2810 vce->vp_idx_map[map] |= 1 << pos; 2834 vce->vp_idx_map[map] |= 1 << pos;
2811 mutex_unlock(&ha->vport_lock); 2835 mutex_unlock(&ha->vport_lock);
2812 2836
2813 rval = qla2x00_issue_iocb(ha, vce, vce_dma, 0); 2837 rval = qla2x00_issue_iocb(base_vha, vce, vce_dma, 0);
2814 if (rval != QLA_SUCCESS) { 2838 if (rval != QLA_SUCCESS) {
2815 DEBUG2_3_11(printk("%s(%ld): failed to issue VP control IOCB" 2839 DEBUG2_3_11(printk("%s(%ld): failed to issue VP control IOCB"
2816 "(%x).\n", __func__, ha->host_no, rval)); 2840 "(%x).\n", __func__, base_vha->host_no, rval));
2817 printk("%s(%ld): failed to issue VP control IOCB" 2841 printk("%s(%ld): failed to issue VP control IOCB"
2818 "(%x).\n", __func__, ha->host_no, rval); 2842 "(%x).\n", __func__, base_vha->host_no, rval);
2819 } else if (vce->entry_status != 0) { 2843 } else if (vce->entry_status != 0) {
2820 DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB " 2844 DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB "
2821 "-- error status (%x).\n", __func__, ha->host_no, 2845 "-- error status (%x).\n", __func__, base_vha->host_no,
2822 vce->entry_status)); 2846 vce->entry_status));
2823 printk("%s(%ld): failed to complete IOCB " 2847 printk("%s(%ld): failed to complete IOCB "
2824 "-- error status (%x).\n", __func__, ha->host_no, 2848 "-- error status (%x).\n", __func__, base_vha->host_no,
2825 vce->entry_status); 2849 vce->entry_status);
2826 rval = QLA_FUNCTION_FAILED; 2850 rval = QLA_FUNCTION_FAILED;
2827 } else if (vce->comp_status != __constant_cpu_to_le16(CS_COMPLETE)) { 2851 } else if (vce->comp_status != __constant_cpu_to_le16(CS_COMPLETE)) {
2828 DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB " 2852 DEBUG2_3_11(printk("%s(%ld): failed to complete IOCB "
2829 "-- completion status (%x).\n", __func__, ha->host_no, 2853 "-- completion status (%x).\n", __func__, base_vha->host_no,
2830 le16_to_cpu(vce->comp_status))); 2854 le16_to_cpu(vce->comp_status)));
2831 printk("%s(%ld): failed to complete IOCB " 2855 printk("%s(%ld): failed to complete IOCB "
2832 "-- completion status (%x).\n", __func__, ha->host_no, 2856 "-- completion status (%x).\n", __func__, base_vha->host_no,
2833 le16_to_cpu(vce->comp_status)); 2857 le16_to_cpu(vce->comp_status));
2834 rval = QLA_FUNCTION_FAILED; 2858 rval = QLA_FUNCTION_FAILED;
2835 } else { 2859 } else {
2836 DEBUG2(printk("%s(%ld): done.\n", __func__, ha->host_no)); 2860 DEBUG2(printk("%s(%ld): done.\n", __func__, base_vha->host_no));
2837 } 2861 }
2838 2862
2839 dma_pool_free(ha->s_dma_pool, vce, vce_dma); 2863 dma_pool_free(ha->s_dma_pool, vce, vce_dma);
@@ -2863,7 +2887,7 @@ qla24xx_control_vp(scsi_qla_host_t *vha, int cmd)
2863 */ 2887 */
2864 2888
2865int 2889int
2866qla2x00_send_change_request(scsi_qla_host_t *ha, uint16_t format, 2890qla2x00_send_change_request(scsi_qla_host_t *vha, uint16_t format,
2867 uint16_t vp_idx) 2891 uint16_t vp_idx)
2868{ 2892{
2869 int rval; 2893 int rval;
@@ -2884,7 +2908,7 @@ qla2x00_send_change_request(scsi_qla_host_t *ha, uint16_t format,
2884 mcp->in_mb = MBX_0|MBX_1; 2908 mcp->in_mb = MBX_0|MBX_1;
2885 mcp->tov = MBX_TOV_SECONDS; 2909 mcp->tov = MBX_TOV_SECONDS;
2886 mcp->flags = 0; 2910 mcp->flags = 0;
2887 rval = qla2x00_mailbox_command(ha, mcp); 2911 rval = qla2x00_mailbox_command(vha, mcp);
2888 2912
2889 if (rval == QLA_SUCCESS) { 2913 if (rval == QLA_SUCCESS) {
2890 if (mcp->mb[0] != MBS_COMMAND_COMPLETE) { 2914 if (mcp->mb[0] != MBS_COMMAND_COMPLETE) {
@@ -2897,16 +2921,16 @@ qla2x00_send_change_request(scsi_qla_host_t *ha, uint16_t format,
2897} 2921}
2898 2922
2899int 2923int
2900qla2x00_dump_ram(scsi_qla_host_t *ha, dma_addr_t req_dma, uint32_t addr, 2924qla2x00_dump_ram(scsi_qla_host_t *vha, dma_addr_t req_dma, uint32_t addr,
2901 uint32_t size) 2925 uint32_t size)
2902{ 2926{
2903 int rval; 2927 int rval;
2904 mbx_cmd_t mc; 2928 mbx_cmd_t mc;
2905 mbx_cmd_t *mcp = &mc; 2929 mbx_cmd_t *mcp = &mc;
2906 2930
2907 DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 2931 DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
2908 2932
2909 if (MSW(addr) || IS_FWI2_CAPABLE(ha)) { 2933 if (MSW(addr) || IS_FWI2_CAPABLE(vha->hw)) {
2910 mcp->mb[0] = MBC_DUMP_RISC_RAM_EXTENDED; 2934 mcp->mb[0] = MBC_DUMP_RISC_RAM_EXTENDED;
2911 mcp->mb[8] = MSW(addr); 2935 mcp->mb[8] = MSW(addr);
2912 mcp->out_mb = MBX_8|MBX_0; 2936 mcp->out_mb = MBX_8|MBX_0;
@@ -2920,7 +2944,7 @@ qla2x00_dump_ram(scsi_qla_host_t *ha, dma_addr_t req_dma, uint32_t addr,
2920 mcp->mb[6] = MSW(MSD(req_dma)); 2944 mcp->mb[6] = MSW(MSD(req_dma));
2921 mcp->mb[7] = LSW(MSD(req_dma)); 2945 mcp->mb[7] = LSW(MSD(req_dma));
2922 mcp->out_mb |= MBX_7|MBX_6|MBX_3|MBX_2|MBX_1; 2946 mcp->out_mb |= MBX_7|MBX_6|MBX_3|MBX_2|MBX_1;
2923 if (IS_FWI2_CAPABLE(ha)) { 2947 if (IS_FWI2_CAPABLE(vha->hw)) {
2924 mcp->mb[4] = MSW(size); 2948 mcp->mb[4] = MSW(size);
2925 mcp->mb[5] = LSW(size); 2949 mcp->mb[5] = LSW(size);
2926 mcp->out_mb |= MBX_5|MBX_4; 2950 mcp->out_mb |= MBX_5|MBX_4;
@@ -2932,13 +2956,13 @@ qla2x00_dump_ram(scsi_qla_host_t *ha, dma_addr_t req_dma, uint32_t addr,
2932 mcp->in_mb = MBX_0; 2956 mcp->in_mb = MBX_0;
2933 mcp->tov = MBX_TOV_SECONDS; 2957 mcp->tov = MBX_TOV_SECONDS;
2934 mcp->flags = 0; 2958 mcp->flags = 0;
2935 rval = qla2x00_mailbox_command(ha, mcp); 2959 rval = qla2x00_mailbox_command(vha, mcp);
2936 2960
2937 if (rval != QLA_SUCCESS) { 2961 if (rval != QLA_SUCCESS) {
2938 DEBUG2_3_11(printk("%s(%ld): failed=%x mb[0]=%x.\n", __func__, 2962 DEBUG2_3_11(printk("%s(%ld): failed=%x mb[0]=%x.\n", __func__,
2939 ha->host_no, rval, mcp->mb[0])); 2963 vha->host_no, rval, mcp->mb[0]));
2940 } else { 2964 } else {
2941 DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); 2965 DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
2942 } 2966 }
2943 2967
2944 return rval; 2968 return rval;
@@ -2954,20 +2978,21 @@ struct cs84xx_mgmt_cmd {
2954}; 2978};
2955 2979
2956int 2980int
2957qla84xx_verify_chip(struct scsi_qla_host *ha, uint16_t *status) 2981qla84xx_verify_chip(struct scsi_qla_host *vha, uint16_t *status)
2958{ 2982{
2959 int rval, retry; 2983 int rval, retry;
2960 struct cs84xx_mgmt_cmd *mn; 2984 struct cs84xx_mgmt_cmd *mn;
2961 dma_addr_t mn_dma; 2985 dma_addr_t mn_dma;
2962 uint16_t options; 2986 uint16_t options;
2963 unsigned long flags; 2987 unsigned long flags;
2988 struct qla_hw_data *ha = vha->hw;
2964 2989
2965 DEBUG16(printk("%s(%ld): entered.\n", __func__, ha->host_no)); 2990 DEBUG16(printk("%s(%ld): entered.\n", __func__, vha->host_no));
2966 2991
2967 mn = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &mn_dma); 2992 mn = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &mn_dma);
2968 if (mn == NULL) { 2993 if (mn == NULL) {
2969 DEBUG2_3(printk("%s(%ld): failed to allocate Verify ISP84XX " 2994 DEBUG2_3(printk("%s(%ld): failed to allocate Verify ISP84XX "
2970 "IOCB.\n", __func__, ha->host_no)); 2995 "IOCB.\n", __func__, vha->host_no));
2971 return QLA_MEMORY_ALLOC_FAILED; 2996 return QLA_MEMORY_ALLOC_FAILED;
2972 } 2997 }
2973 2998
@@ -2986,19 +3011,19 @@ qla84xx_verify_chip(struct scsi_qla_host *ha, uint16_t *status)
2986 mn->p.req.options = cpu_to_le16(options); 3011 mn->p.req.options = cpu_to_le16(options);
2987 3012
2988 DEBUG16(printk("%s(%ld): Dump of Verify Request.\n", __func__, 3013 DEBUG16(printk("%s(%ld): Dump of Verify Request.\n", __func__,
2989 ha->host_no)); 3014 vha->host_no));
2990 DEBUG16(qla2x00_dump_buffer((uint8_t *)mn, 3015 DEBUG16(qla2x00_dump_buffer((uint8_t *)mn,
2991 sizeof(*mn))); 3016 sizeof(*mn)));
2992 3017
2993 rval = qla2x00_issue_iocb_timeout(ha, mn, mn_dma, 0, 120); 3018 rval = qla2x00_issue_iocb_timeout(vha, mn, mn_dma, 0, 120);
2994 if (rval != QLA_SUCCESS) { 3019 if (rval != QLA_SUCCESS) {
2995 DEBUG2_16(printk("%s(%ld): failed to issue Verify " 3020 DEBUG2_16(printk("%s(%ld): failed to issue Verify "
2996 "IOCB (%x).\n", __func__, ha->host_no, rval)); 3021 "IOCB (%x).\n", __func__, vha->host_no, rval));
2997 goto verify_done; 3022 goto verify_done;
2998 } 3023 }
2999 3024
3000 DEBUG16(printk("%s(%ld): Dump of Verify Response.\n", __func__, 3025 DEBUG16(printk("%s(%ld): Dump of Verify Response.\n", __func__,
3001 ha->host_no)); 3026 vha->host_no));
3002 DEBUG16(qla2x00_dump_buffer((uint8_t *)mn, 3027 DEBUG16(qla2x00_dump_buffer((uint8_t *)mn,
3003 sizeof(*mn))); 3028 sizeof(*mn)));
3004 3029
@@ -3006,21 +3031,21 @@ qla84xx_verify_chip(struct scsi_qla_host *ha, uint16_t *status)
3006 status[1] = status[0] == CS_VCS_CHIP_FAILURE ? 3031 status[1] = status[0] == CS_VCS_CHIP_FAILURE ?
3007 le16_to_cpu(mn->p.rsp.failure_code) : 0; 3032 le16_to_cpu(mn->p.rsp.failure_code) : 0;
3008 DEBUG2_16(printk("%s(%ld): cs=%x fc=%x\n", __func__, 3033 DEBUG2_16(printk("%s(%ld): cs=%x fc=%x\n", __func__,
3009 ha->host_no, status[0], status[1])); 3034 vha->host_no, status[0], status[1]));
3010 3035
3011 if (status[0] != CS_COMPLETE) { 3036 if (status[0] != CS_COMPLETE) {
3012 rval = QLA_FUNCTION_FAILED; 3037 rval = QLA_FUNCTION_FAILED;
3013 if (!(options & VCO_DONT_UPDATE_FW)) { 3038 if (!(options & VCO_DONT_UPDATE_FW)) {
3014 DEBUG2_16(printk("%s(%ld): Firmware update " 3039 DEBUG2_16(printk("%s(%ld): Firmware update "
3015 "failed. Retrying without update " 3040 "failed. Retrying without update "
3016 "firmware.\n", __func__, ha->host_no)); 3041 "firmware.\n", __func__, vha->host_no));
3017 options |= VCO_DONT_UPDATE_FW; 3042 options |= VCO_DONT_UPDATE_FW;
3018 options &= ~VCO_FORCE_UPDATE; 3043 options &= ~VCO_FORCE_UPDATE;
3019 retry = 1; 3044 retry = 1;
3020 } 3045 }
3021 } else { 3046 } else {
3022 DEBUG2_16(printk("%s(%ld): firmware updated to %x.\n", 3047 DEBUG2_16(printk("%s(%ld): firmware updated to %x.\n",
3023 __func__, ha->host_no, 3048 __func__, vha->host_no,
3024 le32_to_cpu(mn->p.rsp.fw_ver))); 3049 le32_to_cpu(mn->p.rsp.fw_ver)));
3025 3050
3026 /* NOTE: we only update OP firmware. */ 3051 /* NOTE: we only update OP firmware. */
@@ -3037,9 +3062,9 @@ verify_done:
3037 3062
3038 if (rval != QLA_SUCCESS) { 3063 if (rval != QLA_SUCCESS) {
3039 DEBUG2_16(printk("%s(%ld): failed=%x.\n", __func__, 3064 DEBUG2_16(printk("%s(%ld): failed=%x.\n", __func__,
3040 ha->host_no, rval)); 3065 vha->host_no, rval));
3041 } else { 3066 } else {
3042 DEBUG16(printk("%s(%ld): done.\n", __func__, ha->host_no)); 3067 DEBUG16(printk("%s(%ld): done.\n", __func__, vha->host_no));
3043 } 3068 }
3044 3069
3045 return rval; 3070 return rval;