Esempio n. 1
0
VOID N_ChannelCheck(
    IN PRTMP_ADAPTER pAd)
{
    /*UCHAR ChannelNum = pAd->ChannelListNum;*/
    UCHAR Channel = pAd->CommonCfg.Channel;

    if ((pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED) && (pAd->CommonCfg.RegTransmitSetting.field.BW  == BW_40))
    {
        if (Channel > 14)
        {
            if ((Channel == 36) || (Channel == 44) || (Channel == 52) || (Channel == 60) || (Channel == 100) || (Channel == 108) ||
                    (Channel == 116) || (Channel == 124) || (Channel == 132) || (Channel == 149) || (Channel == 157))
            {
                pAd->CommonCfg.RegTransmitSetting.field.EXTCHA = EXTCHA_ABOVE;
            }
            else if ((Channel == 40) || (Channel == 48) || (Channel == 56) || (Channel == 64) || (Channel == 104) || (Channel == 112) ||
                     (Channel == 120) || (Channel == 128) || (Channel == 136) || (Channel == 153) || (Channel == 161))
            {
                pAd->CommonCfg.RegTransmitSetting.field.EXTCHA = EXTCHA_BELOW;
            }
            else
            {
                pAd->CommonCfg.RegTransmitSetting.field.BW  = BW_20;
            }
        }
        else
        {
            do
            {
                UCHAR ExtCh;
                UCHAR Dir = pAd->CommonCfg.RegTransmitSetting.field.EXTCHA;
                ExtCh = GetExtCh(Channel, Dir);
                if (IsValidChannel(pAd, ExtCh))
                    break;

                Dir = (Dir == EXTCHA_ABOVE) ? EXTCHA_BELOW : EXTCHA_ABOVE;
                ExtCh = GetExtCh(Channel, Dir);
                if (IsValidChannel(pAd, ExtCh))
                {
                    pAd->CommonCfg.RegTransmitSetting.field.EXTCHA = Dir;
                    break;
                }
                pAd->CommonCfg.RegTransmitSetting.field.BW  = BW_20;
            } while(FALSE);

            if (Channel == 14)
            {
                pAd->CommonCfg.RegTransmitSetting.field.BW  = BW_20;
                /*pAd->CommonCfg.RegTransmitSetting.field.EXTCHA = EXTCHA_NONE; We didn't set the ExtCh as NONE due to it'll set in RTMPSetHT()*/
            }
        }
    }

#ifdef CONFIG_AP_SUPPORT
#ifdef DOT11N_DRAFT3
#endif /* DOT11N_DRAFT3 */
#endif /* CONFIG_AP_SUPPORT */

}
Esempio n. 2
0
void N_ChannelCheck(struct rt_rtmp_adapter *pAd)
{
	/*u8 ChannelNum = pAd->ChannelListNum; */
	u8 Channel = pAd->CommonCfg.Channel;

	if ((pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED)
	    && (pAd->CommonCfg.RegTransmitSetting.field.BW == BW_40)) {
		if (Channel > 14) {
			if ((Channel == 36) || (Channel == 44)
			    || (Channel == 52) || (Channel == 60)
			    || (Channel == 100) || (Channel == 108)
			    || (Channel == 116) || (Channel == 124)
			    || (Channel == 132) || (Channel == 149)
			    || (Channel == 157)) {
				pAd->CommonCfg.RegTransmitSetting.field.EXTCHA =
				    EXTCHA_ABOVE;
			} else if ((Channel == 40) || (Channel == 48)
				   || (Channel == 56) || (Channel == 64)
				   || (Channel == 104) || (Channel == 112)
				   || (Channel == 120) || (Channel == 128)
				   || (Channel == 136) || (Channel == 153)
				   || (Channel == 161)) {
				pAd->CommonCfg.RegTransmitSetting.field.EXTCHA =
				    EXTCHA_BELOW;
			} else {
				pAd->CommonCfg.RegTransmitSetting.field.BW =
				    BW_20;
			}
		} else {
			do {
				u8 ExtCh;
				u8 Dir =
				    pAd->CommonCfg.RegTransmitSetting.field.
				    EXTCHA;
				ExtCh = GetExtCh(Channel, Dir);
				if (IsValidChannel(pAd, ExtCh))
					break;

				Dir =
				    (Dir ==
				     EXTCHA_ABOVE) ? EXTCHA_BELOW :
				    EXTCHA_ABOVE;
				ExtCh = GetExtCh(Channel, Dir);
				if (IsValidChannel(pAd, ExtCh)) {
					pAd->CommonCfg.RegTransmitSetting.field.
					    EXTCHA = Dir;
					break;
				}
				pAd->CommonCfg.RegTransmitSetting.field.BW =
				    BW_20;
			} while (FALSE);

			if (Channel == 14) {
				pAd->CommonCfg.RegTransmitSetting.field.BW =
				    BW_20;
				/*pAd->CommonCfg.RegTransmitSetting.field.EXTCHA = EXTCHA_NONE; // We didn't set the ExtCh as NONE due to it'll set in RTMPSetHT() */
			}
		}
	}

}