1 /******************************************************************************
2 * Copyright(c) 2008 - 2010 Realtek Corporation. All rights reserved.
4 * Based on the r8180 driver, which is:
5 * Copyright 2004-2005 Andrea Merello <andreamrl@tiscali.it>, et al.
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of version 2 of the GNU General Public License as
8 * published by the Free Software Foundation.
10 * This program is distributed in the hope that it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
15 * You should have received a copy of the GNU General Public License along with
16 * this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
19 * The full GNU General Public License is included in this distribution in the
20 * file called LICENSE.
22 * Contact Information:
23 * wlanfae <wlanfae@realtek.com>
24 ******************************************************************************/
26 #include "r8192E_phy.h"
27 #include "r8192E_phyreg.h"
28 #include "r8190P_rtl8256.h" /* RTL8225 Radio frontend */
29 #include "r8192E_cmdpkt.h"
31 /****************************************************************************
32 -----------------------------PROCFS STUFF-------------------------
33 *****************************************************************************/
34 /*This part is related to PROC, which will record some statistics. */
35 static struct proc_dir_entry *rtl8192_proc;
37 static int proc_get_stats_ap(char *page, char **start,
38 off_t offset, int count,
41 struct net_device *dev = data;
42 struct r8192_priv *priv = (struct r8192_priv *)rtllib_priv(dev);
43 struct rtllib_device *ieee = priv->rtllib;
44 struct rtllib_network *target;
47 list_for_each_entry(target, &ieee->network_list, list) {
49 len += snprintf(page + len, count - len,
52 if (target->wpa_ie_len > 0 || target->rsn_ie_len > 0)
53 len += snprintf(page + len, count - len,
56 len += snprintf(page + len, count - len,
65 static int proc_get_registers_0(char *page, char **start,
66 off_t offset, int count,
69 struct net_device *dev = data;
77 len += snprintf(page + len, count - len,
78 "\n####################page %x##################\n ",
80 len += snprintf(page + len, count - len,
81 "\nD: OF > 00 01 02 03 04 05 06 07 08 09 0A 0B "
83 for (n = 0; n <= max;) {
84 len += snprintf(page + len, count - len, "\nD: %2x > ", n);
85 for (i = 0; i < 16 && n <= max; n++, i++)
86 len += snprintf(page + len, count - len,
87 "%2.2x ", read_nic_byte(dev,
90 len += snprintf(page + len, count - len, "\n");
95 static int proc_get_registers_1(char *page, char **start,
96 off_t offset, int count,
99 struct net_device *dev = data;
107 /* This dump the current register page */
108 len += snprintf(page + len, count - len,
109 "\n####################page %x##################\n ",
111 len += snprintf(page + len, count - len,
112 "\nD: OF > 00 01 02 03 04 05 06 07 08 09 0A 0B "
114 for (n = 0; n <= max;) {
115 len += snprintf(page + len, count - len,
117 for (i = 0; i < 16 && n <= max; i++, n++)
118 len += snprintf(page + len, count - len,
119 "%2.2x ", read_nic_byte(dev,
122 len += snprintf(page + len, count - len, "\n");
127 static int proc_get_registers_2(char *page, char **start,
128 off_t offset, int count,
129 int *eof, void *data)
131 struct net_device *dev = data;
139 /* This dump the current register page */
140 len += snprintf(page + len, count - len,
141 "\n####################page %x##################\n ",
143 len += snprintf(page + len, count - len,
144 "\nD: OF > 00 01 02 03 04 05 06 07 08 09 0A 0B 0C "
146 for (n = 0; n <= max;) {
147 len += snprintf(page + len, count - len,
149 for (i = 0; i < 16 && n <= max; i++, n++)
150 len += snprintf(page + len, count - len,
151 "%2.2x ", read_nic_byte(dev,
154 len += snprintf(page + len, count - len, "\n");
159 static int proc_get_registers_3(char *page, char **start,
160 off_t offset, int count,
161 int *eof, void *data)
163 struct net_device *dev = data;
171 /* This dump the current register page */
172 len += snprintf(page + len, count - len,
173 "\n####################page %x##################\n ",
175 len += snprintf(page + len, count - len,
176 "\nD: OF > 00 01 02 03 04 05 06 07 08 09 0A 0B "
178 for (n = 0; n <= max;) {
179 len += snprintf(page + len, count - len,
181 for (i = 0; i < 16 && n <= max; i++, n++)
182 len += snprintf(page + len, count - len,
183 "%2.2x ", read_nic_byte(dev,
186 len += snprintf(page + len, count - len, "\n");
191 static int proc_get_registers_4(char *page, char **start,
192 off_t offset, int count,
193 int *eof, void *data)
195 struct net_device *dev = data;
203 /* This dump the current register page */
204 len += snprintf(page + len, count - len,
205 "\n####################page %x##################\n ",
207 len += snprintf(page + len, count - len,
208 "\nD: OF > 00 01 02 03 04 05 06 07 08 09 0A 0B "
210 for (n = 0; n <= max;) {
211 len += snprintf(page + len, count - len,
213 for (i = 0; i < 16 && n <= max; i++, n++)
214 len += snprintf(page + len, count - len,
215 "%2.2x ", read_nic_byte(dev,
218 len += snprintf(page + len, count - len, "\n");
223 static int proc_get_registers_5(char *page, char **start,
224 off_t offset, int count,
225 int *eof, void *data)
227 struct net_device *dev = data;
235 /* This dump the current register page */
236 len += snprintf(page + len, count - len,
237 "\n####################page %x##################\n ",
239 len += snprintf(page + len, count - len,
240 "\nD: OF > 00 01 02 03 04 05 06 07 08 09 0A 0B "
242 for (n = 0; n <= max;) {
243 len += snprintf(page + len, count - len,
245 for (i = 0; i < 16 && n <= max; i++, n++)
246 len += snprintf(page + len, count - len,
247 "%2.2x ", read_nic_byte(dev,
250 len += snprintf(page + len, count - len, "\n");
255 static int proc_get_registers_6(char *page, char **start,
256 off_t offset, int count,
257 int *eof, void *data)
259 struct net_device *dev = data;
267 /* This dump the current register page */
268 len += snprintf(page + len, count - len,
269 "\n####################page %x##################\n ",
271 len += snprintf(page + len, count - len,
272 "\nD: OF > 00 01 02 03 04 05 06 07 08 09 0A 0B "
274 for (n = 0; n <= max;) {
275 len += snprintf(page + len, count - len,
277 for (i = 0; i < 16 && n <= max; i++, n++)
278 len += snprintf(page + len, count - len,
279 "%2.2x ", read_nic_byte(dev,
282 len += snprintf(page + len, count - len, "\n");
287 static int proc_get_registers_7(char *page, char **start,
288 off_t offset, int count,
289 int *eof, void *data)
291 struct net_device *dev = data;
299 /* This dump the current register page */
300 len += snprintf(page + len, count - len,
301 "\n####################page %x##################\n ",
303 len += snprintf(page + len, count - len,
304 "\nD: OF > 00 01 02 03 04 05 06 07 08 09 0A 0B 0C "
306 for (n = 0; n <= max;) {
307 len += snprintf(page + len, count - len,
309 for (i = 0; i < 16 && n <= max; i++, n++)
310 len += snprintf(page + len, count - len,
311 "%2.2x ", read_nic_byte(dev,
314 len += snprintf(page + len, count - len, "\n");
319 static int proc_get_registers_8(char *page, char **start,
320 off_t offset, int count,
321 int *eof, void *data)
323 struct net_device *dev = data;
331 /* This dump the current register page */
332 len += snprintf(page + len, count - len,
333 "\n####################page %x##################\n",
335 for (n = 0; n <= max;) {
336 len += snprintf(page + len, count - len, "\nD: %2x > ", n);
337 for (i = 0; i < 4 && n <= max; n += 4, i++)
338 len += snprintf(page + len, count - len,
339 "%8.8x ", rtl8192_QueryBBReg(dev,
340 (page0 | n), bMaskDWord));
342 len += snprintf(page + len, count - len, "\n");
347 static int proc_get_registers_9(char *page, char **start,
348 off_t offset, int count,
349 int *eof, void *data)
351 struct net_device *dev = data;
359 /* This dump the current register page */
360 len += snprintf(page + len, count - len,
361 "\n####################page %x##################\n",
363 for (n = 0; n <= max;) {
364 len += snprintf(page + len, count - len, "\nD: %2x > ", n);
365 for (i = 0; i < 4 && n <= max; n += 4, i++)
366 len += snprintf(page + len, count - len,
367 "%8.8x ", rtl8192_QueryBBReg(dev,
368 (page0 | n), bMaskDWord));
370 len += snprintf(page + len, count - len, "\n");
374 static int proc_get_registers_a(char *page, char **start,
375 off_t offset, int count,
376 int *eof, void *data)
378 struct net_device *dev = data;
386 /* This dump the current register page */
387 len += snprintf(page + len, count - len,
388 "\n####################page %x##################\n",
390 for (n = 0; n <= max;) {
391 len += snprintf(page + len, count - len, "\nD: %2x > ", n);
392 for (i = 0; i < 4 && n <= max; n += 4, i++)
393 len += snprintf(page + len, count - len,
394 "%8.8x ", rtl8192_QueryBBReg(dev,
395 (page0 | n), bMaskDWord));
397 len += snprintf(page + len, count - len, "\n");
401 static int proc_get_registers_b(char *page, char **start,
402 off_t offset, int count,
403 int *eof, void *data)
405 struct net_device *dev = data;
413 /* This dump the current register page */
414 len += snprintf(page + len, count - len,
415 "\n####################page %x##################\n",
417 for (n = 0; n <= max;) {
418 len += snprintf(page + len, count - len, "\nD: %2x > ", n);
419 for (i = 0; i < 4 && n <= max; n += 4, i++)
420 len += snprintf(page + len, count - len,
421 "%8.8x ", rtl8192_QueryBBReg(dev,
422 (page0 | n), bMaskDWord));
424 len += snprintf(page + len, count - len, "\n");
428 static int proc_get_registers_c(char *page, char **start,
429 off_t offset, int count,
430 int *eof, void *data)
432 struct net_device *dev = data;
440 /* This dump the current register page */
441 len += snprintf(page + len, count - len,
442 "\n####################page %x##################\n",
444 for (n = 0; n <= max;) {
445 len += snprintf(page + len, count - len, "\nD: %2x > ", n);
446 for (i = 0; i < 4 && n <= max; n += 4, i++)
447 len += snprintf(page + len, count - len,
448 "%8.8x ", rtl8192_QueryBBReg(dev,
449 (page0 | n), bMaskDWord));
451 len += snprintf(page + len, count - len, "\n");
455 static int proc_get_registers_d(char *page, char **start,
456 off_t offset, int count,
457 int *eof, void *data)
459 struct net_device *dev = data;
467 /* This dump the current register page */
468 len += snprintf(page + len, count - len,
469 "\n####################page %x##################\n",
471 for (n = 0; n <= max;) {
472 len += snprintf(page + len, count - len, "\nD: %2x > ", n);
473 for (i = 0; i < 4 && n <= max; n += 4, i++)
474 len += snprintf(page + len, count - len,
475 "%8.8x ", rtl8192_QueryBBReg(dev,
476 (page0 | n), bMaskDWord));
478 len += snprintf(page + len, count - len, "\n");
482 static int proc_get_registers_e(char *page, char **start,
483 off_t offset, int count,
484 int *eof, void *data)
486 struct net_device *dev = data;
494 /* This dump the current register page */
495 len += snprintf(page + len, count - len,
496 "\n####################page %x##################\n",
498 for (n = 0; n <= max;) {
499 len += snprintf(page + len, count - len, "\nD: %2x > ", n);
500 for (i = 0; i < 4 && n <= max; n += 4, i++)
501 len += snprintf(page + len, count - len,
502 "%8.8x ", rtl8192_QueryBBReg(dev,
503 (page0 | n), bMaskDWord));
505 len += snprintf(page + len, count - len, "\n");
510 static int proc_get_reg_rf_a(char *page, char **start,
511 off_t offset, int count,
512 int *eof, void *data)
514 struct net_device *dev = data;
521 /* This dump the current register page */
522 len += snprintf(page + len, count - len,
523 "\n#################### RF-A ##################\n ");
524 for (n = 0; n <= max;) {
525 len += snprintf(page + len, count - len, "\nD: %2x > ", n);
526 for (i = 0; i < 4 && n <= max; n += 4, i++)
527 len += snprintf(page + len, count - len,
528 "%8.8x ", rtl8192_phy_QueryRFReg(dev,
529 (enum rf90_radio_path)RF90_PATH_A, n,
532 len += snprintf(page + len, count - len, "\n");
537 static int proc_get_reg_rf_b(char *page, char **start,
538 off_t offset, int count,
539 int *eof, void *data)
541 struct net_device *dev = data;
548 /* This dump the current register page */
549 len += snprintf(page + len, count - len,
550 "\n#################### RF-B ##################\n ");
551 for (n = 0; n <= max;) {
552 len += snprintf(page + len, count - len, "\nD: %2x > ", n);
553 for (i = 0; i < 4 && n <= max; n += 4, i++)
554 len += snprintf(page + len, count - len,
555 "%8.8x ", rtl8192_phy_QueryRFReg(dev,
556 (enum rf90_radio_path)RF90_PATH_B, n,
559 len += snprintf(page + len, count - len, "\n");
564 static int proc_get_reg_rf_c(char *page, char **start,
565 off_t offset, int count,
566 int *eof, void *data)
568 struct net_device *dev = data;
575 /* This dump the current register page */
576 len += snprintf(page + len, count - len,
577 "\n#################### RF-C ##################\n");
578 for (n = 0; n <= max;) {
579 len += snprintf(page + len, count - len, "\nD: %2x > ", n);
580 for (i = 0; i < 4 && n <= max; n += 4, i++)
581 len += snprintf(page + len, count - len,
582 "%8.8x ", rtl8192_phy_QueryRFReg(dev,
583 (enum rf90_radio_path)RF90_PATH_C, n,
586 len += snprintf(page + len, count - len, "\n");
591 static int proc_get_reg_rf_d(char *page, char **start,
592 off_t offset, int count,
593 int *eof, void *data)
595 struct net_device *dev = data;
602 /* This dump the current register page */
603 len += snprintf(page + len, count - len,
604 "\n#################### RF-D ##################\n ");
605 for (n = 0; n <= max;) {
606 len += snprintf(page + len, count - len, "\nD: %2x > ", n);
607 for (i = 0; i < 4 && n <= max; n += 4, i++)
608 len += snprintf(page + len, count - len,
609 "%8.8x ", rtl8192_phy_QueryRFReg(dev,
610 (enum rf90_radio_path)RF90_PATH_D, n,
613 len += snprintf(page + len, count - len, "\n");
618 static int proc_get_cam_register_1(char *page, char **start,
619 off_t offset, int count,
620 int *eof, void *data)
622 struct net_device *dev = data;
623 u32 target_command = 0;
624 u32 target_content = 0;
630 /* This dump the current register page */
631 len += snprintf(page + len, count - len,
632 "\n#################### SECURITY CAM (0-10) ######"
634 for (j = 0; j < 11; j++) {
635 len += snprintf(page + len, count - len, "\nD: %2x > ", j);
636 for (entry_i = 0; entry_i < CAM_CONTENT_COUNT; entry_i++) {
637 target_command = entry_i+CAM_CONTENT_COUNT*j;
638 target_command = target_command | BIT31;
641 ulStatus = read_nic_dword(dev, RWCAM);
642 if (ulStatus & BIT31)
647 write_nic_dword(dev, RWCAM, target_command);
648 target_content = read_nic_dword(dev, RCAMO);
649 len += snprintf(page + len, count - len, "%8.8x ",
654 len += snprintf(page + len, count - len, "\n");
659 static int proc_get_cam_register_2(char *page, char **start,
660 off_t offset, int count,
661 int *eof, void *data)
663 struct net_device *dev = data;
664 u32 target_command = 0;
665 u32 target_content = 0;
671 /* This dump the current register page */
672 len += snprintf(page + len, count - len,
673 "\n#################### SECURITY CAM (11-21) "
674 "##################\n ");
675 for (j = 11; j < 22; j++) {
676 len += snprintf(page + len, count - len, "\nD: %2x > ", j);
677 for (entry_i = 0; entry_i < CAM_CONTENT_COUNT; entry_i++) {
678 target_command = entry_i + CAM_CONTENT_COUNT * j;
679 target_command = target_command | BIT31;
682 ulStatus = read_nic_dword(dev, RWCAM);
683 if (ulStatus & BIT31)
688 write_nic_dword(dev, RWCAM, target_command);
689 target_content = read_nic_dword(dev, RCAMO);
690 len += snprintf(page + len, count - len, "%8.8x ",
695 len += snprintf(page + len, count - len, "\n");
700 static int proc_get_cam_register_3(char *page, char **start,
701 off_t offset, int count,
702 int *eof, void *data)
704 struct net_device *dev = data;
705 u32 target_command = 0;
706 u32 target_content = 0;
712 /* This dump the current register page */
713 len += snprintf(page + len, count - len,
714 "\n#################### SECURITY CAM (22-31) ######"
716 for (j = 22; j < TOTAL_CAM_ENTRY; j++) {
717 len += snprintf(page + len, count - len, "\nD: %2x > ", j);
718 for (entry_i = 0; entry_i < CAM_CONTENT_COUNT; entry_i++) {
719 target_command = entry_i + CAM_CONTENT_COUNT * j;
720 target_command = target_command | BIT31;
723 ulStatus = read_nic_dword(dev, RWCAM);
724 if (ulStatus & BIT31)
729 write_nic_dword(dev, RWCAM, target_command);
730 target_content = read_nic_dword(dev, RCAMO);
731 len += snprintf(page + len, count - len, "%8.8x ",
736 len += snprintf(page + len, count - len, "\n");
740 static int proc_get_stats_tx(char *page, char **start,
741 off_t offset, int count,
742 int *eof, void *data)
744 struct net_device *dev = data;
745 struct r8192_priv *priv = (struct r8192_priv *)rtllib_priv(dev);
749 len += snprintf(page + len, count - len,
750 "TX VI priority ok int: %lu\n"
751 "TX VO priority ok int: %lu\n"
752 "TX BE priority ok int: %lu\n"
753 "TX BK priority ok int: %lu\n"
754 "TX MANAGE priority ok int: %lu\n"
755 "TX BEACON priority ok int: %lu\n"
756 "TX BEACON priority error int: %lu\n"
757 "TX CMDPKT priority ok int: %lu\n"
758 "TX queue stopped?: %d\n"
759 "TX fifo overflow: %lu\n"
760 "TX total data packets %lu\n"
761 "TX total data bytes :%lu\n",
762 priv->stats.txviokint,
763 priv->stats.txvookint,
764 priv->stats.txbeokint,
765 priv->stats.txbkokint,
766 priv->stats.txmanageokint,
767 priv->stats.txbeaconokint,
768 priv->stats.txbeaconerr,
769 priv->stats.txcmdpktokint,
770 netif_queue_stopped(dev),
771 priv->stats.txoverflow,
772 priv->rtllib->stats.tx_packets,
773 priv->rtllib->stats.tx_bytes
784 static int proc_get_stats_rx(char *page, char **start,
785 off_t offset, int count,
786 int *eof, void *data)
788 struct net_device *dev = data;
789 struct r8192_priv *priv = (struct r8192_priv *)rtllib_priv(dev);
793 len += snprintf(page + len, count - len,
795 "RX data crc err: %lu\n"
796 "RX mgmt crc err: %lu\n"
798 "RX rx overflow error: %lu\n",
800 priv->stats.rxdatacrcerr,
801 priv->stats.rxmgmtcrcerr,
803 priv->stats.rxoverflow);
809 void rtl8192_proc_module_init(void)
811 RT_TRACE(COMP_INIT, "Initializing proc filesystem");
812 rtl8192_proc = create_proc_entry(DRV_NAME, S_IFDIR, init_net.proc_net);
816 void rtl8192_proc_module_remove(void)
818 remove_proc_entry(DRV_NAME, init_net.proc_net);
822 void rtl8192_proc_remove_one(struct net_device *dev)
824 struct r8192_priv *priv = (struct r8192_priv *)rtllib_priv(dev);
826 printk(KERN_INFO "dev name %s\n", dev->name);
829 remove_proc_entry("stats-tx", priv->dir_dev);
830 remove_proc_entry("stats-rx", priv->dir_dev);
831 remove_proc_entry("stats-ap", priv->dir_dev);
832 remove_proc_entry("registers-0", priv->dir_dev);
833 remove_proc_entry("registers-1", priv->dir_dev);
834 remove_proc_entry("registers-2", priv->dir_dev);
835 remove_proc_entry("registers-3", priv->dir_dev);
836 remove_proc_entry("registers-4", priv->dir_dev);
837 remove_proc_entry("registers-5", priv->dir_dev);
838 remove_proc_entry("registers-6", priv->dir_dev);
839 remove_proc_entry("registers-7", priv->dir_dev);
840 remove_proc_entry("registers-8", priv->dir_dev);
841 remove_proc_entry("registers-9", priv->dir_dev);
842 remove_proc_entry("registers-a", priv->dir_dev);
843 remove_proc_entry("registers-b", priv->dir_dev);
844 remove_proc_entry("registers-c", priv->dir_dev);
845 remove_proc_entry("registers-d", priv->dir_dev);
846 remove_proc_entry("registers-e", priv->dir_dev);
847 remove_proc_entry("RF-A", priv->dir_dev);
848 remove_proc_entry("RF-B", priv->dir_dev);
849 remove_proc_entry("RF-C", priv->dir_dev);
850 remove_proc_entry("RF-D", priv->dir_dev);
851 remove_proc_entry("SEC-CAM-1", priv->dir_dev);
852 remove_proc_entry("SEC-CAM-2", priv->dir_dev);
853 remove_proc_entry("SEC-CAM-3", priv->dir_dev);
854 remove_proc_entry("wlan0", rtl8192_proc);
855 priv->dir_dev = NULL;
860 void rtl8192_proc_init_one(struct net_device *dev)
862 struct proc_dir_entry *e;
863 struct r8192_priv *priv = (struct r8192_priv *)rtllib_priv(dev);
865 priv->dir_dev = create_proc_entry(dev->name,
866 S_IFDIR | S_IRUGO | S_IXUGO,
868 if (!priv->dir_dev) {
869 RT_TRACE(COMP_ERR, "Unable to initialize /proc/net/rtl8192"
873 e = create_proc_read_entry("stats-rx", S_IFREG | S_IRUGO,
874 priv->dir_dev, proc_get_stats_rx, dev);
877 RT_TRACE(COMP_ERR, "Unable to initialize "
878 "/proc/net/rtl8192/%s/stats-rx\n",
881 e = create_proc_read_entry("stats-tx", S_IFREG | S_IRUGO,
882 priv->dir_dev, proc_get_stats_tx, dev);
885 RT_TRACE(COMP_ERR, "Unable to initialize "
886 "/proc/net/rtl8192/%s/stats-tx\n",
889 e = create_proc_read_entry("stats-ap", S_IFREG | S_IRUGO,
890 priv->dir_dev, proc_get_stats_ap, dev);
893 RT_TRACE(COMP_ERR, "Unable to initialize "
894 "/proc/net/rtl8192/%s/stats-ap\n",
897 e = create_proc_read_entry("registers-0", S_IFREG | S_IRUGO,
898 priv->dir_dev, proc_get_registers_0, dev);
900 RT_TRACE(COMP_ERR, "Unable to initialize "
901 "/proc/net/rtl8192/%s/registers-0\n",
903 e = create_proc_read_entry("registers-1", S_IFREG | S_IRUGO,
904 priv->dir_dev, proc_get_registers_1, dev);
906 RT_TRACE(COMP_ERR, "Unable to initialize "
907 "/proc/net/rtl8192/%s/registers-1\n",
909 e = create_proc_read_entry("registers-2", S_IFREG | S_IRUGO,
910 priv->dir_dev, proc_get_registers_2, dev);
912 RT_TRACE(COMP_ERR, "Unable to initialize "
913 "/proc/net/rtl8192/%s/registers-2\n",
915 e = create_proc_read_entry("registers-3", S_IFREG | S_IRUGO,
916 priv->dir_dev, proc_get_registers_3, dev);
918 RT_TRACE(COMP_ERR, "Unable to initialize "
919 "/proc/net/rtl8192/%s/registers-3\n",
921 e = create_proc_read_entry("registers-4", S_IFREG | S_IRUGO,
922 priv->dir_dev, proc_get_registers_4, dev);
924 RT_TRACE(COMP_ERR, "Unable to initialize "
925 "/proc/net/rtl8192/%s/registers-4\n",
927 e = create_proc_read_entry("registers-5", S_IFREG | S_IRUGO,
928 priv->dir_dev, proc_get_registers_5, dev);
930 RT_TRACE(COMP_ERR, "Unable to initialize "
931 "/proc/net/rtl8192/%s/registers-5\n",
933 e = create_proc_read_entry("registers-6", S_IFREG | S_IRUGO,
934 priv->dir_dev, proc_get_registers_6, dev);
936 RT_TRACE(COMP_ERR, "Unable to initialize "
937 "/proc/net/rtl8192/%s/registers-6\n",
939 e = create_proc_read_entry("registers-7", S_IFREG | S_IRUGO,
940 priv->dir_dev, proc_get_registers_7, dev);
942 RT_TRACE(COMP_ERR, "Unable to initialize "
943 "/proc/net/rtl8192/%s/registers-7\n",
945 e = create_proc_read_entry("registers-8", S_IFREG | S_IRUGO,
946 priv->dir_dev, proc_get_registers_8, dev);
948 RT_TRACE(COMP_ERR, "Unable to initialize "
949 "/proc/net/rtl8192/%s/registers-8\n",
951 e = create_proc_read_entry("registers-9", S_IFREG | S_IRUGO,
952 priv->dir_dev, proc_get_registers_9, dev);
954 RT_TRACE(COMP_ERR, "Unable to initialize "
955 "/proc/net/rtl8192/%s/registers-9\n",
957 e = create_proc_read_entry("registers-a", S_IFREG | S_IRUGO,
958 priv->dir_dev, proc_get_registers_a, dev);
960 RT_TRACE(COMP_ERR, "Unable to initialize "
961 "/proc/net/rtl8192/%s/registers-a\n",
963 e = create_proc_read_entry("registers-b", S_IFREG | S_IRUGO,
964 priv->dir_dev, proc_get_registers_b, dev);
966 RT_TRACE(COMP_ERR, "Unable to initialize "
967 "/proc/net/rtl8192/%s/registers-b\n",
969 e = create_proc_read_entry("registers-c", S_IFREG | S_IRUGO,
970 priv->dir_dev, proc_get_registers_c, dev);
972 RT_TRACE(COMP_ERR, "Unable to initialize "
973 "/proc/net/rtl8192/%s/registers-c\n",
975 e = create_proc_read_entry("registers-d", S_IFREG | S_IRUGO,
976 priv->dir_dev, proc_get_registers_d, dev);
978 RT_TRACE(COMP_ERR, "Unable to initialize "
979 "/proc/net/rtl8192/%s/registers-d\n",
981 e = create_proc_read_entry("registers-e", S_IFREG | S_IRUGO,
982 priv->dir_dev, proc_get_registers_e, dev);
984 RT_TRACE(COMP_ERR, "Unable to initialize "
985 "/proc/net/rtl8192/%s/registers-e\n",
987 e = create_proc_read_entry("RF-A", S_IFREG | S_IRUGO,
988 priv->dir_dev, proc_get_reg_rf_a, dev);
990 RT_TRACE(COMP_ERR, "Unable to initialize "
991 "/proc/net/rtl8192/%s/RF-A\n",
993 e = create_proc_read_entry("RF-B", S_IFREG | S_IRUGO,
994 priv->dir_dev, proc_get_reg_rf_b, dev);
996 RT_TRACE(COMP_ERR, "Unable to initialize "
997 "/proc/net/rtl8192/%s/RF-B\n",
999 e = create_proc_read_entry("RF-C", S_IFREG | S_IRUGO,
1000 priv->dir_dev, proc_get_reg_rf_c, dev);
1002 RT_TRACE(COMP_ERR, "Unable to initialize "
1003 "/proc/net/rtl8192/%s/RF-C\n",
1005 e = create_proc_read_entry("RF-D", S_IFREG | S_IRUGO,
1006 priv->dir_dev, proc_get_reg_rf_d, dev);
1008 RT_TRACE(COMP_ERR, "Unable to initialize "
1009 "/proc/net/rtl8192/%s/RF-D\n",
1011 e = create_proc_read_entry("SEC-CAM-1", S_IFREG | S_IRUGO,
1012 priv->dir_dev, proc_get_cam_register_1, dev);
1014 RT_TRACE(COMP_ERR, "Unable to initialize "
1015 "/proc/net/rtl8192/%s/SEC-CAM-1\n",
1017 e = create_proc_read_entry("SEC-CAM-2", S_IFREG | S_IRUGO,
1018 priv->dir_dev, proc_get_cam_register_2, dev);
1020 RT_TRACE(COMP_ERR, "Unable to initialize "
1021 "/proc/net/rtl8192/%s/SEC-CAM-2\n",
1023 e = create_proc_read_entry("SEC-CAM-3", S_IFREG | S_IRUGO,
1024 priv->dir_dev, proc_get_cam_register_3, dev);
1026 RT_TRACE(COMP_ERR, "Unable to initialize "
1027 "/proc/net/rtl8192/%s/SEC-CAM-3\n",