aboutsummaryrefslogtreecommitdiffstats
path: root/qlcnic_sysfs.patch
blob: ca3871ede5552ed9f5a8d84c9e9740de43c07c2a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sysfs.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sysfs.c
index 10ed82b3..6cc8f15f 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sysfs.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_sysfs.c
@@ -33,9 +33,9 @@ int qlcnicvf_config_led(struct qlcnic_adapter *adapter, u32 state, u32 rate)
 	return -EOPNOTSUPP;
 }
 
-static ssize_t qlcnic_store_bridged_mode(struct device *dev,
-					 struct device_attribute *attr,
-					 const char *buf, size_t len)
+static ssize_t bridged_mode_store(struct device *dev,
+				  struct device_attribute *attr,
+				  const char *buf, size_t len)
 {
 	struct qlcnic_adapter *adapter = dev_get_drvdata(dev);
 	unsigned long new;
@@ -57,9 +57,8 @@ err_out:
 	return ret;
 }
 
-static ssize_t qlcnic_show_bridged_mode(struct device *dev,
-					struct device_attribute *attr,
-					char *buf)
+static ssize_t bridged_mode_show(struct device *dev,
+				 struct device_attribute *attr, char *buf)
 {
 	struct qlcnic_adapter *adapter = dev_get_drvdata(dev);
 	int bridged_mode = 0;
@@ -69,10 +68,11 @@ static ssize_t qlcnic_show_bridged_mode(struct device *dev,
 
 	return sprintf(buf, "%d\n", bridged_mode);
 }
+static DEVICE_ATTR_RW(bridged_mode);
 
-static ssize_t qlcnic_store_diag_mode(struct device *dev,
-				      struct device_attribute *attr,
-				      const char *buf, size_t len)
+static ssize_t diag_mode_store(struct device *dev,
+			       struct device_attribute *attr, const char *buf,
+			       size_t len)
 {
 	struct qlcnic_adapter *adapter = dev_get_drvdata(dev);
 	unsigned long new;
@@ -86,12 +86,13 @@ static ssize_t qlcnic_store_diag_mode(struct device *dev,
 	return len;
 }
 
-static ssize_t qlcnic_show_diag_mode(struct device *dev,
-				     struct device_attribute *attr, char *buf)
+static ssize_t diag_mode_show(struct device *dev, struct device_attribute *attr,
+			      char *buf)
 {
 	struct qlcnic_adapter *adapter = dev_get_drvdata(dev);
 	return sprintf(buf, "%d\n", !!(adapter->flags & QLCNIC_DIAG_ENABLED));
 }
+static DEVICE_ATTR_RW(diag_mode);
 
 static int qlcnic_validate_beacon(struct qlcnic_adapter *adapter, u16 beacon,
 				  u8 *state, u8 *rate)
@@ -221,9 +222,8 @@ out:
 	return err;
 }
 
-static ssize_t qlcnic_store_beacon(struct device *dev,
-				   struct device_attribute *attr,
-				   const char *buf, size_t len)
+static ssize_t beacon_store(struct device *dev, struct device_attribute *attr,
+			    const char *buf, size_t len)
 {
 	struct qlcnic_adapter *adapter = dev_get_drvdata(dev);
 	int err = 0;
@@ -244,8 +244,8 @@ static ssize_t qlcnic_store_beacon(struct device *dev,
 	return err;
 }
 
-static ssize_t qlcnic_show_beacon(struct device *dev,
-				  struct device_attribute *attr, char *buf)
+static ssize_t beacon_show(struct device *dev, struct device_attribute *attr,
+			   char *buf)
 {
 	struct qlcnic_adapter *adapter = dev_get_drvdata(dev);
 
@@ -273,6 +273,7 @@ static int qlcnic_sysfs_validate_crb(struct qlcnic_adapter *adapter,
 
 	return 0;
 }
+static DEVICE_ATTR_RW(beacon);
 
 static ssize_t qlcnic_sysfs_read_crb(struct file *filp, struct kobject *kobj,
 				     struct bin_attribute *attr, char *buf,
@@ -1155,24 +1156,6 @@ static ssize_t qlcnic_83xx_sysfs_flash_write_handler(struct file *filp,
 	return size;
 }
 
-static struct device_attribute dev_attr_bridged_mode = {
-       .attr = {.name = "bridged_mode", .mode = (S_IRUGO | S_IWUSR)},
-       .show = qlcnic_show_bridged_mode,
-       .store = qlcnic_store_bridged_mode,
-};
-
-static struct device_attribute dev_attr_diag_mode = {
-	.attr = {.name = "diag_mode", .mode = (S_IRUGO | S_IWUSR)},
-	.show = qlcnic_show_diag_mode,
-	.store = qlcnic_store_diag_mode,
-};
-
-static struct device_attribute dev_attr_beacon = {
-	.attr = {.name = "beacon", .mode = (S_IRUGO | S_IWUSR)},
-	.show = qlcnic_show_beacon,
-	.store = qlcnic_store_beacon,
-};
-
 static struct bin_attribute bin_attr_crb = {
 	.attr = {.name = "crb", .mode = (S_IRUGO | S_IWUSR)},
 	.size = 0,
@@ -1236,6 +1219,24 @@ static struct bin_attribute bin_attr_flash = {
 	.write = qlcnic_83xx_sysfs_flash_write_handler,
 };
 
+static struct attribute *qlcnic_attrs[] = {
+	&dev_attr_diag_mode.attr,
+	NULL,
+};
+
+static struct bin_attribute *qlcnic_bin_attrs[] = {
+	&bin_attr_esw_config,
+	&bin_attr_pm_config,
+	&bin_attr_flash,
+	NULL,
+};
+
+static const struct attribute_group qlcnic_attr = {
+	.attrs = qlcnic_attrs,
+	.bin_attrs = qlcnic_bin_attrs,
+};
+
+
 void qlcnic_create_sysfs_entries(struct qlcnic_adapter *adapter)
 {
 	struct device *dev = &adapter->pdev->dev;
@@ -1257,6 +1258,11 @@ void qlcnic_remove_sysfs_entries(struct qlcnic_adapter *adapter)
 void qlcnic_create_diag_entries(struct qlcnic_adapter *adapter)
 {
 	struct device *dev = &adapter->pdev->dev;
+	int err;
+
+	err = sysfs_create_group(&dev->kobj, &qlcnic_attr);
+	if (err)
+		dev_err(dev, "error creating sysfs files\n");
 
 	if (device_create_bin_file(dev, &bin_attr_port_stats))
 		dev_info(dev, "failed to create port stats sysfs entry");