Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 223871
Collapse All | Expand All

(-)linux-2.6.25-gentoo-r5/drivers/net/wireless/iwlwifi/iwl-4965.c (+6 lines)
Lines 3945-3960 static void iwl4965_rx_reply_rx(struct i Link Here
3945
	}
3945
	}
3946
3946
3947
	priv->ucode_beacon_time = le32_to_cpu(rx_start->beacon_time_stamp);
3947
	priv->ucode_beacon_time = le32_to_cpu(rx_start->beacon_time_stamp);
3948
3948
3949
	stats.freq = ieee80211chan2mhz(stats.channel);
3949
	stats.freq = ieee80211chan2mhz(stats.channel);
3950
3950
3951
	/* Find max signal strength (dBm) among 3 antenna/receiver chains */
3951
	/* Find max signal strength (dBm) among 3 antenna/receiver chains */
3952
	stats.ssi = iwl4965_calc_rssi(rx_start);
3952
	stats.ssi = iwl4965_calc_rssi(rx_start);
3953
	
3954
	/* ### Fix for monitor mode ### */
3955
	if (priv->iw_mode == IEEE80211_IF_TYPE_MNTR) {
3956
		iwl4965_handle_data_packet(priv, 1, include_phy, rxb, &stats);
3957
		return;
3958
	}
3953
3959
3954
	/* Meaningful noise values are available only from beacon statistics,
3960
	/* Meaningful noise values are available only from beacon statistics,
3955
	 *   which are gathered only when associated, and indicate noise
3961
	 *   which are gathered only when associated, and indicate noise
3956
	 *   only for the associated network channel ...
3962
	 *   only for the associated network channel ...
3957
	 * Ignore these noise values while scanning (other channels) */
3963
	 * Ignore these noise values while scanning (other channels) */
3958
	if (iwl4965_is_associated(priv) &&
3964
	if (iwl4965_is_associated(priv) &&
3959
	    !test_bit(STATUS_SCANNING, &priv->status)) {
3965
	    !test_bit(STATUS_SCANNING, &priv->status)) {
3960
		stats.noise = priv->last_rx_noise;
3966
		stats.noise = priv->last_rx_noise;
(-)linux-2.6.25-gentoo-r5/drivers/net/wireless/iwlwifi/iwl-4965.h (+1 lines)
Lines 421-436 struct iwl4965_rx_queue { Link Here
421
#define STATUS_IN_SUSPEND	10
421
#define STATUS_IN_SUSPEND	10
422
#define STATUS_STATISTICS	11
422
#define STATUS_STATISTICS	11
423
#define STATUS_SCANNING		12
423
#define STATUS_SCANNING		12
424
#define STATUS_SCAN_ABORTING	13
424
#define STATUS_SCAN_ABORTING	13
425
#define STATUS_SCAN_HW		14
425
#define STATUS_SCAN_HW		14
426
#define STATUS_POWER_PMI	15
426
#define STATUS_POWER_PMI	15
427
#define STATUS_FW_ERROR		16
427
#define STATUS_FW_ERROR		16
428
#define STATUS_CONF_PENDING	17
428
#define STATUS_CONF_PENDING	17
429
#define STATUS_RFMON_ON_PENDING	18	/* switching to monitor mode */
429
430
430
#define MAX_TID_COUNT        9
431
#define MAX_TID_COUNT        9
431
432
432
#define IWL_INVALID_RATE     0xFF
433
#define IWL_INVALID_RATE     0xFF
433
#define IWL_INVALID_VALUE    -1
434
#define IWL_INVALID_VALUE    -1
434
435
435
#ifdef CONFIG_IWL4965_HT
436
#ifdef CONFIG_IWL4965_HT
436
#ifdef CONFIG_IWL4965_HT_AGG
437
#ifdef CONFIG_IWL4965_HT_AGG
(-)linux-2.6.25-gentoo-r5/drivers/net/wireless/iwlwifi/iwl4965-base.c (-1 / +28 lines)
Lines 7524-7539 static int iwl4965_mac_config(struct iee Link Here
7524
	priv->add_radiotap = !!(conf->flags & IEEE80211_CONF_RADIOTAP);
7524
	priv->add_radiotap = !!(conf->flags & IEEE80211_CONF_RADIOTAP);
7525
7525
7526
	if (!iwl4965_is_ready(priv)) {
7526
	if (!iwl4965_is_ready(priv)) {
7527
		IWL_DEBUG_MAC80211("leave - not ready\n");
7527
		IWL_DEBUG_MAC80211("leave - not ready\n");
7528
		ret = -EIO;
7528
		ret = -EIO;
7529
		goto out;
7529
		goto out;
7530
	}
7530
	}
7531
7531
7532
	
7533
	/* if Monitor mode was enabled via 'configure_filter',
7534
	 * switch modes now
7535
	 */
7536
	if (test_bit(STATUS_RFMON_ON_PENDING, &priv->status)) {
7537
		clear_bit(STATUS_RFMON_ON_PENDING, &priv->status);
7538
		if (iwl4965_set_mode(priv, IEEE80211_IF_TYPE_MNTR) != 0) {
7539
			IWL_ERROR("iwl4965_set_mode(IEEE80211_IF_TYPE_MNTR) failed\n");
7540
			ret = -EIO;
7541
			goto out;
7542
		}
7543
	}
7544
7532
	if (unlikely(!iwl4965_param_disable_hw_scan &&
7545
	if (unlikely(!iwl4965_param_disable_hw_scan &&
7533
		     test_bit(STATUS_SCANNING, &priv->status))) {
7546
		     test_bit(STATUS_SCANNING, &priv->status))) {
7534
		IWL_DEBUG_MAC80211("leave - scanning\n");
7547
		IWL_DEBUG_MAC80211("leave - scanning\n");
7535
		set_bit(STATUS_CONF_PENDING, &priv->status);
7548
		set_bit(STATUS_CONF_PENDING, &priv->status);
7536
		mutex_unlock(&priv->mutex);
7549
		mutex_unlock(&priv->mutex);
7537
		return 0;
7550
		return 0;
7538
	}
7551
	}
7539
7552
Lines 7786-7802 static void iwl4965_configure_filter(str Link Here
7786
				 unsigned int changed_flags,
7799
				 unsigned int changed_flags,
7787
				 unsigned int *total_flags,
7800
				 unsigned int *total_flags,
7788
				 int mc_count, struct dev_addr_list *mc_list)
7801
				 int mc_count, struct dev_addr_list *mc_list)
7789
{
7802
{
7790
	/*
7803
	/*
7791
	 * XXX: dummy
7804
	 * XXX: dummy
7792
	 * see also iwl4965_connection_init_rx_config
7805
	 * see also iwl4965_connection_init_rx_config
7793
	 */
7806
	 */
7794
	*total_flags = 0;
7807
	/* ### Fix for monitor mode ### */
7808
	struct iwl4965_priv *priv = hw->priv;
7809
	int new_flags = 0;
7810
7811
	if (changed_flags & (FIF_PROMISC_IN_BSS | FIF_OTHER_BSS)) {
7812
		if (*total_flags & (FIF_PROMISC_IN_BSS | FIF_OTHER_BSS)) {
7813
			IWL_DEBUG_MAC80211("Enter: type %d\n", IEEE80211_IF_TYPE_MNTR);
7814
7815
			set_bit(STATUS_RFMON_ON_PENDING, &priv->status);
7816
			new_flags |= (FIF_PROMISC_IN_BSS |
7817
					 FIF_CONTROL |
7818
					 FIF_OTHER_BSS);
7819
		}
7820
	}
7821
	*total_flags = new_flags;
7795
}
7822
}
7796
7823
7797
static void iwl4965_mac_remove_interface(struct ieee80211_hw *hw,
7824
static void iwl4965_mac_remove_interface(struct ieee80211_hw *hw,
7798
				     struct ieee80211_if_init_conf *conf)
7825
				     struct ieee80211_if_init_conf *conf)
7799
{
7826
{
7800
	struct iwl4965_priv *priv = hw->priv;
7827
	struct iwl4965_priv *priv = hw->priv;
7801
7828
7802
	IWL_DEBUG_MAC80211("enter\n");
7829
	IWL_DEBUG_MAC80211("enter\n");

Return to bug 223871