diff options
| -rw-r--r-- | drivers/scsi/qla2xxx/qla_def.h | 3 | ||||
| -rw-r--r-- | drivers/scsi/qla2xxx/qla_fw.h | 7 | ||||
| -rw-r--r-- | drivers/scsi/qla2xxx/qla_gbl.h | 4 | ||||
| -rw-r--r-- | drivers/scsi/qla2xxx/qla_init.c | 5 | ||||
| -rw-r--r-- | drivers/scsi/qla2xxx/qla_mbx.c | 49 | ||||
| -rw-r--r-- | drivers/scsi/qla2xxx/qla_os.c | 2 |
6 files changed, 50 insertions, 20 deletions
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index 144f6d04f3d1..3f934bdce6ae 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h | |||
| @@ -623,9 +623,6 @@ typedef struct { | |||
| 623 | #define MBC_GET_LINK_PRIV_STATS 0x6d /* Get link & private data. */ | 623 | #define MBC_GET_LINK_PRIV_STATS 0x6d /* Get link & private data. */ |
| 624 | #define MBC_SET_VENDOR_ID 0x76 /* Set Vendor ID. */ | 624 | #define MBC_SET_VENDOR_ID 0x76 /* Set Vendor ID. */ |
| 625 | 625 | ||
| 626 | #define TC_ENABLE 4 | ||
| 627 | #define TC_DISABLE 5 | ||
| 628 | |||
| 629 | /* Firmware return data sizes */ | 626 | /* Firmware return data sizes */ |
| 630 | #define FCAL_MAP_SIZE 128 | 627 | #define FCAL_MAP_SIZE 128 |
| 631 | 628 | ||
diff --git a/drivers/scsi/qla2xxx/qla_fw.h b/drivers/scsi/qla2xxx/qla_fw.h index 69a5e31dd93a..ef14bcde712a 100644 --- a/drivers/scsi/qla2xxx/qla_fw.h +++ b/drivers/scsi/qla2xxx/qla_fw.h | |||
| @@ -952,6 +952,13 @@ struct device_reg_24xx { | |||
| 952 | uint32_t iobase_sdata; | 952 | uint32_t iobase_sdata; |
| 953 | }; | 953 | }; |
| 954 | 954 | ||
| 955 | /* Trace Control *************************************************************/ | ||
| 956 | |||
| 957 | #define TC_AEN_DISABLE 0 | ||
| 958 | |||
| 959 | #define TC_EFT_ENABLE 4 | ||
| 960 | #define TC_EFT_DISABLE 5 | ||
| 961 | |||
| 955 | /* MID Support ***************************************************************/ | 962 | /* MID Support ***************************************************************/ |
| 956 | 963 | ||
| 957 | #define MIN_MULTI_ID_FABRIC 64 /* Must be power-of-2. */ | 964 | #define MIN_MULTI_ID_FABRIC 64 /* Must be power-of-2. */ |
diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h index fd7553920e00..2fd31fdafcc9 100644 --- a/drivers/scsi/qla2xxx/qla_gbl.h +++ b/drivers/scsi/qla2xxx/qla_gbl.h | |||
| @@ -228,7 +228,9 @@ extern int | |||
| 228 | qla2x00_stop_firmware(scsi_qla_host_t *); | 228 | qla2x00_stop_firmware(scsi_qla_host_t *); |
| 229 | 229 | ||
| 230 | extern int | 230 | extern int |
| 231 | qla2x00_trace_control(scsi_qla_host_t *, uint16_t, dma_addr_t, uint16_t); | 231 | qla2x00_enable_eft_trace(scsi_qla_host_t *, dma_addr_t, uint16_t); |
| 232 | extern int | ||
| 233 | qla2x00_disable_eft_trace(scsi_qla_host_t *); | ||
| 232 | 234 | ||
| 233 | extern int | 235 | extern int |
| 234 | qla2x00_read_sfp(scsi_qla_host_t *, dma_addr_t, uint16_t, uint16_t, uint16_t); | 236 | qla2x00_read_sfp(scsi_qla_host_t *, dma_addr_t, uint16_t, uint16_t, uint16_t); |
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index 03444d6e4d26..da2cce011520 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c | |||
| @@ -766,8 +766,7 @@ qla2x00_alloc_fw_dump(scsi_qla_host_t *ha) | |||
| 766 | goto cont_alloc; | 766 | goto cont_alloc; |
| 767 | } | 767 | } |
| 768 | 768 | ||
| 769 | rval = qla2x00_trace_control(ha, TC_ENABLE, eft_dma, | 769 | rval = qla2x00_enable_eft_trace(ha, eft_dma, EFT_NUM_BUFFERS); |
| 770 | EFT_NUM_BUFFERS); | ||
| 771 | if (rval) { | 770 | if (rval) { |
| 772 | qla_printk(KERN_WARNING, ha, "Unable to initialize " | 771 | qla_printk(KERN_WARNING, ha, "Unable to initialize " |
| 773 | "EFT (%d).\n", rval); | 772 | "EFT (%d).\n", rval); |
| @@ -3240,7 +3239,7 @@ qla2x00_abort_isp(scsi_qla_host_t *ha) | |||
| 3240 | clear_bit(ISP_ABORT_RETRY, &ha->dpc_flags); | 3239 | clear_bit(ISP_ABORT_RETRY, &ha->dpc_flags); |
| 3241 | 3240 | ||
| 3242 | if (ha->eft) { | 3241 | if (ha->eft) { |
| 3243 | rval = qla2x00_trace_control(ha, TC_ENABLE, | 3242 | rval = qla2x00_enable_eft_trace(ha, |
| 3244 | ha->eft_dma, EFT_NUM_BUFFERS); | 3243 | ha->eft_dma, EFT_NUM_BUFFERS); |
| 3245 | if (rval) { | 3244 | if (rval) { |
| 3246 | qla_printk(KERN_WARNING, ha, | 3245 | qla_printk(KERN_WARNING, ha, |
diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c index ee7899d31e18..7c6aa4ec8f4f 100644 --- a/drivers/scsi/qla2xxx/qla_mbx.c +++ b/drivers/scsi/qla2xxx/qla_mbx.c | |||
| @@ -2350,7 +2350,7 @@ qla2x00_stop_firmware(scsi_qla_host_t *ha) | |||
| 2350 | } | 2350 | } |
| 2351 | 2351 | ||
| 2352 | int | 2352 | int |
| 2353 | qla2x00_trace_control(scsi_qla_host_t *ha, uint16_t ctrl, dma_addr_t eft_dma, | 2353 | qla2x00_enable_eft_trace(scsi_qla_host_t *ha, dma_addr_t eft_dma, |
| 2354 | uint16_t buffers) | 2354 | uint16_t buffers) |
| 2355 | { | 2355 | { |
| 2356 | int rval; | 2356 | int rval; |
| @@ -2363,22 +2363,47 @@ qla2x00_trace_control(scsi_qla_host_t *ha, uint16_t ctrl, dma_addr_t eft_dma, | |||
| 2363 | DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); | 2363 | DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); |
| 2364 | 2364 | ||
| 2365 | mcp->mb[0] = MBC_TRACE_CONTROL; | 2365 | mcp->mb[0] = MBC_TRACE_CONTROL; |
| 2366 | mcp->mb[1] = ctrl; | 2366 | mcp->mb[1] = TC_EFT_ENABLE; |
| 2367 | mcp->out_mb = MBX_1|MBX_0; | 2367 | mcp->mb[2] = LSW(eft_dma); |
| 2368 | mcp->mb[3] = MSW(eft_dma); | ||
| 2369 | mcp->mb[4] = LSW(MSD(eft_dma)); | ||
| 2370 | mcp->mb[5] = MSW(MSD(eft_dma)); | ||
| 2371 | mcp->mb[6] = buffers; | ||
| 2372 | mcp->mb[7] = TC_AEN_DISABLE; | ||
| 2373 | mcp->out_mb = MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0; | ||
| 2368 | mcp->in_mb = MBX_1|MBX_0; | 2374 | mcp->in_mb = MBX_1|MBX_0; |
| 2369 | if (ctrl == TC_ENABLE) { | ||
| 2370 | mcp->mb[2] = LSW(eft_dma); | ||
| 2371 | mcp->mb[3] = MSW(eft_dma); | ||
| 2372 | mcp->mb[4] = LSW(MSD(eft_dma)); | ||
| 2373 | mcp->mb[5] = MSW(MSD(eft_dma)); | ||
| 2374 | mcp->mb[6] = buffers; | ||
| 2375 | mcp->mb[7] = 0; | ||
| 2376 | mcp->out_mb |= MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2; | ||
| 2377 | } | ||
| 2378 | mcp->tov = 30; | 2375 | mcp->tov = 30; |
| 2379 | mcp->flags = 0; | 2376 | mcp->flags = 0; |
| 2380 | rval = qla2x00_mailbox_command(ha, mcp); | 2377 | rval = qla2x00_mailbox_command(ha, mcp); |
| 2378 | if (rval != QLA_SUCCESS) { | ||
| 2379 | DEBUG2_3_11(printk("%s(%ld): failed=%x mb[0]=%x mb[1]=%x.\n", | ||
| 2380 | __func__, ha->host_no, rval, mcp->mb[0], mcp->mb[1])); | ||
| 2381 | } else { | ||
| 2382 | DEBUG11(printk("%s(%ld): done.\n", __func__, ha->host_no)); | ||
| 2383 | } | ||
| 2384 | |||
| 2385 | return rval; | ||
| 2386 | } | ||
| 2381 | 2387 | ||
| 2388 | int | ||
| 2389 | qla2x00_disable_eft_trace(scsi_qla_host_t *ha) | ||
| 2390 | { | ||
| 2391 | int rval; | ||
| 2392 | mbx_cmd_t mc; | ||
| 2393 | mbx_cmd_t *mcp = &mc; | ||
| 2394 | |||
| 2395 | if (!IS_FWI2_CAPABLE(ha)) | ||
| 2396 | return QLA_FUNCTION_FAILED; | ||
| 2397 | |||
| 2398 | DEBUG11(printk("%s(%ld): entered.\n", __func__, ha->host_no)); | ||
| 2399 | |||
| 2400 | mcp->mb[0] = MBC_TRACE_CONTROL; | ||
| 2401 | mcp->mb[1] = TC_EFT_DISABLE; | ||
| 2402 | mcp->out_mb = MBX_1|MBX_0; | ||
| 2403 | mcp->in_mb = MBX_1|MBX_0; | ||
| 2404 | mcp->tov = 30; | ||
| 2405 | mcp->flags = 0; | ||
| 2406 | rval = qla2x00_mailbox_command(ha, mcp); | ||
| 2382 | if (rval != QLA_SUCCESS) { | 2407 | if (rval != QLA_SUCCESS) { |
| 2383 | DEBUG2_3_11(printk("%s(%ld): failed=%x mb[0]=%x mb[1]=%x.\n", | 2408 | DEBUG2_3_11(printk("%s(%ld): failed=%x mb[0]=%x mb[1]=%x.\n", |
| 2384 | __func__, ha->host_no, rval, mcp->mb[0], mcp->mb[1])); | 2409 | __func__, ha->host_no, rval, mcp->mb[0], mcp->mb[1])); |
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 23ee05913fc5..63938d74a571 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c | |||
| @@ -1856,7 +1856,7 @@ qla2x00_free_device(scsi_qla_host_t *ha) | |||
| 1856 | } | 1856 | } |
| 1857 | 1857 | ||
| 1858 | if (ha->eft) | 1858 | if (ha->eft) |
| 1859 | qla2x00_trace_control(ha, TC_DISABLE, 0, 0); | 1859 | qla2x00_disable_eft_trace(ha); |
| 1860 | 1860 | ||
| 1861 | ha->flags.online = 0; | 1861 | ha->flags.online = 0; |
| 1862 | 1862 | ||
