iwlwifi: wimax co-exist code clean up
wifi/wimax co-exist command is part of _agn device configuration sequence; move it to iwl-agn-ucode.c which is more appropriate place for the function. Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
This commit is contained in:
committed by
Reinette Chatre
parent
0af0d04b8d
commit
f401241310
@@ -52,6 +52,37 @@ static const s8 iwlagn_default_queue_to_tx_fifo[] = {
|
|||||||
IWL_TX_FIFO_UNUSED,
|
IWL_TX_FIFO_UNUSED,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct iwl_wimax_coex_event_entry cu_priorities[COEX_NUM_OF_EVENTS] = {
|
||||||
|
{COEX_CU_UNASSOC_IDLE_RP, COEX_CU_UNASSOC_IDLE_WP,
|
||||||
|
0, COEX_UNASSOC_IDLE_FLAGS},
|
||||||
|
{COEX_CU_UNASSOC_MANUAL_SCAN_RP, COEX_CU_UNASSOC_MANUAL_SCAN_WP,
|
||||||
|
0, COEX_UNASSOC_MANUAL_SCAN_FLAGS},
|
||||||
|
{COEX_CU_UNASSOC_AUTO_SCAN_RP, COEX_CU_UNASSOC_AUTO_SCAN_WP,
|
||||||
|
0, COEX_UNASSOC_AUTO_SCAN_FLAGS},
|
||||||
|
{COEX_CU_CALIBRATION_RP, COEX_CU_CALIBRATION_WP,
|
||||||
|
0, COEX_CALIBRATION_FLAGS},
|
||||||
|
{COEX_CU_PERIODIC_CALIBRATION_RP, COEX_CU_PERIODIC_CALIBRATION_WP,
|
||||||
|
0, COEX_PERIODIC_CALIBRATION_FLAGS},
|
||||||
|
{COEX_CU_CONNECTION_ESTAB_RP, COEX_CU_CONNECTION_ESTAB_WP,
|
||||||
|
0, COEX_CONNECTION_ESTAB_FLAGS},
|
||||||
|
{COEX_CU_ASSOCIATED_IDLE_RP, COEX_CU_ASSOCIATED_IDLE_WP,
|
||||||
|
0, COEX_ASSOCIATED_IDLE_FLAGS},
|
||||||
|
{COEX_CU_ASSOC_MANUAL_SCAN_RP, COEX_CU_ASSOC_MANUAL_SCAN_WP,
|
||||||
|
0, COEX_ASSOC_MANUAL_SCAN_FLAGS},
|
||||||
|
{COEX_CU_ASSOC_AUTO_SCAN_RP, COEX_CU_ASSOC_AUTO_SCAN_WP,
|
||||||
|
0, COEX_ASSOC_AUTO_SCAN_FLAGS},
|
||||||
|
{COEX_CU_ASSOC_ACTIVE_LEVEL_RP, COEX_CU_ASSOC_ACTIVE_LEVEL_WP,
|
||||||
|
0, COEX_ASSOC_ACTIVE_LEVEL_FLAGS},
|
||||||
|
{COEX_CU_RF_ON_RP, COEX_CU_RF_ON_WP, 0, COEX_CU_RF_ON_FLAGS},
|
||||||
|
{COEX_CU_RF_OFF_RP, COEX_CU_RF_OFF_WP, 0, COEX_RF_OFF_FLAGS},
|
||||||
|
{COEX_CU_STAND_ALONE_DEBUG_RP, COEX_CU_STAND_ALONE_DEBUG_WP,
|
||||||
|
0, COEX_STAND_ALONE_DEBUG_FLAGS},
|
||||||
|
{COEX_CU_IPAN_ASSOC_LEVEL_RP, COEX_CU_IPAN_ASSOC_LEVEL_WP,
|
||||||
|
0, COEX_IPAN_ASSOC_LEVEL_FLAGS},
|
||||||
|
{COEX_CU_RSRVD1_RP, COEX_CU_RSRVD1_WP, 0, COEX_RSRVD1_FLAGS},
|
||||||
|
{COEX_CU_RSRVD2_RP, COEX_CU_RSRVD2_WP, 0, COEX_RSRVD2_FLAGS}
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ucode
|
* ucode
|
||||||
*/
|
*/
|
||||||
@@ -320,6 +351,33 @@ restart:
|
|||||||
queue_work(priv->workqueue, &priv->restart);
|
queue_work(priv->workqueue, &priv->restart);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int iwlagn_send_wimax_coex(struct iwl_priv *priv)
|
||||||
|
{
|
||||||
|
struct iwl_wimax_coex_cmd coex_cmd;
|
||||||
|
|
||||||
|
if (priv->cfg->support_wimax_coexist) {
|
||||||
|
/* UnMask wake up src at associated sleep */
|
||||||
|
coex_cmd.flags = COEX_FLAGS_ASSOC_WA_UNMASK_MSK;
|
||||||
|
|
||||||
|
/* UnMask wake up src at unassociated sleep */
|
||||||
|
coex_cmd.flags |= COEX_FLAGS_UNASSOC_WA_UNMASK_MSK;
|
||||||
|
memcpy(coex_cmd.sta_prio, cu_priorities,
|
||||||
|
sizeof(struct iwl_wimax_coex_event_entry) *
|
||||||
|
COEX_NUM_OF_EVENTS);
|
||||||
|
|
||||||
|
/* enabling the coexistence feature */
|
||||||
|
coex_cmd.flags |= COEX_FLAGS_COEX_ENABLE_MSK;
|
||||||
|
|
||||||
|
/* enabling the priorities tables */
|
||||||
|
coex_cmd.flags |= COEX_FLAGS_STA_TABLE_VALID_MSK;
|
||||||
|
} else {
|
||||||
|
/* coexistence is disabled */
|
||||||
|
memset(&coex_cmd, 0, sizeof(coex_cmd));
|
||||||
|
}
|
||||||
|
return iwl_send_cmd_pdu(priv, COEX_PRIORITY_TABLE_CMD,
|
||||||
|
sizeof(coex_cmd), &coex_cmd);
|
||||||
|
}
|
||||||
|
|
||||||
int iwlagn_alive_notify(struct iwl_priv *priv)
|
int iwlagn_alive_notify(struct iwl_priv *priv)
|
||||||
{
|
{
|
||||||
u32 a;
|
u32 a;
|
||||||
@@ -407,7 +465,7 @@ int iwlagn_alive_notify(struct iwl_priv *priv)
|
|||||||
|
|
||||||
spin_unlock_irqrestore(&priv->lock, flags);
|
spin_unlock_irqrestore(&priv->lock, flags);
|
||||||
|
|
||||||
iwl_send_wimax_coex(priv);
|
iwlagn_send_wimax_coex(priv);
|
||||||
|
|
||||||
iwlagn_set_Xtal_calib(priv);
|
iwlagn_set_Xtal_calib(priv);
|
||||||
iwl_send_calib_results(priv);
|
iwl_send_calib_results(priv);
|
||||||
|
@@ -67,37 +67,6 @@ static bool bt_coex_active = true;
|
|||||||
module_param(bt_coex_active, bool, S_IRUGO);
|
module_param(bt_coex_active, bool, S_IRUGO);
|
||||||
MODULE_PARM_DESC(bt_coex_active, "enable wifi/bluetooth co-exist");
|
MODULE_PARM_DESC(bt_coex_active, "enable wifi/bluetooth co-exist");
|
||||||
|
|
||||||
static struct iwl_wimax_coex_event_entry cu_priorities[COEX_NUM_OF_EVENTS] = {
|
|
||||||
{COEX_CU_UNASSOC_IDLE_RP, COEX_CU_UNASSOC_IDLE_WP,
|
|
||||||
0, COEX_UNASSOC_IDLE_FLAGS},
|
|
||||||
{COEX_CU_UNASSOC_MANUAL_SCAN_RP, COEX_CU_UNASSOC_MANUAL_SCAN_WP,
|
|
||||||
0, COEX_UNASSOC_MANUAL_SCAN_FLAGS},
|
|
||||||
{COEX_CU_UNASSOC_AUTO_SCAN_RP, COEX_CU_UNASSOC_AUTO_SCAN_WP,
|
|
||||||
0, COEX_UNASSOC_AUTO_SCAN_FLAGS},
|
|
||||||
{COEX_CU_CALIBRATION_RP, COEX_CU_CALIBRATION_WP,
|
|
||||||
0, COEX_CALIBRATION_FLAGS},
|
|
||||||
{COEX_CU_PERIODIC_CALIBRATION_RP, COEX_CU_PERIODIC_CALIBRATION_WP,
|
|
||||||
0, COEX_PERIODIC_CALIBRATION_FLAGS},
|
|
||||||
{COEX_CU_CONNECTION_ESTAB_RP, COEX_CU_CONNECTION_ESTAB_WP,
|
|
||||||
0, COEX_CONNECTION_ESTAB_FLAGS},
|
|
||||||
{COEX_CU_ASSOCIATED_IDLE_RP, COEX_CU_ASSOCIATED_IDLE_WP,
|
|
||||||
0, COEX_ASSOCIATED_IDLE_FLAGS},
|
|
||||||
{COEX_CU_ASSOC_MANUAL_SCAN_RP, COEX_CU_ASSOC_MANUAL_SCAN_WP,
|
|
||||||
0, COEX_ASSOC_MANUAL_SCAN_FLAGS},
|
|
||||||
{COEX_CU_ASSOC_AUTO_SCAN_RP, COEX_CU_ASSOC_AUTO_SCAN_WP,
|
|
||||||
0, COEX_ASSOC_AUTO_SCAN_FLAGS},
|
|
||||||
{COEX_CU_ASSOC_ACTIVE_LEVEL_RP, COEX_CU_ASSOC_ACTIVE_LEVEL_WP,
|
|
||||||
0, COEX_ASSOC_ACTIVE_LEVEL_FLAGS},
|
|
||||||
{COEX_CU_RF_ON_RP, COEX_CU_RF_ON_WP, 0, COEX_CU_RF_ON_FLAGS},
|
|
||||||
{COEX_CU_RF_OFF_RP, COEX_CU_RF_OFF_WP, 0, COEX_RF_OFF_FLAGS},
|
|
||||||
{COEX_CU_STAND_ALONE_DEBUG_RP, COEX_CU_STAND_ALONE_DEBUG_WP,
|
|
||||||
0, COEX_STAND_ALONE_DEBUG_FLAGS},
|
|
||||||
{COEX_CU_IPAN_ASSOC_LEVEL_RP, COEX_CU_IPAN_ASSOC_LEVEL_WP,
|
|
||||||
0, COEX_IPAN_ASSOC_LEVEL_FLAGS},
|
|
||||||
{COEX_CU_RSRVD1_RP, COEX_CU_RSRVD1_WP, 0, COEX_RSRVD1_FLAGS},
|
|
||||||
{COEX_CU_RSRVD2_RP, COEX_CU_RSRVD2_WP, 0, COEX_RSRVD2_FLAGS}
|
|
||||||
};
|
|
||||||
|
|
||||||
#define IWL_DECLARE_RATE_INFO(r, s, ip, in, rp, rn, pp, np) \
|
#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_##r##M_INDEX] = { IWL_RATE_##r##M_PLCP, \
|
||||||
IWL_RATE_SISO_##s##M_PLCP, \
|
IWL_RATE_SISO_##s##M_PLCP, \
|
||||||
@@ -2340,34 +2309,6 @@ void iwl_free_txq_mem(struct iwl_priv *priv)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(iwl_free_txq_mem);
|
EXPORT_SYMBOL(iwl_free_txq_mem);
|
||||||
|
|
||||||
int iwl_send_wimax_coex(struct iwl_priv *priv)
|
|
||||||
{
|
|
||||||
struct iwl_wimax_coex_cmd coex_cmd;
|
|
||||||
|
|
||||||
if (priv->cfg->support_wimax_coexist) {
|
|
||||||
/* UnMask wake up src at associated sleep */
|
|
||||||
coex_cmd.flags = COEX_FLAGS_ASSOC_WA_UNMASK_MSK;
|
|
||||||
|
|
||||||
/* UnMask wake up src at unassociated sleep */
|
|
||||||
coex_cmd.flags |= COEX_FLAGS_UNASSOC_WA_UNMASK_MSK;
|
|
||||||
memcpy(coex_cmd.sta_prio, cu_priorities,
|
|
||||||
sizeof(struct iwl_wimax_coex_event_entry) *
|
|
||||||
COEX_NUM_OF_EVENTS);
|
|
||||||
|
|
||||||
/* enabling the coexistence feature */
|
|
||||||
coex_cmd.flags |= COEX_FLAGS_COEX_ENABLE_MSK;
|
|
||||||
|
|
||||||
/* enabling the priorities tables */
|
|
||||||
coex_cmd.flags |= COEX_FLAGS_STA_TABLE_VALID_MSK;
|
|
||||||
} else {
|
|
||||||
/* coexistence is disabled */
|
|
||||||
memset(&coex_cmd, 0, sizeof(coex_cmd));
|
|
||||||
}
|
|
||||||
return iwl_send_cmd_pdu(priv, COEX_PRIORITY_TABLE_CMD,
|
|
||||||
sizeof(coex_cmd), &coex_cmd);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(iwl_send_wimax_coex);
|
|
||||||
|
|
||||||
#ifdef CONFIG_IWLWIFI_DEBUGFS
|
#ifdef CONFIG_IWLWIFI_DEBUGFS
|
||||||
|
|
||||||
#define IWL_TRAFFIC_DUMP_SIZE (IWL_TRAFFIC_ENTRY_SIZE * IWL_TRAFFIC_ENTRIES)
|
#define IWL_TRAFFIC_DUMP_SIZE (IWL_TRAFFIC_ENTRY_SIZE * IWL_TRAFFIC_ENTRIES)
|
||||||
|
@@ -373,7 +373,6 @@ int iwl_alloc_txq_mem(struct iwl_priv *priv);
|
|||||||
void iwl_free_txq_mem(struct iwl_priv *priv);
|
void iwl_free_txq_mem(struct iwl_priv *priv);
|
||||||
void iwlcore_rts_tx_cmd_flag(struct ieee80211_tx_info *info,
|
void iwlcore_rts_tx_cmd_flag(struct ieee80211_tx_info *info,
|
||||||
__le32 *tx_flags);
|
__le32 *tx_flags);
|
||||||
int iwl_send_wimax_coex(struct iwl_priv *priv);
|
|
||||||
#ifdef CONFIG_IWLWIFI_DEBUGFS
|
#ifdef CONFIG_IWLWIFI_DEBUGFS
|
||||||
int iwl_alloc_traffic_mem(struct iwl_priv *priv);
|
int iwl_alloc_traffic_mem(struct iwl_priv *priv);
|
||||||
void iwl_free_traffic_mem(struct iwl_priv *priv);
|
void iwl_free_traffic_mem(struct iwl_priv *priv);
|
||||||
|
Reference in New Issue
Block a user