From: pr0gr4m <l4stpr0gr4m@xxxxxxxxx> --- drivers/staging/rtl8723bs/hal/odm.h | 17 +++++++++-------- drivers/staging/rtl8723bs/hal/rtl8723b_dm.c | 16 ++++++++++++++-- drivers/staging/rtl8723bs/include/rtw_rf.h | 15 ++++++++++----- drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c | 12 ++++++++++-- 4 files changed, 43 insertions(+), 17 deletions(-) diff --git a/drivers/staging/rtl8723bs/hal/odm.h b/drivers/staging/rtl8723bs/hal/odm.h index 87a76ba..dbb78fe 100644 --- a/drivers/staging/rtl8723bs/hal/odm.h +++ b/drivers/staging/rtl8723bs/hal/odm.h @@ -511,14 +511,15 @@ typedef enum tag_ODM_RF_Path_Bit_Definition { typedef enum tag_ODM_RF_Type_Definition { - ODM_1T1R = 0, - ODM_1T2R = 1, - ODM_2T2R = 2, - ODM_2T3R = 3, - ODM_2T4R = 4, - ODM_3T3R = 5, - ODM_3T4R = 6, - ODM_4T4R = 7, + ODM_1T1R = 0, + ODM_1T2R = 1, + ODM_2T2R = 2, + ODM_2T2R_GREEN = 3, + ODM_2T3R = 4, + ODM_2T4R = 5, + ODM_3T3R = 6, + ODM_3T4R = 7, + ODM_4T4R = 8, } ODM_RF_TYPE_E; diff --git a/drivers/staging/rtl8723bs/hal/rtl8723b_dm.c b/drivers/staging/rtl8723bs/hal/rtl8723b_dm.c index b162559..20dcdcd 100644 --- a/drivers/staging/rtl8723bs/hal/rtl8723b_dm.c +++ b/drivers/staging/rtl8723bs/hal/rtl8723b_dm.c @@ -64,10 +64,22 @@ static void Init_ODM_ComInfo_8723b(struct adapter *Adapter) if (pHalData->rf_type == RF_1T1R) { ODM_CmnInfoUpdate(pDM_Odm, ODM_CMNINFO_RF_TYPE, ODM_1T1R); - } else if (pHalData->rf_type == RF_2T2R) { - ODM_CmnInfoUpdate(pDM_Odm, ODM_CMNINFO_RF_TYPE, ODM_2T2R); } else if (pHalData->rf_type == RF_1T2R) { ODM_CmnInfoUpdate(pDM_Odm, ODM_CMNINFO_RF_TYPE, ODM_1T2R); + } else if (pHalData->rf_type == RF_2T2R) { + ODM_CmnInfoUpdate(pDM_Odm, ODM_CMNINFO_RF_TYPE, ODM_2T2R); + } else if (pHalData->rf_type == RF_2T2R_GREEN) { + ODM_CmnInfoUpdate(pDM_Odm, ODM_CMNINFO_RF_TYPE, ODM_2T2R_GREEN); + } else if (pHalData->rf_type == RF_2T3R) { + ODM_CmnInfoUpdate(pDM_Odm, ODM_CMNINFO_RF_TYPE, ODM_2T3R); + } else if (pHalData->rf_type == RF_2T4R) { + ODM_CmnInfoUpdate(pDM_Odm, ODM_CMNINFO_RF_TYPE, ODM_2T4R); + } else if (pHalData->rf_type == RF_3T3R) { + ODM_CmnInfoUpdate(pDM_Odm, ODM_CMNINFO_RF_TYPE, ODM_3T3R); + } else if (pHalData->rf_type == RF_3T4R) { + ODM_CmnInfoUpdate(pDM_Odm, ODM_CMNINFO_RF_TYPE, ODM_3T4R); + } else if (pHalData->rf_type == RF_4T4R) { + ODM_CmnInfoUpdate(pDM_Odm, ODM_CMNINFO_RF_TYPE, ODM_4T4R); } pdmpriv->InitODMFlag = ODM_RF_CALIBRATION|ODM_RF_TX_PWR_TRACK; diff --git a/drivers/staging/rtl8723bs/include/rtw_rf.h b/drivers/staging/rtl8723bs/include/rtw_rf.h index f9becab..7ef113d1 100644 --- a/drivers/staging/rtl8723bs/include/rtw_rf.h +++ b/drivers/staging/rtl8723bs/include/rtw_rf.h @@ -146,12 +146,17 @@ enum PROTECTION_MODE { /* 2007/11/15 MH Define different RF type. */ enum RT_RF_TYPE_DEFINITION { - RF_1T2R = 0, - RF_2T4R = 1, + RF_1T1R = 0, + RF_1T2R = 1, RF_2T2R = 2, - RF_1T1R = 3, - RF_2T2R_GREEN = 4, - RF_MAX_TYPE = 5, + RF_2T2R_GREEN = 3, + RF_2T3R = 4, + RF_2T4R = 5, + RF_3T3R = 6, + RF_3T4R = 7, + RF_4T4R = 8, + + RF_MAX_TYPE = 0xF }; u32 rtw_ch2freq(u32 ch); diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c index 51d48de..520d2f6 100644 --- a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c +++ b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c @@ -3299,7 +3299,7 @@ static int cfg80211_rtw_sched_scan_stop(struct wiphy *wiphy, static void rtw_cfg80211_init_ht_capab(struct ieee80211_sta_ht_cap *ht_cap, enum nl80211_band band, u8 rf_type) { - +#define MAX_BIT_RATE_40MHZ_MCS23 450 /* Mbps */ #define MAX_BIT_RATE_40MHZ_MCS15 300 /* Mbps */ #define MAX_BIT_RATE_40MHZ_MCS7 150 /* Mbps */ @@ -3338,7 +3338,7 @@ static void rtw_cfg80211_init_ht_capab(struct ieee80211_sta_ht_cap *ht_cap, enum ht_cap->mcs.rx_highest = cpu_to_le16(MAX_BIT_RATE_40MHZ_MCS7); } - else if ((rf_type == RF_1T2R) || (rf_type ==RF_2T2R)) + else if ((rf_type == RF_1T2R) || (rf_type == RF_2T2R) || (rf_type == RF_2T2R_GREEN)) { ht_cap->mcs.rx_mask[0] = 0xFF; ht_cap->mcs.rx_mask[1] = 0xFF; @@ -3346,6 +3346,14 @@ static void rtw_cfg80211_init_ht_capab(struct ieee80211_sta_ht_cap *ht_cap, enum ht_cap->mcs.rx_highest = cpu_to_le16(MAX_BIT_RATE_40MHZ_MCS15); } + else if ((rf_type == RF_2T3R) || (rf_type == RF_3T3R)) + { + ht_cap->mcs.rx_mask[0] = 0xFF; + ht_cap->mcs.rx_mask[1] = 0xFF; + ht_cap->mcs.rx_mask[2] = 0xFF; + + ht_cap->mcs.rx_highest = cpu_to_le16(MAX_BIT_RATE_40MHZ_MCS23); + } else { DBG_8192C("%s, error rf_type =%d\n", __func__, rf_type); -- 2.7.4 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel