aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-2000.c1
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-lib.c78
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-commands.h108
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.h1
4 files changed, 158 insertions, 30 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-2000.c b/drivers/net/wireless/iwlwifi/iwl-2000.c
index 30483e27ce5c..335adedcee43 100644
--- a/drivers/net/wireless/iwlwifi/iwl-2000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-2000.c
@@ -418,6 +418,7 @@ static struct iwl_bt_params iwl2030_bt_params = {
418 .bt_init_traffic_load = IWL_BT_COEX_TRAFFIC_LOAD_NONE, 418 .bt_init_traffic_load = IWL_BT_COEX_TRAFFIC_LOAD_NONE,
419 .bt_prio_boost = IWLAGN_BT_PRIO_BOOST_DEFAULT, 419 .bt_prio_boost = IWLAGN_BT_PRIO_BOOST_DEFAULT,
420 .bt_sco_disable = true, 420 .bt_sco_disable = true,
421 .bt_session_2 = true,
421}; 422};
422 423
423#define IWL_DEVICE_2000 \ 424#define IWL_DEVICE_2000 \
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
index 0d0572ca7e77..8e192072df15 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
@@ -1804,26 +1804,39 @@ static const __le32 iwlagn_concurrent_lookup[12] = {
1804 1804
1805void iwlagn_send_advance_bt_config(struct iwl_priv *priv) 1805void iwlagn_send_advance_bt_config(struct iwl_priv *priv)
1806{ 1806{
1807 struct iwlagn_bt_cmd bt_cmd = { 1807 struct iwl_basic_bt_cmd basic = {
1808 .max_kill = IWLAGN_BT_MAX_KILL_DEFAULT, 1808 .max_kill = IWLAGN_BT_MAX_KILL_DEFAULT,
1809 .bt3_timer_t7_value = IWLAGN_BT3_T7_DEFAULT, 1809 .bt3_timer_t7_value = IWLAGN_BT3_T7_DEFAULT,
1810 .bt3_prio_sample_time = IWLAGN_BT3_PRIO_SAMPLE_DEFAULT, 1810 .bt3_prio_sample_time = IWLAGN_BT3_PRIO_SAMPLE_DEFAULT,
1811 .bt3_timer_t2_value = IWLAGN_BT3_T2_DEFAULT, 1811 .bt3_timer_t2_value = IWLAGN_BT3_T2_DEFAULT,
1812 }; 1812 };
1813 struct iwl6000_bt_cmd bt_cmd_6000;
1814 struct iwl2000_bt_cmd bt_cmd_2000;
1815 int ret;
1813 1816
1814 BUILD_BUG_ON(sizeof(iwlagn_def_3w_lookup) != 1817 BUILD_BUG_ON(sizeof(iwlagn_def_3w_lookup) !=
1815 sizeof(bt_cmd.bt3_lookup_table)); 1818 sizeof(basic.bt3_lookup_table));
1816 1819
1817 if (priv->cfg->bt_params) 1820 if (priv->cfg->bt_params) {
1818 bt_cmd.prio_boost = priv->cfg->bt_params->bt_prio_boost; 1821 if (priv->cfg->bt_params->bt_session_2) {
1819 else 1822 bt_cmd_2000.prio_boost = cpu_to_le32(
1820 bt_cmd.prio_boost = 0; 1823 priv->cfg->bt_params->bt_prio_boost);
1821 bt_cmd.kill_ack_mask = priv->kill_ack_mask; 1824 bt_cmd_2000.tx_prio_boost = 0;
1822 bt_cmd.kill_cts_mask = priv->kill_cts_mask; 1825 bt_cmd_2000.rx_prio_boost = 0;
1826 } else {
1827 bt_cmd_6000.prio_boost =
1828 priv->cfg->bt_params->bt_prio_boost;
1829 bt_cmd_6000.tx_prio_boost = 0;
1830 bt_cmd_6000.rx_prio_boost = 0;
1831 }
1832 } else {
1833 IWL_ERR(priv, "failed to construct BT Coex Config\n");
1834 return;
1835 }
1823 1836
1824 bt_cmd.valid = priv->bt_valid; 1837 basic.kill_ack_mask = priv->kill_ack_mask;
1825 bt_cmd.tx_prio_boost = 0; 1838 basic.kill_cts_mask = priv->kill_cts_mask;
1826 bt_cmd.rx_prio_boost = 0; 1839 basic.valid = priv->bt_valid;
1827 1840
1828 /* 1841 /*
1829 * Configure BT coex mode to "no coexistence" when the 1842 * Configure BT coex mode to "no coexistence" when the
@@ -1832,32 +1845,43 @@ void iwlagn_send_advance_bt_config(struct iwl_priv *priv)
1832 * IBSS mode (no proper uCode support for coex then). 1845 * IBSS mode (no proper uCode support for coex then).
1833 */ 1846 */
1834 if (!bt_coex_active || priv->iw_mode == NL80211_IFTYPE_ADHOC) { 1847 if (!bt_coex_active || priv->iw_mode == NL80211_IFTYPE_ADHOC) {
1835 bt_cmd.flags = IWLAGN_BT_FLAG_COEX_MODE_DISABLED; 1848 basic.flags = IWLAGN_BT_FLAG_COEX_MODE_DISABLED;
1836 } else { 1849 } else {
1837 bt_cmd.flags = IWLAGN_BT_FLAG_COEX_MODE_3W << 1850 basic.flags = IWLAGN_BT_FLAG_COEX_MODE_3W <<
1838 IWLAGN_BT_FLAG_COEX_MODE_SHIFT; 1851 IWLAGN_BT_FLAG_COEX_MODE_SHIFT;
1839 if (priv->cfg->bt_params && 1852 if (priv->cfg->bt_params &&
1840 priv->cfg->bt_params->bt_sco_disable) 1853 priv->cfg->bt_params->bt_sco_disable)
1841 bt_cmd.flags |= IWLAGN_BT_FLAG_SYNC_2_BT_DISABLE; 1854 basic.flags |= IWLAGN_BT_FLAG_SYNC_2_BT_DISABLE;
1842 1855
1843 if (priv->bt_ch_announce) 1856 if (priv->bt_ch_announce)
1844 bt_cmd.flags |= IWLAGN_BT_FLAG_CHANNEL_INHIBITION; 1857 basic.flags |= IWLAGN_BT_FLAG_CHANNEL_INHIBITION;
1845 IWL_DEBUG_INFO(priv, "BT coex flag: 0X%x\n", bt_cmd.flags); 1858 IWL_DEBUG_INFO(priv, "BT coex flag: 0X%x\n", basic.flags);
1846 } 1859 }
1847 priv->bt_enable_flag = bt_cmd.flags; 1860 priv->bt_enable_flag = basic.flags;
1848 if (priv->bt_full_concurrent) 1861 if (priv->bt_full_concurrent)
1849 memcpy(bt_cmd.bt3_lookup_table, iwlagn_concurrent_lookup, 1862 memcpy(basic.bt3_lookup_table, iwlagn_concurrent_lookup,
1850 sizeof(iwlagn_concurrent_lookup)); 1863 sizeof(iwlagn_concurrent_lookup));
1851 else 1864 else
1852 memcpy(bt_cmd.bt3_lookup_table, iwlagn_def_3w_lookup, 1865 memcpy(basic.bt3_lookup_table, iwlagn_def_3w_lookup,
1853 sizeof(iwlagn_def_3w_lookup)); 1866 sizeof(iwlagn_def_3w_lookup));
1854 1867
1855 IWL_DEBUG_INFO(priv, "BT coex %s in %s mode\n", 1868 IWL_DEBUG_INFO(priv, "BT coex %s in %s mode\n",
1856 bt_cmd.flags ? "active" : "disabled", 1869 basic.flags ? "active" : "disabled",
1857 priv->bt_full_concurrent ? 1870 priv->bt_full_concurrent ?
1858 "full concurrency" : "3-wire"); 1871 "full concurrency" : "3-wire");
1859 1872
1860 if (iwl_send_cmd_pdu(priv, REPLY_BT_CONFIG, sizeof(bt_cmd), &bt_cmd)) 1873 if (priv->cfg->bt_params->bt_session_2) {
1874 memcpy(&bt_cmd_2000.basic, &basic,
1875 sizeof(basic));
1876 ret = iwl_send_cmd_pdu(priv, REPLY_BT_CONFIG,
1877 sizeof(bt_cmd_2000), &bt_cmd_2000);
1878 } else {
1879 memcpy(&bt_cmd_6000.basic, &basic,
1880 sizeof(basic));
1881 ret = iwl_send_cmd_pdu(priv, REPLY_BT_CONFIG,
1882 sizeof(bt_cmd_6000), &bt_cmd_6000);
1883 }
1884 if (ret)
1861 IWL_ERR(priv, "failed to send BT Coex Config\n"); 1885 IWL_ERR(priv, "failed to send BT Coex Config\n");
1862 1886
1863} 1887}
@@ -1984,12 +2008,14 @@ static void iwlagn_print_uartmsg(struct iwl_priv *priv,
1984 (BT_UART_MSG_FRAME6DISCOVERABLE_MSK & uart_msg->frame6) >> 2008 (BT_UART_MSG_FRAME6DISCOVERABLE_MSK & uart_msg->frame6) >>
1985 BT_UART_MSG_FRAME6DISCOVERABLE_POS); 2009 BT_UART_MSG_FRAME6DISCOVERABLE_POS);
1986 2010
1987 IWL_DEBUG_NOTIF(priv, "Sniff Activity = 0x%X, Inquiry/Page SR Mode = " 2011 IWL_DEBUG_NOTIF(priv, "Sniff Activity = 0x%X, Page = "
1988 "0x%X, Connectable = 0x%X", 2012 "0x%X, Inquiry = 0x%X, Connectable = 0x%X",
1989 (BT_UART_MSG_FRAME7SNIFFACTIVITY_MSK & uart_msg->frame7) >> 2013 (BT_UART_MSG_FRAME7SNIFFACTIVITY_MSK & uart_msg->frame7) >>
1990 BT_UART_MSG_FRAME7SNIFFACTIVITY_POS, 2014 BT_UART_MSG_FRAME7SNIFFACTIVITY_POS,
1991 (BT_UART_MSG_FRAME7INQUIRYPAGESRMODE_MSK & uart_msg->frame7) >> 2015 (BT_UART_MSG_FRAME7PAGE_MSK & uart_msg->frame7) >>
1992 BT_UART_MSG_FRAME7INQUIRYPAGESRMODE_POS, 2016 BT_UART_MSG_FRAME7PAGE_POS,
2017 (BT_UART_MSG_FRAME7INQUIRY_MSK & uart_msg->frame7) >>
2018 BT_UART_MSG_FRAME7INQUIRY_POS,
1993 (BT_UART_MSG_FRAME7CONNECTABLE_MSK & uart_msg->frame7) >> 2019 (BT_UART_MSG_FRAME7CONNECTABLE_MSK & uart_msg->frame7) >>
1994 BT_UART_MSG_FRAME7CONNECTABLE_POS); 2020 BT_UART_MSG_FRAME7CONNECTABLE_POS);
1995} 2021}
diff --git a/drivers/net/wireless/iwlwifi/iwl-commands.h b/drivers/net/wireless/iwlwifi/iwl-commands.h
index 0a1d4aeb36aa..03cfb74da2bc 100644
--- a/drivers/net/wireless/iwlwifi/iwl-commands.h
+++ b/drivers/net/wireless/iwlwifi/iwl-commands.h
@@ -2477,7 +2477,7 @@ struct iwl_bt_cmd {
2477 IWLAGN_BT_VALID_BT4_TIMES | \ 2477 IWLAGN_BT_VALID_BT4_TIMES | \
2478 IWLAGN_BT_VALID_3W_LUT) 2478 IWLAGN_BT_VALID_3W_LUT)
2479 2479
2480struct iwlagn_bt_cmd { 2480struct iwl_basic_bt_cmd {
2481 u8 flags; 2481 u8 flags;
2482 u8 ledtime; /* unused */ 2482 u8 ledtime; /* unused */
2483 u8 max_kill; 2483 u8 max_kill;
@@ -2490,6 +2490,10 @@ struct iwlagn_bt_cmd {
2490 __le32 bt3_lookup_table[12]; 2490 __le32 bt3_lookup_table[12];
2491 __le16 bt4_decision_time; /* unused */ 2491 __le16 bt4_decision_time; /* unused */
2492 __le16 valid; 2492 __le16 valid;
2493};
2494
2495struct iwl6000_bt_cmd {
2496 struct iwl_basic_bt_cmd basic;
2493 u8 prio_boost; 2497 u8 prio_boost;
2494 /* 2498 /*
2495 * set IWLAGN_BT_VALID_BOOST to "1" in "valid" bitmask 2499 * set IWLAGN_BT_VALID_BOOST to "1" in "valid" bitmask
@@ -2499,6 +2503,18 @@ struct iwlagn_bt_cmd {
2499 __le16 rx_prio_boost; /* SW boost of WiFi rx priority */ 2503 __le16 rx_prio_boost; /* SW boost of WiFi rx priority */
2500}; 2504};
2501 2505
2506struct iwl2000_bt_cmd {
2507 struct iwl_basic_bt_cmd basic;
2508 __le32 prio_boost;
2509 /*
2510 * set IWLAGN_BT_VALID_BOOST to "1" in "valid" bitmask
2511 * if configure the following patterns
2512 */
2513 u8 reserved;
2514 u8 tx_prio_boost; /* SW boost of WiFi tx priority */
2515 __le16 rx_prio_boost; /* SW boost of WiFi rx priority */
2516};
2517
2502#define IWLAGN_BT_SCO_ACTIVE cpu_to_le32(BIT(0)) 2518#define IWLAGN_BT_SCO_ACTIVE cpu_to_le32(BIT(0))
2503 2519
2504struct iwlagn_bt_sco_cmd { 2520struct iwlagn_bt_sco_cmd {
@@ -4150,6 +4166,10 @@ enum iwl_bt_coex_profile_traffic_load {
4150 */ 4166 */
4151}; 4167};
4152 4168
4169#define BT_SESSION_ACTIVITY_1_UART_MSG 0x1
4170#define BT_SESSION_ACTIVITY_2_UART_MSG 0x2
4171
4172/* BT UART message - Share Part (BT -> WiFi) */
4153#define BT_UART_MSG_FRAME1MSGTYPE_POS (0) 4173#define BT_UART_MSG_FRAME1MSGTYPE_POS (0)
4154#define BT_UART_MSG_FRAME1MSGTYPE_MSK \ 4174#define BT_UART_MSG_FRAME1MSGTYPE_MSK \
4155 (0x7 << BT_UART_MSG_FRAME1MSGTYPE_POS) 4175 (0x7 << BT_UART_MSG_FRAME1MSGTYPE_POS)
@@ -4234,9 +4254,12 @@ enum iwl_bt_coex_profile_traffic_load {
4234#define BT_UART_MSG_FRAME7SNIFFACTIVITY_POS (0) 4254#define BT_UART_MSG_FRAME7SNIFFACTIVITY_POS (0)
4235#define BT_UART_MSG_FRAME7SNIFFACTIVITY_MSK \ 4255#define BT_UART_MSG_FRAME7SNIFFACTIVITY_MSK \
4236 (0x7 << BT_UART_MSG_FRAME7SNIFFACTIVITY_POS) 4256 (0x7 << BT_UART_MSG_FRAME7SNIFFACTIVITY_POS)
4237#define BT_UART_MSG_FRAME7INQUIRYPAGESRMODE_POS (3) 4257#define BT_UART_MSG_FRAME7PAGE_POS (3)
4238#define BT_UART_MSG_FRAME7INQUIRYPAGESRMODE_MSK \ 4258#define BT_UART_MSG_FRAME7PAGE_MSK \
4239 (0x3 << BT_UART_MSG_FRAME7INQUIRYPAGESRMODE_POS) 4259 (0x1 << BT_UART_MSG_FRAME7PAGE_POS)
4260#define BT_UART_MSG_FRAME7INQUIRY_POS (4)
4261#define BT_UART_MSG_FRAME7INQUIRY_MSK \
4262 (0x1 << BT_UART_MSG_FRAME7INQUIRY_POS)
4240#define BT_UART_MSG_FRAME7CONNECTABLE_POS (5) 4263#define BT_UART_MSG_FRAME7CONNECTABLE_POS (5)
4241#define BT_UART_MSG_FRAME7CONNECTABLE_MSK \ 4264#define BT_UART_MSG_FRAME7CONNECTABLE_MSK \
4242 (0x1 << BT_UART_MSG_FRAME7CONNECTABLE_POS) 4265 (0x1 << BT_UART_MSG_FRAME7CONNECTABLE_POS)
@@ -4244,6 +4267,83 @@ enum iwl_bt_coex_profile_traffic_load {
4244#define BT_UART_MSG_FRAME7RESERVED_MSK \ 4267#define BT_UART_MSG_FRAME7RESERVED_MSK \
4245 (0x3 << BT_UART_MSG_FRAME7RESERVED_POS) 4268 (0x3 << BT_UART_MSG_FRAME7RESERVED_POS)
4246 4269
4270/* BT Session Activity 2 UART message (BT -> WiFi) */
4271#define BT_UART_MSG_2_FRAME1RESERVED1_POS (5)
4272#define BT_UART_MSG_2_FRAME1RESERVED1_MSK \
4273 (0x1<<BT_UART_MSG_2_FRAME1RESERVED1_POS)
4274#define BT_UART_MSG_2_FRAME1RESERVED2_POS (6)
4275#define BT_UART_MSG_2_FRAME1RESERVED2_MSK \
4276 (0x3<<BT_UART_MSG_2_FRAME1RESERVED2_POS)
4277
4278#define BT_UART_MSG_2_FRAME2AGGTRAFFICLOAD_POS (0)
4279#define BT_UART_MSG_2_FRAME2AGGTRAFFICLOAD_MSK \
4280 (0x3F<<BT_UART_MSG_2_FRAME2AGGTRAFFICLOAD_POS)
4281#define BT_UART_MSG_2_FRAME2RESERVED_POS (6)
4282#define BT_UART_MSG_2_FRAME2RESERVED_MSK \
4283 (0x3<<BT_UART_MSG_2_FRAME2RESERVED_POS)
4284
4285#define BT_UART_MSG_2_FRAME3BRLASTTXPOWER_POS (0)
4286#define BT_UART_MSG_2_FRAME3BRLASTTXPOWER_MSK \
4287 (0xF<<BT_UART_MSG_2_FRAME3BRLASTTXPOWER_POS)
4288#define BT_UART_MSG_2_FRAME3INQPAGESRMODE_POS (4)
4289#define BT_UART_MSG_2_FRAME3INQPAGESRMODE_MSK \
4290 (0x1<<BT_UART_MSG_2_FRAME3INQPAGESRMODE_POS)
4291#define BT_UART_MSG_2_FRAME3LEMASTER_POS (5)
4292#define BT_UART_MSG_2_FRAME3LEMASTER_MSK \
4293 (0x1<<BT_UART_MSG_2_FRAME3LEMASTER_POS)
4294#define BT_UART_MSG_2_FRAME3RESERVED_POS (6)
4295#define BT_UART_MSG_2_FRAME3RESERVED_MSK \
4296 (0x3<<BT_UART_MSG_2_FRAME3RESERVED_POS)
4297
4298#define BT_UART_MSG_2_FRAME4LELASTTXPOWER_POS (0)
4299#define BT_UART_MSG_2_FRAME4LELASTTXPOWER_MSK \
4300 (0xF<<BT_UART_MSG_2_FRAME4LELASTTXPOWER_POS)
4301#define BT_UART_MSG_2_FRAME4NUMLECONN_POS (4)
4302#define BT_UART_MSG_2_FRAME4NUMLECONN_MSK \
4303 (0x3<<BT_UART_MSG_2_FRAME4NUMLECONN_POS)
4304#define BT_UART_MSG_2_FRAME4RESERVED_POS (6)
4305#define BT_UART_MSG_2_FRAME4RESERVED_MSK \
4306 (0x3<<BT_UART_MSG_2_FRAME4RESERVED_POS)
4307
4308#define BT_UART_MSG_2_FRAME5BTMINRSSI_POS (0)
4309#define BT_UART_MSG_2_FRAME5BTMINRSSI_MSK \
4310 (0xF<<BT_UART_MSG_2_FRAME5BTMINRSSI_POS)
4311#define BT_UART_MSG_2_FRAME5LESCANINITMODE_POS (4)
4312#define BT_UART_MSG_2_FRAME5LESCANINITMODE_MSK \
4313 (0x1<<BT_UART_MSG_2_FRAME5LESCANINITMODE_POS)
4314#define BT_UART_MSG_2_FRAME5LEADVERMODE_POS (5)
4315#define BT_UART_MSG_2_FRAME5LEADVERMODE_MSK \
4316 (0x1<<BT_UART_MSG_2_FRAME5LEADVERMODE_POS)
4317#define BT_UART_MSG_2_FRAME5RESERVED_POS (6)
4318#define BT_UART_MSG_2_FRAME5RESERVED_MSK \
4319 (0x3<<BT_UART_MSG_2_FRAME5RESERVED_POS)
4320
4321#define BT_UART_MSG_2_FRAME6LECONNINTERVAL_POS (0)
4322#define BT_UART_MSG_2_FRAME6LECONNINTERVAL_MSK \
4323 (0x1F<<BT_UART_MSG_2_FRAME6LECONNINTERVAL_POS)
4324#define BT_UART_MSG_2_FRAME6RFU_POS (5)
4325#define BT_UART_MSG_2_FRAME6RFU_MSK \
4326 (0x1<<BT_UART_MSG_2_FRAME6RFU_POS)
4327#define BT_UART_MSG_2_FRAME6RESERVED_POS (6)
4328#define BT_UART_MSG_2_FRAME6RESERVED_MSK \
4329 (0x3<<BT_UART_MSG_2_FRAME6RESERVED_POS)
4330
4331#define BT_UART_MSG_2_FRAME7LECONNSLAVELAT_POS (0)
4332#define BT_UART_MSG_2_FRAME7LECONNSLAVELAT_MSK \
4333 (0x7<<BT_UART_MSG_2_FRAME7LECONNSLAVELAT_POS)
4334#define BT_UART_MSG_2_FRAME7LEPROFILE1_POS (3)
4335#define BT_UART_MSG_2_FRAME7LEPROFILE1_MSK \
4336 (0x1<<BT_UART_MSG_2_FRAME7LEPROFILE1_POS)
4337#define BT_UART_MSG_2_FRAME7LEPROFILE2_POS (4)
4338#define BT_UART_MSG_2_FRAME7LEPROFILE2_MSK \
4339 (0x1<<BT_UART_MSG_2_FRAME7LEPROFILE2_POS)
4340#define BT_UART_MSG_2_FRAME7LEPROFILEOTHER_POS (5)
4341#define BT_UART_MSG_2_FRAME7LEPROFILEOTHER_MSK \
4342 (0x1<<BT_UART_MSG_2_FRAME7LEPROFILEOTHER_POS)
4343#define BT_UART_MSG_2_FRAME7RESERVED_POS (6)
4344#define BT_UART_MSG_2_FRAME7RESERVED_MSK \
4345 (0x3<<BT_UART_MSG_2_FRAME7RESERVED_POS)
4346
4247 4347
4248struct iwl_bt_uart_msg { 4348struct iwl_bt_uart_msg {
4249 u8 header; 4349 u8 header;
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h
index e0ec17079dc0..909b42d5d9c0 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.h
+++ b/drivers/net/wireless/iwlwifi/iwl-core.h
@@ -339,6 +339,7 @@ struct iwl_bt_params {
339 u8 ampdu_factor; 339 u8 ampdu_factor;
340 u8 ampdu_density; 340 u8 ampdu_density;
341 bool bt_sco_disable; 341 bool bt_sco_disable;
342 bool bt_session_2;
342}; 343};
343/* 344/*
344 * @use_rts_for_aggregation: use rts/cts protection for HT traffic 345 * @use_rts_for_aggregation: use rts/cts protection for HT traffic