iwlwifi: legacy tx_cmd_protection function
Legacy (4965 and 3945) devices has different tx_cmd_protection routine. Move to iwl-legacy.c Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
e39fdee1d7
commit
708068db4c
@ -2749,7 +2749,7 @@ static const struct iwl_legacy_ops iwl3945_legacy_ops = {
|
|||||||
static struct iwl_hcmd_utils_ops iwl3945_hcmd_utils = {
|
static struct iwl_hcmd_utils_ops iwl3945_hcmd_utils = {
|
||||||
.get_hcmd_size = iwl3945_get_hcmd_size,
|
.get_hcmd_size = iwl3945_get_hcmd_size,
|
||||||
.build_addsta_hcmd = iwl3945_build_addsta_hcmd,
|
.build_addsta_hcmd = iwl3945_build_addsta_hcmd,
|
||||||
.tx_cmd_protection = iwlcore_tx_cmd_protection,
|
.tx_cmd_protection = iwl_legacy_tx_cmd_protection,
|
||||||
.request_scan = iwl3945_request_scan,
|
.request_scan = iwl3945_request_scan,
|
||||||
.post_scan = iwl3945_post_scan,
|
.post_scan = iwl3945_post_scan,
|
||||||
};
|
};
|
||||||
|
@ -2514,7 +2514,7 @@ static struct iwl_hcmd_utils_ops iwl4965_hcmd_utils = {
|
|||||||
.build_addsta_hcmd = iwl4965_build_addsta_hcmd,
|
.build_addsta_hcmd = iwl4965_build_addsta_hcmd,
|
||||||
.chain_noise_reset = iwl4965_chain_noise_reset,
|
.chain_noise_reset = iwl4965_chain_noise_reset,
|
||||||
.gain_computation = iwl4965_gain_computation,
|
.gain_computation = iwl4965_gain_computation,
|
||||||
.tx_cmd_protection = iwlcore_tx_cmd_protection,
|
.tx_cmd_protection = iwl_legacy_tx_cmd_protection,
|
||||||
.calc_rssi = iwl4965_calc_rssi,
|
.calc_rssi = iwl4965_calc_rssi,
|
||||||
.request_scan = iwlagn_request_scan,
|
.request_scan = iwlagn_request_scan,
|
||||||
.post_scan = iwl4965_post_scan,
|
.post_scan = iwl4965_post_scan,
|
||||||
|
@ -288,40 +288,6 @@ void iwlcore_free_geos(struct iwl_priv *priv)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(iwlcore_free_geos);
|
EXPORT_SYMBOL(iwlcore_free_geos);
|
||||||
|
|
||||||
/*
|
|
||||||
* iwlcore_tx_cmd_protection: Set rts/cts. 3945 and 4965 only share this
|
|
||||||
* function.
|
|
||||||
*/
|
|
||||||
void iwlcore_tx_cmd_protection(struct iwl_priv *priv,
|
|
||||||
struct ieee80211_tx_info *info,
|
|
||||||
__le16 fc, __le32 *tx_flags)
|
|
||||||
{
|
|
||||||
if (info->control.rates[0].flags & IEEE80211_TX_RC_USE_RTS_CTS) {
|
|
||||||
*tx_flags |= TX_CMD_FLG_RTS_MSK;
|
|
||||||
*tx_flags &= ~TX_CMD_FLG_CTS_MSK;
|
|
||||||
*tx_flags |= TX_CMD_FLG_FULL_TXOP_PROT_MSK;
|
|
||||||
|
|
||||||
if (!ieee80211_is_mgmt(fc))
|
|
||||||
return;
|
|
||||||
|
|
||||||
switch (fc & cpu_to_le16(IEEE80211_FCTL_STYPE)) {
|
|
||||||
case cpu_to_le16(IEEE80211_STYPE_AUTH):
|
|
||||||
case cpu_to_le16(IEEE80211_STYPE_DEAUTH):
|
|
||||||
case cpu_to_le16(IEEE80211_STYPE_ASSOC_REQ):
|
|
||||||
case cpu_to_le16(IEEE80211_STYPE_REASSOC_REQ):
|
|
||||||
*tx_flags &= ~TX_CMD_FLG_RTS_MSK;
|
|
||||||
*tx_flags |= TX_CMD_FLG_CTS_MSK;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else if (info->control.rates[0].flags & IEEE80211_TX_RC_USE_CTS_PROTECT) {
|
|
||||||
*tx_flags &= ~TX_CMD_FLG_RTS_MSK;
|
|
||||||
*tx_flags |= TX_CMD_FLG_CTS_MSK;
|
|
||||||
*tx_flags |= TX_CMD_FLG_FULL_TXOP_PROT_MSK;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(iwlcore_tx_cmd_protection);
|
|
||||||
|
|
||||||
|
|
||||||
static bool iwl_is_channel_extension(struct iwl_priv *priv,
|
static bool iwl_is_channel_extension(struct iwl_priv *priv,
|
||||||
enum ieee80211_band band,
|
enum ieee80211_band band,
|
||||||
u16 channel, u8 extension_chan_offset)
|
u16 channel, u8 extension_chan_offset)
|
||||||
|
@ -447,9 +447,7 @@ int iwl_mac_change_interface(struct ieee80211_hw *hw,
|
|||||||
enum nl80211_iftype newtype, bool newp2p);
|
enum nl80211_iftype newtype, bool newp2p);
|
||||||
int iwl_alloc_txq_mem(struct iwl_priv *priv);
|
int iwl_alloc_txq_mem(struct iwl_priv *priv);
|
||||||
void iwl_free_txq_mem(struct iwl_priv *priv);
|
void iwl_free_txq_mem(struct iwl_priv *priv);
|
||||||
void iwlcore_tx_cmd_protection(struct iwl_priv *priv,
|
|
||||||
struct ieee80211_tx_info *info,
|
|
||||||
__le16 fc, __le32 *tx_flags);
|
|
||||||
#ifdef CONFIG_IWLWIFI_DEBUGFS
|
#ifdef CONFIG_IWLWIFI_DEBUGFS
|
||||||
int iwl_alloc_traffic_mem(struct iwl_priv *priv);
|
int iwl_alloc_traffic_mem(struct iwl_priv *priv);
|
||||||
void iwl_free_traffic_mem(struct iwl_priv *priv);
|
void iwl_free_traffic_mem(struct iwl_priv *priv);
|
||||||
|
@ -620,3 +620,37 @@ none:
|
|||||||
return IRQ_NONE;
|
return IRQ_NONE;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(iwl_isr_legacy);
|
EXPORT_SYMBOL(iwl_isr_legacy);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* iwl_legacy_tx_cmd_protection: Set rts/cts. 3945 and 4965 only share this
|
||||||
|
* function.
|
||||||
|
*/
|
||||||
|
void iwl_legacy_tx_cmd_protection(struct iwl_priv *priv,
|
||||||
|
struct ieee80211_tx_info *info,
|
||||||
|
__le16 fc, __le32 *tx_flags)
|
||||||
|
{
|
||||||
|
if (info->control.rates[0].flags & IEEE80211_TX_RC_USE_RTS_CTS) {
|
||||||
|
*tx_flags |= TX_CMD_FLG_RTS_MSK;
|
||||||
|
*tx_flags &= ~TX_CMD_FLG_CTS_MSK;
|
||||||
|
*tx_flags |= TX_CMD_FLG_FULL_TXOP_PROT_MSK;
|
||||||
|
|
||||||
|
if (!ieee80211_is_mgmt(fc))
|
||||||
|
return;
|
||||||
|
|
||||||
|
switch (fc & cpu_to_le16(IEEE80211_FCTL_STYPE)) {
|
||||||
|
case cpu_to_le16(IEEE80211_STYPE_AUTH):
|
||||||
|
case cpu_to_le16(IEEE80211_STYPE_DEAUTH):
|
||||||
|
case cpu_to_le16(IEEE80211_STYPE_ASSOC_REQ):
|
||||||
|
case cpu_to_le16(IEEE80211_STYPE_REASSOC_REQ):
|
||||||
|
*tx_flags &= ~TX_CMD_FLG_RTS_MSK;
|
||||||
|
*tx_flags |= TX_CMD_FLG_CTS_MSK;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else if (info->control.rates[0].flags &
|
||||||
|
IEEE80211_TX_RC_USE_CTS_PROTECT) {
|
||||||
|
*tx_flags &= ~TX_CMD_FLG_RTS_MSK;
|
||||||
|
*tx_flags |= TX_CMD_FLG_CTS_MSK;
|
||||||
|
*tx_flags |= TX_CMD_FLG_FULL_TXOP_PROT_MSK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(iwl_legacy_tx_cmd_protection);
|
||||||
|
@ -70,6 +70,9 @@ void iwl_legacy_mac_bss_info_changed(struct ieee80211_hw *hw,
|
|||||||
struct ieee80211_vif *vif,
|
struct ieee80211_vif *vif,
|
||||||
struct ieee80211_bss_conf *bss_conf,
|
struct ieee80211_bss_conf *bss_conf,
|
||||||
u32 changes);
|
u32 changes);
|
||||||
|
void iwl_legacy_tx_cmd_protection(struct iwl_priv *priv,
|
||||||
|
struct ieee80211_tx_info *info,
|
||||||
|
__le16 fc, __le32 *tx_flags);
|
||||||
|
|
||||||
irqreturn_t iwl_isr_legacy(int irq, void *data);
|
irqreturn_t iwl_isr_legacy(int irq, void *data);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user