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