📄 rtmp_init.c
字号:
t3 = 0xf; t4 = ((value&0xf000)>>12)+(Gpwrdelta); if (t4 > 0xf) t4 = 0xf; } else { if ((value&0xf) > Gpwrdelta) t1 = (value&0xf)-(Gpwrdelta); else t1 = 0; if (((value&0xf0)>>4) > Gpwrdelta) t2 = ((value&0xf0)>>4)-(Gpwrdelta); else t2 = 0; if (((value&0xf00)>>8) > Gpwrdelta) t3 = ((value&0xf00)>>8)-(Gpwrdelta); else t3 = 0; if (((value&0xf000)>>12) > Gpwrdelta) t4 = ((value&0xf000)>>12)-(Gpwrdelta); else t4 = 0; } Gdata = t1 + (t2<<4) + (t3<<8) + (t4<<12); RT28xx_EEPROM_READ16(pAd, EEPROM_TXPOWER_BYRATE_20MHZ_2_4G + i*4 + 2, value); if (bApwrdeltaMinus == FALSE) { t1 = (value&0xf)+(Apwrdelta); if (t1 > 0xf) t1 = 0xf; t2 = ((value&0xf0)>>4)+(Apwrdelta); if (t2 > 0xf) t2 = 0xf; t3 = ((value&0xf00)>>8)+(Apwrdelta); if (t3 > 0xf) t3 = 0xf; t4 = ((value&0xf000)>>12)+(Apwrdelta); if (t4 > 0xf) t4 = 0xf; } else { if ((value&0xf) > Apwrdelta) t1 = (value&0xf)-(Apwrdelta); else t1 = 0; if (((value&0xf0)>>4) > Apwrdelta) t2 = ((value&0xf0)>>4)-(Apwrdelta); else t2 = 0; if (((value&0xf00)>>8) > Apwrdelta) t3 = ((value&0xf00)>>8)-(Apwrdelta); else t3 = 0; if (((value&0xf000)>>12) > Apwrdelta) t4 = ((value&0xf000)>>12)-(Apwrdelta); else t4 = 0; } Adata |= ((t1<<16) + (t2<<20) + (t3<<24) + (t4<<28)); if (bGpwrdeltaMinus == FALSE) { t1 = (value&0xf)+(Gpwrdelta); if (t1 > 0xf) t1 = 0xf; t2 = ((value&0xf0)>>4)+(Gpwrdelta); if (t2 > 0xf) t2 = 0xf; t3 = ((value&0xf00)>>8)+(Gpwrdelta); if (t3 > 0xf) t3 = 0xf; t4 = ((value&0xf000)>>12)+(Gpwrdelta); if (t4 > 0xf) t4 = 0xf; } else { if ((value&0xf) > Gpwrdelta) t1 = (value&0xf)-(Gpwrdelta); else t1 = 0; if (((value&0xf0)>>4) > Gpwrdelta) t2 = ((value&0xf0)>>4)-(Gpwrdelta); else t2 = 0; if (((value&0xf00)>>8) > Gpwrdelta) t3 = ((value&0xf00)>>8)-(Gpwrdelta); else t3 = 0; if (((value&0xf000)>>12) > Gpwrdelta) t4 = ((value&0xf000)>>12)-(Gpwrdelta); else t4 = 0; } Gdata |= ((t1<<16) + (t2<<20) + (t3<<24) + (t4<<28)); data |= (value<<16); pAd->Tx20MPwrCfgABand[i] = pAd->Tx40MPwrCfgABand[i] = Adata; pAd->Tx20MPwrCfgGBand[i] = pAd->Tx40MPwrCfgGBand[i] = Gdata; if (data != 0xffffffff) RTMP_IO_WRITE32(pAd, TX_PWR_CFG_0 + i*4, data); DBGPRINT_RAW(RT_DEBUG_TRACE, ("20MHz BW, 2.4G band-%lx, Adata = %lx, Gdata = %lx \n", data, Adata, Gdata)); } // // Check this block is valid for 40MHz in 2.4G. If invalid, use parameter for 20MHz in 2.4G // bValid = TRUE; for (i=0; i<6; i++) { RT28xx_EEPROM_READ16(pAd, EEPROM_TXPOWER_BYRATE_40MHZ_2_4G + 2 + i*2, value); if (((value & 0x00FF) == 0x00FF) || ((value & 0xFF00) == 0xFF00)) { bValid = FALSE; break; } } // // Get Txpower per MCS for 40MHz in 2.4G. // if (bValid) { for (i=0; i<4; i++) { RT28xx_EEPROM_READ16(pAd, EEPROM_TXPOWER_BYRATE_40MHZ_2_4G + i*4, value); if (bGpwrdeltaMinus == FALSE) { t1 = (value&0xf)+(Gpwrdelta); if (t1 > 0xf) t1 = 0xf; t2 = ((value&0xf0)>>4)+(Gpwrdelta); if (t2 > 0xf) t2 = 0xf; t3 = ((value&0xf00)>>8)+(Gpwrdelta); if (t3 > 0xf) t3 = 0xf; t4 = ((value&0xf000)>>12)+(Gpwrdelta); if (t4 > 0xf) t4 = 0xf; } else { if ((value&0xf) > Gpwrdelta) t1 = (value&0xf)-(Gpwrdelta); else t1 = 0; if (((value&0xf0)>>4) > Gpwrdelta) t2 = ((value&0xf0)>>4)-(Gpwrdelta); else t2 = 0; if (((value&0xf00)>>8) > Gpwrdelta) t3 = ((value&0xf00)>>8)-(Gpwrdelta); else t3 = 0; if (((value&0xf000)>>12) > Gpwrdelta) t4 = ((value&0xf000)>>12)-(Gpwrdelta); else t4 = 0; } Gdata = t1 + (t2<<4) + (t3<<8) + (t4<<12); RT28xx_EEPROM_READ16(pAd, EEPROM_TXPOWER_BYRATE_40MHZ_2_4G + i*4 + 2, value); if (bGpwrdeltaMinus == FALSE) { t1 = (value&0xf)+(Gpwrdelta); if (t1 > 0xf) t1 = 0xf; t2 = ((value&0xf0)>>4)+(Gpwrdelta); if (t2 > 0xf) t2 = 0xf; t3 = ((value&0xf00)>>8)+(Gpwrdelta); if (t3 > 0xf) t3 = 0xf; t4 = ((value&0xf000)>>12)+(Gpwrdelta); if (t4 > 0xf) t4 = 0xf; } else { if ((value&0xf) > Gpwrdelta) t1 = (value&0xf)-(Gpwrdelta); else t1 = 0; if (((value&0xf0)>>4) > Gpwrdelta) t2 = ((value&0xf0)>>4)-(Gpwrdelta); else t2 = 0; if (((value&0xf00)>>8) > Gpwrdelta) t3 = ((value&0xf00)>>8)-(Gpwrdelta); else t3 = 0; if (((value&0xf000)>>12) > Gpwrdelta) t4 = ((value&0xf000)>>12)-(Gpwrdelta); else t4 = 0; } Gdata |= ((t1<<16) + (t2<<20) + (t3<<24) + (t4<<28)); if (i == 0) pAd->Tx40MPwrCfgGBand[i+1] = (pAd->Tx40MPwrCfgGBand[i+1] & 0x0000FFFF) | (Gdata & 0xFFFF0000); else pAd->Tx40MPwrCfgGBand[i+1] = Gdata; DBGPRINT_RAW(RT_DEBUG_TRACE, ("40MHz BW, 2.4G band, Gdata = %lx \n", Gdata)); } } // // Check this block is valid for 20MHz in 5G. If invalid, use parameter for 20MHz in 2.4G // bValid = TRUE; for (i=0; i<8; i++) { RT28xx_EEPROM_READ16(pAd, EEPROM_TXPOWER_BYRATE_20MHZ_5G + 2 + i*2, value); if (((value & 0x00FF) == 0x00FF) || ((value & 0xFF00) == 0xFF00)) { bValid = FALSE; break; } } // // Get Txpower per MCS for 20MHz in 5G. // if (bValid) { for (i=0; i<5; i++) { RT28xx_EEPROM_READ16(pAd, EEPROM_TXPOWER_BYRATE_20MHZ_5G + i*4, value); if (bApwrdeltaMinus == FALSE) { t1 = (value&0xf)+(Apwrdelta); if (t1 > 0xf) t1 = 0xf; t2 = ((value&0xf0)>>4)+(Apwrdelta); if (t2 > 0xf) t2 = 0xf; t3 = ((value&0xf00)>>8)+(Apwrdelta); if (t3 > 0xf) t3 = 0xf; t4 = ((value&0xf000)>>12)+(Apwrdelta); if (t4 > 0xf) t4 = 0xf; } else { if ((value&0xf) > Apwrdelta) t1 = (value&0xf)-(Apwrdelta); else t1 = 0; if (((value&0xf0)>>4) > Apwrdelta) t2 = ((value&0xf0)>>4)-(Apwrdelta); else t2 = 0; if (((value&0xf00)>>8) > Apwrdelta) t3 = ((value&0xf00)>>8)-(Apwrdelta); else t3 = 0; if (((value&0xf000)>>12) > Apwrdelta) t4 = ((value&0xf000)>>12)-(Apwrdelta); else t4 = 0; } Adata = t1 + (t2<<4) + (t3<<8) + (t4<<12); RT28xx_EEPROM_READ16(pAd, EEPROM_TXPOWER_BYRATE_20MHZ_5G + i*4 + 2, value); if (bApwrdeltaMinus == FALSE) { t1 = (value&0xf)+(Apwrdelta); if (t1 > 0xf) t1 = 0xf; t2 = ((value&0xf0)>>4)+(Apwrdelta); if (t2 > 0xf) t2 = 0xf; t3 = ((value&0xf00)>>8)+(Apwrdelta); if (t3 > 0xf) t3 = 0xf; t4 = ((value&0xf000)>>12)+(Apwrdelta); if (t4 > 0xf) t4 = 0xf; } else { if ((value&0xf) > Apwrdelta) t1 = (value&0xf)-(Apwrdelta); else t1 = 0; if (((value&0xf0)>>4) > Apwrdelta) t2 = ((value&0xf0)>>4)-(Apwrdelta); else t2 = 0; if (((value&0xf00)>>8) > Apwrdelta) t3 = ((value&0xf00)>>8)-(Apwrdelta); else t3 = 0; if (((value&0xf000)>>12) > Apwrdelta) t4 = ((value&0xf000)>>12)-(Apwrdelta); else t4 = 0; } Adata |= ((t1<<16) + (t2<<20) + (t3<<24) + (t4<<28)); if (i == 0) pAd->Tx20MPwrCfgABand[i] = (pAd->Tx20MPwrCfgABand[i] & 0x0000FFFF) | (Adata & 0xFFFF0000); else pAd->Tx20MPwrCfgABand[i] = Adata; DBGPRINT_RAW(RT_DEBUG_TRACE, ("20MHz BW, 5GHz band, Adata = %lx \n", Adata)); } } // // Check this block is valid for 40MHz in 5G. If invalid, use parameter for 20MHz in 2.4G // bValid = TRUE; for (i=0; i<6; i++) { RT28xx_EEPROM_READ16(pAd, EEPROM_TXPOWER_BYRATE_40MHZ_5G + 2 + i*2, value); if (((value & 0x00FF) == 0x00FF) || ((value & 0xFF00) == 0xFF00)) { bValid = FALSE; break; } } // // Get Txpower per MCS for 40MHz in 5G. // if (bValid) { for (i=0; i<4; i++) { RT28xx_EEPROM_READ16(pAd, EEPROM_TXPOWER_BYRATE_40MHZ_5G + i*4, value); if (bApwrdeltaMinus == FALSE) { t1 = (value&0xf)+(Apwrdelta); if (t1 > 0xf) t1 = 0xf; t2 = ((value&0xf0)>>4)+(Apwrdelta); if (t2 > 0xf) t2 = 0xf; t3 = ((value&0xf00)>>8)+(Apwrdelta); if (t3 > 0xf) t3 = 0xf; t4 = ((value&0xf000)>>12)+(Apwrdelta); if (t4 > 0xf) t4 = 0xf; } else { if ((value&0xf) > Apwrdelta) t1 = (value&0xf)-(Apwrdelta); else t1 = 0; if (((value&0xf0)>>4) > Apwrdelta) t2 = ((value&0xf0)>>4)-(Apwrdelta); else t2 = 0; if (((value&0xf00)>>8) > Apwrdelta) t3 = ((value&0xf00)>>8)-(Apwrdelta); else t3 = 0; if (((value&0xf000)>>12) > Apwrdelta) t4 = ((value&0xf000)>>12)-(Apwrdelta); else t4 = 0; } Adata = t1 + (t2<<4) + (t3<<8) + (t4<<12); RT28xx_EEPROM_READ16(pAd, EEPROM_TXPOWER_BYRATE_40MHZ_5G + i*4 + 2, value); if (bApwrdeltaMinus == FALSE) { t1 = (value&0xf)+(Apwrdelta); if (t1 > 0xf) t1 = 0xf; t2 = ((value&0xf0)>>4)+(Apwrdelta); if (t2 > 0xf) t2 = 0xf; t3 = ((value&0xf00)>>8)+(Apwrdelta); if (t3 > 0xf) t3 = 0xf; t4 = ((value&0xf000)>>12)+(Apwrdelta); if (t4 > 0xf) t4 = 0xf; } else { if ((value&0xf) > Apwrdelta) t1 = (value&0xf)-(Apwrdelta); else t1 = 0; if (((value&0xf0)>>4) > Apwrdelta) t2 = ((value&0xf0)>>4)-(Apwrdelta); else t2 = 0; if (((value&0xf00)>>8) > Apwrdelta) t3 = ((value&0xf00)>>8)-(Apwrdelta); else t3 = 0; if (((value&0xf000)>>12) > Apwrdelta) t4 = ((value&0xf000)>>12)-(Apwrdelta); else t4 = 0; } Adata |= ((t1<<16) + (t2<<20) + (t3<<24) + (t4<<28)); if (i == 0) pAd->Tx40MPwrCfgABand[i+1] = (pAd->Tx40MPwrCfgABand[i+1] & 0x0000FFFF) | (Adata & 0xFFFF0000); else pAd->Tx40MPwrCfgABand[i+1] = Adata; DBGPRINT_RAW(RT_DEBUG_TRACE, ("40MHz BW, 5GHz band, Adata = %lx \n", Adata)); } }}/* ======================================================================== Routine Description: Read initial channel power parameters from EEPROM Arguments: Adapter Pointer to our adapter Return Value: None IRQL = PASSIVE_LEVEL Note: ========================================================================*/VOID RTMPReadChannelPwr( IN PRTMP_ADAPTER pAd){ UCHAR i, choffset; EEPROM_TX_PWR_STRUC Power; EEPROM_TX_PWR_STRUC Power2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -