snic_attrs.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. // Copyright 2014 Cisco Systems, Inc. All rights reserved.
  3. #include <linux/string.h>
  4. #include <linux/device.h>
  5. #include "snic.h"
  6. static ssize_t
  7. snic_show_sym_name(struct device *dev,
  8. struct device_attribute *attr,
  9. char *buf)
  10. {
  11. struct snic *snic = shost_priv(class_to_shost(dev));
  12. return snprintf(buf, PAGE_SIZE, "%s\n", snic->name);
  13. }
  14. static ssize_t
  15. snic_show_state(struct device *dev,
  16. struct device_attribute *attr,
  17. char *buf)
  18. {
  19. struct snic *snic = shost_priv(class_to_shost(dev));
  20. return snprintf(buf, PAGE_SIZE, "%s\n",
  21. snic_state_str[snic_get_state(snic)]);
  22. }
  23. static ssize_t
  24. snic_show_drv_version(struct device *dev,
  25. struct device_attribute *attr,
  26. char *buf)
  27. {
  28. return snprintf(buf, PAGE_SIZE, "%s\n", SNIC_DRV_VERSION);
  29. }
  30. static ssize_t
  31. snic_show_link_state(struct device *dev,
  32. struct device_attribute *attr,
  33. char *buf)
  34. {
  35. struct snic *snic = shost_priv(class_to_shost(dev));
  36. if (snic->config.xpt_type == SNIC_DAS)
  37. snic->link_status = svnic_dev_link_status(snic->vdev);
  38. return snprintf(buf, PAGE_SIZE, "%s\n",
  39. (snic->link_status) ? "Link Up" : "Link Down");
  40. }
  41. static DEVICE_ATTR(snic_sym_name, S_IRUGO, snic_show_sym_name, NULL);
  42. static DEVICE_ATTR(snic_state, S_IRUGO, snic_show_state, NULL);
  43. static DEVICE_ATTR(drv_version, S_IRUGO, snic_show_drv_version, NULL);
  44. static DEVICE_ATTR(link_state, S_IRUGO, snic_show_link_state, NULL);
  45. static struct attribute *snic_host_attrs[] = {
  46. &dev_attr_snic_sym_name.attr,
  47. &dev_attr_snic_state.attr,
  48. &dev_attr_drv_version.attr,
  49. &dev_attr_link_state.attr,
  50. NULL,
  51. };
  52. static const struct attribute_group snic_host_attr_group = {
  53. .attrs = snic_host_attrs
  54. };
  55. const struct attribute_group *snic_host_groups[] = {
  56. &snic_host_attr_group,
  57. NULL
  58. };