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