diff options
author | Wey-Yi Guy <wey-yi.w.guy@intel.com> | 2009-10-30 17:36:16 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-11-02 15:39:48 -0500 |
commit | fe1bcbfda77bf6fa3bbad8bf26b9e9ab23fbe345 (patch) | |
tree | 2d1a07e5af50d65cb12abcaf785cbe38c04675cf /drivers | |
parent | f2f21b4928489e1cf6c289d2f429e75c6dee61b5 (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.h | 69 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-hcmd.c | 2 |
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 | */ |
3510 | enum { | 3510 | enum { |
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 | */ | ||
3530 | struct iwl_wimax_coex_event_entry { | 3542 | struct 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 | |||
3590 | struct 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 | |||
3604 | struct iwl_coex_event_cmd { | ||
3605 | u8 flags; | ||
3606 | u8 event; | ||
3607 | __le16 reserved; | ||
3608 | } __attribute__ ((packed)); | ||
3609 | |||
3610 | struct 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); |