Commit 0288d237 authored by Johannes Berg's avatar Johannes Berg Committed by John W. Linville

iwlwifi: add 6000g2b BT coexist API

The new 6000g2b hardware requires a different
bluetooth coexist implementation on the host,
this adds the command/notification definitions
for it.
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarWey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 767d055d
...@@ -173,6 +173,12 @@ enum { ...@@ -173,6 +173,12 @@ enum {
REPLY_RX_MPDU_CMD = 0xc1, REPLY_RX_MPDU_CMD = 0xc1,
REPLY_RX = 0xc3, REPLY_RX = 0xc3,
REPLY_COMPRESSED_BA = 0xc5, REPLY_COMPRESSED_BA = 0xc5,
/* BT Coex */
REPLY_BT_COEX_PRIO_TABLE = 0xcc,
REPLY_BT_COEX_PROT_ENV = 0xcd,
REPLY_BT_COEX_PROFILE_NOTIF = 0xce,
REPLY_MAX = 0xff REPLY_MAX = 0xff
}; };
...@@ -2896,6 +2902,12 @@ struct iwl_scanstart_notification { ...@@ -2896,6 +2902,12 @@ struct iwl_scanstart_notification {
#define SCAN_OWNER_STATUS 0x1; #define SCAN_OWNER_STATUS 0x1;
#define MEASURE_OWNER_STATUS 0x2; #define MEASURE_OWNER_STATUS 0x2;
#define IWL_PROBE_STATUS_OK 0
#define IWL_PROBE_STATUS_TX_FAILED BIT(0)
/* error statuses combined with TX_FAILED */
#define IWL_PROBE_STATUS_FAIL_TTL BIT(1)
#define IWL_PROBE_STATUS_FAIL_BT BIT(2)
#define NUMBER_OF_STATISTICS 1 /* first __le32 is good CRC */ #define NUMBER_OF_STATISTICS 1 /* first __le32 is good CRC */
/* /*
* SCAN_RESULTS_NOTIFICATION = 0x83 (notification only, not a command) * SCAN_RESULTS_NOTIFICATION = 0x83 (notification only, not a command)
...@@ -2903,7 +2915,8 @@ struct iwl_scanstart_notification { ...@@ -2903,7 +2915,8 @@ struct iwl_scanstart_notification {
struct iwl_scanresults_notification { struct iwl_scanresults_notification {
u8 channel; u8 channel;
u8 band; u8 band;
u8 reserved[2]; u8 probe_status;
u8 num_probe_not_sent; /* not enough time to send */
__le32 tsf_low; __le32 tsf_low;
__le32 tsf_high; __le32 tsf_high;
__le32 statistics[NUMBER_OF_STATISTICS]; __le32 statistics[NUMBER_OF_STATISTICS];
...@@ -3968,6 +3981,66 @@ struct iwl_coex_event_resp { ...@@ -3968,6 +3981,66 @@ struct iwl_coex_event_resp {
} __packed; } __packed;
/******************************************************************************
* Bluetooth Coexistence commands
*
*****************************************************************************/
/*
* BT Status notification
* REPLY_BT_COEX_PROFILE_NOTIF = 0xcb
*/
enum iwl_bt_coex_profile_traffic_load {
IWL_BT_COEX_TRAFFIC_LOAD_NONE = 0,
IWL_BT_COEX_TRAFFIC_LOAD_LOW = 1,
IWL_BT_COEX_TRAFFIC_LOAD_HIGH = 2,
IWL_BT_COEX_TRAFFIC_LOAD_CONTINUOUS = 3,
/*
* There are no more even though below is a u8, the
* indication from the BT device only has two bits.
*/
};
struct iwl_bt_coex_profile_notif {
u8 uart_msg[8];
u8 bt_status; /* 0 - off, 1 - on */
u8 bt_traffic_load; /* 0 .. 3? */
u8 bt_ci_compliance; /* 0 - not complied, 1 - complied */
u8 reserved;
} __attribute__((packed));
#define IWL_BT_COEX_PRIO_SHARED_ANTENNA 0x1
#define IWL_BT_COEX_PRIO_PRIO_MASK 0xe
#define IWL_BT_COEX_PRIO_PRIO_SHIFT 1
/*
* BT Coexistence Priority table
* REPLY_BT_COEX_PRIO_TABLE = 0xcc
*/
struct iwl_bt_coex_prio_table_cmd {
u8 init_calib_protection_cfg1,
init_calib_protection_cfg2,
init_calib_protection_lowprio_cfg1,
init_calib_protection_lowprio_cfg2,
init_calib_protection_highprio_cfg1,
init_calib_protection_highprio_cfg2,
dtim_protection_prio_cfg,
scan_52_protection_cfg,
scan_24_protection_cfg,
bc_mc_protection_cfg;
u8 reserved[6];
} __attribute__((packed));
/*
* BT Protection Envelope
* REPLY_BT_COEX_PROT_ENV = 0xcd
*/
struct iwl_bt_coex_prot_env_cmd {
u8 open; /* 0 = closed, 1 = open */
u8 type; /* 0 .. 15 */
u8 reserved[2];
} __attribute__((packed));
/****************************************************************************** /******************************************************************************
* (13) * (13)
* Union of all expected notifications/responses: * Union of all expected notifications/responses:
...@@ -4007,6 +4080,7 @@ struct iwl_rx_packet { ...@@ -4007,6 +4080,7 @@ struct iwl_rx_packet {
struct iwl_missed_beacon_notif missed_beacon; struct iwl_missed_beacon_notif missed_beacon;
struct iwl_coex_medium_notification coex_medium_notif; struct iwl_coex_medium_notification coex_medium_notif;
struct iwl_coex_event_resp coex_event; struct iwl_coex_event_resp coex_event;
struct iwl_bt_coex_profile_notif bt_coex_profile_notif;
__le32 status; __le32 status;
u8 raw[0]; u8 raw[0];
} u; } u;
......
...@@ -97,6 +97,9 @@ const char *get_cmd_string(u8 cmd) ...@@ -97,6 +97,9 @@ const char *get_cmd_string(u8 cmd)
IWL_CMD(REPLY_TX_POWER_DBM_CMD); IWL_CMD(REPLY_TX_POWER_DBM_CMD);
IWL_CMD(TEMPERATURE_NOTIFICATION); IWL_CMD(TEMPERATURE_NOTIFICATION);
IWL_CMD(TX_ANT_CONFIGURATION_CMD); IWL_CMD(TX_ANT_CONFIGURATION_CMD);
IWL_CMD(REPLY_BT_COEX_PROFILE_NOTIF);
IWL_CMD(REPLY_BT_COEX_PRIO_TABLE);
IWL_CMD(REPLY_BT_COEX_PROT_ENV);
default: default:
return "UNKNOWN"; return "UNKNOWN";
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment