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;
}
Exemplo n.º 2
0
int main()
{ 
    // Create a socket to communicate with the kernel.  
    skfd = socket( AF_INET, SOCK_DGRAM, 0 );
    if( 0 > skfd )
    {
          perror( "Error: Failed to create socket.\n" );
          return -1;
    } 

    char wireless_mode[WIRELESS_MODE_LEN + 1] = "";
    if( !( GetWifiMode( wireless_mode ) ) )
    {
        printf( "Error: Failed to get Wireless mode.\n" );
        return -1;
    }
    printf( "Wireless mode = %s \n", wireless_mode );


    unsigned short wireless_channel = 0;
    if( !( GetWifiChannel( wireless_channel ) ) )
    {
        printf( "Error: Failed to get Wireless channel.\n" );
        return -1;
    }
    printf( "Wireless channel = %u \n", wireless_channel );


    char bssid[MAC_ADDR_LEN] = "";
    if( !( GetWifiBssid( bssid ) ) )
    {
        printf( "Error: Failed to get BSSID.\n" );
        return -1;
    }
    printf( "BSSID = " MACADDR "\n", DEREF_MACADDR( bssid ) );


    unsigned int link_speed = 0;
    if( !( GetWifiLinkSpeed( link_speed ) ) )
    {
        printf( "Error: Failed to get Link speed.\n" );
        return -1;
    }
    printf( "Link speed = %u \n", link_speed );


    unsigned short link_qual = 0;
    int rssi = 0;
    if( !( GetWifiLinkQual( link_qual, rssi ) ) )
    {
        printf( "Error: Failed to get Link quality.\n" );
        return -1;
    }
    printf( "Link quality = %u, Rssi = %d \n", link_qual, rssi );


    char protocol[WIRELESS_MODE_LEN + 1 ] = "";
    if( !( GetWifiProtocol( protocol ) ) )
    {
        printf( "Error: Failed to get Wireless protocol.\n" );
        return -1;
    }
    printf( "Wireless protocol = %s \n", protocol );


    char ap_mode[WIRELESS_MODE_LEN + 1] = "";
    if( !( GetAPMode( ap_mode ) ) )
    {
        printf( "Error: Failed to get AP mode.\n" );
        return -1;
    }
    printf( "AP mode = %s \n", ap_mode );


    char mode[WIRELESS_MODE_LEN + 1] = "";
    if( !( GetPhyMode( mode ) ) )
    {
        printf( "Error: Failed to get WiFi mode.\n" );
        return -1;
    }
    printf( "WiFi mode = %s \n", mode );


    // Work done, now close the socket.
    close( skfd );
    return 0;   
}
Exemplo n.º 3
0
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;
}
Exemplo n.º 4
0
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;
}