diff options
Diffstat (limited to 'drivers/scsi/bfa/bfad_attr.c')
-rw-r--r-- | drivers/scsi/bfa/bfad_attr.c | 77 |
1 files changed, 35 insertions, 42 deletions
diff --git a/drivers/scsi/bfa/bfad_attr.c b/drivers/scsi/bfa/bfad_attr.c index 9129ae3040ff..6a2efdd5ef24 100644 --- a/drivers/scsi/bfa/bfad_attr.c +++ b/drivers/scsi/bfa/bfad_attr.c | |||
@@ -19,6 +19,7 @@ | |||
19 | * bfa_attr.c Linux driver configuration interface module. | 19 | * bfa_attr.c Linux driver configuration interface module. |
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include <linux/slab.h> | ||
22 | #include "bfad_drv.h" | 23 | #include "bfad_drv.h" |
23 | #include "bfad_im.h" | 24 | #include "bfad_im.h" |
24 | #include "bfad_trcmod.h" | 25 | #include "bfad_trcmod.h" |
@@ -141,7 +142,7 @@ bfad_im_get_host_port_type(struct Scsi_Host *shost) | |||
141 | struct bfad_s *bfad = im_port->bfad; | 142 | struct bfad_s *bfad = im_port->bfad; |
142 | struct bfa_pport_attr_s attr; | 143 | struct bfa_pport_attr_s attr; |
143 | 144 | ||
144 | bfa_pport_get_attr(&bfad->bfa, &attr); | 145 | bfa_fcport_get_attr(&bfad->bfa, &attr); |
145 | 146 | ||
146 | switch (attr.port_type) { | 147 | switch (attr.port_type) { |
147 | case BFA_PPORT_TYPE_NPORT: | 148 | case BFA_PPORT_TYPE_NPORT: |
@@ -173,7 +174,7 @@ bfad_im_get_host_port_state(struct Scsi_Host *shost) | |||
173 | struct bfad_s *bfad = im_port->bfad; | 174 | struct bfad_s *bfad = im_port->bfad; |
174 | struct bfa_pport_attr_s attr; | 175 | struct bfa_pport_attr_s attr; |
175 | 176 | ||
176 | bfa_pport_get_attr(&bfad->bfa, &attr); | 177 | bfa_fcport_get_attr(&bfad->bfa, &attr); |
177 | 178 | ||
178 | switch (attr.port_state) { | 179 | switch (attr.port_state) { |
179 | case BFA_PPORT_ST_LINKDOWN: | 180 | case BFA_PPORT_ST_LINKDOWN: |
@@ -229,8 +230,10 @@ bfad_im_get_host_speed(struct Scsi_Host *shost) | |||
229 | (struct bfad_im_port_s *) shost->hostdata[0]; | 230 | (struct bfad_im_port_s *) shost->hostdata[0]; |
230 | struct bfad_s *bfad = im_port->bfad; | 231 | struct bfad_s *bfad = im_port->bfad; |
231 | struct bfa_pport_attr_s attr; | 232 | struct bfa_pport_attr_s attr; |
233 | unsigned long flags; | ||
232 | 234 | ||
233 | bfa_pport_get_attr(&bfad->bfa, &attr); | 235 | spin_lock_irqsave(shost->host_lock, flags); |
236 | bfa_fcport_get_attr(&bfad->bfa, &attr); | ||
234 | switch (attr.speed) { | 237 | switch (attr.speed) { |
235 | case BFA_PPORT_SPEED_8GBPS: | 238 | case BFA_PPORT_SPEED_8GBPS: |
236 | fc_host_speed(shost) = FC_PORTSPEED_8GBIT; | 239 | fc_host_speed(shost) = FC_PORTSPEED_8GBIT; |
@@ -248,6 +251,7 @@ bfad_im_get_host_speed(struct Scsi_Host *shost) | |||
248 | fc_host_speed(shost) = FC_PORTSPEED_UNKNOWN; | 251 | fc_host_speed(shost) = FC_PORTSPEED_UNKNOWN; |
249 | break; | 252 | break; |
250 | } | 253 | } |
254 | spin_unlock_irqrestore(shost->host_lock, flags); | ||
251 | } | 255 | } |
252 | 256 | ||
253 | /** | 257 | /** |
@@ -285,7 +289,7 @@ bfad_im_get_stats(struct Scsi_Host *shost) | |||
285 | init_completion(&fcomp.comp); | 289 | init_completion(&fcomp.comp); |
286 | spin_lock_irqsave(&bfad->bfad_lock, flags); | 290 | spin_lock_irqsave(&bfad->bfad_lock, flags); |
287 | memset(hstats, 0, sizeof(struct fc_host_statistics)); | 291 | memset(hstats, 0, sizeof(struct fc_host_statistics)); |
288 | rc = bfa_pport_get_stats(&bfad->bfa, | 292 | rc = bfa_port_get_stats(BFA_FCPORT(&bfad->bfa), |
289 | (union bfa_pport_stats_u *) hstats, | 293 | (union bfa_pport_stats_u *) hstats, |
290 | bfad_hcb_comp, &fcomp); | 294 | bfad_hcb_comp, &fcomp); |
291 | spin_unlock_irqrestore(&bfad->bfad_lock, flags); | 295 | spin_unlock_irqrestore(&bfad->bfad_lock, flags); |
@@ -312,7 +316,8 @@ bfad_im_reset_stats(struct Scsi_Host *shost) | |||
312 | 316 | ||
313 | init_completion(&fcomp.comp); | 317 | init_completion(&fcomp.comp); |
314 | spin_lock_irqsave(&bfad->bfad_lock, flags); | 318 | spin_lock_irqsave(&bfad->bfad_lock, flags); |
315 | rc = bfa_pport_clear_stats(&bfad->bfa, bfad_hcb_comp, &fcomp); | 319 | rc = bfa_port_clear_stats(BFA_FCPORT(&bfad->bfa), bfad_hcb_comp, |
320 | &fcomp); | ||
316 | spin_unlock_irqrestore(&bfad->bfad_lock, flags); | 321 | spin_unlock_irqrestore(&bfad->bfad_lock, flags); |
317 | 322 | ||
318 | if (rc != BFA_STATUS_OK) | 323 | if (rc != BFA_STATUS_OK) |
@@ -421,12 +426,10 @@ bfad_im_serial_num_show(struct device *dev, struct device_attribute *attr, | |||
421 | struct bfad_im_port_s *im_port = | 426 | struct bfad_im_port_s *im_port = |
422 | (struct bfad_im_port_s *) shost->hostdata[0]; | 427 | (struct bfad_im_port_s *) shost->hostdata[0]; |
423 | struct bfad_s *bfad = im_port->bfad; | 428 | struct bfad_s *bfad = im_port->bfad; |
424 | struct bfa_ioc_attr_s ioc_attr; | 429 | char serial_num[BFA_ADAPTER_SERIAL_NUM_LEN]; |
425 | 430 | ||
426 | memset(&ioc_attr, 0, sizeof(ioc_attr)); | 431 | bfa_get_adapter_serial_num(&bfad->bfa, serial_num); |
427 | bfa_get_attr(&bfad->bfa, &ioc_attr); | 432 | return snprintf(buf, PAGE_SIZE, "%s\n", serial_num); |
428 | return snprintf(buf, PAGE_SIZE, "%s\n", | ||
429 | ioc_attr.adapter_attr.serial_num); | ||
430 | } | 433 | } |
431 | 434 | ||
432 | static ssize_t | 435 | static ssize_t |
@@ -437,11 +440,10 @@ bfad_im_model_show(struct device *dev, struct device_attribute *attr, | |||
437 | struct bfad_im_port_s *im_port = | 440 | struct bfad_im_port_s *im_port = |
438 | (struct bfad_im_port_s *) shost->hostdata[0]; | 441 | (struct bfad_im_port_s *) shost->hostdata[0]; |
439 | struct bfad_s *bfad = im_port->bfad; | 442 | struct bfad_s *bfad = im_port->bfad; |
440 | struct bfa_ioc_attr_s ioc_attr; | 443 | char model[BFA_ADAPTER_MODEL_NAME_LEN]; |
441 | 444 | ||
442 | memset(&ioc_attr, 0, sizeof(ioc_attr)); | 445 | bfa_get_adapter_model(&bfad->bfa, model); |
443 | bfa_get_attr(&bfad->bfa, &ioc_attr); | 446 | return snprintf(buf, PAGE_SIZE, "%s\n", model); |
444 | return snprintf(buf, PAGE_SIZE, "%s\n", ioc_attr.adapter_attr.model); | ||
445 | } | 447 | } |
446 | 448 | ||
447 | static ssize_t | 449 | static ssize_t |
@@ -452,12 +454,10 @@ bfad_im_model_desc_show(struct device *dev, struct device_attribute *attr, | |||
452 | struct bfad_im_port_s *im_port = | 454 | struct bfad_im_port_s *im_port = |
453 | (struct bfad_im_port_s *) shost->hostdata[0]; | 455 | (struct bfad_im_port_s *) shost->hostdata[0]; |
454 | struct bfad_s *bfad = im_port->bfad; | 456 | struct bfad_s *bfad = im_port->bfad; |
455 | struct bfa_ioc_attr_s ioc_attr; | 457 | char model_descr[BFA_ADAPTER_MODEL_DESCR_LEN]; |
456 | 458 | ||
457 | memset(&ioc_attr, 0, sizeof(ioc_attr)); | 459 | bfa_get_adapter_model(&bfad->bfa, model_descr); |
458 | bfa_get_attr(&bfad->bfa, &ioc_attr); | 460 | return snprintf(buf, PAGE_SIZE, "%s\n", model_descr); |
459 | return snprintf(buf, PAGE_SIZE, "%s\n", | ||
460 | ioc_attr.adapter_attr.model_descr); | ||
461 | } | 461 | } |
462 | 462 | ||
463 | static ssize_t | 463 | static ssize_t |
@@ -482,14 +482,13 @@ bfad_im_symbolic_name_show(struct device *dev, struct device_attribute *attr, | |||
482 | struct bfad_im_port_s *im_port = | 482 | struct bfad_im_port_s *im_port = |
483 | (struct bfad_im_port_s *) shost->hostdata[0]; | 483 | (struct bfad_im_port_s *) shost->hostdata[0]; |
484 | struct bfad_s *bfad = im_port->bfad; | 484 | struct bfad_s *bfad = im_port->bfad; |
485 | struct bfa_ioc_attr_s ioc_attr; | 485 | char model[BFA_ADAPTER_MODEL_NAME_LEN]; |
486 | 486 | char fw_ver[BFA_VERSION_LEN]; | |
487 | memset(&ioc_attr, 0, sizeof(ioc_attr)); | ||
488 | bfa_get_attr(&bfad->bfa, &ioc_attr); | ||
489 | 487 | ||
488 | bfa_get_adapter_model(&bfad->bfa, model); | ||
489 | bfa_get_adapter_fw_ver(&bfad->bfa, fw_ver); | ||
490 | return snprintf(buf, PAGE_SIZE, "Brocade %s FV%s DV%s\n", | 490 | return snprintf(buf, PAGE_SIZE, "Brocade %s FV%s DV%s\n", |
491 | ioc_attr.adapter_attr.model, | 491 | model, fw_ver, BFAD_DRIVER_VERSION); |
492 | ioc_attr.adapter_attr.fw_ver, BFAD_DRIVER_VERSION); | ||
493 | } | 492 | } |
494 | 493 | ||
495 | static ssize_t | 494 | static ssize_t |
@@ -500,11 +499,10 @@ bfad_im_hw_version_show(struct device *dev, struct device_attribute *attr, | |||
500 | struct bfad_im_port_s *im_port = | 499 | struct bfad_im_port_s *im_port = |
501 | (struct bfad_im_port_s *) shost->hostdata[0]; | 500 | (struct bfad_im_port_s *) shost->hostdata[0]; |
502 | struct bfad_s *bfad = im_port->bfad; | 501 | struct bfad_s *bfad = im_port->bfad; |
503 | struct bfa_ioc_attr_s ioc_attr; | 502 | char hw_ver[BFA_VERSION_LEN]; |
504 | 503 | ||
505 | memset(&ioc_attr, 0, sizeof(ioc_attr)); | 504 | bfa_get_pci_chip_rev(&bfad->bfa, hw_ver); |
506 | bfa_get_attr(&bfad->bfa, &ioc_attr); | 505 | return snprintf(buf, PAGE_SIZE, "%s\n", hw_ver); |
507 | return snprintf(buf, PAGE_SIZE, "%s\n", ioc_attr.adapter_attr.hw_ver); | ||
508 | } | 506 | } |
509 | 507 | ||
510 | static ssize_t | 508 | static ssize_t |
@@ -522,12 +520,10 @@ bfad_im_optionrom_version_show(struct device *dev, | |||
522 | struct bfad_im_port_s *im_port = | 520 | struct bfad_im_port_s *im_port = |
523 | (struct bfad_im_port_s *) shost->hostdata[0]; | 521 | (struct bfad_im_port_s *) shost->hostdata[0]; |
524 | struct bfad_s *bfad = im_port->bfad; | 522 | struct bfad_s *bfad = im_port->bfad; |
525 | struct bfa_ioc_attr_s ioc_attr; | 523 | char optrom_ver[BFA_VERSION_LEN]; |
526 | 524 | ||
527 | memset(&ioc_attr, 0, sizeof(ioc_attr)); | 525 | bfa_get_adapter_optrom_ver(&bfad->bfa, optrom_ver); |
528 | bfa_get_attr(&bfad->bfa, &ioc_attr); | 526 | return snprintf(buf, PAGE_SIZE, "%s\n", optrom_ver); |
529 | return snprintf(buf, PAGE_SIZE, "%s\n", | ||
530 | ioc_attr.adapter_attr.optrom_ver); | ||
531 | } | 527 | } |
532 | 528 | ||
533 | static ssize_t | 529 | static ssize_t |
@@ -538,11 +534,10 @@ bfad_im_fw_version_show(struct device *dev, struct device_attribute *attr, | |||
538 | struct bfad_im_port_s *im_port = | 534 | struct bfad_im_port_s *im_port = |
539 | (struct bfad_im_port_s *) shost->hostdata[0]; | 535 | (struct bfad_im_port_s *) shost->hostdata[0]; |
540 | struct bfad_s *bfad = im_port->bfad; | 536 | struct bfad_s *bfad = im_port->bfad; |
541 | struct bfa_ioc_attr_s ioc_attr; | 537 | char fw_ver[BFA_VERSION_LEN]; |
542 | 538 | ||
543 | memset(&ioc_attr, 0, sizeof(ioc_attr)); | 539 | bfa_get_adapter_fw_ver(&bfad->bfa, fw_ver); |
544 | bfa_get_attr(&bfad->bfa, &ioc_attr); | 540 | return snprintf(buf, PAGE_SIZE, "%s\n", fw_ver); |
545 | return snprintf(buf, PAGE_SIZE, "%s\n", ioc_attr.adapter_attr.fw_ver); | ||
546 | } | 541 | } |
547 | 542 | ||
548 | static ssize_t | 543 | static ssize_t |
@@ -553,11 +548,9 @@ bfad_im_num_of_ports_show(struct device *dev, struct device_attribute *attr, | |||
553 | struct bfad_im_port_s *im_port = | 548 | struct bfad_im_port_s *im_port = |
554 | (struct bfad_im_port_s *) shost->hostdata[0]; | 549 | (struct bfad_im_port_s *) shost->hostdata[0]; |
555 | struct bfad_s *bfad = im_port->bfad; | 550 | struct bfad_s *bfad = im_port->bfad; |
556 | struct bfa_ioc_attr_s ioc_attr; | ||
557 | 551 | ||
558 | memset(&ioc_attr, 0, sizeof(ioc_attr)); | 552 | return snprintf(buf, PAGE_SIZE, "%d\n", |
559 | bfa_get_attr(&bfad->bfa, &ioc_attr); | 553 | bfa_get_nports(&bfad->bfa)); |
560 | return snprintf(buf, PAGE_SIZE, "%d\n", ioc_attr.adapter_attr.nports); | ||
561 | } | 554 | } |
562 | 555 | ||
563 | static ssize_t | 556 | static ssize_t |