rpms/kernel/devel linux-2.6-mac80211-probe-hidden-essid.patch, NONE, 1.1 git-wireless-dev.patch, 1.27, 1.28 kernel.spec, 1.55, 1.56 linux-2.6-mac80211-local-mcast-filter.patch, 1.1, 1.2

John W. Linville (linville) fedora-extras-commits at redhat.com
Mon Aug 6 23:59:33 UTC 2007


Author: linville

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

Modified Files:
	git-wireless-dev.patch kernel.spec 
	linux-2.6-mac80211-local-mcast-filter.patch 
Added Files:
	linux-2.6-mac80211-probe-hidden-essid.patch 
Log Message:
wireless updates (bcm43xx-mac80211 & zd1211rw-mac80211) plus mac80211 bugfixes

linux-2.6-mac80211-probe-hidden-essid.patch:

--- NEW FILE linux-2.6-mac80211-probe-hidden-essid.patch ---
From: John W. Linville <linville at tuxdriver.com>

[PATCH] mac80211: probe for hidden SSIDs

Signed-off-by: John W. Linville <linville at tuxdriver.com>
---

 net/mac80211/ieee80211_sta.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/net/mac80211/ieee80211_sta.c b/net/mac80211/ieee80211_sta.c
index 007dd08..9f467cc 100644
--- a/net/mac80211/ieee80211_sta.c
+++ b/net/mac80211/ieee80211_sta.c
@@ -3217,7 +3217,10 @@ static int ieee80211_sta_config_auth(struct net_device *dev,
 		return 0;
 	} else {
 		if (ifsta->state != IEEE80211_AUTHENTICATE) {
-			ieee80211_sta_start_scan(dev, NULL, 0);
+			ieee80211_sta_start_scan(dev, ifsta->auto_ssid_sel ?
+							NULL : ifsta->ssid,
+						 ifsta->auto_ssid_sel ?
+							0 : ifsta->ssid_len);
 			ifsta->state = IEEE80211_AUTHENTICATE;
 			set_bit(IEEE80211_STA_REQ_AUTH, &ifsta->request);
 		} else

git-wireless-dev.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.27 -r 1.28 git-wireless-dev.patch
Index: git-wireless-dev.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/git-wireless-dev.patch,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- git-wireless-dev.patch	3 Aug 2007 01:31:35 -0000	1.27
+++ git-wireless-dev.patch	6 Aug 2007 23:58:58 -0000	1.28
@@ -1,5 +1,5 @@
---- linux-2.6.22.noarch/CREDITS.orig	2007-08-02 21:13:23.000000000 -0400
-+++ linux-2.6.22.noarch/CREDITS	2007-08-02 21:15:20.000000000 -0400
+--- linux-2.6.22.noarch/CREDITS.orig	2007-08-06 19:40:36.000000000 -0400
++++ linux-2.6.22.noarch/CREDITS	2007-08-06 19:42:06.000000000 -0400
 @@ -665,6 +665,11 @@ D: Minor updates to SCSI types, added /p
  S: (ask for current address)
  S: USA
@@ -67,7 +67,7 @@
  E: liw at iki.fi
  D: Linux System Administrator's Guide, author, former maintainer
 --- linux-2.6.22.noarch/include/linux/nl80211.h.orig	2007-07-08 19:32:17.000000000 -0400
-+++ linux-2.6.22.noarch/include/linux/nl80211.h	2007-08-02 21:15:21.000000000 -0400
++++ linux-2.6.22.noarch/include/linux/nl80211.h	2007-08-06 19:42:06.000000000 -0400
 @@ -7,6 +7,201 @@
   */
  
@@ -327,8 +327,8 @@
 +#define NL80211_KEYTYPE_MAX (__NL80211_KEYTYPE_AFTER_LAST - 1)
 +
  #endif /* __LINUX_NL80211_H */
---- linux-2.6.22.noarch/include/linux/ieee80211.h.orig	2007-08-02 21:13:19.000000000 -0400
-+++ linux-2.6.22.noarch/include/linux/ieee80211.h	2007-08-02 21:15:21.000000000 -0400
+--- linux-2.6.22.noarch/include/linux/ieee80211.h.orig	2007-08-06 19:40:43.000000000 -0400
++++ linux-2.6.22.noarch/include/linux/ieee80211.h	2007-08-06 19:42:06.000000000 -0400
 @@ -106,6 +106,75 @@ struct ieee80211_hdr {
  } __attribute__ ((packed));
  
@@ -627,8 +627,8 @@
 +};
 +
  #endif /* IEEE80211_H */
---- /dev/null	2007-08-02 20:42:22.790812760 -0400
-+++ linux-2.6.22.noarch/include/linux/ssb/ssb_driver_chipcommon.h	2007-08-02 21:15:21.000000000 -0400
+--- /dev/null	2007-08-06 19:21:45.791015256 -0400
++++ linux-2.6.22.noarch/include/linux/ssb/ssb_driver_chipcommon.h	2007-08-06 19:42:06.000000000 -0400
 @@ -0,0 +1,390 @@
 +#ifndef LINUX_SSB_CHIPCO_H_
 +#define LINUX_SSB_CHIPCO_H_
@@ -1020,9 +1020,9 @@
 +#endif /* CONFIG_SSB_SERIAL */
 +
 +#endif /* LINUX_SSB_CHIPCO_H_ */
---- /dev/null	2007-08-02 20:42:22.790812760 -0400
-+++ linux-2.6.22.noarch/include/linux/ssb/ssb_driver_extif.h	2007-08-02 21:15:21.000000000 -0400
-@@ -0,0 +1,160 @@
+--- /dev/null	2007-08-06 19:21:45.791015256 -0400
++++ linux-2.6.22.noarch/include/linux/ssb/ssb_driver_extif.h	2007-08-06 19:42:06.000000000 -0400
+@@ -0,0 +1,198 @@
 +/*
 + * Hardware-specific External Interface I/O core definitions
 + * for the BCM47xx family of SiliconBackplane-based chips.
@@ -1045,10 +1045,6 @@
 +#ifndef LINUX_SSB_EXTIFCORE_H_
 +#define LINUX_SSB_EXTIFCORE_H_
 +
-+struct ssb_extif {
-+	struct ssb_device *dev;
-+};
-+
 +/* external interface address space */
 +#define	SSB_EXTIF_PCMCIA_MEMBASE(x)	(x)
 +#define	SSB_EXTIF_PCMCIA_IOBASE(x)	((x) + 0x100000)
@@ -1182,10 +1178,52 @@
 +#define SSB_EXTIF_WATCHDOG_CLK		48000000	/* Hz */
 +
 +
++
++#ifdef CONFIG_SSB_DRIVER_EXTIF
++
++struct ssb_extif {
++	struct ssb_device *dev;
++};
++
++static inline bool ssb_extif_available(struct ssb_extif *extif)
++{
++	return (extif->dev != NULL);
++}
++
++extern void ssb_extif_get_clockcontrol(struct ssb_extif *extif,
++			               u32 *plltype, u32 *n, u32 *m);
++
++extern void ssb_extif_timing_init(struct ssb_extif *extif,
++				  unsigned long ns);
++
++#ifdef CONFIG_SSB_SERIAL
++extern int ssb_extif_serial_init(struct ssb_extif *extif,
++				 struct ssb_serial_port *ports);
++#endif /* CONFIG_SSB_SERIAL */
++
++
++#else /* CONFIG_SSB_DRIVER_EXTIF */
++/* extif disabled */
++
++struct ssb_extif {
++};
++
++static inline bool ssb_extif_available(struct ssb_extif *extif)
++{
++	return 0;
++}
++
++static inline
++void ssb_extif_get_clockcontrol(struct ssb_extif *extif,
++			        u32 *plltype, u32 *n, u32 *m)
++{
++}
++
++#endif /* CONFIG_SSB_DRIVER_EXTIF */
 +#endif /* LINUX_SSB_EXTIFCORE_H_ */
---- /dev/null	2007-08-02 20:42:22.790812760 -0400
-+++ linux-2.6.22.noarch/include/linux/ssb/ssb_driver_mips.h	2007-08-02 21:15:21.000000000 -0400
-@@ -0,0 +1,44 @@
+--- /dev/null	2007-08-06 19:21:45.791015256 -0400
++++ linux-2.6.22.noarch/include/linux/ssb/ssb_driver_mips.h	2007-08-06 19:42:06.000000000 -0400
+@@ -0,0 +1,46 @@
 +#ifndef LINUX_SSB_MIPSCORE_H_
 +#define LINUX_SSB_MIPSCORE_H_
 +
@@ -1208,11 +1246,13 @@
 +	int nr_serial_ports;
 +	struct ssb_serial_port serial_ports[4];
 +
++	u8 flash_buswidth;
 +	u32 flash_window;
 +	u32 flash_window_size;
 +};
 +
 +extern void ssb_mipscore_init(struct ssb_mipscore *mcore);
++extern u32 ssb_cpu_clock(struct ssb_mipscore *mcore);
 +
 +extern unsigned int ssb_mips_irq(struct ssb_device *dev);
 +
@@ -1230,8 +1270,8 @@
 +#endif /* CONFIG_SSB_DRIVER_MIPS */
 +
 +#endif /* LINUX_SSB_MIPSCORE_H_ */
---- /dev/null	2007-08-02 20:42:22.790812760 -0400
-+++ linux-2.6.22.noarch/include/linux/ssb/ssb_regs.h	2007-08-02 21:15:21.000000000 -0400
+--- /dev/null	2007-08-06 19:21:45.791015256 -0400
++++ linux-2.6.22.noarch/include/linux/ssb/ssb_regs.h	2007-08-06 19:42:06.000000000 -0400
 @@ -0,0 +1,292 @@
 +#ifndef LINUX_SSB_REGS_H_
 +#define LINUX_SSB_REGS_H_
@@ -1525,8 +1565,8 @@
 +
 +
 +#endif /* LINUX_SSB_REGS_H_ */
---- /dev/null	2007-08-02 20:42:22.790812760 -0400
-+++ linux-2.6.22.noarch/include/linux/ssb/ssb_driver_pci.h	2007-08-02 21:15:21.000000000 -0400
+--- /dev/null	2007-08-06 19:21:45.791015256 -0400
++++ linux-2.6.22.noarch/include/linux/ssb/ssb_driver_pci.h	2007-08-06 19:42:06.000000000 -0400
 @@ -0,0 +1,106 @@
 +#ifndef LINUX_SSB_PCICORE_H_
 +#define LINUX_SSB_PCICORE_H_
@@ -1634,8 +1674,8 @@
 +
 +#endif /* CONFIG_SSB_DRIVER_PCICORE */
 +#endif /* LINUX_SSB_PCICORE_H_ */
---- /dev/null	2007-08-02 20:42:22.790812760 -0400
-+++ linux-2.6.22.noarch/include/linux/ssb/ssb.h	2007-08-02 21:15:21.000000000 -0400
+--- /dev/null	2007-08-06 19:21:45.791015256 -0400
++++ linux-2.6.22.noarch/include/linux/ssb/ssb.h	2007-08-06 19:42:06.000000000 -0400
 @@ -0,0 +1,432 @@
 +#ifndef LINUX_SSB_H_
 +#define LINUX_SSB_H_
@@ -2069,8 +2109,8 @@
 +
 +
 +#endif /* LINUX_SSB_H_ */
---- linux-2.6.22.noarch/include/net/cfg80211.h.orig	2007-08-02 21:13:20.000000000 -0400
-+++ linux-2.6.22.noarch/include/net/cfg80211.h	2007-08-02 21:15:21.000000000 -0400
+--- linux-2.6.22.noarch/include/net/cfg80211.h.orig	2007-08-06 19:40:43.000000000 -0400
++++ linux-2.6.22.noarch/include/net/cfg80211.h	2007-08-06 19:42:06.000000000 -0400
 @@ -3,6 +3,7 @@
  
  #include <linux/netlink.h>
@@ -2213,8 +2253,8 @@
 +			    u32 seq, int flags, u8 cmd);
 +
  #endif /* __NET_CFG80211_H */
---- linux-2.6.22.noarch/include/net/mac80211.h.orig	2007-08-02 21:13:20.000000000 -0400
-+++ linux-2.6.22.noarch/include/net/mac80211.h	2007-08-02 21:15:21.000000000 -0400
+--- linux-2.6.22.noarch/include/net/mac80211.h.orig	2007-08-06 19:40:43.000000000 -0400
++++ linux-2.6.22.noarch/include/net/mac80211.h	2007-08-06 19:42:06.000000000 -0400
 @@ -300,7 +300,6 @@ struct ieee80211_conf {
  	/* Following five fields are used for IEEE 802.11H */
  	unsigned int radar_detect;
@@ -2386,7 +2426,7 @@
  					int rate);
  
 --- linux-2.6.22.noarch/include/net/iw_handler.h.orig	2007-07-08 19:32:17.000000000 -0400
[...2426 lines suppressed...]
-+//TODO
-+#if 0
-+	if (have EXTIF) {
-+		/* Initialize extif so we can get to the LEDs and external UART */
-+		W_REG(&eir->prog_config, CF_EN);
-+
-+		/* Set timing for the flash */
-+		tmp = CEIL(10, ns) << FW_W3_SHIFT;	/* W3 = 10nS */
-+		tmp = tmp | (CEIL(40, ns) << FW_W1_SHIFT); /* W1 = 40nS */
-+		tmp = tmp | CEIL(120, ns);		/* W0 = 120nS */
-+		W_REG(&eir->prog_waitcount, tmp);	/* 0x01020a0c for a 100Mhz clock */
-+
-+		/* Set programmable interface timing for external uart */
-+		tmp = CEIL(10, ns) << FW_W3_SHIFT;	/* W3 = 10nS */
-+		tmp = tmp | (CEIL(20, ns) << FW_W2_SHIFT); /* W2 = 20nS */
-+		tmp = tmp | (CEIL(100, ns) << FW_W1_SHIFT); /* W1 = 100nS */
-+		tmp = tmp | CEIL(120, ns);		/* W0 = 120nS */
-+		W_REG(&eir->prog_waitcount, tmp);
-+	}
-+#endif
-+	if (bus->chipco.dev)
++	if (bus->extif.dev)
++		ssb_extif_timing_init(&bus->extif, ns);
++	else if (bus->chipco.dev)
 +		ssb_chipco_timing_init(&bus->chipco, ns);
 +
 +	/* Assign IRQs to all cores on the bus, start with irq line 2, because serial usually takes 1 */
@@ -91399,8 +91532,8 @@
 +	ssb_mips_serial_init(mcore);
 +	ssb_mips_flash_detect(mcore);
 +}
---- /dev/null	2007-08-02 20:42:22.790812760 -0400
-+++ linux-2.6.22.noarch/drivers/ssb/ssb_private.h	2007-08-02 21:15:21.000000000 -0400
+--- /dev/null	2007-08-06 19:21:45.791015256 -0400
++++ linux-2.6.22.noarch/drivers/ssb/ssb_private.h	2007-08-06 19:42:06.000000000 -0400
 @@ -0,0 +1,122 @@
 +#ifndef LINUX_SSB_PRIVATE_H_
 +#define LINUX_SSB_PRIVATE_H_
@@ -91524,8 +91657,8 @@
 +extern struct ssb_bus *ssb_pci_dev_to_bus(struct pci_dev *pdev);
 +
 +#endif /* LINUX_SSB_PRIVATE_H_ */
---- /dev/null	2007-08-02 20:42:22.790812760 -0400
-+++ linux-2.6.22.noarch/drivers/ssb/pci.c	2007-08-02 21:15:21.000000000 -0400
+--- /dev/null	2007-08-06 19:21:45.791015256 -0400
++++ linux-2.6.22.noarch/drivers/ssb/pci.c	2007-08-06 19:42:06.000000000 -0400
 @@ -0,0 +1,704 @@
 +/*
 + * Sonics Silicon Backplane PCI-Hostbus related functions.
@@ -92231,8 +92364,8 @@
 +out:
 +	return err;
 +}
---- /dev/null	2007-08-02 20:42:22.790812760 -0400
-+++ linux-2.6.22.noarch/drivers/ssb/driver_chipcommon.c	2007-08-02 21:15:21.000000000 -0400
+--- /dev/null	2007-08-06 19:21:45.791015256 -0400
++++ linux-2.6.22.noarch/drivers/ssb/driver_chipcommon.c	2007-08-06 19:42:06.000000000 -0400
 @@ -0,0 +1,425 @@
 +/*
 + * Sonics Silicon Backplane
@@ -92659,8 +92792,8 @@
 +	return nr_ports;
 +}
 +#endif /* CONFIG_SSB_SERIAL */
---- /dev/null	2007-08-02 20:42:22.790812760 -0400
-+++ linux-2.6.22.noarch/drivers/ssb/Kconfig	2007-08-02 21:15:21.000000000 -0400
+--- /dev/null	2007-08-06 19:21:45.791015256 -0400
++++ linux-2.6.22.noarch/drivers/ssb/Kconfig	2007-08-06 19:42:06.000000000 -0400
 @@ -0,0 +1,92 @@
 +menu "Sonics Silicon Backplane"
 +
@@ -92754,8 +92887,8 @@
 +	  If unsure, say N
 +
 +endmenu
---- /dev/null	2007-08-02 20:42:22.790812760 -0400
-+++ linux-2.6.22.noarch/drivers/ssb/scan.c	2007-08-02 21:15:21.000000000 -0400
+--- /dev/null	2007-08-06 19:21:45.791015256 -0400
++++ linux-2.6.22.noarch/drivers/ssb/scan.c	2007-08-06 19:42:06.000000000 -0400
 @@ -0,0 +1,413 @@
 +/*
 + * Sonics Silicon Backplane
@@ -93170,8 +93303,115 @@
 +	ssb_iounmap(bus);
 +	goto out;
 +}
---- /dev/null	2007-08-02 20:42:22.790812760 -0400
-+++ linux-2.6.22.noarch/drivers/ssb/driver_pcicore.c	2007-08-02 21:15:21.000000000 -0400
+--- /dev/null	2007-08-06 19:21:45.791015256 -0400
++++ linux-2.6.22.noarch/drivers/ssb/driver_extif.c	2007-08-06 19:42:06.000000000 -0400
+@@ -0,0 +1,104 @@
++/*
++ * Sonics Silicon Backplane
++ * Broadcom EXTIF core driver
++ *
++ * Copyright 2005, Broadcom Corporation
++ * Copyright 2006, 2007, Michael Buesch <mb at bu3sch.de>
++ * Copyright 2006, 2007, Felix Fietkau <nbd at openwrt.org>
++ * Copyright 2007, Aurelien Jarno <aurelien at aurel32.net>
++ *
++ * Licensed under the GNU/GPL. See COPYING for details.
++ */
++
++#include <linux/serial.h>
++#include <linux/serial_core.h>
++#include <linux/serial_reg.h>
++
++#include "ssb_private.h"
++
++
++static inline u32 extif_read32(struct ssb_extif *extif, u16 offset)
++{
++	return ssb_read32(extif->dev, offset);
++}
++
++static inline void extif_write32(struct ssb_extif *extif, u16 offset, u32 value)
++{
++	ssb_write32(extif->dev, offset, value);
++}
++
++#ifdef CONFIG_SSB_SERIAL
++static bool serial_exists(u8 *regs)
++{
++	u8 save_mcr, msr = 0;
++
++	if (regs) {
++		save_mcr = regs[UART_MCR];
++		regs[UART_MCR] = (UART_MCR_LOOP | UART_MCR_OUT2 | UART_MCR_RTS);
++		msr = regs[UART_MSR] & (UART_MSR_DCD | UART_MSR_RI
++					| UART_MSR_CTS | UART_MSR_DSR);
++		regs[UART_MCR] = save_mcr;
++	}
++	return (msr == (UART_MSR_DCD | UART_MSR_CTS));
++}
++
++int ssb_extif_serial_init(struct ssb_extif *extif, struct ssb_serial_port *ports)
++{
++	u32 i, nr_ports = 0;
++
++	/* Disable GPIO interrupt initially */
++	extif_write32(extif, SSB_EXTIF_GPIO_INTPOL, 0);
++	extif_write32(extif, SSB_EXTIF_GPIO_INTMASK, 0);
++
++	for (i = 0; i < 2; i++) {
++		void __iomem *uart_regs;
++
++		uart_regs = ioremap_nocache(SSB_EUART, 16);
++		if (uart_regs) {
++			uart_regs += (i * 8);
++
++			if (serial_exists(uart_regs) && ports) {
++				extif_write32(extif, SSB_EXTIF_GPIO_INTMASK, 2);
++
++				nr_ports++;
++				ports[i].regs = uart_regs;
++				ports[i].irq = 2;
++				ports[i].baud_base = 13500000;
++				ports[i].reg_shift = 0;
++			}
++			iounmap(uart_regs);
++		}
++	}
++	return nr_ports;
++}
++#endif /* CONFIG_SSB_SERIAL */
++
++void ssb_extif_timing_init(struct ssb_extif *extif, unsigned long ns)
++{
++	u32 tmp;
++
++	/* Initialize extif so we can get to the LEDs and external UART */
++	extif_write32(extif, SSB_EXTIF_PROG_CFG, SSB_EXTCFG_EN);
++
++	/* Set timing for the flash */
++	tmp  = DIV_ROUND_UP(10, ns) << SSB_PROG_WCNT_3_SHIFT;
++	tmp |= DIV_ROUND_UP(40, ns) << SSB_PROG_WCNT_1_SHIFT;
++	tmp |= DIV_ROUND_UP(120, ns);
++	extif_write32(extif, SSB_EXTIF_PROG_WAITCNT, tmp);
++
++	/* Set programmable interface timing for external uart */
++	tmp  = DIV_ROUND_UP(10, ns) << SSB_PROG_WCNT_3_SHIFT;
++	tmp |= DIV_ROUND_UP(20, ns) << SSB_PROG_WCNT_2_SHIFT;
++	tmp |= DIV_ROUND_UP(100, ns) << SSB_PROG_WCNT_1_SHIFT;
++	tmp |= DIV_ROUND_UP(120, ns);
++	extif_write32(extif, SSB_EXTIF_PROG_WAITCNT, tmp);
++}
++
++void ssb_extif_get_clockcontrol(struct ssb_extif *extif,
++				u32 *pll_type, u32 *n, u32 *m)
++{
++	*pll_type = SSB_PLLTYPE_1;
++	*n = extif_read32(extif, SSB_EXTIF_CLOCK_N);
++	*m = extif_read32(extif, SSB_EXTIF_CLOCK_SB);
++}
++
+--- /dev/null	2007-08-06 19:21:45.791015256 -0400
++++ linux-2.6.22.noarch/drivers/ssb/driver_pcicore.c	2007-08-06 19:42:06.000000000 -0400
 @@ -0,0 +1,568 @@
 +/*
 + * Sonics Silicon Backplane


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -r1.55 -r1.56
--- kernel.spec	6 Aug 2007 19:13:09 -0000	1.55
+++ kernel.spec	6 Aug 2007 23:58:59 -0000	1.56
@@ -581,6 +581,7 @@
 Patch670: linux-2.6-ata-quirk.patch
 Patch680: git-wireless-dev.patch
 Patch681: linux-2.6-mac80211-local-mcast-filter.patch
+Patch682: linux-2.6-mac80211-probe-hidden-essid.patch
 Patch690: linux-2.6-e1000-ich9.patch
 Patch700: linux-2.6-bcm43xx-pci-neuter.patch
 Patch701: linux-2.6-bcm43xx-revert-breakage.patch
@@ -1205,7 +1206,9 @@
 # Add the wireless stack updates and drivers from wireless-dev
 ApplyPatch git-wireless-dev.patch
 # mac80211: Filter locally-originated multicast frames echoed by AP
-#ApplyPatch linux-2.6-mac80211-local-mcast-filter.patch
+ApplyPatch linux-2.6-mac80211-local-mcast-filter.patch
+# mac80211: probe for hidden SSIDs when SSID not found
+ApplyPatch linux-2.6-mac80211-probe-hidden-essid.patch
 # add patch from markmc so that e1000 supports ICH9
 ApplyPatch linux-2.6-e1000-ich9.patch
 # avoid bcm3xx vs bcm43xx-mac80211 PCI ID conflicts
@@ -2142,6 +2145,11 @@
 %endif
 
 %changelog
+* Mon Aug 06 2007 John W. Linville <linville at redhat.com>
+- Update git-wireless-dev.patch (bcm43xx-mac80211 & zd1211rw-mac80211 updates)
+- mac80211: Filter locally-originated multicast frames echoed by AP (2nd try)
+- mac80211: probe for hidden SSIDs during when scanning for association
+
 * Mon Aug 06 2007 Dave Jones <davej at redhat.com>
 - Make CONFIG_DEBUG_STACK_USAGE a 'make debug' option.
 

linux-2.6-mac80211-local-mcast-filter.patch:

Index: linux-2.6-mac80211-local-mcast-filter.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-mac80211-local-mcast-filter.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- linux-2.6-mac80211-local-mcast-filter.patch	3 Aug 2007 01:31:35 -0000	1.1
+++ linux-2.6-mac80211-local-mcast-filter.patch	6 Aug 2007 23:58:59 -0000	1.2
@@ -3,7 +3,7 @@
 [PATCH] mac80211: filter locally-originated multicast frames
 
 In STA mode, the AP will echo our traffic.  This includes multicast
-traffice.
+traffic.
 
 Receiving these frames confuses some protocols and applications,
 notably IPv6 Duplicate Address Detection.
@@ -11,27 +11,23 @@
 Signed-off-by: John W. Linville <linville at tuxdriver.com>
 ---
 
- net/mac80211/ieee80211.c |    7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
+ net/mac80211/ieee80211.c |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
 
 diff --git a/net/mac80211/ieee80211.c b/net/mac80211/ieee80211.c
-index a42e70e..6dc6451 100644
+index a42e70e..0097b0a 100644
 --- a/net/mac80211/ieee80211.c
 +++ b/net/mac80211/ieee80211.c
-@@ -4263,11 +4263,14 @@ void __ieee80211_rx(struct ieee80211_hw *hw, struct sk_buff *skb,
- 					rx.u.rx.ra_match = 0;
- 				} else if (!multicast &&
- 					   compare_ether_addr(sdata->dev->dev_addr,
--							      hdr->addr1) != 0) {
-+							      hdr->addr1)) {
- 					if (!sdata->promisc)
- 						continue;
- 					rx.u.rx.ra_match = 0;
--				}
-+				} else if (multicast &&
-+					   !compare_ether_addr(sdata->dev->dev_addr,
-+							       hdr->addr3))
-+					rx.u.rx.ra_match = 0;
- 				break;
- 			case IEEE80211_IF_TYPE_IBSS:
- 				if (!bssid)
+@@ -3030,9 +3030,10 @@ ieee80211_rx_h_data(struct ieee80211_txrx_data *rx)
+ 		memcpy(dst, hdr->addr1, ETH_ALEN);
+ 		memcpy(src, hdr->addr3, ETH_ALEN);
+ 
+-		if (sdata->type != IEEE80211_IF_TYPE_STA) {
++		if (sdata->type != IEEE80211_IF_TYPE_STA ||
++		    (is_multicast_ether_addr(dst) &&
++		     !compare_ether_addr(src, dev->dev_addr)))
+ 			return TXRX_DROP;
+-		}
+ 		break;
+ 	case 0:
+ 		/* DA SA BSSID */




More information about the fedora-extras-commits mailing list