|
@@ -69,79 +69,9 @@ EXPORT_SYMBOL_GPL(bt_coex_active);
|
|
|
module_param(bt_coex_active, bool, S_IRUGO);
|
|
|
MODULE_PARM_DESC(bt_coex_active, "enable wifi/bluetooth co-exist");
|
|
|
|
|
|
-#define IWL_DECLARE_RATE_INFO(r, s, ip, in, rp, rn, pp, np) \
|
|
|
- [IWL_RATE_##r##M_INDEX] = { IWL_RATE_##r##M_PLCP, \
|
|
|
- IWL_RATE_SISO_##s##M_PLCP, \
|
|
|
- IWL_RATE_MIMO2_##s##M_PLCP,\
|
|
|
- IWL_RATE_MIMO3_##s##M_PLCP,\
|
|
|
- IWL_RATE_##r##M_IEEE, \
|
|
|
- IWL_RATE_##ip##M_INDEX, \
|
|
|
- IWL_RATE_##in##M_INDEX, \
|
|
|
- IWL_RATE_##rp##M_INDEX, \
|
|
|
- IWL_RATE_##rn##M_INDEX, \
|
|
|
- IWL_RATE_##pp##M_INDEX, \
|
|
|
- IWL_RATE_##np##M_INDEX }
|
|
|
-
|
|
|
u32 iwl_debug_level;
|
|
|
EXPORT_SYMBOL(iwl_debug_level);
|
|
|
|
|
|
-/*
|
|
|
- * Parameter order:
|
|
|
- * rate, ht rate, prev rate, next rate, prev tgg rate, next tgg rate
|
|
|
- *
|
|
|
- * If there isn't a valid next or previous rate then INV is used which
|
|
|
- * maps to IWL_RATE_INVALID
|
|
|
- *
|
|
|
- */
|
|
|
-const struct iwl_rate_info iwl_rates[IWL_RATE_COUNT] = {
|
|
|
- IWL_DECLARE_RATE_INFO(1, INV, INV, 2, INV, 2, INV, 2), /* 1mbps */
|
|
|
- IWL_DECLARE_RATE_INFO(2, INV, 1, 5, 1, 5, 1, 5), /* 2mbps */
|
|
|
- IWL_DECLARE_RATE_INFO(5, INV, 2, 6, 2, 11, 2, 11), /*5.5mbps */
|
|
|
- IWL_DECLARE_RATE_INFO(11, INV, 9, 12, 9, 12, 5, 18), /* 11mbps */
|
|
|
- IWL_DECLARE_RATE_INFO(6, 6, 5, 9, 5, 11, 5, 11), /* 6mbps */
|
|
|
- IWL_DECLARE_RATE_INFO(9, 6, 6, 11, 6, 11, 5, 11), /* 9mbps */
|
|
|
- IWL_DECLARE_RATE_INFO(12, 12, 11, 18, 11, 18, 11, 18), /* 12mbps */
|
|
|
- IWL_DECLARE_RATE_INFO(18, 18, 12, 24, 12, 24, 11, 24), /* 18mbps */
|
|
|
- IWL_DECLARE_RATE_INFO(24, 24, 18, 36, 18, 36, 18, 36), /* 24mbps */
|
|
|
- IWL_DECLARE_RATE_INFO(36, 36, 24, 48, 24, 48, 24, 48), /* 36mbps */
|
|
|
- IWL_DECLARE_RATE_INFO(48, 48, 36, 54, 36, 54, 36, 54), /* 48mbps */
|
|
|
- IWL_DECLARE_RATE_INFO(54, 54, 48, INV, 48, INV, 48, INV),/* 54mbps */
|
|
|
- IWL_DECLARE_RATE_INFO(60, 60, 48, INV, 48, INV, 48, INV),/* 60mbps */
|
|
|
- /* FIXME:RS: ^^ should be INV (legacy) */
|
|
|
-};
|
|
|
-EXPORT_SYMBOL(iwl_rates);
|
|
|
-
|
|
|
-int iwl_hwrate_to_plcp_idx(u32 rate_n_flags)
|
|
|
-{
|
|
|
- int idx = 0;
|
|
|
-
|
|
|
- /* HT rate format */
|
|
|
- if (rate_n_flags & RATE_MCS_HT_MSK) {
|
|
|
- idx = (rate_n_flags & 0xff);
|
|
|
-
|
|
|
- if (idx >= IWL_RATE_MIMO3_6M_PLCP)
|
|
|
- idx = idx - IWL_RATE_MIMO3_6M_PLCP;
|
|
|
- else if (idx >= IWL_RATE_MIMO2_6M_PLCP)
|
|
|
- idx = idx - IWL_RATE_MIMO2_6M_PLCP;
|
|
|
-
|
|
|
- idx += IWL_FIRST_OFDM_RATE;
|
|
|
- /* skip 9M not supported in ht*/
|
|
|
- if (idx >= IWL_RATE_9M_INDEX)
|
|
|
- idx += 1;
|
|
|
- if ((idx >= IWL_FIRST_OFDM_RATE) && (idx <= IWL_LAST_OFDM_RATE))
|
|
|
- return idx;
|
|
|
-
|
|
|
- /* legacy rate format, search for match in table */
|
|
|
- } else {
|
|
|
- for (idx = 0; idx < ARRAY_SIZE(iwl_rates); idx++)
|
|
|
- if (iwl_rates[idx].plcp == (rate_n_flags & 0xFF))
|
|
|
- return idx;
|
|
|
- }
|
|
|
-
|
|
|
- return -1;
|
|
|
-}
|
|
|
-EXPORT_SYMBOL(iwl_hwrate_to_plcp_idx);
|
|
|
-
|
|
|
u8 iwl_toggle_tx_ant(struct iwl_priv *priv, u8 ant, u8 valid)
|
|
|
{
|
|
|
int i;
|