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 <drv_types.h>
24 u32 GlobalDebugLevel = _drv_err_;
26 #ifdef CONFIG_DEBUG_RTL871X
28 u64 GlobalDebugComponents = \
29 _module_rtl871x_xmit_c_ |
30 _module_xmit_osdep_c_ |
31 _module_rtl871x_recv_c_ |
32 _module_recv_osdep_c_ |
33 _module_rtl871x_mlme_c_ |
34 _module_mlme_osdep_c_ |
35 _module_rtl871x_sta_mgt_c_ |
36 _module_rtl871x_cmd_c_ |
37 _module_cmd_osdep_c_ |
38 _module_rtl871x_io_c_ |
41 _module_rtl871x_security_c_|
42 _module_rtl871x_eeprom_c_|
44 _module_hci_hal_init_c_|
45 _module_rtl871x_ioctl_c_|
46 _module_rtl871x_ioctl_set_c_|
47 _module_rtl871x_ioctl_query_c_|
48 _module_rtl871x_pwrctrl_c_|
51 _module_hci_ops_os_c_|
52 _module_rtl871x_ioctl_os_c|
53 _module_rtl8712_cmd_c_|
55 _module_rtl8712_recv_c_ |
59 #endif /* CONFIG_DEBUG_RTL871X */
61 #include <rtw_version.h>
63 void dump_drv_version(void *sel)
65 DBG_871X_SEL_NL(sel, "%s %s\n", DRV_NAME, DRIVERVERSION);
66 DBG_871X_SEL_NL(sel, "build time: %s %s\n", __DATE__, __TIME__);
69 void dump_log_level(void *sel)
71 DBG_871X_SEL_NL(sel, "log_level:%d\n", GlobalDebugLevel);
74 #ifdef CONFIG_SDIO_HCI
75 void sd_f0_reg_dump(void *sel, _adapter *adapter)
79 for(i=0x0;i<=0xff;i++)
82 DBG_871X_SEL_NL(sel, "0x%02x ",i);
84 DBG_871X_SEL(sel, "%02x ", rtw_sd_f0_read8(adapter, i));
87 DBG_871X_SEL(sel, "\n");
89 DBG_871X_SEL(sel, "\t");
92 #endif /* CONFIG_SDIO_HCI */
94 void mac_reg_dump(void *sel, _adapter *adapter)
98 DBG_871X_SEL_NL(sel, "======= MAC REG =======\n");
100 for(i=0x0;i<0x800;i+=4)
103 DBG_871X_SEL_NL(sel, "0x%03x",i);
104 DBG_871X_SEL(sel, " 0x%08x ", rtw_read32(adapter,i));
106 DBG_871X_SEL(sel, "\n");
110 void bb_reg_dump(void *sel, _adapter *adapter)
114 DBG_871X_SEL_NL(sel, "======= BB REG =======\n");
115 for(i=0x800;i<0x1000;i+=4)
118 DBG_871X_SEL_NL(sel, "0x%03x",i);
119 DBG_871X_SEL(sel, " 0x%08x ", rtw_read32(adapter,i));
121 DBG_871X_SEL(sel, "\n");
125 void rf_reg_dump(void *sel, _adapter *adapter)
132 rtw_hal_get_hwreg(adapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type));
133 if((RF_1T2R == rf_type) ||(RF_1T1R ==rf_type ))
138 DBG_871X_SEL_NL(sel, "======= RF REG =======\n");
140 for (path=0;path<path_nums;path++) {
141 DBG_871X_SEL_NL(sel, "RF_Path(%x)\n",path);
142 for (i=0;i<0x100;i++) {
143 //value = PHY_QueryRFReg(adapter, (RF90_RADIO_PATH_E)path,i, bMaskDWord);
144 value = rtw_hal_read_rfreg(adapter, path, i, 0xffffffff);
146 DBG_871X_SEL_NL(sel, "0x%02x ",i);
147 DBG_871X_SEL(sel, " 0x%08x ",value);
149 DBG_871X_SEL(sel, "\n");
154 static u8 fwdl_test_chksum_fail = 0;
155 static u8 fwdl_test_wintint_rdy_fail = 0;
157 bool rtw_fwdl_test_trigger_chksum_fail()
159 if (fwdl_test_chksum_fail) {
160 DBG_871X_LEVEL(_drv_always_, "fwdl test case: trigger chksum_fail\n");
161 fwdl_test_chksum_fail--;
167 bool rtw_fwdl_test_trigger_wintint_rdy_fail()
169 if (fwdl_test_wintint_rdy_fail) {
170 DBG_871X_LEVEL(_drv_always_, "fwdl test case: trigger wintint_rdy_fail\n");
171 fwdl_test_wintint_rdy_fail--;
177 static u32 g_wait_hiq_empty_ms = 0;
179 u32 rtw_get_wait_hiq_empty_ms()
181 return g_wait_hiq_empty_ms;
184 void rtw_sink_rtp_seq_dbg( _adapter *adapter,_pkt *pkt)
186 struct recv_priv *precvpriv = &(adapter->recvpriv);
187 if( precvpriv->sink_udpport > 0)
189 if(*((u16*)((pkt->data)+0x24)) == cpu_to_be16(precvpriv->sink_udpport))
191 precvpriv->pre_rtp_rxseq= precvpriv->cur_rtp_rxseq;
192 precvpriv->cur_rtp_rxseq = be16_to_cpu(*((u16*)((pkt->data)+0x2C)));
193 if( precvpriv->pre_rtp_rxseq+1 != precvpriv->cur_rtp_rxseq)
194 DBG_871X("%s : RTP Seq num from %d to %d\n",__FUNCTION__,precvpriv->pre_rtp_rxseq,precvpriv->cur_rtp_rxseq);
199 #ifdef CONFIG_PROC_DEBUG
200 ssize_t proc_set_write_reg(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data)
202 struct net_device *dev = data;
203 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
209 DBG_871X("argument size is less than 3\n");
213 if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) {
215 int num = sscanf(tmp, "%x %x %x", &addr, &val, &len);
218 DBG_871X("invalid write_reg parameter!\n");
225 rtw_write8(padapter, addr, (u8)val);
228 rtw_write16(padapter, addr, (u16)val);
231 rtw_write32(padapter, addr, val);
234 DBG_871X("error write length=%d", len);
244 static u32 proc_get_read_addr=0xeeeeeeee;
245 static u32 proc_get_read_len=0x4;
247 int proc_get_read_reg(struct seq_file *m, void *v)
249 struct net_device *dev = m->private;
250 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
252 if (proc_get_read_addr==0xeeeeeeee) {
253 DBG_871X_SEL_NL(m, "address not initialized\n");
257 switch(proc_get_read_len)
260 DBG_871X_SEL_NL(m, "rtw_read8(0x%x)=0x%x\n", proc_get_read_addr, rtw_read8(padapter, proc_get_read_addr));
263 DBG_871X_SEL_NL(m, "rtw_read16(0x%x)=0x%x\n", proc_get_read_addr, rtw_read16(padapter, proc_get_read_addr));
266 DBG_871X_SEL_NL(m, "rtw_read32(0x%x)=0x%x\n", proc_get_read_addr, rtw_read32(padapter, proc_get_read_addr));
269 DBG_871X_SEL_NL(m, "error read length=%d\n", proc_get_read_len);
276 ssize_t proc_set_read_reg(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data)
278 struct net_device *dev = data;
284 DBG_871X("argument size is less than 2\n");
288 if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) {
290 int num = sscanf(tmp, "%x %x", &addr, &len);
293 DBG_871X("invalid read_reg parameter!\n");
297 proc_get_read_addr = addr;
299 proc_get_read_len = len;
306 int proc_get_fwstate(struct seq_file *m, void *v)
308 struct net_device *dev = m->private;
309 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
310 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
312 DBG_871X_SEL_NL(m, "fwstate=0x%x\n", get_fwstate(pmlmepriv));
317 int proc_get_sec_info(struct seq_file *m, void *v)
319 struct net_device *dev = m->private;
320 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
321 struct security_priv *sec = &padapter->securitypriv;
323 DBG_871X_SEL_NL(m, "auth_alg=0x%x, enc_alg=0x%x, auth_type=0x%x, enc_type=0x%x\n",
324 sec->dot11AuthAlgrthm, sec->dot11PrivacyAlgrthm,
325 sec->ndisauthtype, sec->ndisencryptstatus);
327 DBG_871X_SEL_NL(m, "hw_decrypted=%d\n", sec->hw_decrypted);
329 #ifdef DBG_SW_SEC_CNT
330 DBG_871X_SEL_NL(m, "wep_sw_enc_cnt=%llu, %llu, %llu\n"
331 , sec->wep_sw_enc_cnt_bc , sec->wep_sw_enc_cnt_mc, sec->wep_sw_enc_cnt_uc);
332 DBG_871X_SEL_NL(m, "wep_sw_dec_cnt=%llu, %llu, %llu\n"
333 , sec->wep_sw_dec_cnt_bc , sec->wep_sw_dec_cnt_mc, sec->wep_sw_dec_cnt_uc);
335 DBG_871X_SEL_NL(m, "tkip_sw_enc_cnt=%llu, %llu, %llu\n"
336 , sec->tkip_sw_enc_cnt_bc , sec->tkip_sw_enc_cnt_mc, sec->tkip_sw_enc_cnt_uc);
337 DBG_871X_SEL_NL(m, "tkip_sw_dec_cnt=%llu, %llu, %llu\n"
338 , sec->tkip_sw_dec_cnt_bc , sec->tkip_sw_dec_cnt_mc, sec->tkip_sw_dec_cnt_uc);
340 DBG_871X_SEL_NL(m, "aes_sw_enc_cnt=%llu, %llu, %llu\n"
341 , sec->aes_sw_enc_cnt_bc , sec->aes_sw_enc_cnt_mc, sec->aes_sw_enc_cnt_uc);
342 DBG_871X_SEL_NL(m, "aes_sw_dec_cnt=%llu, %llu, %llu\n"
343 , sec->aes_sw_dec_cnt_bc , sec->aes_sw_dec_cnt_mc, sec->aes_sw_dec_cnt_uc);
344 #endif /* DBG_SW_SEC_CNT */
349 int proc_get_mlmext_state(struct seq_file *m, void *v)
351 struct net_device *dev = m->private;
352 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
353 struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
354 struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
356 DBG_871X_SEL_NL(m, "pmlmeinfo->state=0x%x\n", pmlmeinfo->state);
361 #ifdef CONFIG_LAYER2_ROAMING
362 int proc_get_roam_flags(struct seq_file *m, void *v)
364 struct net_device *dev = m->private;
365 _adapter *adapter = (_adapter *)rtw_netdev_priv(dev);
367 DBG_871X_SEL_NL(m, "0x%02x\n", rtw_roam_flags(adapter));
372 ssize_t proc_set_roam_flags(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data)
374 struct net_device *dev = data;
375 _adapter *adapter = (_adapter *)rtw_netdev_priv(dev);
383 if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) {
385 int num = sscanf(tmp, "%hhx", &flags);
388 rtw_assign_roam_flags(adapter, flags);
395 int proc_get_roam_param(struct seq_file *m, void *v)
397 struct net_device *dev = m->private;
398 _adapter *adapter = (_adapter *)rtw_netdev_priv(dev);
399 struct mlme_priv *mlme = &adapter->mlmepriv;
401 DBG_871X_SEL_NL(m, "%12s %12s %11s\n", "rssi_diff_th", "scanr_exp_ms", "scan_int_ms");
402 DBG_871X_SEL_NL(m, "%-12u %-12u %-11u\n"
403 , mlme->roam_rssi_diff_th
404 , mlme->roam_scanr_exp_ms
405 , mlme->roam_scan_int_ms
411 ssize_t proc_set_roam_param(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data)
413 struct net_device *dev = data;
414 _adapter *adapter = (_adapter *)rtw_netdev_priv(dev);
415 struct mlme_priv *mlme = &adapter->mlmepriv;
425 if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) {
427 int num = sscanf(tmp, "%hhu %u %u", &rssi_diff_th, &scanr_exp_ms, &scan_int_ms);
430 mlme->roam_rssi_diff_th = rssi_diff_th;
432 mlme->roam_scanr_exp_ms = scanr_exp_ms;
434 mlme->roam_scan_int_ms = scan_int_ms;
441 ssize_t proc_set_roam_tgt_addr(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data)
443 struct net_device *dev = data;
444 _adapter *adapter = (_adapter *)rtw_netdev_priv(dev);
452 if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) {
454 int num = sscanf(tmp, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", addr, addr+1, addr+2, addr+3, addr+4, addr+5);
456 _rtw_memcpy(adapter->mlmepriv.roam_tgt_addr, addr, ETH_ALEN);
458 DBG_871X("set roam_tgt_addr to "MAC_FMT"\n", MAC_ARG(adapter->mlmepriv.roam_tgt_addr));
463 #endif /* CONFIG_LAYER2_ROAMING */
465 int proc_get_qos_option(struct seq_file *m, void *v)
467 struct net_device *dev = m->private;
468 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
469 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
471 DBG_871X_SEL_NL(m, "qos_option=%d\n", pmlmepriv->qospriv.qos_option);
476 int proc_get_ht_option(struct seq_file *m, void *v)
478 struct net_device *dev = m->private;
479 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
480 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
482 #ifdef CONFIG_80211N_HT
483 DBG_871X_SEL_NL(m, "ht_option=%d\n", pmlmepriv->htpriv.ht_option);
484 #endif //CONFIG_80211N_HT
489 int proc_get_rf_info(struct seq_file *m, void *v)
491 struct net_device *dev = m->private;
492 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
493 struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
495 DBG_871X_SEL_NL(m, "cur_ch=%d, cur_bw=%d, cur_ch_offet=%d\n",
496 pmlmeext->cur_channel, pmlmeext->cur_bwmode, pmlmeext->cur_ch_offset);
498 DBG_871X_SEL_NL(m, "oper_ch=%d, oper_bw=%d, oper_ch_offet=%d\n",
499 rtw_get_oper_ch(padapter), rtw_get_oper_bw(padapter), rtw_get_oper_choffset(padapter));
504 int proc_get_survey_info(struct seq_file *m, void *v)
507 struct net_device *dev = m->private;
508 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
509 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
510 _queue *queue = &(pmlmepriv->scanned_queue);
511 struct wlan_network *pnetwork = NULL;
512 _list *plist, *phead;
514 s16 notify_noise = 0;
517 _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
518 phead = get_list_head(queue);
521 plist = get_next(phead);
525 DBG_871X_SEL_NL(m, "%5s %-17s %3s %-3s %-4s %-4s %5s %s\n","index", "bssid", "ch", "RSSI", "SdBm", "Noise", "age", "ssid");
528 if (rtw_end_of_queue_search(phead,plist)== _TRUE)
531 pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list);
535 if ( check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE &&
536 is_same_network(&pmlmepriv->cur_network.network, &pnetwork->network, 0)) {
537 notify_signal = translate_percentage_to_dbm(padapter->recvpriv.signal_strength);//dbm
539 notify_signal = translate_percentage_to_dbm(pnetwork->network.PhyInfo.SignalStrength);//dbm
542 #if defined(CONFIG_SIGNAL_DISPLAY_DBM) && defined(CONFIG_BACKGROUND_NOISE_MONITOR)
543 rtw_hal_get_odm_var(padapter, HAL_ODM_NOISE_MONITOR,&(pnetwork->network.Configuration.DSConfig), &(notify_noise));
546 DBG_871X_SEL_NL(m, "%5d "MAC_FMT" %3d %3d %4d %4d %5d %s\n",
548 MAC_ARG(pnetwork->network.MacAddress),
549 pnetwork->network.Configuration.DSConfig,
550 (int)pnetwork->network.Rssi,
553 rtw_get_passing_time_ms((u32)pnetwork->last_scanned),
554 //translate_percentage_to_dbm(pnetwork->network.PhyInfo.SignalStrength),
555 pnetwork->network.Ssid.Ssid);
556 plist = get_next(plist);
558 _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
563 int proc_get_ap_info(struct seq_file *m, void *v)
565 struct net_device *dev = m->private;
566 struct sta_info *psta;
567 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
568 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
569 struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
570 struct wlan_network *cur_network = &(pmlmepriv->cur_network);
571 struct sta_priv *pstapriv = &padapter->stapriv;
573 psta = rtw_get_stainfo(pstapriv, cur_network->network.MacAddress);
577 struct recv_reorder_ctrl *preorder_ctrl;
579 DBG_871X_SEL_NL(m, "SSID=%s\n", cur_network->network.Ssid.Ssid);
580 DBG_871X_SEL_NL(m, "sta's macaddr:" MAC_FMT "\n", MAC_ARG(psta->hwaddr));
581 DBG_871X_SEL_NL(m, "cur_channel=%d, cur_bwmode=%d, cur_ch_offset=%d\n", pmlmeext->cur_channel, pmlmeext->cur_bwmode, pmlmeext->cur_ch_offset);
582 DBG_871X_SEL_NL(m, "wireless_mode=0x%x, rtsen=%d, cts2slef=%d\n", psta->wireless_mode, psta->rtsen, psta->cts2self);
583 DBG_871X_SEL_NL(m, "state=0x%x, aid=%d, macid=%d, raid=%d\n", psta->state, psta->aid, psta->mac_id, psta->raid);
584 #ifdef CONFIG_80211N_HT
585 DBG_871X_SEL_NL(m, "qos_en=%d, ht_en=%d, init_rate=%d\n", psta->qos_option, psta->htpriv.ht_option, psta->init_rate);
586 DBG_871X_SEL_NL(m, "bwmode=%d, ch_offset=%d, sgi_20m=%d,sgi_40m=%d\n", psta->bw_mode, psta->htpriv.ch_offset, psta->htpriv.sgi_20m, psta->htpriv.sgi_40m);
587 DBG_871X_SEL_NL(m, "ampdu_enable = %d\n", psta->htpriv.ampdu_enable);
588 DBG_871X_SEL_NL(m, "agg_enable_bitmap=%x, candidate_tid_bitmap=%x\n", psta->htpriv.agg_enable_bitmap, psta->htpriv.candidate_tid_bitmap);
589 DBG_871X_SEL_NL(m, "ldpc_cap=0x%x, stbc_cap=0x%x, beamform_cap=0x%x\n", psta->htpriv.ldpc_cap, psta->htpriv.stbc_cap, psta->htpriv.beamform_cap);
590 #endif //CONFIG_80211N_HT
591 #ifdef CONFIG_80211AC_VHT
592 DBG_871X_SEL_NL(m, "vht_en=%d, vht_sgi_80m=%d\n", psta->vhtpriv.vht_option, psta->vhtpriv.sgi_80m);
593 DBG_871X_SEL_NL(m, "vht_ldpc_cap=0x%x, vht_stbc_cap=0x%x, vht_beamform_cap=0x%x\n", psta->vhtpriv.ldpc_cap, psta->vhtpriv.stbc_cap, psta->vhtpriv.beamform_cap);
594 DBG_871X_SEL_NL(m, "vht_mcs_map=0x%x, vht_highest_rate=0x%x, vht_ampdu_len=%d\n", *(u16*)psta->vhtpriv.vht_mcs_map, psta->vhtpriv.vht_highest_rate, psta->vhtpriv.ampdu_len);
599 preorder_ctrl = &psta->recvreorder_ctrl[i];
600 if(preorder_ctrl->enable)
602 DBG_871X_SEL_NL(m, "tid=%d, indicate_seq=%d\n", i, preorder_ctrl->indicate_seq);
609 DBG_871X_SEL_NL(m, "can't get sta's macaddr, cur_network's macaddr:" MAC_FMT "\n", MAC_ARG(cur_network->network.MacAddress));
615 int proc_get_adapter_state(struct seq_file *m, void *v)
617 struct net_device *dev = m->private;
618 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
620 #ifdef CONFIG_CONCURRENT_MODE
621 DBG_871X_SEL_NL(m, "name=%s, iface_type=%d, bSurpriseRemoved=%d, bDriverStopped=%d\n",
622 dev->name, padapter->iface_type,
623 padapter->bSurpriseRemoved, padapter->bDriverStopped);
625 DBG_871X_SEL_NL(m, "name=%s, bSurpriseRemoved=%d, bDriverStopped=%d\n",
626 dev->name, padapter->bSurpriseRemoved, padapter->bDriverStopped);
632 int proc_get_trx_info(struct seq_file *m, void *v)
634 struct net_device *dev = m->private;
636 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
637 struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
638 struct recv_priv *precvpriv = &padapter->recvpriv;
639 struct hw_xmit *phwxmit;
641 dump_os_queue(m, padapter);
643 DBG_871X_SEL_NL(m, "free_xmitbuf_cnt=%d, free_xmitframe_cnt=%d\n"
644 , pxmitpriv->free_xmitbuf_cnt, pxmitpriv->free_xmitframe_cnt);
645 DBG_871X_SEL_NL(m, "free_ext_xmitbuf_cnt=%d, free_xframe_ext_cnt=%d\n"
646 , pxmitpriv->free_xmit_extbuf_cnt, pxmitpriv->free_xframe_ext_cnt);
647 DBG_871X_SEL_NL(m, "free_recvframe_cnt=%d\n"
648 , precvpriv->free_recvframe_cnt);
650 for(i = 0; i < 4; i++)
652 phwxmit = pxmitpriv->hwxmits + i;
653 DBG_871X_SEL_NL(m, "%d, hwq.accnt=%d\n", i, phwxmit->accnt);
656 #ifdef CONFIG_USB_HCI
657 DBG_871X_SEL_NL(m, "rx_urb_pending_cn=%d\n", ATOMIC_READ(&(precvpriv->rx_pending_cnt)));
663 int proc_get_dis_pwt(struct seq_file *m, void *v)
665 struct net_device *dev = m->private;
666 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
668 rtw_hal_get_def_var(padapter, HAL_DEF_DBG_DIS_PWT, &(dis_pwt));
669 DBG_871X_SEL_NL(m, " Tx Power training mode:%s \n",(dis_pwt==_TRUE)?"Disable":"Enable");
672 ssize_t proc_set_dis_pwt(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data)
674 struct net_device *dev = data;
675 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
681 if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) {
683 int num = sscanf(tmp, "%hhx", &dis_pwt);
684 DBG_871X("Set Tx Power training mode:%s \n",(dis_pwt==_TRUE)?"Disable":"Enable");
687 rtw_hal_set_def_var(padapter, HAL_DEF_DBG_DIS_PWT, &(dis_pwt));
694 int proc_get_rate_ctl(struct seq_file *m, void *v)
696 struct net_device *dev = m->private;
698 _adapter *adapter = (_adapter *)rtw_netdev_priv(dev);
699 u8 data_rate = 0, sgi=0, data_fb = 0;
701 if (adapter->fix_rate != 0xff) {
702 data_rate = adapter->fix_rate & 0x7F;
703 sgi = adapter->fix_rate >>7;
704 data_fb = adapter->data_fb?1:0;
705 DBG_871X_SEL_NL(m, "FIXED %s%s%s\n"
706 , HDATA_RATE(data_rate)
710 DBG_871X_SEL_NL(m, "0x%02x %u\n", adapter->fix_rate, adapter->data_fb);
712 DBG_871X_SEL_NL(m, "RA\n");
718 ssize_t proc_set_rate_ctl(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data)
720 struct net_device *dev = data;
721 _adapter *adapter = (_adapter *)rtw_netdev_priv(dev);
729 if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) {
731 int num = sscanf(tmp, "%hhx %hhu", &fix_rate, &data_fb);
734 adapter->fix_rate = fix_rate;
736 adapter->data_fb = data_fb?1:0;
742 ssize_t proc_set_fwdl_test_case(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data)
744 struct net_device *dev = data;
745 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
751 if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) {
752 int num = sscanf(tmp, "%hhu %hhu", &fwdl_test_chksum_fail, &fwdl_test_wintint_rdy_fail);
758 ssize_t proc_set_wait_hiq_empty(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data)
760 struct net_device *dev = data;
761 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
767 if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) {
768 int num = sscanf(tmp, "%u", &g_wait_hiq_empty_ms);
774 int proc_get_suspend_resume_info(struct seq_file *m, void *v)
776 struct net_device *dev = m->private;
777 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
778 struct dvobj_priv *dvobj = padapter->dvobj;
779 struct debug_priv *pdbgpriv = &dvobj->drv_dbg;
781 DBG_871X_SEL_NL(m, "dbg_sdio_alloc_irq_cnt=%d\n", pdbgpriv->dbg_sdio_alloc_irq_cnt);
782 DBG_871X_SEL_NL(m, "dbg_sdio_free_irq_cnt=%d\n", pdbgpriv->dbg_sdio_free_irq_cnt);
783 DBG_871X_SEL_NL(m, "dbg_sdio_alloc_irq_error_cnt=%d\n",pdbgpriv->dbg_sdio_alloc_irq_error_cnt);
784 DBG_871X_SEL_NL(m, "dbg_sdio_free_irq_error_cnt=%d\n", pdbgpriv->dbg_sdio_free_irq_error_cnt);
785 DBG_871X_SEL_NL(m, "dbg_sdio_init_error_cnt=%d\n",pdbgpriv->dbg_sdio_init_error_cnt);
786 DBG_871X_SEL_NL(m, "dbg_sdio_deinit_error_cnt=%d\n", pdbgpriv->dbg_sdio_deinit_error_cnt);
787 DBG_871X_SEL_NL(m, "dbg_suspend_error_cnt=%d\n", pdbgpriv->dbg_suspend_error_cnt);
788 DBG_871X_SEL_NL(m, "dbg_suspend_cnt=%d\n",pdbgpriv->dbg_suspend_cnt);
789 DBG_871X_SEL_NL(m, "dbg_resume_cnt=%d\n", pdbgpriv->dbg_resume_cnt);
790 DBG_871X_SEL_NL(m, "dbg_resume_error_cnt=%d\n", pdbgpriv->dbg_resume_error_cnt);
791 DBG_871X_SEL_NL(m, "dbg_deinit_fail_cnt=%d\n",pdbgpriv->dbg_deinit_fail_cnt);
792 DBG_871X_SEL_NL(m, "dbg_carddisable_cnt=%d\n", pdbgpriv->dbg_carddisable_cnt);
793 DBG_871X_SEL_NL(m, "dbg_ps_insuspend_cnt=%d\n",pdbgpriv->dbg_ps_insuspend_cnt);
794 DBG_871X_SEL_NL(m, "dbg_dev_unload_inIPS_cnt=%d\n", pdbgpriv->dbg_dev_unload_inIPS_cnt);
795 DBG_871X_SEL_NL(m, "dbg_scan_pwr_state_cnt=%d\n", pdbgpriv->dbg_scan_pwr_state_cnt);
796 DBG_871X_SEL_NL(m, "dbg_downloadfw_pwr_state_cnt=%d\n", pdbgpriv->dbg_downloadfw_pwr_state_cnt);
797 DBG_871X_SEL_NL(m, "dbg_carddisable_error_cnt=%d\n", pdbgpriv->dbg_carddisable_error_cnt);
798 DBG_871X_SEL_NL(m, "dbg_fw_read_ps_state_fail_cnt=%d\n", pdbgpriv->dbg_fw_read_ps_state_fail_cnt);
799 DBG_871X_SEL_NL(m, "dbg_leave_ips_fail_cnt=%d\n", pdbgpriv->dbg_leave_ips_fail_cnt);
800 DBG_871X_SEL_NL(m, "dbg_leave_lps_fail_cnt=%d\n", pdbgpriv->dbg_leave_lps_fail_cnt);
801 DBG_871X_SEL_NL(m, "dbg_h2c_leave32k_fail_cnt=%d\n", pdbgpriv->dbg_h2c_leave32k_fail_cnt);
802 DBG_871X_SEL_NL(m, "dbg_diswow_dload_fw_fail_cnt=%d\n", pdbgpriv->dbg_diswow_dload_fw_fail_cnt);
803 DBG_871X_SEL_NL(m, "dbg_enwow_dload_fw_fail_cnt=%d\n", pdbgpriv->dbg_enwow_dload_fw_fail_cnt);
804 DBG_871X_SEL_NL(m, "dbg_ips_drvopen_fail_cnt=%d\n", pdbgpriv->dbg_ips_drvopen_fail_cnt);
805 DBG_871X_SEL_NL(m, "dbg_poll_fail_cnt=%d\n", pdbgpriv->dbg_poll_fail_cnt);
806 DBG_871X_SEL_NL(m, "dbg_rpwm_toogle_cnt=%d\n", pdbgpriv->dbg_rpwm_toogle_cnt);
807 DBG_871X_SEL_NL(m, "dbg_rpwm_timeout_fail_cnt=%d\n", pdbgpriv->dbg_rpwm_timeout_fail_cnt);
808 DBG_871X_SEL_NL(m, "dbg_sreset_cnt=%d\n", pdbgpriv->dbg_sreset_cnt);
813 #ifdef CONFIG_DBG_COUNTER
815 int proc_get_rx_logs(struct seq_file *m, void *v)
817 struct net_device *dev = m->private;
818 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
819 struct rx_logs *rx_logs = &padapter->rx_logs;
823 "intf_rx_err_recvframe=%d\n"
824 "intf_rx_err_skb=%d\n"
825 "intf_rx_report=%d\n"
828 "core_rx_pre_ver_err=%d\n"
829 "core_rx_pre_mgmt=%d\n"
830 "core_rx_pre_mgmt_err_80211w=%d\n"
831 "core_rx_pre_mgmt_err=%d\n"
832 "core_rx_pre_ctrl=%d\n"
833 "core_rx_pre_ctrl_err=%d\n"
834 "core_rx_pre_data=%d\n"
835 "core_rx_pre_data_wapi_seq_err=%d\n"
836 "core_rx_pre_data_wapi_key_err=%d\n"
837 "core_rx_pre_data_handled=%d\n"
838 "core_rx_pre_data_err=%d\n"
839 "core_rx_pre_data_unknown=%d\n"
840 "core_rx_pre_unknown=%d\n"
841 "core_rx_enqueue=%d\n"
842 "core_rx_dequeue=%d\n"
844 "core_rx_post_decrypt=%d\n"
845 "core_rx_post_decrypt_wep=%d\n"
846 "core_rx_post_decrypt_tkip=%d\n"
847 "core_rx_post_decrypt_aes=%d\n"
848 "core_rx_post_decrypt_wapi=%d\n"
849 "core_rx_post_decrypt_hw=%d\n"
850 "core_rx_post_decrypt_unknown=%d\n"
851 "core_rx_post_decrypt_err=%d\n"
852 "core_rx_post_defrag_err=%d\n"
853 "core_rx_post_portctrl_err=%d\n"
854 "core_rx_post_indicate=%d\n"
855 "core_rx_post_indicate_in_oder=%d\n"
856 "core_rx_post_indicate_reoder=%d\n"
857 "core_rx_post_indicate_err=%d\n"
859 "os_indicate_ap_mcast=%d\n"
860 "os_indicate_ap_forward=%d\n"
861 "os_indicate_ap_self=%d\n"
862 "os_indicate_err=%d\n"
866 rx_logs->intf_rx_err_recvframe,
867 rx_logs->intf_rx_err_skb,
868 rx_logs->intf_rx_report,
870 rx_logs->core_rx_pre,
871 rx_logs->core_rx_pre_ver_err,
872 rx_logs->core_rx_pre_mgmt,
873 rx_logs->core_rx_pre_mgmt_err_80211w,
874 rx_logs->core_rx_pre_mgmt_err,
875 rx_logs->core_rx_pre_ctrl,
876 rx_logs->core_rx_pre_ctrl_err,
877 rx_logs->core_rx_pre_data,
878 rx_logs->core_rx_pre_data_wapi_seq_err,
879 rx_logs->core_rx_pre_data_wapi_key_err,
880 rx_logs->core_rx_pre_data_handled,
881 rx_logs->core_rx_pre_data_err,
882 rx_logs->core_rx_pre_data_unknown,
883 rx_logs->core_rx_pre_unknown,
884 rx_logs->core_rx_enqueue,
885 rx_logs->core_rx_dequeue,
886 rx_logs->core_rx_post,
887 rx_logs->core_rx_post_decrypt,
888 rx_logs->core_rx_post_decrypt_wep,
889 rx_logs->core_rx_post_decrypt_tkip,
890 rx_logs->core_rx_post_decrypt_aes,
891 rx_logs->core_rx_post_decrypt_wapi,
892 rx_logs->core_rx_post_decrypt_hw,
893 rx_logs->core_rx_post_decrypt_unknown,
894 rx_logs->core_rx_post_decrypt_err,
895 rx_logs->core_rx_post_defrag_err,
896 rx_logs->core_rx_post_portctrl_err,
897 rx_logs->core_rx_post_indicate,
898 rx_logs->core_rx_post_indicate_in_oder,
899 rx_logs->core_rx_post_indicate_reoder,
900 rx_logs->core_rx_post_indicate_err,
901 rx_logs->os_indicate,
902 rx_logs->os_indicate_ap_mcast,
903 rx_logs->os_indicate_ap_forward,
904 rx_logs->os_indicate_ap_self,
905 rx_logs->os_indicate_err,
906 rx_logs->os_netif_ok,
907 rx_logs->os_netif_err
913 int proc_get_tx_logs(struct seq_file *m, void *v)
915 struct net_device *dev = m->private;
916 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
917 struct tx_logs *tx_logs = &padapter->tx_logs;
922 "os_tx_err_xmit=%d\n"
924 "os_tx_m2u_ignore_fw_linked=%d\n"
925 "os_tx_m2u_ignore_self=%d\n"
926 "os_tx_m2u_entry=%d\n"
927 "os_tx_m2u_entry_err_xmit=%d\n"
928 "os_tx_m2u_entry_err_skb=%d\n"
929 "os_tx_m2u_stop=%d\n"
931 "core_tx_err_pxmitframe=%d\n"
932 "core_tx_err_brtx=%d\n"
933 "core_tx_upd_attrib=%d\n"
934 "core_tx_upd_attrib_adhoc=%d\n"
935 "core_tx_upd_attrib_sta=%d\n"
936 "core_tx_upd_attrib_ap=%d\n"
937 "core_tx_upd_attrib_unknown=%d\n"
938 "core_tx_upd_attrib_dhcp=%d\n"
939 "core_tx_upd_attrib_icmp=%d\n"
940 "core_tx_upd_attrib_active=%d\n"
941 "core_tx_upd_attrib_err_ucast_sta=%d\n"
942 "core_tx_upd_attrib_err_ucast_ap_link=%d\n"
943 "core_tx_upd_attrib_err_sta=%d\n"
944 "core_tx_upd_attrib_err_link=%d\n"
945 "core_tx_upd_attrib_err_sec=%d\n"
946 "core_tx_ap_enqueue_warn_fwstate=%d\n"
947 "core_tx_ap_enqueue_warn_sta=%d\n"
948 "core_tx_ap_enqueue_warn_nosta=%d\n"
949 "core_tx_ap_enqueue_warn_link=%d\n"
950 "core_tx_ap_enqueue_warn_trigger=%d\n"
951 "core_tx_ap_enqueue_mcast=%d\n"
952 "core_tx_ap_enqueue_ucast=%d\n"
953 "core_tx_ap_enqueue=%d\n"
955 "intf_tx_pending_ac=%d\n"
956 "intf_tx_pending_fw_under_survey=%d\n"
957 "intf_tx_pending_fw_under_linking=%d\n"
958 "intf_tx_pending_xmitbuf=%d\n"
959 "intf_tx_enqueue=%d\n"
960 "core_tx_enqueue=%d\n"
961 "core_tx_enqueue_class=%d\n"
962 "core_tx_enqueue_class_err_sta=%d\n"
963 "core_tx_enqueue_class_err_nosta=%d\n"
964 "core_tx_enqueue_class_err_fwlink=%d\n"
965 "intf_tx_direct=%d\n"
966 "intf_tx_direct_err_coalesce=%d\n"
967 "intf_tx_dequeue=%d\n"
968 "intf_tx_dequeue_err_coalesce=%d\n"
969 "intf_tx_dump_xframe=%d\n"
970 "intf_tx_dump_xframe_err_txdesc=%d\n"
971 "intf_tx_dump_xframe_err_port=%d\n",
973 tx_logs->os_tx_err_up,
974 tx_logs->os_tx_err_xmit,
976 tx_logs->os_tx_m2u_ignore_fw_linked,
977 tx_logs->os_tx_m2u_ignore_self,
978 tx_logs->os_tx_m2u_entry,
979 tx_logs->os_tx_m2u_entry_err_xmit,
980 tx_logs->os_tx_m2u_entry_err_skb,
981 tx_logs->os_tx_m2u_stop,
983 tx_logs->core_tx_err_pxmitframe,
984 tx_logs->core_tx_err_brtx,
985 tx_logs->core_tx_upd_attrib,
986 tx_logs->core_tx_upd_attrib_adhoc,
987 tx_logs->core_tx_upd_attrib_sta,
988 tx_logs->core_tx_upd_attrib_ap,
989 tx_logs->core_tx_upd_attrib_unknown,
990 tx_logs->core_tx_upd_attrib_dhcp,
991 tx_logs->core_tx_upd_attrib_icmp,
992 tx_logs->core_tx_upd_attrib_active,
993 tx_logs->core_tx_upd_attrib_err_ucast_sta,
994 tx_logs->core_tx_upd_attrib_err_ucast_ap_link,
995 tx_logs->core_tx_upd_attrib_err_sta,
996 tx_logs->core_tx_upd_attrib_err_link,
997 tx_logs->core_tx_upd_attrib_err_sec,
998 tx_logs->core_tx_ap_enqueue_warn_fwstate,
999 tx_logs->core_tx_ap_enqueue_warn_sta,
1000 tx_logs->core_tx_ap_enqueue_warn_nosta,
1001 tx_logs->core_tx_ap_enqueue_warn_link,
1002 tx_logs->core_tx_ap_enqueue_warn_trigger,
1003 tx_logs->core_tx_ap_enqueue_mcast,
1004 tx_logs->core_tx_ap_enqueue_ucast,
1005 tx_logs->core_tx_ap_enqueue,
1007 tx_logs->intf_tx_pending_ac,
1008 tx_logs->intf_tx_pending_fw_under_survey,
1009 tx_logs->intf_tx_pending_fw_under_linking,
1010 tx_logs->intf_tx_pending_xmitbuf,
1011 tx_logs->intf_tx_enqueue,
1012 tx_logs->core_tx_enqueue,
1013 tx_logs->core_tx_enqueue_class,
1014 tx_logs->core_tx_enqueue_class_err_sta,
1015 tx_logs->core_tx_enqueue_class_err_nosta,
1016 tx_logs->core_tx_enqueue_class_err_fwlink,
1017 tx_logs->intf_tx_direct,
1018 tx_logs->intf_tx_direct_err_coalesce,
1019 tx_logs->intf_tx_dequeue,
1020 tx_logs->intf_tx_dequeue_err_coalesce,
1021 tx_logs->intf_tx_dump_xframe,
1022 tx_logs->intf_tx_dump_xframe_err_txdesc,
1023 tx_logs->intf_tx_dump_xframe_err_port
1029 int proc_get_int_logs(struct seq_file *m, void *v)
1031 struct net_device *dev = m->private;
1032 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1052 padapter->int_logs.all,
1053 padapter->int_logs.err,
1054 padapter->int_logs.tbdok,
1055 padapter->int_logs.tbder,
1056 padapter->int_logs.bcnderr,
1057 padapter->int_logs.bcndma,
1058 padapter->int_logs.bcndma_e,
1059 padapter->int_logs.rx,
1060 padapter->int_logs.rx_rdu,
1061 padapter->int_logs.rx_fovw,
1062 padapter->int_logs.txfovw,
1063 padapter->int_logs.mgntok,
1064 padapter->int_logs.highdok,
1065 padapter->int_logs.bkdok,
1066 padapter->int_logs.bedok,
1067 padapter->int_logs.vidok,
1068 padapter->int_logs.vodok
1074 #endif // CONFIG_DBG_COUNTER
1076 int proc_get_hw_status(struct seq_file *m, void *v)
1078 struct net_device *dev = m->private;
1079 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1080 struct dvobj_priv *dvobj = padapter->dvobj;
1081 struct debug_priv *pdbgpriv = &dvobj->drv_dbg;
1083 DBG_871X_SEL_NL(m, "RX FIFO full count: last_time=%lld, current_time=%lld, differential=%lld\n"
1084 , pdbgpriv->dbg_rx_fifo_last_overflow, pdbgpriv->dbg_rx_fifo_curr_overflow, pdbgpriv->dbg_rx_fifo_diff_overflow);
1089 int proc_get_rx_signal(struct seq_file *m, void *v)
1091 struct net_device *dev = m->private;
1092 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1093 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
1095 DBG_871X_SEL_NL(m, "rssi:%d\n", padapter->recvpriv.rssi);
1096 //DBG_871X_SEL_NL(m, "rxpwdb:%d\n", padapter->recvpriv.rxpwdb);
1097 DBG_871X_SEL_NL(m, "signal_strength:%u\n", padapter->recvpriv.signal_strength);
1098 DBG_871X_SEL_NL(m, "signal_qual:%u\n", padapter->recvpriv.signal_qual);
1099 DBG_871X_SEL_NL(m, "noise:%d\n", padapter->recvpriv.noise);
1100 rtw_odm_get_perpkt_rssi(m,padapter);
1101 #ifdef DBG_RX_SIGNAL_DISPLAY_RAW_DATA
1102 rtw_get_raw_rssi_info(m,padapter);
1107 ssize_t proc_set_rx_signal(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data)
1109 struct net_device *dev = data;
1110 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1112 u32 is_signal_dbg, signal_strength;
1117 if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) {
1119 int num = sscanf(tmp, "%u %u", &is_signal_dbg, &signal_strength);
1121 is_signal_dbg = is_signal_dbg==0?0:1;
1123 if(is_signal_dbg && num!=2)
1126 signal_strength = signal_strength>100?100:signal_strength;
1128 padapter->recvpriv.is_signal_dbg = is_signal_dbg;
1129 padapter->recvpriv.signal_strength_dbg=signal_strength;
1132 DBG_871X("set %s %u\n", "DBG_SIGNAL_STRENGTH", signal_strength);
1134 DBG_871X("set %s\n", "HW_SIGNAL_STRENGTH");
1141 #ifdef CONFIG_80211N_HT
1143 int proc_get_ht_enable(struct seq_file *m, void *v)
1145 struct net_device *dev = m->private;
1146 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1147 struct registry_priv *pregpriv = &padapter->registrypriv;
1150 DBG_871X_SEL_NL(m, "%d\n", pregpriv->ht_enable);
1155 ssize_t proc_set_ht_enable(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data)
1157 struct net_device *dev = data;
1158 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1159 struct registry_priv *pregpriv = &padapter->registrypriv;
1166 if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) {
1168 int num = sscanf(tmp, "%d ", &mode);
1170 if( pregpriv && mode < 2 )
1172 pregpriv->ht_enable= mode;
1173 DBG_871X("ht_enable=%d\n", pregpriv->ht_enable);
1181 int proc_get_bw_mode(struct seq_file *m, void *v)
1183 struct net_device *dev = m->private;
1184 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1185 struct registry_priv *pregpriv = &padapter->registrypriv;
1188 DBG_871X_SEL_NL(m, "0x%02x\n", pregpriv->bw_mode);
1193 ssize_t proc_set_bw_mode(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data)
1195 struct net_device *dev = data;
1196 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1197 struct registry_priv *pregpriv = &padapter->registrypriv;
1204 if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) {
1206 int num = sscanf(tmp, "%d ", &mode);
1208 if( pregpriv && mode < 2 )
1211 pregpriv->bw_mode = mode;
1212 printk("bw_mode=%d\n", mode);
1221 int proc_get_ampdu_enable(struct seq_file *m, void *v)
1223 struct net_device *dev = m->private;
1224 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1225 struct registry_priv *pregpriv = &padapter->registrypriv;
1228 DBG_871X_SEL_NL(m, "%d\n", pregpriv->ampdu_enable);
1233 ssize_t proc_set_ampdu_enable(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data)
1235 struct net_device *dev = data;
1236 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1237 struct registry_priv *pregpriv = &padapter->registrypriv;
1244 if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) {
1246 int num = sscanf(tmp, "%d ", &mode);
1248 if( pregpriv && mode < 3 )
1250 pregpriv->ampdu_enable= mode;
1251 printk("ampdu_enable=%d\n", mode);
1260 int proc_get_rx_ampdu(struct seq_file *m, void *v)
1262 struct net_device *dev = m->private;
1263 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1264 struct registry_priv *pregpriv = &padapter->registrypriv;
1265 struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
1266 struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
1270 "bAcceptAddbaReq = %d , 0:Reject AP's Add BA req, 1:Accept AP's Add BA req.\n", pmlmeinfo->bAcceptAddbaReq
1276 ssize_t proc_set_rx_ampdu(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data)
1278 struct net_device *dev = data;
1279 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1280 struct registry_priv *pregpriv = &padapter->registrypriv;
1281 struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
1282 struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
1289 if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) {
1291 int num = sscanf(tmp, "%d ", &mode);
1293 if( pregpriv && mode < 2 )
1295 pmlmeinfo->bAcceptAddbaReq = mode;
1296 DBG_871X("pmlmeinfo->bAcceptAddbaReq=%d \n",pmlmeinfo->bAcceptAddbaReq);
1299 //tear down Rx AMPDU
1300 send_delba(padapter, 0, get_my_bssid(&(pmlmeinfo->network)));// recipient
1308 int proc_get_rx_ampdu_factor(struct seq_file *m, void *v)
1310 struct net_device *dev = m->private;
1311 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1316 DBG_871X_SEL_NL(m,"rx ampdu factor = %x\n",padapter->driver_rx_ampdu_factor);
1322 ssize_t proc_set_rx_ampdu_factor(struct file *file, const char __user *buffer
1323 , size_t count, loff_t *pos, void *data)
1325 struct net_device *dev = data;
1326 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1333 if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp)))
1336 int num = sscanf(tmp, "%d ", &factor);
1338 if( padapter && (num == 1) )
1340 DBG_871X("padapter->driver_rx_ampdu_factor = %x\n", factor);
1343 padapter->driver_rx_ampdu_factor = 0xFF;
1345 padapter->driver_rx_ampdu_factor = factor;
1352 int proc_get_rx_ampdu_density(struct seq_file *m, void *v)
1354 struct net_device *dev = m->private;
1355 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1360 DBG_871X_SEL_NL(m,"rx ampdu densityg = %x\n",padapter->driver_rx_ampdu_spacing);
1366 ssize_t proc_set_rx_ampdu_density(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data)
1368 struct net_device *dev = data;
1369 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1376 if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp)))
1379 int num = sscanf(tmp, "%d ", &density);
1381 if( padapter && (num == 1) )
1383 DBG_871X("padapter->driver_rx_ampdu_spacing = %x\n", density);
1386 padapter->driver_rx_ampdu_spacing = 0xFF;
1388 padapter->driver_rx_ampdu_spacing = density;
1395 int proc_get_tx_ampdu_density(struct seq_file *m, void *v)
1397 struct net_device *dev = m->private;
1398 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1403 DBG_871X_SEL_NL(m,"tx ampdu density = %x\n",padapter->driver_ampdu_spacing);
1409 ssize_t proc_set_tx_ampdu_density(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data)
1411 struct net_device *dev = data;
1412 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1419 if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp)))
1422 int num = sscanf(tmp, "%d ", &density);
1424 if( padapter && (num == 1) )
1426 DBG_871X("padapter->driver_ampdu_spacing = %x\n", density);
1429 padapter->driver_ampdu_spacing = 0xFF;
1431 padapter->driver_ampdu_spacing = density;
1437 #endif //CONFIG_80211N_HT
1439 int proc_get_en_fwps(struct seq_file *m, void *v)
1441 struct net_device *dev = m->private;
1442 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1443 struct registry_priv *pregpriv = &padapter->registrypriv;
1444 struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
1445 struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
1448 DBG_871X_SEL_NL(m, "check_fw_ps = %d , 1:enable get FW PS state , 0: disable get FW PS state\n"
1449 , pregpriv->check_fw_ps);
1454 ssize_t proc_set_en_fwps(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data)
1456 struct net_device *dev = data;
1457 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1458 struct registry_priv *pregpriv = &padapter->registrypriv;
1459 struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
1460 struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
1467 if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) {
1469 int num = sscanf(tmp, "%d ", &mode);
1471 if( pregpriv && mode < 2 )
1473 pregpriv->check_fw_ps = mode;
1474 DBG_871X("pregpriv->check_fw_ps=%d \n",pregpriv->check_fw_ps);
1483 int proc_get_two_path_rssi(struct seq_file *m, void *v)
1485 struct net_device *dev = m->private;
1486 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1489 DBG_871X_SEL_NL(m, "%d %d\n",
1490 padapter->recvpriv.RxRssi[0], padapter->recvpriv.RxRssi[1]);
1495 #ifdef CONFIG_80211N_HT
1496 int proc_get_rx_stbc(struct seq_file *m, void *v)
1498 struct net_device *dev = m->private;
1499 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1500 struct registry_priv *pregpriv = &padapter->registrypriv;
1503 DBG_871X_SEL_NL(m, "%d\n", pregpriv->rx_stbc);
1508 ssize_t proc_set_rx_stbc(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data)
1510 struct net_device *dev = data;
1511 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1512 struct registry_priv *pregpriv = &padapter->registrypriv;
1519 if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) {
1521 int num = sscanf(tmp, "%d ", &mode);
1523 if( pregpriv && (mode == 0 || mode == 1|| mode == 2|| mode == 3))
1525 pregpriv->rx_stbc= mode;
1526 printk("rx_stbc=%d\n", mode);
1533 #endif //CONFIG_80211N_HT
1535 /*int proc_get_rssi_disp(struct seq_file *m, void *v)
1537 struct net_device *dev = m->private;
1542 /*ssize_t proc_set_rssi_disp(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data)
1544 struct net_device *dev = data;
1545 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1551 DBG_8192C("argument size is less than 1\n");
1555 if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) {
1557 int num = sscanf(tmp, "%x", &enable);
1560 DBG_8192C("invalid set_rssi_disp parameter!\n");
1566 DBG_8192C("Linked info Function Enable\n");
1567 padapter->bLinkInfoDump = enable ;
1571 DBG_8192C("Linked info Function Disable\n");
1572 padapter->bLinkInfoDump = 0 ;
1582 #ifdef CONFIG_AP_MODE
1584 int proc_get_all_sta_info(struct seq_file *m, void *v)
1586 struct net_device *dev = m->private;
1588 struct sta_info *psta;
1589 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1590 struct sta_priv *pstapriv = &padapter->stapriv;
1592 _list *plist, *phead;
1593 struct recv_reorder_ctrl *preorder_ctrl;
1595 DBG_871X_SEL_NL(m, "sta_dz_bitmap=0x%x, tim_bitmap=0x%x\n", pstapriv->sta_dz_bitmap, pstapriv->tim_bitmap);
1597 _enter_critical_bh(&pstapriv->sta_hash_lock, &irqL);
1599 for(i=0; i< NUM_STA; i++)
1601 phead = &(pstapriv->sta_hash[i]);
1602 plist = get_next(phead);
1604 while ((rtw_end_of_queue_search(phead, plist)) == _FALSE)
1606 psta = LIST_CONTAINOR(plist, struct sta_info, hash_list);
1608 plist = get_next(plist);
1610 //if(extra_arg == psta->aid)
1612 DBG_871X_SEL_NL(m, "==============================\n");
1613 DBG_871X_SEL_NL(m, "sta's macaddr:" MAC_FMT "\n", MAC_ARG(psta->hwaddr));
1614 DBG_871X_SEL_NL(m, "rtsen=%d, cts2slef=%d\n", psta->rtsen, psta->cts2self);
1615 DBG_871X_SEL_NL(m, "state=0x%x, aid=%d, macid=%d, raid=%d\n", psta->state, psta->aid, psta->mac_id, psta->raid);
1616 #ifdef CONFIG_80211N_HT
1617 DBG_871X_SEL_NL(m, "qos_en=%d, ht_en=%d, init_rate=%d\n", psta->qos_option, psta->htpriv.ht_option, psta->init_rate);
1618 DBG_871X_SEL_NL(m, "bwmode=%d, ch_offset=%d, sgi_20m=%d,sgi_40m=%d\n", psta->bw_mode, psta->htpriv.ch_offset, psta->htpriv.sgi_20m, psta->htpriv.sgi_40m);
1619 DBG_871X_SEL_NL(m, "ampdu_enable = %d\n", psta->htpriv.ampdu_enable);
1620 DBG_871X_SEL_NL(m, "agg_enable_bitmap=%x, candidate_tid_bitmap=%x\n", psta->htpriv.agg_enable_bitmap, psta->htpriv.candidate_tid_bitmap);
1621 #endif //CONFIG_80211N_HT
1622 DBG_871X_SEL_NL(m, "sleepq_len=%d\n", psta->sleepq_len);
1623 DBG_871X_SEL_NL(m, "sta_xmitpriv.vo_q_qcnt=%d\n", psta->sta_xmitpriv.vo_q.qcnt);
1624 DBG_871X_SEL_NL(m, "sta_xmitpriv.vi_q_qcnt=%d\n", psta->sta_xmitpriv.vi_q.qcnt);
1625 DBG_871X_SEL_NL(m, "sta_xmitpriv.be_q_qcnt=%d\n", psta->sta_xmitpriv.be_q.qcnt);
1626 DBG_871X_SEL_NL(m, "sta_xmitpriv.bk_q_qcnt=%d\n", psta->sta_xmitpriv.bk_q.qcnt);
1628 DBG_871X_SEL_NL(m, "capability=0x%x\n", psta->capability);
1629 DBG_871X_SEL_NL(m, "flags=0x%x\n", psta->flags);
1630 DBG_871X_SEL_NL(m, "wpa_psk=0x%x\n", psta->wpa_psk);
1631 DBG_871X_SEL_NL(m, "wpa2_group_cipher=0x%x\n", psta->wpa2_group_cipher);
1632 DBG_871X_SEL_NL(m, "wpa2_pairwise_cipher=0x%x\n", psta->wpa2_pairwise_cipher);
1633 DBG_871X_SEL_NL(m, "qos_info=0x%x\n", psta->qos_info);
1634 DBG_871X_SEL_NL(m, "dot118021XPrivacy=0x%x\n", psta->dot118021XPrivacy);
1638 preorder_ctrl = &psta->recvreorder_ctrl[j];
1639 if(preorder_ctrl->enable)
1641 DBG_871X_SEL_NL(m, "tid=%d, indicate_seq=%d\n", j, preorder_ctrl->indicate_seq);
1646 DBG_871X_SEL_NL(m, "tdls_sta_state=0x%08x\n", psta->tdls_sta_state);
1647 DBG_871X_SEL_NL(m, "PeerKey_Lifetime=%d\n", psta->TDLS_PeerKey_Lifetime);
1648 DBG_871X_SEL_NL(m, "rx_data_pkts=%llu\n", psta->sta_stats.rx_data_pkts);
1649 DBG_871X_SEL_NL(m, "rx_bytes=%llu\n", psta->sta_stats.rx_bytes);
1650 DBG_871X_SEL_NL(m, "tx_data_pkts=%llu\n", psta->sta_stats.tx_pkts);
1651 DBG_871X_SEL_NL(m, "tx_bytes=%llu\n", psta->sta_stats.tx_bytes);
1652 #endif //CONFIG_TDLS
1653 DBG_871X_SEL_NL(m, "==============================\n");
1660 _exit_critical_bh(&pstapriv->sta_hash_lock, &irqL);
1667 #ifdef DBG_MEMORY_LEAK
1668 #include <asm/atomic.h>
1669 extern atomic_t _malloc_cnt;;
1670 extern atomic_t _malloc_size;;
1672 int proc_get_malloc_cnt(struct seq_file *m, void *v)
1674 DBG_871X_SEL_NL(m, "_malloc_cnt=%d\n", atomic_read(&_malloc_cnt));
1675 DBG_871X_SEL_NL(m, "_malloc_size=%d\n", atomic_read(&_malloc_size));
1679 #endif /* DBG_MEMORY_LEAK */
1681 #ifdef CONFIG_FIND_BEST_CHANNEL
1682 int proc_get_best_channel(struct seq_file *m, void *v)
1684 struct net_device *dev = m->private;
1685 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1686 struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
1687 u32 i, best_channel_24G = 1, best_channel_5G = 36, index_24G = 0, index_5G = 0;
1689 for (i=0; pmlmeext->channel_set[i].ChannelNum !=0; i++) {
1690 if ( pmlmeext->channel_set[i].ChannelNum == 1)
1692 if ( pmlmeext->channel_set[i].ChannelNum == 36)
1696 for (i=0; (i < MAX_CHANNEL_NUM) && (pmlmeext->channel_set[i].ChannelNum !=0) ; i++) {
1698 if ( pmlmeext->channel_set[i].ChannelNum == 6 ) {
1699 if ( pmlmeext->channel_set[i].rx_count < pmlmeext->channel_set[index_24G].rx_count ) {
1701 best_channel_24G = pmlmeext->channel_set[i].ChannelNum;
1706 if ( pmlmeext->channel_set[i].ChannelNum >= 36
1707 && pmlmeext->channel_set[i].ChannelNum < 140 ) {
1708 // Find primary channel
1709 if ( (( pmlmeext->channel_set[i].ChannelNum - 36) % 8 == 0)
1710 && (pmlmeext->channel_set[i].rx_count < pmlmeext->channel_set[index_5G].rx_count) ) {
1712 best_channel_5G = pmlmeext->channel_set[i].ChannelNum;
1716 if ( pmlmeext->channel_set[i].ChannelNum >= 149
1717 && pmlmeext->channel_set[i].ChannelNum < 165) {
1718 // find primary channel
1719 if ( (( pmlmeext->channel_set[i].ChannelNum - 149) % 8 == 0)
1720 && (pmlmeext->channel_set[i].rx_count < pmlmeext->channel_set[index_5G].rx_count) ) {
1722 best_channel_5G = pmlmeext->channel_set[i].ChannelNum;
1726 DBG_871X_SEL_NL(m, "The rx cnt of channel %3d = %d\n",
1727 pmlmeext->channel_set[i].ChannelNum, pmlmeext->channel_set[i].rx_count);
1731 DBG_871X_SEL_NL(m, "best_channel_5G = %d\n", best_channel_5G);
1732 DBG_871X_SEL_NL(m, "best_channel_24G = %d\n", best_channel_24G);
1737 ssize_t proc_set_best_channel(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data)
1739 struct net_device *dev = data;
1740 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1741 struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
1747 if(buffer && !copy_from_user(tmp, buffer, sizeof(tmp)))
1750 for(i = 0; pmlmeext->channel_set[i].ChannelNum != 0; i++)
1752 pmlmeext->channel_set[i].rx_count = 0;
1755 DBG_871X("set %s\n", "Clean Best Channel Count");
1760 #endif /* CONFIG_FIND_BEST_CHANNEL */
1762 #ifdef CONFIG_BT_COEXIST
1763 int proc_get_btcoex_dbg(struct seq_file *m, void *v)
1765 struct net_device *dev = m->private;
1767 char buf[512] = {0};
1768 padapter = (PADAPTER)rtw_netdev_priv(dev);
1770 rtw_btcoex_GetDBG(padapter, buf, 512);
1772 DBG_871X_SEL(m, "%s", buf);
1777 ssize_t proc_set_btcoex_dbg(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data)
1779 struct net_device *dev = data;
1782 u32 module[2] = {0};
1785 padapter = (PADAPTER)rtw_netdev_priv(dev);
1787 // DBG_871X("+" FUNC_ADPT_FMT "\n", FUNC_ADPT_ARG(padapter));
1791 DBG_871X(FUNC_ADPT_FMT ": input buffer is NULL!\n",
1792 FUNC_ADPT_ARG(padapter));
1799 DBG_871X(FUNC_ADPT_FMT ": input length is 0!\n",
1800 FUNC_ADPT_ARG(padapter));
1806 if (num > (sizeof(tmp) - 1))
1807 num = (sizeof(tmp) - 1);
1809 if (copy_from_user(tmp, buffer, num))
1811 DBG_871X(FUNC_ADPT_FMT ": copy buffer from user space FAIL!\n",
1812 FUNC_ADPT_ARG(padapter));
1817 num = sscanf(tmp, "%x %x", module, module+1);
1821 _rtw_memset(module, 0, sizeof(module));
1823 _rtw_memset(module, 0xFF, sizeof(module));
1827 DBG_871X(FUNC_ADPT_FMT ": input(\"%s\") format incorrect!\n",
1828 FUNC_ADPT_ARG(padapter), tmp);
1834 DBG_871X(FUNC_ADPT_FMT ": input 0x%08X 0x%08X\n",
1835 FUNC_ADPT_ARG(padapter), module[0], module[1]);
1836 rtw_btcoex_SetDBG(padapter, module);
1841 int proc_get_btcoex_info(struct seq_file *m, void *v)
1843 struct net_device *dev = m->private;
1845 const u32 bufsize = 30*100;
1848 padapter = (PADAPTER)rtw_netdev_priv(dev);
1850 pbuf = rtw_zmalloc(bufsize);
1855 rtw_btcoex_DisplayBtCoexInfo(padapter, pbuf, bufsize);
1857 DBG_871X_SEL(m, "%s\n", pbuf);
1859 rtw_mfree(pbuf, bufsize);
1863 #endif /* CONFIG_BT_COEXIST */
1865 #if defined(DBG_CONFIG_ERROR_DETECT)
1866 int proc_get_sreset(struct seq_file *m, void *v)
1868 struct net_device *dev = m->private;
1869 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1870 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
1875 ssize_t proc_set_sreset(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data)
1877 struct net_device *dev = data;
1878 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1885 if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) {
1887 int num = sscanf(tmp, "%d", &trigger_point);
1889 if (trigger_point == SRESET_TGP_NULL)
1890 rtw_hal_sreset_reset(padapter);
1892 sreset_set_trigger_point(padapter, trigger_point);
1898 #endif /* DBG_CONFIG_ERROR_DETECT */
1900 #ifdef CONFIG_PCI_HCI
1902 int proc_get_rx_ring(struct seq_file *m, void *v)
1905 struct net_device *dev = m->private;
1906 _adapter *padapter = (_adapter *) rtw_netdev_priv(dev);
1907 struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter);
1908 struct recv_priv *precvpriv = &padapter->recvpriv;
1909 struct rtw_rx_ring *rx_ring = &precvpriv->rx_ring[RX_MPDU_QUEUE];
1912 DBG_871X_SEL_NL(m, "rx ring (%p)\n", rx_ring);
1913 DBG_871X_SEL_NL(m, " dma: 0x%08x\n", (int) rx_ring->dma);
1914 DBG_871X_SEL_NL(m, " idx: %d\n", rx_ring->idx);
1916 _enter_critical(&pdvobjpriv->irq_th_lock, &irqL);
1917 for (i=0; i<precvpriv->rxringcount; i++)
1919 struct recv_stat *entry = &rx_ring->desc[i];
1920 struct sk_buff *skb = rx_ring->rx_buf[i];
1922 DBG_871X_SEL_NL(m, " desc[%03d]: %p, rx_buf[%03d]: 0x%08x\n",
1923 i, entry, i, cpu_to_le32(*((dma_addr_t *)skb->cb)));
1925 for (j=0; j<sizeof(*entry)/4; j++)
1928 DBG_871X_SEL_NL(m, " 0x%03x", j);
1930 DBG_871X_SEL_NL(m, " 0x%08x ", ((int *) entry)[j]);
1933 DBG_871X_SEL_NL(m, "\n");
1936 _exit_critical(&pdvobjpriv->irq_th_lock, &irqL);
1941 int proc_get_tx_ring(struct seq_file *m, void *v)
1944 struct net_device *dev = m->private;
1945 _adapter *padapter = (_adapter *) rtw_netdev_priv(dev);
1946 struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter);
1947 struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
1950 _enter_critical(&pdvobjpriv->irq_th_lock, &irqL);
1951 for (i = 0; i < PCI_MAX_TX_QUEUE_COUNT; i++)
1953 struct rtw_tx_ring *tx_ring = &pxmitpriv->tx_ring[i];
1955 DBG_871X_SEL_NL(m, "tx ring[%d] (%p)\n", i, tx_ring);
1956 DBG_871X_SEL_NL(m, " dma: 0x%08x\n", (int) tx_ring->dma);
1957 DBG_871X_SEL_NL(m, " idx: %d\n", tx_ring->idx);
1958 DBG_871X_SEL_NL(m, " entries: %d\n", tx_ring->entries);
1959 // DBG_871X_SEL_NL(m, " queue: %d\n", tx_ring->queue);
1960 DBG_871X_SEL_NL(m, " qlen: %d\n", tx_ring->qlen);
1962 for (j=0; j < pxmitpriv->txringcount[i]; j++)
1964 struct tx_desc *entry = &tx_ring->desc[j];
1966 DBG_871X_SEL_NL(m, " desc[%03d]: %p\n", j, entry);
1967 for (k=0; k < sizeof(*entry)/4; k++)
1970 DBG_871X_SEL_NL(m, " 0x%03x", k);
1972 DBG_871X_SEL_NL(m, " 0x%08x ", ((int *) entry)[k]);
1975 DBG_871X_SEL_NL(m, "\n");
1979 _exit_critical(&pdvobjpriv->irq_th_lock, &irqL);
1985 #ifdef CONFIG_P2P_WOWLAN
1986 int proc_get_p2p_wowlan_info(struct seq_file *m, void *v)
1988 struct net_device *dev = m->private;
1989 _adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
1990 struct wifidirect_info *pwdinfo = &( padapter->wdinfo );
1991 struct p2p_wowlan_info peerinfo = pwdinfo->p2p_wow_info;
1992 if(_TRUE == peerinfo.is_trigger)
1994 DBG_871X_SEL_NL(m,"is_trigger: TRUE\n");
1995 switch(peerinfo.wowlan_recv_frame_type)
1997 case P2P_WOWLAN_RECV_NEGO_REQ:
1998 DBG_871X_SEL_NL(m,"Frame Type: Nego Request\n");
2000 case P2P_WOWLAN_RECV_INVITE_REQ:
2001 DBG_871X_SEL_NL(m,"Frame Type: Invitation Request\n");
2003 case P2P_WOWLAN_RECV_PROVISION_REQ:
2004 DBG_871X_SEL_NL(m,"Frame Type: Provision Request\n");
2009 DBG_871X_SEL_NL(m,"Peer Addr: "MAC_FMT"\n", MAC_ARG(peerinfo.wowlan_peer_addr));
2010 DBG_871X_SEL_NL(m,"Peer WPS Config: %x\n", peerinfo.wowlan_peer_wpsconfig);
2011 DBG_871X_SEL_NL(m,"Persistent Group: %d\n", peerinfo.wowlan_peer_is_persistent);
2012 DBG_871X_SEL_NL(m,"Intivation Type: %d\n", peerinfo.wowlan_peer_invitation_type);
2016 DBG_871X_SEL_NL(m,"is_trigger: False\n");
2020 #endif /* CONFIG_P2P_WOWLAN */
2022 int proc_get_new_bcn_max(struct seq_file *m, void *v)
2024 extern int new_bcn_max;
2026 DBG_871X_SEL_NL(m, "%d", new_bcn_max);
2030 ssize_t proc_set_new_bcn_max(struct file *file, const char __user *buffer, size_t count, loff_t *pos, void *data)
2033 extern int new_bcn_max;
2038 if(buffer && !copy_from_user(tmp, buffer, sizeof(tmp)))
2039 sscanf(tmp, "%d ", &new_bcn_max);