aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-lib.c32
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-commands.h1
2 files changed, 20 insertions, 13 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
index f8fe5f44e19..3342513ca6b 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
@@ -1814,6 +1814,7 @@ void iwlagn_send_advance_bt_config(struct iwl_priv *priv)
1814 bt_cmd.prio_boost = 0; 1814 bt_cmd.prio_boost = 0;
1815 bt_cmd.kill_ack_mask = priv->kill_ack_mask; 1815 bt_cmd.kill_ack_mask = priv->kill_ack_mask;
1816 bt_cmd.kill_cts_mask = priv->kill_cts_mask; 1816 bt_cmd.kill_cts_mask = priv->kill_cts_mask;
1817
1817 bt_cmd.valid = priv->bt_valid; 1818 bt_cmd.valid = priv->bt_valid;
1818 bt_cmd.tx_prio_boost = 0; 1819 bt_cmd.tx_prio_boost = 0;
1819 bt_cmd.rx_prio_boost = 0; 1820 bt_cmd.rx_prio_boost = 0;
@@ -1996,24 +1997,29 @@ static void iwlagn_print_uartmsg(struct iwl_priv *priv,
1996 BT_UART_MSG_FRAME7CONNECTABLE_POS); 1997 BT_UART_MSG_FRAME7CONNECTABLE_POS);
1997} 1998}
1998 1999
1999static void iwlagn_set_kill_ack_msk(struct iwl_priv *priv, 2000static void iwlagn_set_kill_msk(struct iwl_priv *priv,
2000 struct iwl_bt_uart_msg *uart_msg) 2001 struct iwl_bt_uart_msg *uart_msg)
2001{ 2002{
2002 u8 kill_ack_msk; 2003 u8 kill_msk;
2003 static const __le32 bt_kill_ack_msg[2] = { 2004 static const __le32 bt_kill_ack_msg[2] = {
2004 cpu_to_le32(0xFFFFFFF), cpu_to_le32(0xFFFFFC00) }; 2005 IWLAGN_BT_KILL_ACK_MASK_DEFAULT,
2005 2006 IWLAGN_BT_KILL_ACK_CTS_MASK_SCO };
2006 kill_ack_msk = (((BT_UART_MSG_FRAME3A2DP_MSK | 2007 static const __le32 bt_kill_cts_msg[2] = {
2007 BT_UART_MSG_FRAME3SNIFF_MSK | 2008 IWLAGN_BT_KILL_CTS_MASK_DEFAULT,
2008 BT_UART_MSG_FRAME3SCOESCO_MSK) & 2009 IWLAGN_BT_KILL_ACK_CTS_MASK_SCO };
2009 uart_msg->frame3) == 0) ? 1 : 0; 2010
2010 if (priv->kill_ack_mask != bt_kill_ack_msg[kill_ack_msk]) { 2011 kill_msk = (BT_UART_MSG_FRAME3SCOESCO_MSK & uart_msg->frame3)
2012 ? 1 : 0;
2013 if (priv->kill_ack_mask != bt_kill_ack_msg[kill_msk] ||
2014 priv->kill_cts_mask != bt_kill_cts_msg[kill_msk]) {
2011 priv->bt_valid |= IWLAGN_BT_VALID_KILL_ACK_MASK; 2015 priv->bt_valid |= IWLAGN_BT_VALID_KILL_ACK_MASK;
2012 priv->kill_ack_mask = bt_kill_ack_msg[kill_ack_msk]; 2016 priv->kill_ack_mask = bt_kill_ack_msg[kill_msk];
2017 priv->bt_valid |= IWLAGN_BT_VALID_KILL_CTS_MASK;
2018 priv->kill_cts_mask = bt_kill_cts_msg[kill_msk];
2019
2013 /* schedule to send runtime bt_config */ 2020 /* schedule to send runtime bt_config */
2014 queue_work(priv->workqueue, &priv->bt_runtime_config); 2021 queue_work(priv->workqueue, &priv->bt_runtime_config);
2015 } 2022 }
2016
2017} 2023}
2018 2024
2019void iwlagn_bt_coex_profile_notif(struct iwl_priv *priv, 2025void iwlagn_bt_coex_profile_notif(struct iwl_priv *priv,
@@ -2064,7 +2070,7 @@ void iwlagn_bt_coex_profile_notif(struct iwl_priv *priv,
2064 } 2070 }
2065 } 2071 }
2066 2072
2067 iwlagn_set_kill_ack_msk(priv, uart_msg); 2073 iwlagn_set_kill_msk(priv, uart_msg);
2068 2074
2069 /* FIXME: based on notification, adjust the prio_boost */ 2075 /* FIXME: based on notification, adjust the prio_boost */
2070 2076
diff --git a/drivers/net/wireless/iwlwifi/iwl-commands.h b/drivers/net/wireless/iwlwifi/iwl-commands.h
index c9448cba1e2..f893d4a6aa8 100644
--- a/drivers/net/wireless/iwlwifi/iwl-commands.h
+++ b/drivers/net/wireless/iwlwifi/iwl-commands.h
@@ -2453,6 +2453,7 @@ struct iwl_bt_cmd {
2453 2453
2454#define IWLAGN_BT_KILL_ACK_MASK_DEFAULT cpu_to_le32(0xffff0000) 2454#define IWLAGN_BT_KILL_ACK_MASK_DEFAULT cpu_to_le32(0xffff0000)
2455#define IWLAGN_BT_KILL_CTS_MASK_DEFAULT cpu_to_le32(0xffff0000) 2455#define IWLAGN_BT_KILL_CTS_MASK_DEFAULT cpu_to_le32(0xffff0000)
2456#define IWLAGN_BT_KILL_ACK_CTS_MASK_SCO cpu_to_le32(0xffffffff)
2456 2457
2457#define IWLAGN_BT3_PRIO_SAMPLE_DEFAULT 2 2458#define IWLAGN_BT3_PRIO_SAMPLE_DEFAULT 2
2458 2459