iwlwifi: mvm: BT Coex - disable RRC by default
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Thu, 26 Feb 2015 14:54:24 +0000 (16:54 +0200)
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Thu, 12 Mar 2015 07:57:33 +0000 (09:57 +0200)
Enable this feature only if the firmware advertises support
for it.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
drivers/net/wireless/iwlwifi/iwl-fw-file.h
drivers/net/wireless/iwlwifi/mvm/coex_legacy.c
drivers/net/wireless/iwlwifi/mvm/mvm.h

index e5fd19d8fc306c9487355df19e0b84e81a1fee4e..291a3382aa3fc5596e243ff3a4e93d7cd44557ba 100644 (file)
@@ -290,6 +290,7 @@ enum iwl_ucode_tlv_api {
  * @IWL_UCODE_TLV_CAPA_HOTSPOT_SUPPORT: supports Hot Spot Command
  * @IWL_UCODE_TLV_CAPA_RADIO_BEACON_STATS: support radio and beacon statistics
  * @IWL_UCODE_TLV_CAPA_BT_COEX_PLCR: enabled BT Coex packet level co-running
+ * @IWL_UCODE_TLV_CAPA_BT_COEX_RRC: supports BT Coex RRC
  */
 enum iwl_ucode_tlv_capa {
        IWL_UCODE_TLV_CAPA_D0I3_SUPPORT                 = BIT(0),
@@ -306,6 +307,7 @@ enum iwl_ucode_tlv_capa {
        IWL_UCODE_TLV_CAPA_HOTSPOT_SUPPORT              = BIT(18),
        IWL_UCODE_TLV_CAPA_RADIO_BEACON_STATS           = BIT(22),
        IWL_UCODE_TLV_CAPA_BT_COEX_PLCR                 = BIT(28),
+       IWL_UCODE_TLV_CAPA_BT_COEX_RRC                  = BIT(30),
 };
 
 /* The default calibrate table size if not specified by firmware file */
index 9717ee61928cccdf78eefaee7c1a6f91ac736243..593bed7adad787cc283cacbe89783969b774af47 100644 (file)
@@ -633,7 +633,7 @@ int iwl_send_bt_init_conf_old(struct iwl_mvm *mvm)
        if (IWL_MVM_BT_COEX_TTC)
                bt_cmd->flags |= cpu_to_le32(BT_COEX_TTC);
 
-       if (IWL_MVM_BT_COEX_RRC)
+       if (iwl_mvm_bt_is_rrc_supported(mvm))
                bt_cmd->flags |= cpu_to_le32(BT_COEX_RRC);
 
        if (mvm->cfg->bt_shared_single_ant)
index 9a8868e31ddf3228e4d6aa8041240548c7484571..4d44cf07475aea055794dbc9c5e663e9eb3cb7e1 100644 (file)
@@ -948,6 +948,12 @@ static inline bool iwl_mvm_bt_is_plcr_supported(struct iwl_mvm *mvm)
                IWL_MVM_BT_COEX_CORUNNING;
 }
 
+static inline bool iwl_mvm_bt_is_rrc_supported(struct iwl_mvm *mvm)
+{
+       return (mvm->fw->ucode_capa.capa[0] & IWL_UCODE_TLV_CAPA_BT_COEX_RRC) &&
+               IWL_MVM_BT_COEX_RRC;
+}
+
 extern const u8 iwl_mvm_ac_to_tx_fifo[];
 
 struct iwl_rate_info {