diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/infiniband/hw/ehca/ehca_main.c | 86 |
1 files changed, 37 insertions, 49 deletions
diff --git a/drivers/infiniband/hw/ehca/ehca_main.c b/drivers/infiniband/hw/ehca/ehca_main.c index b917cc130e48..7d276e034e47 100644 --- a/drivers/infiniband/hw/ehca/ehca_main.c +++ b/drivers/infiniband/hw/ehca/ehca_main.c | |||
| @@ -454,15 +454,14 @@ static ssize_t ehca_store_debug_level(struct device_driver *ddp, | |||
| 454 | DRIVER_ATTR(debug_level, S_IRUSR | S_IWUSR, | 454 | DRIVER_ATTR(debug_level, S_IRUSR | S_IWUSR, |
| 455 | ehca_show_debug_level, ehca_store_debug_level); | 455 | ehca_show_debug_level, ehca_store_debug_level); |
| 456 | 456 | ||
| 457 | void ehca_create_driver_sysfs(struct ibmebus_driver *drv) | 457 | static struct attribute *ehca_drv_attrs[] = { |
| 458 | { | 458 | &driver_attr_debug_level.attr, |
| 459 | driver_create_file(&drv->driver, &driver_attr_debug_level); | 459 | NULL |
| 460 | } | 460 | }; |
| 461 | 461 | ||
| 462 | void ehca_remove_driver_sysfs(struct ibmebus_driver *drv) | 462 | static struct attribute_group ehca_drv_attr_grp = { |
| 463 | { | 463 | .attrs = ehca_drv_attrs |
| 464 | driver_remove_file(&drv->driver, &driver_attr_debug_level); | 464 | }; |
| 465 | } | ||
| 466 | 465 | ||
| 467 | #define EHCA_RESOURCE_ATTR(name) \ | 466 | #define EHCA_RESOURCE_ATTR(name) \ |
| 468 | static ssize_t ehca_show_##name(struct device *dev, \ | 467 | static ssize_t ehca_show_##name(struct device *dev, \ |
| @@ -524,44 +523,28 @@ static ssize_t ehca_show_adapter_handle(struct device *dev, | |||
| 524 | } | 523 | } |
| 525 | static DEVICE_ATTR(adapter_handle, S_IRUGO, ehca_show_adapter_handle, NULL); | 524 | static DEVICE_ATTR(adapter_handle, S_IRUGO, ehca_show_adapter_handle, NULL); |
| 526 | 525 | ||
| 526 | static struct attribute *ehca_dev_attrs[] = { | ||
| 527 | &dev_attr_adapter_handle.attr, | ||
| 528 | &dev_attr_num_ports.attr, | ||
| 529 | &dev_attr_hw_ver.attr, | ||
| 530 | &dev_attr_max_eq.attr, | ||
| 531 | &dev_attr_cur_eq.attr, | ||
| 532 | &dev_attr_max_cq.attr, | ||
| 533 | &dev_attr_cur_cq.attr, | ||
| 534 | &dev_attr_max_qp.attr, | ||
| 535 | &dev_attr_cur_qp.attr, | ||
| 536 | &dev_attr_max_mr.attr, | ||
| 537 | &dev_attr_cur_mr.attr, | ||
| 538 | &dev_attr_max_mw.attr, | ||
| 539 | &dev_attr_cur_mw.attr, | ||
| 540 | &dev_attr_max_pd.attr, | ||
| 541 | &dev_attr_max_ah.attr, | ||
| 542 | NULL | ||
| 543 | }; | ||
| 527 | 544 | ||
| 528 | void ehca_create_device_sysfs(struct ibmebus_dev *dev) | 545 | static struct attribute_group ehca_dev_attr_grp = { |
| 529 | { | 546 | .attrs = ehca_dev_attrs |
| 530 | device_create_file(&dev->ofdev.dev, &dev_attr_adapter_handle); | 547 | }; |
| 531 | device_create_file(&dev->ofdev.dev, &dev_attr_num_ports); | ||
| 532 | device_create_file(&dev->ofdev.dev, &dev_attr_hw_ver); | ||
| 533 | device_create_file(&dev->ofdev.dev, &dev_attr_max_eq); | ||
| 534 | device_create_file(&dev->ofdev.dev, &dev_attr_cur_eq); | ||
| 535 | device_create_file(&dev->ofdev.dev, &dev_attr_max_cq); | ||
| 536 | device_create_file(&dev->ofdev.dev, &dev_attr_cur_cq); | ||
| 537 | device_create_file(&dev->ofdev.dev, &dev_attr_max_qp); | ||
| 538 | device_create_file(&dev->ofdev.dev, &dev_attr_cur_qp); | ||
| 539 | device_create_file(&dev->ofdev.dev, &dev_attr_max_mr); | ||
| 540 | device_create_file(&dev->ofdev.dev, &dev_attr_cur_mr); | ||
| 541 | device_create_file(&dev->ofdev.dev, &dev_attr_max_mw); | ||
| 542 | device_create_file(&dev->ofdev.dev, &dev_attr_cur_mw); | ||
| 543 | device_create_file(&dev->ofdev.dev, &dev_attr_max_pd); | ||
| 544 | device_create_file(&dev->ofdev.dev, &dev_attr_max_ah); | ||
| 545 | } | ||
| 546 | |||
| 547 | void ehca_remove_device_sysfs(struct ibmebus_dev *dev) | ||
| 548 | { | ||
| 549 | device_remove_file(&dev->ofdev.dev, &dev_attr_adapter_handle); | ||
| 550 | device_remove_file(&dev->ofdev.dev, &dev_attr_num_ports); | ||
| 551 | device_remove_file(&dev->ofdev.dev, &dev_attr_hw_ver); | ||
| 552 | device_remove_file(&dev->ofdev.dev, &dev_attr_max_eq); | ||
| 553 | device_remove_file(&dev->ofdev.dev, &dev_attr_cur_eq); | ||
| 554 | device_remove_file(&dev->ofdev.dev, &dev_attr_max_cq); | ||
| 555 | device_remove_file(&dev->ofdev.dev, &dev_attr_cur_cq); | ||
| 556 | device_remove_file(&dev->ofdev.dev, &dev_attr_max_qp); | ||
| 557 | device_remove_file(&dev->ofdev.dev, &dev_attr_cur_qp); | ||
| 558 | device_remove_file(&dev->ofdev.dev, &dev_attr_max_mr); | ||
| 559 | device_remove_file(&dev->ofdev.dev, &dev_attr_cur_mr); | ||
| 560 | device_remove_file(&dev->ofdev.dev, &dev_attr_max_mw); | ||
| 561 | device_remove_file(&dev->ofdev.dev, &dev_attr_cur_mw); | ||
| 562 | device_remove_file(&dev->ofdev.dev, &dev_attr_max_pd); | ||
| 563 | device_remove_file(&dev->ofdev.dev, &dev_attr_max_ah); | ||
| 564 | } | ||
| 565 | 548 | ||
| 566 | static int __devinit ehca_probe(struct ibmebus_dev *dev, | 549 | static int __devinit ehca_probe(struct ibmebus_dev *dev, |
| 567 | const struct of_device_id *id) | 550 | const struct of_device_id *id) |
| @@ -669,7 +652,10 @@ static int __devinit ehca_probe(struct ibmebus_dev *dev, | |||
| 669 | } | 652 | } |
| 670 | } | 653 | } |
| 671 | 654 | ||
| 672 | ehca_create_device_sysfs(dev); | 655 | ret = sysfs_create_group(&dev->ofdev.dev.kobj, &ehca_dev_attr_grp); |
| 656 | if (ret) /* only complain; we can live without attributes */ | ||
| 657 | ehca_err(&shca->ib_device, | ||
| 658 | "Cannot create device attributes ret=%d", ret); | ||
| 673 | 659 | ||
| 674 | spin_lock(&shca_list_lock); | 660 | spin_lock(&shca_list_lock); |
| 675 | list_add(&shca->shca_list, &shca_list); | 661 | list_add(&shca->shca_list, &shca_list); |
| @@ -721,7 +707,7 @@ static int __devexit ehca_remove(struct ibmebus_dev *dev) | |||
| 721 | struct ehca_shca *shca = dev->ofdev.dev.driver_data; | 707 | struct ehca_shca *shca = dev->ofdev.dev.driver_data; |
| 722 | int ret; | 708 | int ret; |
| 723 | 709 | ||
| 724 | ehca_remove_device_sysfs(dev); | 710 | sysfs_remove_group(&dev->ofdev.dev.kobj, &ehca_dev_attr_grp); |
| 725 | 711 | ||
| 726 | if (ehca_open_aqp1 == 1) { | 712 | if (ehca_open_aqp1 == 1) { |
| 727 | int i; | 713 | int i; |
| @@ -840,7 +826,9 @@ int __init ehca_module_init(void) | |||
| 840 | goto module_init2; | 826 | goto module_init2; |
| 841 | } | 827 | } |
| 842 | 828 | ||
| 843 | ehca_create_driver_sysfs(&ehca_driver); | 829 | ret = sysfs_create_group(&ehca_driver.driver.kobj, &ehca_drv_attr_grp); |
| 830 | if (ret) /* only complain; we can live without attributes */ | ||
| 831 | ehca_gen_err("Cannot create driver attributes ret=%d", ret); | ||
| 844 | 832 | ||
| 845 | if (ehca_poll_all_eqs != 1) { | 833 | if (ehca_poll_all_eqs != 1) { |
| 846 | ehca_gen_err("WARNING!!!"); | 834 | ehca_gen_err("WARNING!!!"); |
| @@ -867,7 +855,7 @@ void __exit ehca_module_exit(void) | |||
| 867 | if (ehca_poll_all_eqs == 1) | 855 | if (ehca_poll_all_eqs == 1) |
| 868 | del_timer_sync(&poll_eqs_timer); | 856 | del_timer_sync(&poll_eqs_timer); |
| 869 | 857 | ||
| 870 | ehca_remove_driver_sysfs(&ehca_driver); | 858 | sysfs_remove_group(&ehca_driver.driver.kobj, &ehca_drv_attr_grp); |
| 871 | ibmebus_unregister_driver(&ehca_driver); | 859 | ibmebus_unregister_driver(&ehca_driver); |
| 872 | 860 | ||
| 873 | ehca_destroy_slab_caches(); | 861 | ehca_destroy_slab_caches(); |
