diff options
Diffstat (limited to 'drivers/scsi/qla2xxx')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_dbg.c | 4 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_def.h | 20 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_gs.c | 52 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_init.c | 11 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_inline.h | 6 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_mid.c | 2 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_os.c | 30 |
7 files changed, 77 insertions, 48 deletions
diff --git a/drivers/scsi/qla2xxx/qla_dbg.c b/drivers/scsi/qla2xxx/qla_dbg.c index d16b1c04512b..897731b93df2 100644 --- a/drivers/scsi/qla2xxx/qla_dbg.c +++ b/drivers/scsi/qla2xxx/qla_dbg.c | |||
@@ -89,7 +89,7 @@ qla24xx_dump_ram(struct qla_hw_data *ha, uint32_t addr, uint32_t *ram, | |||
89 | WRT_REG_WORD(®->mailbox0, MBC_DUMP_RISC_RAM_EXTENDED); | 89 | WRT_REG_WORD(®->mailbox0, MBC_DUMP_RISC_RAM_EXTENDED); |
90 | clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags); | 90 | clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags); |
91 | 91 | ||
92 | dwords = GID_LIST_SIZE / 4; | 92 | dwords = qla2x00_gid_list_size(ha) / 4; |
93 | for (cnt = 0; cnt < ram_dwords && rval == QLA_SUCCESS; | 93 | for (cnt = 0; cnt < ram_dwords && rval == QLA_SUCCESS; |
94 | cnt += dwords, addr += dwords) { | 94 | cnt += dwords, addr += dwords) { |
95 | if (cnt + dwords > ram_dwords) | 95 | if (cnt + dwords > ram_dwords) |
@@ -264,7 +264,7 @@ qla2xxx_dump_ram(struct qla_hw_data *ha, uint32_t addr, uint16_t *ram, | |||
264 | WRT_MAILBOX_REG(ha, reg, 0, MBC_DUMP_RISC_RAM_EXTENDED); | 264 | WRT_MAILBOX_REG(ha, reg, 0, MBC_DUMP_RISC_RAM_EXTENDED); |
265 | clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags); | 265 | clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags); |
266 | 266 | ||
267 | words = GID_LIST_SIZE / 2; | 267 | words = qla2x00_gid_list_size(ha) / 2; |
268 | for (cnt = 0; cnt < ram_words && rval == QLA_SUCCESS; | 268 | for (cnt = 0; cnt < ram_words && rval == QLA_SUCCESS; |
269 | cnt += words, addr += words) { | 269 | cnt += words, addr += words) { |
270 | if (cnt + words > ram_words) | 270 | if (cnt + words > ram_words) |
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index 649748ffbe79..a2443031dbe7 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h | |||
@@ -125,7 +125,10 @@ | |||
125 | * Fibre Channel device definitions. | 125 | * Fibre Channel device definitions. |
126 | */ | 126 | */ |
127 | #define WWN_SIZE 8 /* Size of WWPN, WWN & WWNN */ | 127 | #define WWN_SIZE 8 /* Size of WWPN, WWN & WWNN */ |
128 | #define MAX_FIBRE_DEVICES 512 | 128 | #define MAX_FIBRE_DEVICES_2100 512 |
129 | #define MAX_FIBRE_DEVICES_2400 2048 | ||
130 | #define MAX_FIBRE_DEVICES_LOOP 128 | ||
131 | #define MAX_FIBRE_DEVICES_MAX MAX_FIBRE_DEVICES_2400 | ||
129 | #define MAX_FIBRE_LUNS 0xFFFF | 132 | #define MAX_FIBRE_LUNS 0xFFFF |
130 | #define MAX_HOST_COUNT 16 | 133 | #define MAX_HOST_COUNT 16 |
131 | 134 | ||
@@ -133,8 +136,6 @@ | |||
133 | * Host adapter default definitions. | 136 | * Host adapter default definitions. |
134 | */ | 137 | */ |
135 | #define MAX_BUSES 1 /* We only have one bus today */ | 138 | #define MAX_BUSES 1 /* We only have one bus today */ |
136 | #define MAX_TARGETS_2100 MAX_FIBRE_DEVICES | ||
137 | #define MAX_TARGETS_2200 MAX_FIBRE_DEVICES | ||
138 | #define MIN_LUNS 8 | 139 | #define MIN_LUNS 8 |
139 | #define MAX_LUNS MAX_FIBRE_LUNS | 140 | #define MAX_LUNS MAX_FIBRE_LUNS |
140 | #define MAX_CMDS_PER_LUN 255 | 141 | #define MAX_CMDS_PER_LUN 255 |
@@ -1773,7 +1774,6 @@ static const char * const port_state_str[] = { | |||
1773 | 1774 | ||
1774 | #define GID_PT_CMD 0x1A1 | 1775 | #define GID_PT_CMD 0x1A1 |
1775 | #define GID_PT_REQ_SIZE (16 + 4) | 1776 | #define GID_PT_REQ_SIZE (16 + 4) |
1776 | #define GID_PT_RSP_SIZE (16 + (MAX_FIBRE_DEVICES * 4)) | ||
1777 | 1777 | ||
1778 | #define GPN_ID_CMD 0x112 | 1778 | #define GPN_ID_CMD 0x112 |
1779 | #define GPN_ID_REQ_SIZE (16 + 4) | 1779 | #define GPN_ID_REQ_SIZE (16 + 4) |
@@ -2063,7 +2063,9 @@ struct ct_sns_rsp { | |||
2063 | } ga_nxt; | 2063 | } ga_nxt; |
2064 | 2064 | ||
2065 | struct { | 2065 | struct { |
2066 | struct ct_sns_gid_pt_data entries[MAX_FIBRE_DEVICES]; | 2066 | /* Assume the largest number of targets for the union */ |
2067 | struct ct_sns_gid_pt_data | ||
2068 | entries[MAX_FIBRE_DEVICES_MAX]; | ||
2067 | } gid_pt; | 2069 | } gid_pt; |
2068 | 2070 | ||
2069 | struct { | 2071 | struct { |
@@ -2124,7 +2126,11 @@ struct ct_sns_pkt { | |||
2124 | 2126 | ||
2125 | #define GID_PT_SNS_SCMD_LEN 6 | 2127 | #define GID_PT_SNS_SCMD_LEN 6 |
2126 | #define GID_PT_SNS_CMD_SIZE 28 | 2128 | #define GID_PT_SNS_CMD_SIZE 28 |
2127 | #define GID_PT_SNS_DATA_SIZE (MAX_FIBRE_DEVICES * 4 + 16) | 2129 | /* |
2130 | * Assume MAX_FIBRE_DEVICES_2100 as these defines are only used with older | ||
2131 | * adapters. | ||
2132 | */ | ||
2133 | #define GID_PT_SNS_DATA_SIZE (MAX_FIBRE_DEVICES_2100 * 4 + 16) | ||
2128 | 2134 | ||
2129 | #define GPN_ID_SNS_SCMD_LEN 6 | 2135 | #define GPN_ID_SNS_SCMD_LEN 6 |
2130 | #define GPN_ID_SNS_CMD_SIZE 28 | 2136 | #define GPN_ID_SNS_CMD_SIZE 28 |
@@ -2172,7 +2178,6 @@ struct gid_list_info { | |||
2172 | uint16_t loop_id; /* ISP23XX -- 6 bytes. */ | 2178 | uint16_t loop_id; /* ISP23XX -- 6 bytes. */ |
2173 | uint16_t reserved_1; /* ISP24XX -- 8 bytes. */ | 2179 | uint16_t reserved_1; /* ISP24XX -- 8 bytes. */ |
2174 | }; | 2180 | }; |
2175 | #define GID_LIST_SIZE (sizeof(struct gid_list_info) * MAX_FIBRE_DEVICES) | ||
2176 | 2181 | ||
2177 | /* NPIV */ | 2182 | /* NPIV */ |
2178 | typedef struct vport_info { | 2183 | typedef struct vport_info { |
@@ -2499,6 +2504,7 @@ struct qla_hw_data { | |||
2499 | atomic_t loop_down_timer; /* loop down timer */ | 2504 | atomic_t loop_down_timer; /* loop down timer */ |
2500 | uint8_t link_down_timeout; /* link down timeout */ | 2505 | uint8_t link_down_timeout; /* link down timeout */ |
2501 | uint16_t max_loop_id; | 2506 | uint16_t max_loop_id; |
2507 | uint16_t max_fibre_devices; /* Maximum number of targets */ | ||
2502 | 2508 | ||
2503 | uint16_t fb_rev; | 2509 | uint16_t fb_rev; |
2504 | uint16_t min_external_loopid; /* First external loop Id */ | 2510 | uint16_t min_external_loopid; /* First external loop Id */ |
diff --git a/drivers/scsi/qla2xxx/qla_gs.c b/drivers/scsi/qla2xxx/qla_gs.c index 692430365297..bf89e6c22a32 100644 --- a/drivers/scsi/qla2xxx/qla_gs.c +++ b/drivers/scsi/qla2xxx/qla_gs.c | |||
@@ -240,6 +240,12 @@ qla2x00_ga_nxt(scsi_qla_host_t *vha, fc_port_t *fcport) | |||
240 | return (rval); | 240 | return (rval); |
241 | } | 241 | } |
242 | 242 | ||
243 | static inline int | ||
244 | qla2x00_gid_pt_rsp_size(scsi_qla_host_t *vha) | ||
245 | { | ||
246 | return vha->hw->max_fibre_devices * 4 + 16; | ||
247 | } | ||
248 | |||
243 | /** | 249 | /** |
244 | * qla2x00_gid_pt() - SNS scan for fabric devices via GID_PT command. | 250 | * qla2x00_gid_pt() - SNS scan for fabric devices via GID_PT command. |
245 | * @ha: HA context | 251 | * @ha: HA context |
@@ -261,20 +267,21 @@ qla2x00_gid_pt(scsi_qla_host_t *vha, sw_info_t *list) | |||
261 | 267 | ||
262 | struct ct_sns_gid_pt_data *gid_data; | 268 | struct ct_sns_gid_pt_data *gid_data; |
263 | struct qla_hw_data *ha = vha->hw; | 269 | struct qla_hw_data *ha = vha->hw; |
270 | uint16_t gid_pt_rsp_size; | ||
264 | 271 | ||
265 | if (IS_QLA2100(ha) || IS_QLA2200(ha)) | 272 | if (IS_QLA2100(ha) || IS_QLA2200(ha)) |
266 | return qla2x00_sns_gid_pt(vha, list); | 273 | return qla2x00_sns_gid_pt(vha, list); |
267 | 274 | ||
268 | gid_data = NULL; | 275 | gid_data = NULL; |
269 | 276 | gid_pt_rsp_size = qla2x00_gid_pt_rsp_size(vha); | |
270 | /* Issue GID_PT */ | 277 | /* Issue GID_PT */ |
271 | /* Prepare common MS IOCB */ | 278 | /* Prepare common MS IOCB */ |
272 | ms_pkt = ha->isp_ops->prep_ms_iocb(vha, GID_PT_REQ_SIZE, | 279 | ms_pkt = ha->isp_ops->prep_ms_iocb(vha, GID_PT_REQ_SIZE, |
273 | GID_PT_RSP_SIZE); | 280 | gid_pt_rsp_size); |
274 | 281 | ||
275 | /* Prepare CT request */ | 282 | /* Prepare CT request */ |
276 | ct_req = qla2x00_prep_ct_req(&ha->ct_sns->p.req, GID_PT_CMD, | 283 | ct_req = qla2x00_prep_ct_req(&ha->ct_sns->p.req, GID_PT_CMD, |
277 | GID_PT_RSP_SIZE); | 284 | gid_pt_rsp_size); |
278 | ct_rsp = &ha->ct_sns->p.rsp; | 285 | ct_rsp = &ha->ct_sns->p.rsp; |
279 | 286 | ||
280 | /* Prepare CT arguments -- port_type */ | 287 | /* Prepare CT arguments -- port_type */ |
@@ -292,7 +299,7 @@ qla2x00_gid_pt(scsi_qla_host_t *vha, sw_info_t *list) | |||
292 | rval = QLA_FUNCTION_FAILED; | 299 | rval = QLA_FUNCTION_FAILED; |
293 | } else { | 300 | } else { |
294 | /* Set port IDs in switch info list. */ | 301 | /* Set port IDs in switch info list. */ |
295 | for (i = 0; i < MAX_FIBRE_DEVICES; i++) { | 302 | for (i = 0; i < ha->max_fibre_devices; i++) { |
296 | gid_data = &ct_rsp->rsp.gid_pt.entries[i]; | 303 | gid_data = &ct_rsp->rsp.gid_pt.entries[i]; |
297 | list[i].d_id.b.domain = gid_data->port_id[0]; | 304 | list[i].d_id.b.domain = gid_data->port_id[0]; |
298 | list[i].d_id.b.area = gid_data->port_id[1]; | 305 | list[i].d_id.b.area = gid_data->port_id[1]; |
@@ -313,7 +320,7 @@ qla2x00_gid_pt(scsi_qla_host_t *vha, sw_info_t *list) | |||
313 | * single call. Return a failed status, and let GA_NXT handle | 320 | * single call. Return a failed status, and let GA_NXT handle |
314 | * the overload. | 321 | * the overload. |
315 | */ | 322 | */ |
316 | if (i == MAX_FIBRE_DEVICES) | 323 | if (i == ha->max_fibre_devices) |
317 | rval = QLA_FUNCTION_FAILED; | 324 | rval = QLA_FUNCTION_FAILED; |
318 | } | 325 | } |
319 | 326 | ||
@@ -330,7 +337,7 @@ qla2x00_gid_pt(scsi_qla_host_t *vha, sw_info_t *list) | |||
330 | int | 337 | int |
331 | qla2x00_gpn_id(scsi_qla_host_t *vha, sw_info_t *list) | 338 | qla2x00_gpn_id(scsi_qla_host_t *vha, sw_info_t *list) |
332 | { | 339 | { |
333 | int rval; | 340 | int rval = QLA_SUCCESS; |
334 | uint16_t i; | 341 | uint16_t i; |
335 | 342 | ||
336 | ms_iocb_entry_t *ms_pkt; | 343 | ms_iocb_entry_t *ms_pkt; |
@@ -341,7 +348,7 @@ qla2x00_gpn_id(scsi_qla_host_t *vha, sw_info_t *list) | |||
341 | if (IS_QLA2100(ha) || IS_QLA2200(ha)) | 348 | if (IS_QLA2100(ha) || IS_QLA2200(ha)) |
342 | return qla2x00_sns_gpn_id(vha, list); | 349 | return qla2x00_sns_gpn_id(vha, list); |
343 | 350 | ||
344 | for (i = 0; i < MAX_FIBRE_DEVICES; i++) { | 351 | for (i = 0; i < ha->max_fibre_devices; i++) { |
345 | /* Issue GPN_ID */ | 352 | /* Issue GPN_ID */ |
346 | /* Prepare common MS IOCB */ | 353 | /* Prepare common MS IOCB */ |
347 | ms_pkt = ha->isp_ops->prep_ms_iocb(vha, GPN_ID_REQ_SIZE, | 354 | ms_pkt = ha->isp_ops->prep_ms_iocb(vha, GPN_ID_REQ_SIZE, |
@@ -391,7 +398,7 @@ qla2x00_gpn_id(scsi_qla_host_t *vha, sw_info_t *list) | |||
391 | int | 398 | int |
392 | qla2x00_gnn_id(scsi_qla_host_t *vha, sw_info_t *list) | 399 | qla2x00_gnn_id(scsi_qla_host_t *vha, sw_info_t *list) |
393 | { | 400 | { |
394 | int rval; | 401 | int rval = QLA_SUCCESS; |
395 | uint16_t i; | 402 | uint16_t i; |
396 | struct qla_hw_data *ha = vha->hw; | 403 | struct qla_hw_data *ha = vha->hw; |
397 | ms_iocb_entry_t *ms_pkt; | 404 | ms_iocb_entry_t *ms_pkt; |
@@ -401,7 +408,7 @@ qla2x00_gnn_id(scsi_qla_host_t *vha, sw_info_t *list) | |||
401 | if (IS_QLA2100(ha) || IS_QLA2200(ha)) | 408 | if (IS_QLA2100(ha) || IS_QLA2200(ha)) |
402 | return qla2x00_sns_gnn_id(vha, list); | 409 | return qla2x00_sns_gnn_id(vha, list); |
403 | 410 | ||
404 | for (i = 0; i < MAX_FIBRE_DEVICES; i++) { | 411 | for (i = 0; i < ha->max_fibre_devices; i++) { |
405 | /* Issue GNN_ID */ | 412 | /* Issue GNN_ID */ |
406 | /* Prepare common MS IOCB */ | 413 | /* Prepare common MS IOCB */ |
407 | ms_pkt = ha->isp_ops->prep_ms_iocb(vha, GNN_ID_REQ_SIZE, | 414 | ms_pkt = ha->isp_ops->prep_ms_iocb(vha, GNN_ID_REQ_SIZE, |
@@ -735,7 +742,7 @@ qla2x00_prep_sns_cmd(scsi_qla_host_t *vha, uint16_t cmd, uint16_t scmd_len, | |||
735 | static int | 742 | static int |
736 | qla2x00_sns_ga_nxt(scsi_qla_host_t *vha, fc_port_t *fcport) | 743 | qla2x00_sns_ga_nxt(scsi_qla_host_t *vha, fc_port_t *fcport) |
737 | { | 744 | { |
738 | int rval; | 745 | int rval = QLA_SUCCESS; |
739 | struct qla_hw_data *ha = vha->hw; | 746 | struct qla_hw_data *ha = vha->hw; |
740 | struct sns_cmd_pkt *sns_cmd; | 747 | struct sns_cmd_pkt *sns_cmd; |
741 | 748 | ||
@@ -814,11 +821,14 @@ qla2x00_sns_gid_pt(scsi_qla_host_t *vha, sw_info_t *list) | |||
814 | uint16_t i; | 821 | uint16_t i; |
815 | uint8_t *entry; | 822 | uint8_t *entry; |
816 | struct sns_cmd_pkt *sns_cmd; | 823 | struct sns_cmd_pkt *sns_cmd; |
824 | uint16_t gid_pt_sns_data_size; | ||
825 | |||
826 | gid_pt_sns_data_size = qla2x00_gid_pt_rsp_size(vha); | ||
817 | 827 | ||
818 | /* Issue GID_PT. */ | 828 | /* Issue GID_PT. */ |
819 | /* Prepare SNS command request. */ | 829 | /* Prepare SNS command request. */ |
820 | sns_cmd = qla2x00_prep_sns_cmd(vha, GID_PT_CMD, GID_PT_SNS_SCMD_LEN, | 830 | sns_cmd = qla2x00_prep_sns_cmd(vha, GID_PT_CMD, GID_PT_SNS_SCMD_LEN, |
821 | GID_PT_SNS_DATA_SIZE); | 831 | gid_pt_sns_data_size); |
822 | 832 | ||
823 | /* Prepare SNS command arguments -- port_type. */ | 833 | /* Prepare SNS command arguments -- port_type. */ |
824 | sns_cmd->p.cmd.param[0] = NS_NX_PORT_TYPE; | 834 | sns_cmd->p.cmd.param[0] = NS_NX_PORT_TYPE; |
@@ -839,7 +849,7 @@ qla2x00_sns_gid_pt(scsi_qla_host_t *vha, sw_info_t *list) | |||
839 | rval = QLA_FUNCTION_FAILED; | 849 | rval = QLA_FUNCTION_FAILED; |
840 | } else { | 850 | } else { |
841 | /* Set port IDs in switch info list. */ | 851 | /* Set port IDs in switch info list. */ |
842 | for (i = 0; i < MAX_FIBRE_DEVICES; i++) { | 852 | for (i = 0; i < ha->max_fibre_devices; i++) { |
843 | entry = &sns_cmd->p.gid_data[(i * 4) + 16]; | 853 | entry = &sns_cmd->p.gid_data[(i * 4) + 16]; |
844 | list[i].d_id.b.domain = entry[1]; | 854 | list[i].d_id.b.domain = entry[1]; |
845 | list[i].d_id.b.area = entry[2]; | 855 | list[i].d_id.b.area = entry[2]; |
@@ -858,7 +868,7 @@ qla2x00_sns_gid_pt(scsi_qla_host_t *vha, sw_info_t *list) | |||
858 | * single call. Return a failed status, and let GA_NXT handle | 868 | * single call. Return a failed status, and let GA_NXT handle |
859 | * the overload. | 869 | * the overload. |
860 | */ | 870 | */ |
861 | if (i == MAX_FIBRE_DEVICES) | 871 | if (i == ha->max_fibre_devices) |
862 | rval = QLA_FUNCTION_FAILED; | 872 | rval = QLA_FUNCTION_FAILED; |
863 | } | 873 | } |
864 | 874 | ||
@@ -877,12 +887,12 @@ qla2x00_sns_gid_pt(scsi_qla_host_t *vha, sw_info_t *list) | |||
877 | static int | 887 | static int |
878 | qla2x00_sns_gpn_id(scsi_qla_host_t *vha, sw_info_t *list) | 888 | qla2x00_sns_gpn_id(scsi_qla_host_t *vha, sw_info_t *list) |
879 | { | 889 | { |
880 | int rval; | 890 | int rval = QLA_SUCCESS; |
881 | struct qla_hw_data *ha = vha->hw; | 891 | struct qla_hw_data *ha = vha->hw; |
882 | uint16_t i; | 892 | uint16_t i; |
883 | struct sns_cmd_pkt *sns_cmd; | 893 | struct sns_cmd_pkt *sns_cmd; |
884 | 894 | ||
885 | for (i = 0; i < MAX_FIBRE_DEVICES; i++) { | 895 | for (i = 0; i < ha->max_fibre_devices; i++) { |
886 | /* Issue GPN_ID */ | 896 | /* Issue GPN_ID */ |
887 | /* Prepare SNS command request. */ | 897 | /* Prepare SNS command request. */ |
888 | sns_cmd = qla2x00_prep_sns_cmd(vha, GPN_ID_CMD, | 898 | sns_cmd = qla2x00_prep_sns_cmd(vha, GPN_ID_CMD, |
@@ -933,12 +943,12 @@ qla2x00_sns_gpn_id(scsi_qla_host_t *vha, sw_info_t *list) | |||
933 | static int | 943 | static int |
934 | qla2x00_sns_gnn_id(scsi_qla_host_t *vha, sw_info_t *list) | 944 | qla2x00_sns_gnn_id(scsi_qla_host_t *vha, sw_info_t *list) |
935 | { | 945 | { |
936 | int rval; | 946 | int rval = QLA_SUCCESS; |
937 | struct qla_hw_data *ha = vha->hw; | 947 | struct qla_hw_data *ha = vha->hw; |
938 | uint16_t i; | 948 | uint16_t i; |
939 | struct sns_cmd_pkt *sns_cmd; | 949 | struct sns_cmd_pkt *sns_cmd; |
940 | 950 | ||
941 | for (i = 0; i < MAX_FIBRE_DEVICES; i++) { | 951 | for (i = 0; i < ha->max_fibre_devices; i++) { |
942 | /* Issue GNN_ID */ | 952 | /* Issue GNN_ID */ |
943 | /* Prepare SNS command request. */ | 953 | /* Prepare SNS command request. */ |
944 | sns_cmd = qla2x00_prep_sns_cmd(vha, GNN_ID_CMD, | 954 | sns_cmd = qla2x00_prep_sns_cmd(vha, GNN_ID_CMD, |
@@ -1734,7 +1744,7 @@ qla2x00_fdmi_register(scsi_qla_host_t *vha) | |||
1734 | int | 1744 | int |
1735 | qla2x00_gfpn_id(scsi_qla_host_t *vha, sw_info_t *list) | 1745 | qla2x00_gfpn_id(scsi_qla_host_t *vha, sw_info_t *list) |
1736 | { | 1746 | { |
1737 | int rval; | 1747 | int rval = QLA_SUCCESS; |
1738 | uint16_t i; | 1748 | uint16_t i; |
1739 | struct qla_hw_data *ha = vha->hw; | 1749 | struct qla_hw_data *ha = vha->hw; |
1740 | ms_iocb_entry_t *ms_pkt; | 1750 | ms_iocb_entry_t *ms_pkt; |
@@ -1744,7 +1754,7 @@ qla2x00_gfpn_id(scsi_qla_host_t *vha, sw_info_t *list) | |||
1744 | if (!IS_IIDMA_CAPABLE(ha)) | 1754 | if (!IS_IIDMA_CAPABLE(ha)) |
1745 | return QLA_FUNCTION_FAILED; | 1755 | return QLA_FUNCTION_FAILED; |
1746 | 1756 | ||
1747 | for (i = 0; i < MAX_FIBRE_DEVICES; i++) { | 1757 | for (i = 0; i < ha->max_fibre_devices; i++) { |
1748 | /* Issue GFPN_ID */ | 1758 | /* Issue GFPN_ID */ |
1749 | /* Prepare common MS IOCB */ | 1759 | /* Prepare common MS IOCB */ |
1750 | ms_pkt = ha->isp_ops->prep_ms_iocb(vha, GFPN_ID_REQ_SIZE, | 1760 | ms_pkt = ha->isp_ops->prep_ms_iocb(vha, GFPN_ID_REQ_SIZE, |
@@ -1856,7 +1866,7 @@ qla2x00_gpsc(scsi_qla_host_t *vha, sw_info_t *list) | |||
1856 | if (rval) | 1866 | if (rval) |
1857 | return rval; | 1867 | return rval; |
1858 | 1868 | ||
1859 | for (i = 0; i < MAX_FIBRE_DEVICES; i++) { | 1869 | for (i = 0; i < ha->max_fibre_devices; i++) { |
1860 | /* Issue GFPN_ID */ | 1870 | /* Issue GFPN_ID */ |
1861 | /* Prepare common MS IOCB */ | 1871 | /* Prepare common MS IOCB */ |
1862 | ms_pkt = qla24xx_prep_ms_fm_iocb(vha, GPSC_REQ_SIZE, | 1872 | ms_pkt = qla24xx_prep_ms_fm_iocb(vha, GPSC_REQ_SIZE, |
@@ -1957,7 +1967,7 @@ qla2x00_gff_id(scsi_qla_host_t *vha, sw_info_t *list) | |||
1957 | struct qla_hw_data *ha = vha->hw; | 1967 | struct qla_hw_data *ha = vha->hw; |
1958 | uint8_t fcp_scsi_features = 0; | 1968 | uint8_t fcp_scsi_features = 0; |
1959 | 1969 | ||
1960 | for (i = 0; i < MAX_FIBRE_DEVICES; i++) { | 1970 | for (i = 0; i < ha->max_fibre_devices; i++) { |
1961 | /* Set default FC4 Type as UNKNOWN so the default is to | 1971 | /* Set default FC4 Type as UNKNOWN so the default is to |
1962 | * Process this port */ | 1972 | * Process this port */ |
1963 | list[i].fc4_type = FC4_TYPE_UNKNOWN; | 1973 | list[i].fc4_type = FC4_TYPE_UNKNOWN; |
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index 24b2d1118593..2627c87a4a34 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c | |||
@@ -2567,8 +2567,7 @@ qla2x00_configure_loop(scsi_qla_host_t *vha) | |||
2567 | ql_dbg(ql_dbg_disc, vha, 0x2015, | 2567 | ql_dbg(ql_dbg_disc, vha, 0x2015, |
2568 | "Loop resync needed, failing.\n"); | 2568 | "Loop resync needed, failing.\n"); |
2569 | rval = QLA_FUNCTION_FAILED; | 2569 | rval = QLA_FUNCTION_FAILED; |
2570 | } | 2570 | } else |
2571 | else | ||
2572 | rval = qla2x00_configure_local_loop(vha); | 2571 | rval = qla2x00_configure_local_loop(vha); |
2573 | } | 2572 | } |
2574 | 2573 | ||
@@ -2642,7 +2641,7 @@ qla2x00_configure_local_loop(scsi_qla_host_t *vha) | |||
2642 | 2641 | ||
2643 | found_devs = 0; | 2642 | found_devs = 0; |
2644 | new_fcport = NULL; | 2643 | new_fcport = NULL; |
2645 | entries = MAX_FIBRE_DEVICES; | 2644 | entries = MAX_FIBRE_DEVICES_LOOP; |
2646 | 2645 | ||
2647 | ql_dbg(ql_dbg_disc, vha, 0x2016, | 2646 | ql_dbg(ql_dbg_disc, vha, 0x2016, |
2648 | "Getting FCAL position map.\n"); | 2647 | "Getting FCAL position map.\n"); |
@@ -2650,7 +2649,7 @@ qla2x00_configure_local_loop(scsi_qla_host_t *vha) | |||
2650 | qla2x00_get_fcal_position_map(vha, NULL); | 2649 | qla2x00_get_fcal_position_map(vha, NULL); |
2651 | 2650 | ||
2652 | /* Get list of logged in devices. */ | 2651 | /* Get list of logged in devices. */ |
2653 | memset(ha->gid_list, 0, GID_LIST_SIZE); | 2652 | memset(ha->gid_list, 0, qla2x00_gid_list_size(ha)); |
2654 | rval = qla2x00_get_id_list(vha, ha->gid_list, ha->gid_list_dma, | 2653 | rval = qla2x00_get_id_list(vha, ha->gid_list, ha->gid_list_dma, |
2655 | &entries); | 2654 | &entries); |
2656 | if (rval != QLA_SUCCESS) | 2655 | if (rval != QLA_SUCCESS) |
@@ -3134,7 +3133,7 @@ qla2x00_find_all_fabric_devs(scsi_qla_host_t *vha, | |||
3134 | 3133 | ||
3135 | /* Try GID_PT to get device list, else GAN. */ | 3134 | /* Try GID_PT to get device list, else GAN. */ |
3136 | if (!ha->swl) | 3135 | if (!ha->swl) |
3137 | ha->swl = kcalloc(MAX_FIBRE_DEVICES, sizeof(sw_info_t), | 3136 | ha->swl = kcalloc(ha->max_fibre_devices, sizeof(sw_info_t), |
3138 | GFP_KERNEL); | 3137 | GFP_KERNEL); |
3139 | swl = ha->swl; | 3138 | swl = ha->swl; |
3140 | if (!swl) { | 3139 | if (!swl) { |
@@ -3142,7 +3141,7 @@ qla2x00_find_all_fabric_devs(scsi_qla_host_t *vha, | |||
3142 | ql_dbg(ql_dbg_disc, vha, 0x2054, | 3141 | ql_dbg(ql_dbg_disc, vha, 0x2054, |
3143 | "GID_PT allocations failed, fallback on GA_NXT.\n"); | 3142 | "GID_PT allocations failed, fallback on GA_NXT.\n"); |
3144 | } else { | 3143 | } else { |
3145 | memset(swl, 0, MAX_FIBRE_DEVICES * sizeof(sw_info_t)); | 3144 | memset(swl, 0, ha->max_fibre_devices * sizeof(sw_info_t)); |
3146 | if (qla2x00_gid_pt(vha, swl) != QLA_SUCCESS) { | 3145 | if (qla2x00_gid_pt(vha, swl) != QLA_SUCCESS) { |
3147 | swl = NULL; | 3146 | swl = NULL; |
3148 | } else if (qla2x00_gpn_id(vha, swl) != QLA_SUCCESS) { | 3147 | } else if (qla2x00_gpn_id(vha, swl) != QLA_SUCCESS) { |
diff --git a/drivers/scsi/qla2xxx/qla_inline.h b/drivers/scsi/qla2xxx/qla_inline.h index 3ea0cedc6e77..6e457643c639 100644 --- a/drivers/scsi/qla2xxx/qla_inline.h +++ b/drivers/scsi/qla2xxx/qla_inline.h | |||
@@ -181,3 +181,9 @@ qla2x00_init_timer(srb_t *sp, unsigned long tmo) | |||
181 | add_timer(&sp->u.iocb_cmd.timer); | 181 | add_timer(&sp->u.iocb_cmd.timer); |
182 | sp->free = qla2x00_sp_free; | 182 | sp->free = qla2x00_sp_free; |
183 | } | 183 | } |
184 | |||
185 | static inline int | ||
186 | qla2x00_gid_list_size(struct qla_hw_data *ha) | ||
187 | { | ||
188 | return sizeof(struct gid_list_info) * ha->max_fibre_devices; | ||
189 | } | ||
diff --git a/drivers/scsi/qla2xxx/qla_mid.c b/drivers/scsi/qla2xxx/qla_mid.c index f488cc69fc79..aa062a1b0ca4 100644 --- a/drivers/scsi/qla2xxx/qla_mid.c +++ b/drivers/scsi/qla2xxx/qla_mid.c | |||
@@ -479,7 +479,7 @@ qla24xx_create_vhost(struct fc_vport *fc_vport) | |||
479 | host->max_channel = MAX_BUSES - 1; | 479 | host->max_channel = MAX_BUSES - 1; |
480 | host->max_lun = ql2xmaxlun; | 480 | host->max_lun = ql2xmaxlun; |
481 | host->unique_id = host->host_no; | 481 | host->unique_id = host->host_no; |
482 | host->max_id = MAX_TARGETS_2200; | 482 | host->max_id = ha->max_fibre_devices; |
483 | host->transportt = qla2xxx_transport_vport_template; | 483 | host->transportt = qla2xxx_transport_vport_template; |
484 | 484 | ||
485 | ql_dbg(ql_dbg_vport, vha, 0xa007, | 485 | ql_dbg(ql_dbg_vport, vha, 0xa007, |
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 94ff3a591471..094af74989d6 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c | |||
@@ -2135,7 +2135,7 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
2135 | char pci_info[30]; | 2135 | char pci_info[30]; |
2136 | char fw_str[30]; | 2136 | char fw_str[30]; |
2137 | struct scsi_host_template *sht; | 2137 | struct scsi_host_template *sht; |
2138 | int bars, max_id, mem_only = 0; | 2138 | int bars, mem_only = 0; |
2139 | uint16_t req_length = 0, rsp_length = 0; | 2139 | uint16_t req_length = 0, rsp_length = 0; |
2140 | struct req_que *req = NULL; | 2140 | struct req_que *req = NULL; |
2141 | struct rsp_que *rsp = NULL; | 2141 | struct rsp_que *rsp = NULL; |
@@ -2200,9 +2200,8 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
2200 | ha->optrom_size = OPTROM_SIZE_2300; | 2200 | ha->optrom_size = OPTROM_SIZE_2300; |
2201 | 2201 | ||
2202 | /* Assign ISP specific operations. */ | 2202 | /* Assign ISP specific operations. */ |
2203 | max_id = MAX_TARGETS_2200; | ||
2204 | if (IS_QLA2100(ha)) { | 2203 | if (IS_QLA2100(ha)) { |
2205 | max_id = MAX_TARGETS_2100; | 2204 | ha->max_fibre_devices = MAX_FIBRE_DEVICES_2100; |
2206 | ha->mbx_count = MAILBOX_REGISTER_COUNT_2100; | 2205 | ha->mbx_count = MAILBOX_REGISTER_COUNT_2100; |
2207 | req_length = REQUEST_ENTRY_CNT_2100; | 2206 | req_length = REQUEST_ENTRY_CNT_2100; |
2208 | rsp_length = RESPONSE_ENTRY_CNT_2100; | 2207 | rsp_length = RESPONSE_ENTRY_CNT_2100; |
@@ -2214,6 +2213,7 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
2214 | ha->nvram_data_off = ~0; | 2213 | ha->nvram_data_off = ~0; |
2215 | ha->isp_ops = &qla2100_isp_ops; | 2214 | ha->isp_ops = &qla2100_isp_ops; |
2216 | } else if (IS_QLA2200(ha)) { | 2215 | } else if (IS_QLA2200(ha)) { |
2216 | ha->max_fibre_devices = MAX_FIBRE_DEVICES_2100; | ||
2217 | ha->mbx_count = MAILBOX_REGISTER_COUNT_2200; | 2217 | ha->mbx_count = MAILBOX_REGISTER_COUNT_2200; |
2218 | req_length = REQUEST_ENTRY_CNT_2200; | 2218 | req_length = REQUEST_ENTRY_CNT_2200; |
2219 | rsp_length = RESPONSE_ENTRY_CNT_2100; | 2219 | rsp_length = RESPONSE_ENTRY_CNT_2100; |
@@ -2225,6 +2225,7 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
2225 | ha->nvram_data_off = ~0; | 2225 | ha->nvram_data_off = ~0; |
2226 | ha->isp_ops = &qla2100_isp_ops; | 2226 | ha->isp_ops = &qla2100_isp_ops; |
2227 | } else if (IS_QLA23XX(ha)) { | 2227 | } else if (IS_QLA23XX(ha)) { |
2228 | ha->max_fibre_devices = MAX_FIBRE_DEVICES_2100; | ||
2228 | ha->mbx_count = MAILBOX_REGISTER_COUNT; | 2229 | ha->mbx_count = MAILBOX_REGISTER_COUNT; |
2229 | req_length = REQUEST_ENTRY_CNT_2200; | 2230 | req_length = REQUEST_ENTRY_CNT_2200; |
2230 | rsp_length = RESPONSE_ENTRY_CNT_2300; | 2231 | rsp_length = RESPONSE_ENTRY_CNT_2300; |
@@ -2238,6 +2239,7 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
2238 | ha->nvram_data_off = ~0; | 2239 | ha->nvram_data_off = ~0; |
2239 | ha->isp_ops = &qla2300_isp_ops; | 2240 | ha->isp_ops = &qla2300_isp_ops; |
2240 | } else if (IS_QLA24XX_TYPE(ha)) { | 2241 | } else if (IS_QLA24XX_TYPE(ha)) { |
2242 | ha->max_fibre_devices = MAX_FIBRE_DEVICES_2400; | ||
2241 | ha->mbx_count = MAILBOX_REGISTER_COUNT; | 2243 | ha->mbx_count = MAILBOX_REGISTER_COUNT; |
2242 | req_length = REQUEST_ENTRY_CNT_24XX; | 2244 | req_length = REQUEST_ENTRY_CNT_24XX; |
2243 | rsp_length = RESPONSE_ENTRY_CNT_2300; | 2245 | rsp_length = RESPONSE_ENTRY_CNT_2300; |
@@ -2252,6 +2254,7 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
2252 | ha->nvram_conf_off = FARX_ACCESS_NVRAM_CONF; | 2254 | ha->nvram_conf_off = FARX_ACCESS_NVRAM_CONF; |
2253 | ha->nvram_data_off = FARX_ACCESS_NVRAM_DATA; | 2255 | ha->nvram_data_off = FARX_ACCESS_NVRAM_DATA; |
2254 | } else if (IS_QLA25XX(ha)) { | 2256 | } else if (IS_QLA25XX(ha)) { |
2257 | ha->max_fibre_devices = MAX_FIBRE_DEVICES_2400; | ||
2255 | ha->mbx_count = MAILBOX_REGISTER_COUNT; | 2258 | ha->mbx_count = MAILBOX_REGISTER_COUNT; |
2256 | req_length = REQUEST_ENTRY_CNT_24XX; | 2259 | req_length = REQUEST_ENTRY_CNT_24XX; |
2257 | rsp_length = RESPONSE_ENTRY_CNT_2300; | 2260 | rsp_length = RESPONSE_ENTRY_CNT_2300; |
@@ -2266,6 +2269,7 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
2266 | ha->nvram_conf_off = FARX_ACCESS_NVRAM_CONF; | 2269 | ha->nvram_conf_off = FARX_ACCESS_NVRAM_CONF; |
2267 | ha->nvram_data_off = FARX_ACCESS_NVRAM_DATA; | 2270 | ha->nvram_data_off = FARX_ACCESS_NVRAM_DATA; |
2268 | } else if (IS_QLA81XX(ha)) { | 2271 | } else if (IS_QLA81XX(ha)) { |
2272 | ha->max_fibre_devices = MAX_FIBRE_DEVICES_2400; | ||
2269 | ha->mbx_count = MAILBOX_REGISTER_COUNT; | 2273 | ha->mbx_count = MAILBOX_REGISTER_COUNT; |
2270 | req_length = REQUEST_ENTRY_CNT_24XX; | 2274 | req_length = REQUEST_ENTRY_CNT_24XX; |
2271 | rsp_length = RESPONSE_ENTRY_CNT_2300; | 2275 | rsp_length = RESPONSE_ENTRY_CNT_2300; |
@@ -2280,6 +2284,7 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
2280 | ha->nvram_conf_off = ~0; | 2284 | ha->nvram_conf_off = ~0; |
2281 | ha->nvram_data_off = ~0; | 2285 | ha->nvram_data_off = ~0; |
2282 | } else if (IS_QLA82XX(ha)) { | 2286 | } else if (IS_QLA82XX(ha)) { |
2287 | ha->max_fibre_devices = MAX_FIBRE_DEVICES_2400; | ||
2283 | ha->mbx_count = MAILBOX_REGISTER_COUNT; | 2288 | ha->mbx_count = MAILBOX_REGISTER_COUNT; |
2284 | req_length = REQUEST_ENTRY_CNT_82XX; | 2289 | req_length = REQUEST_ENTRY_CNT_82XX; |
2285 | rsp_length = RESPONSE_ENTRY_CNT_82XX; | 2290 | rsp_length = RESPONSE_ENTRY_CNT_82XX; |
@@ -2294,6 +2299,7 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
2294 | ha->nvram_conf_off = FARX_ACCESS_NVRAM_CONF; | 2299 | ha->nvram_conf_off = FARX_ACCESS_NVRAM_CONF; |
2295 | ha->nvram_data_off = FARX_ACCESS_NVRAM_DATA; | 2300 | ha->nvram_data_off = FARX_ACCESS_NVRAM_DATA; |
2296 | } else if (IS_QLA83XX(ha)) { | 2301 | } else if (IS_QLA83XX(ha)) { |
2302 | ha->max_fibre_devices = MAX_FIBRE_DEVICES_2400; | ||
2297 | ha->mbx_count = MAILBOX_REGISTER_COUNT; | 2303 | ha->mbx_count = MAILBOX_REGISTER_COUNT; |
2298 | req_length = REQUEST_ENTRY_CNT_24XX; | 2304 | req_length = REQUEST_ENTRY_CNT_24XX; |
2299 | rsp_length = RESPONSE_ENTRY_CNT_2300; | 2305 | rsp_length = RESPONSE_ENTRY_CNT_2300; |
@@ -2312,10 +2318,11 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
2312 | ql_dbg_pci(ql_dbg_init, pdev, 0x001e, | 2318 | ql_dbg_pci(ql_dbg_init, pdev, 0x001e, |
2313 | "mbx_count=%d, req_length=%d, " | 2319 | "mbx_count=%d, req_length=%d, " |
2314 | "rsp_length=%d, max_loop_id=%d, init_cb_size=%d, " | 2320 | "rsp_length=%d, max_loop_id=%d, init_cb_size=%d, " |
2315 | "gid_list_info_size=%d, optrom_size=%d, nvram_npiv_size=%d, .\n", | 2321 | "gid_list_info_size=%d, optrom_size=%d, nvram_npiv_size=%d, " |
2322 | "max_fibre_devices=%d.\n", | ||
2316 | ha->mbx_count, req_length, rsp_length, ha->max_loop_id, | 2323 | ha->mbx_count, req_length, rsp_length, ha->max_loop_id, |
2317 | ha->init_cb_size, ha->gid_list_info_size, ha->optrom_size, | 2324 | ha->init_cb_size, ha->gid_list_info_size, ha->optrom_size, |
2318 | ha->nvram_npiv_size); | 2325 | ha->nvram_npiv_size, ha->max_fibre_devices); |
2319 | ql_dbg_pci(ql_dbg_init, pdev, 0x001f, | 2326 | ql_dbg_pci(ql_dbg_init, pdev, 0x001f, |
2320 | "isp_ops=%p, flash_conf_off=%d, " | 2327 | "isp_ops=%p, flash_conf_off=%d, " |
2321 | "flash_data_off=%d, nvram_conf_off=%d, nvram_data_off=%d.\n", | 2328 | "flash_data_off=%d, nvram_conf_off=%d, nvram_data_off=%d.\n", |
@@ -2389,7 +2396,7 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
2389 | "mgmt_svr_loop_id=%d, sg_tablesize=%d.\n", | 2396 | "mgmt_svr_loop_id=%d, sg_tablesize=%d.\n", |
2390 | host->can_queue, base_vha->req, | 2397 | host->can_queue, base_vha->req, |
2391 | base_vha->mgmt_svr_loop_id, host->sg_tablesize); | 2398 | base_vha->mgmt_svr_loop_id, host->sg_tablesize); |
2392 | host->max_id = max_id; | 2399 | host->max_id = ha->max_fibre_devices; |
2393 | host->this_id = 255; | 2400 | host->this_id = 255; |
2394 | host->cmd_per_lun = 3; | 2401 | host->cmd_per_lun = 3; |
2395 | host->unique_id = host->host_no; | 2402 | host->unique_id = host->host_no; |
@@ -2939,8 +2946,8 @@ qla2x00_mem_alloc(struct qla_hw_data *ha, uint16_t req_len, uint16_t rsp_len, | |||
2939 | if (!ha->init_cb) | 2946 | if (!ha->init_cb) |
2940 | goto fail; | 2947 | goto fail; |
2941 | 2948 | ||
2942 | ha->gid_list = dma_alloc_coherent(&ha->pdev->dev, GID_LIST_SIZE, | 2949 | ha->gid_list = dma_alloc_coherent(&ha->pdev->dev, |
2943 | &ha->gid_list_dma, GFP_KERNEL); | 2950 | qla2x00_gid_list_size(ha), &ha->gid_list_dma, GFP_KERNEL); |
2944 | if (!ha->gid_list) | 2951 | if (!ha->gid_list) |
2945 | goto fail_free_init_cb; | 2952 | goto fail_free_init_cb; |
2946 | 2953 | ||
@@ -3155,7 +3162,8 @@ fail_free_srb_mempool: | |||
3155 | mempool_destroy(ha->srb_mempool); | 3162 | mempool_destroy(ha->srb_mempool); |
3156 | ha->srb_mempool = NULL; | 3163 | ha->srb_mempool = NULL; |
3157 | fail_free_gid_list: | 3164 | fail_free_gid_list: |
3158 | dma_free_coherent(&ha->pdev->dev, GID_LIST_SIZE, ha->gid_list, | 3165 | dma_free_coherent(&ha->pdev->dev, qla2x00_gid_list_size(ha), |
3166 | ha->gid_list, | ||
3159 | ha->gid_list_dma); | 3167 | ha->gid_list_dma); |
3160 | ha->gid_list = NULL; | 3168 | ha->gid_list = NULL; |
3161 | ha->gid_list_dma = 0; | 3169 | ha->gid_list_dma = 0; |
@@ -3247,8 +3255,8 @@ qla2x00_mem_free(struct qla_hw_data *ha) | |||
3247 | dma_pool_destroy(ha->s_dma_pool); | 3255 | dma_pool_destroy(ha->s_dma_pool); |
3248 | 3256 | ||
3249 | if (ha->gid_list) | 3257 | if (ha->gid_list) |
3250 | dma_free_coherent(&ha->pdev->dev, GID_LIST_SIZE, ha->gid_list, | 3258 | dma_free_coherent(&ha->pdev->dev, qla2x00_gid_list_size(ha), |
3251 | ha->gid_list_dma); | 3259 | ha->gid_list, ha->gid_list_dma); |
3252 | 3260 | ||
3253 | if (IS_QLA82XX(ha)) { | 3261 | if (IS_QLA82XX(ha)) { |
3254 | if (!list_empty(&ha->gbl_dsd_list)) { | 3262 | if (!list_empty(&ha->gbl_dsd_list)) { |