int proc_get_best_channel(struct seq_file *m, void *v) { struct net_device *dev = m->private; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; u32 i, best_channel_24G = 1, best_channel_5G = 36, index_24G = 0, index_5G = 0; for (i=0; pmlmeext->channel_set[i].ChannelNum !=0; i++) { if ( pmlmeext->channel_set[i].ChannelNum == 1) index_24G = i; if ( pmlmeext->channel_set[i].ChannelNum == 36) index_5G = i; } for (i=0; pmlmeext->channel_set[i].ChannelNum !=0; i++) { // 2.4G if ( pmlmeext->channel_set[i].ChannelNum == 6 ) { if ( pmlmeext->channel_set[i].rx_count < pmlmeext->channel_set[index_24G].rx_count ) { index_24G = i; best_channel_24G = pmlmeext->channel_set[i].ChannelNum; } } // 5G if ( pmlmeext->channel_set[i].ChannelNum >= 36 && pmlmeext->channel_set[i].ChannelNum < 140 ) { // Find primary channel if ( (( pmlmeext->channel_set[i].ChannelNum - 36) % 8 == 0) && (pmlmeext->channel_set[i].rx_count < pmlmeext->channel_set[index_5G].rx_count) ) { index_5G = i; best_channel_5G = pmlmeext->channel_set[i].ChannelNum; } } if ( pmlmeext->channel_set[i].ChannelNum >= 149 && pmlmeext->channel_set[i].ChannelNum < 165) { // find primary channel if ( (( pmlmeext->channel_set[i].ChannelNum - 149) % 8 == 0) && (pmlmeext->channel_set[i].rx_count < pmlmeext->channel_set[index_5G].rx_count) ) { index_5G = i; best_channel_5G = pmlmeext->channel_set[i].ChannelNum; } } #if 1 // debug DBG_871X_SEL_NL(m, "The rx cnt of channel %3d = %d\n", pmlmeext->channel_set[i].ChannelNum, pmlmeext->channel_set[i].rx_count); #endif } DBG_871X_SEL_NL(m, "best_channel_5G = %d\n", best_channel_5G); DBG_871X_SEL_NL(m, "best_channel_24G = %d\n", best_channel_24G); return 0; }
int proc_get_rx_info(struct seq_file *m, void *v) { struct net_device *dev = m->private; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct dvobj_priv *psdpriv = padapter->dvobj; struct debug_priv *pdbgpriv = &psdpriv->drv_dbg; DBG_871X_SEL_NL(m,"AMPDU Drop Cont: %llu\n",(unsigned long long)pdbgpriv->dbg_rx_ampdu_drop_count); DBG_871X_SEL_NL(m,"AMPDU Forced Indicate Count: %llu\n",(unsigned long long)pdbgpriv->dbg_rx_ampdu_forced_indicate_count); DBG_871X_SEL_NL(m,"Duplicate Management Frame Drop Count: %llu\n",(unsigned long long)pdbgpriv->dbg_rx_dup_mgt_frame_drop_count); return 0; }
void rtw_odm_dbg_level_msg(void *sel, _adapter *adapter) { u32 dbg_level; int i; rtw_hal_get_def_var(adapter, HW_DEF_ODM_DBG_LEVEL, &dbg_level); DBG_871X_SEL_NL(sel, "odm.DebugLevel = %u\n", dbg_level); for (i=0;i<RTW_ODM_DBG_LEVEL_NUM;i++) { if (odm_dbg_level_str[i]) DBG_871X_SEL_NL(sel, "%u %s\n", i, odm_dbg_level_str[i]); } }
void rtw_odm_ability_msg(void *sel, _adapter *adapter) { u32 ability = 0; int i; rtw_hal_get_hwreg(adapter, HW_VAR_DM_FLAG, (u8*)&ability); DBG_871X_SEL_NL(sel, "odm.SupportAbility = 0x%08x\n", ability); for (i=0;i<RTW_ODM_ABILITY_MAX;i++) { if (odm_ability_str[i]) DBG_871X_SEL_NL(sel, "%cBIT%-2d %s\n", (BIT0 << i) & ability ? '+' : ' ', i, odm_ability_str[i]); } }
void rtw_odm_dbg_comp_msg(void *sel, _adapter *adapter) { u64 dbg_comp; int i; rtw_hal_get_def_var(adapter, HW_DEF_ODM_DBG_FLAG, &dbg_comp); DBG_871X_SEL_NL(sel, "odm.DebugComponents = 0x%016llx \n", dbg_comp); for (i=0;i<RTW_ODM_COMP_MAX;i++) { if (odm_comp_str[i]) DBG_871X_SEL_NL(sel, "%cBIT%-2d %s\n", (BIT0 << i) & dbg_comp ? '+' : ' ', i, odm_comp_str[i]); } }
int proc_get_rx_signal(struct seq_file *m, void *v) { struct net_device *dev = m->private; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); DBG_871X_SEL_NL(m, "rssi:%d\n", padapter->recvpriv.rssi); DBG_871X_SEL_NL(m, "rxpwdb:%d\n", padapter->recvpriv.rxpwdb); DBG_871X_SEL_NL(m, "signal_strength:%u\n", padapter->recvpriv.signal_strength); DBG_871X_SEL_NL(m, "signal_qual:%u\n", padapter->recvpriv.signal_qual); DBG_871X_SEL_NL(m, "noise:%u\n", padapter->recvpriv.noise); return 0; }
int proc_get_sec_info(struct seq_file *m, void *v) { struct net_device *dev = m->private; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct security_priv *sec = &padapter->securitypriv; DBG_871X_SEL_NL(m, "auth_alg=0x%x, enc_alg=0x%x, auth_type=0x%x, enc_type=0x%x\n", sec->dot11AuthAlgrthm, sec->dot11PrivacyAlgrthm, sec->ndisauthtype, sec->ndisencryptstatus); DBG_871X_SEL_NL(m, "hw_decrypted=%d\n", sec->hw_decrypted); #ifdef DBG_SW_SEC_CNT DBG_871X_SEL_NL(m, "wep_sw_enc_cnt=%llu, %llu, %llu\n" , sec->wep_sw_enc_cnt_bc , sec->wep_sw_enc_cnt_mc, sec->wep_sw_enc_cnt_uc); DBG_871X_SEL_NL(m, "wep_sw_dec_cnt=%llu, %llu, %llu\n" , sec->wep_sw_dec_cnt_bc , sec->wep_sw_dec_cnt_mc, sec->wep_sw_dec_cnt_uc); DBG_871X_SEL_NL(m, "tkip_sw_enc_cnt=%llu, %llu, %llu\n" , sec->tkip_sw_enc_cnt_bc , sec->tkip_sw_enc_cnt_mc, sec->tkip_sw_enc_cnt_uc); DBG_871X_SEL_NL(m, "tkip_sw_dec_cnt=%llu, %llu, %llu\n" , sec->tkip_sw_dec_cnt_bc , sec->tkip_sw_dec_cnt_mc, sec->tkip_sw_dec_cnt_uc); DBG_871X_SEL_NL(m, "aes_sw_enc_cnt=%llu, %llu, %llu\n" , sec->aes_sw_enc_cnt_bc , sec->aes_sw_enc_cnt_mc, sec->aes_sw_enc_cnt_uc); DBG_871X_SEL_NL(m, "aes_sw_dec_cnt=%llu, %llu, %llu\n" , sec->aes_sw_dec_cnt_bc , sec->aes_sw_dec_cnt_mc, sec->aes_sw_dec_cnt_uc); #endif /* DBG_SW_SEC_CNT */ return 0; }
int proc_get_survey_info(struct seq_file *m, void *v) { _irqL irqL; struct net_device *dev = m->private; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); _queue *queue = &(pmlmepriv->scanned_queue); struct wlan_network *pnetwork = NULL; _list *plist, *phead; s32 notify_signal; u16 index = 0; _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); phead = get_list_head(queue); plist = get_next(phead); if ((!phead) || (!plist)) return 0; DBG_871X_SEL_NL(m, "%5s %-17s %3s %-3s %-4s %5s %s\n","index", "bssid", "ch", "dBm", "SdBm", "age", "ssid"); while(1) { if (rtw_end_of_queue_search(phead,plist)== _TRUE) break; pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list); if (!pnetwork) break; if ( check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE && is_same_network(&pmlmepriv->cur_network.network, &pnetwork->network, 0)) { notify_signal = translate_percentage_to_dbm(padapter->recvpriv.signal_strength);//dbm } else { notify_signal = translate_percentage_to_dbm(pnetwork->network.PhyInfo.SignalStrength);//dbm } DBG_871X_SEL_NL(m, "%5d "MAC_FMT" %3d %3d %4d %5d %s\n", ++index, MAC_ARG(pnetwork->network.MacAddress), pnetwork->network.Configuration.DSConfig, (int)pnetwork->network.Rssi, notify_signal, rtw_get_passing_time_ms((u32)pnetwork->last_scanned), //translate_percentage_to_dbm(pnetwork->network.PhyInfo.SignalStrength), pnetwork->network.Ssid.Ssid); plist = get_next(plist); } _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); return 0; }
void bb_reg_dump(void *sel, _adapter *adapter) { int i, j = 1; DBG_871X_SEL_NL(sel, "======= BB REG =======\n"); for(i=0x800;i<0x1000;i+=4) { if(j%4==1) DBG_871X_SEL_NL(sel, "0x%03x",i); DBG_871X_SEL(sel, " 0x%08x ", rtw_read32(adapter,i)); if((j++)%4 == 0) DBG_871X_SEL(sel, "\n"); } }
int proc_get_rf_info(struct seq_file *m, void *v) { struct net_device *dev = m->private; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; DBG_871X_SEL_NL(m, "cur_ch=%d, cur_bw=%d, cur_ch_offet=%d\n", pmlmeext->cur_channel, pmlmeext->cur_bwmode, pmlmeext->cur_ch_offset); DBG_871X_SEL_NL(m, "oper_ch=%d, oper_bw=%d, oper_ch_offet=%d\n", rtw_get_oper_ch(padapter), rtw_get_oper_bw(padapter), rtw_get_oper_choffset(padapter)); return 0; }
int proc_get_sec_info(struct seq_file *m, void *v) { struct net_device *dev = m->private; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct security_priv *sec = &padapter->securitypriv; DBG_871X_SEL_NL(m, "auth_alg=0x%x, enc_alg=0x%x, auth_type=0x%x, enc_type=0x%x\n", sec->dot11AuthAlgrthm, sec->dot11PrivacyAlgrthm, sec->ndisauthtype, sec->ndisencryptstatus); DBG_871X_SEL_NL(m, "hw_decrypted=%d\n", sec->hw_decrypted); return 0; }
void rtw_odm_dbg_level_msg(void *sel, _adapter *adapter) { DM_ODM_T *odm = adapter_to_odm(adapter); int cnt = 0; u32 dbg_level; int i; dbg_level = odm->DebugLevel; DBG_871X_SEL_NL(sel, "odm.DebugLevel = %u\n", dbg_level); for (i=0;i<RTW_ODM_DBG_LEVEL_NUM;i++) { if (odm_dbg_level_str[i]) DBG_871X_SEL_NL(sel, "%u %s\n", i, odm_dbg_level_str[i]); } }
int proc_get_rate_ctl(struct seq_file *m, void *v) { struct net_device *dev = m->private; struct adapter *adapter = (struct adapter *)rtw_netdev_priv(dev); if (adapter->fix_rate != 0xff) { DBG_871X_SEL_NL(m, "FIX\n"); DBG_871X_SEL_NL(m, "0x%02x\n", adapter->fix_rate); } else { DBG_871X_SEL_NL(m, "RA\n"); } return 0; }
void rtw_odm_dbg_level_msg(void *sel, _adapter *adapter) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(adapter); DM_ODM_T *odm = &pHalData->odmpriv; int cnt = 0; u32 dbg_level; int i; rtw_hal_get_def_var(adapter, HW_DEF_ODM_DBG_LEVEL, &dbg_level); DBG_871X_SEL_NL(sel, "odm.DebugLevel = %u\n", dbg_level); for (i=0;i<RTW_ODM_DBG_LEVEL_NUM;i++) { if (odm_dbg_level_str[i]) DBG_871X_SEL_NL(sel, "%u %s\n", i, odm_dbg_level_str[i]); } }
int proc_get_roam_param(struct seq_file *m, void *v) { struct net_device *dev = m->private; _adapter *adapter = (_adapter *)rtw_netdev_priv(dev); struct mlme_priv *mlme = &adapter->mlmepriv; DBG_871X_SEL_NL(m, "%12s %12s %11s\n", "rssi_diff_th", "scanr_exp_ms", "scan_int_ms"); DBG_871X_SEL_NL(m, "%-12u %-12u %-11u\n" , mlme->roam_rssi_diff_th , mlme->roam_scanr_exp_ms , mlme->roam_scan_int_ms ); return 0; }
void rtw_dm_ability_msg(void *sel, _adapter *adapter) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(adapter); int cnt = 0; u8 ability = 0; int i; rtw_hal_get_hwreg(adapter, HW_VAR_DM_FLAG, (u8*)&ability); DBG_871X_SEL_NL(sel, "dm.DMFlag = 0x%02x\n", ability); for (i=0;i<RTW_DM_ABILITY_MAX;i++) { if (dm_ability_str[i]) DBG_871X_SEL_NL(sel, "%cBIT%-2d %s\n", (BIT0 << i) & ability ? '+' : ' ', i, dm_ability_str[i]); } }
void rtw_odm_dbg_comp_msg(void *sel, _adapter *adapter) { DM_ODM_T *odm = adapter_to_odm(adapter); int cnt = 0; u64 dbg_comp; int i; dbg_comp = odm->DebugComponents; DBG_871X_SEL_NL(sel, "odm.DebugComponents = 0x%016llx \n", dbg_comp); for (i=0;i<RTW_ODM_COMP_MAX;i++) { if (odm_comp_str[i]) DBG_871X_SEL_NL(sel, "%cBIT%-2d %s\n", (BIT0 << i) & dbg_comp ? '+' : ' ', i, odm_comp_str[i]); } }
void rtw_odm_adaptivity_parm_msg(void *sel, _adapter *adapter) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(adapter); DM_ODM_T *odm = &pHalData->odmpriv; DBG_871X_SEL_NL(sel, "%10s %16s %8s %10s %11s %14s\n" , "TH_L2H_ini", "TH_EDCCA_HL_diff", "IGI_Base", "ForceEDCCA", "AdapEn_RSSI", "IGI_LowerBound"); DBG_871X_SEL_NL(sel, "0x%-8x %-16d 0x%-6x %-10d %-11u %-14u\n" , (u8)odm->TH_L2H_ini , odm->TH_EDCCA_HL_diff , odm->IGI_Base , odm->ForceEDCCA , odm->AdapEn_RSSI , odm->IGI_LowerBound ); }
void rtw_odm_ability_msg(void *sel, _adapter *adapter) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(adapter); DM_ODM_T *odm = &pHalData->odmpriv; int cnt = 0; u32 ability = 0; int i; rtw_hal_get_hwreg(adapter, HW_VAR_DM_FLAG, (u8*)&ability); DBG_871X_SEL_NL(sel, "odm.SupportAbility = 0x%08x\n", ability); for (i=0;i<RTW_ODM_ABILITY_MAX;i++) { if (odm_ability_str[i]) DBG_871X_SEL_NL(sel, "%cBIT%-2d %s\n", (BIT0 << i) & ability ? '+' : ' ', i, odm_ability_str[i]); } }
int proc_get_rx_signal(struct seq_file *m, void *v) { struct net_device *dev = m->private; struct adapter *padapter = (struct adapter *)rtw_netdev_priv(dev); DBG_871X_SEL_NL(m, "rssi:%d\n", padapter->recvpriv.rssi); //DBG_871X_SEL_NL(m, "rxpwdb:%d\n", padapter->recvpriv.rxpwdb); DBG_871X_SEL_NL(m, "signal_strength:%u\n", padapter->recvpriv.signal_strength); DBG_871X_SEL_NL(m, "signal_qual:%u\n", padapter->recvpriv.signal_qual); DBG_871X_SEL_NL(m, "noise:%d\n", padapter->recvpriv.noise); rtw_odm_get_perpkt_rssi(m, padapter); #ifdef DBG_RX_SIGNAL_DISPLAY_RAW_DATA rtw_get_raw_rssi_info(m, padapter); #endif return 0; }
void dump_os_queue(void *sel, _adapter *padapter) { struct net_device *ndev = padapter->pnetdev; #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) int i; for (i=0;i<4;i++) { DBG_871X_SEL_NL(sel, "os_queue[%d]:%s\n" , i, __netif_subqueue_stopped(ndev, i)?"stopped":"waked"); } #else DBG_871X_SEL_NL(sel, "os_queue:%s\n" , netif_queue_stopped(ndev)?"stopped":"waked"); #endif }
void rtw_odm_dbg_comp_msg(void *sel, _adapter *adapter) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(adapter); DM_ODM_T *odm = &pHalData->odmpriv; int cnt = 0; u64 dbg_comp; int i; rtw_hal_get_def_var(adapter, HW_DEF_ODM_DBG_FLAG, &dbg_comp); DBG_871X_SEL_NL(sel, "odm.DebugComponents = 0x%016llx \n", dbg_comp); for (i=0;i<RTW_ODM_COMP_MAX;i++) { if (odm_comp_str[i]) DBG_871X_SEL_NL(sel, "%cBIT%-2d %s\n", (BIT0 << i) & dbg_comp ? '+' : ' ', i, odm_comp_str[i]); } }
int proc_get_rx_info(struct seq_file *m, void *v) { struct net_device *dev = m->private; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct dvobj_priv *psdpriv = padapter->dvobj; struct debug_priv *pdbgpriv = &psdpriv->drv_dbg; //Counts of packets whose seq_num is less than preorder_ctrl->indicate_seq, Ex delay, retransmission, redundant packets and so on DBG_871X_SEL_NL(m,"Counts of Packets Whose Seq_Num Less Than Reorder Control Seq_Num: %llu\n",(unsigned long long)pdbgpriv->dbg_rx_ampdu_drop_count); //How many times the Rx Reorder Timer is triggered. DBG_871X_SEL_NL(m,"Rx Reorder Time-out Trigger Counts: %llu\n",(unsigned long long)pdbgpriv->dbg_rx_ampdu_forced_indicate_count); //Total counts of packets loss DBG_871X_SEL_NL(m,"Rx Packet Loss Counts: %llu\n",(unsigned long long)pdbgpriv->dbg_rx_ampdu_loss_count); DBG_871X_SEL_NL(m,"Duplicate Management Frame Drop Count: %llu\n",(unsigned long long)pdbgpriv->dbg_rx_dup_mgt_frame_drop_count); DBG_871X_SEL_NL(m,"AMPDU BA window shift Count: %llu\n",(unsigned long long)pdbgpriv->dbg_rx_ampdu_window_shift_cnt); return 0; }
void rtw_odm_adaptivity_parm_msg(void *sel, _adapter *adapter) { #ifdef CONFIG_ODM_ADAPTIVITY DM_ODM_T *odm = adapter_to_odm(adapter); DBG_871X_SEL_NL(sel, "%10s %16s %8s %10s %11s %14s\n" , "TH_L2H_ini", "TH_EDCCA_HL_diff", "IGI_Base", "ForceEDCCA", "AdapEn_RSSI", "IGI_LowerBound"); DBG_871X_SEL_NL(sel, "0x%-8x %-16d 0x%-6x %-10d %-11u %-14u\n" , (u8)odm->TH_L2H_ini , odm->TH_EDCCA_HL_diff , odm->IGI_Base , odm->ForceEDCCA , odm->AdapEn_RSSI , odm->IGI_LowerBound ); #endif /* CONFIG_ODM_ADAPTIVITY */ }
void rtw_odm_get_perpkt_rssi(void *sel, _adapter *adapter) { HAL_DATA_TYPE *hal_data = GET_HAL_DATA(adapter); DM_ODM_T *odm = &(hal_data->odmpriv); DBG_871X_SEL_NL(sel,"RxRate = %s, RSSI_A = %d(%%), RSSI_B = %d(%%)\n", HDATA_RATE(odm->RxRate), odm->RSSI_A, odm->RSSI_B); }
int proc_get_roam_flags(struct seq_file *m, void *v) { struct net_device *dev = m->private; _adapter *adapter = (_adapter *)rtw_netdev_priv(dev); DBG_871X_SEL_NL(m, "0x%02x\n", rtw_roam_flags(adapter)); return 0; }
int proc_get_adapter_state(struct seq_file *m, void *v) { struct net_device *dev = m->private; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); DBG_871X_SEL_NL(m, "bSurpriseRemoved=%d, bDriverStopped=%d\n", padapter->bSurpriseRemoved, padapter->bDriverStopped); return 0; }
static int proc_get_linked_info_dump(struct seq_file *m, void *v) { struct net_device *dev = m->private; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); if(padapter) DBG_871X_SEL_NL(m, "linked_info_dump :%s \n", (padapter->bLinkInfoDump)?"enable":"disable"); return 0; }
int proc_get_qos_option(struct seq_file *m, void *v) { struct net_device *dev = m->private; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); DBG_871X_SEL_NL(m, "qos_option=%d\n", pmlmepriv->qospriv.qos_option); return 0; }
int proc_get_fwstate(struct seq_file *m, void *v) { struct net_device *dev = m->private; _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); DBG_871X_SEL_NL(m, "fwstate=0x%x\n", get_fwstate(pmlmepriv)); return 0; }