From: pr0gr4m <l4stpr0g...@gmail.com>

---
 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
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to