diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/scsi/qla4xxx/ql4_def.h | 48 | ||||
-rw-r--r-- | drivers/scsi/qla4xxx/ql4_fw.h | 2 | ||||
-rw-r--r-- | drivers/scsi/qla4xxx/ql4_init.c | 53 | ||||
-rw-r--r-- | drivers/scsi/qla4xxx/ql4_mbx.c | 81 | ||||
-rw-r--r-- | drivers/scsi/qla4xxx/ql4_os.c | 8 |
5 files changed, 108 insertions, 84 deletions
diff --git a/drivers/scsi/qla4xxx/ql4_def.h b/drivers/scsi/qla4xxx/ql4_def.h index 473c5c872b39..015d0a18bf8a 100644 --- a/drivers/scsi/qla4xxx/ql4_def.h +++ b/drivers/scsi/qla4xxx/ql4_def.h | |||
@@ -357,6 +357,28 @@ struct isp_operations { | |||
357 | int (*get_sys_info) (struct scsi_qla_host *); | 357 | int (*get_sys_info) (struct scsi_qla_host *); |
358 | }; | 358 | }; |
359 | 359 | ||
360 | /*qla4xxx ipaddress configuration details */ | ||
361 | struct ipaddress_config { | ||
362 | uint16_t ipv4_options; | ||
363 | uint16_t tcp_options; | ||
364 | uint16_t ipv4_vlan_tag; | ||
365 | uint8_t ipv4_addr_state; | ||
366 | uint8_t ip_address[IP_ADDR_LEN]; | ||
367 | uint8_t subnet_mask[IP_ADDR_LEN]; | ||
368 | uint8_t gateway[IP_ADDR_LEN]; | ||
369 | uint32_t ipv6_options; | ||
370 | uint32_t ipv6_addl_options; | ||
371 | uint8_t ipv6_link_local_state; | ||
372 | uint8_t ipv6_addr0_state; | ||
373 | uint8_t ipv6_addr1_state; | ||
374 | uint8_t ipv6_default_router_state; | ||
375 | uint16_t ipv6_vlan_tag; | ||
376 | struct in6_addr ipv6_link_local_addr; | ||
377 | struct in6_addr ipv6_addr0; | ||
378 | struct in6_addr ipv6_addr1; | ||
379 | struct in6_addr ipv6_default_router_addr; | ||
380 | }; | ||
381 | |||
360 | /* | 382 | /* |
361 | * Linux Host Adapter structure | 383 | * Linux Host Adapter structure |
362 | */ | 384 | */ |
@@ -451,10 +473,6 @@ struct scsi_qla_host { | |||
451 | /* --- From Init_FW --- */ | 473 | /* --- From Init_FW --- */ |
452 | /* init_cb_t *init_cb; */ | 474 | /* init_cb_t *init_cb; */ |
453 | uint16_t firmware_options; | 475 | uint16_t firmware_options; |
454 | uint16_t tcp_options; | ||
455 | uint8_t ip_address[IP_ADDR_LEN]; | ||
456 | uint8_t subnet_mask[IP_ADDR_LEN]; | ||
457 | uint8_t gateway[IP_ADDR_LEN]; | ||
458 | uint8_t alias[32]; | 476 | uint8_t alias[32]; |
459 | uint8_t name_string[256]; | 477 | uint8_t name_string[256]; |
460 | uint8_t heartbeat_interval; | 478 | uint8_t heartbeat_interval; |
@@ -533,22 +551,7 @@ struct scsi_qla_host { | |||
533 | /* Saved srb for status continuation entry processing */ | 551 | /* Saved srb for status continuation entry processing */ |
534 | struct srb *status_srb; | 552 | struct srb *status_srb; |
535 | 553 | ||
536 | /* IPv6 support info from InitFW */ | ||
537 | uint8_t acb_version; | 554 | uint8_t acb_version; |
538 | uint8_t ipv4_addr_state; | ||
539 | uint16_t ipv4_options; | ||
540 | |||
541 | uint32_t resvd2; | ||
542 | uint32_t ipv6_options; | ||
543 | uint32_t ipv6_addl_options; | ||
544 | uint8_t ipv6_link_local_state; | ||
545 | uint8_t ipv6_addr0_state; | ||
546 | uint8_t ipv6_addr1_state; | ||
547 | uint8_t ipv6_default_router_state; | ||
548 | struct in6_addr ipv6_link_local_addr; | ||
549 | struct in6_addr ipv6_addr0; | ||
550 | struct in6_addr ipv6_addr1; | ||
551 | struct in6_addr ipv6_default_router_addr; | ||
552 | 555 | ||
553 | /* qla82xx specific fields */ | 556 | /* qla82xx specific fields */ |
554 | struct device_reg_82xx __iomem *qla4_8xxx_reg; /* Base I/O address */ | 557 | struct device_reg_82xx __iomem *qla4_8xxx_reg; /* Base I/O address */ |
@@ -584,6 +587,8 @@ struct scsi_qla_host { | |||
584 | 587 | ||
585 | struct completion mbx_intr_comp; | 588 | struct completion mbx_intr_comp; |
586 | 589 | ||
590 | struct ipaddress_config ip_config; | ||
591 | |||
587 | /* --- From About Firmware --- */ | 592 | /* --- From About Firmware --- */ |
588 | uint16_t iscsi_major; | 593 | uint16_t iscsi_major; |
589 | uint16_t iscsi_minor; | 594 | uint16_t iscsi_minor; |
@@ -595,12 +600,13 @@ struct scsi_qla_host { | |||
595 | 600 | ||
596 | static inline int is_ipv4_enabled(struct scsi_qla_host *ha) | 601 | static inline int is_ipv4_enabled(struct scsi_qla_host *ha) |
597 | { | 602 | { |
598 | return ((ha->ipv4_options & IPOPT_IPv4_PROTOCOL_ENABLE) != 0); | 603 | return ((ha->ip_config.ipv4_options & IPOPT_IPV4_PROTOCOL_ENABLE) != 0); |
599 | } | 604 | } |
600 | 605 | ||
601 | static inline int is_ipv6_enabled(struct scsi_qla_host *ha) | 606 | static inline int is_ipv6_enabled(struct scsi_qla_host *ha) |
602 | { | 607 | { |
603 | return ((ha->ipv6_options & IPV6_OPT_IPV6_PROTOCOL_ENABLE) != 0); | 608 | return ((ha->ip_config.ipv6_options & |
609 | IPV6_OPT_IPV6_PROTOCOL_ENABLE) != 0); | ||
604 | } | 610 | } |
605 | 611 | ||
606 | static inline int is_qla4010(struct scsi_qla_host *ha) | 612 | static inline int is_qla4010(struct scsi_qla_host *ha) |
diff --git a/drivers/scsi/qla4xxx/ql4_fw.h b/drivers/scsi/qla4xxx/ql4_fw.h index 21aa1dbaf2c3..8ffdd347978e 100644 --- a/drivers/scsi/qla4xxx/ql4_fw.h +++ b/drivers/scsi/qla4xxx/ql4_fw.h | |||
@@ -483,7 +483,7 @@ struct addr_ctrl_blk { | |||
483 | uint16_t ipv4_tcp_opts; /* 32-33 */ | 483 | uint16_t ipv4_tcp_opts; /* 32-33 */ |
484 | #define TCPOPT_DHCP_ENABLE 0x0200 | 484 | #define TCPOPT_DHCP_ENABLE 0x0200 |
485 | uint16_t ipv4_ip_opts; /* 34-35 */ | 485 | uint16_t ipv4_ip_opts; /* 34-35 */ |
486 | #define IPOPT_IPv4_PROTOCOL_ENABLE 0x8000 | 486 | #define IPOPT_IPV4_PROTOCOL_ENABLE 0x8000 |
487 | 487 | ||
488 | uint16_t iscsi_max_pdu_size; /* 36-37 */ | 488 | uint16_t iscsi_max_pdu_size; /* 36-37 */ |
489 | uint8_t ipv4_tos; /* 38 */ | 489 | uint8_t ipv4_tos; /* 38 */ |
diff --git a/drivers/scsi/qla4xxx/ql4_init.c b/drivers/scsi/qla4xxx/ql4_init.c index 42ed5db2d530..30680124c5c1 100644 --- a/drivers/scsi/qla4xxx/ql4_init.c +++ b/drivers/scsi/qla4xxx/ql4_init.c | |||
@@ -236,38 +236,44 @@ qla4xxx_wait_for_ip_config(struct scsi_qla_host *ha) | |||
236 | FW_ADDSTATE_DHCPv4_LEASE_ACQUIRED) == 0)) { | 236 | FW_ADDSTATE_DHCPv4_LEASE_ACQUIRED) == 0)) { |
237 | ipv4_wait = 1; | 237 | ipv4_wait = 1; |
238 | } | 238 | } |
239 | if (((ha->ipv6_addl_options & | 239 | if (((ha->ip_config.ipv6_addl_options & |
240 | IPV6_ADDOPT_NEIGHBOR_DISCOVERY_ADDR_ENABLE) != 0) && | 240 | IPV6_ADDOPT_NEIGHBOR_DISCOVERY_ADDR_ENABLE) != 0) && |
241 | ((ha->ipv6_link_local_state == IP_ADDRSTATE_ACQUIRING) || | 241 | ((ha->ip_config.ipv6_link_local_state == |
242 | (ha->ipv6_addr0_state == IP_ADDRSTATE_ACQUIRING) || | 242 | IP_ADDRSTATE_ACQUIRING) || |
243 | (ha->ipv6_addr1_state == IP_ADDRSTATE_ACQUIRING))) { | 243 | (ha->ip_config.ipv6_addr0_state == |
244 | IP_ADDRSTATE_ACQUIRING) || | ||
245 | (ha->ip_config.ipv6_addr1_state == | ||
246 | IP_ADDRSTATE_ACQUIRING))) { | ||
244 | 247 | ||
245 | ipv6_wait = 1; | 248 | ipv6_wait = 1; |
246 | 249 | ||
247 | if ((ha->ipv6_link_local_state == | 250 | if ((ha->ip_config.ipv6_link_local_state == |
248 | IP_ADDRSTATE_PREFERRED) || | 251 | IP_ADDRSTATE_PREFERRED) || |
249 | (ha->ipv6_addr0_state == IP_ADDRSTATE_PREFERRED) || | 252 | (ha->ip_config.ipv6_addr0_state == |
250 | (ha->ipv6_addr1_state == IP_ADDRSTATE_PREFERRED)) { | 253 | IP_ADDRSTATE_PREFERRED) || |
254 | (ha->ip_config.ipv6_addr1_state == | ||
255 | IP_ADDRSTATE_PREFERRED)) { | ||
251 | DEBUG2(printk(KERN_INFO "scsi%ld: %s: " | 256 | DEBUG2(printk(KERN_INFO "scsi%ld: %s: " |
252 | "Preferred IP configured." | 257 | "Preferred IP configured." |
253 | " Don't wait!\n", ha->host_no, | 258 | " Don't wait!\n", ha->host_no, |
254 | __func__)); | 259 | __func__)); |
255 | ipv6_wait = 0; | 260 | ipv6_wait = 0; |
256 | } | 261 | } |
257 | if (memcmp(&ha->ipv6_default_router_addr, ip_address, | 262 | if (memcmp(&ha->ip_config.ipv6_default_router_addr, |
258 | IPv6_ADDR_LEN) == 0) { | 263 | ip_address, IPv6_ADDR_LEN) == 0) { |
259 | DEBUG2(printk(KERN_INFO "scsi%ld: %s: " | 264 | DEBUG2(printk(KERN_INFO "scsi%ld: %s: " |
260 | "No Router configured. " | 265 | "No Router configured. " |
261 | "Don't wait!\n", ha->host_no, | 266 | "Don't wait!\n", ha->host_no, |
262 | __func__)); | 267 | __func__)); |
263 | ipv6_wait = 0; | 268 | ipv6_wait = 0; |
264 | } | 269 | } |
265 | if ((ha->ipv6_default_router_state == | 270 | if ((ha->ip_config.ipv6_default_router_state == |
266 | IPV6_RTRSTATE_MANUAL) && | 271 | IPV6_RTRSTATE_MANUAL) && |
267 | (ha->ipv6_link_local_state == | 272 | (ha->ip_config.ipv6_link_local_state == |
268 | IP_ADDRSTATE_TENTATIVE) && | 273 | IP_ADDRSTATE_TENTATIVE) && |
269 | (memcmp(&ha->ipv6_link_local_addr, | 274 | (memcmp(&ha->ip_config.ipv6_link_local_addr, |
270 | &ha->ipv6_default_router_addr, 4) == 0)) { | 275 | &ha->ip_config.ipv6_default_router_addr, 4) == |
276 | 0)) { | ||
271 | DEBUG2(printk("scsi%ld: %s: LinkLocal Router & " | 277 | DEBUG2(printk("scsi%ld: %s: LinkLocal Router & " |
272 | "IP configured. Don't wait!\n", | 278 | "IP configured. Don't wait!\n", |
273 | ha->host_no, __func__)); | 279 | ha->host_no, __func__)); |
@@ -279,11 +285,14 @@ qla4xxx_wait_for_ip_config(struct scsi_qla_host *ha) | |||
279 | "IP(s) \"", ha->host_no, __func__)); | 285 | "IP(s) \"", ha->host_no, __func__)); |
280 | if (ipv4_wait) | 286 | if (ipv4_wait) |
281 | DEBUG2(printk("IPv4 ")); | 287 | DEBUG2(printk("IPv4 ")); |
282 | if (ha->ipv6_link_local_state == IP_ADDRSTATE_ACQUIRING) | 288 | if (ha->ip_config.ipv6_link_local_state == |
289 | IP_ADDRSTATE_ACQUIRING) | ||
283 | DEBUG2(printk("IPv6LinkLocal ")); | 290 | DEBUG2(printk("IPv6LinkLocal ")); |
284 | if (ha->ipv6_addr0_state == IP_ADDRSTATE_ACQUIRING) | 291 | if (ha->ip_config.ipv6_addr0_state == |
292 | IP_ADDRSTATE_ACQUIRING) | ||
285 | DEBUG2(printk("IPv6Addr0 ")); | 293 | DEBUG2(printk("IPv6Addr0 ")); |
286 | if (ha->ipv6_addr1_state == IP_ADDRSTATE_ACQUIRING) | 294 | if (ha->ip_config.ipv6_addr1_state == |
295 | IP_ADDRSTATE_ACQUIRING) | ||
287 | DEBUG2(printk("IPv6Addr1 ")); | 296 | DEBUG2(printk("IPv6Addr1 ")); |
288 | DEBUG2(printk("\"\n")); | 297 | DEBUG2(printk("\"\n")); |
289 | } | 298 | } |
@@ -1297,8 +1306,8 @@ int qla4xxx_initialize_adapter(struct scsi_qla_host *ha, | |||
1297 | goto exit_init_online; | 1306 | goto exit_init_online; |
1298 | 1307 | ||
1299 | /* Skip device discovery if ip and subnet is zero */ | 1308 | /* Skip device discovery if ip and subnet is zero */ |
1300 | if (memcmp(ha->ip_address, ip_address, IP_ADDR_LEN) == 0 || | 1309 | if (memcmp(ha->ip_config.ip_address, ip_address, IP_ADDR_LEN) == 0 || |
1301 | memcmp(ha->subnet_mask, ip_address, IP_ADDR_LEN) == 0) | 1310 | memcmp(ha->ip_config.subnet_mask, ip_address, IP_ADDR_LEN) == 0) |
1302 | goto exit_init_online; | 1311 | goto exit_init_online; |
1303 | 1312 | ||
1304 | if (renew_ddb_list == PRESERVE_DDB_LIST) { | 1313 | if (renew_ddb_list == PRESERVE_DDB_LIST) { |
diff --git a/drivers/scsi/qla4xxx/ql4_mbx.c b/drivers/scsi/qla4xxx/ql4_mbx.c index 559286dcc53c..0e7530e7e7dc 100644 --- a/drivers/scsi/qla4xxx/ql4_mbx.c +++ b/drivers/scsi/qla4xxx/ql4_mbx.c | |||
@@ -327,39 +327,57 @@ qla4xxx_get_ifcb(struct scsi_qla_host *ha, uint32_t *mbox_cmd, | |||
327 | 327 | ||
328 | static void | 328 | static void |
329 | qla4xxx_update_local_ip(struct scsi_qla_host *ha, | 329 | qla4xxx_update_local_ip(struct scsi_qla_host *ha, |
330 | struct addr_ctrl_blk *init_fw_cb) | 330 | struct addr_ctrl_blk *init_fw_cb) |
331 | { | 331 | { |
332 | ha->ip_config.tcp_options = le16_to_cpu(init_fw_cb->ipv4_tcp_opts); | ||
333 | ha->ip_config.ipv4_options = le16_to_cpu(init_fw_cb->ipv4_ip_opts); | ||
334 | ha->ip_config.ipv4_addr_state = | ||
335 | le16_to_cpu(init_fw_cb->ipv4_addr_state); | ||
336 | |||
337 | if (ha->acb_version == ACB_SUPPORTED) { | ||
338 | ha->ip_config.ipv6_options = le16_to_cpu(init_fw_cb->ipv6_opts); | ||
339 | ha->ip_config.ipv6_addl_options = | ||
340 | le16_to_cpu(init_fw_cb->ipv6_addtl_opts); | ||
341 | } | ||
342 | |||
332 | /* Save IPv4 Address Info */ | 343 | /* Save IPv4 Address Info */ |
333 | memcpy(ha->ip_address, init_fw_cb->ipv4_addr, | 344 | memcpy(ha->ip_config.ip_address, init_fw_cb->ipv4_addr, |
334 | min(sizeof(ha->ip_address), sizeof(init_fw_cb->ipv4_addr))); | 345 | min(sizeof(ha->ip_config.ip_address), |
335 | memcpy(ha->subnet_mask, init_fw_cb->ipv4_subnet, | 346 | sizeof(init_fw_cb->ipv4_addr))); |
336 | min(sizeof(ha->subnet_mask), sizeof(init_fw_cb->ipv4_subnet))); | 347 | memcpy(ha->ip_config.subnet_mask, init_fw_cb->ipv4_subnet, |
337 | memcpy(ha->gateway, init_fw_cb->ipv4_gw_addr, | 348 | min(sizeof(ha->ip_config.subnet_mask), |
338 | min(sizeof(ha->gateway), sizeof(init_fw_cb->ipv4_gw_addr))); | 349 | sizeof(init_fw_cb->ipv4_subnet))); |
350 | memcpy(ha->ip_config.gateway, init_fw_cb->ipv4_gw_addr, | ||
351 | min(sizeof(ha->ip_config.gateway), | ||
352 | sizeof(init_fw_cb->ipv4_gw_addr))); | ||
339 | 353 | ||
340 | if (is_ipv6_enabled(ha)) { | 354 | if (is_ipv6_enabled(ha)) { |
341 | /* Save IPv6 Address */ | 355 | /* Save IPv6 Address */ |
342 | ha->ipv6_link_local_state = init_fw_cb->ipv6_lnk_lcl_addr_state; | 356 | ha->ip_config.ipv6_link_local_state = |
343 | ha->ipv6_addr0_state = init_fw_cb->ipv6_addr0_state; | 357 | le16_to_cpu(init_fw_cb->ipv6_lnk_lcl_addr_state); |
344 | ha->ipv6_addr1_state = init_fw_cb->ipv6_addr1_state; | 358 | ha->ip_config.ipv6_addr0_state = |
345 | ha->ipv6_default_router_state = init_fw_cb->ipv6_dflt_rtr_state; | 359 | le16_to_cpu(init_fw_cb->ipv6_addr0_state); |
346 | ha->ipv6_link_local_addr.in6_u.u6_addr8[0] = 0xFE; | 360 | ha->ip_config.ipv6_addr1_state = |
347 | ha->ipv6_link_local_addr.in6_u.u6_addr8[1] = 0x80; | 361 | le16_to_cpu(init_fw_cb->ipv6_addr1_state); |
348 | 362 | ha->ip_config.ipv6_default_router_state = | |
349 | memcpy(&ha->ipv6_link_local_addr.in6_u.u6_addr8[8], | 363 | le16_to_cpu(init_fw_cb->ipv6_dflt_rtr_state); |
350 | init_fw_cb->ipv6_if_id, | 364 | ha->ip_config.ipv6_link_local_addr.in6_u.u6_addr8[0] = 0xFE; |
351 | min(sizeof(ha->ipv6_link_local_addr)/2, | 365 | ha->ip_config.ipv6_link_local_addr.in6_u.u6_addr8[1] = 0x80; |
352 | sizeof(init_fw_cb->ipv6_if_id))); | 366 | |
353 | memcpy(&ha->ipv6_addr0, init_fw_cb->ipv6_addr0, | 367 | memcpy(&ha->ip_config.ipv6_link_local_addr.in6_u.u6_addr8[8], |
354 | min(sizeof(ha->ipv6_addr0), | 368 | init_fw_cb->ipv6_if_id, |
355 | sizeof(init_fw_cb->ipv6_addr0))); | 369 | min(sizeof(ha->ip_config.ipv6_link_local_addr)/2, |
356 | memcpy(&ha->ipv6_addr1, init_fw_cb->ipv6_addr1, | 370 | sizeof(init_fw_cb->ipv6_if_id))); |
357 | min(sizeof(ha->ipv6_addr1), | 371 | memcpy(&ha->ip_config.ipv6_addr0, init_fw_cb->ipv6_addr0, |
358 | sizeof(init_fw_cb->ipv6_addr1))); | 372 | min(sizeof(ha->ip_config.ipv6_addr0), |
359 | memcpy(&ha->ipv6_default_router_addr, | 373 | sizeof(init_fw_cb->ipv6_addr0))); |
360 | init_fw_cb->ipv6_dflt_rtr_addr, | 374 | memcpy(&ha->ip_config.ipv6_addr1, init_fw_cb->ipv6_addr1, |
361 | min(sizeof(ha->ipv6_default_router_addr), | 375 | min(sizeof(ha->ip_config.ipv6_addr1), |
362 | sizeof(init_fw_cb->ipv6_dflt_rtr_addr))); | 376 | sizeof(init_fw_cb->ipv6_addr1))); |
377 | memcpy(&ha->ip_config.ipv6_default_router_addr, | ||
378 | init_fw_cb->ipv6_dflt_rtr_addr, | ||
379 | min(sizeof(ha->ip_config.ipv6_default_router_addr), | ||
380 | sizeof(init_fw_cb->ipv6_dflt_rtr_addr))); | ||
363 | } | 381 | } |
364 | } | 382 | } |
365 | 383 | ||
@@ -383,9 +401,6 @@ qla4xxx_update_local_ifcb(struct scsi_qla_host *ha, | |||
383 | /* Save some info in adapter structure. */ | 401 | /* Save some info in adapter structure. */ |
384 | ha->acb_version = init_fw_cb->acb_version; | 402 | ha->acb_version = init_fw_cb->acb_version; |
385 | ha->firmware_options = le16_to_cpu(init_fw_cb->fw_options); | 403 | ha->firmware_options = le16_to_cpu(init_fw_cb->fw_options); |
386 | ha->tcp_options = le16_to_cpu(init_fw_cb->ipv4_tcp_opts); | ||
387 | ha->ipv4_options = le16_to_cpu(init_fw_cb->ipv4_ip_opts); | ||
388 | ha->ipv4_addr_state = le16_to_cpu(init_fw_cb->ipv4_addr_state); | ||
389 | ha->heartbeat_interval = init_fw_cb->hb_interval; | 404 | ha->heartbeat_interval = init_fw_cb->hb_interval; |
390 | memcpy(ha->name_string, init_fw_cb->iscsi_name, | 405 | memcpy(ha->name_string, init_fw_cb->iscsi_name, |
391 | min(sizeof(ha->name_string), | 406 | min(sizeof(ha->name_string), |
@@ -393,10 +408,6 @@ qla4xxx_update_local_ifcb(struct scsi_qla_host *ha, | |||
393 | /*memcpy(ha->alias, init_fw_cb->Alias, | 408 | /*memcpy(ha->alias, init_fw_cb->Alias, |
394 | min(sizeof(ha->alias), sizeof(init_fw_cb->Alias)));*/ | 409 | min(sizeof(ha->alias), sizeof(init_fw_cb->Alias)));*/ |
395 | 410 | ||
396 | if (ha->acb_version == ACB_SUPPORTED) { | ||
397 | ha->ipv6_options = init_fw_cb->ipv6_opts; | ||
398 | ha->ipv6_addl_options = init_fw_cb->ipv6_addtl_opts; | ||
399 | } | ||
400 | qla4xxx_update_local_ip(ha, init_fw_cb); | 411 | qla4xxx_update_local_ip(ha, init_fw_cb); |
401 | 412 | ||
402 | return QLA_SUCCESS; | 413 | return QLA_SUCCESS; |
diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c index 586f12f17c33..21e4f858d72b 100644 --- a/drivers/scsi/qla4xxx/ql4_os.c +++ b/drivers/scsi/qla4xxx/ql4_os.c | |||
@@ -191,9 +191,7 @@ static int qla4xxx_host_get_param(struct Scsi_Host *shost, | |||
191 | len = sysfs_format_mac(buf, ha->my_mac, MAC_ADDR_LEN); | 191 | len = sysfs_format_mac(buf, ha->my_mac, MAC_ADDR_LEN); |
192 | break; | 192 | break; |
193 | case ISCSI_HOST_PARAM_IPADDRESS: | 193 | case ISCSI_HOST_PARAM_IPADDRESS: |
194 | len = sprintf(buf, "%d.%d.%d.%d\n", ha->ip_address[0], | 194 | len = sprintf(buf, "%pI4\n", &ha->ip_config.ip_address); |
195 | ha->ip_address[1], ha->ip_address[2], | ||
196 | ha->ip_address[3]); | ||
197 | break; | 195 | break; |
198 | case ISCSI_HOST_PARAM_INITIATOR_NAME: | 196 | case ISCSI_HOST_PARAM_INITIATOR_NAME: |
199 | len = sprintf(buf, "%s\n", ha->name_string); | 197 | len = sprintf(buf, "%s\n", ha->name_string); |
@@ -330,10 +328,10 @@ static void qla4xxx_set_ipv4(struct scsi_qla_host *ha, | |||
330 | case ISCSI_NET_PARAM_IFACE_ENABLE: | 328 | case ISCSI_NET_PARAM_IFACE_ENABLE: |
331 | if (iface_param->value[0] == ISCSI_IFACE_ENABLE) | 329 | if (iface_param->value[0] == ISCSI_IFACE_ENABLE) |
332 | init_fw_cb->ipv4_ip_opts |= | 330 | init_fw_cb->ipv4_ip_opts |= |
333 | cpu_to_le16(IPOPT_IPv4_PROTOCOL_ENABLE); | 331 | cpu_to_le16(IPOPT_IPV4_PROTOCOL_ENABLE); |
334 | else | 332 | else |
335 | init_fw_cb->ipv4_ip_opts &= | 333 | init_fw_cb->ipv4_ip_opts &= |
336 | cpu_to_le16(~IPOPT_IPv4_PROTOCOL_ENABLE & | 334 | cpu_to_le16(~IPOPT_IPV4_PROTOCOL_ENABLE & |
337 | 0xFFFF); | 335 | 0xFFFF); |
338 | break; | 336 | break; |
339 | case ISCSI_NET_PARAM_VLAN_ID: | 337 | case ISCSI_NET_PARAM_VLAN_ID: |