rtlwifi: rtl8192ce: Log message that B_CUT device may not work
There are a number of problems that occur for the latest version of the Realtek RTL8188CE device with the in-kernel driver. These include selection of the wrong firmware, and system lockup. A full fix is known, but is too invasive for inclusion in stable. This patch fixes the problem with loading the wrong firmware, and logs a message that the device may not work for kernels 3.6 and older. Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Cc: Stable <stable@vger.kernel.org> Cc: Anisse Astier <anisse@astier.eu> Cc: Li Chaoming <chaoming_li@realsil.com.cn> Tested-by: Anisse Astier <anisse@astier.eu> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
Родитель
4abd044af9
Коммит
022e1d0680
|
@ -117,6 +117,7 @@
|
|||
|
||||
#define CHIP_VER_B BIT(4)
|
||||
#define CHIP_92C_BITMASK BIT(0)
|
||||
#define CHIP_UNKNOWN BIT(7)
|
||||
#define CHIP_92C_1T2R 0x03
|
||||
#define CHIP_92C 0x01
|
||||
#define CHIP_88C 0x00
|
||||
|
|
|
@ -994,8 +994,16 @@ static enum version_8192c _rtl92ce_read_chip_version(struct ieee80211_hw *hw)
|
|||
version = (value32 & TYPE_ID) ? VERSION_A_CHIP_92C :
|
||||
VERSION_A_CHIP_88C;
|
||||
} else {
|
||||
version = (value32 & TYPE_ID) ? VERSION_B_CHIP_92C :
|
||||
VERSION_B_CHIP_88C;
|
||||
version = (enum version_8192c) (CHIP_VER_B |
|
||||
((value32 & TYPE_ID) ? CHIP_92C_BITMASK : 0) |
|
||||
((value32 & VENDOR_ID) ? CHIP_VENDOR_UMC : 0));
|
||||
if ((!IS_CHIP_VENDOR_UMC(version)) && (value32 &
|
||||
CHIP_VER_RTL_MASK)) {
|
||||
version = (enum version_8192c)(version |
|
||||
((((value32 & CHIP_VER_RTL_MASK) == BIT(12))
|
||||
? CHIP_VENDOR_UMC_B_CUT : CHIP_UNKNOWN) |
|
||||
CHIP_VENDOR_UMC));
|
||||
}
|
||||
}
|
||||
|
||||
switch (version) {
|
||||
|
|
|
@ -162,10 +162,12 @@ int rtl92c_init_sw_vars(struct ieee80211_hw *hw)
|
|||
|
||||
/* request fw */
|
||||
if (IS_VENDOR_UMC_A_CUT(rtlhal->version) &&
|
||||
!IS_92C_SERIAL(rtlhal->version))
|
||||
!IS_92C_SERIAL(rtlhal->version)) {
|
||||
rtlpriv->cfg->fw_name = "rtlwifi/rtl8192cfwU.bin";
|
||||
else if (IS_81xxC_VENDOR_UMC_B_CUT(rtlhal->version))
|
||||
} else if (IS_81xxC_VENDOR_UMC_B_CUT(rtlhal->version)) {
|
||||
rtlpriv->cfg->fw_name = "rtlwifi/rtl8192cfwU_B.bin";
|
||||
pr_info("****** This B_CUT device may not work with kernels 3.6 and earlier\n");
|
||||
}
|
||||
|
||||
rtlpriv->max_fw_size = 0x4000;
|
||||
pr_info("Using firmware %s\n", rtlpriv->cfg->fw_name);
|
||||
|
|
Загрузка…
Ссылка в новой задаче