rpms/kernel/devel kernel.spec, 1.446, 1.447 linux-2.6-at76.patch, 1.7, 1.8 linux-2.6-wireless-pending.patch, 1.30, 1.31 linux-2.6-wireless.patch, 1.23, 1.24

John W. Linville (linville) fedora-extras-commits at redhat.com
Thu Feb 21 19:34:39 UTC 2008


Author: linville

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv8877

Modified Files:
	kernel.spec linux-2.6-at76.patch 
	linux-2.6-wireless-pending.patch linux-2.6-wireless.patch 
Log Message:
recent wireless updates from upstream


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.446
retrieving revision 1.447
diff -u -r1.446 -r1.447
--- kernel.spec	21 Feb 2008 18:07:43 -0000	1.446
+++ kernel.spec	21 Feb 2008 19:33:48 -0000	1.447
@@ -1099,7 +1099,7 @@
 ApplyPatch linux-2.6-ata-quirk.patch
 
 # wireless patches headed for 2.6.25
-#ApplyPatch linux-2.6-wireless.patch
+ApplyPatch linux-2.6-wireless.patch
 # wireless patches headed for 2.6.26
 ApplyPatch linux-2.6-wireless-pending.patch
 
@@ -1737,6 +1737,102 @@
 %kernel_variant_files -a /%{image_install_path}/xen*-%{KVERREL} -e /etc/ld.so.conf.d/kernelcap-%{KVERREL}.conf %{with_xen} xen
 
 %changelog
+* Thu Feb 21 2008 John W. Linville <linville at redhat.com>
+- ath5k: Fix build warnings on some 64-bit platforms.
+- p54usb: add USB ID for Phillips CPWUA054
+- WDEV: ath5k, fix lock imbalance
+- WDEV, ath5k, don't return int from bool function
+- rtl818x: fix sparse warnings
+- zd1211rw: fix sparse warnings
+- p54usb: add USB ID for Linksys WUSB54G ver 2
+- ssb: Fix serial console on new bcm47xx devices
+- ssb: Fix watchdog access for devices without a chipcommon
+- ssb: Fix the GPIO API
+- ssb: Make the GPIO API reentrancy safe
+- ssb: Fix pcicore cardbus mode
+- ssb: Fix support for PCI devices behind a SSB->PCI bridge
+- rt2x00: correct address calc for queue private data
+- mac80211: better definition of mactime
+- mac80211: move function ieee80211_sta_join_ibss()
+- mac80211: enable IBSS merging
+- p54: use IEEE 802.11e defaults for initialization
+- ipw2100/ipw2200: note firmware loading caveat in Kconfig help text
+- iwlwifi-2.6: Adds and fixes defines about security
+- rt2x00: Fix hw mode registration with mac80211.
+- rt2x00: Fix invalid DMA free
+- rt2x00: Make rt2x00 less verbose
+- rt2x00: Remove MGMT ring initialization
+- rt2x00: Select CONFIG_NEW_LEDS
+- rt2x00: make csr_cache and csr_addr an union
+- rt2x00: Fix scheduling while atomic errors in usb drivers
+- rt2x00: Add queue statistics to debugfs
+- rt2x00: Fix typo in debug statement
+- rt2x00: Fix skbdesc->data_len initialization
+- rt2x00: Fix queue->qid initialization
+- rt2x00: Cleanup Makefile
+- rt2x00: Kill guardian urb during disable_radio
+- rt2x00: Release rt2x00 2.1.1
+- rt2x00: Send frames out with configured TX power
+- rt2x00: Don't report driver generated frames to tx_status()
+- rt2x00: Filter ACK_CTS based on FIF_CONTROL
+- rt2x00: Fix Descriptor DMA initialization
+- rt2x00: Remove reset_tsf()
+- rt2x00: Rename dscape -> mac80211
+- rt2x00: Cleanup mode registration
+- rt2x00: Remove async vendor request calls from rt2x00usb
+- rt2x00: Fix MAC address defines in rt61pci
+- rt2x00: Release rt2x00 2.1.2
+- zd1211rw: Fixed incorrect constant name.
+- WDEV: ath5k, typecheck on nonDEBUG
+- mac80211: defer master netdev allocation to ieee80211_register_hw
+- mac80211: give burst time in txop rather than 0.1msec units
+- mac80211: fix ecw2cw brain-damage
+- rtl818x: fix RTS/CTS-less transmit
+- b43(legacy): include full timestamp in beacon frames
+- mac80211: convert sta_info.pspoll to a flag
+- mac80211: invoke set_tim() callback after setting own TIM info
+- mac80211: remove sta TIM flag, fix expiry TIM handling
+- mac80211: consolidate TIM handling code
+- adm8211: fix sparse warnings
+- p54: fix sparse warnings
+- ipw2200: le*_add_cpu conversion
+- prism54: Convert acl->sem in a mutex
+- prism54: Convert stats_sem in a mutex
+- prism54: Convert wpa_sem in a mutex
+- b43: Fix bandswitch
+- mac80211: Extend filter flag documentation about unsupported flags
+- b43: Add HostFlags HI support
+- zd1211rw: Fix beacon filter flags thinko
+- ssb: Add support for 8bit register access
+- mac80211: fix incorrect use of CONFIG_MAC80211_IBSS_DEBUG
+- wireless: rt2x00: fix driver menu indenting
+- iwlwifi: Update iwlwifi version stamp to 1.2.26
+- iwlwifi: fix name of function in comment (_rx_card_state_notif)
+- wireless: Convert to list_for_each_entry_rcu()
+- mac80211: adjustable number of bits for qdisc pool
+- iwlwifi: remove IWL{4965,3945}_QOS
+- net/mac80211/: Use time_* macros
+- drivers/net/wireless/atmel.c: Use time_* macros
+- b43legacy: add definitions for MAC control register
+- b43legacy: fix upload of beacon packets to the hardware
+- b43legacy: fix B43legacy_WARN_ON macro
+- iwlwifi: change iwl->priv iwl_priv * type in iwl-YYY-io.h
+- iwlwifi: Add tx_ant_num hw setting variable
+- iwlwifi: remove twice defined CSR register
+- wireless: update US regulatory domain
+- at76_usb: Add at76_dbg_dump() macro
+- at76_usb: Convert DBG_TX levels to use at76_dbg_dump()
+- at76_usb: Add DBG_CMD for debugging firmware commands
+- at76_usb: add mac80211 support
+- at76_usb: Add support for monitor mode
+- at76_usb: Add support for WEP
+- at76_usb: Remove support the legacy stack
+- at76_usb: Use wiphy_name everywhere where needed
+- at76_usb: Allocate struct at76_priv using ieee80211_alloc_hw()
+- at76_usb: Prepare for struct net_device removal
+- at76_usb: Remove struct net_device
+- at76_usb: Use net/mac80211.h instead of net/ieee80211.h
+
 * Thu Feb 21 2008 Peter Jones <pjones at redhat.com>
 - Require newer mkinitrd version.
 

linux-2.6-at76.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.7 -r 1.8 linux-2.6-at76.patch
Index: linux-2.6-at76.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-at76.patch,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- linux-2.6-at76.patch	6 Feb 2008 15:58:27 -0000	1.7
+++ linux-2.6-at76.patch	21 Feb 2008 19:33:48 -0000	1.8
@@ -1,3 +1,143 @@
+commit 4083ec919a7353cf7a9de6cf42aa13669b7e018e
+Author: Kalle Valo <kalle.valo at iki.fi>
+Date:   Sun Feb 10 17:01:19 2008 +0200
+
+    at76_usb: Remove struct net_device
+    
+    This patch contains only code removal, no code has been modified.
+    
+    Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit bae74e67b58fc0ecf930fc1b5f485d536b1eea5a
+Author: Kalle Valo <kalle.valo at iki.fi>
+Date:   Sun Feb 10 17:01:11 2008 +0200
+
+    at76_usb: Prepare for struct net_device removal
+    
+    Some cleanup to make it easier to remove the struct net_device.
+    
+    Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit e31a31b44489b3535fcf7b02871458186ed43aa7
+Author: Kalle Valo <kalle.valo at iki.fi>
+Date:   Sun Feb 10 17:01:04 2008 +0200
+
+    at76_usb: Allocate struct at76_priv using ieee80211_alloc_hw()
+    
+    This is for the preparation to remove struct net_device.
+    
+    Also netdev is not registered anymore so the legacy stack does not have
+    visible interface anymore.
+    
+    Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 162d3ad6b55220940216d35dc1418e0c0ef9b98e
+Author: Kalle Valo <kalle.valo at iki.fi>
+Date:   Sun Feb 10 17:00:56 2008 +0200
+
+    at76_usb: Use wiphy_name everywhere where needed
+    
+    This is for the preparation to remove struct net_device.
+    
+    Functions used by the legacy stack were not converted, because they will
+    removed anyway.
+    
+    Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 779e36d16d4b79f30207da5d41d8cda9151f8e1f
+Author: Kalle Valo <kalle.valo at iki.fi>
+Date:   Sun Feb 10 17:00:49 2008 +0200
+
+    at76_usb: Remove support the legacy stack
+    
+    Now the mac80211 interface will only work, the interface using the legacy
+    stack will be defunct. The legacy interface will removed in following
+    patches.
+    
+    Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 0e5a456201237a135d5970b755ade55c18565033
+Author: Kalle Valo <kalle.valo at iki.fi>
+Date:   Sun Feb 10 17:00:41 2008 +0200
+
+    at76_usb: Add support for WEP
+    
+    Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 88ba88d527a925f0b0a5162e64e026e33312648e
+Author: Kalle Valo <kalle.valo at iki.fi>
+Date:   Sun Feb 10 17:00:34 2008 +0200
+
+    at76_usb: Add support for monitor mode
+    
+    Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 798f4f8d71f221f0e74dbd1588ab6225c64efc45
+Author: Kalle Valo <kalle.valo at iki.fi>
+Date:   Sun Feb 10 17:00:26 2008 +0200
+
+    at76_usb: add mac80211 support
+    
+    This patch creates the basic facilities for using mac80211 while keeping
+    the old legacy stack alone. This add only adds new code, no old code is
+    changed. Both the legacy and mac80211 interfaces are created to make the
+    transition easier. The legacy interface will be removed with following
+    patches.
+    
+    Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit ee5141d10332561306a48b216a1ae1ddfe318805
+Author: Kalle Valo <kalle.valo at iki.fi>
+Date:   Sun Feb 10 17:00:19 2008 +0200
+
+    at76_usb: Add DBG_CMD for debugging firmware commands
+    
+    Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 2009705e36ad0b50f0cdb0f9ef186f33057d17e8
+Author: Kalle Valo <kalle.valo at iki.fi>
+Date:   Sun Feb 10 17:00:11 2008 +0200
+
+    at76_usb: Convert DBG_TX levels to use at76_dbg_dump()
+    
+    Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit bd80e67cdc3286868f59cf809b63c5c021392fbd
+Author: Kalle Valo <kalle.valo at iki.fi>
+Date:   Sun Feb 10 17:00:04 2008 +0200
+
+    at76_usb: Add at76_dbg_dump() macro
+    
+    Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit c53a0aa28992ba7f212effec5e29be990848b54f
+Author: Pavel Roskin <proski at gnu.org>
+Date:   Sun Feb 10 16:59:56 2008 +0200
+
+    at76_usb: Use net/mac80211.h instead of net/ieee80211.h
+    
+    Rename symbols as required.  Use IEEE80211_MAX_FRAG_THRESHOLD as the
+    maximal packet size, which takes slightly more memory, but should be
+    safer.
+    
+    Copy some frame definitions from net/ieee80211.h to at76_usb.h.  It's
+    done temporarily until mac80211 conversion is complete.
+    
+    Signed-off-by: Pavel Roskin <proski at gnu.org>
+    Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
 commit 38ec6fbd236318179e28c71bc1b3dc94166e4be2
 Author: Pavel Roskin <proski at gnu.org>
 Date:   Mon Feb 4 00:05:19 2008 -0500
@@ -706,9 +846,9 @@
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
 diff -up linux-2.6.24.noarch/MAINTAINERS.orig linux-2.6.24.noarch/MAINTAINERS
---- linux-2.6.24.noarch/MAINTAINERS.orig	2008-02-05 22:45:15.000000000 -0500
-+++ linux-2.6.24.noarch/MAINTAINERS	2008-02-05 22:46:17.000000000 -0500
-@@ -713,6 +713,15 @@ W:	http://www.thekelleys.org.uk/atmel
+--- linux-2.6.24.noarch/MAINTAINERS.orig	2008-02-21 14:15:54.000000000 -0500
++++ linux-2.6.24.noarch/MAINTAINERS	2008-02-21 14:16:00.000000000 -0500
+@@ -725,6 +725,15 @@ W:	http://www.thekelleys.org.uk/atmel
  W:	http://atmelwlandriver.sourceforge.net/
  S:	Maintained
  
@@ -725,9 +865,9 @@
  P:	David Woodhouse
  M:	dwmw2 at infradead.org
 diff -up /dev/null linux-2.6.24.noarch/drivers/net/wireless/at76_usb.h
---- /dev/null	2008-02-05 08:32:52.710614252 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/at76_usb.h	2008-02-05 22:46:17.000000000 -0500
-@@ -0,0 +1,619 @@
+--- /dev/null	2008-02-21 08:21:48.545426467 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/at76_usb.h	2008-02-21 14:19:39.000000000 -0500
+@@ -0,0 +1,477 @@
 +/*
 + * Copyright (c) 2002,2003 Oliver Kurth
 + *	     (c) 2003,2004 Joerg Albert <joerg.albert at gmx.de>
@@ -764,23 +904,6 @@
 +	BOARD_505AMX = 8
 +};
 +
-+/* our private ioctl's */
-+/* preamble length (0 - long, 1 - short, 2 - auto) */
-+#define AT76_SET_SHORT_PREAMBLE		(SIOCIWFIRSTPRIV + 0)
-+#define AT76_GET_SHORT_PREAMBLE		(SIOCIWFIRSTPRIV + 1)
-+/* which debug channels are enabled */
-+#define AT76_SET_DEBUG			(SIOCIWFIRSTPRIV + 2)
-+#define AT76_GET_DEBUG			(SIOCIWFIRSTPRIV + 3)
-+/* power save mode (incl. the Atmel proprietary smart save mode) */
-+#define AT76_SET_POWERSAVE_MODE		(SIOCIWFIRSTPRIV + 4)
-+#define AT76_GET_POWERSAVE_MODE		(SIOCIWFIRSTPRIV + 5)
-+/* min and max channel times for scan */
-+#define AT76_SET_SCAN_TIMES		(SIOCIWFIRSTPRIV + 6)
-+#define AT76_GET_SCAN_TIMES		(SIOCIWFIRSTPRIV + 7)
-+/* scan mode (0 - active, 1 - passive) */
-+#define AT76_SET_SCAN_MODE		(SIOCIWFIRSTPRIV + 8)
-+#define AT76_GET_SCAN_MODE		(SIOCIWFIRSTPRIV + 9)
-+
 +#define CMD_STATUS_IDLE				0x00
[...5070 lines suppressed...]
++	{ .bitrate = 110,
++	  .hw_value = TX_RATE_11MBIT, },
++};
++
++static struct ieee80211_channel at76_channels[] = {
++	{ .hw_value = 1,
++	  .center_freq = 2412},
++	{ .hw_value = 2,
++	  .center_freq = 2417},
++	{ .hw_value = 3,
++	  .center_freq = 2422},
++	{ .hw_value = 4,
++	  .center_freq = 2427},
++	{ .hw_value = 5,
++	  .center_freq = 2432},
++	{ .hw_value = 6,
++	  .center_freq = 2437},
++	{ .hw_value = 7,
++	  .center_freq = 2442},
++	{ .hw_value = 8,
++	  .center_freq = 2447},
++	{ .hw_value = 9,
++	  .center_freq = 2452},
++	{ .hw_value = 10,
++	  .center_freq = 2457},
++	{ .hw_value = 11,
++	  .center_freq = 2462},
++	{ .hw_value = 12,
++	  .center_freq = 2467},
++	{ .hw_value = 13,
++	  .center_freq = 2472},
++	{ .hw_value = 14,
++	  .center_freq = 2484}
++};
++
++static struct ieee80211_supported_band at76_supported_band = {
++	.channels = at76_channels,
++	.n_channels = ARRAY_SIZE(at76_channels),
++	.bitrates = at76_rates,
++	.n_bitrates = ARRAY_SIZE(at76_rates),
++};
++
++
 +/* Register network device and initialize the hardware */
 +static int at76_init_new_device(struct at76_priv *priv,
 +				struct usb_interface *interface)
 +{
-+	struct net_device *netdev = priv->netdev;
 +	int ret;
 +
 +	/* set up the endpoint information */
@@ -6633,8 +3653,6 @@
 +	}
 +
 +	priv->domain = at76_get_reg_domain(priv->regulatory_domain);
-+	/* init. netdev->dev_addr */
-+	memcpy(netdev->dev_addr, priv->mac_addr, ETH_ALEN);
 +
 +	priv->channel = DEF_CHANNEL;
 +	priv->iw_mode = IW_MODE_INFRA;
@@ -6644,63 +3662,49 @@
 +	priv->txrate = TX_RATE_AUTO;
 +	priv->preamble_type = PREAMBLE_TYPE_LONG;
 +	priv->beacon_period = 100;
-+	priv->beacons_last_qual = jiffies;
 +	priv->auth_mode = WLAN_AUTH_OPEN;
 +	priv->scan_min_time = DEF_SCAN_MIN_TIME;
 +	priv->scan_max_time = DEF_SCAN_MAX_TIME;
 +	priv->scan_mode = SCAN_TYPE_ACTIVE;
 +
-+	netdev->flags &= ~IFF_MULTICAST;	/* not yet or never */
-+	netdev->open = at76_open;
-+	netdev->stop = at76_stop;
-+	netdev->get_stats = at76_get_stats;
-+	netdev->ethtool_ops = &at76_ethtool_ops;
-+
-+	/* Add pointers to enable iwspy support. */
-+	priv->wireless_data.spy_data = &priv->spy_data;
-+	netdev->wireless_data = &priv->wireless_data;
-+
-+	netdev->hard_start_xmit = at76_tx;
-+	netdev->tx_timeout = at76_tx_timeout;
-+	netdev->watchdog_timeo = 2 * HZ;
-+	netdev->wireless_handlers = &at76_handler_def;
-+	netdev->set_multicast_list = at76_set_multicast;
-+	netdev->set_mac_address = at76_set_mac_address;
-+	dev_alloc_name(netdev, "wlan%d");
++	/* mac80211 initialisation */
++	priv->hw->wiphy->bands[IEEE80211_BAND_2GHZ] = &at76_supported_band;
++	priv->hw->flags = IEEE80211_HW_RX_INCLUDES_FCS;
 +
-+	ret = register_netdev(priv->netdev);
++	SET_IEEE80211_DEV(priv->hw, &interface->dev);
++	SET_IEEE80211_PERM_ADDR(priv->hw, priv->mac_addr);
++
++	ret = ieee80211_register_hw(priv->hw);
 +	if (ret) {
-+		dev_printk(KERN_ERR, &interface->dev,
-+			   "cannot register netdevice (status %d)!\n", ret);
++		printk(KERN_ERR "cannot register mac80211 hw (status %d)!\n",
++		       ret);
 +		goto exit;
 +	}
-+	priv->netdev_registered = 1;
++
++	priv->mac80211_registered = 1;
 +
 +	printk(KERN_INFO "%s: USB %s, MAC %s, firmware %d.%d.%d-%d\n",
-+	       netdev->name, interface->dev.bus_id, mac2str(priv->mac_addr),
++	       wiphy_name(priv->hw->wiphy),
++	       interface->dev.bus_id, mac2str(priv->mac_addr),
 +	       priv->fw_version.major, priv->fw_version.minor,
 +	       priv->fw_version.patch, priv->fw_version.build);
-+	printk(KERN_INFO "%s: regulatory domain 0x%02x: %s\n", netdev->name,
++	printk(KERN_INFO "%s: regulatory domain 0x%02x: %s\n",
++	       wiphy_name(priv->hw->wiphy),
 +	       priv->regulatory_domain, priv->domain->name);
 +
-+	/* we let this timer run the whole time this driver instance lives */
-+	mod_timer(&priv->bss_list_timer, jiffies + BSS_LIST_TIMEOUT);
-+
 +exit:
 +	return ret;
 +}
 +
 +static void at76_delete_device(struct at76_priv *priv)
 +{
-+	int i;
-+
 +	at76_dbg(DBG_PROC_ENTRY, "%s: ENTER", __func__);
 +
 +	/* The device is gone, don't bother turning it off */
 +	priv->device_unplugged = 1;
 +
-+	if (priv->netdev_registered)
-+		unregister_netdev(priv->netdev);
++	if (priv->mac80211_registered)
++		ieee80211_unregister_hw(priv->hw);
 +
 +	/* assuming we used keventd, it must quiesce too */
 +	flush_scheduled_work();
@@ -6721,25 +3725,11 @@
 +	if (priv->rx_skb)
 +		kfree_skb(priv->rx_skb);
 +
-+	at76_free_bss_list(priv);
-+	del_timer_sync(&priv->bss_list_timer);
-+	cancel_delayed_work(&priv->dwork_get_scan);
-+	cancel_delayed_work(&priv->dwork_beacon);
-+	cancel_delayed_work(&priv->dwork_auth);
-+	cancel_delayed_work(&priv->dwork_assoc);
-+
-+	if (priv->mac_state == MAC_CONNECTED)
-+		at76_iwevent_bss_disconnect(priv->netdev);
-+
-+	for (i = 0; i < NR_RX_DATA_BUF; i++)
-+		if (priv->rx_data[i].skb) {
-+			dev_kfree_skb(priv->rx_data[i].skb);
-+			priv->rx_data[i].skb = NULL;
-+		}
 +	usb_put_dev(priv->udev);
 +
-+	at76_dbg(DBG_PROC_ENTRY, "%s: before freeing priv/netdev", __func__);
-+	free_netdev(priv->netdev);	/* priv is in netdev */
++	at76_dbg(DBG_PROC_ENTRY, "%s: before freeing priv/ieee80211_hw",
++		 __func__);
++	ieee80211_free_hw(priv->hw);
 +
 +	at76_dbg(DBG_PROC_ENTRY, "%s: EXIT", __func__);
 +}
@@ -6835,7 +3825,6 @@
 +		goto error;
 +	}
 +
-+	SET_NETDEV_DEV(priv->netdev, &interface->dev);
 +	usb_set_intfdata(interface, priv);
 +
 +	memcpy(&priv->fw_version, &fwv, sizeof(struct mib_fw_version));
@@ -6863,7 +3852,7 @@
 +	if (!priv)
 +		return;
 +
-+	printk(KERN_INFO "%s: disconnecting\n", priv->netdev->name);
++	printk(KERN_INFO "%s: disconnecting\n", wiphy_name(priv->hw->wiphy));
 +	at76_delete_device(priv);
 +	dev_printk(KERN_INFO, &interface->dev, "disconnected\n");
 +}
@@ -6922,9 +3911,9 @@
 +MODULE_DESCRIPTION(DRIVER_DESC);
 +MODULE_LICENSE("GPL");
 diff -up linux-2.6.24.noarch/drivers/net/wireless/Kconfig.orig linux-2.6.24.noarch/drivers/net/wireless/Kconfig
---- linux-2.6.24.noarch/drivers/net/wireless/Kconfig.orig	2008-02-05 22:45:16.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/Kconfig	2008-02-05 22:46:17.000000000 -0500
-@@ -451,6 +451,14 @@ config PCMCIA_ATMEL
+--- linux-2.6.24.noarch/drivers/net/wireless/Kconfig.orig	2008-02-21 14:15:54.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/Kconfig	2008-02-21 14:16:00.000000000 -0500
+@@ -457,6 +457,14 @@ config PCMCIA_ATMEL
  	  Enable support for PCMCIA cards containing the
  	  Atmel at76c502 and at76c504 chips.
  

linux-2.6-wireless-pending.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.30 -r 1.31 linux-2.6-wireless-pending.patch
Index: linux-2.6-wireless-pending.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-wireless-pending.patch,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- linux-2.6-wireless-pending.patch	18 Feb 2008 20:02:41 -0000	1.30
+++ linux-2.6-wireless-pending.patch	21 Feb 2008 19:33:48 -0000	1.31
@@ -1,3 +1,1005 @@
+commit cfced8184e83694383a6bedddb6530f298f3855f
+Author: Pavel Roskin <proski at gnu.org>
+Date:   Thu Feb 21 11:33:58 2008 -0500
+
+    mac80211: fix incorrect use of CONFIG_MAC80211_IBSS_DEBUG
+    
+    Configuration variables are only available to the preprocessor
+    
+    Signed-off-by: Pavel Roskin <proski at gnu.org>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 4d161f9d7f3f3ce069006b53dc8a84ed8a33753f
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date:   Wed Feb 20 12:08:12 2008 +0100
+
+    p54: fix sparse warnings
+    
+    This fixes a few sparse warnings in p54.
+    
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit ee96158b0d6cb34b5ba323c18e6fcac037bab444
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date:   Wed Feb 20 12:06:47 2008 +0100
+
+    adm8211: fix sparse warnings
+    
+    Both of these seem to be actual errors, the first is just wrong
+    and the second is my mistake introduced by the cfg80211 API
+    update.
+    
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 23eb3936312dc16697aa68870b912f4504711e3c
+Author: Michael Buesch <mb at bu3sch.de>
+Date:   Wed Feb 20 19:08:10 2008 +0100
+
+    ssb: Add support for 8bit register access
+    
+    This adds support for 8bit wide register reads/writes.
+    This is needed in order to support the gigabit ethernet core.
+    
+    Signed-off-by: Michael Buesch <mb at bu3sch.de>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 30e8c404283a93915979f9d48f770729ac5612d8
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date:   Wed Feb 20 11:21:35 2008 +0100
+
+    mac80211: consolidate TIM handling code
+    
+    This consolidates all TIM handling code to avoid re-introducing
+    errors with the bitmap/set_tim order and to reduce code. While
+    reading the code I noticed a possible problem so I also added
+    a comment about that.
+    
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 093cbe59df31971739f313f8ac7ea92dae6a9a53
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date:   Wed Feb 20 02:07:21 2008 +0100
+
+    mac80211: remove sta TIM flag, fix expiry TIM handling
+    
+    The TIM flag that is kept in each station's info is completely
+    useless, there's no code (aside from the debugfs display code)
+    checking it, hence it can be removed. While doing that, I noticed
+    that the TIM handling is broken when buffered frames expire, so
+    fix that.
+    
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit bb947b28e1822acf74e24544c6a38e1c5360bda1
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date:   Wed Feb 20 01:36:16 2008 +0100
+
+    mac80211: invoke set_tim() callback after setting own TIM info
+    
+    Drivers should be allowed to simply get a complete new beacon when
+    set_tim() is invoked (and set_tim() is required for drivers that
+    just want a beacon template!), so we need to update our own TIM
+    bitmap before calling set_tim() so that getting the beacon will
+    now get an already updated beacon.
+    
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 28606c369e2f5d072ff7abd87ded79c5e533d10f
+Author: Roel Kluin <12o3l at tiscali.nl>
+Date:   Tue Feb 19 15:41:50 2008 +0100
+
+    wireless: Convert to list_for_each_entry_rcu()
+    
+    Convert list_for_each_rcu() to list_for_each_entry_rcu()
+    
+    Signed-off-by: Roel Kluin <12o3l at tiscali.nl>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit d10d5dd1d429e57c44697665391dd802c8c31875
+Author: Tomas Winkler <tomas.winkler at intel.com>
+Date:   Wed Feb 13 20:58:34 2008 +0200
+
+    wireless: update US regulatory domain
+    
+    This patch adds channels to US regulatory domain
+    
+    Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 96efd302ca3ff1f822283ead88ebccef793f3cdd
+Author: Ivo van Doorn <ivdoorn at gmail.com>
+Date:   Sun Feb 17 17:36:49 2008 +0100
+
+    rt2x00: Release rt2x00 2.1.2
+    
+    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit fbc3fc7010f952e7892ba7283b845defd0d31df7
+Author: Ivo van Doorn <ivdoorn at gmail.com>
+Date:   Sun Feb 17 17:36:33 2008 +0100
+
+    rt2x00: Fix MAC address defines in rt61pci
+    
+    The MAC address offset defines were incorrect because
+    the byte offset was used instead of word index. This
+    bug had no affect on normal operations since these
+    defines weren't used. (EEPROM_MAC_ADDR_0 was used
+    to read 6 bytes from).
+    
+    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 4fe0a1930dbab7d7c5ab930f34f183a815dccaa4
+Author: Gertjan van Wingerde <gwingerde at kpnplanet.nl>
+Date:   Sun Feb 17 17:35:55 2008 +0100
+
+    rt2x00: Fix hw mode registration with mac80211.
+    
+    The supported_bands field of struct hw_mode_spec now represents a bitfield,
+    so bitfield operators need to be tested with when setting the band data.
+    
+    The current code generates the following warning:
+    
+    [176624.986244] WARNING: at /usr/local/src/incoming/compat-wireless-2.6/net/wireless/core.c:269 wiphy_register()
+    [176624.986249] Pid: 12548, comm: modprobe Tainted: P        2.6.24.2#4
+    [176624.986251]
+    [176624.986251] Call Trace:
+    [176624.986277]  [<ffffffff881c56bf>] :cfg80211:wiphy_register+0x17f/0x1a0
+    [176624.986282]  [<ffffffff881ddf80>] :rt61pci:rt61pci_eepromregister_write+0x0/0x80
+    [176624.986302]  [<ffffffff88b7e4bc>] :mac80211:ieee80211_register_hw+0x2c/0x2b0
+    [176624.986310]  [<ffffffff881cdc80>] :rt2x00lib:rt2x00lib_probe_dev+0x350/0x3f0
+    [176624.986318]  [<ffffffff881d74b9>] :rt2x00pci:rt2x00pci_probe+0x149/0x200
+    [176624.986325]  [<ffffffff8030c858>] pci_device_probe+0xf8/0x170
+    [176624.986331]  [<ffffffff803594fc>] driver_probe_device+0x9c/0x1c0
+    [176624.986335]  [<ffffffff80359700>] __driver_attach+0x0/0xb0
+    [176624.986337]  [<ffffffff803597a5>] __driver_attach+0xa5/0xb0
+    [176624.986341]  [<ffffffff8035877d>] bus_for_each_dev+0x4d/0x80
+    [176624.986347]  [<ffffffff80358b8c>] bus_add_driver+0xac/0x210
+    [176624.986351]  [<ffffffff8030cad3>] __pci_register_driver+0x73/0xc0
+    [176624.986357]  [<ffffffff8025689e>] sys_init_module+0x18e/0x1a20
+    [176624.986374]  [<ffffffff8020c42e>] system_call+0x7e/0x83
+    
+    Signed-off-by: Gertjan van Wingerde <gwingerde at kpnplanet.nl>
+    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 980a45192e965e135ab1e6b71f665a52dd8ab35e
+Author: Ivo van Doorn <ivdoorn at gmail.com>
+Date:   Sun Feb 17 17:35:28 2008 +0100
+
+    rt2x00: Remove async vendor request calls from rt2x00usb
+    
+    The async vendor requests are a ugly hack which is not working correctly.
+    The proper fix for the scheduling while atomic issue is finding out why
+    we can't use led classes for USB drivers and fix that.
+    
+    Just replace all async calls with the regular ones and print an
+    error for the disallowed LED configuration attempts. That will
+    help in determining which led class is causing the problem.
+    
+    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit a3279e1ee5fa78bceb8d1ae27497f0ab6b1b805b
+Author: Ivo van Doorn <ivdoorn at gmail.com>
+Date:   Sun Feb 17 17:35:05 2008 +0100
[...13378 lines suppressed...]
  
-@@ -1680,10 +1704,10 @@ static int adm8211_tx(struct ieee80211_h
+@@ -1678,13 +1702,9 @@ static int adm8211_tx(struct ieee80211_h
+ 	int plcp, dur, len, plcp_signal, short_preamble;
+ 	struct ieee80211_hdr *hdr;
  
- 	if (control->tx_rate < 0) {
- 		short_preamble = 1;
+-	if (control->tx_rate < 0) {
+-		short_preamble = 1;
 -		plcp_signal = -control->tx_rate;
-+		plcp_signal = -control->tx_rate->bitrate;
- 	} else {
- 		short_preamble = 0;
+-	} else {
+-		short_preamble = 0;
 -		plcp_signal = control->tx_rate;
-+		plcp_signal = control->tx_rate->bitrate;
- 	}
+-	}
++	short_preamble = !!(control->tx_rate->flags &
++					IEEE80211_TXCTL_SHORT_PREAMBLE);
++	plcp_signal = control->tx_rate->bitrate;
  
  	hdr = (struct ieee80211_hdr *)skb->data;
-@@ -1880,18 +1904,11 @@ static int __devinit adm8211_probe(struc
+ 	fc = le16_to_cpu(hdr->frame_control) & ~IEEE80211_FCTL_PROTECTED;
+@@ -1880,18 +1900,11 @@ static int __devinit adm8211_probe(struc
  	SET_IEEE80211_PERM_ADDR(dev, perm_addr);
  
  	dev->extra_tx_headroom = sizeof(struct adm8211_tx_hdr);
@@ -28152,7 +33066,7 @@
  	dev->queues = 1; /* ADM8211C supports more, maybe ADM8211B too */
  
  	priv->retry_limit = 3;
-@@ -1917,14 +1934,7 @@ static int __devinit adm8211_probe(struc
+@@ -1917,14 +1930,7 @@ static int __devinit adm8211_probe(struc
  		goto err_free_desc;
  	}
  
@@ -28168,3 +33082,159 @@
  
  	err = ieee80211_register_hw(dev);
  	if (err) {
+diff -up linux-2.6.24.noarch/drivers/ssb/pcmcia.c.orig linux-2.6.24.noarch/drivers/ssb/pcmcia.c
+--- linux-2.6.24.noarch/drivers/ssb/pcmcia.c.orig	2008-02-21 13:44:10.000000000 -0500
++++ linux-2.6.24.noarch/drivers/ssb/pcmcia.c	2008-02-21 14:05:08.000000000 -0500
+@@ -172,6 +172,22 @@ static int select_core_and_segment(struc
+ 	return 0;
+ }
+ 
++static u8 ssb_pcmcia_read8(struct ssb_device *dev, u16 offset)
++{
++	struct ssb_bus *bus = dev->bus;
++	unsigned long flags;
++	int err;
++	u8 value = 0xFF;
++
++	spin_lock_irqsave(&bus->bar_lock, flags);
++	err = select_core_and_segment(dev, &offset);
++	if (likely(!err))
++		value = readb(bus->mmio + offset);
++	spin_unlock_irqrestore(&bus->bar_lock, flags);
++
++	return value;
++}
++
+ static u16 ssb_pcmcia_read16(struct ssb_device *dev, u16 offset)
+ {
+ 	struct ssb_bus *bus = dev->bus;
+@@ -206,6 +222,20 @@ static u32 ssb_pcmcia_read32(struct ssb_
+ 	return (lo | (hi << 16));
+ }
+ 
++static void ssb_pcmcia_write8(struct ssb_device *dev, u16 offset, u8 value)
++{
++	struct ssb_bus *bus = dev->bus;
++	unsigned long flags;
++	int err;
++
++	spin_lock_irqsave(&bus->bar_lock, flags);
++	err = select_core_and_segment(dev, &offset);
++	if (likely(!err))
++		writeb(value, bus->mmio + offset);
++	mmiowb();
++	spin_unlock_irqrestore(&bus->bar_lock, flags);
++}
++
+ static void ssb_pcmcia_write16(struct ssb_device *dev, u16 offset, u16 value)
+ {
+ 	struct ssb_bus *bus = dev->bus;
+@@ -238,8 +268,10 @@ static void ssb_pcmcia_write32(struct ss
+ 
+ /* Not "static", as it's used in main.c */
+ const struct ssb_bus_ops ssb_pcmcia_ops = {
++	.read8		= ssb_pcmcia_read8,
+ 	.read16		= ssb_pcmcia_read16,
+ 	.read32		= ssb_pcmcia_read32,
++	.write8		= ssb_pcmcia_write8,
+ 	.write16	= ssb_pcmcia_write16,
+ 	.write32	= ssb_pcmcia_write32,
+ };
+diff -up linux-2.6.24.noarch/drivers/ssb/main.c.orig linux-2.6.24.noarch/drivers/ssb/main.c
+--- linux-2.6.24.noarch/drivers/ssb/main.c.orig	2008-02-21 14:00:25.000000000 -0500
++++ linux-2.6.24.noarch/drivers/ssb/main.c	2008-02-21 14:05:08.000000000 -0500
+@@ -505,6 +505,14 @@ error:
+ 	return err;
+ }
+ 
++static u8 ssb_ssb_read8(struct ssb_device *dev, u16 offset)
++{
++	struct ssb_bus *bus = dev->bus;
++
++	offset += dev->core_index * SSB_CORE_SIZE;
++	return readb(bus->mmio + offset);
++}
++
+ static u16 ssb_ssb_read16(struct ssb_device *dev, u16 offset)
+ {
+ 	struct ssb_bus *bus = dev->bus;
+@@ -521,6 +529,14 @@ static u32 ssb_ssb_read32(struct ssb_dev
+ 	return readl(bus->mmio + offset);
+ }
+ 
++static void ssb_ssb_write8(struct ssb_device *dev, u16 offset, u8 value)
++{
++	struct ssb_bus *bus = dev->bus;
++
++	offset += dev->core_index * SSB_CORE_SIZE;
++	writeb(value, bus->mmio + offset);
++}
++
+ static void ssb_ssb_write16(struct ssb_device *dev, u16 offset, u16 value)
+ {
+ 	struct ssb_bus *bus = dev->bus;
+@@ -539,8 +555,10 @@ static void ssb_ssb_write32(struct ssb_d
+ 
+ /* Ops for the plain SSB bus without a host-device (no PCI or PCMCIA). */
+ static const struct ssb_bus_ops ssb_ssb_ops = {
++	.read8		= ssb_ssb_read8,
+ 	.read16		= ssb_ssb_read16,
+ 	.read32		= ssb_ssb_read32,
++	.write8		= ssb_ssb_write8,
+ 	.write16	= ssb_ssb_write16,
+ 	.write32	= ssb_ssb_write32,
+ };
+diff -up linux-2.6.24.noarch/drivers/ssb/pci.c.orig linux-2.6.24.noarch/drivers/ssb/pci.c
+--- linux-2.6.24.noarch/drivers/ssb/pci.c.orig	2008-02-21 13:44:10.000000000 -0500
++++ linux-2.6.24.noarch/drivers/ssb/pci.c	2008-02-21 14:05:08.000000000 -0500
+@@ -572,6 +572,19 @@ static inline int ssb_pci_assert_buspowe
+ }
+ #endif /* DEBUG */
+ 
++static u8 ssb_pci_read8(struct ssb_device *dev, u16 offset)
++{
++	struct ssb_bus *bus = dev->bus;
++
++	if (unlikely(ssb_pci_assert_buspower(bus)))
++		return 0xFF;
++	if (unlikely(bus->mapped_device != dev)) {
++		if (unlikely(ssb_pci_switch_core(bus, dev)))
++			return 0xFF;
++	}
++	return ioread8(bus->mmio + offset);
++}
++
+ static u16 ssb_pci_read16(struct ssb_device *dev, u16 offset)
+ {
+ 	struct ssb_bus *bus = dev->bus;
+@@ -598,6 +611,19 @@ static u32 ssb_pci_read32(struct ssb_dev
+ 	return ioread32(bus->mmio + offset);
+ }
+ 
++static void ssb_pci_write8(struct ssb_device *dev, u16 offset, u8 value)
++{
++	struct ssb_bus *bus = dev->bus;
++
++	if (unlikely(ssb_pci_assert_buspower(bus)))
++		return;
++	if (unlikely(bus->mapped_device != dev)) {
++		if (unlikely(ssb_pci_switch_core(bus, dev)))
++			return;
++	}
++	iowrite8(value, bus->mmio + offset);
++}
++
+ static void ssb_pci_write16(struct ssb_device *dev, u16 offset, u16 value)
+ {
+ 	struct ssb_bus *bus = dev->bus;
+@@ -626,8 +652,10 @@ static void ssb_pci_write32(struct ssb_d
+ 
+ /* Not "static", as it's used in main.c */
+ const struct ssb_bus_ops ssb_pci_ops = {
++	.read8		= ssb_pci_read8,
+ 	.read16		= ssb_pci_read16,
+ 	.read32		= ssb_pci_read32,
++	.write8		= ssb_pci_write8,
+ 	.write16	= ssb_pci_write16,
+ 	.write32	= ssb_pci_write32,
+ };

linux-2.6-wireless.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.23 -r 1.24 linux-2.6-wireless.patch
Index: linux-2.6-wireless.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-wireless.patch,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- linux-2.6-wireless.patch	18 Feb 2008 20:02:42 -0000	1.23
+++ linux-2.6-wireless.patch	21 Feb 2008 19:33:49 -0000	1.24
@@ -1,1390 +1,994 @@
-commit 6fff1c64ffd899e0b70fbb0201c6603f078ea942
-Author: Stefano Brivio <stefano.brivio at polimi.it>
-Date:   Sat Feb 9 07:20:43 2008 +0100
-
-    b43legacy: Add driver load messages
-    
-    This adds printk messages with basic information about the driver being loaded.
-    This information includes a summary of the compiled-in features, which
-    simplifies bug-reporting and debugging a lot.
-    Also a firmware ID is printed. This is a unique identifier blob for a specific
-    version of the firmware. This ID is attached to a specific version of the firmware
-    blob in b43-fwcutter (see fwcutter git).
-    This helps users to select the right firmware for their device.
-    This also makes it possible to use automated scripts to fetch and extract the right
-    firmware for the driver. (The script will grep the .ko for the "Firmware-ID: xxx" string.)
-    While the driver might still support other versions of the firmware for backward
-    compatibility, this will always print out the officially supported version, which
-    people _should_ use.
-    
-    Signed-off-by: Stefano Brivio <stefano.brivio at polimi.it>
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 943dbef4b84b9cee3501e45b654e38335900570b
-Author: Dan Williams <dcbw at redhat.com>
-Date:   Thu Feb 14 17:49:41 2008 -0500
+commit fc71acc846c577473ada72a46c5ea9c935eca086
+Author: Michael Buesch <mb at bu3sch.de>
+Date:   Sat Feb 16 18:13:36 2008 +0100
 
-    ipw2200: fix ucode assertion for RX queue overrun
+    ssb: Fix support for PCI devices behind a SSB->PCI bridge
     
-    Restock the RX queue when there are a lot of unused frames so that the
-    RX ring buffer doesn't overrun, causing a ucode assertion.  Backport of
-    patch "iwlwifi: fix ucode assertion for RX queue overrun".
-    
-    Signed-off-by: Dan Williams <dcbw at redhat.com>
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit a6477249b4a1c2da6376f47fc175882be9adb844
-Author: Reinette Chatre <reinette.chatre at intel.com>
-Date:   Thu Feb 14 10:40:28 2008 -0800
-
-    iwlwifi: only check for association id when associating with AP
-    
-    There is no association process in IBSS mode - so testing the
-    association id is not needed.
-    
-    Signed-off-by: Reinette Chatre <reinette.chatre at intel.com>
-    Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
-    CC: Richard Scherping <richard at scherping.de>
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 58ff6d4db9b51533656173282de8d21f72080a49
-Author: Tomas Winkler <tomas.winkler at intel.com>
-Date:   Wed Feb 13 02:47:54 2008 +0200
-
-    iwlwifi: reverting 'misc wireless annotations' patch for iwlwifi
-    
-    This patch revert commit blow that wrongly suppressed sparse warning in
-    iwlwifi eeprom reading
-    In addtion it suppresses correctly the iwlwifi eeprom register reading anomaly.
-    
-    commit 45883ae47a0a4700c0f4716dc75a255cccdc3a76
-    misc wireless annotations
-    Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
+    We must pin all resources and make sure the PCI subsystem
+    won't relocate us, as the addresses are hardwired into hardware.
     
-    Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
-    Cc: Al Viro <viro at zeniv.linux.org.uk>
+    Signed-off-by: Michael Buesch <mb at bu3sch.de>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit cfbc35b62700447b6b14b744554f5dca17bdfa45
-Author: Stefano Brivio <stefano.brivio at polimi.it>
-Date:   Tue Feb 12 03:09:10 2008 +0100
+commit 5078ed50712aa3df1099540b524d01075aee653f
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date:   Wed Feb 20 12:09:25 2008 +0100
 
-    b43legacy: fix firmware load message level
-    
-    The firmware version information should always get printed. Not only on a
-    debug build.
+    zd1211rw: fix sparse warnings
     
-    The patch by Michael Buesch has been ported to b43legacy.
+    This silences sparse when run on zd1211rw.
     
-    Signed-off-by: Stefano Brivio <stefano.brivio at polimi.it>
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 1a1c360d73e5100a4dda1010ce0f1ebd71e03811
-Author: Stefano Brivio <stefano.brivio at polimi.it>
-Date:   Tue Feb 12 03:09:00 2008 +0100
+commit 1955fd0b533d05828bff7ed290213d2a0fc0f04f
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date:   Wed Feb 20 12:05:59 2008 +0100
 
-    b43legacy: add firmware information to modinfo
+    rtl818x: fix sparse warnings
     
-    This adds the firmware ID to modinfo.
+    This silences a few sparse warnings. There are two more where
+    I can't follow the code.
     
-    The patch by Michael Buesch has been ported to b43legacy.
-    
-    Signed-off-by: Stefano Brivio <stefano.brivio at polimi.it>
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit ceffefd15aac78841432230627308b8a382dbcfc
+commit 7cb4461520f307a6e3fb2bb32cb8daee45aa1fae
 Author: Michael Buesch <mb at bu3sch.de>
-Date:   Sun Feb 10 14:16:52 2008 +0100
+Date:   Tue Feb 19 17:46:48 2008 +0100
 
-    mac80211: Fix initial hardware configuration
+    ssb: Fix pcicore cardbus mode
     
-    On the initial device-open we need to defer the hardware reconfiguration
-    after we incremented the open_count, because the hw_config checks this flag
-    and won't call the lowlevel driver in case it is zero.
+    This fixes the pcicore driver to not die a horrible
+    crash death when inserting a cardbus card.
     
     Signed-off-by: Michael Buesch <mb at bu3sch.de>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit db433febbadaf1fa9862fb5068b119be1d312d76
-Author: Ivo van Doorn <ivdoorn at gmail.com>
-Date:   Sun Feb 10 11:21:57 2008 +0100
-
-    rt2x00: Add new USB ID to rt2500usb
-    
-    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 588e6cdfccb847661c62a2cc0f301d689b94ee64
+commit 53521d8c90d366191b6c134f88a8ebe83de60614
 Author: Michael Buesch <mb at bu3sch.de>
-Date:   Sat Feb 9 17:53:41 2008 +0100
+Date:   Tue Feb 19 16:22:50 2008 +0100
 
-    b43: Fix firmware load message level
+    ssb: Make the GPIO API reentrancy safe
     
-    The firmware version information should always get printed. Not only
-    on a debug build.
+    This fixes the GPIO API to be reentrancy safe.
     
     Signed-off-by: Michael Buesch <mb at bu3sch.de>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 9c7d99d6fba1f26b95fb70b43f7954e9684cad3e
+commit c2bcbe65fc88d61f9a806367ff6eab76c9eabb3a
 Author: Michael Buesch <mb at bu3sch.de>
-Date:   Sat Feb 9 10:23:49 2008 +0100
+Date:   Tue Feb 19 14:53:35 2008 +0100
 
-    b43: Add firmware information to modinfo
+    ssb: Fix the GPIO API
     
-    This adds the firmware ID to modinfo.
+    This fixes the GPIO API to be usable.
     
     Signed-off-by: Michael Buesch <mb at bu3sch.de>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 26bc783f8cf7227718f8b4cbc32f0c3a898b128f
+commit 42bfad4f71637c4eb4791aa8062063c4a8526522
 Author: Michael Buesch <mb at bu3sch.de>
-Date:   Sat Feb 9 00:18:35 2008 +0100
+Date:   Tue Feb 19 12:41:30 2008 +0100
 
-    b43: Add driver load messages
+    ssb: Fix watchdog access for devices without a chipcommon
     
-    This adds printk messages with basic information about the driver being loaded.
-    This information includes a summary of the compiled-in features, which
-    simplifies bug-reporting and debugging a lot.
-    Also a firmware ID is printed. This is a unique identifier blob for a specific
-    version of the firmware. This ID is attached to a specific version of the firmware
-    blob in b43-fwcutter (see fwcutter git).
-    This helps users to select the right firmware for their device.
-    This also makes it possible to use automated scripts to fetch and extract the right
-    firmware for the driver. (the script will grep the .ko for the "Firmware-ID: xxx" string.
-    While the driver might still support other versions of the firmware for backward
[...1852 lines suppressed...]
+ #include <linux/ssb/ssb.h>
+ #include <linux/pci.h>
+ #include <linux/delay.h>
++#include <linux/ssb/ssb_embedded.h>
  
- 	tx_desc = (struct ath5k_hw_2w_tx_desc *)&desc->ds_ctl0;
+ #include "ssb_private.h"
  
-@@ -3537,22 +3537,25 @@ ath5k_hw_setup_2word_tx_desc(struct ath5
- 	/* Setup control descriptor */
+@@ -27,6 +28,18 @@ void pcicore_write32(struct ssb_pcicore 
+ 	ssb_write32(pc->dev, offset, value);
+ }
  
- 	/* Verify and set frame length */
--	if (pkt_len & ~AR5K_2W_TX_DESC_CTL0_FRAME_LEN)
++static inline
++u16 pcicore_read16(struct ssb_pcicore *pc, u16 offset)
++{
++	return ssb_read16(pc->dev, offset);
++}
 +
-+	/* remove padding we might have added before */
-+	frame_len = pkt_len - (hdr_len & 3) + FCS_LEN;
++static inline
++void pcicore_write16(struct ssb_pcicore *pc, u16 offset, u16 value)
++{
++	ssb_write16(pc->dev, offset, value);
++}
 +
-+	if (frame_len & ~AR5K_2W_TX_DESC_CTL0_FRAME_LEN)
- 		return -EINVAL;
- 
--	tx_desc->tx_control_0 = pkt_len & AR5K_2W_TX_DESC_CTL0_FRAME_LEN;
-+	tx_desc->tx_control_0 = frame_len & AR5K_2W_TX_DESC_CTL0_FRAME_LEN;
- 
- 	/* Verify and set buffer length */
--	buff_len = pkt_len - FCS_LEN;
- 
- 	/* NB: beacon's BufLen must be a multiple of 4 bytes */
- 	if(type == AR5K_PKT_TYPE_BEACON)
--		buff_len = roundup(buff_len, 4);
-+		pkt_len = roundup(pkt_len, 4);
+ /**************************************************
+  * Code for hostmode operation.
+  **************************************************/
+@@ -66,6 +79,7 @@ int pcibios_plat_dev_init(struct pci_dev
+ 			base = &ssb_pcicore_pcibus_iobase;
+ 		else
+ 			base = &ssb_pcicore_pcibus_membase;
++		res->flags |= IORESOURCE_PCI_FIXED;
+ 		if (res->end) {
+ 			size = res->end - res->start + 1;
+ 			if (*base & (size - 1))
+@@ -88,10 +102,12 @@ int pcibios_plat_dev_init(struct pci_dev
  
--	if (buff_len & ~AR5K_2W_TX_DESC_CTL1_BUF_LEN)
-+	if (pkt_len & ~AR5K_2W_TX_DESC_CTL1_BUF_LEN)
- 		return -EINVAL;
- 
--	tx_desc->tx_control_1 = buff_len & AR5K_2W_TX_DESC_CTL1_BUF_LEN;
-+	tx_desc->tx_control_1 = pkt_len & AR5K_2W_TX_DESC_CTL1_BUF_LEN;
- 
- 	/*
- 	 * Verify and set header length
-@@ -3634,7 +3637,7 @@ static int ath5k_hw_setup_4word_tx_desc(
+ static void __init ssb_fixup_pcibridge(struct pci_dev *dev)
  {
- 	struct ath5k_hw_4w_tx_desc *tx_desc;
- 	struct ath5k_hw_tx_status *tx_status;
--	unsigned int buff_len;
-+	unsigned int frame_len;
- 
- 	ATH5K_TRACE(ah->ah_sc);
- 	tx_desc = (struct ath5k_hw_4w_tx_desc *)&desc->ds_ctl0;
-@@ -3669,22 +3672,25 @@ static int ath5k_hw_setup_4word_tx_desc(
- 	/* Setup control descriptor */
- 
- 	/* Verify and set frame length */
--	if (pkt_len & ~AR5K_4W_TX_DESC_CTL0_FRAME_LEN)
++	u8 lat;
 +
-+	/* remove padding we might have added before */
-+	frame_len = pkt_len - (hdr_len & 3) + FCS_LEN;
-+
-+	if (frame_len & ~AR5K_4W_TX_DESC_CTL0_FRAME_LEN)
- 		return -EINVAL;
- 
--	tx_desc->tx_control_0 = pkt_len & AR5K_4W_TX_DESC_CTL0_FRAME_LEN;
-+	tx_desc->tx_control_0 = frame_len & AR5K_4W_TX_DESC_CTL0_FRAME_LEN;
+ 	if (dev->bus->number != 0 || PCI_SLOT(dev->devfn) != 0)
+ 		return;
  
- 	/* Verify and set buffer length */
--	buff_len = pkt_len - FCS_LEN;
+-	ssb_printk(KERN_INFO "PCI: fixing up bridge\n");
++	ssb_printk(KERN_INFO "PCI: Fixing up bridge %s\n", pci_name(dev));
  
- 	/* NB: beacon's BufLen must be a multiple of 4 bytes */
- 	if(type == AR5K_PKT_TYPE_BEACON)
--		buff_len = roundup(buff_len, 4);
-+		pkt_len = roundup(pkt_len, 4);
+ 	/* Enable PCI bridge bus mastering and memory space */
+ 	pci_set_master(dev);
+@@ -101,7 +117,10 @@ static void __init ssb_fixup_pcibridge(s
+ 	pci_write_config_dword(dev, SSB_BAR1_CONTROL, 3);
+ 
+ 	/* Make sure our latency is high enough to handle the devices behind us */
+-	pci_write_config_byte(dev, PCI_LATENCY_TIMER, 0xa8);
++	lat = 168;
++	ssb_printk(KERN_INFO "PCI: Fixing latency timer of device %s to %u\n",
++		   pci_name(dev), lat);
++	pci_write_config_byte(dev, PCI_LATENCY_TIMER, lat);
+ }
+ DECLARE_PCI_FIXUP_EARLY(PCI_ANY_ID, PCI_ANY_ID, ssb_fixup_pcibridge);
  
--	if (buff_len & ~AR5K_4W_TX_DESC_CTL1_BUF_LEN)
-+	if (pkt_len & ~AR5K_4W_TX_DESC_CTL1_BUF_LEN)
- 		return -EINVAL;
+@@ -117,8 +136,10 @@ static u32 get_cfgspace_addr(struct ssb_
+ 	u32 addr = 0;
+ 	u32 tmp;
+ 
+-	if (unlikely(pc->cardbusmode && dev > 1))
++	/* We do only have one cardbus device behind the bridge. */
++	if (pc->cardbusmode && (dev >= 1))
+ 		goto out;
++
+ 	if (bus == 0) {
+ 		/* Type 0 transaction */
+ 		if (unlikely(dev >= SSB_PCI_SLOT_MAX))
+@@ -279,14 +300,14 @@ static struct resource ssb_pcicore_mem_r
+ 	.name	= "SSB PCIcore external memory",
+ 	.start	= SSB_PCI_DMA,
+ 	.end	= SSB_PCI_DMA + SSB_PCI_DMA_SZ - 1,
+-	.flags	= IORESOURCE_MEM,
++	.flags	= IORESOURCE_MEM | IORESOURCE_PCI_FIXED,
+ };
  
--	tx_desc->tx_control_1 = buff_len & AR5K_4W_TX_DESC_CTL1_BUF_LEN;
-+	tx_desc->tx_control_1 = pkt_len & AR5K_4W_TX_DESC_CTL1_BUF_LEN;
+ static struct resource ssb_pcicore_io_resource = {
+ 	.name	= "SSB PCIcore external I/O",
+ 	.start	= 0x100,
+ 	.end	= 0x7FF,
+-	.flags	= IORESOURCE_IO,
++	.flags	= IORESOURCE_IO | IORESOURCE_PCI_FIXED,
+ };
  
- 	tx_desc->tx_control_0 |=
- 		AR5K_REG_SM(tx_power, AR5K_4W_TX_DESC_CTL0_XMIT_POWER) |
-diff -up linux-2.6.24.noarch/drivers/net/wireless/ath5k/base.c.orig linux-2.6.24.noarch/drivers/net/wireless/ath5k/base.c
---- linux-2.6.24.noarch/drivers/net/wireless/ath5k/base.c.orig	2008-02-18 13:29:36.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/ath5k/base.c	2008-02-18 13:44:10.000000000 -0500
-@@ -1256,7 +1256,7 @@ ath5k_txbuf_setup(struct ath5k_softc *sc
- 	if (ctl->flags & IEEE80211_TXCTL_NO_ACK)
- 		flags |= AR5K_TXDESC_NOACK;
- 
--	pktlen = skb->len + FCS_LEN;
-+	pktlen = skb->len;
- 
- 	if (!(ctl->flags & IEEE80211_TXCTL_DO_NOT_ENCRYPT)) {
- 		keyidx = ctl->key_idx;
-@@ -1952,7 +1952,7 @@ ath5k_beacon_setup(struct ath5k_softc *s
- 	}
+ static struct pci_controller ssb_pcicore_controller = {
+@@ -318,7 +339,16 @@ static void ssb_pcicore_init_hostmode(st
+ 	pcicore_write32(pc, SSB_PCICORE_ARBCTL, val);
+ 	udelay(1); /* Assertion time demanded by the PCI standard */
+ 
+-	/*TODO cardbus mode */
++	if (pc->dev->bus->has_cardbus_slot) {
++		ssb_dprintk(KERN_INFO PFX "CardBus slot detected\n");
++		pc->cardbusmode = 1;
++		/* GPIO 1 resets the bridge */
++		ssb_gpio_out(pc->dev->bus, 1, 1);
++		ssb_gpio_outen(pc->dev->bus, 1, 1);
++		pcicore_write16(pc, SSB_PCICORE_SPROM(0),
++				pcicore_read16(pc, SSB_PCICORE_SPROM(0))
++				| 0x0400);
++	}
  
- 	ds->ds_data = bf->skbaddr;
--	ret = ah->ah_setup_tx_desc(ah, ds, skb->len + FCS_LEN,
-+	ret = ah->ah_setup_tx_desc(ah, ds, skb->len,
- 			ieee80211_get_hdrlen_from_skb(skb),
- 			AR5K_PKT_TYPE_BEACON, (ctl->power_level * 2), ctl->tx_rate, 1,
- 			AR5K_TXKEYIX_INVALID, antenna, flags, 0, 0);
+ 	/* 64MB I/O window */
+ 	pcicore_write32(pc, SSB_PCICORE_SBTOPCI0,
+@@ -344,7 +374,8 @@ static void ssb_pcicore_init_hostmode(st
+ 	/* Ok, ready to run, register it to the system.
+ 	 * The following needs change, if we want to port hostmode
+ 	 * to non-MIPS platform. */
+-	set_io_port_base((unsigned long)ioremap_nocache(SSB_PCI_MEM, 0x04000000));
++	ssb_pcicore_controller.io_map_base = (unsigned long)ioremap_nocache(SSB_PCI_MEM, 0x04000000);
++	set_io_port_base(ssb_pcicore_controller.io_map_base);
+ 	/* Give some time to the PCI controller to configure itself with the new
+ 	 * values. Not waiting at this point causes crashes of the machine. */
+ 	mdelay(10);




More information about the fedora-extras-commits mailing list