1812ba9659b8d0f9b1f3648adf9017211dec3627
1 /******************************************************************************
3 * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of version 2 of the GNU General Public License as
7 * published by the Free Software Foundation.
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14 * You should have received a copy of the GNU General Public License along with
15 * this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
19 ******************************************************************************/
22 #include <rtw_debug.h>
23 #include <rtw_version.h>
25 int proc_get_drv_version(char *page
, char **start
,
26 off_t offset
, int count
,
31 len
+= snprintf(page
+ len
, count
- len
, "%s\n", DRIVERVERSION
);
37 int proc_get_write_reg(char *page
, char **start
,
38 off_t offset
, int count
,
45 int proc_set_write_reg(struct file
*file
, const char __user
*buffer
,
46 unsigned long count
, void *data
)
48 struct net_device
*dev
= (struct net_device
*)data
;
49 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
54 DBG_88E("argument size is less than 3\n");
58 if (buffer
&& !copy_from_user(tmp
, buffer
, sizeof(tmp
))) {
59 int num
= sscanf(tmp
, "%x %x %x", &addr
, &val
, &len
);
62 DBG_88E("invalid write_reg parameter!\n");
67 rtw_write8(padapter
, addr
, (u8
)val
);
70 rtw_write16(padapter
, addr
, (u16
)val
);
73 rtw_write32(padapter
, addr
, val
);
76 DBG_88E("error write length =%d", len
);
83 static u32 proc_get_read_addr
= 0xeeeeeeee;
84 static u32 proc_get_read_len
= 0x4;
86 int proc_get_read_reg(char *page
, char **start
,
87 off_t offset
, int count
,
90 struct net_device
*dev
= data
;
91 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
95 if (proc_get_read_addr
== 0xeeeeeeee) {
100 switch (proc_get_read_len
) {
102 len
+= snprintf(page
+ len
, count
- len
, "rtw_read8(0x%x)=0x%x\n", proc_get_read_addr
, rtw_read8(padapter
, proc_get_read_addr
));
105 len
+= snprintf(page
+ len
, count
- len
, "rtw_read16(0x%x)=0x%x\n", proc_get_read_addr
, rtw_read16(padapter
, proc_get_read_addr
));
108 len
+= snprintf(page
+ len
, count
- len
, "rtw_read32(0x%x)=0x%x\n", proc_get_read_addr
, rtw_read32(padapter
, proc_get_read_addr
));
111 len
+= snprintf(page
+ len
, count
- len
, "error read length=%d\n", proc_get_read_len
);
119 int proc_set_read_reg(struct file
*file
, const char __user
*buffer
,
120 unsigned long count
, void *data
)
126 DBG_88E("argument size is less than 2\n");
130 if (buffer
&& !copy_from_user(tmp
, buffer
, sizeof(tmp
))) {
131 int num
= sscanf(tmp
, "%x %x", &addr
, &len
);
134 DBG_88E("invalid read_reg parameter!\n");
138 proc_get_read_addr
= addr
;
140 proc_get_read_len
= len
;
146 int proc_get_fwstate(char *page
, char **start
,
147 off_t offset
, int count
,
148 int *eof
, void *data
)
150 struct net_device
*dev
= data
;
151 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
152 struct mlme_priv
*pmlmepriv
= &(padapter
->mlmepriv
);
156 len
+= snprintf(page
+ len
, count
- len
, "fwstate=0x%x\n", get_fwstate(pmlmepriv
));
162 int proc_get_sec_info(char *page
, char **start
,
163 off_t offset
, int count
,
164 int *eof
, void *data
)
166 struct net_device
*dev
= data
;
167 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
168 struct security_priv
*psecuritypriv
= &padapter
->securitypriv
;
172 len
+= snprintf(page
+ len
, count
- len
, "auth_alg=0x%x, enc_alg=0x%x, auth_type=0x%x, enc_type=0x%x\n",
173 psecuritypriv
->dot11AuthAlgrthm
, psecuritypriv
->dot11PrivacyAlgrthm
,
174 psecuritypriv
->ndisauthtype
, psecuritypriv
->ndisencryptstatus
);
180 int proc_get_mlmext_state(char *page
, char **start
,
181 off_t offset
, int count
,
182 int *eof
, void *data
)
184 struct net_device
*dev
= data
;
185 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
186 struct mlme_ext_priv
*pmlmeext
= &padapter
->mlmeextpriv
;
187 struct mlme_ext_info
*pmlmeinfo
= &(pmlmeext
->mlmext_info
);
191 len
+= snprintf(page
+ len
, count
- len
, "pmlmeinfo->state=0x%x\n", pmlmeinfo
->state
);
197 int proc_get_qos_option(char *page
, char **start
,
198 off_t offset
, int count
,
199 int *eof
, void *data
)
201 struct net_device
*dev
= data
;
202 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
203 struct mlme_priv
*pmlmepriv
= &(padapter
->mlmepriv
);
207 len
+= snprintf(page
+ len
, count
- len
, "qos_option=%d\n", pmlmepriv
->qospriv
.qos_option
);
213 int proc_get_ht_option(char *page
, char **start
,
214 off_t offset
, int count
,
215 int *eof
, void *data
)
217 struct net_device
*dev
= data
;
218 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
219 struct mlme_priv
*pmlmepriv
= &(padapter
->mlmepriv
);
222 len
+= snprintf(page
+ len
, count
- len
, "ht_option=%d\n", pmlmepriv
->htpriv
.ht_option
);
227 int proc_get_rf_info(char *page
, char **start
,
228 off_t offset
, int count
,
229 int *eof
, void *data
)
231 struct net_device
*dev
= data
;
232 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
233 struct mlme_ext_priv
*pmlmeext
= &padapter
->mlmeextpriv
;
236 len
+= snprintf(page
+ len
, count
- len
, "cur_ch=%d, cur_bw=%d, cur_ch_offet=%d\n",
237 pmlmeext
->cur_channel
, pmlmeext
->cur_bwmode
, pmlmeext
->cur_ch_offset
);
242 int proc_get_ap_info(char *page
, char **start
,
243 off_t offset
, int count
,
244 int *eof
, void *data
)
246 struct sta_info
*psta
;
247 struct net_device
*dev
= data
;
248 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
249 struct mlme_priv
*pmlmepriv
= &(padapter
->mlmepriv
);
250 struct mlme_ext_priv
*pmlmeext
= &padapter
->mlmeextpriv
;
251 struct wlan_network
*cur_network
= &(pmlmepriv
->cur_network
);
252 struct sta_priv
*pstapriv
= &padapter
->stapriv
;
255 psta
= rtw_get_stainfo(pstapriv
, cur_network
->network
.MacAddress
);
258 struct recv_reorder_ctrl
*preorder_ctrl
;
260 len
+= snprintf(page
+ len
, count
- len
, "SSID=%s\n", cur_network
->network
.Ssid
.Ssid
);
261 len
+= snprintf(page
+ len
, count
- len
, "sta's macaddr:%pM\n", psta
->hwaddr
);
262 len
+= snprintf(page
+ len
, count
- len
, "cur_channel=%d, cur_bwmode=%d, cur_ch_offset=%d\n", pmlmeext
->cur_channel
, pmlmeext
->cur_bwmode
, pmlmeext
->cur_ch_offset
);
263 len
+= snprintf(page
+ len
, count
- len
, "rtsen=%d, cts2slef=%d\n", psta
->rtsen
, psta
->cts2self
);
264 len
+= snprintf(page
+ len
, count
- len
, "state=0x%x, aid=%d, macid=%d, raid=%d\n", psta
->state
, psta
->aid
, psta
->mac_id
, psta
->raid
);
265 len
+= snprintf(page
+ len
, count
- len
, "qos_en=%d, ht_en=%d, init_rate=%d\n", psta
->qos_option
, psta
->htpriv
.ht_option
, psta
->init_rate
);
266 len
+= snprintf(page
+ len
, count
- len
, "bwmode=%d, ch_offset=%d, sgi=%d\n", psta
->htpriv
.bwmode
, psta
->htpriv
.ch_offset
, psta
->htpriv
.sgi
);
267 len
+= snprintf(page
+ len
, count
- len
, "ampdu_enable = %d\n", psta
->htpriv
.ampdu_enable
);
268 len
+= snprintf(page
+ len
, count
- len
, "agg_enable_bitmap=%x, candidate_tid_bitmap=%x\n", psta
->htpriv
.agg_enable_bitmap
, psta
->htpriv
.candidate_tid_bitmap
);
270 for (i
= 0; i
< 16; i
++) {
271 preorder_ctrl
= &psta
->recvreorder_ctrl
[i
];
272 if (preorder_ctrl
->enable
)
273 len
+= snprintf(page
+ len
, count
- len
, "tid=%d, indicate_seq=%d\n", i
, preorder_ctrl
->indicate_seq
);
276 len
+= snprintf(page
+ len
, count
- len
, "can't get sta's macaddr, cur_network's macaddr: %pM\n", cur_network
->network
.MacAddress
);
283 int proc_get_adapter_state(char *page
, char **start
,
284 off_t offset
, int count
,
285 int *eof
, void *data
)
287 struct net_device
*dev
= data
;
288 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
291 len
+= snprintf(page
+ len
, count
- len
, "bSurpriseRemoved=%d, bDriverStopped=%d\n",
292 padapter
->bSurpriseRemoved
, padapter
->bDriverStopped
);
298 int proc_get_trx_info(char *page
, char **start
,
299 off_t offset
, int count
,
300 int *eof
, void *data
)
302 struct net_device
*dev
= data
;
303 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
304 struct xmit_priv
*pxmitpriv
= &padapter
->xmitpriv
;
305 struct recv_priv
*precvpriv
= &padapter
->recvpriv
;
308 len
+= snprintf(page
+ len
, count
- len
, "free_xmitbuf_cnt=%d, free_xmitframe_cnt=%d, free_ext_xmitbuf_cnt=%d, free_recvframe_cnt=%d\n",
309 pxmitpriv
->free_xmitbuf_cnt
, pxmitpriv
->free_xmitframe_cnt
, pxmitpriv
->free_xmit_extbuf_cnt
, precvpriv
->free_recvframe_cnt
);
310 len
+= snprintf(page
+ len
, count
- len
, "rx_urb_pending_cn=%d\n", precvpriv
->rx_pending_cnt
);
316 int proc_get_mac_reg_dump1(char *page
, char **start
,
317 off_t offset
, int count
,
318 int *eof
, void *data
)
320 struct net_device
*dev
= data
;
321 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
325 len
+= snprintf(page
+ len
, count
- len
, "\n======= MAC REG =======\n");
327 for (i
= 0x0; i
< 0x300; i
+= 4) {
329 len
+= snprintf(page
+ len
, count
- len
, "0x%02x", i
);
330 len
+= snprintf(page
+ len
, count
- len
, " 0x%08x ", rtw_read32(padapter
, i
));
332 len
+= snprintf(page
+ len
, count
- len
, "\n");
339 int proc_get_mac_reg_dump2(char *page
, char **start
,
340 off_t offset
, int count
,
341 int *eof
, void *data
)
343 struct net_device
*dev
= data
;
344 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
348 len
+= snprintf(page
+ len
, count
- len
, "\n======= MAC REG =======\n");
349 memset(page
, 0, count
);
350 for (i
= 0x300; i
< 0x600; i
+= 4) {
352 len
+= snprintf(page
+ len
, count
- len
, "0x%02x", i
);
353 len
+= snprintf(page
+ len
, count
- len
, " 0x%08x ", rtw_read32(padapter
, i
));
355 len
+= snprintf(page
+ len
, count
- len
, "\n");
362 int proc_get_mac_reg_dump3(char *page
, char **start
,
363 off_t offset
, int count
,
364 int *eof
, void *data
)
366 struct net_device
*dev
= data
;
367 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
371 len
+= snprintf(page
+ len
, count
- len
, "\n======= MAC REG =======\n");
373 for (i
= 0x600; i
< 0x800; i
+= 4) {
375 len
+= snprintf(page
+ len
, count
- len
, "0x%02x", i
);
376 len
+= snprintf(page
+ len
, count
- len
, " 0x%08x ", rtw_read32(padapter
, i
));
378 len
+= snprintf(page
+ len
, count
- len
, "\n");
385 int proc_get_bb_reg_dump1(char *page
, char **start
,
386 off_t offset
, int count
,
387 int *eof
, void *data
)
389 struct net_device
*dev
= data
;
390 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
394 len
+= snprintf(page
+ len
, count
- len
, "\n======= BB REG =======\n");
395 for (i
= 0x800; i
< 0xB00; i
+= 4) {
397 len
+= snprintf(page
+ len
, count
- len
, "0x%02x", i
);
398 len
+= snprintf(page
+ len
, count
- len
, " 0x%08x ", rtw_read32(padapter
, i
));
400 len
+= snprintf(page
+ len
, count
- len
, "\n");
406 int proc_get_bb_reg_dump2(char *page
, char **start
,
407 off_t offset
, int count
,
408 int *eof
, void *data
)
410 struct net_device
*dev
= data
;
411 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
415 len
+= snprintf(page
+ len
, count
- len
, "\n======= BB REG =======\n");
416 for (i
= 0xB00; i
< 0xE00; i
+= 4) {
418 len
+= snprintf(page
+ len
, count
- len
, "0x%02x", i
);
419 len
+= snprintf(page
+ len
, count
- len
, " 0x%08x ", rtw_read32(padapter
, i
));
421 len
+= snprintf(page
+ len
, count
- len
, "\n");
427 int proc_get_bb_reg_dump3(char *page
, char **start
,
428 off_t offset
, int count
,
429 int *eof
, void *data
)
431 struct net_device
*dev
= data
;
432 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
436 len
+= snprintf(page
+ len
, count
- len
, "\n======= BB REG =======\n");
437 for (i
= 0xE00; i
< 0x1000; i
+= 4) {
439 len
+= snprintf(page
+ len
, count
- len
, "0x%02x", i
);
440 len
+= snprintf(page
+ len
, count
- len
, " 0x%08x ", rtw_read32(padapter
, i
));
442 len
+= snprintf(page
+ len
, count
- len
, "\n");
448 int proc_get_rf_reg_dump1(char *page
, char **start
,
449 off_t offset
, int count
,
450 int *eof
, void *data
)
452 struct net_device
*dev
= data
;
453 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
458 len
+= snprintf(page
+ len
, count
- len
, "\n======= RF REG =======\n");
460 len
+= snprintf(page
+ len
, count
- len
, "\nRF_Path(%x)\n", path
);
461 for (i
= 0; i
< 0xC0; i
++) {
462 value
= rtw_hal_read_rfreg(padapter
, path
, i
, 0xffffffff);
464 len
+= snprintf(page
+ len
, count
- len
, "0x%02x ", i
);
465 len
+= snprintf(page
+ len
, count
- len
, " 0x%08x ", value
);
467 len
+= snprintf(page
+ len
, count
- len
, "\n");
473 int proc_get_rf_reg_dump2(char *page
, char **start
,
474 off_t offset
, int count
,
475 int *eof
, void *data
)
477 struct net_device
*dev
= data
;
478 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
483 len
+= snprintf(page
+ len
, count
- len
, "\n======= RF REG =======\n");
485 len
+= snprintf(page
+ len
, count
- len
, "\nRF_Path(%x)\n", path
);
486 for (i
= 0xC0; i
< 0x100; i
++) {
487 value
= rtw_hal_read_rfreg(padapter
, path
, i
, 0xffffffff);
489 len
+= snprintf(page
+ len
, count
- len
, "0x%02x ", i
);
490 len
+= snprintf(page
+ len
, count
- len
, " 0x%08x ", value
);
492 len
+= snprintf(page
+ len
, count
- len
, "\n");
498 int proc_get_rf_reg_dump3(char *page
, char **start
,
499 off_t offset
, int count
,
500 int *eof
, void *data
)
502 struct net_device
*dev
= data
;
503 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
508 len
+= snprintf(page
+ len
, count
- len
, "\n======= RF REG =======\n");
510 len
+= snprintf(page
+ len
, count
- len
, "\nRF_Path(%x)\n", path
);
511 for (i
= 0; i
< 0xC0; i
++) {
512 value
= rtw_hal_read_rfreg(padapter
, path
, i
, 0xffffffff);
514 len
+= snprintf(page
+ len
, count
- len
, "0x%02x ", i
);
515 len
+= snprintf(page
+ len
, count
- len
, " 0x%08x ", value
);
517 len
+= snprintf(page
+ len
, count
- len
, "\n");
525 int proc_get_rf_reg_dump4(char *page
, char **start
,
526 off_t offset
, int count
,
527 int *eof
, void *data
)
529 struct net_device
*dev
= data
;
530 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
535 len
+= snprintf(page
+ len
, count
- len
, "\n======= RF REG =======\n");
537 len
+= snprintf(page
+ len
, count
- len
, "\nRF_Path(%x)\n", path
);
538 for (i
= 0xC0; i
< 0x100; i
++) {
539 value
= rtw_hal_read_rfreg(padapter
, path
, i
, 0xffffffff);
541 len
+= snprintf(page
+ len
, count
- len
, "0x%02x ", i
);
542 len
+= snprintf(page
+ len
, count
- len
, " 0x%08x ", value
);
544 len
+= snprintf(page
+ len
, count
- len
, "\n");
552 int proc_get_rx_signal(char *page
, char **start
,
553 off_t offset
, int count
,
554 int *eof
, void *data
)
556 struct net_device
*dev
= data
;
557 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
560 len
= snprintf(page
+ len
, count
,
563 "signal_strength:%u\n"
566 padapter
->recvpriv
.rssi
,
567 padapter
->recvpriv
.rxpwdb
,
568 padapter
->recvpriv
.signal_strength
,
569 padapter
->recvpriv
.signal_qual
,
570 padapter
->recvpriv
.noise
577 int proc_set_rx_signal(struct file
*file
, const char __user
*buffer
,
578 unsigned long count
, void *data
)
580 struct net_device
*dev
= (struct net_device
*)data
;
581 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
589 if (buffer
&& !copy_from_user(tmp
, buffer
, sizeof(tmp
))) {
590 int num
= sscanf(tmp
, "%u %u", &is_signal_dbg
, &signal_strength
);
591 is_signal_dbg
= is_signal_dbg
== 0 ? 0 : 1;
592 if (is_signal_dbg
&& num
!= 2)
595 signal_strength
= signal_strength
> 100 ? 100 : signal_strength
;
596 signal_strength
= signal_strength
< 0 ? 0 : signal_strength
;
598 padapter
->recvpriv
.is_signal_dbg
= is_signal_dbg
;
599 padapter
->recvpriv
.signal_strength_dbg
= signal_strength
;
602 DBG_88E("set %s %u\n", "DBG_SIGNAL_STRENGTH", signal_strength
);
604 DBG_88E("set %s\n", "HW_SIGNAL_STRENGTH");
609 int proc_get_ht_enable(char *page
, char **start
,
610 off_t offset
, int count
,
611 int *eof
, void *data
)
613 struct net_device
*dev
= data
;
614 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
615 struct registry_priv
*pregpriv
= &padapter
->registrypriv
;
619 len
+= snprintf(page
+ len
, count
- len
,
627 int proc_set_ht_enable(struct file
*file
, const char __user
*buffer
,
628 unsigned long count
, void *data
)
630 struct net_device
*dev
= (struct net_device
*)data
;
631 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
632 struct registry_priv
*pregpriv
= &padapter
->registrypriv
;
639 if (buffer
&& !copy_from_user(tmp
, buffer
, sizeof(tmp
))) {
641 pregpriv
->ht_enable
= mode
;
642 pr_info("ht_enable=%d\n", pregpriv
->ht_enable
);
649 int proc_get_cbw40_enable(char *page
, char **start
,
650 off_t offset
, int count
,
651 int *eof
, void *data
)
653 struct net_device
*dev
= data
;
654 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
655 struct registry_priv
*pregpriv
= &padapter
->registrypriv
;
660 len
+= snprintf(page
+ len
, count
- len
,
662 pregpriv
->cbw40_enable
669 int proc_set_cbw40_enable(struct file
*file
, const char __user
*buffer
,
670 unsigned long count
, void *data
)
672 struct net_device
*dev
= (struct net_device
*)data
;
673 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
674 struct registry_priv
*pregpriv
= &padapter
->registrypriv
;
681 if (buffer
&& !copy_from_user(tmp
, buffer
, sizeof(tmp
))) {
683 pregpriv
->cbw40_enable
= mode
;
684 pr_info("cbw40_enable=%d\n", mode
);
690 int proc_get_ampdu_enable(char *page
, char **start
,
691 off_t offset
, int count
,
692 int *eof
, void *data
)
694 struct net_device
*dev
= data
;
695 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
696 struct registry_priv
*pregpriv
= &padapter
->registrypriv
;
701 len
+= snprintf(page
+ len
, count
- len
,
703 pregpriv
->ampdu_enable
710 int proc_set_ampdu_enable(struct file
*file
, const char __user
*buffer
,
711 unsigned long count
, void *data
)
713 struct net_device
*dev
= (struct net_device
*)data
;
714 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
715 struct registry_priv
*pregpriv
= &padapter
->registrypriv
;
722 if (buffer
&& !copy_from_user(tmp
, buffer
, sizeof(tmp
))) {
724 pregpriv
->ampdu_enable
= mode
;
725 pr_info("ampdu_enable=%d\n", mode
);
731 int proc_get_two_path_rssi(char *page
, char **start
,
732 off_t offset
, int count
,
733 int *eof
, void *data
)
735 struct net_device
*dev
= data
;
736 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
741 len
+= snprintf(page
+ len
, count
- len
,
743 padapter
->recvpriv
.RxRssi
[0],
744 padapter
->recvpriv
.RxRssi
[1]
751 int proc_get_rx_stbc(char *page
, char **start
,
752 off_t offset
, int count
,
753 int *eof
, void *data
)
755 struct net_device
*dev
= data
;
756 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
757 struct registry_priv
*pregpriv
= &padapter
->registrypriv
;
762 len
+= snprintf(page
+ len
, count
- len
,
771 int proc_set_rx_stbc(struct file
*file
, const char __user
*buffer
,
772 unsigned long count
, void *data
)
774 struct net_device
*dev
= (struct net_device
*)data
;
775 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
776 struct registry_priv
*pregpriv
= &padapter
->registrypriv
;
783 if (buffer
&& !copy_from_user(tmp
, buffer
, sizeof(tmp
))) {
785 pregpriv
->rx_stbc
= mode
;
786 printk("rx_stbc=%d\n", mode
);
792 int proc_get_rssi_disp(char *page
, char **start
,
793 off_t offset
, int count
,
794 int *eof
, void *data
)
800 int proc_set_rssi_disp(struct file
*file
, const char __user
*buffer
,
801 unsigned long count
, void *data
)
803 struct net_device
*dev
= (struct net_device
*)data
;
804 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
809 DBG_88E("argument size is less than 1\n");
813 if (buffer
&& !copy_from_user(tmp
, buffer
, sizeof(tmp
))) {
814 int num
= sscanf(tmp
, "%x", &enable
);
817 DBG_88E("invalid set_rssi_disp parameter!\n");
822 DBG_88E("Turn On Rx RSSI Display Function\n");
823 padapter
->bRxRSSIDisplay
= enable
;
825 DBG_88E("Turn Off Rx RSSI Display Function\n");
826 padapter
->bRxRSSIDisplay
= 0;
832 #ifdef CONFIG_88EU_AP_MODE
834 int proc_get_all_sta_info(char *page
, char **start
,
835 off_t offset
, int count
,
836 int *eof
, void *data
)
838 struct sta_info
*psta
;
839 struct net_device
*dev
= data
;
840 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
841 struct sta_priv
*pstapriv
= &padapter
->stapriv
;
843 struct list_head
*plist
, *phead
;
844 struct recv_reorder_ctrl
*preorder_ctrl
;
848 len
+= snprintf(page
+ len
, count
- len
, "sta_dz_bitmap=0x%x, tim_bitmap=0x%x\n", pstapriv
->sta_dz_bitmap
, pstapriv
->tim_bitmap
);
850 spin_lock_bh(&pstapriv
->sta_hash_lock
);
852 for (i
= 0; i
< NUM_STA
; i
++) {
853 phead
= &(pstapriv
->sta_hash
[i
]);
856 while ((rtw_end_of_queue_search(phead
, plist
)) == false) {
857 psta
= container_of(plist
, struct sta_info
, hash_list
);
861 len
+= snprintf(page
+ len
, count
- len
, "sta's macaddr: %pM\n", psta
->hwaddr
);
862 len
+= snprintf(page
+ len
, count
- len
, "rtsen=%d, cts2slef=%d\n", psta
->rtsen
, psta
->cts2self
);
863 len
+= snprintf(page
+ len
, count
- len
, "state=0x%x, aid=%d, macid=%d, raid=%d\n", psta
->state
, psta
->aid
, psta
->mac_id
, psta
->raid
);
864 len
+= snprintf(page
+ len
, count
- len
, "qos_en=%d, ht_en=%d, init_rate=%d\n", psta
->qos_option
, psta
->htpriv
.ht_option
, psta
->init_rate
);
865 len
+= snprintf(page
+ len
, count
- len
, "bwmode=%d, ch_offset=%d, sgi=%d\n", psta
->htpriv
.bwmode
, psta
->htpriv
.ch_offset
, psta
->htpriv
.sgi
);
866 len
+= snprintf(page
+ len
, count
- len
, "ampdu_enable = %d\n", psta
->htpriv
.ampdu_enable
);
867 len
+= snprintf(page
+ len
, count
- len
, "agg_enable_bitmap=%x, candidate_tid_bitmap=%x\n", psta
->htpriv
.agg_enable_bitmap
, psta
->htpriv
.candidate_tid_bitmap
);
868 len
+= snprintf(page
+ len
, count
- len
, "sleepq_len=%d\n", psta
->sleepq_len
);
869 len
+= snprintf(page
+ len
, count
- len
, "capability=0x%x\n", psta
->capability
);
870 len
+= snprintf(page
+ len
, count
- len
, "flags=0x%x\n", psta
->flags
);
871 len
+= snprintf(page
+ len
, count
- len
, "wpa_psk=0x%x\n", psta
->wpa_psk
);
872 len
+= snprintf(page
+ len
, count
- len
, "wpa2_group_cipher=0x%x\n", psta
->wpa2_group_cipher
);
873 len
+= snprintf(page
+ len
, count
- len
, "wpa2_pairwise_cipher=0x%x\n", psta
->wpa2_pairwise_cipher
);
874 len
+= snprintf(page
+ len
, count
- len
, "qos_info=0x%x\n", psta
->qos_info
);
875 len
+= snprintf(page
+ len
, count
- len
, "dot118021XPrivacy=0x%x\n", psta
->dot118021XPrivacy
);
877 for (j
= 0; j
< 16; j
++) {
878 preorder_ctrl
= &psta
->recvreorder_ctrl
[j
];
879 if (preorder_ctrl
->enable
)
880 len
+= snprintf(page
+ len
, count
- len
, "tid=%d, indicate_seq=%d\n", j
, preorder_ctrl
->indicate_seq
);
884 spin_unlock_bh(&pstapriv
->sta_hash_lock
);
891 int proc_get_best_channel(char *page
, char **start
,
892 off_t offset
, int count
,
893 int *eof
, void *data
)
895 struct net_device
*dev
= data
;
896 struct adapter
*padapter
= (struct adapter
*)rtw_netdev_priv(dev
);
897 struct mlme_ext_priv
*pmlmeext
= &padapter
->mlmeextpriv
;
899 u32 i
, best_channel_24G
= 1, best_channel_5G
= 36, index_24G
= 0, index_5G
= 0;
901 for (i
= 0; pmlmeext
->channel_set
[i
].ChannelNum
!= 0; i
++) {
902 if (pmlmeext
->channel_set
[i
].ChannelNum
== 1)
904 if (pmlmeext
->channel_set
[i
].ChannelNum
== 36)
908 for (i
= 0; pmlmeext
->channel_set
[i
].ChannelNum
!= 0; i
++) {
910 if (pmlmeext
->channel_set
[i
].ChannelNum
== 6) {
911 if (pmlmeext
->channel_set
[i
].rx_count
< pmlmeext
->channel_set
[index_24G
].rx_count
) {
913 best_channel_24G
= pmlmeext
->channel_set
[i
].ChannelNum
;
918 if (pmlmeext
->channel_set
[i
].ChannelNum
>= 36 &&
919 pmlmeext
->channel_set
[i
].ChannelNum
< 140) {
920 /* Find primary channel */
921 if (((pmlmeext
->channel_set
[i
].ChannelNum
- 36) % 8 == 0) &&
922 (pmlmeext
->channel_set
[i
].rx_count
< pmlmeext
->channel_set
[index_5G
].rx_count
)) {
924 best_channel_5G
= pmlmeext
->channel_set
[i
].ChannelNum
;
928 if (pmlmeext
->channel_set
[i
].ChannelNum
>= 149 &&
929 pmlmeext
->channel_set
[i
].ChannelNum
< 165) {
930 /* find primary channel */
931 if (((pmlmeext
->channel_set
[i
].ChannelNum
- 149) % 8 == 0) &&
932 (pmlmeext
->channel_set
[i
].rx_count
< pmlmeext
->channel_set
[index_5G
].rx_count
)) {
934 best_channel_5G
= pmlmeext
->channel_set
[i
].ChannelNum
;
938 len
+= snprintf(page
+ len
, count
- len
, "The rx cnt of channel %3d = %d\n",
939 pmlmeext
->channel_set
[i
].ChannelNum
, pmlmeext
->channel_set
[i
].rx_count
);
942 len
+= snprintf(page
+ len
, count
- len
, "best_channel_5G = %d\n", best_channel_5G
);
943 len
+= snprintf(page
+ len
, count
- len
, "best_channel_24G = %d\n", best_channel_24G
);
This page took 0.051818 seconds and 4 git commands to generate.