INT Show_WdsTable_Proc( IN PRTMP_ADAPTER pAd, IN PSTRING arg) { INT i; #ifdef RTMP_MAC_PCI UCHAR QueIdx=0; #endif // RTMP_MAC_PCI // for(i = 0; i < MAX_WDS_ENTRY; i++) { DBGPRINT(RT_DEBUG_OFF, ("IF/WDS%d-%02x:%02x:%02x:%02x:%02x:%02x(%s) ,%s, KeyId=%d\n", i, PRINT_MAC(pAd->WdsTab.WdsEntry[i].PeerWdsAddr), pAd->WdsTab.WdsEntry[i].Valid == 1 ? "Valid" : "Invalid", GetEncryptType(pAd->WdsTab.WdsEntry[i].WepStatus), pAd->WdsTab.WdsEntry[i].KeyIdx)); if (pAd->WdsTab.WdsEntry[i].WdsKey.KeyLen > 0) hex_dump("Wds Key", pAd->WdsTab.WdsEntry[i].WdsKey.Key, pAd->WdsTab.WdsEntry[i].WdsKey.KeyLen); } #ifdef RTMP_MAC_PCI for (QueIdx=0; QueIdx < NUM_OF_TX_RING; QueIdx++) { DBGPRINT(RT_DEBUG_OFF, ("[Tx:%d]: SwFreeIdx=%d, CpuIdx=%d, DmaIdx=%d\n", QueIdx,pAd->TxRing[QueIdx].TxSwFreeIdx, pAd->TxRing[QueIdx].TxCpuIdx, pAd->TxRing[QueIdx].TxDmaIdx)); } DBGPRINT(RT_DEBUG_OFF, ("[Rx]: SwRedIdx=%d, CpuIdx=%d, DmaIdx=%d\n", pAd->RxRing.RxSwReadIdx, pAd->RxRing.RxCpuIdx, pAd->RxRing.RxDmaIdx)); #endif // RTMP_MAC_PCI // DBGPRINT(RT_DEBUG_OFF, ("\n%-19s%-4s%-4s%-4s%-7s%-7s%-7s%-10s%-6s%-6s%-6s%-6s\n", "MAC", "IDX", "AID", "PSM", "RSSI0", "RSSI1", "RSSI2", "PhMd", "BW", "MCS", "SGI", "STBC")); for (i=0; i<MAX_LEN_OF_MAC_TABLE; i++) { PMAC_TABLE_ENTRY pEntry = &pAd->MacTab.Content[i]; if (IS_ENTRY_WDS(pEntry)) { DBGPRINT(RT_DEBUG_OFF, ("%02X:%02X:%02X:%02X:%02X:%02X ", PRINT_MAC(pEntry->Addr))); DBGPRINT(RT_DEBUG_OFF,("%-4d", (int)pEntry->MatchWDSTabIdx)); DBGPRINT(RT_DEBUG_OFF, ("%-4d", (int)pEntry->Aid)); DBGPRINT(RT_DEBUG_OFF, ("%-4d", (int)pEntry->PsMode)); DBGPRINT(RT_DEBUG_OFF, ("%-7d", pEntry->RssiSample.AvgRssi0)); DBGPRINT(RT_DEBUG_OFF, ("%-7d", pEntry->RssiSample.AvgRssi1)); DBGPRINT(RT_DEBUG_OFF, ("%-7d", pEntry->RssiSample.AvgRssi2)); DBGPRINT(RT_DEBUG_OFF, ("%-10s", GetPhyMode(pEntry->HTPhyMode.field.MODE))); DBGPRINT(RT_DEBUG_OFF, ("%-6s", GetBW(pEntry->HTPhyMode.field.BW))); DBGPRINT(RT_DEBUG_OFF, ("%-6d", pEntry->HTPhyMode.field.MCS)); DBGPRINT(RT_DEBUG_OFF, ("%-6d", pEntry->HTPhyMode.field.ShortGI)); DBGPRINT(RT_DEBUG_OFF, ("%-6d\n", pEntry->HTPhyMode.field.STBC)); } } return TRUE; }
static int mt76x2e_get_assoclist(const char *ifname, char *buf, int *len) { struct iwreq wrq; int ret, i, rssi, quality, maxrssi=-127; RT_802_11_MAC_TABLE *mp; char mac_table_data[4096]; struct iwinfo_assoclist_entry entry; MACHTTRANSMIT_SETTING rx; bzero(mac_table_data, sizeof(mac_table_data)); wrq.u.data.pointer = mac_table_data; wrq.u.data.length = sizeof(mac_table_data); wrq.u.data.flags = 0; if (mt76x2e_ioctl(ifname, RTPRIV_IOCTL_GET_MAC_TABLE_STRUCT, &wrq) >= 0) { mp = (RT_802_11_MAC_TABLE *) wrq.u.data.pointer; for(i=0; i < mp->Num; i++) { rssi = -127; rssi = (int)mp->Entry[i].AvgRssi0; if ((int)mp->Entry[i].AvgRssi1 > rssi && mp->Entry[i].AvgRssi1 != 0) rssi = (int)mp->Entry[i].AvgRssi1; if ((int)mp->Entry[i].AvgRssi2 > rssi && mp->Entry[i].AvgRssi2 != 0) rssi = (int)mp->Entry[i].AvgRssi2; rx.word = mp->Entry[i].LastRxRate; memset(&entry, 0, sizeof(entry)); memcpy(entry.mac, mp->Entry[i].Addr, MAC_ADDR_LENGTH); entry.signal = rssi; if (maxrssi < rssi) maxrssi = rssi; entry.tx_rate.rate = getRate(mp->Entry[i].TxRate)*1000; entry.tx_rate.mcs = getMCS(mp->Entry[i].TxRate); entry.tx_rate.is_40mhz = GetBW(mp->Entry[i].TxRate.field.BW) == 4 ? 1 : 0; if ( !strcmp(GetPhyMode(mp->Entry[i].TxRate.field.MODE),"HTMIX") || !strcmp(GetPhyMode(mp->Entry[i].TxRate.field.MODE),"HT_GF") || !strcmp(GetPhyMode(mp->Entry[i].TxRate.field.MODE),"OFDM") ) { entry.tx_rate.is_ht = 1; } else { entry.tx_rate.is_ht = 0; } if (!strcmp(GetPhyMode(mp->Entry[i].TxRate.field.MODE),"VHT")) { entry.tx_rate.is_vht = 1; } else { entry.tx_rate.is_vht = 0; } entry.tx_rate.is_short_gi = mp->Entry[i].TxRate.field.ShortGI ? 1 : 0; entry.tx_rate.mhz = GetBW(mp->Entry[i].TxRate.field.BW)*10; entry.rx_rate.rate = getRate(rx)*1000; entry.rx_rate.mcs = getMCS(rx); entry.rx_rate.is_40mhz = GetBW(rx.field.BW) == 4 ? 1 : 0;; if ( !strcmp(GetPhyMode(rx.field.MODE),"HTMIX") || !strcmp(GetPhyMode(rx.field.MODE),"HT_GF") || !strcmp(GetPhyMode(rx.field.MODE),"OFDM") ) { entry.rx_rate.is_ht = 1; } else { entry.rx_rate.is_ht = 0; } if (!strcmp(GetPhyMode(rx.field.MODE), "VHT")) { entry.rx_rate.is_vht = 1; } else { entry.rx_rate.is_vht = 0; } entry.rx_rate.is_short_gi = rx.field.ShortGI ? 1 : 0; entry.rx_rate.mhz = GetBW(rx.field.BW)*10; memcpy(&buf[i*sizeof(entry)], &entry, sizeof(entry)); } *len = (i)*sizeof(entry); } quality = (int) 127 + maxrssi; return quality; }
INT Show_Repeater_Cli_Proc( IN PRTMP_ADAPTER pAd, IN PSTRING arg) { INT i; UINT32 RegValue; ULONG DataRate=0; if (!pAd->ApCfg.bMACRepeaterEn) return TRUE; printk("\n"); RTMP_IO_READ32(pAd, BKOFF_SLOT_CFG, &RegValue); printk("BackOff Slot : %s slot time, BKOFF_SLOT_CFG(0x1104) = 0x%08x\n", OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_SHORT_SLOT_INUSED) ? "short" : "long", RegValue); #ifdef DOT11_N_SUPPORT printk("HT Operating Mode : %d\n", pAd->CommonCfg.AddHTInfo.AddHtInfo2.OperaionMode); printk("\n"); #endif /* DOT11_N_SUPPORT */ printk("\n%-19s%-4s%-4s%-4s%-4s%-8s%-7s%-7s%-7s%-10s%-6s%-6s%-6s%-6s%-7s%-7s\n", "MAC", "AID", "BSS", "PSM", "WMM", "MIMOPS", "RSSI0", "RSSI1", "RSSI2", "PhMd", "BW", "MCS", "SGI", "STBC", "Idle", "Rate"); for (i = MAX_LEN_OF_MAC_TABLE; i < MAX_MAC_TABLE_SIZE_WITH_REPEATER; i++) { PMAC_TABLE_ENTRY pEntry = &pAd->MacTab.Content[i]; if (pEntry && IS_ENTRY_APCLI(pEntry)&& (pEntry->Sst == SST_ASSOC) && (pEntry->bReptCli)) { DataRate=0; getRate(pEntry->HTPhyMode, &DataRate); printk("%02X:%02X:%02X:%02X:%02X:%02X ", pEntry->ReptCliAddr[0], pEntry->ReptCliAddr[1], pEntry->ReptCliAddr[2], pEntry->ReptCliAddr[3], pEntry->ReptCliAddr[4], pEntry->ReptCliAddr[5]); printk("%-4d", (int)pEntry->Aid); printk("%-4d", (int)pEntry->apidx); printk("%-4d", (int)pEntry->PsMode); printk("%-4d", (int)CLIENT_STATUS_TEST_FLAG(pEntry, fCLIENT_STATUS_WMM_CAPABLE)); #ifdef DOT11_N_SUPPORT printk("%-8d", (int)pEntry->MmpsMode); #endif /* DOT11_N_SUPPORT */ printk("%-7d", pEntry->RssiSample.AvgRssi0); printk("%-7d", pEntry->RssiSample.AvgRssi1); printk("%-7d", pEntry->RssiSample.AvgRssi2); printk("%-10s", GetPhyMode(pEntry->HTPhyMode.field.MODE)); printk("%-6s", GetBW(pEntry->HTPhyMode.field.BW)); printk("%-6d", pEntry->HTPhyMode.field.MCS); printk("%-6d", pEntry->HTPhyMode.field.ShortGI); printk("%-6d", pEntry->HTPhyMode.field.STBC); printk("%-7d", (int)(pEntry->StaIdleTimeout - pEntry->NoDataIdleCount)); printk("%-7d", (int)DataRate); printk("%-10d, %d, %d%%\n", pEntry->DebugFIFOCount, pEntry->DebugTxCount, (pEntry->DebugTxCount) ? ((pEntry->DebugTxCount-pEntry->DebugFIFOCount)*100/pEntry->DebugTxCount) : 0); printk("\n"); } } return TRUE; }