diff options
Diffstat (limited to 'drivers/net/wireless/rtlwifi/rtl8192ce')
| -rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192ce/def.h | 153 | ||||
| -rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192ce/sw.c | 78 | ||||
| -rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192ce/trx.c | 116 | ||||
| -rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192ce/trx.h | 6 |
4 files changed, 73 insertions, 280 deletions
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/def.h b/drivers/net/wireless/rtlwifi/rtl8192ce/def.h index 35ff7df41a1d..9fc804d89d65 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/def.h +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/def.h | |||
| @@ -142,8 +142,22 @@ enum version_8192c { | |||
| 142 | VERSION_UNKNOWN = 0x88, | 142 | VERSION_UNKNOWN = 0x88, |
| 143 | }; | 143 | }; |
| 144 | 144 | ||
| 145 | #define CUT_VERSION_MASK (BIT(6)|BIT(7)) | ||
| 146 | #define CHIP_VENDOR_UMC BIT(5) | ||
| 147 | #define CHIP_VENDOR_UMC_B_CUT BIT(6) /* Chip version for ECO */ | ||
| 148 | #define IS_VENDOR_UMC_A_CUT(version) ((IS_CHIP_VENDOR_UMC(version)) ? \ | ||
| 149 | ((GET_CVID_CUT_VERSION(version)) ? false : true) : false) | ||
| 145 | #define IS_CHIP_VER_B(version) ((version & CHIP_VER_B) ? true : false) | 150 | #define IS_CHIP_VER_B(version) ((version & CHIP_VER_B) ? true : false) |
| 151 | #define IS_VENDOR_UMC_A_CUT(version) ((IS_CHIP_VENDOR_UMC(version)) ? \ | ||
| 152 | ((GET_CVID_CUT_VERSION(version)) ? false : true) : false) | ||
| 146 | #define IS_92C_SERIAL(version) ((version & CHIP_92C_BITMASK) ? true : false) | 153 | #define IS_92C_SERIAL(version) ((version & CHIP_92C_BITMASK) ? true : false) |
| 154 | #define IS_CHIP_VENDOR_UMC(version) \ | ||
| 155 | ((version & CHIP_VENDOR_UMC) ? true : false) | ||
| 156 | #define GET_CVID_CUT_VERSION(version) ((version) & CUT_VERSION_MASK) | ||
| 157 | #define IS_81xxC_VENDOR_UMC_B_CUT(version) \ | ||
| 158 | ((IS_CHIP_VENDOR_UMC(version)) ? \ | ||
| 159 | ((GET_CVID_CUT_VERSION(version) == CHIP_VENDOR_UMC_B_CUT) ? \ | ||
| 160 | true : false) : false) | ||
| 147 | 161 | ||
| 148 | enum rtl819x_loopback_e { | 162 | enum rtl819x_loopback_e { |
| 149 | RTL819X_NO_LOOPBACK = 0, | 163 | RTL819X_NO_LOOPBACK = 0, |
| @@ -220,41 +234,6 @@ enum rtl_desc_qsel { | |||
| 220 | QSLT_CMD = 0x13, | 234 | QSLT_CMD = 0x13, |
| 221 | }; | 235 | }; |
| 222 | 236 | ||
| 223 | enum rtl_desc92c_rate { | ||
| 224 | DESC92C_RATE1M = 0x00, | ||
| 225 | DESC92C_RATE2M = 0x01, | ||
| 226 | DESC92C_RATE5_5M = 0x02, | ||
| 227 | DESC92C_RATE11M = 0x03, | ||
| 228 | |||
| 229 | DESC92C_RATE6M = 0x04, | ||
| 230 | DESC92C_RATE9M = 0x05, | ||
| 231 | DESC92C_RATE12M = 0x06, | ||
| 232 | DESC92C_RATE18M = 0x07, | ||
| 233 | DESC92C_RATE24M = 0x08, | ||
| 234 | DESC92C_RATE36M = 0x09, | ||
| 235 | DESC92C_RATE48M = 0x0a, | ||
| 236 | DESC92C_RATE54M = 0x0b, | ||
| 237 | |||
| 238 | DESC92C_RATEMCS0 = 0x0c, | ||
| 239 | DESC92C_RATEMCS1 = 0x0d, | ||
| 240 | DESC92C_RATEMCS2 = 0x0e, | ||
| 241 | DESC92C_RATEMCS3 = 0x0f, | ||
| 242 | DESC92C_RATEMCS4 = 0x10, | ||
| 243 | DESC92C_RATEMCS5 = 0x11, | ||
| 244 | DESC92C_RATEMCS6 = 0x12, | ||
| 245 | DESC92C_RATEMCS7 = 0x13, | ||
| 246 | DESC92C_RATEMCS8 = 0x14, | ||
| 247 | DESC92C_RATEMCS9 = 0x15, | ||
| 248 | DESC92C_RATEMCS10 = 0x16, | ||
| 249 | DESC92C_RATEMCS11 = 0x17, | ||
| 250 | DESC92C_RATEMCS12 = 0x18, | ||
| 251 | DESC92C_RATEMCS13 = 0x19, | ||
| 252 | DESC92C_RATEMCS14 = 0x1a, | ||
| 253 | DESC92C_RATEMCS15 = 0x1b, | ||
| 254 | DESC92C_RATEMCS15_SG = 0x1c, | ||
| 255 | DESC92C_RATEMCS32 = 0x20, | ||
| 256 | }; | ||
| 257 | |||
| 258 | struct phy_sts_cck_8192s_t { | 237 | struct phy_sts_cck_8192s_t { |
| 259 | u8 adc_pwdb_X[4]; | 238 | u8 adc_pwdb_X[4]; |
| 260 | u8 sq_rpt; | 239 | u8 sq_rpt; |
| @@ -267,108 +246,4 @@ struct h2c_cmd_8192c { | |||
| 267 | u8 *p_cmdbuffer; | 246 | u8 *p_cmdbuffer; |
| 268 | }; | 247 | }; |
| 269 | 248 | ||
| 270 | /* NOTE: reference to rtl8192c_rates struct */ | ||
| 271 | static inline int _rtl92c_rate_mapping(struct ieee80211_hw *hw, bool isHT, | ||
| 272 | u8 desc_rate, bool first_ampdu) | ||
| 273 | { | ||
| 274 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
| 275 | int rate_idx = 0; | ||
| 276 | |||
| 277 | if (first_ampdu) { | ||
| 278 | if (false == isHT) { | ||
| 279 | switch (desc_rate) { | ||
| 280 | case DESC92C_RATE1M: | ||
| 281 | rate_idx = 0; | ||
| 282 | break; | ||
| 283 | case DESC92C_RATE2M: | ||
| 284 | rate_idx = 1; | ||
| 285 | break; | ||
| 286 | case DESC92C_RATE5_5M: | ||
| 287 | rate_idx = 2; | ||
| 288 | break; | ||
| 289 | case DESC92C_RATE11M: | ||
| 290 | rate_idx = 3; | ||
| 291 | break; | ||
| 292 | case DESC92C_RATE6M: | ||
| 293 | rate_idx = 4; | ||
| 294 | break; | ||
| 295 | case DESC92C_RATE9M: | ||
| 296 | rate_idx = 5; | ||
| 297 | break; | ||
| 298 | case DESC92C_RATE12M: | ||
| 299 | rate_idx = 6; | ||
| 300 | break; | ||
| 301 | case DESC92C_RATE18M: | ||
| 302 | rate_idx = 7; | ||
| 303 | break; | ||
| 304 | case DESC92C_RATE24M: | ||
| 305 | rate_idx = 8; | ||
| 306 | break; | ||
| 307 | case DESC92C_RATE36M: | ||
| 308 | rate_idx = 9; | ||
| 309 | break; | ||
| 310 | case DESC92C_RATE48M: | ||
| 311 | rate_idx = 10; | ||
| 312 | break; | ||
| 313 | case DESC92C_RATE54M: | ||
| 314 | rate_idx = 11; | ||
| 315 | break; | ||
| 316 | default: | ||
| 317 | RT_TRACE(rtlpriv, COMP_ERR, DBG_DMESG, | ||
| 318 | ("Rate %d is not support, set to " | ||
| 319 | "1M rate.\n", desc_rate)); | ||
| 320 | rate_idx = 0; | ||
| 321 | break; | ||
| 322 | } | ||
| 323 | } else { | ||
| 324 | rate_idx = 11; | ||
| 325 | } | ||
| 326 | return rate_idx; | ||
| 327 | } | ||
| 328 | switch (desc_rate) { | ||
| 329 | case DESC92C_RATE1M: | ||
| 330 | rate_idx = 0; | ||
| 331 | break; | ||
| 332 | case DESC92C_RATE2M: | ||
| 333 | rate_idx = 1; | ||
| 334 | break; | ||
| 335 | case DESC92C_RATE5_5M: | ||
| 336 | rate_idx = 2; | ||
| 337 | break; | ||
| 338 | case DESC92C_RATE11M: | ||
| 339 | rate_idx = 3; | ||
| 340 | break; | ||
| 341 | case DESC92C_RATE6M: | ||
| 342 | rate_idx = 4; | ||
| 343 | break; | ||
| 344 | case DESC92C_RATE9M: | ||
| 345 | rate_idx = 5; | ||
| 346 | break; | ||
| 347 | case DESC92C_RATE12M: | ||
| 348 | rate_idx = 6; | ||
| 349 | break; | ||
| 350 | case DESC92C_RATE18M: | ||
| 351 | rate_idx = 7; | ||
| 352 | break; | ||
| 353 | case DESC92C_RATE24M: | ||
| 354 | rate_idx = 8; | ||
| 355 | break; | ||
| 356 | case DESC92C_RATE36M: | ||
| 357 | rate_idx = 9; | ||
| 358 | break; | ||
| 359 | case DESC92C_RATE48M: | ||
| 360 | rate_idx = 10; | ||
| 361 | break; | ||
| 362 | case DESC92C_RATE54M: | ||
| 363 | rate_idx = 11; | ||
| 364 | break; | ||
| 365 | /* TODO: How to mapping MCS rate? */ | ||
| 366 | /* NOTE: referenc to __ieee80211_rx */ | ||
| 367 | default: | ||
| 368 | rate_idx = 11; | ||
| 369 | break; | ||
| 370 | } | ||
| 371 | return rate_idx; | ||
| 372 | } | ||
| 373 | |||
| 374 | #endif | 249 | #endif |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c b/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c index 373dc78af1dc..f2aa33dc4d78 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c | |||
| @@ -28,6 +28,7 @@ | |||
| 28 | *****************************************************************************/ | 28 | *****************************************************************************/ |
| 29 | 29 | ||
| 30 | #include <linux/vmalloc.h> | 30 | #include <linux/vmalloc.h> |
| 31 | #include <linux/module.h> | ||
| 31 | 32 | ||
| 32 | #include "../wifi.h" | 33 | #include "../wifi.h" |
| 33 | #include "../core.h" | 34 | #include "../core.h" |
| @@ -92,6 +93,8 @@ int rtl92c_init_sw_vars(struct ieee80211_hw *hw) | |||
| 92 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 93 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
| 93 | struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); | 94 | struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); |
| 94 | const struct firmware *firmware; | 95 | const struct firmware *firmware; |
| 96 | struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); | ||
| 97 | char *fw_name = NULL; | ||
| 95 | 98 | ||
| 96 | rtl8192ce_bt_reg_init(hw); | 99 | rtl8192ce_bt_reg_init(hw); |
| 97 | 100 | ||
| @@ -129,10 +132,16 @@ int rtl92c_init_sw_vars(struct ieee80211_hw *hw) | |||
| 129 | 132 | ||
| 130 | rtlpci->irq_mask[1] = (u32) (IMR_CPWM | IMR_C2HCMD | 0); | 133 | rtlpci->irq_mask[1] = (u32) (IMR_CPWM | IMR_C2HCMD | 0); |
| 131 | 134 | ||
| 135 | /* for debug level */ | ||
| 136 | rtlpriv->dbg.global_debuglevel = rtlpriv->cfg->mod_params->debug; | ||
| 132 | /* for LPS & IPS */ | 137 | /* for LPS & IPS */ |
| 133 | rtlpriv->psc.inactiveps = rtlpriv->cfg->mod_params->inactiveps; | 138 | rtlpriv->psc.inactiveps = rtlpriv->cfg->mod_params->inactiveps; |
| 134 | rtlpriv->psc.swctrl_lps = rtlpriv->cfg->mod_params->swctrl_lps; | 139 | rtlpriv->psc.swctrl_lps = rtlpriv->cfg->mod_params->swctrl_lps; |
| 135 | rtlpriv->psc.fwctrl_lps = rtlpriv->cfg->mod_params->fwctrl_lps; | 140 | rtlpriv->psc.fwctrl_lps = rtlpriv->cfg->mod_params->fwctrl_lps; |
| 141 | if (!rtlpriv->psc.inactiveps) | ||
| 142 | pr_info("rtl8192ce: Power Save off (module option)\n"); | ||
| 143 | if (!rtlpriv->psc.fwctrl_lps) | ||
| 144 | pr_info("rtl8192ce: FW Power Save off (module option)\n"); | ||
| 136 | rtlpriv->psc.reg_fwctrl_lps = 3; | 145 | rtlpriv->psc.reg_fwctrl_lps = 3; |
| 137 | rtlpriv->psc.reg_max_lps_awakeintvl = 5; | 146 | rtlpriv->psc.reg_max_lps_awakeintvl = 5; |
| 138 | /* for ASPM, you can close aspm through | 147 | /* for ASPM, you can close aspm through |
| @@ -155,8 +164,14 @@ int rtl92c_init_sw_vars(struct ieee80211_hw *hw) | |||
| 155 | } | 164 | } |
| 156 | 165 | ||
| 157 | /* request fw */ | 166 | /* request fw */ |
| 158 | err = request_firmware(&firmware, rtlpriv->cfg->fw_name, | 167 | if (IS_VENDOR_UMC_A_CUT(rtlhal->version) && |
| 159 | rtlpriv->io.dev); | 168 | !IS_92C_SERIAL(rtlhal->version)) |
| 169 | fw_name = "rtlwifi/rtl8192cfwU.bin"; | ||
| 170 | else if (IS_81xxC_VENDOR_UMC_B_CUT(rtlhal->version)) | ||
| 171 | fw_name = "rtlwifi/rtl8192cfwU_B.bin"; | ||
| 172 | else | ||
| 173 | fw_name = rtlpriv->cfg->fw_name; | ||
| 174 | err = request_firmware(&firmware, fw_name, rtlpriv->io.dev); | ||
| 160 | if (err) { | 175 | if (err) { |
| 161 | RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, | 176 | RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, |
| 162 | ("Failed to request firmware!\n")); | 177 | ("Failed to request firmware!\n")); |
| @@ -241,6 +256,7 @@ static struct rtl_mod_params rtl92ce_mod_params = { | |||
| 241 | .inactiveps = true, | 256 | .inactiveps = true, |
| 242 | .swctrl_lps = false, | 257 | .swctrl_lps = false, |
| 243 | .fwctrl_lps = true, | 258 | .fwctrl_lps = true, |
| 259 | .debug = DBG_EMERG, | ||
| 244 | }; | 260 | }; |
| 245 | 261 | ||
| 246 | static struct rtl_hal_cfg rtl92ce_hal_cfg = { | 262 | static struct rtl_hal_cfg rtl92ce_hal_cfg = { |
| @@ -318,21 +334,21 @@ static struct rtl_hal_cfg rtl92ce_hal_cfg = { | |||
| 318 | .maps[RTL_IMR_ROK] = IMR_ROK, | 334 | .maps[RTL_IMR_ROK] = IMR_ROK, |
| 319 | .maps[RTL_IBSS_INT_MASKS] = (IMR_BCNINT | IMR_TBDOK | IMR_TBDER), | 335 | .maps[RTL_IBSS_INT_MASKS] = (IMR_BCNINT | IMR_TBDOK | IMR_TBDER), |
| 320 | 336 | ||
| 321 | .maps[RTL_RC_CCK_RATE1M] = DESC92C_RATE1M, | 337 | .maps[RTL_RC_CCK_RATE1M] = DESC92_RATE1M, |
| 322 | .maps[RTL_RC_CCK_RATE2M] = DESC92C_RATE2M, | 338 | .maps[RTL_RC_CCK_RATE2M] = DESC92_RATE2M, |
| 323 | .maps[RTL_RC_CCK_RATE5_5M] = DESC92C_RATE5_5M, | 339 | .maps[RTL_RC_CCK_RATE5_5M] = DESC92_RATE5_5M, |
| 324 | .maps[RTL_RC_CCK_RATE11M] = DESC92C_RATE11M, | 340 | .maps[RTL_RC_CCK_RATE11M] = DESC92_RATE11M, |
| 325 | .maps[RTL_RC_OFDM_RATE6M] = DESC92C_RATE6M, | 341 | .maps[RTL_RC_OFDM_RATE6M] = DESC92_RATE6M, |
| 326 | .maps[RTL_RC_OFDM_RATE9M] = DESC92C_RATE9M, | 342 | .maps[RTL_RC_OFDM_RATE9M] = DESC92_RATE9M, |
| 327 | .maps[RTL_RC_OFDM_RATE12M] = DESC92C_RATE12M, | 343 | .maps[RTL_RC_OFDM_RATE12M] = DESC92_RATE12M, |
| 328 | .maps[RTL_RC_OFDM_RATE18M] = DESC92C_RATE18M, | 344 | .maps[RTL_RC_OFDM_RATE18M] = DESC92_RATE18M, |
| 329 | .maps[RTL_RC_OFDM_RATE24M] = DESC92C_RATE24M, | 345 | .maps[RTL_RC_OFDM_RATE24M] = DESC92_RATE24M, |
| 330 | .maps[RTL_RC_OFDM_RATE36M] = DESC92C_RATE36M, | 346 | .maps[RTL_RC_OFDM_RATE36M] = DESC92_RATE36M, |
| 331 | .maps[RTL_RC_OFDM_RATE48M] = DESC92C_RATE48M, | 347 | .maps[RTL_RC_OFDM_RATE48M] = DESC92_RATE48M, |
| 332 | .maps[RTL_RC_OFDM_RATE54M] = DESC92C_RATE54M, | 348 | .maps[RTL_RC_OFDM_RATE54M] = DESC92_RATE54M, |
| 333 | 349 | ||
| 334 | .maps[RTL_RC_HT_RATEMCS7] = DESC92C_RATEMCS7, | 350 | .maps[RTL_RC_HT_RATEMCS7] = DESC92_RATEMCS7, |
| 335 | .maps[RTL_RC_HT_RATEMCS15] = DESC92C_RATEMCS15, | 351 | .maps[RTL_RC_HT_RATEMCS15] = DESC92_RATEMCS15, |
| 336 | }; | 352 | }; |
| 337 | 353 | ||
| 338 | DEFINE_PCI_DEVICE_TABLE(rtl92ce_pci_ids) = { | 354 | DEFINE_PCI_DEVICE_TABLE(rtl92ce_pci_ids) = { |
| @@ -351,27 +367,35 @@ MODULE_AUTHOR("Larry Finger <Larry.Finger@lwfinger.net>"); | |||
| 351 | MODULE_LICENSE("GPL"); | 367 | MODULE_LICENSE("GPL"); |
| 352 | MODULE_DESCRIPTION("Realtek 8192C/8188C 802.11n PCI wireless"); | 368 | MODULE_DESCRIPTION("Realtek 8192C/8188C 802.11n PCI wireless"); |
| 353 | MODULE_FIRMWARE("rtlwifi/rtl8192cfw.bin"); | 369 | MODULE_FIRMWARE("rtlwifi/rtl8192cfw.bin"); |
| 370 | MODULE_FIRMWARE("rtlwifi/rtl8192cfwU.bin"); | ||
| 371 | MODULE_FIRMWARE("rtlwifi/rtl8192cfwU_B.bin"); | ||
| 354 | 372 | ||
| 355 | module_param_named(swenc, rtl92ce_mod_params.sw_crypto, bool, 0444); | 373 | module_param_named(swenc, rtl92ce_mod_params.sw_crypto, bool, 0444); |
| 374 | module_param_named(debug, rtl92ce_mod_params.debug, int, 0444); | ||
| 356 | module_param_named(ips, rtl92ce_mod_params.inactiveps, bool, 0444); | 375 | module_param_named(ips, rtl92ce_mod_params.inactiveps, bool, 0444); |
| 357 | module_param_named(swlps, rtl92ce_mod_params.swctrl_lps, bool, 0444); | 376 | module_param_named(swlps, rtl92ce_mod_params.swctrl_lps, bool, 0444); |
| 358 | module_param_named(fwlps, rtl92ce_mod_params.fwctrl_lps, bool, 0444); | 377 | module_param_named(fwlps, rtl92ce_mod_params.fwctrl_lps, bool, 0444); |
| 359 | MODULE_PARM_DESC(swenc, "using hardware crypto (default 0 [hardware])\n"); | 378 | MODULE_PARM_DESC(swenc, "Set to 1 for software crypto (default 0)\n"); |
| 360 | MODULE_PARM_DESC(ips, "using no link power save (default 1 is open)\n"); | 379 | MODULE_PARM_DESC(ips, "Set to 0 to not use link power save (default 1)\n"); |
| 361 | MODULE_PARM_DESC(fwlps, "using linked fw control power save " | 380 | MODULE_PARM_DESC(swlps, "Set to 1 to use SW control power save (default 0)\n"); |
| 362 | "(default 1 is open)\n"); | 381 | MODULE_PARM_DESC(fwlps, "Set to 1 to use FW control power save (default 1)\n"); |
| 382 | MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)"); | ||
| 383 | |||
| 384 | static const struct dev_pm_ops rtlwifi_pm_ops = { | ||
| 385 | .suspend = rtl_pci_suspend, | ||
| 386 | .resume = rtl_pci_resume, | ||
| 387 | .freeze = rtl_pci_suspend, | ||
| 388 | .thaw = rtl_pci_resume, | ||
| 389 | .poweroff = rtl_pci_suspend, | ||
| 390 | .restore = rtl_pci_resume, | ||
| 391 | }; | ||
| 363 | 392 | ||
| 364 | static struct pci_driver rtl92ce_driver = { | 393 | static struct pci_driver rtl92ce_driver = { |
| 365 | .name = KBUILD_MODNAME, | 394 | .name = KBUILD_MODNAME, |
| 366 | .id_table = rtl92ce_pci_ids, | 395 | .id_table = rtl92ce_pci_ids, |
| 367 | .probe = rtl_pci_probe, | 396 | .probe = rtl_pci_probe, |
| 368 | .remove = rtl_pci_disconnect, | 397 | .remove = rtl_pci_disconnect, |
| 369 | 398 | .driver.pm = &rtlwifi_pm_ops, | |
| 370 | #ifdef CONFIG_PM | ||
| 371 | .suspend = rtl_pci_suspend, | ||
| 372 | .resume = rtl_pci_resume, | ||
| 373 | #endif | ||
| 374 | |||
| 375 | }; | 399 | }; |
| 376 | 400 | ||
| 377 | static int __init rtl92ce_module_init(void) | 401 | static int __init rtl92ce_module_init(void) |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c b/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c index 230bbe900d8d..4fb5ae24dee0 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c | |||
| @@ -48,104 +48,6 @@ static u8 _rtl92ce_map_hwqueue_to_fwqueue(struct sk_buff *skb, u8 hw_queue) | |||
| 48 | return skb->priority; | 48 | return skb->priority; |
| 49 | } | 49 | } |
| 50 | 50 | ||
| 51 | static int _rtl92ce_rate_mapping(bool isht, u8 desc_rate, bool first_ampdu) | ||
| 52 | { | ||
| 53 | int rate_idx; | ||
| 54 | |||
| 55 | if (first_ampdu) { | ||
| 56 | if (false == isht) { | ||
| 57 | switch (desc_rate) { | ||
| 58 | case DESC92C_RATE1M: | ||
| 59 | rate_idx = 0; | ||
| 60 | break; | ||
| 61 | case DESC92C_RATE2M: | ||
| 62 | rate_idx = 1; | ||
| 63 | break; | ||
| 64 | case DESC92C_RATE5_5M: | ||
| 65 | rate_idx = 2; | ||
| 66 | break; | ||
| 67 | case DESC92C_RATE11M: | ||
| 68 | rate_idx = 3; | ||
| 69 | break; | ||
| 70 | case DESC92C_RATE6M: | ||
| 71 | rate_idx = 4; | ||
| 72 | break; | ||
| 73 | case DESC92C_RATE9M: | ||
| 74 | rate_idx = 5; | ||
| 75 | break; | ||
| 76 | case DESC92C_RATE12M: | ||
| 77 | rate_idx = 6; | ||
| 78 | break; | ||
| 79 | case DESC92C_RATE18M: | ||
| 80 | rate_idx = 7; | ||
| 81 | break; | ||
| 82 | case DESC92C_RATE24M: | ||
| 83 | rate_idx = 8; | ||
| 84 | break; | ||
| 85 | case DESC92C_RATE36M: | ||
| 86 | rate_idx = 9; | ||
| 87 | break; | ||
| 88 | case DESC92C_RATE48M: | ||
| 89 | rate_idx = 10; | ||
| 90 | break; | ||
| 91 | case DESC92C_RATE54M: | ||
| 92 | rate_idx = 11; | ||
| 93 | break; | ||
| 94 | default: | ||
| 95 | rate_idx = 0; | ||
| 96 | break; | ||
| 97 | } | ||
| 98 | } else { | ||
| 99 | rate_idx = 11; | ||
| 100 | } | ||
| 101 | |||
| 102 | return rate_idx; | ||
| 103 | } | ||
| 104 | |||
| 105 | switch (desc_rate) { | ||
| 106 | case DESC92C_RATE1M: | ||
| 107 | rate_idx = 0; | ||
| 108 | break; | ||
| 109 | case DESC92C_RATE2M: | ||
| 110 | rate_idx = 1; | ||
| 111 | break; | ||
| 112 | case DESC92C_RATE5_5M: | ||
| 113 | rate_idx = 2; | ||
| 114 | break; | ||
| 115 | case DESC92C_RATE11M: | ||
| 116 | rate_idx = 3; | ||
| 117 | break; | ||
| 118 | case DESC92C_RATE6M: | ||
| 119 | rate_idx = 4; | ||
| 120 | break; | ||
| 121 | case DESC92C_RATE9M: | ||
| 122 | rate_idx = 5; | ||
| 123 | break; | ||
| 124 | case DESC92C_RATE12M: | ||
| 125 | rate_idx = 6; | ||
| 126 | break; | ||
| 127 | case DESC92C_RATE18M: | ||
| 128 | rate_idx = 7; | ||
| 129 | break; | ||
| 130 | case DESC92C_RATE24M: | ||
| 131 | rate_idx = 8; | ||
| 132 | break; | ||
| 133 | case DESC92C_RATE36M: | ||
| 134 | rate_idx = 9; | ||
| 135 | break; | ||
| 136 | case DESC92C_RATE48M: | ||
| 137 | rate_idx = 10; | ||
| 138 | break; | ||
| 139 | case DESC92C_RATE54M: | ||
| 140 | rate_idx = 11; | ||
| 141 | break; | ||
| 142 | default: | ||
| 143 | rate_idx = 11; | ||
| 144 | break; | ||
| 145 | } | ||
| 146 | return rate_idx; | ||
| 147 | } | ||
| 148 | |||
| 149 | static u8 _rtl92c_query_rxpwrpercentage(char antpower) | 51 | static u8 _rtl92c_query_rxpwrpercentage(char antpower) |
| 150 | { | 52 | { |
| 151 | if ((antpower <= -100) || (antpower >= 20)) | 53 | if ((antpower <= -100) || (antpower >= 20)) |
| @@ -336,8 +238,8 @@ static void _rtl92ce_query_rxphystatus(struct ieee80211_hw *hw, | |||
| 336 | pstats->rxpower = rx_pwr_all; | 238 | pstats->rxpower = rx_pwr_all; |
| 337 | pstats->recvsignalpower = rx_pwr_all; | 239 | pstats->recvsignalpower = rx_pwr_all; |
| 338 | 240 | ||
| 339 | if (pdesc->rxht && pdesc->rxmcs >= DESC92C_RATEMCS8 && | 241 | if (pdesc->rxht && pdesc->rxmcs >= DESC92_RATEMCS8 && |
| 340 | pdesc->rxmcs <= DESC92C_RATEMCS15) | 242 | pdesc->rxmcs <= DESC92_RATEMCS15) |
| 341 | max_spatial_stream = 2; | 243 | max_spatial_stream = 2; |
| 342 | else | 244 | else |
| 343 | max_spatial_stream = 1; | 245 | max_spatial_stream = 1; |
| @@ -670,12 +572,10 @@ bool rtl92ce_rx_query_desc(struct ieee80211_hw *hw, | |||
| 670 | if (stats->decrypted) | 572 | if (stats->decrypted) |
| 671 | rx_status->flag |= RX_FLAG_DECRYPTED; | 573 | rx_status->flag |= RX_FLAG_DECRYPTED; |
| 672 | 574 | ||
| 673 | rx_status->rate_idx = _rtl92ce_rate_mapping((bool) | 575 | rx_status->rate_idx = rtlwifi_rate_mapping(hw, |
| 674 | GET_RX_DESC_RXHT(pdesc), | 576 | (bool)GET_RX_DESC_RXHT(pdesc), |
| 675 | (u8) | 577 | (u8)GET_RX_DESC_RXMCS(pdesc), |
| 676 | GET_RX_DESC_RXMCS(pdesc), | 578 | (bool)GET_RX_DESC_PAGGR(pdesc)); |
| 677 | (bool) | ||
| 678 | GET_RX_DESC_PAGGR(pdesc)); | ||
| 679 | 579 | ||
| 680 | rx_status->mactime = GET_RX_DESC_TSFL(pdesc); | 580 | rx_status->mactime = GET_RX_DESC_TSFL(pdesc); |
| 681 | if (phystatus) { | 581 | if (phystatus) { |
| @@ -768,7 +668,7 @@ void rtl92ce_tx_fill_desc(struct ieee80211_hw *hw, | |||
| 768 | SET_TX_DESC_RTS_BW(pdesc, 0); | 668 | SET_TX_DESC_RTS_BW(pdesc, 0); |
| 769 | SET_TX_DESC_RTS_SC(pdesc, tcb_desc->rts_sc); | 669 | SET_TX_DESC_RTS_SC(pdesc, tcb_desc->rts_sc); |
| 770 | SET_TX_DESC_RTS_SHORT(pdesc, | 670 | SET_TX_DESC_RTS_SHORT(pdesc, |
| 771 | ((tcb_desc->rts_rate <= DESC92C_RATE54M) ? | 671 | ((tcb_desc->rts_rate <= DESC92_RATE54M) ? |
| 772 | (tcb_desc->rts_use_shortpreamble ? 1 : 0) | 672 | (tcb_desc->rts_use_shortpreamble ? 1 : 0) |
| 773 | : (tcb_desc->rts_use_shortgi ? 1 : 0))); | 673 | : (tcb_desc->rts_use_shortgi ? 1 : 0))); |
| 774 | 674 | ||
| @@ -886,7 +786,7 @@ void rtl92ce_tx_fill_cmddesc(struct ieee80211_hw *hw, | |||
| 886 | if (firstseg) | 786 | if (firstseg) |
| 887 | SET_TX_DESC_OFFSET(pdesc, USB_HWDESC_HEADER_LEN); | 787 | SET_TX_DESC_OFFSET(pdesc, USB_HWDESC_HEADER_LEN); |
| 888 | 788 | ||
| 889 | SET_TX_DESC_TX_RATE(pdesc, DESC92C_RATE1M); | 789 | SET_TX_DESC_TX_RATE(pdesc, DESC92_RATE1M); |
| 890 | 790 | ||
| 891 | SET_TX_DESC_SEQ(pdesc, 0); | 791 | SET_TX_DESC_SEQ(pdesc, 0); |
| 892 | 792 | ||
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/trx.h b/drivers/net/wireless/rtlwifi/rtl8192ce/trx.h index 0f1177137501..c8977a50ca36 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/trx.h +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/trx.h | |||
| @@ -537,12 +537,6 @@ do { \ | |||
| 537 | memset(__pdesc, 0, _size); \ | 537 | memset(__pdesc, 0, _size); \ |
| 538 | } while (0); | 538 | } while (0); |
| 539 | 539 | ||
| 540 | #define RX_HAL_IS_CCK_RATE(_pdesc)\ | ||
| 541 | (_pdesc->rxmcs == DESC92C_RATE1M || \ | ||
| 542 | _pdesc->rxmcs == DESC92C_RATE2M || \ | ||
| 543 | _pdesc->rxmcs == DESC92C_RATE5_5M || \ | ||
| 544 | _pdesc->rxmcs == DESC92C_RATE11M) | ||
| 545 | |||
| 546 | struct rx_fwinfo_92c { | 540 | struct rx_fwinfo_92c { |
| 547 | u8 gain_trsw[4]; | 541 | u8 gain_trsw[4]; |
| 548 | u8 pwdb_all; | 542 | u8 pwdb_all; |
