aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorWey-Yi Guy <wey-yi.w.guy@intel.com>2009-10-30 17:36:16 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-11-02 15:39:48 -0500
commitfe1bcbfda77bf6fa3bbad8bf26b9e9ab23fbe345 (patch)
tree2d1a07e5af50d65cb12abcaf785cbe38c04675cf /drivers
parentf2f21b4928489e1cf6c289d2f429e75c6dee61b5 (diff)
iwlwifi: coex API data structure
Add data structure define for COEX_MEDIUM_NOTIFICATION and COEX_EVENT_CMD host commands. COEX_MEDIUM_NOTIFICATION is notification from uCode to host to indicate medium changes. COEX_EVENT_CMD is from host to uCode for coex event request. Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-commands.h69
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-hcmd.c2
2 files changed, 68 insertions, 3 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-commands.h b/drivers/net/wireless/iwlwifi/iwl-commands.h
index 954bad60355d..43dd6af00892 100644
--- a/drivers/net/wireless/iwlwifi/iwl-commands.h
+++ b/drivers/net/wireless/iwlwifi/iwl-commands.h
@@ -3503,30 +3503,42 @@ struct iwl_led_cmd {
3503} __attribute__ ((packed)); 3503} __attribute__ ((packed));
3504 3504
3505/* 3505/*
3506 * Coexistence WIFI/WIMAX Command 3506 * station priority table entries
3507 * COEX_PRIORITY_TABLE_CMD = 0x5a 3507 * also used as potential "events" value for both
3508 * 3508 * COEX_MEDIUM_NOTIFICATION and COEX_EVENT_CMD
3509 */ 3509 */
3510enum { 3510enum {
3511 /* un-association part */
3511 COEX_UNASSOC_IDLE = 0, 3512 COEX_UNASSOC_IDLE = 0,
3512 COEX_UNASSOC_MANUAL_SCAN = 1, 3513 COEX_UNASSOC_MANUAL_SCAN = 1,
3513 COEX_UNASSOC_AUTO_SCAN = 2, 3514 COEX_UNASSOC_AUTO_SCAN = 2,
3515 /* calibration */
3514 COEX_CALIBRATION = 3, 3516 COEX_CALIBRATION = 3,
3515 COEX_PERIODIC_CALIBRATION = 4, 3517 COEX_PERIODIC_CALIBRATION = 4,
3518 /* connection */
3516 COEX_CONNECTION_ESTAB = 5, 3519 COEX_CONNECTION_ESTAB = 5,
3520 /* association part */
3517 COEX_ASSOCIATED_IDLE = 6, 3521 COEX_ASSOCIATED_IDLE = 6,
3518 COEX_ASSOC_MANUAL_SCAN = 7, 3522 COEX_ASSOC_MANUAL_SCAN = 7,
3519 COEX_ASSOC_AUTO_SCAN = 8, 3523 COEX_ASSOC_AUTO_SCAN = 8,
3520 COEX_ASSOC_ACTIVE_LEVEL = 9, 3524 COEX_ASSOC_ACTIVE_LEVEL = 9,
3525 /* RF ON/OFF */
3521 COEX_RF_ON = 10, 3526 COEX_RF_ON = 10,
3522 COEX_RF_OFF = 11, 3527 COEX_RF_OFF = 11,
3523 COEX_STAND_ALONE_DEBUG = 12, 3528 COEX_STAND_ALONE_DEBUG = 12,
3529 /* IPAN */
3524 COEX_IPAN_ASSOC_LEVEL = 13, 3530 COEX_IPAN_ASSOC_LEVEL = 13,
3531 /* reserved */
3525 COEX_RSRVD1 = 14, 3532 COEX_RSRVD1 = 14,
3526 COEX_RSRVD2 = 15, 3533 COEX_RSRVD2 = 15,
3527 COEX_NUM_OF_EVENTS = 16 3534 COEX_NUM_OF_EVENTS = 16
3528}; 3535};
3529 3536
3537/*
3538 * Coexistence WIFI/WIMAX Command
3539 * COEX_PRIORITY_TABLE_CMD = 0x5a
3540 *
3541 */
3530struct iwl_wimax_coex_event_entry { 3542struct iwl_wimax_coex_event_entry {
3531 u8 request_prio; 3543 u8 request_prio;
3532 u8 win_medium_prio; 3544 u8 win_medium_prio;
@@ -3551,6 +3563,55 @@ struct iwl_wimax_coex_cmd {
3551 struct iwl_wimax_coex_event_entry sta_prio[COEX_NUM_OF_EVENTS]; 3563 struct iwl_wimax_coex_event_entry sta_prio[COEX_NUM_OF_EVENTS];
3552} __attribute__ ((packed)); 3564} __attribute__ ((packed));
3553 3565
3566/*
3567 * Coexistence MEDIUM NOTIFICATION
3568 * COEX_MEDIUM_NOTIFICATION = 0x5b
3569 *
3570 * notification from uCode to host to indicate medium changes
3571 *
3572 */
3573/*
3574 * status field
3575 * bit 0 - 2: medium status
3576 * bit 3: medium change indication
3577 * bit 4 - 31: reserved
3578 */
3579/* status option values, (0 - 2 bits) */
3580#define COEX_MEDIUM_BUSY (0x0) /* radio belongs to WiMAX */
3581#define COEX_MEDIUM_ACTIVE (0x1) /* radio belongs to WiFi */
3582#define COEX_MEDIUM_PRE_RELEASE (0x2) /* received radio release */
3583#define COEX_MEDIUM_MSK (0x7)
3584
3585/* send notification status (1 bit) */
3586#define COEX_MEDIUM_CHANGED (0x8)
3587#define COEX_MEDIUM_CHANGED_MSK (0x8)
3588#define COEX_MEDIUM_SHIFT (3)
3589
3590struct iwl_coex_medium_notification {
3591 __le32 status;
3592 __le32 events;
3593} __attribute__ ((packed));
3594
3595/*
3596 * Coexistence EVENT Command
3597 * COEX_EVENT_CMD = 0x5c
3598 *
3599 * send from host to uCode for coex event request.
3600 */
3601/* flags options */
3602#define COEX_EVENT_REQUEST_MSK (0x1)
3603
3604struct iwl_coex_event_cmd {
3605 u8 flags;
3606 u8 event;
3607 __le16 reserved;
3608} __attribute__ ((packed));
3609
3610struct iwl_coex_event_resp {
3611 __le32 status;
3612} __attribute__ ((packed));
3613
3614
3554/****************************************************************************** 3615/******************************************************************************
3555 * (13) 3616 * (13)
3556 * Union of all expected notifications/responses: 3617 * Union of all expected notifications/responses:
@@ -3587,6 +3648,8 @@ struct iwl_rx_packet {
3587 struct iwl_notif_statistics stats; 3648 struct iwl_notif_statistics stats;
3588 struct iwl_compressed_ba_resp compressed_ba; 3649 struct iwl_compressed_ba_resp compressed_ba;
3589 struct iwl_missed_beacon_notif missed_beacon; 3650 struct iwl_missed_beacon_notif missed_beacon;
3651 struct iwl_coex_medium_notification coex_medium_notif;
3652 struct iwl_coex_event_resp coex_event;
3590 __le32 status; 3653 __le32 status;
3591 u8 raw[0]; 3654 u8 raw[0];
3592 } u; 3655 } u;
diff --git a/drivers/net/wireless/iwlwifi/iwl-hcmd.c b/drivers/net/wireless/iwlwifi/iwl-hcmd.c
index f2a60dc4109f..905645d15a9b 100644
--- a/drivers/net/wireless/iwlwifi/iwl-hcmd.c
+++ b/drivers/net/wireless/iwlwifi/iwl-hcmd.c
@@ -55,6 +55,8 @@ const char *get_cmd_string(u8 cmd)
55 IWL_CMD(REPLY_LEDS_CMD); 55 IWL_CMD(REPLY_LEDS_CMD);
56 IWL_CMD(REPLY_TX_LINK_QUALITY_CMD); 56 IWL_CMD(REPLY_TX_LINK_QUALITY_CMD);
57 IWL_CMD(COEX_PRIORITY_TABLE_CMD); 57 IWL_CMD(COEX_PRIORITY_TABLE_CMD);
58 IWL_CMD(COEX_MEDIUM_NOTIFICATION);
59 IWL_CMD(COEX_EVENT_CMD);
58 IWL_CMD(RADAR_NOTIFICATION); 60 IWL_CMD(RADAR_NOTIFICATION);
59 IWL_CMD(REPLY_QUIET_CMD); 61 IWL_CMD(REPLY_QUIET_CMD);
60 IWL_CMD(REPLY_CHANNEL_SWITCH); 62 IWL_CMD(REPLY_CHANNEL_SWITCH);