rpms/kernel/devel linux-2.6-softmac-git.patch, NONE, 1.1.2.1 linux-2.6.15-usb-find-interface.patch, NONE, 1.1.2.1 linux-2.6.15-usblp-fixes.patch, NONE, 1.1.2.1 .cvsignore, 1.313, 1.313.2.1 kernel-2.6.spec, 1.1826.2.5, 1.1826.2.6 linux-2.6-bcm43xx-resume.patch, 1.1, 1.1.2.1 linux-2.6-bcm43xx.patch, 1.1, 1.1.2.1 sources, 1.255, 1.255.2.1 linux-2.6-bcm43xx-device-table.patch, 1.1, NONE linux-2.6-bcm43xx-promisc.patch, 1.1, NONE linux-2.6-bcm43xx-quiet.patch, 1.1, NONE linux-2.6.14-ieee80211-hw-wep.patch, 1.1, NONE

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Mon Jan 9 13:47:37 UTC 2006


Author: dwmw2

Update of /cvs/dist/rpms/kernel/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv14046

Modified Files:
      Tag: private-fc5-test2-branch
	.cvsignore kernel-2.6.spec linux-2.6-bcm43xx-resume.patch 
	linux-2.6-bcm43xx.patch sources 
Added Files:
      Tag: private-fc5-test2-branch
	linux-2.6-softmac-git.patch 
	linux-2.6.15-usb-find-interface.patch 
	linux-2.6.15-usblp-fixes.patch 
Removed Files:
      Tag: private-fc5-test2-branch
	linux-2.6-bcm43xx-device-table.patch 
	linux-2.6-bcm43xx-promisc.patch linux-2.6-bcm43xx-quiet.patch 
	linux-2.6.14-ieee80211-hw-wep.patch 
Log Message:
usblp fixes, bcm43xx update

linux-2.6-softmac-git.patch:
 include/net/ieee80211.h                         |    6 
 include/net/ieee80211softmac.h                  |  266 +++++++++++++
 include/net/ieee80211softmac_wx.h               |   66 +++
 net/ieee80211/Kconfig                           |    1 
 net/ieee80211/Makefile                          |    1 
 net/ieee80211/ieee80211_crypt_wep.c             |   61 ++-
 net/ieee80211/ieee80211_module.c                |    2 
 net/ieee80211/ieee80211_rx.c                    |    4 
 net/ieee80211/ieee80211_tx.c                    |    2 
 net/ieee80211/ieee80211_wx.c                    |    2 
 net/ieee80211/softmac/Kconfig                   |   10 
 net/ieee80211/softmac/Makefile                  |    9 
 net/ieee80211/softmac/ieee80211softmac_assoc.c  |  356 ++++++++++++++++++
 net/ieee80211/softmac/ieee80211softmac_auth.c   |  348 +++++++++++++++++
 net/ieee80211/softmac/ieee80211softmac_event.c  |  135 ++++++
 net/ieee80211/softmac/ieee80211softmac_io.c     |  474 ++++++++++++++++++++++++
 net/ieee80211/softmac/ieee80211softmac_module.c |  436 ++++++++++++++++++++++
 net/ieee80211/softmac/ieee80211softmac_priv.h   |  211 ++++++++++
 net/ieee80211/softmac/ieee80211softmac_scan.c   |  216 ++++++++++
 net/ieee80211/softmac/ieee80211softmac_wx.c     |  390 +++++++++++++++++++
 20 files changed, 2971 insertions(+), 25 deletions(-)

--- NEW FILE linux-2.6-softmac-git.patch ---
diff --git a/include/net/ieee80211.h b/include/net/ieee80211.h
index cde2f4f..df05f46 100644
--- a/include/net/ieee80211.h
+++ b/include/net/ieee80211.h
@@ -363,8 +363,9 @@ enum ieee80211_reasoncode {
 #define IEEE80211_OFDM_SHIFT_MASK_A         4
 
 /* NOTE: This data is for statistical purposes; not all hardware provides this
- *       information for frames received.  Not setting these will not cause
- *       any adverse affects. */
+ *       information for frames received.
+ *       For ieee80211_rx_mgt, you need to set at least the 'len' parameter.
+ */
 struct ieee80211_rx_stats {
 	u32 mac_time;
 	s8 rssi;
@@ -1088,6 +1089,7 @@ extern int ieee80211_tx_frame(struct iee
 /* ieee80211_rx.c */
 extern int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
 			struct ieee80211_rx_stats *rx_stats);
+/* make sure to set stats->len */
 extern void ieee80211_rx_mgt(struct ieee80211_device *ieee,
 			     struct ieee80211_hdr_4addr *header,
 			     struct ieee80211_rx_stats *stats);
diff --git a/include/net/ieee80211softmac.h b/include/net/ieee80211softmac.h
new file mode 100644
index 0000000..7264bd8
--- /dev/null
+++ b/include/net/ieee80211softmac.h
@@ -0,0 +1,266 @@
+#ifndef IEEE80211SOFTMAC_H_
+#define IEEE80211SOFTMAC_H_
+
+#include <linux/kernel.h>
+#include <linux/spinlock.h>
+#include <linux/workqueue.h>
+#include <linux/list.h>
+#include <net/ieee80211.h>
+
+/* Once the API is considered more or less stable,
+ * this should be incremented on API incompatible changes.
+ */
+#define IEEE80211SOFTMAC_API	0
+
+#define IEEE80211SOFTMAC_MAX_RATES_LEN		8
+#define IEEE80211SOFTMAC_MAX_EX_RATES_LEN	255
+
+struct ieee80211softmac_ratesinfo {
+	u8 count;
+	u8 rates[IEEE80211SOFTMAC_MAX_RATES_LEN + IEEE80211SOFTMAC_MAX_EX_RATES_LEN];
+};
+
+/* internal structures */
+struct ieee80211softmac_network;
+struct ieee80211softmac_scaninfo;
+
+struct ieee80211softmac_essid {
+	u8 len;
+	char data[IW_ESSID_MAX_SIZE+1];
+};
+
+struct ieee80211softmac_wpa {
+	char *IE;
+	int IElen;
+	int IEbuflen;
+};
+
+/*
+ * Information about association
+ *
+ * Do we need a lock for this?
+ * We only ever use this structure inlined
+ * into our global struct. I've used its lock,
+ * but maybe we need a local one here?
+ */
+struct ieee80211softmac_assoc_info {
+	/*
+	 * This is the requested ESSID. It is written
+	 * only by the WX handlers.
+	 *
+	 */
+	struct ieee80211softmac_essid req_essid;
+	/*
+	 * the ESSID of the network we're currently
+	 * associated (or trying) to. This is
+	 * updated to the network's actual ESSID
+	 * even if the requested ESSID was 'ANY'
+	 */
+	struct ieee80211softmac_essid associate_essid;
+	
+	/* BSSID we're trying to associate to */
+	char bssid[ETH_ALEN];
+	
+	/* some flags.
+	 * static_essid is valid if the essid is constant,
+	 * this is for use by the wx handlers only.
+	 *
+	 * associating is true, if the network has been
+	 * auth'ed on and we are in the process of associating.
+	 *
+	 * bssvalid is true if we found a matching network
+	 * and saved it's BSSID into the bssid above.
+	 */
+	u8 static_essid:1,
+	   associating:1,
+	   bssvalid:1;
+
+	/* Scan retries remaining */
+	int scan_retry;
+
+	struct work_struct work;
+	struct work_struct timeout;
+};
+
+enum {
+	IEEE80211SOFTMAC_AUTH_OPEN_REQUEST	= 1,
+	IEEE80211SOFTMAC_AUTH_OPEN_RESPONSE	= 2,
+};
+
+enum {
+	IEEE80211SOFTMAC_AUTH_SHARED_REQUEST	= 1,
+	IEEE80211SOFTMAC_AUTH_SHARED_CHALLENGE = 2,
+	IEEE80211SOFTMAC_AUTH_SHARED_RESPONSE	= 3,
+	IEEE80211SOFTMAC_AUTH_SHARED_PASS	= 4,
+};
+
+/* We should make these tunable
+ * AUTH_TIMEOUT seems really long, but that's what it is in BSD */
+#define IEEE80211SOFTMAC_AUTH_TIMEOUT		(12 * HZ)
+#define IEEE80211SOFTMAC_AUTH_RETRY_LIMIT	5
+#define IEEE80211SOFTMAC_ASSOC_SCAN_RETRY_LIMIT	3
+
+struct ieee80211softmac_txrates {
+	/* The Bit-Rate to be used for multicast frames. */
+	u8 mcast_rate;
+	/* The Bit-Rate to be used for multicast fallback
+	 * (If the device supports fallback and hardware-retry)
+	 */
+	u8 mcast_fallback;
+	/* The Bit-Rate to be used for any other (normal) data packet. */
+	u8 default_rate;
+	/* The Bit-Rate to be used for default fallback
+	 * (If the device supports fallback and hardware-retry)
+	 */
+	u8 default_fallback;
+};
+
+/* Bits for txrates_change callback. */
+#define IEEE80211SOFTMAC_TXRATECHG_DEFAULT		(1 << 0) /* default_rate */
+#define IEEE80211SOFTMAC_TXRATECHG_DEFAULT_FBACK	(1 << 1) /* default_fallback */
+#define IEEE80211SOFTMAC_TXRATECHG_MCAST		(1 << 2) /* mcast_rate */
+#define IEEE80211SOFTMAC_TXRATECHG_MCAST_FBACK		(1 << 3) /* mcast_fallback */
+
+struct ieee80211softmac_device {
+	/* 802.11 structure for data stuff */
+	struct ieee80211_device *ieee;
+	struct net_device *dev;
+
+	/* only valid if associated, then holds the Association ID */
+	u16 association_id;
+	
+	/* the following methods are callbacks that the driver
+	 * using this framework has to assign
+	 */
+
+	/* always assign these */
+	void (*set_bssid_filter)(struct net_device *dev, const u8 *bssid);
+	void (*set_channel)(struct net_device *dev, u8 channel);
+
+	/* assign if you need it, informational only */
+	void (*link_change)(struct net_device *dev);
+
+	/* If the hardware can do scanning, assign _all_ three of these callbacks.
+	 * When the scan finishes, call ieee80211softmac_scan_finished().
+	 */
+	
+	/* when called, start_scan is guaranteed to not be called again
+	 * until you call ieee80211softmac_scan_finished.
+	 * Return 0 if scanning could start, error otherwise.
+	 * SOFTMAC AUTHORS: don't call this, use ieee80211softmac_start_scan */
+	int (*start_scan)(struct net_device *dev);
+	/* this should block until after ieee80211softmac_scan_finished was called
+	 * SOFTMAC AUTHORS: don't call this, use ieee80211softmac_wait_for_scan */
+	void (*wait_for_scan)(struct net_device *dev);
+	/* stop_scan aborts a scan, but is asynchronous.
+	 * if you want to wait for it too, use wait_for_scan
+	 * SOFTMAC AUTHORS: don't call this, use ieee80211softmac_stop_scan */
+	void (*stop_scan)(struct net_device *dev);
+
+	/* we'll need something about beacons here too, for AP or ad-hoc modes */
+
+	/* Transmission rates to be used by the driver.
+	 * The SoftMAC figures out the best possible rates.
+	 * The driver just needs to read them.
+	 */
+	struct ieee80211softmac_txrates txrates;
+	/* If the driver needs to do stuff on TX rate changes, assign this callback. */
+	void (*txrates_change)(struct net_device *dev,
+			       u32 changes, /* see IEEE80211SOFTMAC_TXRATECHG flags */
[...2780 lines suppressed...]
+			     struct iw_request_info *info,
+			     union iwreq_data *data,
+			     char *extra)
+{
+	struct ieee80211softmac_device *mac = ieee80211_priv(net_dev);
+	unsigned long flags;
+	int err = -EINVAL;
+
+	spin_lock_irqsave(&mac->lock, flags);
+	switch (mac->txrates.default_rate) {
+	case IEEE80211_CCK_RATE_1MB:
+		data->bitrate.value = 1000000;
+		break;
+	case IEEE80211_CCK_RATE_2MB:
+		data->bitrate.value = 2000000;
+		break;
+	case IEEE80211_CCK_RATE_5MB:
+		data->bitrate.value = 5500000;
+		break;
+	case IEEE80211_CCK_RATE_11MB:
+		data->bitrate.value = 11000000;
+		break;
+	case IEEE80211_OFDM_RATE_6MB:
+		data->bitrate.value = 6000000;
+		break;
+	case IEEE80211_OFDM_RATE_9MB:
+		data->bitrate.value = 9000000;
+		break;
+	case IEEE80211_OFDM_RATE_12MB:
+		data->bitrate.value = 12000000;
+		break;
+	case IEEE80211_OFDM_RATE_18MB:
+		data->bitrate.value = 18000000;
+		break;
+	case IEEE80211_OFDM_RATE_24MB:
+		data->bitrate.value = 24000000;
+		break;
+	case IEEE80211_OFDM_RATE_36MB:
+		data->bitrate.value = 36000000;
+		break;
+	case IEEE80211_OFDM_RATE_48MB:
+		data->bitrate.value = 48000000;
+		break;
+	case IEEE80211_OFDM_RATE_54MB:
+		data->bitrate.value = 54000000;
+		break;
+	default:
+		assert(0);
+		goto out_unlock;
+	}
+	err = 0;
+out_unlock:
+	spin_unlock_irqrestore(&mac->lock, flags);
+
+	return err;
+}
+EXPORT_SYMBOL_GPL(ieee80211softmac_wx_get_rate);
+
+int
+ieee80211softmac_wx_get_wap(struct net_device *net_dev,
+			    struct iw_request_info *info,
+			    union iwreq_data *data,
+			    char *extra)
+{
+	struct ieee80211softmac_device *mac = ieee80211_priv(net_dev);
+	int err = 0;
+	unsigned long flags;
+
+	spin_lock_irqsave(&mac->lock, flags);
+	if (mac->associnfo.bssvalid)
+		memcpy(data->ap_addr.sa_data, mac->associnfo.bssid, ETH_ALEN);
+	else
+		memset(data->ap_addr.sa_data, 0xff, ETH_ALEN);
+	data->ap_addr.sa_family = ARPHRD_ETHER;
+	spin_unlock_irqrestore(&mac->lock, flags);
+	return err;
+}
+EXPORT_SYMBOL_GPL(ieee80211softmac_wx_get_wap);
+
+int
+ieee80211softmac_wx_set_wap(struct net_device *net_dev,
+			    struct iw_request_info *info,
+			    union iwreq_data *data,
+			    char *extra)
+{
+	struct ieee80211softmac_device *mac = ieee80211_priv(net_dev);
+	static const unsigned char any[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
+	static const unsigned char off[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+	unsigned long flags;
+
+	/* sanity check */
+	if (data->ap_addr.sa_family != ARPHRD_ETHER) {
+		return -EINVAL;
+	}
+
+	spin_lock_irqsave(&mac->lock, flags);
+	if (!memcmp(any, data->ap_addr.sa_data, ETH_ALEN) ||
+	    !memcmp(off, data->ap_addr.sa_data, ETH_ALEN)) {
+		schedule_work(&mac->associnfo.work);
+		goto out;
+        } else {
+		if (!memcmp(mac->associnfo.bssid, data->ap_addr.sa_data, ETH_ALEN)) {
+			if (mac->associnfo.associating || mac->associated) {
+			/* bssid unchanged and associated or associating - just return */
+				goto out;
+			}
+		} else {
+			/* copy new value in data->ap_addr.sa_data to bssid */
+			memcpy(mac->associnfo.bssid, data->ap_addr.sa_data, ETH_ALEN);
+		}	
+		/* queue associate if new bssid or (old one again and not associated) */
+		schedule_work(&mac->associnfo.work);
+        }
+
+out:
+	spin_unlock_irqrestore(&mac->lock, flags);
+	return 0;
+}
+EXPORT_SYMBOL_GPL(ieee80211softmac_wx_set_wap);
+
+int
+ieee80211softmac_wx_set_genie(struct net_device *dev,
+			      struct iw_request_info *info,
+			      union iwreq_data *wrqu,
+			      char *extra)
+{
+	struct ieee80211softmac_device *mac = ieee80211_priv(dev);
+	unsigned long flags;
+	int err = 0;
+	char *buf;
+	int i;
+	
+	spin_lock_irqsave(&mac->lock, flags);
+	/* bleh. shouldn't be locked for that kmalloc... */
+
+	if (wrqu->data.length) {
+		if ((wrqu->data.length < 2) || (extra[1]+2 != wrqu->data.length)) {
+			/* this is an IE, so the length must be
+			 * correct. Is it possible though that
+			 * more than one IE is passed in?
+			 */
+			err = -EINVAL;
+			goto out;
+		}
+		if (mac->wpa.IEbuflen <= wrqu->data.length) {
+			buf = kmalloc(wrqu->data.length, GFP_ATOMIC);
+			if (!buf) {
+				err = -ENOMEM;
+				goto out;
+			}
+			kfree(mac->wpa.IE);
+			mac->wpa.IE = buf;
+			mac->wpa.IEbuflen = wrqu->data.length;
+		}
+		memcpy(mac->wpa.IE, extra, wrqu->data.length);
+		dprintk(KERN_INFO PFX "generic IE set to ");
+		for (i=0;i<wrqu->data.length;i++)
+			dprintk("%.2x", mac->wpa.IE[i]);
+		dprintk("\n");
+		mac->wpa.IElen = wrqu->data.length;
+	} else {
+		kfree(mac->wpa.IE);
+		mac->wpa.IE = NULL;
+		mac->wpa.IElen = 0;
+		mac->wpa.IEbuflen = 0;
+	}
+
+ out:	
+	spin_unlock_irqrestore(&mac->lock, flags);
+	return err;
+}
+EXPORT_SYMBOL_GPL(ieee80211softmac_wx_set_genie);
+
+int
+ieee80211softmac_wx_get_genie(struct net_device *dev,
+			      struct iw_request_info *info,
+			      union iwreq_data *wrqu,
+			      char *extra)
+{
+	struct ieee80211softmac_device *mac = ieee80211_priv(dev);
+	unsigned long flags;
+	int err = 0;
+	int space = wrqu->data.length;
+	
+	spin_lock_irqsave(&mac->lock, flags);
+	
+	wrqu->data.length = 0;
+	
+	if (mac->wpa.IE && mac->wpa.IElen) {
+		wrqu->data.length = mac->wpa.IElen;
+		if (mac->wpa.IElen <= space)
+			memcpy(extra, mac->wpa.IE, mac->wpa.IElen);
+		else
+			err = -E2BIG;
+	}
+	spin_unlock_irqrestore(&mac->lock, flags);
+	return err;
+}
+EXPORT_SYMBOL_GPL(ieee80211softmac_wx_get_genie);
+

linux-2.6.15-usb-find-interface.patch:
 usb.c |   23 +++++++++++++----------
 1 files changed, 13 insertions(+), 10 deletions(-)

--- NEW FILE linux-2.6.15-usb-find-interface.patch ---
--- linux-2.6.15/drivers/usb/core/usb.c.orig	2006-01-03 03:21:10.000000000 +0000
+++ linux-2.6.15/drivers/usb/core/usb.c	2006-01-09 13:40:41.000000000 +0000
@@ -483,20 +483,23 @@ usb_match_id(struct usb_interface *inter
 	return NULL;
 }
 
+struct find_interface_arg {
+	int minor;
+	struct usb_interface *interface;
+};
 
 static int __find_interface(struct device * dev, void * data)
 {
-	struct usb_interface ** ret = (struct usb_interface **)data;
-	struct usb_interface * intf = *ret;
-	int *minor = (int *)data;
+	struct find_interface_arg *arg = data;
+	struct usb_interface *intf;
 
 	/* can't look at usb devices, only interfaces */
 	if (dev->driver == &usb_generic_driver)
 		return 0;
 
 	intf = to_usb_interface(dev);
-	if (intf->minor != -1 && intf->minor == *minor) {
-		*ret = intf;
+	if (intf->minor != -1 && intf->minor == arg->minor) {
+		arg->interface = intf;
 		return 1;
 	}
 	return 0;
@@ -513,12 +516,12 @@ static int __find_interface(struct devic
  */
 struct usb_interface *usb_find_interface(struct usb_driver *drv, int minor)
 {
-	struct usb_interface *intf = (struct usb_interface *)(long)minor;
-	int ret;
-
-	ret = driver_for_each_device(&drv->driver, NULL, &intf, __find_interface);
+	struct find_interface_arg argb;
 
-	return ret ? intf : NULL;
+	argb.minor = minor;
+	argb.interface = NULL;
+	driver_for_each_device(&drv->driver, NULL, &argb, __find_interface);
+	return argb.interface;
 }
 
 static int usb_device_match (struct device *dev, struct device_driver *drv)

linux-2.6.15-usblp-fixes.patch:
 usblp.c |   40 +++++++++++++++++++++++++++++-----------
 1 files changed, 29 insertions(+), 11 deletions(-)

--- NEW FILE linux-2.6.15-usblp-fixes.patch ---
diff -u b/drivers/usb/class/usblp.c b/drivers/usb/class/usblp.c
--- b/drivers/usb/class/usblp.c
+++ b/drivers/usb/class/usblp.c
@@ -438,7 +438,7 @@
  			       | (!usblp->wcomplete ? 0 : POLLOUT | POLLWRNORM);
 }
 
-static int usblp_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
+static long usblp_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
 {
 	struct usblp *usblp = file->private_data;
 	int length, err, i;
@@ -838,7 +838,8 @@
 	.read =		usblp_read,
 	.write =	usblp_write,
 	.poll =		usblp_poll,
-	.ioctl =	usblp_ioctl,
+	.unlocked_ioctl =	usblp_ioctl,
+	.compat_ioctl =		usblp_ioctl,
 	.open =		usblp_open,
 	.release =	usblp_release,
 };
@@ -849,6 +850,20 @@
 	.minor_base =	USBLP_MINOR_BASE,
 };
 
+static ssize_t usblp_show_ieee1284_id(struct device *dev, struct device_attribute *attr, char *buf)
+{
+	struct usb_interface *intf = to_usb_interface(dev);
+	struct usblp *usblp = usb_get_intfdata (intf);
+
+	if (usblp->device_id_string[0] == 0 &&
+	    usblp->device_id_string[1] == 0)
+		return 0;
+
+	return sprintf(buf, "%s", usblp->device_id_string+2);
+}
+
+static DEVICE_ATTR(ieee1284_id, S_IRUGO, usblp_show_ieee1284_id, NULL);
+
 static int usblp_probe(struct usb_interface *intf,
 		       const struct usb_device_id *id)
 {
@@ -933,20 +948,12 @@
 
 	/* Retrieve and store the device ID string. */
 	usblp_cache_device_id_string(usblp);
+	device_create_file(&intf->dev, &dev_attr_ieee1284_id);
 
 #ifdef DEBUG
 	usblp_check_status(usblp, 0);
 #endif
 
-	info("usblp%d: USB %sdirectional printer dev %d "
-		"if %d alt %d proto %d vid 0x%4.4X pid 0x%4.4X",
-		usblp->minor, usblp->bidir ? "Bi" : "Uni", dev->devnum,
-		usblp->ifnum,
-		usblp->protocol[usblp->current_protocol].alt_setting,
-		usblp->current_protocol,
-		le16_to_cpu(usblp->dev->descriptor.idVendor),
-		le16_to_cpu(usblp->dev->descriptor.idProduct));
-
 	usb_set_intfdata (intf, usblp);
 
 	usblp->present = 1;
@@ -957,11 +964,20 @@
 		goto abort_intfdata;
 	}
 	usblp->minor = intf->minor;
+	info("usblp%d: USB %sdirectional printer dev %d "
+		"if %d alt %d proto %d vid 0x%4.4X pid 0x%4.4X",
+		usblp->minor, usblp->bidir ? "Bi" : "Uni", dev->devnum,
+		usblp->ifnum,
+		usblp->protocol[usblp->current_protocol].alt_setting,
+		usblp->current_protocol,
+		le16_to_cpu(usblp->dev->descriptor.idVendor),
+		le16_to_cpu(usblp->dev->descriptor.idProduct));
 
 	return 0;
 
 abort_intfdata:
 	usb_set_intfdata (intf, NULL);
+	device_remove_file(&intf->dev, &dev_attr_ieee1284_id);
 abort:
 	if (usblp) {
 		if (usblp->writebuf)
@@ -1156,6 +1172,8 @@
 		BUG ();
 	}
 
+	device_remove_file(&intf->dev, &dev_attr_ieee1284_id);
+
 	down (&usblp_sem);
 	down (&usblp->sem);
 	usblp->present = 0;


Index: .cvsignore
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/.cvsignore,v
retrieving revision 1.313
retrieving revision 1.313.2.1
diff -u -r1.313 -r1.313.2.1
--- .cvsignore	3 Jan 2006 10:57:13 -0000	1.313
+++ .cvsignore	9 Jan 2006 13:47:34 -0000	1.313.2.1
@@ -2,5 +2,4 @@
 temp-*
 kernel-2.6.15
 linux-2.6.15.tar.bz2
-bcm43xx-20060103.tar.bz2
-ieee80211softmac-20060103.tar.bz2
+bcm43xx-20060106.tar.bz2


Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/kernel-2.6.spec,v
retrieving revision 1.1826.2.5
retrieving revision 1.1826.2.6
diff -u -r1.1826.2.5 -r1.1826.2.6
--- kernel-2.6.spec	7 Jan 2006 06:14:57 -0000	1.1826.2.5
+++ kernel-2.6.spec	9 Jan 2006 13:47:35 -0000	1.1826.2.6
@@ -182,8 +182,7 @@
 Source10: COPYING.modules
 Source11: genkey
 
-%define BCMVER 20060103
-Source12: ftp://ftp.berlios.de/pub/bcm43xx/snapshots/softmac/ieee80211softmac-%{BCMVER}.tar.bz2
+%define BCMVER 20060106
 Source13: ftp://ftp.berlios.de/pub/bcm43xx/snapshots/bcm43xx/bcm43xx-%{BCMVER}.tar.bz2
 
 Source20: kernel-%{kversion}-i586.config
@@ -304,6 +303,8 @@
 Patch1028: linux-2.6-debug-oops-pause.patch
 Patch1029: linux-2.6-debug-account-kmalloc.patch
 Patch1030: linux-2.6-debug-latency-tracing.patch
+Patch1031: linux-2.6.15-usblp-fixes.patch
+Patch1032: linux-2.6.15-usb-find-interface.patch
 
 # Restrict /dev/mem usage.
 Patch1050: linux-2.6-devmem.patch
@@ -386,12 +387,9 @@
 Patch2100: linux-2.6-acpi-thinkpad-c2c3.patch
 
 # Broadcom wireless driver
-Patch5000: linux-2.6-bcm43xx.patch
-Patch5001: linux-2.6-bcm43xx-quiet.patch
-Patch5002: linux-2.6-bcm43xx-promisc.patch
-Patch5003: linux-2.6.14-ieee80211-hw-wep.patch
-Patch5004: linux-2.6-bcm43xx-device-table.patch
-Patch5005: linux-2.6-bcm43xx-resume.patch
+Patch5000: linux-2.6-softmac-git.patch
+Patch5001: linux-2.6-bcm43xx.patch
+Patch5002: linux-2.6-bcm43xx-resume.patch
 
 #
 # 10000 to 20000 is for stuff that has to come last due to the
@@ -769,7 +767,8 @@
 %patch1028 -p1
 #%patch1029 -p1
 #%patch1030 -p1
-
+%patch1031 -p1
+%patch1032 -p1
 #
 # Make /dev/mem a need-to-know function 
 #
@@ -915,24 +914,15 @@
 # Broadcom BCM43xx wireless driver.
 
 # Extract snapshot tarballs and move them into place.
-tar xvfj %{SOURCE12}
-mv ieee80211softmac-%{BCMVER}/net/*.h include/net
-mv ieee80211softmac-%{BCMVER} net/ieee80211/softmac
 tar xvfj %{SOURCE13}
 mv bcm43xx-%{BCMVER} drivers/net/wireless/bcm43xx
 
-# Patch Kconfig and Makefiles to merge it 'properly'
+# Import softmac code from git tree
 %patch5000 -p1
-# Make it shut up about dropping packets it didn't want
+# Patch Kconfig and Makefiles to merge bcm43xx 'properly'
 %patch5001 -p1
-# Operate in promiscuous mode, to make multicast and broadcast RX work
+# Fix the reassociate on resume code
 %patch5002 -p1
-# Handle host_build_iv properly
-%patch5003 -p1
-# Include pci device table so it gets autoloaded
-%patch5004 -p1
-# Reassociate on resume
-%patch5005 -p1
 
 #
 # final stuff
@@ -1421,6 +1411,10 @@
 %endif
 
 %changelog
+* Mon Jan  9 2006 David Woodhouse <dwmw2 at redhat.com>
+- Fix some usblp problems, add ieee1284_id to sysfs
+- update bcm43xx driver to version tested in -HEAD
+
 * Sat Jan  7 2006 Dave Jones <davej at redhat.com>
 - Silence some iseries build warnings.
 

linux-2.6-bcm43xx-resume.patch:
 bcm43xx.h      |   11 +++++++++--
 bcm43xx_main.c |    2 +-
 2 files changed, 10 insertions(+), 3 deletions(-)

Index: linux-2.6-bcm43xx-resume.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-bcm43xx-resume.patch,v
retrieving revision 1.1
retrieving revision 1.1.2.1
diff -u -r1.1 -r1.1.2.1
--- linux-2.6-bcm43xx-resume.patch	3 Jan 2006 23:04:52 -0000	1.1
+++ linux-2.6-bcm43xx-resume.patch	9 Jan 2006 13:47:35 -0000	1.1.2.1
@@ -1,10 +1,39 @@
 --- linux-2.6.15/drivers/net/wireless/bcm43xx/bcm43xx_main.c~	2006-01-03 22:56:55.000000000 +0000
 +++ linux-2.6.15/drivers/net/wireless/bcm43xx/bcm43xx_main.c	2006-01-03 23:00:15.000000000 +0000
-@@ -4543,6 +4541,7 @@ static int bcm43xx_resume(struct pci_dev
- 	}
+@@ -4583,8 +4583,8 @@ static int bcm43xx_resume(struct pci_dev
  
  	netif_device_attach(net_dev);
-+	queue_work(bcm->softmac->workqueue,&bcm->softmac->associnfo.work);
+ 	
+ 	/*FIXME: This should be handled by softmac instead. */
+-	queue_work(bcm->softmac->workqueue, &bcm->softmac->associnfo.work);
++	schedule_work(&bcm->softmac->associnfo.work);
  
  	dprintk(KERN_INFO PFX "Device resumed.\n");
  
+--- linux-2.6.15/drivers/net/wireless/bcm43xx/bcm43xx.h.orig	2006-01-06 05:00:12.000000000 +0000
++++ linux-2.6.15/drivers/net/wireless/bcm43xx/bcm43xx.h	2006-01-06 14:07:38.000000000 +0000
+@@ -648,7 +648,8 @@ struct bcm43xx_private {
+ 	    bad_frames_preempt:1,	/* Use "Bad Frames Preemption" (default off) */
+ 	    reg124_set_0x4:1,		/* Some variable to keep track of IRQ stuff. */
+ 	    powersaving:1,		/* TRUE if we are in PowerSaving mode. FALSE otherwise. */
+-	    short_preamble:1;		/* TRUE, if short preamble is enabled. */
++	    short_preamble:1,		/* TRUE, if short preamble is enabled. */
++	    firmware_norelease:1;	/* Do not release the firmware. Used on suspend. */
+ 
+ 	struct bcm43xx_stats stats;
+ 
+@@ -728,7 +729,13 @@ struct bcm43xx_private {
+ 	u16 security_offset;
+ 	struct bcm43xx_key key[54];
+ 	u8 default_key_idx;
+-	
++
++	/* Firmware. */
++	const struct firmware *ucode;
++	const struct firmware *pcm;
++	const struct firmware *initvals0;
++	const struct firmware *initvals1;
++
+ 	/* Debugging stuff follows. */
+ #ifdef BCM43xx_DEBUG
+ 	struct bcm43xx_dfsentry *dfsentry;

linux-2.6-bcm43xx.patch:
 Kconfig  |    8 ++++++++
 Makefile |    1 +
 2 files changed, 9 insertions(+)

Index: linux-2.6-bcm43xx.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-bcm43xx.patch,v
retrieving revision 1.1
retrieving revision 1.1.2.1
diff -u -r1.1 -r1.1.2.1
--- linux-2.6-bcm43xx.patch	2 Jan 2006 21:56:59 -0000	1.1
+++ linux-2.6-bcm43xx.patch	9 Jan 2006 13:47:35 -0000	1.1.2.1
@@ -25,26 +25,3 @@
  
  # 16-bit wireless PCMCIA client drivers
  obj-$(CONFIG_PCMCIA_RAYCS)	+= ray_cs.o
---- linux-2.6.14/net/ieee80211/Kconfig~	2005-12-30 23:42:06.000000000 +0000
-+++ linux-2.6.14/net/ieee80211/Kconfig	2005-12-30 23:51:55.000000000 +0000
-@@ -66,3 +66,10 @@ config IEEE80211_CRYPT_TKIP
- 	This can be compiled as a modules and it will be called
- 	"ieee80211_crypt_tkip".
- 
-+config IEEE80211_SOFTMAC
-+       tristate "IEEE 802.11 softmac"
-+       depends on IEEE80211 && EXPERIMENTAL
-+       ---help---
-+       The softmac layer handles IEEE 802.11 protocol management functions
-+	such as scanning, association and similar tasks, which recent hardware
-+	often leaves to software rather than implementing it all in hardware.
---- linux-2.6.14/net/ieee80211/Makefile~	2005-12-30 23:42:06.000000000 +0000
-+++ linux-2.6.14/net/ieee80211/Makefile	2005-12-30 23:52:26.000000000 +0000
-@@ -3,6 +3,7 @@ obj-$(CONFIG_IEEE80211) += ieee80211_cry
- obj-$(CONFIG_IEEE80211_CRYPT_WEP) += ieee80211_crypt_wep.o
- obj-$(CONFIG_IEEE80211_CRYPT_CCMP) += ieee80211_crypt_ccmp.o
- obj-$(CONFIG_IEEE80211_CRYPT_TKIP) += ieee80211_crypt_tkip.o
-+obj-$(CONFIG_IEEE80211_SOFTMAC) += softmac/
- ieee80211-objs := \
- 	ieee80211_module.o \
- 	ieee80211_tx.o \


Index: sources
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/sources,v
retrieving revision 1.255
retrieving revision 1.255.2.1
diff -u -r1.255 -r1.255.2.1
--- sources	3 Jan 2006 10:57:13 -0000	1.255
+++ sources	9 Jan 2006 13:47:35 -0000	1.255.2.1
@@ -1,3 +1,2 @@
 cdf95e00f5111e31f78e1d97304d9522  linux-2.6.15.tar.bz2
-96083b51cd30e60b86127113abed37a3  bcm43xx-20060103.tar.bz2
-1eb2bb778090c59fbeba6278d63a9309  ieee80211softmac-20060103.tar.bz2
+1e8dda938d8fb06863d7276b79d6e544  bcm43xx-20060106.tar.bz2


--- linux-2.6-bcm43xx-device-table.patch DELETED ---


--- linux-2.6-bcm43xx-promisc.patch DELETED ---


--- linux-2.6-bcm43xx-quiet.patch DELETED ---


--- linux-2.6.14-ieee80211-hw-wep.patch DELETED ---




More information about the fedora-cvs-commits mailing list