rpms/kernel/F-7 git-iwlwifi.patch, 1.10, 1.11 git-wireless-dev.patch, 1.10, 1.11 kernel-2.6.spec, 1.3218, 1.3219 linux-2.6-wireless.patch, 1.1, 1.2 linux-2.6-bcm43xx-mac80211-fixes.patch, 1.1, NONE linux-2.6-mac80211-fixes.patch, 1.2, NONE

John W. Linville (linville) fedora-extras-commits at redhat.com
Thu Jun 7 19:08:27 UTC 2007


Author: linville

Update of /cvs/pkgs/rpms/kernel/F-7
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv30667

Modified Files:
	git-iwlwifi.patch git-wireless-dev.patch kernel-2.6.spec 
	linux-2.6-wireless.patch 
Removed Files:
	linux-2.6-bcm43xx-mac80211-fixes.patch 
	linux-2.6-mac80211-fixes.patch 
Log Message:
wireless updates, enable iwl4965

git-iwlwifi.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.10 -r 1.11 git-iwlwifi.patch
Index: git-iwlwifi.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-7/git-iwlwifi.patch,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- git-iwlwifi.patch	23 May 2007 19:42:37 -0000	1.10
+++ git-iwlwifi.patch	7 Jun 2007 19:07:41 -0000	1.11
@@ -1,20367 +1,528 @@
---- linux-2.6.21.noarch/drivers/net/wireless/mac80211/Makefile.orig	2007-05-23 15:11:24.000000000 -0400
-+++ linux-2.6.21.noarch/drivers/net/wireless/mac80211/Makefile	2007-05-23 15:10:57.000000000 -0400
-@@ -4,3 +4,4 @@ obj-$(CONFIG_ADM8211)		+= adm8211/
- obj-$(CONFIG_P54_COMMON)	+= p54/
- obj-$(CONFIG_ZD1211RW_MAC80211)	+= zd1211rw/
- obj-$(CONFIG_RTL818X)		+= rtl818x/
-+obj-$(CONFIG_IWLWIFI)		+= iwlwifi/
---- linux-2.6.21.noarch/drivers/net/wireless/mac80211/Kconfig.orig	2007-05-23 15:11:10.000000000 -0400
-+++ linux-2.6.21.noarch/drivers/net/wireless/mac80211/Kconfig	2007-05-23 15:11:06.000000000 -0400
-@@ -4,3 +4,4 @@ source "drivers/net/wireless/mac80211/ad
- source "drivers/net/wireless/mac80211/p54/Kconfig"
- source "drivers/net/wireless/mac80211/zd1211rw/Kconfig"
- source "drivers/net/wireless/mac80211/rtl818x/Kconfig"
-+source "drivers/net/wireless/mac80211/iwlwifi/Kconfig"
---- linux-2.6.21.noarch/drivers/net/wireless/mac80211/iwlwifi/iwl-channel.h.orig	2007-05-23 15:09:42.000000000 -0400
-+++ linux-2.6.21.noarch/drivers/net/wireless/mac80211/iwlwifi/iwl-channel.h	2007-05-23 15:09:35.000000000 -0400
-@@ -0,0 +1,161 @@
-+/******************************************************************************
-+ *
-+ * Copyright(c) 2005 - 2007 Intel Corporation. All rights reserved.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of version 2 of the GNU General Public License as
-+ * published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-+ * more details.
-+ *
-+ * You should have received a copy of the GNU General Public License along with
-+ * this program; if not, write to the Free Software Foundation, Inc.,
-+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
-+ *
-+ * The full GNU General Public License is included in this distribution in the
-+ * file called LICENSE.
-+ *
-+ * Contact Information:
-+ * James P. Ketrenos <ipw2100-admin at linux.intel.com>
-+ * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
-+ *
-+ *****************************************************************************/
-+#ifndef __iwl_channel_h__
-+#define __iwl_channel_h__
-+
-+#define IWL_NUM_SCAN_RATES         (2)
-+
-+struct iwl_channel_tgd_info {
-+	u8 type;
-+	s8 max_power;
-+};
-+
-+struct iwl_channel_tgh_info {
-+	s64 last_radar_time;
-+};
-+
-+/* current Tx power values to use, one for each rate for each channel.
-+ * requested power is limited by:
-+ * -- regulatory EEPROM limits for this channel
-+ * -- hardware capabilities (clip-powers)
-+ * -- spectrum management
-+ * -- user preference (e.g. iwconfig)
-+ * when requested power is set, base power index must also be set. */
-+struct iwl_channel_power_info {
-+	struct iwl_tx_power tpc;	/* actual radio and DSP gain settings */
-+	s8 power_table_index;	/* actual (compenst'd) index into gain table */
-+	s8 base_power_index;	/* gain index for power at factory temp. */
-+	s8 requested_power;	/* power (dBm) requested for this chnl/rate */
-+};
-+
-+/* current scan Tx power values to use, one for each scan rate for each
-+ * channel. */
-+struct iwl_scan_power_info {
-+	struct iwl_tx_power tpc;	/* actual radio and DSP gain settings */
-+	s8 power_table_index;	/* actual (compenst'd) index into gain table */
-+	s8 requested_power;	/* scan pwr (dBm) requested for chnl/rate */
-+};
-+
-+/* Channel unlock period is 15 seconds. If no beacon or probe response
-+ * has been received within 15 seconds on a locked channel then the channel
-+ * remains locked. */
-+#define TX_UNLOCK_PERIOD 15
-+
-+/* CSA lock period is 15 seconds.  If a CSA has been received on a channel in
-+ * the last 15 seconds, the channel is locked */
-+#define CSA_LOCK_PERIOD 15
-+/*
-+ * One for each channel, holds all channel setup data
-+ * Some of the fields (e.g. eeprom and flags/max_power_avg) are redundant
-+ *     with one another!
-+ */
-+#define IWL4965_MAX_RATE (33)
-+
-+struct iwl_channel_info {
-+	struct iwl_channel_tgd_info tgd;
-+	struct iwl_channel_tgh_info tgh;
-+	struct iwl_eeprom_channel eeprom;	/* EEPROM regulatory limit */
-+	struct iwl_eeprom_channel fat_eeprom;	/* EEPROM regulatory limit for FAT channel */
-+
-+	u8 channel;		/* channel number */
-+	u8 flags;		/* flags copied from EEPROM */
-+	s8 max_power_avg;	/* (dBm) regul. eeprom, normal Tx, any rate */
-+	s8 curr_txpow;		/* (dBm) regulatory/spectrum/user (not h/w) */
-+	s8 min_power;		/* always 0 */
-+	s8 scan_power;		/* (dBm) regul. eeprom, direct scans, any rate */
-+
-+	u8 group_index;		/* 0-4, maps channel to group1/2/3/4/5 */
-+	u8 band_index;		/* 0-4, maps channel to band1/2/3/4/5 */
-+	u8 phymode;		/* MODE_IEEE80211{A,B,G} */
-+
-+	/* Radio/DSP gain settings for each "normal" data Tx rate.
-+	 * These include, in addition to RF and DSP gain, a few fields for
-+	 *   remembering/modifying gain settings (indexes). */
-+	struct iwl_channel_power_info power_info[IWL4965_MAX_RATE];
-+
-+#if IWL == 4965
-+	/* FAT channel info */
-+	s8 fat_max_power_avg;	/* (dBm) regul. eeprom, normal Tx, any rate */
-+	s8 fat_curr_txpow;	/* (dBm) regulatory/spectrum/user (not h/w) */
-+	s8 fat_min_power;	/* always 0 */
-+	s8 fat_scan_power;	/* (dBm) eeprom, direct scans, any rate */
-+	u8 fat_flags;		/* flags copied from EEPROM */
-+	u8 fat_extension_channel;
-+#endif
-+
-+	/* Radio/DSP gain settings for each scan rate, for directed scans. */
-+	struct iwl_scan_power_info scan_pwr_info[IWL_NUM_SCAN_RATES];
-+};
-+
-+struct iwl_clip_group {
-+	/* maximum power level to prevent clipping for each rate, derived by
-+	 *   us from this band's saturation power in EEPROM */
-+	const s8 clip_powers[IWL_MAX_RATES];
-+};
-+
-+static inline int is_channel_valid(const struct iwl_channel_info *ch_info)
-+{
-+	if (ch_info == NULL)
-+		return 0;
-+	return (ch_info->flags & EEPROM_CHANNEL_VALID) ? 1 : 0;
-+}
-+
-+static inline int is_channel_narrow(const struct iwl_channel_info *ch_info)
-+{
-+	return (ch_info->flags & EEPROM_CHANNEL_NARROW) ? 1 : 0;
-+}
-+
-+static inline int is_channel_radar(const struct iwl_channel_info *ch_info)
-+{
-+	return (ch_info->flags & EEPROM_CHANNEL_RADAR) ? 1 : 0;
-+}
-+
-+static inline u8 is_channel_a_band(const struct iwl_channel_info *ch_info)
-+{
-+	return (ch_info->phymode == MODE_IEEE80211A) ? 1 : 0;
-+}
-+
-+static inline u8 is_channel_bg_band(const struct iwl_channel_info *ch_info)
-+{
-+	return (ch_info->phymode == MODE_IEEE80211B ||
-+		ch_info->phymode == MODE_IEEE80211G) ? 1 : 0;
-+}
-+
-+static inline int is_channel_passive(const struct iwl_channel_info *ch)
-+{
-+	return (!(ch->flags & EEPROM_CHANNEL_ACTIVE)) ? 1 : 0;
-+}
-+
-+static inline int is_channel_ibss(const struct iwl_channel_info *ch)
-+{
-+	return ((ch->flags & EEPROM_CHANNEL_IBSS)) ? 1 : 0;
-+}
-+
-+extern const struct iwl_channel_info *iwl_get_channel_info(const struct iwl_priv
-+							   *priv, int phymode,
-+							   int channel);
-+
-+#endif
---- linux-2.6.21.noarch/drivers/net/wireless/mac80211/iwlwifi/Makefile.orig	2007-05-23 15:09:42.000000000 -0400
-+++ linux-2.6.21.noarch/drivers/net/wireless/mac80211/iwlwifi/Makefile	2007-05-23 15:09:35.000000000 -0400
-@@ -0,0 +1,27 @@
-+# NOTE:  We use common code from base.c to build driver
-+# specific binaries based on the #define IWL -- the target
-+# setup below creates a specific driver target from base.c
-+#
-+# NOTE2: base-XXXX.o has -D"KBUILD_MODNAME=KBUILD_STR(...)" in order to 
-+# prevent the following kbuild error:
-+# 	include/linux/pci.h:603: error: `KBUILD_MODNAME' undeclared (first \
-+#		use in this function)
-+#
-+# -jpk
[...22496 lines suppressed...]
++ *
++ * The rate control algorithm uses a single table of rates that goes across
++ * the entire A/B/G spectrum vs. being limited to just one particular
++ * hw_mode.
++ *
++ * As such, we can't convert the index obtained below into the hw_mode's
++ * rate table and must reference the driver allocated rate table
++ *
++ */
 +static struct ieee80211_rate *rs_get_rate(void *priv_rate,
 +					  struct net_device *dev,
 +					  struct sk_buff *skb,
@@ -21571,19 +2517,176 @@
 +	sta_info_put(sta);
 +
 +	IWL_DEBUG_RATE("leave: %d\n", index);
++
 +	return &priv->ieee_rates[index];
 +}
 +
-+extern void iwl_set_rate_scale_handlers(struct rate_control_ops *rs_ops)
++static struct rate_control_ops rs_ops = {
++	.module = NULL,
++	.name = RS_NAME,
++	.tx_status = rs_tx_status,
++	.get_rate = rs_get_rate,
++	.rate_init = rs_rate_init,
++	.clear = rs_clear,
++	.alloc = rs_alloc,
++	.free = rs_free,
++	.alloc_sta = rs_alloc_sta,
++	.free_sta = rs_free_sta,
++};
++
++int iwl_fill_rs_info(struct ieee80211_hw *hw, char *buf, u8 sta_id)
++{
++	struct ieee80211_local *local = hw_to_local(hw);
++	struct iwl_priv *priv = hw->priv;
++	struct iwl_rate_scale_priv *rs_priv;
++	struct sta_info *sta;
++	unsigned long flags;
++	int count = 0, i;
++	u32 samples = 0, success = 0, good = 0;
++	unsigned long now = jiffies;
++	u32 max_time = 0;
++
++	sta = sta_info_get(local, priv->stations[sta_id].sta.sta.addr);
++	if (!sta || !sta->rate_ctrl_priv) {
++		if (sta) {
++			sta_info_put(sta);
++			IWL_DEBUG_RATE("leave - no private rate data!\n");
++		} else
++			IWL_DEBUG_RATE("leave - no station!\n");
++		return sprintf(buf, "station %d not found\n", sta_id);
++	}
++
++	rs_priv = (void *)sta->rate_ctrl_priv;
++	spin_lock_irqsave(&rs_priv->lock, flags);
++	i = IWL_RATE_54M_INDEX;
++	while (1) {
++		u64 mask;
++		int j;
++
++		count +=
++		    sprintf(&buf[count], " %2dMbs: ", iwl_rates[i].ieee / 2);
++
++		mask = (1ULL << (IWL_RATE_MAX_WINDOW - 1));
++		for (j = 0; j < IWL_RATE_MAX_WINDOW; j++, mask >>= 1)
++			buf[count++] =
++			    (rs_priv->win[i].data & mask) ? '1' : '0';
++
++		samples += rs_priv->win[i].counter;
++		good += rs_priv->win[i].success_counter;
++		success += rs_priv->win[i].success_counter * iwl_rates[i].ieee;
++
++		if (rs_priv->win[i].stamp) {
++			int delta =
++			    jiffies_to_msecs(now - rs_priv->win[i].stamp);
++
++			if (delta > max_time)
++				max_time = delta;
++
++			count += sprintf(&buf[count], "%5dms\n", delta);
++		} else
++			buf[count++] = '\n';
++
++		j = iwl_get_prev_ieee_rate(i);
++		if (j == i)
++			break;
++		i = j;
++	}
++	spin_unlock_irqrestore(&rs_priv->lock, flags);
++	sta_info_put(sta);
++
++	/* Display the average rate of all samples taken.
++	 *
++	 * NOTE:  We multiple # of samples by 2 since the IEEE measurement
++	 * added from iwl_rates is actually 2X the rate */
++	if (samples)
++		count += sprintf(
++			&buf[count],
++			"\nAverage rate is %3d.%02dMbs over last %4dms\n"
++			"%3d%% success (%d good packets over %d tries)\n",
++			success / (2 * samples), (success * 5 / samples) % 10,
++			max_time, good * 100 / samples, good, samples);
++	else
++		count += sprintf(&buf[count], "\nAverage rate: 0Mbs\n");
++
++	return count;
++}
++
++void iwl_rate_scale_init(struct ieee80211_hw *hw, s32 sta_id)
++{
++	struct iwl_priv *priv = hw->priv;
++	s32 rssi = 0;
++	unsigned long flags;
++	struct ieee80211_local *local = hw_to_local(hw);
++	struct iwl_rate_scale_priv *rs_priv;
++	struct sta_info *sta;
++
++	IWL_DEBUG_RATE("enter\n");
++
++	if (!local->rate_ctrl->ops->name ||
++	    strcmp(local->rate_ctrl->ops->name, RS_NAME)) {
++		IWL_WARNING("iwl-3945-rs not selected as rate control "
++			    "aglo!\n");
++		IWL_DEBUG_RATE("leave - mac80211 picked the wrong RC algo.\n");
++		return;
++	}
++
++	sta = sta_info_get(local, priv->stations[sta_id].sta.sta.addr);
++	if (!sta || !sta->rate_ctrl_priv) {
++		if (sta)
++			sta_info_put(sta);
++		IWL_DEBUG_RATE("leave - no private rate data!\n");
++		return;
++	}
++
++	rs_priv = (void *)sta->rate_ctrl_priv;
++
++	spin_lock_irqsave(&rs_priv->lock, flags);
++
++	rs_priv->tgg = 0;
++	switch (priv->phymode) {
++	case MODE_IEEE80211G:
++		if (priv->active_rxon.flags & RXON_FLG_TGG_PROTECT_MSK) {
++			rs_priv->tgg = 1;
++			rs_priv->expected_tpt = iwl_expected_tpt_g_prot;
++		} else
++			rs_priv->expected_tpt = iwl_expected_tpt_g;
++		break;
++
++	case MODE_IEEE80211A:
++		rs_priv->expected_tpt = iwl_expected_tpt_a;
++		break;
++
++	default:
++		IWL_WARNING("Invalid phymode.  Defaulting to 802.11b\n");
++	case MODE_IEEE80211B:
++		rs_priv->expected_tpt = iwl_expected_tpt_b;
++		break;
++	}
++
++	sta_info_put(sta);
++	spin_unlock_irqrestore(&rs_priv->lock, flags);
++
++	rssi = priv->last_rx_rssi;
++	if (rssi == 0)
++		rssi = IWL_MIN_RSSI_VAL;
++
++	IWL_DEBUG(IWL_DL_INFO | IWL_DL_RATE, "Network RSSI: %d\n", rssi);
++
++	rs_priv->start_rate = iwl_get_rate_index_by_rssi(rssi, priv->phymode);
++
++	IWL_DEBUG_RATE("leave: rssi %d assign rate index: "
++		       "%d (plcp 0x%x)\n", rssi, rs_priv->start_rate,
++		       iwl_rates[rs_priv->start_rate].plcp);
++}
++
++void iwl_rate_control_register(void)
++{
++	ieee80211_rate_control_register(&rs_ops);
++}
++
++void iwl_rate_control_unregister(void)
 +{
-+	rs_ops->module = NULL;
-+	rs_ops->name = rs_name;
-+	rs_ops->tx_status = rs_tx_status;
-+	rs_ops->get_rate = rs_get_rate;
-+	rs_ops->rate_init = rs_rate_init;
-+	rs_ops->clear = rs_clear;
-+	rs_ops->alloc = rs_alloc;
-+	rs_ops->free = rs_free;
-+	rs_ops->alloc_sta = rs_alloc_sta;
-+	rs_ops->free_sta = rs_free_sta;
++	ieee80211_rate_control_unregister(&rs_ops);
 +}
++
++

git-wireless-dev.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.10 -r 1.11 git-wireless-dev.patch
Index: git-wireless-dev.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-7/git-wireless-dev.patch,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- git-wireless-dev.patch	4 May 2007 01:34:39 -0000	1.10
+++ git-wireless-dev.patch	7 Jun 2007 19:07:41 -0000	1.11
@@ -1,1224 +1,172 @@
-git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-dev.git/
-
-commit 580a2521f318461a9bf07004e77c34d750cb3285
-
---- /dev/null	2007-04-17 21:17:54.747954992 -0400
-+++ linux-2.6.21.noarch/include/net/mac80211.h	2007-05-03 16:26:43.000000000 -0400
-@@ -0,0 +1,1060 @@
-+/*
-+ * Low-level hardware driver -- IEEE 802.11 driver (80211.o) interface
-+ * Copyright 2002-2005, Devicescape Software, Inc.
-+ * Copyright 2006-2007	Jiri Benc <jbenc at suse.cz>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#ifndef MAC80211_H
-+#define MAC80211_H
-+
-+#include <linux/kernel.h>
-+#include <linux/if_ether.h>
-+#include <linux/skbuff.h>
-+#include <linux/wireless.h>
-+#include <linux/device.h>
-+#include <linux/ieee80211.h>
-+#include <net/wireless.h>
-+#include <net/cfg80211.h>
-+
-+/* Note! Only ieee80211_tx_status_irqsafe() and ieee80211_rx_irqsafe() can be
-+ * called in hardware interrupt context. The low-level driver must not call any
-+ * other functions in hardware interrupt context. If there is a need for such
-+ * call, the low-level driver should first ACK the interrupt and perform the
-+ * IEEE 802.11 code call after this, e.g., from a scheduled tasklet (in
-+ * software interrupt context).
-+ */
-+
-+/*
-+ * Frame format used when passing frame between low-level hardware drivers
-+ * and IEEE 802.11 driver the same as used in the wireless media, i.e.,
-+ * buffers start with IEEE 802.11 header and include the same octets that
-+ * are sent over air.
-+ *
-+ * If hardware uses IEEE 802.3 headers (and perform 802.3 <-> 802.11
-+ * conversion in firmware), upper layer 802.11 code needs to be changed to
-+ * support this.
-+ *
-+ * If the receive frame format is not the same as the real frame sent
-+ * on the wireless media (e.g., due to padding etc.), upper layer 802.11 code
-+ * could be updated to provide support for such format assuming this would
-+ * optimize the performance, e.g., by removing need to re-allocation and
-+ * copying of the data.
-+ */
-+
-+#define IEEE80211_CHAN_W_SCAN 0x00000001
-+#define IEEE80211_CHAN_W_ACTIVE_SCAN 0x00000002
-+#define IEEE80211_CHAN_W_IBSS 0x00000004
-+
-+/* Channel information structure. Low-level driver is expected to fill in chan,
-+ * freq, and val fields. Other fields will be filled in by 80211.o based on
-+ * hostapd information and low-level driver does not need to use them. The
-+ * limits for each channel will be provided in 'struct ieee80211_conf' when
-+ * configuring the low-level driver with hw->config callback. If a device has
-+ * a default regulatory domain, IEEE80211_HW_DEFAULT_REG_DOMAIN_CONFIGURED
-+ * can be set to let the driver configure all fields */
-+struct ieee80211_channel {
-+	short chan; /* channel number (IEEE 802.11) */
-+	short freq; /* frequency in MHz */
-+	int val; /* hw specific value for the channel */
-+	int flag; /* flag for hostapd use (IEEE80211_CHAN_*) */
-+	unsigned char power_level;
-+	unsigned char antenna_max;
-+};
-+
-+#define IEEE80211_RATE_ERP 0x00000001
-+#define IEEE80211_RATE_BASIC 0x00000002
-+#define IEEE80211_RATE_PREAMBLE2 0x00000004
-+#define IEEE80211_RATE_SUPPORTED 0x00000010
-+#define IEEE80211_RATE_OFDM 0x00000020
-+#define IEEE80211_RATE_CCK 0x00000040
-+#define IEEE80211_RATE_TURBO 0x00000080
-+#define IEEE80211_RATE_MANDATORY 0x00000100
-+
-+#define IEEE80211_RATE_CCK_2 (IEEE80211_RATE_CCK | IEEE80211_RATE_PREAMBLE2)
-+#define IEEE80211_RATE_MODULATION(f) \
-+	(f & (IEEE80211_RATE_CCK | IEEE80211_RATE_OFDM))
-+
-+/* Low-level driver should set PREAMBLE2, OFDM, CCK, and TURBO flags.
-+ * BASIC, SUPPORTED, ERP, and MANDATORY flags are set in 80211.o based on the
-+ * configuration. */
-+struct ieee80211_rate {
-+	int rate; /* rate in 100 kbps */
-+	int val; /* hw specific value for the rate */
-+	int flags; /* IEEE80211_RATE_ flags */
-+	int val2; /* hw specific value for the rate when using short preamble
-+		   * (only when IEEE80211_RATE_PREAMBLE2 flag is set, i.e., for
-+		   * 2, 5.5, and 11 Mbps) */
-+	signed char min_rssi_ack;
-+	unsigned char min_rssi_ack_delta;
-+
-+	/* following fields are set by 80211.o and need not be filled by the
-+	 * low-level driver */
-+	int rate_inv; /* inverse of the rate (LCM(all rates) / rate) for
-+		       * optimizing channel utilization estimates */
-+};
-+
-+/* 802.11g is backwards-compatible with 802.11b, so a wlan card can
-+ * actually be both in 11b and 11g modes at the same time. */
-+enum {
-+	MODE_IEEE80211A, /* IEEE 802.11a */
-+	MODE_IEEE80211B, /* IEEE 802.11b only */
-+	MODE_ATHEROS_TURBO, /* Atheros Turbo mode (2x.11a at 5 GHz) */
-+	MODE_IEEE80211G, /* IEEE 802.11g (and 802.11b compatibility) */
-+	MODE_ATHEROS_TURBOG, /* Atheros Turbo mode (2x.11g at 2.4 GHz) */
-+
-+	/* keep last */
-+	NUM_IEEE80211_MODES
-+};
-+
-+struct ieee80211_hw_mode {
-+	int mode; /* MODE_IEEE80211... */
-+	int num_channels; /* Number of channels (below) */
-+	struct ieee80211_channel *channels; /* Array of supported channels */
-+	int num_rates; /* Number of rates (below) */
-+	struct ieee80211_rate *rates; /* Array of supported rates */
-+
-+	struct list_head list; /* Internal, don't touch */
-+};
+--- linux-2.6.21.noarch/CREDITS.orig	2007-06-07 14:04:17.000000000 -0400
++++ linux-2.6.21.noarch/CREDITS	2007-06-07 14:10:49.000000000 -0400
+@@ -665,6 +665,11 @@ D: Minor updates to SCSI code for the Co
+ S: (ask for current address)
+ S: USA
+ 
++N: Robin Cornelius
++E: robincornelius at users.sourceforge.net
++D: Ralink rt2x00 WLAN driver
++S: Cornwall, U.K.
 +
-+struct ieee80211_tx_queue_params {
-+	int aifs; /* 0 .. 255; -1 = use default */
-+	int cw_min; /* 2^n-1: 1, 3, 7, .. , 1023; 0 = use default */
-+	int cw_max; /* 2^n-1: 1, 3, 7, .. , 1023; 0 = use default */
-+	int burst_time; /* maximum burst time in 0.1 ms (i.e., 10 = 1 ms);
-+			 * 0 = disabled */
-+};
+ N: Mark Corner
+ E: mcorner at umich.edu
+ W: http://www.eecs.umich.edu/~mcorner/
+@@ -679,6 +684,11 @@ D: Kernel module SMART utilities
+ S: Santa Cruz, California
+ S: USA
+ 
++N: Luis Correia
++E: lfcorreia at users.sf.net
++D: Ralink rt2x00 WLAN driver
++S: Belas, Portugal
 +
-+struct ieee80211_tx_queue_stats_data {
-+	unsigned int len; /* num packets in queue */
-+	unsigned int limit; /* queue len (soft) limit */
-+	unsigned int count; /* total num frames sent */
-+};
+ N: Alan Cox
+ W: http://www.linux.org.uk/diary/
+ D: Linux Networking (0.99.10->2.0.29)
+@@ -833,6 +843,12 @@ S: Lancs
+ S: PR4 6AX
+ S: United Kingdom
+ 
++N: Ivo van Doorn
++E: IvDoorn at gmail.com
++W: http://www.mendiosus.nl
++D: Ralink rt2x00 WLAN driver
++S: Haarlem, The Netherlands
 +
-+enum {
-+	IEEE80211_TX_QUEUE_DATA0,
-+	IEEE80211_TX_QUEUE_DATA1,
-+	IEEE80211_TX_QUEUE_DATA2,
-+	IEEE80211_TX_QUEUE_DATA3,
-+	IEEE80211_TX_QUEUE_DATA4,
-+	IEEE80211_TX_QUEUE_SVP,
-+
-+	NUM_TX_DATA_QUEUES,
-+
-+/* due to stupidity in the sub-ioctl userspace interface, the items in
-+ * this struct need to have fixed values. As soon as it is removed, we can
-+ * fix these entries. */
-+	IEEE80211_TX_QUEUE_AFTER_BEACON = 6,
-+	IEEE80211_TX_QUEUE_BEACON = 7
[...151742 lines suppressed...]
 +
-+	sta->supp_rates = sdata->u.sta.supp_rates_bits;
++	v = (1 << 30); /* Start of Transaction */
++	v |= (1 << 28); /* Write Transaction */
++	v |= (1 << 17); /* Turnaround */
++	v |= (u32)device << 22;
++	v |= (u32)address << 18;
++	v |= data;
++	pcicore_write32(pc, mdio_data, v);
++	udelay(10);
++	for (i = 0; i < 10; i++) {
++		v = pcicore_read32(pc, mdio_control);
++		if (v & 0x100 /* Trans complete */)
++			break;
++		msleep(1);
++	}
++	pcicore_write32(pc, mdio_control, 0);
++}
 +
-+	rate_control_rate_init(sta, local);
++static void ssb_broadcast_value(struct ssb_device *dev,
++				u32 address, u32 data)
++{
++	/* This is used for both, PCI and ChipCommon core, so be careful. */
++	BUILD_BUG_ON(SSB_PCICORE_BCAST_ADDR != SSB_CHIPCO_BCAST_ADDR);
++	BUILD_BUG_ON(SSB_PCICORE_BCAST_DATA != SSB_CHIPCO_BCAST_DATA);
 +
-+	return sta; /* caller will call sta_info_put() */
++	ssb_write32(dev, SSB_PCICORE_BCAST_ADDR, address);
++	ssb_read32(dev, SSB_PCICORE_BCAST_ADDR); /* flush */
++	ssb_write32(dev, SSB_PCICORE_BCAST_DATA, data);
++	ssb_read32(dev, SSB_PCICORE_BCAST_DATA); /* flush */
 +}
 +
-+
-+int ieee80211_sta_deauthenticate(struct net_device *dev, u16 reason)
++static void ssb_commit_settings(struct ssb_bus *bus)
 +{
-+	struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
-+	struct ieee80211_if_sta *ifsta = &sdata->u.sta;
++	struct ssb_device *dev;
 +
-+	printk(KERN_DEBUG "%s: deauthenticate(reason=%d)\n",
-+	       dev->name, reason);
++	dev = bus->chipco.dev ? bus->chipco.dev : bus->pcicore.dev;
++	assert(dev);
++	/* This forces an update of the cached registers. */
++	ssb_broadcast_value(dev, 0xFD8, 0);
++}
 +
-+	if (sdata->type != IEEE80211_IF_TYPE_STA &&
-+	    sdata->type != IEEE80211_IF_TYPE_IBSS)
-+		return -EINVAL;
++int ssb_pcicore_dev_irqvecs_enable(struct ssb_pcicore *pc,
++				   struct ssb_device *dev)
++{
++	struct ssb_device *pdev = pc->dev;
++	struct ssb_bus *bus;
++	int err = 0;
++	u32 tmp;
 +
-+	ieee80211_send_deauth(dev, ifsta, reason);
-+	ieee80211_set_disassoc(dev, ifsta, 1);
-+	return 0;
-+}
++	might_sleep();
 +
++	if (!pdev)
++		goto out;
++	bus = pdev->bus;
 +
-+int ieee80211_sta_disassociate(struct net_device *dev, u16 reason)
-+{
-+	struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
-+	struct ieee80211_if_sta *ifsta = &sdata->u.sta;
++	/* Enable interrupts for this device. */
++	if (bus->host_pci &&
++	    ((pdev->id.revision >= 6) || (pdev->id.coreid == SSB_DEV_PCIE))) {
++		u32 coremask;
 +
-+	printk(KERN_DEBUG "%s: disassociate(reason=%d)\n",
-+	       dev->name, reason);
++		/* Calculate the "coremask" for the device. */
++		coremask = (1 << dev->core_index);
 +
-+	if (sdata->type != IEEE80211_IF_TYPE_STA)
-+		return -EINVAL;
++		err = pci_read_config_dword(bus->host_pci, SSB_PCI_IRQMASK, &tmp);
++		if (err)
++			goto out;
++		tmp |= coremask << 8;
++		err = pci_write_config_dword(bus->host_pci, SSB_PCI_IRQMASK, tmp);
++		if (err)
++			goto out;
++	} else {
++		u32 intvec;
 +
-+	if (!ifsta->associated)
-+		return -1;
++		intvec = ssb_read32(pdev, SSB_INTVEC);
++		tmp = ssb_read32(dev, SSB_TPSFLAG);
++		tmp &= SSB_TPSFLAG_BPFLAG;
++		intvec |= tmp;
++		ssb_write32(pdev, SSB_INTVEC, intvec);
++	}
 +
-+	ieee80211_send_disassoc(dev, ifsta, reason);
-+	ieee80211_set_disassoc(dev, ifsta, 0);
-+	return 0;
-+}
---- /dev/null	2007-04-17 21:17:54.747954992 -0400
-+++ linux-2.6.21.noarch/net/mac80211/ieee80211_cfg.h	2007-05-03 16:26:44.000000000 -0400
-@@ -0,0 +1,9 @@
-+/*
-+ * mac80211 configuration hooks for cfg80211
-+ */
-+#ifndef __IEEE80211_CFG_H
-+#define __IEEE80211_CFG_H
++	/* Setup PCIcore operation. */
++	if (pc->setup_done)
++		goto out;
++	if (pdev->id.coreid == SSB_DEV_PCI) {
++		tmp = pcicore_read32(pc, SSB_PCICORE_SBTOPCI2);
++		tmp |= SSB_PCICORE_SBTOPCI_PREF;
++		tmp |= SSB_PCICORE_SBTOPCI_BURST;
++		pcicore_write32(pc, SSB_PCICORE_SBTOPCI2, tmp);
 +
-+extern struct cfg80211_ops mac80211_config_ops;
++		if (pdev->id.revision < 5) {
++			tmp = ssb_read32(pdev, SSB_IMCFGLO);
++			tmp &= ~SSB_IMCFGLO_SERTO;
++			tmp |= 2;
++			tmp &= ~SSB_IMCFGLO_REQTO;
++			tmp |= 3 << SSB_IMCFGLO_REQTO_SHIFT;
++			ssb_write32(pdev, SSB_IMCFGLO, tmp);
++			ssb_commit_settings(bus);
++		} else if (pdev->id.revision >= 11) {
++			tmp = pcicore_read32(pc, SSB_PCICORE_SBTOPCI2);
++			tmp |= SSB_PCICORE_SBTOPCI_MRM;
++			pcicore_write32(pc, SSB_PCICORE_SBTOPCI2, tmp);
++		}
++	} else {
++		assert(pdev->id.coreid == SSB_DEV_PCIE);
++		//TODO: Better make defines for all these magic PCIE values.
++		if ((pdev->id.revision == 0) || (pdev->id.revision == 1)) {
++			/* TLP Workaround register. */
++			tmp = ssb_pcie_read(pc, 0x4);
++			tmp |= 0x8;
++			ssb_pcie_write(pc, 0x4, tmp);
++		}
++		if (pdev->id.revision == 0) {
++			const u8 serdes_rx_device = 0x1F;
 +
-+#endif /* __IEEE80211_CFG_H */
---- /dev/null	2007-04-17 21:17:54.747954992 -0400
-+++ linux-2.6.21.noarch/net/mac80211/debugfs.h	2007-05-03 16:26:44.000000000 -0400
-@@ -0,0 +1,16 @@
-+#ifndef __MAC80211_DEBUGFS_H
-+#define __MAC80211_DEBUGFS_H
-+
-+#ifdef CONFIG_MAC80211_DEBUGFS
-+extern void debugfs_hw_add(struct ieee80211_local *local);
-+extern void debugfs_hw_del(struct ieee80211_local *local);
-+extern int mac80211_open_file_generic(struct inode *inode, struct file *file);
-+#else
-+static inline void debugfs_hw_add(struct ieee80211_local *local)
-+{
-+	return;
++			ssb_pcie_mdio_write(pc, serdes_rx_device,
++					    2 /* Timer */, 0x8128);
++			ssb_pcie_mdio_write(pc, serdes_rx_device,
++					    6 /* CDR */, 0x0100);
++			ssb_pcie_mdio_write(pc, serdes_rx_device,
++					    7 /* CDR BW */, 0x1466);
++		} else if (pdev->id.revision == 1) {
++			/* DLLP Link Control register. */
++			tmp = ssb_pcie_read(pc, 0x100);
++			tmp |= 0x40;
++			ssb_pcie_write(pc, 0x100, tmp);
++		}
++	}
++	pc->setup_done = 1;
++out:
++	return err;
 +}
-+static inline void debugfs_hw_del(struct ieee80211_local *local) {}
-+#endif
-+
-+#endif /* __MAC80211_DEBUGFS_H */
---- linux-2.6.21.noarch/.mailmap.orig	2007-05-03 16:26:17.000000000 -0400
-+++ linux-2.6.21.noarch/.mailmap	2007-05-03 16:26:44.000000000 -0400
-@@ -57,6 +57,7 @@ Jean Tourrilhes <jt at hpl.hp.com>
- Jeff Garzik <jgarzik at pretzel.yyz.us>
- Jens Axboe <axboe at suse.de>
- Jens Osterkamp <Jens.Osterkamp at de.ibm.com>
-+Johannes Berg <johannes at sipsolutions.net>
- John Stultz <johnstul at us.ibm.com>
- Juha Yrjola <at solidboot.com>
- Juha Yrjola <juha.yrjola at nokia.com>
++EXPORT_SYMBOL(ssb_pcicore_dev_irqvecs_enable);


Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-7/kernel-2.6.spec,v
retrieving revision 1.3218
retrieving revision 1.3219
diff -u -r1.3218 -r1.3219
--- kernel-2.6.spec	6 Jun 2007 21:54:18 -0000	1.3218
+++ kernel-2.6.spec	7 Jun 2007 19:07:43 -0000	1.3219
@@ -636,8 +636,6 @@
 Patch2301: git-wireless-dev.patch
 Patch2302: git-iwlwifi.patch
 Patch2303: linux-2.6-bcm43xx-pci-neuter.patch
-Patch2304: linux-2.6-mac80211-fixes.patch
-Patch2305: linux-2.6-bcm43xx-mac80211-fixes.patch
 
 # Assorted dyntick/clock/timer fixes.
 Patch2402: linux-2.6-acpi-keep-tsc-stable-when-lapic-timer-c2-ok-is-set.patch
@@ -1437,14 +1435,10 @@
 %patch2300 -p1
 # Add the new wireless stack and drivers from wireless-dev
 %patch2301 -p1
-# ...and the iwlwifi driver from Intel
+# Update iwlwifi driver from www.intellinuxwireless.org git tree
 %patch2302 -p1
 # avoid bcm43xx vs bcm43xx-mac80211 PCI ID conflicts
 %patch2303 -p1
-# some mac80211 bug fixes (defrag mem leak, reassoc failure handling)
-%patch2304 -p1
-# bcm43xx-mac80211: important phy and ssb bus fixes
-%patch2305 -p1
 
 # Assorted dyntick/clock/timer fixes.
 %patch2402 -p1
@@ -1477,7 +1471,7 @@
 # misc small stuff to make things compile or otherwise improve performance
 #
 #%patch10000 -p1
-%patch10001 -p1
+#%patch10001 -p1
 %patch10002 -p1
 %patch10003 -p1
 
@@ -2432,6 +2426,11 @@
 %endif
 
 %changelog
+* Thu Jun 07 2007 John W. Linville <linville at redhat.com>
+- Update linux-2.6-wireless.patch and git-wireless-dev.patch
+- Update git-iwlwifi.patch (version 0.0.24)
+- Enable iwl4965 driver
+
 * Wed Jun 06 2007 Dave Jones <davej at redhat.com>
 - Fix bug with MAP_FIXED (#242612).
 

linux-2.6-wireless.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.1 -r 1.2 linux-2.6-wireless.patch
Index: linux-2.6-wireless.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-7/linux-2.6-wireless.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- linux-2.6-wireless.patch	1 May 2007 00:44:05 -0000	1.1
+++ linux-2.6-wireless.patch	7 Jun 2007 19:07:43 -0000	1.2
@@ -1,5 +1,463 @@
---- /dev/null	2007-04-17 21:17:54.747954992 -0400
-+++ linux-2.6.21.noarch/include/net/wireless.h	2007-04-30 19:41:49.000000000 -0400
+--- linux-2.6.21.noarch/CREDITS.orig	2007-06-07 13:55:49.000000000 -0400
++++ linux-2.6.21.noarch/CREDITS	2007-06-07 13:55:56.000000000 -0400
+@@ -317,6 +317,12 @@ S: 2322 37th Ave SW
+ S: Seattle, Washington 98126-2010
+ S: USA
+ 
++N: Johannes Berg
++E: johannes at sipsolutions.net
++W: http://johannes.sipsolutions.net/
++P: 1024D/9AB78CA5 AD02 0176 4E29 C137 1DF6 08D2 FC44 CF86 9AB7 8CA5
++D: powerpc & 802.11 hacker
++
+ N: Stephen R. van den Berg (AKA BuGless)
+ E: berg at pool.informatik.rwth-aachen.de
+ D: General kernel, gcc, and libc hacker
+--- linux-2.6.21.noarch/include/linux/nl80211.h.orig	2007-06-07 13:55:56.000000000 -0400
++++ linux-2.6.21.noarch/include/linux/nl80211.h	2007-06-07 13:55:56.000000000 -0400
+@@ -0,0 +1,38 @@
++#ifndef __LINUX_NL80211_H
++#define __LINUX_NL80211_H
++/*
++ * 802.11 netlink interface public header
++ *
++ * Copyright 2006, 2007 Johannes Berg <johannes at sipsolutions.net>
++ */
++
++/**
++ * enum nl80211_iftype - (virtual) interface types
++ * @NL80211_IFTYPE_UNSPECIFIED: unspecified type, driver decides
++ * @NL80211_IFTYPE_ADHOC: independent BSS member
++ * @NL80211_IFTYPE_STATION: managed BSS member
++ * @NL80211_IFTYPE_AP: access point
++ * @NL80211_IFTYPE_AP_VLAN: VLAN interface for access points
++ * @NL80211_IFTYPE_WDS: wireless distribution interface
++ * @NL80211_IFTYPE_MONITOR: monitor interface receiving all frames
++ * @__NL80211_IFTYPE_AFTER_LAST: internal use
++ *
++ * These values are used with the NL80211_ATTR_IFTYPE
++ * to set the type of an interface.
++ *
++ */
++enum nl80211_iftype {
++	NL80211_IFTYPE_UNSPECIFIED,
++	NL80211_IFTYPE_ADHOC,
++	NL80211_IFTYPE_STATION,
++	NL80211_IFTYPE_AP,
++	NL80211_IFTYPE_AP_VLAN,
++	NL80211_IFTYPE_WDS,
++	NL80211_IFTYPE_MONITOR,
++
++	/* keep last */
++	__NL80211_IFTYPE_AFTER_LAST
++};
++#define NL80211_IFTYPE_MAX (__NL80211_IFTYPE_AFTER_LAST - 1)
++
++#endif /* __LINUX_NL80211_H */
+--- linux-2.6.21.noarch/include/linux/ieee80211.h.orig	2007-06-07 13:56:27.000000000 -0400
++++ linux-2.6.21.noarch/include/linux/ieee80211.h	2007-06-07 13:56:07.000000000 -0400
+@@ -0,0 +1,342 @@
++/*
++ * IEEE 802.11 defines
++ *
++ * Copyright (c) 2001-2002, SSH Communications Security Corp and Jouni Malinen
++ * <jkmaline at cc.hut.fi>
++ * Copyright (c) 2002-2003, Jouni Malinen <jkmaline at cc.hut.fi>
++ * Copyright (c) 2005, Devicescape Software, Inc.
++ * Copyright (c) 2006, Michael Wu <flamingice at sourmilk.net>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++
++#ifndef IEEE80211_H
++#define IEEE80211_H
++
++#include <linux/types.h>
++
++#define FCS_LEN 4
++
++#define IEEE80211_FCTL_VERS		0x0003
++#define IEEE80211_FCTL_FTYPE		0x000c
++#define IEEE80211_FCTL_STYPE		0x00f0
++#define IEEE80211_FCTL_TODS		0x0100
++#define IEEE80211_FCTL_FROMDS		0x0200
++#define IEEE80211_FCTL_MOREFRAGS	0x0400
++#define IEEE80211_FCTL_RETRY		0x0800
++#define IEEE80211_FCTL_PM		0x1000
++#define IEEE80211_FCTL_MOREDATA		0x2000
++#define IEEE80211_FCTL_PROTECTED	0x4000
++#define IEEE80211_FCTL_ORDER		0x8000
++
++#define IEEE80211_SCTL_FRAG		0x000F
++#define IEEE80211_SCTL_SEQ		0xFFF0
++
++#define IEEE80211_FTYPE_MGMT		0x0000
++#define IEEE80211_FTYPE_CTL		0x0004
++#define IEEE80211_FTYPE_DATA		0x0008
++
++/* management */
++#define IEEE80211_STYPE_ASSOC_REQ	0x0000
++#define IEEE80211_STYPE_ASSOC_RESP	0x0010
++#define IEEE80211_STYPE_REASSOC_REQ	0x0020
++#define IEEE80211_STYPE_REASSOC_RESP	0x0030
++#define IEEE80211_STYPE_PROBE_REQ	0x0040
++#define IEEE80211_STYPE_PROBE_RESP	0x0050
++#define IEEE80211_STYPE_BEACON		0x0080
++#define IEEE80211_STYPE_ATIM		0x0090
++#define IEEE80211_STYPE_DISASSOC	0x00A0
++#define IEEE80211_STYPE_AUTH		0x00B0
++#define IEEE80211_STYPE_DEAUTH		0x00C0
++#define IEEE80211_STYPE_ACTION		0x00D0
++
++/* control */
++#define IEEE80211_STYPE_PSPOLL		0x00A0
++#define IEEE80211_STYPE_RTS		0x00B0
++#define IEEE80211_STYPE_CTS		0x00C0
++#define IEEE80211_STYPE_ACK		0x00D0
++#define IEEE80211_STYPE_CFEND		0x00E0
++#define IEEE80211_STYPE_CFENDACK	0x00F0
++
++/* data */
++#define IEEE80211_STYPE_DATA			0x0000
++#define IEEE80211_STYPE_DATA_CFACK		0x0010
++#define IEEE80211_STYPE_DATA_CFPOLL		0x0020
++#define IEEE80211_STYPE_DATA_CFACKPOLL		0x0030
++#define IEEE80211_STYPE_NULLFUNC		0x0040
++#define IEEE80211_STYPE_CFACK			0x0050
++#define IEEE80211_STYPE_CFPOLL			0x0060
++#define IEEE80211_STYPE_CFACKPOLL		0x0070
++#define IEEE80211_STYPE_QOS_DATA		0x0080
++#define IEEE80211_STYPE_QOS_DATA_CFACK		0x0090
++#define IEEE80211_STYPE_QOS_DATA_CFPOLL		0x00A0
++#define IEEE80211_STYPE_QOS_DATA_CFACKPOLL	0x00B0
++#define IEEE80211_STYPE_QOS_NULLFUNC		0x00C0
++#define IEEE80211_STYPE_QOS_CFACK		0x00D0
++#define IEEE80211_STYPE_QOS_CFPOLL		0x00E0
++#define IEEE80211_STYPE_QOS_CFACKPOLL		0x00F0
++
++
++/* miscellaneous IEEE 802.11 constants */
++#define IEEE80211_MAX_FRAG_THRESHOLD	2346
++#define IEEE80211_MAX_RTS_THRESHOLD	2347
++#define IEEE80211_MAX_AID		2007
++#define IEEE80211_MAX_TIM_LEN		251
++#define IEEE80211_MAX_DATA_LEN		2304
++/* Maximum size for the MA-UNITDATA primitive, 802.11 standard section
++   6.2.1.1.2.
++
++   The figure in section 7.1.2 suggests a body size of up to 2312
++   bytes is allowed, which is a bit confusing, I suspect this
++   represents the 2304 bytes of real data, plus a possible 8 bytes of
++   WEP IV and ICV. (this interpretation suggested by Ramiro Barreiro) */
++
++#define IEEE80211_MAX_SSID_LEN		32
++
++struct ieee80211_hdr {
++	__le16 frame_control;
++	__le16 duration_id;
++	u8 addr1[6];
++	u8 addr2[6];
++	u8 addr3[6];
++	__le16 seq_ctrl;
++	u8 addr4[6];
++} __attribute__ ((packed));
++
++
++struct ieee80211_mgmt {
++	__le16 frame_control;
++	__le16 duration;
++	u8 da[6];
++	u8 sa[6];
++	u8 bssid[6];
++	__le16 seq_ctrl;
++	union {
++		struct {
++			__le16 auth_alg;
++			__le16 auth_transaction;
++			__le16 status_code;
++			/* possibly followed by Challenge text */
++			u8 variable[0];
++		} __attribute__ ((packed)) auth;
++		struct {
++			__le16 reason_code;
++		} __attribute__ ((packed)) deauth;
++		struct {
++			__le16 capab_info;
++			__le16 listen_interval;
++			/* followed by SSID and Supported rates */
[...22322 lines suppressed...]
--	bool
+ config IPW2100
+ 	tristate "Intel PRO/Wireless 2100 Network Connection"
+-	depends on NET_RADIO && PCI
++	depends on PCI && WLAN_80211
++	select WIRELESS_EXT
+ 	select FW_LOADER
+ 	select IEEE80211
+ 	---help---
+@@ -200,7 +184,8 @@ config IPW2100_DEBUG
  
- config FIB_RULES
- 	bool
+ config IPW2200
+ 	tristate "Intel PRO/Wireless 2200BG and 2915ABG Network Connection"
+-	depends on NET_RADIO && PCI
++	depends on PCI && WLAN_80211
++	select WIRELESS_EXT
+ 	select FW_LOADER
+ 	select IEEE80211
+ 	---help---
+@@ -282,7 +267,8 @@ config IPW2200_DEBUG
  
-+menu "Wireless"
-+
-+source "net/wireless/Kconfig"
-+source "net/ieee80211/Kconfig"
-+
-+endmenu
-+
- endif   # if NET
- endmenu # Networking
+ config AIRO
+ 	tristate "Cisco/Aironet 34X/35X/4500/4800 ISA and PCI cards"
+- 	depends on NET_RADIO && ISA_DMA_API && (PCI || BROKEN)
++	depends on ISA_DMA_API && WLAN_80211 && (PCI || BROKEN)
++	select WIRELESS_EXT
+ 	select CRYPTO
+ 	---help---
+ 	  This is the standard Linux driver to support Cisco/Aironet ISA and
+@@ -299,7 +285,8 @@ config AIRO
  
---- linux-2.6.21.noarch/net/ieee80211/Kconfig.orig	2007-04-30 19:29:14.000000000 -0400
-+++ linux-2.6.21.noarch/net/ieee80211/Kconfig	2007-04-30 19:41:49.000000000 -0400
-@@ -56,7 +56,8 @@ config IEEE80211_CRYPT_CCMP
+ config HERMES
+ 	tristate "Hermes chipset 802.11b support (Orinoco/Prism2/Symbol)"
+-	depends on NET_RADIO && (PPC_PMAC || PCI || PCMCIA)
++	depends on (PPC_PMAC || PCI || PCMCIA) && WLAN_80211
++	select WIRELESS_EXT
+ 	---help---
+ 	  A driver for 802.11b wireless cards based on the "Hermes" or
+ 	  Intersil HFA384x (Prism 2) MAC controller.  This includes the vast
+@@ -373,7 +360,8 @@ config PCI_HERMES
  
- config IEEE80211_CRYPT_TKIP
- 	tristate "IEEE 802.11i TKIP encryption"
--	depends on IEEE80211 && NET_RADIO
-+	depends on IEEE80211
+ config ATMEL
+       tristate "Atmel at76c50x chipset  802.11b support"
+-      depends on NET_RADIO && (PCI || PCMCIA)
++      depends on (PCI || PCMCIA) && WLAN_80211
++      select WIRELESS_EXT
+       select FW_LOADER
+       select CRC32
+        ---help---
+@@ -394,13 +382,9 @@ config PCI_ATMEL
+         Enable support for PCI and mini-PCI cards containing the
+         Atmel at76c506 chip.
+ 
+-# If Pcmcia is compiled in, offer Pcmcia cards...
+-comment "Wireless 802.11b Pcmcia/Cardbus cards support"
+-	depends on NET_RADIO && PCMCIA
+-
+ config PCMCIA_HERMES
+ 	tristate "Hermes PCMCIA card support"
+-	depends on NET_RADIO && PCMCIA && HERMES
++	depends on PCMCIA && HERMES
+ 	---help---
+ 	  A driver for "Hermes" chipset based PCMCIA wireless adaptors, such
+ 	  as the Lucent WavelanIEEE/Orinoco cards and their OEM (Cabletron/
+@@ -420,7 +404,7 @@ config PCMCIA_HERMES
+ 
+ config PCMCIA_SPECTRUM
+ 	tristate "Symbol Spectrum24 Trilogy PCMCIA card support"
+-	depends on NET_RADIO && PCMCIA && HERMES
++	depends on PCMCIA && HERMES
+ 	select FW_LOADER
+ 	---help---
+ 
+@@ -434,7 +418,8 @@ config PCMCIA_SPECTRUM
+ 
+ config AIRO_CS
+ 	tristate "Cisco/Aironet 34X/35X/4500/4800 PCMCIA cards"
+-	depends on NET_RADIO && PCMCIA && (BROKEN || !M32R)
++	depends on PCMCIA && (BROKEN || !M32R) && WLAN_80211
 +	select WIRELESS_EXT
  	select CRYPTO
- 	select CRYPTO_MICHAEL_MIC
- 	select CRYPTO_ECB
+ 	select CRYPTO_AES
+ 	---help---
+@@ -458,7 +443,8 @@ config AIRO_CS
+ 
+ config PCMCIA_ATMEL
+ 	tristate "Atmel at76c502/at76c504 PCMCIA cards"
+-	depends on NET_RADIO && ATMEL && PCMCIA
++	depends on ATMEL && PCMCIA
++	select WIRELESS_EXT
+ 	select FW_LOADER
+ 	select CRC32
+ 	---help---
+@@ -467,17 +453,17 @@ config PCMCIA_ATMEL
+ 
+ config PCMCIA_WL3501
+       tristate "Planet WL3501 PCMCIA cards"
+-      depends on NET_RADIO && EXPERIMENTAL && PCMCIA
++      depends on EXPERIMENTAL && PCMCIA && WLAN_80211
++      select WIRELESS_EXT
+        ---help---
+          A driver for WL3501 PCMCIA 802.11 wireless cards made by Planet.
+ 	 It has basic support for Linux wireless extensions and initial
+ 	 micro support for ethtool.
+ 
+-comment "Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support"
+-	depends on NET_RADIO && PCI
+ config PRISM54
+ 	tristate 'Intersil Prism GT/Duette/Indigo PCI/Cardbus' 
+-	depends on PCI && NET_RADIO && EXPERIMENTAL
++	depends on PCI && EXPERIMENTAL && WLAN_80211
++	select WIRELESS_EXT
+ 	select FW_LOADER
+ 	---help---
+ 	  Enable PCI and Cardbus support for the following chipset based cards:
+@@ -523,7 +509,8 @@ config PRISM54
+ 
+ config USB_ZD1201
+ 	tristate "USB ZD1201 based Wireless device support"
+-	depends on USB && NET_RADIO
++	depends on USB && WLAN_80211
++	select WIRELESS_EXT
+ 	select FW_LOADER
+ 	---help---
+ 	  Say Y if you want to use wireless LAN adapters based on the ZyDAS
+@@ -542,11 +529,4 @@ source "drivers/net/wireless/hostap/Kcon
+ source "drivers/net/wireless/bcm43xx/Kconfig"
+ source "drivers/net/wireless/zd1211rw/Kconfig"
+ 
+-# yes, this works even when no drivers are selected
+-config NET_WIRELESS
+-	bool
+-	depends on NET_RADIO && (ISA || PCI || PPC_PMAC || PCMCIA)
+-	default y
+-
+ endmenu
+-
+--- linux-2.6.21.noarch/drivers/net/wireless/bcm43xx/Kconfig.orig	2007-06-07 13:55:49.000000000 -0400
++++ linux-2.6.21.noarch/drivers/net/wireless/bcm43xx/Kconfig	2007-06-07 13:55:56.000000000 -0400
+@@ -1,6 +1,7 @@
+ config BCM43XX
+ 	tristate "Broadcom BCM43xx wireless support"
+-	depends on PCI && IEEE80211 && IEEE80211_SOFTMAC && NET_RADIO && EXPERIMENTAL
++	depends on PCI && IEEE80211 && IEEE80211_SOFTMAC && WLAN_80211 && EXPERIMENTAL
++	select WIRELESS_EXT
+ 	select FW_LOADER
+ 	select HW_RANDOM
+ 	---help---
+--- linux-2.6.21.noarch/drivers/net/wireless/hostap/Kconfig.orig	2007-06-07 13:55:49.000000000 -0400
++++ linux-2.6.21.noarch/drivers/net/wireless/hostap/Kconfig	2007-06-07 13:55:56.000000000 -0400
+@@ -1,6 +1,7 @@
+ config HOSTAP
+ 	tristate "IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP)"
+-	depends on NET_RADIO
++	depends on WLAN_80211
++	select WIRELESS_EXT
+ 	select IEEE80211
+ 	select IEEE80211_CRYPT_WEP
+ 	---help---
+--- linux-2.6.21.noarch/Documentation/feature-removal-schedule.txt.orig	2007-06-07 13:55:49.000000000 -0400
++++ linux-2.6.21.noarch/Documentation/feature-removal-schedule.txt	2007-06-07 13:55:56.000000000 -0400
+@@ -294,18 +294,6 @@ Who:	Richard Purdie <rpurdie at rpsys.net>
+ 
+ ---------------------------
+ 
+-What:	Wireless extensions over netlink (CONFIG_NET_WIRELESS_RTNETLINK)
+-When:	with the merge of wireless-dev, 2.6.22 or later
+-Why:	The option/code is
+-	 * not enabled on most kernels
+-	 * not required by any userspace tools (except an experimental one,
+-	   and even there only for some parts, others use ioctl)
+-	 * pointless since wext is no longer evolving and the ioctl
+-	   interface needs to be kept
+-Who:	Johannes Berg <johannes at sipsolutions.net>
+-
+----------------------------
+-
+ What:	i8xx_tco watchdog driver
+ When:	in 2.6.22
+ Why:	the i8xx_tco watchdog driver has been replaced by the iTCO_wdt


--- linux-2.6-bcm43xx-mac80211-fixes.patch DELETED ---


--- linux-2.6-mac80211-fixes.patch DELETED ---




More information about the fedora-extras-commits mailing list