aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2018-04-11 05:05:22 -0400
committerChristoph Hellwig <hch@lst.de>2018-05-16 01:24:30 -0400
commitd51269592c327fcfe8ec80fd169a84f8dc0de73b (patch)
tree0775aaf67c47ea82b20bce6ec375b83c445e663d
parent7ceed065451aba90cafd9a493c8f62fedd74d457 (diff)
hostap: switch to proc_create_{seq,single}_data
And use proc private data directly instead of doing a detour through seq->private. Signed-off-by: Christoph Hellwig <hch@lst.de>
-rw-r--r--drivers/net/wireless/intersil/hostap/hostap_ap.c70
-rw-r--r--drivers/net/wireless/intersil/hostap/hostap_hw.c17
-rw-r--r--drivers/net/wireless/intersil/hostap/hostap_proc.c143
3 files changed, 39 insertions, 191 deletions
diff --git a/drivers/net/wireless/intersil/hostap/hostap_ap.c b/drivers/net/wireless/intersil/hostap/hostap_ap.c
index 4f76f81dd3af..d1884b8913e7 100644
--- a/drivers/net/wireless/intersil/hostap/hostap_ap.c
+++ b/drivers/net/wireless/intersil/hostap/hostap_ap.c
@@ -69,7 +69,7 @@ static void prism2_send_mgmt(struct net_device *dev,
69#ifndef PRISM2_NO_PROCFS_DEBUG 69#ifndef PRISM2_NO_PROCFS_DEBUG
70static int ap_debug_proc_show(struct seq_file *m, void *v) 70static int ap_debug_proc_show(struct seq_file *m, void *v)
71{ 71{
72 struct ap_data *ap = m->private; 72 struct ap_data *ap = PDE_DATA(file_inode(m->file));
73 73
74 seq_printf(m, "BridgedUnicastFrames=%u\n", ap->bridged_unicast); 74 seq_printf(m, "BridgedUnicastFrames=%u\n", ap->bridged_unicast);
75 seq_printf(m, "BridgedMulticastFrames=%u\n", ap->bridged_multicast); 75 seq_printf(m, "BridgedMulticastFrames=%u\n", ap->bridged_multicast);
@@ -81,18 +81,6 @@ static int ap_debug_proc_show(struct seq_file *m, void *v)
81 seq_printf(m, "tx_drop_nonassoc=%u\n", ap->tx_drop_nonassoc); 81 seq_printf(m, "tx_drop_nonassoc=%u\n", ap->tx_drop_nonassoc);
82 return 0; 82 return 0;
83} 83}
84
85static int ap_debug_proc_open(struct inode *inode, struct file *file)
86{
87 return single_open(file, ap_debug_proc_show, PDE_DATA(inode));
88}
89
90static const struct file_operations ap_debug_proc_fops = {
91 .open = ap_debug_proc_open,
92 .read = seq_read,
93 .llseek = seq_lseek,
94 .release = single_release,
95};
96#endif /* PRISM2_NO_PROCFS_DEBUG */ 84#endif /* PRISM2_NO_PROCFS_DEBUG */
97 85
98 86
@@ -333,7 +321,7 @@ void hostap_deauth_all_stas(struct net_device *dev, struct ap_data *ap,
333 321
334static int ap_control_proc_show(struct seq_file *m, void *v) 322static int ap_control_proc_show(struct seq_file *m, void *v)
335{ 323{
336 struct ap_data *ap = m->private; 324 struct ap_data *ap = PDE_DATA(file_inode(m->file));
337 char *policy_txt; 325 char *policy_txt;
338 struct mac_entry *entry; 326 struct mac_entry *entry;
339 327
@@ -365,20 +353,20 @@ static int ap_control_proc_show(struct seq_file *m, void *v)
365 353
366static void *ap_control_proc_start(struct seq_file *m, loff_t *_pos) 354static void *ap_control_proc_start(struct seq_file *m, loff_t *_pos)
367{ 355{
368 struct ap_data *ap = m->private; 356 struct ap_data *ap = PDE_DATA(file_inode(m->file));
369 spin_lock_bh(&ap->mac_restrictions.lock); 357 spin_lock_bh(&ap->mac_restrictions.lock);
370 return seq_list_start_head(&ap->mac_restrictions.mac_list, *_pos); 358 return seq_list_start_head(&ap->mac_restrictions.mac_list, *_pos);
371} 359}
372 360
373static void *ap_control_proc_next(struct seq_file *m, void *v, loff_t *_pos) 361static void *ap_control_proc_next(struct seq_file *m, void *v, loff_t *_pos)
374{ 362{
375 struct ap_data *ap = m->private; 363 struct ap_data *ap = PDE_DATA(file_inode(m->file));
376 return seq_list_next(v, &ap->mac_restrictions.mac_list, _pos); 364 return seq_list_next(v, &ap->mac_restrictions.mac_list, _pos);
377} 365}
378 366
379static void ap_control_proc_stop(struct seq_file *m, void *v) 367static void ap_control_proc_stop(struct seq_file *m, void *v)
380{ 368{
381 struct ap_data *ap = m->private; 369 struct ap_data *ap = PDE_DATA(file_inode(m->file));
382 spin_unlock_bh(&ap->mac_restrictions.lock); 370 spin_unlock_bh(&ap->mac_restrictions.lock);
383} 371}
384 372
@@ -389,24 +377,6 @@ static const struct seq_operations ap_control_proc_seqops = {
389 .show = ap_control_proc_show, 377 .show = ap_control_proc_show,
390}; 378};
391 379
392static int ap_control_proc_open(struct inode *inode, struct file *file)
393{
394 int ret = seq_open(file, &ap_control_proc_seqops);
395 if (ret == 0) {
396 struct seq_file *m = file->private_data;
397 m->private = PDE_DATA(inode);
398 }
399 return ret;
400}
401
402static const struct file_operations ap_control_proc_fops = {
403 .open = ap_control_proc_open,
404 .read = seq_read,
405 .llseek = seq_lseek,
406 .release = seq_release,
407};
408
409
410int ap_control_add_mac(struct mac_restrictions *mac_restrictions, u8 *mac) 380int ap_control_add_mac(struct mac_restrictions *mac_restrictions, u8 *mac)
411{ 381{
412 struct mac_entry *entry; 382 struct mac_entry *entry;
@@ -585,20 +555,20 @@ static int prism2_ap_proc_show(struct seq_file *m, void *v)
585 555
586static void *prism2_ap_proc_start(struct seq_file *m, loff_t *_pos) 556static void *prism2_ap_proc_start(struct seq_file *m, loff_t *_pos)
587{ 557{
588 struct ap_data *ap = m->private; 558 struct ap_data *ap = PDE_DATA(file_inode(m->file));
589 spin_lock_bh(&ap->sta_table_lock); 559 spin_lock_bh(&ap->sta_table_lock);
590 return seq_list_start_head(&ap->sta_list, *_pos); 560 return seq_list_start_head(&ap->sta_list, *_pos);
591} 561}
592 562
593static void *prism2_ap_proc_next(struct seq_file *m, void *v, loff_t *_pos) 563static void *prism2_ap_proc_next(struct seq_file *m, void *v, loff_t *_pos)
594{ 564{
595 struct ap_data *ap = m->private; 565 struct ap_data *ap = PDE_DATA(file_inode(m->file));
596 return seq_list_next(v, &ap->sta_list, _pos); 566 return seq_list_next(v, &ap->sta_list, _pos);
597} 567}
598 568
599static void prism2_ap_proc_stop(struct seq_file *m, void *v) 569static void prism2_ap_proc_stop(struct seq_file *m, void *v)
600{ 570{
601 struct ap_data *ap = m->private; 571 struct ap_data *ap = PDE_DATA(file_inode(m->file));
602 spin_unlock_bh(&ap->sta_table_lock); 572 spin_unlock_bh(&ap->sta_table_lock);
603} 573}
604 574
@@ -608,23 +578,6 @@ static const struct seq_operations prism2_ap_proc_seqops = {
608 .stop = prism2_ap_proc_stop, 578 .stop = prism2_ap_proc_stop,
609 .show = prism2_ap_proc_show, 579 .show = prism2_ap_proc_show,
610}; 580};
611
612static int prism2_ap_proc_open(struct inode *inode, struct file *file)
613{
614 int ret = seq_open(file, &prism2_ap_proc_seqops);
615 if (ret == 0) {
616 struct seq_file *m = file->private_data;
617 m->private = PDE_DATA(inode);
618 }
619 return ret;
620}
621
622static const struct file_operations prism2_ap_proc_fops = {
623 .open = prism2_ap_proc_open,
624 .read = seq_read,
625 .llseek = seq_lseek,
626 .release = seq_release,
627};
628#endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */ 581#endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */
629 582
630 583
@@ -896,12 +849,13 @@ void hostap_init_ap_proc(local_info_t *local)
896 return; 849 return;
897 850
898#ifndef PRISM2_NO_PROCFS_DEBUG 851#ifndef PRISM2_NO_PROCFS_DEBUG
899 proc_create_data("ap_debug", 0, ap->proc, &ap_debug_proc_fops, ap); 852 proc_create_single_data("ap_debug", 0, ap->proc, ap_debug_proc_show, ap);
900#endif /* PRISM2_NO_PROCFS_DEBUG */ 853#endif /* PRISM2_NO_PROCFS_DEBUG */
901 854
902#ifndef PRISM2_NO_KERNEL_IEEE80211_MGMT 855#ifndef PRISM2_NO_KERNEL_IEEE80211_MGMT
903 proc_create_data("ap_control", 0, ap->proc, &ap_control_proc_fops, ap); 856 proc_create_seq_data("ap_control", 0, ap->proc, &ap_control_proc_seqops,
904 proc_create_data("ap", 0, ap->proc, &prism2_ap_proc_fops, ap); 857 ap);
858 proc_create_seq_data("ap", 0, ap->proc, &prism2_ap_proc_seqops, ap);
905#endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */ 859#endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */
906 860
907} 861}
diff --git a/drivers/net/wireless/intersil/hostap/hostap_hw.c b/drivers/net/wireless/intersil/hostap/hostap_hw.c
index 5c4a17a18968..2720aa39f530 100644
--- a/drivers/net/wireless/intersil/hostap/hostap_hw.c
+++ b/drivers/net/wireless/intersil/hostap/hostap_hw.c
@@ -2951,19 +2951,6 @@ static int prism2_registers_proc_show(struct seq_file *m, void *v)
2951 2951
2952 return 0; 2952 return 0;
2953} 2953}
2954
2955static int prism2_registers_proc_open(struct inode *inode, struct file *file)
2956{
2957 return single_open(file, prism2_registers_proc_show, PDE_DATA(inode));
2958}
2959
2960static const struct file_operations prism2_registers_proc_fops = {
2961 .open = prism2_registers_proc_open,
2962 .read = seq_read,
2963 .llseek = seq_lseek,
2964 .release = single_release,
2965};
2966
2967#endif /* PRISM2_NO_PROCFS_DEBUG */ 2954#endif /* PRISM2_NO_PROCFS_DEBUG */
2968 2955
2969 2956
@@ -3279,8 +3266,8 @@ static int hostap_hw_ready(struct net_device *dev)
3279 } 3266 }
3280 hostap_init_proc(local); 3267 hostap_init_proc(local);
3281#ifndef PRISM2_NO_PROCFS_DEBUG 3268#ifndef PRISM2_NO_PROCFS_DEBUG
3282 proc_create_data("registers", 0, local->proc, 3269 proc_create_single_data("registers", 0, local->proc,
3283 &prism2_registers_proc_fops, local); 3270 prism2_registers_proc_show, local);
3284#endif /* PRISM2_NO_PROCFS_DEBUG */ 3271#endif /* PRISM2_NO_PROCFS_DEBUG */
3285 hostap_init_ap_proc(local); 3272 hostap_init_ap_proc(local);
3286 return 0; 3273 return 0;
diff --git a/drivers/net/wireless/intersil/hostap/hostap_proc.c b/drivers/net/wireless/intersil/hostap/hostap_proc.c
index d234231bf532..5b33ccab9188 100644
--- a/drivers/net/wireless/intersil/hostap/hostap_proc.c
+++ b/drivers/net/wireless/intersil/hostap/hostap_proc.c
@@ -43,18 +43,6 @@ static int prism2_debug_proc_show(struct seq_file *m, void *v)
43 43
44 return 0; 44 return 0;
45} 45}
46
47static int prism2_debug_proc_open(struct inode *inode, struct file *file)
48{
49 return single_open(file, prism2_debug_proc_show, PDE_DATA(inode));
50}
51
52static const struct file_operations prism2_debug_proc_fops = {
53 .open = prism2_debug_proc_open,
54 .read = seq_read,
55 .llseek = seq_lseek,
56 .release = single_release,
57};
58#endif /* PRISM2_NO_PROCFS_DEBUG */ 46#endif /* PRISM2_NO_PROCFS_DEBUG */
59 47
60 48
@@ -95,19 +83,6 @@ static int prism2_stats_proc_show(struct seq_file *m, void *v)
95 return 0; 83 return 0;
96} 84}
97 85
98static int prism2_stats_proc_open(struct inode *inode, struct file *file)
99{
100 return single_open(file, prism2_stats_proc_show, PDE_DATA(inode));
101}
102
103static const struct file_operations prism2_stats_proc_fops = {
104 .open = prism2_stats_proc_open,
105 .read = seq_read,
106 .llseek = seq_lseek,
107 .release = single_release,
108};
109
110
111static int prism2_wds_proc_show(struct seq_file *m, void *v) 86static int prism2_wds_proc_show(struct seq_file *m, void *v)
112{ 87{
113 struct list_head *ptr = v; 88 struct list_head *ptr = v;
@@ -122,20 +97,20 @@ static int prism2_wds_proc_show(struct seq_file *m, void *v)
122 97
123static void *prism2_wds_proc_start(struct seq_file *m, loff_t *_pos) 98static void *prism2_wds_proc_start(struct seq_file *m, loff_t *_pos)
124{ 99{
125 local_info_t *local = m->private; 100 local_info_t *local = PDE_DATA(file_inode(m->file));
126 read_lock_bh(&local->iface_lock); 101 read_lock_bh(&local->iface_lock);
127 return seq_list_start(&local->hostap_interfaces, *_pos); 102 return seq_list_start(&local->hostap_interfaces, *_pos);
128} 103}
129 104
130static void *prism2_wds_proc_next(struct seq_file *m, void *v, loff_t *_pos) 105static void *prism2_wds_proc_next(struct seq_file *m, void *v, loff_t *_pos)
131{ 106{
132 local_info_t *local = m->private; 107 local_info_t *local = PDE_DATA(file_inode(m->file));
133 return seq_list_next(v, &local->hostap_interfaces, _pos); 108 return seq_list_next(v, &local->hostap_interfaces, _pos);
134} 109}
135 110
136static void prism2_wds_proc_stop(struct seq_file *m, void *v) 111static void prism2_wds_proc_stop(struct seq_file *m, void *v)
137{ 112{
138 local_info_t *local = m->private; 113 local_info_t *local = PDE_DATA(file_inode(m->file));
139 read_unlock_bh(&local->iface_lock); 114 read_unlock_bh(&local->iface_lock);
140} 115}
141 116
@@ -146,27 +121,9 @@ static const struct seq_operations prism2_wds_proc_seqops = {
146 .show = prism2_wds_proc_show, 121 .show = prism2_wds_proc_show,
147}; 122};
148 123
149static int prism2_wds_proc_open(struct inode *inode, struct file *file)
150{
151 int ret = seq_open(file, &prism2_wds_proc_seqops);
152 if (ret == 0) {
153 struct seq_file *m = file->private_data;
154 m->private = PDE_DATA(inode);
155 }
156 return ret;
157}
158
159static const struct file_operations prism2_wds_proc_fops = {
160 .open = prism2_wds_proc_open,
161 .read = seq_read,
162 .llseek = seq_lseek,
163 .release = seq_release,
164};
165
166
167static int prism2_bss_list_proc_show(struct seq_file *m, void *v) 124static int prism2_bss_list_proc_show(struct seq_file *m, void *v)
168{ 125{
169 local_info_t *local = m->private; 126 local_info_t *local = PDE_DATA(file_inode(m->file));
170 struct list_head *ptr = v; 127 struct list_head *ptr = v;
171 struct hostap_bss_info *bss; 128 struct hostap_bss_info *bss;
172 129
@@ -193,20 +150,20 @@ static int prism2_bss_list_proc_show(struct seq_file *m, void *v)
193 150
194static void *prism2_bss_list_proc_start(struct seq_file *m, loff_t *_pos) 151static void *prism2_bss_list_proc_start(struct seq_file *m, loff_t *_pos)
195{ 152{
196 local_info_t *local = m->private; 153 local_info_t *local = PDE_DATA(file_inode(m->file));
197 spin_lock_bh(&local->lock); 154 spin_lock_bh(&local->lock);
198 return seq_list_start_head(&local->bss_list, *_pos); 155 return seq_list_start_head(&local->bss_list, *_pos);
199} 156}
200 157
201static void *prism2_bss_list_proc_next(struct seq_file *m, void *v, loff_t *_pos) 158static void *prism2_bss_list_proc_next(struct seq_file *m, void *v, loff_t *_pos)
202{ 159{
203 local_info_t *local = m->private; 160 local_info_t *local = PDE_DATA(file_inode(m->file));
204 return seq_list_next(v, &local->bss_list, _pos); 161 return seq_list_next(v, &local->bss_list, _pos);
205} 162}
206 163
207static void prism2_bss_list_proc_stop(struct seq_file *m, void *v) 164static void prism2_bss_list_proc_stop(struct seq_file *m, void *v)
208{ 165{
209 local_info_t *local = m->private; 166 local_info_t *local = PDE_DATA(file_inode(m->file));
210 spin_unlock_bh(&local->lock); 167 spin_unlock_bh(&local->lock);
211} 168}
212 169
@@ -217,24 +174,6 @@ static const struct seq_operations prism2_bss_list_proc_seqops = {
217 .show = prism2_bss_list_proc_show, 174 .show = prism2_bss_list_proc_show,
218}; 175};
219 176
220static int prism2_bss_list_proc_open(struct inode *inode, struct file *file)
221{
222 int ret = seq_open(file, &prism2_bss_list_proc_seqops);
223 if (ret == 0) {
224 struct seq_file *m = file->private_data;
225 m->private = PDE_DATA(inode);
226 }
227 return ret;
228}
229
230static const struct file_operations prism2_bss_list_proc_fops = {
231 .open = prism2_bss_list_proc_open,
232 .read = seq_read,
233 .llseek = seq_lseek,
234 .release = seq_release,
235};
236
237
238static int prism2_crypt_proc_show(struct seq_file *m, void *v) 177static int prism2_crypt_proc_show(struct seq_file *m, void *v)
239{ 178{
240 local_info_t *local = m->private; 179 local_info_t *local = m->private;
@@ -252,19 +191,6 @@ static int prism2_crypt_proc_show(struct seq_file *m, void *v)
252 return 0; 191 return 0;
253} 192}
254 193
255static int prism2_crypt_proc_open(struct inode *inode, struct file *file)
256{
257 return single_open(file, prism2_crypt_proc_show, PDE_DATA(inode));
258}
259
260static const struct file_operations prism2_crypt_proc_fops = {
261 .open = prism2_crypt_proc_open,
262 .read = seq_read,
263 .llseek = seq_lseek,
264 .release = single_release,
265};
266
267
268static ssize_t prism2_pda_proc_read(struct file *file, char __user *buf, 194static ssize_t prism2_pda_proc_read(struct file *file, char __user *buf,
269 size_t count, loff_t *_pos) 195 size_t count, loff_t *_pos)
270{ 196{
@@ -342,7 +268,7 @@ static int prism2_io_debug_proc_read(char *page, char **start, off_t off,
342#ifndef PRISM2_NO_STATION_MODES 268#ifndef PRISM2_NO_STATION_MODES
343static int prism2_scan_results_proc_show(struct seq_file *m, void *v) 269static int prism2_scan_results_proc_show(struct seq_file *m, void *v)
344{ 270{
345 local_info_t *local = m->private; 271 local_info_t *local = PDE_DATA(file_inode(m->file));
346 unsigned long entry; 272 unsigned long entry;
347 int i, len; 273 int i, len;
348 struct hfa384x_hostscan_result *scanres; 274 struct hfa384x_hostscan_result *scanres;
@@ -392,7 +318,7 @@ static int prism2_scan_results_proc_show(struct seq_file *m, void *v)
392 318
393static void *prism2_scan_results_proc_start(struct seq_file *m, loff_t *_pos) 319static void *prism2_scan_results_proc_start(struct seq_file *m, loff_t *_pos)
394{ 320{
395 local_info_t *local = m->private; 321 local_info_t *local = PDE_DATA(file_inode(m->file));
396 spin_lock_bh(&local->lock); 322 spin_lock_bh(&local->lock);
397 323
398 /* We have a header (pos 0) + N results to show (pos 1...N) */ 324 /* We have a header (pos 0) + N results to show (pos 1...N) */
@@ -403,7 +329,7 @@ static void *prism2_scan_results_proc_start(struct seq_file *m, loff_t *_pos)
403 329
404static void *prism2_scan_results_proc_next(struct seq_file *m, void *v, loff_t *_pos) 330static void *prism2_scan_results_proc_next(struct seq_file *m, void *v, loff_t *_pos)
405{ 331{
406 local_info_t *local = m->private; 332 local_info_t *local = PDE_DATA(file_inode(m->file));
407 333
408 ++*_pos; 334 ++*_pos;
409 if (*_pos > local->last_scan_results_count) 335 if (*_pos > local->last_scan_results_count)
@@ -413,7 +339,7 @@ static void *prism2_scan_results_proc_next(struct seq_file *m, void *v, loff_t *
413 339
414static void prism2_scan_results_proc_stop(struct seq_file *m, void *v) 340static void prism2_scan_results_proc_stop(struct seq_file *m, void *v)
415{ 341{
416 local_info_t *local = m->private; 342 local_info_t *local = PDE_DATA(file_inode(m->file));
417 spin_unlock_bh(&local->lock); 343 spin_unlock_bh(&local->lock);
418} 344}
419 345
@@ -423,25 +349,6 @@ static const struct seq_operations prism2_scan_results_proc_seqops = {
423 .stop = prism2_scan_results_proc_stop, 349 .stop = prism2_scan_results_proc_stop,
424 .show = prism2_scan_results_proc_show, 350 .show = prism2_scan_results_proc_show,
425}; 351};
426
427static int prism2_scan_results_proc_open(struct inode *inode, struct file *file)
428{
429 int ret = seq_open(file, &prism2_scan_results_proc_seqops);
430 if (ret == 0) {
431 struct seq_file *m = file->private_data;
432 m->private = PDE_DATA(inode);
433 }
434 return ret;
435}
436
437static const struct file_operations prism2_scan_results_proc_fops = {
438 .open = prism2_scan_results_proc_open,
439 .read = seq_read,
440 .llseek = seq_lseek,
441 .release = seq_release,
442};
443
444
445#endif /* PRISM2_NO_STATION_MODES */ 352#endif /* PRISM2_NO_STATION_MODES */
446 353
447 354
@@ -463,29 +370,29 @@ void hostap_init_proc(local_info_t *local)
463 } 370 }
464 371
465#ifndef PRISM2_NO_PROCFS_DEBUG 372#ifndef PRISM2_NO_PROCFS_DEBUG
466 proc_create_data("debug", 0, local->proc, 373 proc_create_single_data("debug", 0, local->proc,
467 &prism2_debug_proc_fops, local); 374 prism2_debug_proc_show, local);
468#endif /* PRISM2_NO_PROCFS_DEBUG */ 375#endif /* PRISM2_NO_PROCFS_DEBUG */
469 proc_create_data("stats", 0, local->proc, 376 proc_create_single_data("stats", 0, local->proc, prism2_stats_proc_show,
470 &prism2_stats_proc_fops, local); 377 local);
471 proc_create_data("wds", 0, local->proc, 378 proc_create_seq_data("wds", 0, local->proc,
472 &prism2_wds_proc_fops, local); 379 &prism2_wds_proc_seqops, local);
473 proc_create_data("pda", 0, local->proc, 380 proc_create_data("pda", 0, local->proc,
474 &prism2_pda_proc_fops, local); 381 &prism2_pda_proc_fops, local);
475 proc_create_data("aux_dump", 0, local->proc, 382 proc_create_data("aux_dump", 0, local->proc,
476 local->func->read_aux_fops ?: &prism2_aux_dump_proc_fops, 383 local->func->read_aux_fops ?: &prism2_aux_dump_proc_fops,
477 local); 384 local);
478 proc_create_data("bss_list", 0, local->proc, 385 proc_create_seq_data("bss_list", 0, local->proc,
479 &prism2_bss_list_proc_fops, local); 386 &prism2_bss_list_proc_seqops, local);
480 proc_create_data("crypt", 0, local->proc, 387 proc_create_single_data("crypt", 0, local->proc, prism2_crypt_proc_show,
481 &prism2_crypt_proc_fops, local); 388 local);
482#ifdef PRISM2_IO_DEBUG 389#ifdef PRISM2_IO_DEBUG
483 proc_create_data("io_debug", 0, local->proc, 390 proc_create_single_data("io_debug", 0, local->proc,
484 &prism2_io_debug_proc_fops, local); 391 prism2_debug_proc_show, local);
485#endif /* PRISM2_IO_DEBUG */ 392#endif /* PRISM2_IO_DEBUG */
486#ifndef PRISM2_NO_STATION_MODES 393#ifndef PRISM2_NO_STATION_MODES
487 proc_create_data("scan_results", 0, local->proc, 394 proc_create_seq_data("scan_results", 0, local->proc,
488 &prism2_scan_results_proc_fops, local); 395 &prism2_scan_results_proc_seqops, local);
489#endif /* PRISM2_NO_STATION_MODES */ 396#endif /* PRISM2_NO_STATION_MODES */
490} 397}
491 398