iwlwifi: make BT coex config a virtual method
authorJohannes Berg <johannes.berg@intel.com>
Tue, 13 Apr 2010 08:04:31 +0000 (01:04 -0700)
committerReinette Chatre <reinette.chatre@intel.com>
Fri, 16 Apr 2010 20:53:34 +0000 (13:53 -0700)
Some future hardware will require a different command to
be sent for bluetooth coexist, so make this a virtual
method that can be changed on a per-device basis.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
drivers/net/wireless/iwlwifi/iwl-3945.c
drivers/net/wireless/iwlwifi/iwl-4965.c
drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
drivers/net/wireless/iwlwifi/iwl-agn.c
drivers/net/wireless/iwlwifi/iwl-core.c
drivers/net/wireless/iwlwifi/iwl-core.h
drivers/net/wireless/iwlwifi/iwl3945-base.c

index 51f18950f077f69ac8d190af4cc30b986b4e9c85..d10e59def53ef067612e19d044763f57bdc83db9 100644 (file)
@@ -2687,6 +2687,7 @@ IWL3945_UCODE_GET(boot_size);
 static struct iwl_hcmd_ops iwl3945_hcmd = {
        .rxon_assoc = iwl3945_send_rxon_assoc,
        .commit_rxon = iwl3945_commit_rxon,
+       .send_bt_config = iwl_send_bt_config,
 };
 
 static struct iwl_ucode_ops iwl3945_ucode = {
index 85672978cab1f9825795526f1cba322efc03f7c7..2861819e56e3a88a9e4919003b50a038057528ce 100644 (file)
@@ -2144,6 +2144,7 @@ static struct iwl_hcmd_ops iwl4965_hcmd = {
        .rxon_assoc = iwl4965_send_rxon_assoc,
        .commit_rxon = iwl_commit_rxon,
        .set_rxon_chain = iwl_set_rxon_chain,
+       .send_bt_config = iwl_send_bt_config,
 };
 
 static struct iwl_ucode_ops iwl4965_ucode = {
index 231d0e67e6fcf985099f91b08893e4609b306989..44ef5d93befcda26e6bec109c4b5ae66994da549 100644 (file)
@@ -262,6 +262,7 @@ struct iwl_hcmd_ops iwlagn_hcmd = {
        .commit_rxon = iwl_commit_rxon,
        .set_rxon_chain = iwl_set_rxon_chain,
        .set_tx_ant = iwlagn_send_tx_ant_config,
+       .send_bt_config = iwl_send_bt_config,
 };
 
 struct iwl_hcmd_utils_ops iwlagn_hcmd_utils = {
index 1f3c5d5860a4cc1155a3385a9ce0617d5b857fd7..c22d3d8c440c553c74c67db737e6801e0383d02e 100644 (file)
@@ -2173,7 +2173,7 @@ static void iwl_alive_start(struct iwl_priv *priv)
        }
 
        /* Configure Bluetooth device coexistence support */
-       iwl_send_bt_config(priv);
+       priv->cfg->ops->hcmd->send_bt_config(priv);
 
        iwl_reset_run_time_calib(priv);
 
index 9d300b2d9fe33c757924408489acac7b62c6d7a4..aa86ef9fb426b88da3b28fc158b79698a61dce4c 100644 (file)
@@ -1479,7 +1479,7 @@ irqreturn_t iwl_isr_legacy(int irq, void *data)
 }
 EXPORT_SYMBOL(iwl_isr_legacy);
 
-int iwl_send_bt_config(struct iwl_priv *priv)
+void iwl_send_bt_config(struct iwl_priv *priv)
 {
        struct iwl_bt_cmd bt_cmd = {
                .lead_time = BT_LEAD_TIME_DEF,
@@ -1496,8 +1496,9 @@ int iwl_send_bt_config(struct iwl_priv *priv)
        IWL_DEBUG_INFO(priv, "BT coex %s\n",
                (bt_cmd.flags == BT_COEX_DISABLE) ? "disable" : "active");
 
-       return iwl_send_cmd_pdu(priv, REPLY_BT_CONFIG,
-                               sizeof(struct iwl_bt_cmd), &bt_cmd);
+       if (iwl_send_cmd_pdu(priv, REPLY_BT_CONFIG,
+                            sizeof(struct iwl_bt_cmd), &bt_cmd))
+               IWL_ERR(priv, "failed to send BT Coex Config\n");
 }
 EXPORT_SYMBOL(iwl_send_bt_config);
 
index 2a3b173e4db049c9a8c3c2557100c774c7aecd32..d9ec0307220ce7831011c8f2d72941f617d6a8d4 100644 (file)
@@ -90,6 +90,7 @@ struct iwl_hcmd_ops {
        int (*commit_rxon)(struct iwl_priv *priv);
        void (*set_rxon_chain)(struct iwl_priv *priv);
        int (*set_tx_ant)(struct iwl_priv *priv, u8 valid_tx_ant);
+       void (*send_bt_config)(struct iwl_priv *priv);
 };
 
 struct iwl_hcmd_utils_ops {
@@ -677,7 +678,7 @@ static inline int iwl_is_ready_rf(struct iwl_priv *priv)
 }
 
 extern void iwl_rf_kill_ct_config(struct iwl_priv *priv);
-extern int iwl_send_bt_config(struct iwl_priv *priv);
+extern void iwl_send_bt_config(struct iwl_priv *priv);
 extern int iwl_send_statistics_request(struct iwl_priv *priv,
                                       u8 flags, bool clear);
 extern int iwl_verify_ucode(struct iwl_priv *priv);
index 8da3375b603ba5489c9cd09b51d02b9c53159166..64b20e78376ee8e487a0aeb752d6f08d7d993baf 100644 (file)
@@ -2526,7 +2526,7 @@ static void iwl3945_alive_start(struct iwl_priv *priv)
        }
 
        /* Configure Bluetooth device coexistence support */
-       iwl_send_bt_config(priv);
+       priv->cfg->ops->hcmd->send_bt_config(priv);
 
        /* Configure the adapter for unassociated operation */
        iwlcore_commit_rxon(priv);