aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWey-Yi Guy <wey-yi.w.guy@intel.com>2009-04-20 17:37:00 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-04-22 16:57:19 -0400
commit279b05d4362472ae9269f982f00e644265bdbf94 (patch)
treeab919727ebb69a6d88e4285beb45254a0891eae0
parent86ddbf62c2daefebba13e3c79f88cbdfde766176 (diff)
iwlwifi: clean up unused NL80211_IFTYPE_MONITOR for Monitor mode
This patch clean up the code for NL80211_IFTYPE_MONITOR mode, priv->iw_mode is set in add_interface, but add_interface is never called for monitor mode. The only way mac80211 informs us about monitor mode is through configuring filter; since iw_mode will never set to NL80211_IFTYPE_MONITOR, modify and remove all the code refer to NL80211_IFTYPE_MONITOR and replace with iwl_is_monitor_mode() function call. 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>
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c2
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.c8
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.h1
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-rx.c7
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-scan.c2
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-sta.c5
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-tx.c2
-rw-r--r--drivers/net/wireless/iwlwifi/iwl3945-base.c4
8 files changed, 7 insertions, 24 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index 2751736b0b64..fc52d3229d66 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -2001,8 +2001,6 @@ static int iwl_mac_start(struct ieee80211_hw *hw)
2001 2001
2002out: 2002out:
2003 priv->is_open = 1; 2003 priv->is_open = 1;
2004 /* default to MONITOR mode */
2005 priv->iw_mode = NL80211_IFTYPE_MONITOR;
2006 IWL_DEBUG_MAC80211(priv, "leave\n"); 2004 IWL_DEBUG_MAC80211(priv, "leave\n");
2007 return 0; 2005 return 0;
2008} 2006}
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
index c43c57d7a4cb..bf7ad515e6a0 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
@@ -904,10 +904,11 @@ static u8 iwl_count_chain_bitmap(u32 chain_bitmap)
904 * never called for monitor mode. The only way mac80211 informs us about 904 * never called for monitor mode. The only way mac80211 informs us about
905 * monitor mode is through configuring filters (call to configure_filter). 905 * monitor mode is through configuring filters (call to configure_filter).
906 */ 906 */
907static bool iwl_is_monitor_mode(struct iwl_priv *priv) 907bool iwl_is_monitor_mode(struct iwl_priv *priv)
908{ 908{
909 return !!(priv->staging_rxon.filter_flags & RXON_FILTER_PROMISC_MSK); 909 return !!(priv->staging_rxon.filter_flags & RXON_FILTER_PROMISC_MSK);
910} 910}
911EXPORT_SYMBOL(iwl_is_monitor_mode);
911 912
912/** 913/**
913 * iwl_set_rxon_chain - Set up Rx chain usage in "staging" RXON image 914 * iwl_set_rxon_chain - Set up Rx chain usage in "staging" RXON image
@@ -1071,11 +1072,6 @@ void iwl_connection_init_rx_config(struct iwl_priv *priv, int mode)
1071 RXON_FILTER_ACCEPT_GRP_MSK; 1072 RXON_FILTER_ACCEPT_GRP_MSK;
1072 break; 1073 break;
1073 1074
1074 case NL80211_IFTYPE_MONITOR:
1075 priv->staging_rxon.dev_type = RXON_DEV_TYPE_SNIFFER;
1076 priv->staging_rxon.filter_flags = RXON_FILTER_PROMISC_MSK |
1077 RXON_FILTER_CTL2HOST_MSK | RXON_FILTER_ACCEPT_GRP_MSK;
1078 break;
1079 default: 1075 default:
1080 IWL_ERR(priv, "Unsupported interface type %d\n", mode); 1076 IWL_ERR(priv, "Unsupported interface type %d\n", mode);
1081 break; 1077 break;
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h
index 8ab60df48d56..3bc2f6c3e8b9 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.h
+++ b/drivers/net/wireless/iwlwifi/iwl-core.h
@@ -267,6 +267,7 @@ int iwl_setup_mac(struct iwl_priv *priv);
267int iwl_set_hw_params(struct iwl_priv *priv); 267int iwl_set_hw_params(struct iwl_priv *priv);
268int iwl_init_drv(struct iwl_priv *priv); 268int iwl_init_drv(struct iwl_priv *priv);
269void iwl_uninit_drv(struct iwl_priv *priv); 269void iwl_uninit_drv(struct iwl_priv *priv);
270bool iwl_is_monitor_mode(struct iwl_priv *priv);
270void iwl_post_associate(struct iwl_priv *priv); 271void iwl_post_associate(struct iwl_priv *priv);
271void iwl_bss_info_changed(struct ieee80211_hw *hw, 272void iwl_bss_info_changed(struct ieee80211_hw *hw,
272 struct ieee80211_vif *vif, 273 struct ieee80211_vif *vif,
diff --git a/drivers/net/wireless/iwlwifi/iwl-rx.c b/drivers/net/wireless/iwlwifi/iwl-rx.c
index 8f65908f66f1..fae84262efb6 100644
--- a/drivers/net/wireless/iwlwifi/iwl-rx.c
+++ b/drivers/net/wireless/iwlwifi/iwl-rx.c
@@ -1102,13 +1102,6 @@ void iwl_rx_reply_rx(struct iwl_priv *priv,
1102 if (rx_start->phy_flags & RX_RES_PHY_FLAGS_SHORT_PREAMBLE_MSK) 1102 if (rx_start->phy_flags & RX_RES_PHY_FLAGS_SHORT_PREAMBLE_MSK)
1103 rx_status.flag |= RX_FLAG_SHORTPRE; 1103 rx_status.flag |= RX_FLAG_SHORTPRE;
1104 1104
1105 /* Take shortcut when only in monitor mode */
1106 if (priv->iw_mode == NL80211_IFTYPE_MONITOR) {
1107 iwl_pass_packet_to_mac80211(priv, include_phy,
1108 rxb, &rx_status);
1109 return;
1110 }
1111
1112 network_packet = iwl_is_network_packet(priv, header); 1105 network_packet = iwl_is_network_packet(priv, header);
1113 if (network_packet) { 1106 if (network_packet) {
1114 priv->last_rx_rssi = rx_status.signal; 1107 priv->last_rx_rssi = rx_status.signal;
diff --git a/drivers/net/wireless/iwlwifi/iwl-scan.c b/drivers/net/wireless/iwlwifi/iwl-scan.c
index 25311e1ceed7..799f5eb61ece 100644
--- a/drivers/net/wireless/iwlwifi/iwl-scan.c
+++ b/drivers/net/wireless/iwlwifi/iwl-scan.c
@@ -747,7 +747,7 @@ static void iwl_bg_request_scan(struct work_struct *data)
747 747
748 scan->tx_cmd.len = cpu_to_le16(cmd_len); 748 scan->tx_cmd.len = cpu_to_le16(cmd_len);
749 749
750 if (priv->iw_mode == NL80211_IFTYPE_MONITOR) 750 if (iwl_is_monitor_mode(priv))
751 scan->filter_flags = RXON_FILTER_PROMISC_MSK; 751 scan->filter_flags = RXON_FILTER_PROMISC_MSK;
752 752
753 scan->filter_flags |= (RXON_FILTER_ACCEPT_GRP_MSK | 753 scan->filter_flags |= (RXON_FILTER_ACCEPT_GRP_MSK |
diff --git a/drivers/net/wireless/iwlwifi/iwl-sta.c b/drivers/net/wireless/iwlwifi/iwl-sta.c
index b8f18c697888..17a4dd2be1f2 100644
--- a/drivers/net/wireless/iwlwifi/iwl-sta.c
+++ b/drivers/net/wireless/iwlwifi/iwl-sta.c
@@ -1078,11 +1078,6 @@ int iwl_get_sta_id(struct iwl_priv *priv, struct ieee80211_hdr *hdr)
1078 iwl_print_hex_dump(priv, IWL_DL_DROP, (u8 *) hdr, sizeof(*hdr)); 1078 iwl_print_hex_dump(priv, IWL_DL_DROP, (u8 *) hdr, sizeof(*hdr));
1079 return priv->hw_params.bcast_sta_id; 1079 return priv->hw_params.bcast_sta_id;
1080 1080
1081 /* If we are in monitor mode, use BCAST. This is required for
1082 * packet injection. */
1083 case NL80211_IFTYPE_MONITOR:
1084 return priv->hw_params.bcast_sta_id;
1085
1086 default: 1081 default:
1087 IWL_WARN(priv, "Unknown mode of operation: %d\n", 1082 IWL_WARN(priv, "Unknown mode of operation: %d\n",
1088 priv->iw_mode); 1083 priv->iw_mode);
diff --git a/drivers/net/wireless/iwlwifi/iwl-tx.c b/drivers/net/wireless/iwlwifi/iwl-tx.c
index c734c5f7e976..58cdd3294216 100644
--- a/drivers/net/wireless/iwlwifi/iwl-tx.c
+++ b/drivers/net/wireless/iwlwifi/iwl-tx.c
@@ -728,7 +728,7 @@ int iwl_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
728 728
729 /* drop all data frame if we are not associated */ 729 /* drop all data frame if we are not associated */
730 if (ieee80211_is_data(fc) && 730 if (ieee80211_is_data(fc) &&
731 (priv->iw_mode != NL80211_IFTYPE_MONITOR || 731 (!iwl_is_monitor_mode(priv) ||
732 !(info->flags & IEEE80211_TX_CTL_INJECTED)) && /* packet injection */ 732 !(info->flags & IEEE80211_TX_CTL_INJECTED)) && /* packet injection */
733 (!iwl_is_associated(priv) || 733 (!iwl_is_associated(priv) ||
734 ((priv->iw_mode == NL80211_IFTYPE_STATION) && !priv->assoc_id) || 734 ((priv->iw_mode == NL80211_IFTYPE_STATION) && !priv->assoc_id) ||
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index 562dd76226cc..c9fde0e0c982 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -729,7 +729,7 @@ static int iwl3945_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
729 729
730 /* drop all data frame if we are not associated */ 730 /* drop all data frame if we are not associated */
731 if (ieee80211_is_data(fc) && 731 if (ieee80211_is_data(fc) &&
732 (priv->iw_mode != NL80211_IFTYPE_MONITOR) && /* packet injection */ 732 (!iwl_is_monitor_mode(priv)) && /* packet injection */
733 (!iwl_is_associated(priv) || 733 (!iwl_is_associated(priv) ||
734 ((priv->iw_mode == NL80211_IFTYPE_STATION) && !priv->assoc_id))) { 734 ((priv->iw_mode == NL80211_IFTYPE_STATION) && !priv->assoc_id))) {
735 IWL_DEBUG_DROP(priv, "Dropping - !iwl_is_associated\n"); 735 IWL_DEBUG_DROP(priv, "Dropping - !iwl_is_associated\n");
@@ -3113,7 +3113,7 @@ static void iwl3945_bg_request_scan(struct work_struct *data)
3113 /* select Rx antennas */ 3113 /* select Rx antennas */
3114 scan->flags |= iwl3945_get_antenna_flags(priv); 3114 scan->flags |= iwl3945_get_antenna_flags(priv);
3115 3115
3116 if (priv->iw_mode == NL80211_IFTYPE_MONITOR) 3116 if (iwl_is_monitor_mode(priv))
3117 scan->filter_flags = RXON_FILTER_PROMISC_MSK; 3117 scan->filter_flags = RXON_FILTER_PROMISC_MSK;
3118 3118
3119 scan->channel_count = 3119 scan->channel_count =