diff options
author | Gregory Greenman <gregory.greenman@intel.com> | 2008-05-15 01:53:59 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-05-21 21:47:54 -0400 |
commit | c1adf9fb31e31ee753d613bd5bc6aef9b762b747 (patch) | |
tree | c4f91af5ec9b24bee0833cf88b6379b1cf8fb993 /drivers/net/wireless/iwlwifi/iwl-4965.c | |
parent | 8567c63e3385688b95658fe31b3ac8f4436b1b0f (diff) |
iwlwifi: get_hw_cmd_size
This patch introduces a new handler get_hw_cmd_size in hcmd_utils,
which should adjust the size of the command sent to the microcode
according to the current nic.
It also changes the RXON flow to make usage of this new handler.
The patch also adds iwl_rxon_cmd structure which is supperset for
5000 HW and 4965.
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-4965.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-4965.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c index 2bb0075a807f..83876a07fe2e 100644 --- a/drivers/net/wireless/iwlwifi/iwl-4965.c +++ b/drivers/net/wireless/iwlwifi/iwl-4965.c | |||
@@ -1857,8 +1857,8 @@ static int iwl4965_send_rxon_assoc(struct iwl_priv *priv) | |||
1857 | { | 1857 | { |
1858 | int ret = 0; | 1858 | int ret = 0; |
1859 | struct iwl4965_rxon_assoc_cmd rxon_assoc; | 1859 | struct iwl4965_rxon_assoc_cmd rxon_assoc; |
1860 | const struct iwl4965_rxon_cmd *rxon1 = &priv->staging_rxon; | 1860 | const struct iwl_rxon_cmd *rxon1 = &priv->staging_rxon; |
1861 | const struct iwl4965_rxon_cmd *rxon2 = &priv->active_rxon; | 1861 | const struct iwl_rxon_cmd *rxon2 = &priv->active_rxon; |
1862 | 1862 | ||
1863 | if ((rxon1->flags == rxon2->flags) && | 1863 | if ((rxon1->flags == rxon2->flags) && |
1864 | (rxon1->filter_flags == rxon2->filter_flags) && | 1864 | (rxon1->filter_flags == rxon2->filter_flags) && |
@@ -3743,6 +3743,16 @@ int iwl4965_mac_ampdu_action(struct ieee80211_hw *hw, | |||
3743 | #endif /* CONFIG_IWL4965_HT */ | 3743 | #endif /* CONFIG_IWL4965_HT */ |
3744 | 3744 | ||
3745 | 3745 | ||
3746 | static u16 iwl4965_get_hcmd_size(u8 cmd_id, u16 len) | ||
3747 | { | ||
3748 | switch (cmd_id) { | ||
3749 | case REPLY_RXON: | ||
3750 | return (u16) sizeof(struct iwl4965_rxon_cmd); | ||
3751 | default: | ||
3752 | return len; | ||
3753 | } | ||
3754 | } | ||
3755 | |||
3746 | static u16 iwl4965_build_addsta_hcmd(const struct iwl_addsta_cmd *cmd, u8 *data) | 3756 | static u16 iwl4965_build_addsta_hcmd(const struct iwl_addsta_cmd *cmd, u8 *data) |
3747 | { | 3757 | { |
3748 | struct iwl4965_addsta_cmd *addsta = (struct iwl4965_addsta_cmd *)data; | 3758 | struct iwl4965_addsta_cmd *addsta = (struct iwl4965_addsta_cmd *)data; |
@@ -3802,6 +3812,7 @@ static struct iwl_hcmd_ops iwl4965_hcmd = { | |||
3802 | }; | 3812 | }; |
3803 | 3813 | ||
3804 | static struct iwl_hcmd_utils_ops iwl4965_hcmd_utils = { | 3814 | static struct iwl_hcmd_utils_ops iwl4965_hcmd_utils = { |
3815 | .get_hcmd_size = iwl4965_get_hcmd_size, | ||
3805 | .enqueue_hcmd = iwl4965_enqueue_hcmd, | 3816 | .enqueue_hcmd = iwl4965_enqueue_hcmd, |
3806 | .build_addsta_hcmd = iwl4965_build_addsta_hcmd, | 3817 | .build_addsta_hcmd = iwl4965_build_addsta_hcmd, |
3807 | #ifdef CONFIG_IWL4965_RUN_TIME_CALIB | 3818 | #ifdef CONFIG_IWL4965_RUN_TIME_CALIB |