linux/drivers/net
Johannes Berg 25d834e162 mac80211: fix virtual interfaces vs. injection
Currently, virtual interface pointers passed to drivers might be
from monitor interfaces and as such completely uninitialised
because we do not tell the driver about monitor interfaces when
those are created. Instead of passing them, we should therefore
indicate to the driver that there is no information; do that by
passing a NULL value and adjust drivers to cope with it.

As a result, some mac80211 API functions also need to cope with
a NULL vif pointer so drivers can still call them unconditionally.

Also, when injecting frames we really don't want to pass NULL all
the time, if we know we are the source address of a frame and have
a local interface for that address, we can to use that interface.
This also helps with processing the frame correctly for that
interface which will help the 802.11w implementation. It's not
entirely correct for VLANs or WDS interfaces because there the MAC
address isn't unique, but it's already a lot better than what we
do now.

Finally, when injecting without a matching local interface, don't
assign sequence numbers at all.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-09-15 16:48:25 -04:00
..
appletalk
arcnet
arm Merge branch 'upstream-davem' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 2008-08-14 14:50:46 -07:00
atl1e atl1e: multistatement if missing braces 2008-08-27 05:36:20 -04:00
atlx atl1: disable TSO by default 2008-08-27 05:36:27 -04:00
bonding bonding: change some __constant_htons() to htons() 2008-09-03 10:03:07 -04:00
can
chelsio cxgb: delete non NAPI code from the driver. 2008-07-11 01:11:42 -04:00
cris
cxgb3 cxgb3: Allow 64KB firmware images. 2008-07-29 17:48:42 -04:00
e1000 e1000: fix stack size 2008-08-27 13:56:27 -07:00
e1000e e1000e: add support for new 82574L part 2008-09-03 10:08:13 -04:00
ehea drivers/net/ehea/ehea_main.c: Release mutex in error handling code 2008-07-30 17:23:39 -04:00
fs_enet fs_enet: Fix SCC Ethernet on CPM2, and crash in fs_enet_rx_napi() 2008-08-27 05:16:38 -04:00
hamradio hamradio: add missing sanity check to tty operation 2008-08-07 02:21:08 -04:00
ibm_newemac ibm_newemac: MAL[12]_IER_EVENTS definition: 2x *_OTE -> *_DE 2008-09-03 10:03:08 -04:00
igb igb: clean up a stray fake netdev code left in rx path 2008-09-03 10:08:17 -04:00
irda [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
ixgb netdrv intel: always enable VLAN filtering except in promiscous mode 2008-07-16 20:16:14 -07:00
ixgbe Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-09-08 16:59:05 -07:00
ixp2000 [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mlx4 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband 2008-07-26 20:40:36 -07:00
myri10ge [netdrvr] removed unused #include <version.h> 2008-09-03 10:24:22 -04:00
netxen Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2008-09-03 16:21:02 -07:00
pcmcia pcnet-cs, axnet_cs: add new IDs, remove dup ID with less info 2008-09-03 09:26:37 -04:00
phy net/phy: Fix 88e1111 copper/fiber selection in RGMII mode 2008-07-22 17:59:12 -04:00
sfc sfc: Rework efx_set_multicast_hash() 2008-09-03 09:53:49 -04:00
skfp drivers/net/skfp/ess.c: fix compile warnings 2008-08-27 05:36:09 -04:00
tokenring [netdrvr] removed unused #include <version.h> 2008-09-03 10:24:22 -04:00
tulip de4x5: Remove developer debug feature about set/clear promisc 2008-07-22 16:09:09 -04:00
usb net/usb/pegasus: avoid hundreds of diagnostics 2008-09-03 09:26:10 -04:00
wan wan: Missing capability checks in sbni_ioctl() 2008-08-27 04:50:30 -07:00
wireless mac80211: fix virtual interfaces vs. injection 2008-09-15 16:48:25 -04:00
3c59x.c 3c59x: use netdev_alloc_skb 2008-08-07 02:22:15 -04:00
3c501.c
3c501.h
3c503.c 8390: Split 8390 support into a pausing and a non pausing driver core 2008-07-04 08:47:51 -04:00
3c503.h
3c505.c
3c505.h
3c507.c
3c509.c Merge branch 'upstream-next-davem' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 2008-05-29 03:31:03 -07:00
3c515.c 3c515: fix using pnp_get_resource when CONFIG_ISAPNP=n 2008-05-22 06:34:34 -04:00
3c523.c [netdrvr] Drivers should not set IFF_* flag themselves 2008-08-07 02:23:19 -04:00
3c523.h
3c527.c [netdrvr] Drivers should not set IFF_* flag themselves 2008-08-07 02:23:19 -04:00
3c527.h
7990.c add missing lance_* exports 2008-06-10 18:20:17 -04:00
7990.h
8139cp.c 8139cp: use netdev_alloc_skb 2008-09-03 10:24:09 -04:00
8139too.c 8139too: use netdev_alloc_skb 2008-09-03 10:24:14 -04:00
8390.c drivers/net: coding styles fixes to drivers/net/8390.c 2008-08-07 02:21:05 -04:00
8390.h 8390: Split 8390 support into a pausing and a non pausing driver core 2008-07-04 08:47:51 -04:00
8390p.c drivers/net: coding styles fixes to drivers/net/8390p.c 2008-08-07 02:21:03 -04:00
82596.c m68k: Some network drivers do not check the platform 2008-05-18 13:28:49 -07:00
Kconfig Blackfin EMAC Driver: the BF526 also supports the MAC, 2008-08-27 05:14:14 -04:00
LICENSE.SRC
Makefile hp-plus: fix link objects 2008-09-03 10:03:07 -04:00
Space.c
a2065.c drivers/net/: remove write-only "last_dev" 2008-06-11 21:58:34 -04:00
a2065.h
ac3200.c
acenic.c [netdrvr] remove unnecessary #include 2008-08-14 04:26:38 -04:00
acenic.h
acenic_firmware.h
amd8111e.c amd8111e: delete non NAPI code from the driver. 2008-07-07 22:40:58 -07:00
amd8111e.h
apne.c m68k: Some network drivers do not check the platform 2008-05-18 13:28:49 -07:00
ariadne.c ariadne: use netstats in net_device structure 2008-07-20 17:24:38 -07:00
ariadne.h
at1700.c
atarilance.c make drivers/net/atarilance.c:lance_addr_list[] static 2008-06-11 21:58:32 -04:00
atp.c [netdrvr] Drivers should not set IFF_* flag themselves 2008-08-07 02:23:19 -04:00
atp.h
au1000_eth.c au1000_eth: use 'unsigned long' for irqflags 2008-08-14 04:27:08 -04:00
au1000_eth.h
ax88796.c AX88796: Fix locking in ethtool support 2008-08-14 04:44:21 -04:00
b44.c ssb, b43, b43legacy, b44: Rewrite SSB DMA API 2008-06-27 09:09:15 -04:00
b44.h
bfin_mac.c blackfin_mac: unneeded assignment 2008-07-29 18:24:14 -04:00
bfin_mac.h
bmac.c
bmac.h
bnx2.c bnx2: Fix build with VLAN_8021Q disabled. 2008-08-15 19:52:31 -07:00
bnx2.h bnx2: Add TX multiqueue support. 2008-07-18 17:55:11 -07:00
bnx2_fw.h bnx2: Pre-initialize struct cpu_reg. 2008-05-16 22:20:27 -07:00
bnx2_fw2.h bnx2: Update TPAT firmware 2008-07-18 17:54:17 -07:00
bnx2x.h bnx2x: Accessing un-mapped page 2008-09-03 14:38:00 -07:00
bnx2x_fw_defs.h bnx2x: Checkpatch compliance 2008-08-13 16:05:38 -07:00
bnx2x_hsi.h bnx2x: Spelling mistakes 2008-08-13 16:05:37 -07:00
bnx2x_init.h bnx2x: Checkpatch compliance 2008-08-13 16:05:38 -07:00
bnx2x_init_values.h bnx2x: FW Internal Memory structure 2008-08-13 16:01:48 -07:00
bnx2x_link.c [netdrvr] remove unnecessary #include 2008-08-14 04:26:38 -04:00
bnx2x_link.h bnx2x: Spelling mistakes 2008-08-13 16:05:37 -07:00
bnx2x_main.c bnx2x: EEH recovery fix 2008-09-09 05:07:25 -07:00
bnx2x_reg.h bnx2x: Spelling mistakes 2008-08-13 16:05:37 -07:00
bsd_comp.c
cassini.c mm: speculative page references 2008-07-26 12:00:06 -07:00
cassini.h
cpmac.c [netdrvr] remove unnecessary #include 2008-08-14 04:26:38 -04:00
cs89x0.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
cs89x0.h
de600.c
de600.h
de620.c [netdrvr] Drivers should not set IFF_* flag themselves 2008-08-07 02:23:19 -04:00
de620.h
declance.c drivers/net/: remove write-only "last_dev" 2008-06-11 21:58:34 -04:00
defxx.c
defxx.h
depca.c
depca.h
dl2k.c [netdrvr] kill sync_irq-before-freq_irq pattern 2008-06-28 10:23:38 -04:00
dl2k.h
dm9000.c dm9000: Support MAC address setting through platform data. 2008-08-07 02:22:54 -04:00
dm9000.h DM9000: Add support for DM9000A and DM9000B chips 2008-06-24 22:57:16 -04:00
dummy.c
e100.c e100, fix iomap read 2008-08-27 05:55:35 -04:00
e2100.c
eepro.c [netdrvr] Drivers should not set IFF_* flag themselves 2008-08-07 02:23:19 -04:00
eepro100.c
eexpress.c
eexpress.h
enc28j60.c enc28j60: don't specify (wrong) IRQ type 2008-07-29 18:24:20 -04:00
enc28j60_hw.h
epic100.c
eql.c
es3210.c
eth16i.c [netdrvr] Drivers should not set IFF_* flag themselves 2008-08-07 02:23:19 -04:00
ewrk3.c
ewrk3.h
fealnx.c [netdrvr] fealnx: clean up nasty mess of arch ifdefs 2008-06-28 10:23:37 -04:00
fec.c m68knommu: remove last use of CONFIG_FADS and CONFIG_RPXCLASSIC 2008-07-23 15:11:29 +10:00
fec.h
fec_mpc52xx.c netdev: bunch of drivers: avoid WARN at net/core/dev.c:1328 2008-07-22 15:41:24 -07:00
fec_mpc52xx.h
fec_mpc52xx_phy.c
forcedeth.c forcedeth: fix kexec regression 2008-09-05 14:39:37 -07:00
gianfar.c net: don't grab a mutex within a timer context in gianfar 2008-08-27 05:55:19 -04:00
gianfar.h net: don't grab a mutex within a timer context in gianfar 2008-08-27 05:55:19 -04:00
gianfar_ethtool.c gianfar: Add magic packet and suspend/resume support. 2008-07-16 17:57:47 -05:00
gianfar_mii.c
gianfar_mii.h
gianfar_sysfs.c [netdrvr] remove unnecessary #include 2008-08-14 04:26:38 -04:00
hamachi.c hamachi: use netdev_alloc_skb 2008-05-22 14:12:40 -04:00
hp-plus.c net 8390p: fix interface usage 2008-07-22 17:50:44 -04:00
hp.c net 8390p: fix interface usage 2008-07-22 17:50:44 -04:00
hp100.c
hp100.h
hplance.c make hplance_{init,cleanup}_module() static 2008-06-11 21:58:32 -04:00
hplance.h
hydra.c
ibmlana.c
ibmlana.h
ibmveth.c ibmveth: fix bad UDP checksums 2008-08-27 05:36:57 -04:00
ibmveth.h ibmveth: enable driver for CMO 2008-07-25 15:44:44 +10:00
ifb.c netdev: Fix lockdep warnings in multiqueue configurations. 2008-07-31 16:58:50 -07:00
ioc3-eth.c
ipg.c ipg: run-time configurable jumbo frame support 2008-07-04 08:46:54 -04:00
ipg.h [netdrvr] remove unnecessary #include 2008-08-14 04:26:38 -04:00
isa-skeleton.c
iseries_veth.c dma-mapping: add the device argument to dma_mapping_error() 2008-07-26 12:00:03 -07:00
jazzsonic.c
korina.c
lance.c
lasi_82596.c
lib8390.c [netdrvr] Fix 8390 build breakage 2008-06-11 22:06:31 -04:00
lib82596.c
lne390.c
loopback.c loopback: Drop obsolete ip_summed setting 2008-08-15 19:52:01 -07:00
lp486e.c [netdrvr] Drivers should not set IFF_* flag themselves 2008-08-07 02:23:19 -04:00
mac89x0.c m68k: Some network drivers do not check the platform 2008-05-18 13:28:49 -07:00
mac8390.c drivers/net/mac8390.c: make functions static 2008-06-11 21:58:33 -04:00
macb.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
macb.h
mace.c
mace.h
macmace.c m68k: Some network drivers do not check the platform 2008-05-18 13:28:49 -07:00
macsonic.c drivers/net/macsonic.c: make functions static 2008-06-11 21:58:37 -04:00
macvlan.c netdev: Handle ->addr_list_lock just like ->_xmit_lock for lockdep. 2008-07-22 14:16:42 -07:00
meth.c METH: fix MAC address setup 2008-08-07 02:11:19 -04:00
meth.h
mii.c
mipsnet.c
mv643xx_eth.c mv643xx_eth: bump version to 1.3 2008-08-24 07:36:39 +02:00
mvme147.c
myri_code.h
myri_sbus.c
myri_sbus.h
natsemi.c
ne-h8300.c
ne.c [netdrvr] ne: Use CONFIG_MACH_TX49XX 2008-08-14 04:44:11 -04:00
ne2.c net 8390p: fix interface usage 2008-07-22 17:50:44 -04:00
ne2k-pci.c
ne3210.c
netconsole.c Remove newline from the description of module parameters 2008-08-01 12:46:41 -07:00
netx-eth.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
ni52.c [netdrvr] Drivers should not set IFF_* flag themselves 2008-08-07 02:23:19 -04:00
ni52.h
ni65.c
ni65.h
ni5010.c [netdrvr] Drivers should not set IFF_* flag themselves 2008-08-07 02:23:19 -04:00
ni5010.h
niu.c niu: Fix error checking in niu_ethflow_to_class. 2008-07-29 23:59:20 -07:00
niu.h Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2008-05-15 00:34:44 -07:00
ns83820.c ns8320: use netdev_alloc_skb 2008-05-30 22:19:22 -04:00
pasemi_mac.c dma-mapping: add the device argument to dma_mapping_error() 2008-07-26 12:00:03 -07:00
pasemi_mac.h
pasemi_mac_ethtool.c
pci-skeleton.c [netdrvr] kill sync_irq-before-freq_irq pattern 2008-06-28 10:23:38 -04:00
pcnet32.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2008-05-25 23:26:10 -07:00
plip.c
ppp_async.c tty: Ldisc revamp 2008-07-20 17:12:34 -07:00
ppp_deflate.c
ppp_generic.c [PATCH] f_count may wrap around 2008-07-26 20:53:40 -04:00
ppp_mppe.c [netdrvr] remove unnecessary #include 2008-08-14 04:26:38 -04:00
ppp_mppe.h
ppp_synctty.c tty: Ldisc revamp 2008-07-20 17:12:34 -07:00
pppoe.c pppoe: warning fix 2008-06-20 21:58:02 -07:00
pppol2tp.c [netdrvr] remove unnecessary #include 2008-08-14 04:26:38 -04:00
pppox.c
ps3_gelic_net.c ps3: gelic: updown_lock semaphore to mutex 2008-06-03 15:00:14 -04:00
ps3_gelic_net.h ps3: gelic: updown_lock semaphore to mutex 2008-06-03 15:00:14 -04:00
ps3_gelic_wireless.c PS3: gelic: use unsigned long for irqflags 2008-07-29 16:55:08 -04:00
ps3_gelic_wireless.h PS3: gelic: Kill the static bounce buffer 2008-06-03 15:00:27 -04:00
qla3xxx.c qla3xxx: driver version change. 2008-08-07 02:11:15 -04:00
qla3xxx.h qla3xxx: cleanup: Remove some unused structure definitions and structure elements. 2008-08-07 02:11:14 -04:00
r6040.c [netdrvr] remove unnecessary #include 2008-08-14 04:26:38 -04:00
r8169.c Merge branch 'r8169-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/romieu/netdev-2.6 into upstream-next 2008-09-03 10:21:20 -04:00
rionet.c
rrunner.c
rrunner.h
s2io-regs.h S2io: Added napi support when MSIX is enabled. 2008-05-22 06:26:21 -04:00
s2io.c s2io: reindented misleading for loop 2008-09-03 10:24:24 -04:00
s2io.h S2io: Enable msi-x link interrupts. 2008-07-11 01:11:40 -04:00
sb1000.c
sb1250-mac.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2008-05-25 23:26:10 -07:00
sc92031.c sc92031: remove bogus unlikely() 2008-05-30 22:07:17 -04:00
seeq8005.c
seeq8005.h
sgiseeq.c
sgiseeq.h
sh_eth.c [netdrvr] remove unnecessary #include 2008-08-14 04:26:38 -04:00
sh_eth.h [netdrvr] sh_eth: Add SH7619 support 2008-08-07 02:20:57 -04:00
sis190.c
sis900.c
sis900.h
skge.c
skge.h
sky2.c sky2: display product info on boot. 2008-09-03 10:23:58 -04:00
sky2.h sky2: fix PM related regressions 2008-08-07 01:55:50 -04:00
slhc.c
slip.c tty: Ldisc revamp 2008-07-20 17:12:34 -07:00
slip.h
smc-mca.c
smc-ultra.c
smc-ultra32.c
smc91x.c [netdrvr] smc91x: fix resource removal (null ptr deref) 2008-08-27 05:54:30 -04:00
smc91x.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
smc911x.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2008-06-13 20:52:39 -07:00
smc911x.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
smc9194.c
smc9194.h
sni_82596.c
sonic.c
sonic.h
spider_net.c dma-mapping: add the device argument to dma_mapping_error() 2008-07-26 12:00:03 -07:00
spider_net.h
spider_net_ethtool.c
starfire.c starfire: delete non NAPI code from the driver. 2008-07-07 22:40:42 -07:00
starfire_firmware.h
starfire_firmware.pl
stnic.c net: stnic: Fix up fallout from SH header migration. 2008-08-02 04:39:33 +09:00
sun3_82586.c [netdrvr] Drivers should not set IFF_* flag themselves 2008-08-07 02:23:19 -04:00
sun3_82586.h
sun3lance.c m68k: Some network drivers do not check the platform 2008-05-18 13:28:49 -07:00
sunbmac.c
sunbmac.h
sundance.c
sungem.c
sungem.h
sungem_phy.c
sungem_phy.h
sunhme.c sunhme: Remove stop/wake TX queue calls in set-multicast-list handler. 2008-07-21 08:34:49 -07:00
sunhme.h
sunlance.c drivers/net/: remove write-only "last_dev" 2008-06-11 21:58:34 -04:00
sunqe.c
sunqe.h
sunvnet.c
sunvnet.h
tc35815.c dma-mapping: add the device argument to dma_mapping_error() 2008-07-26 12:00:03 -07:00
tehuti.c netdrv: don't truncate VLAN TCI with VLAN stripping 2008-07-06 20:48:41 -07:00
tehuti.h [netdrvr] remove unnecessary #include 2008-08-14 04:26:38 -04:00
tehuti_fw.h
tg3.c tg3: Fix DMA mapping leak in tigon3_dma_hwbug_workaround(). 2008-09-11 15:45:19 -07:00
tg3.h tg3: Use SKB DMA helper functions for TX. 2008-09-11 04:52:51 -07:00
tlan.c tlan: Fix two regressions introduced by 64bit conversion. 2008-08-14 04:28:12 -04:00
tlan.h tlan: wrap source lines 2008-05-30 22:18:02 -04:00
tsi108_eth.c [netdrvr] kill sync_irq-before-freq_irq pattern 2008-06-28 10:23:38 -04:00
tsi108_eth.h
tun.c tun: fallback if skb_alloc() fails on big packets 2008-08-15 19:52:31 -07:00
typhoon-firmware.h
typhoon.c [netdrvr] remove unnecessary #include 2008-08-14 04:26:38 -04:00
typhoon.h
ucc_geth.c ucc_geth: do not touch net queue in adjust_link phylib callback 2008-07-21 08:30:36 -07:00
ucc_geth.h
ucc_geth_ethtool.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2008-06-10 02:22:26 -07:00
ucc_geth_mii.c drivers/net: Use linux/of_{device,platform}.h instead of asm 2008-06-30 22:30:36 +10:00
ucc_geth_mii.h
veth.c
via-rhine.c via-rhine: changed to use netdev_alloc_skb() from dev_alloc_skb 2008-09-03 10:24:04 -04:00
via-velocity.c via-velocity: velocity_init_{rd/tx}_ring use kcalloc(..., GFP_KERNEL). 2008-07-31 23:08:06 +02:00
via-velocity.h via-velocity: separated struct allow wholesale copy during MTU changes. 2008-07-31 23:08:04 +02:00
virtio_net.c virtio: Recycle unused recv buffer pages for large skbs in net driver 2008-07-25 12:06:02 +10:00
wd.c [netdrvr] fix build issue: undefined reference to `NS8390p_init' 2008-08-27 05:17:46 -04:00
xen-netfront.c xen-netfront: use netif_start_queue() on xennet_open() 2008-08-07 02:11:17 -04:00
yellowfin.c
znet.c
zorro8390.c