linux-2.6
16 years agotcp: Fix order of tests in tcp_retransmit_skb()
David S. Miller [Tue, 23 Sep 2008 08:29:23 +0000 (01:29 -0700)] 
tcp: Fix order of tests in tcp_retransmit_skb()

tcp_write_queue_next() must only be made if we know that
tcp_skb_is_last() evaluates to false.

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoppp_generic: Use skb_peek() in ppp_receive_mp_frame().
David S. Miller [Tue, 23 Sep 2008 08:17:18 +0000 (01:17 -0700)] 
ppp_generic: Use skb_peek() in ppp_receive_mp_frame().

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoneigh: Remove by-hand SKB queue handling.
David S. Miller [Tue, 23 Sep 2008 08:11:18 +0000 (01:11 -0700)] 
neigh: Remove by-hand SKB queue handling.

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agopkt_sched: Remove the tx queue state check in qdisc_run()
Jarek Poplawski [Tue, 23 Sep 2008 08:05:56 +0000 (01:05 -0700)] 
pkt_sched: Remove the tx queue state check in qdisc_run()

The current check wrongly uses the state of one (currently the first)
tx queue for all tx queues in case of non-default qdiscs. This check
mainly prevented requeuing loop with __netif_schedule(), but now it's
controlled inside __qdisc_run(), while dequeuing. The wrongness of
this check was first noticed by Herbert Xu.

Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agotcp: Use SKB queue handling interfaces instead of by-hand versions.
David S. Miller [Tue, 23 Sep 2008 07:50:13 +0000 (00:50 -0700)] 
tcp: Use SKB queue handling interfaces instead of by-hand versions.

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agonet: Add skb_queue_walk_from() and skb_queue_walk_from_safe().
David S. Miller [Tue, 23 Sep 2008 07:49:44 +0000 (00:49 -0700)] 
net: Add skb_queue_walk_from() and skb_queue_walk_from_safe().

These will be used by TCP write queue handling and elsewhere.

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agonet: Add skb_queue_next().
David S. Miller [Tue, 23 Sep 2008 07:44:42 +0000 (00:44 -0700)] 
net: Add skb_queue_next().

A lot of code wants to iterate over an SKB queue at the top level using
it's own control structure and iterator scheme.

Provide skb_queue_next(), which is only valid to invoke if
skb_queue_is_last() returns false.

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agotcp: Use skb_queue_is_last() instead of by-hand version.
David S. Miller [Tue, 23 Sep 2008 07:34:37 +0000 (00:34 -0700)] 
tcp: Use skb_queue_is_last() instead of by-hand version.

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agonet: Add skb_queue_is_last().
David S. Miller [Tue, 23 Sep 2008 07:34:07 +0000 (00:34 -0700)] 
net: Add skb_queue_is_last().

Several bits of code want to know "is this the last SKB in
a queue", and all of them implement this by hand.

Provide an common interface to make this check.

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agousbatm: Use skb_queue_walk_safe() instead of by-hand implementation.
David S. Miller [Tue, 23 Sep 2008 07:27:47 +0000 (00:27 -0700)] 
usbatm: Use skb_queue_walk_safe() instead of by-hand implementation.

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agozd1211: Use skb_queue_walk() instead of by-hand implementation.
David S. Miller [Tue, 23 Sep 2008 07:23:30 +0000 (00:23 -0700)] 
zd1211: Use skb_queue_walk() instead of by-hand implementation.

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agode4x5: Use skb_queue_head instead of by-hand implementation.
David S. Miller [Tue, 23 Sep 2008 07:19:19 +0000 (00:19 -0700)] 
de4x5: Use skb_queue_head instead of by-hand implementation.

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agopkt_sched: Check the state of tx_queue in dequeue_skb()
Jarek Poplawski [Tue, 23 Sep 2008 05:16:23 +0000 (22:16 -0700)] 
pkt_sched: Check the state of tx_queue in dequeue_skb()

Check in dequeue_skb() the state of tx_queue for requeued skb to save
on locking and re-requeuing, and possibly remove the current check in
qdisc_run(). Based on the idea of Alexander Duyck.

Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agopkt_sched: Always use q->requeue in dev_requeue_skb().
David S. Miller [Tue, 23 Sep 2008 05:15:58 +0000 (22:15 -0700)] 
pkt_sched: Always use q->requeue in dev_requeue_skb().

There is no reason to call into the complicated qdiscs
just to remember the last SKB where we found the device
blocked.

The SKB is outside of the qdiscs realm at this point.

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agopkt_sched: Make qdisc->gso_skb a list.
David S. Miller [Tue, 23 Sep 2008 05:15:30 +0000 (22:15 -0700)] 
pkt_sched: Make qdisc->gso_skb a list.

The idea is that we can use this to get rid of
->requeue().

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agosctp: Use skb_queue_walk_safe() and skb_queue_split_tail_init().
David S. Miller [Tue, 23 Sep 2008 05:14:36 +0000 (22:14 -0700)] 
sctp: Use skb_queue_walk_safe() and skb_queue_split_tail_init().

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agonet: Fix bus in SKB queue splicing interfaces.
David S. Miller [Tue, 23 Sep 2008 04:57:21 +0000 (21:57 -0700)] 
net: Fix bus in SKB queue splicing interfaces.

Handle the case of head being non-empty, by adding list->qlen
to head->qlen instead of using direct assignment.

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agonet: network device name ifalias support
Stephen Hemminger [Tue, 23 Sep 2008 04:28:11 +0000 (21:28 -0700)] 
net: network device name ifalias support

This patch add support for keeping an additional character alias
associated with an network interface. This is useful for maintaining
the SNMP ifAlias value which is a user defined value. Routers use this
to hold information like which circuit or line it is connected to. It
is just an arbitrary text label on the network device.

There are two exposed interfaces with this patch, the value can be
read/written either via netlink or sysfs.

This could be maintained just by the snmp daemon, but it is more
generally useful for other management tools, and the kernel is good
place to act as an agreed upon interface to store it.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agousbnet: Use skb_queue_walk_safe() instead of by-hand implementation.
David S. Miller [Tue, 23 Sep 2008 03:18:47 +0000 (20:18 -0700)] 
usbnet: Use skb_queue_walk_safe() instead of by-hand implementation.

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoPhonet: kernel documentation
Remi Denis-Courmont [Tue, 23 Sep 2008 03:09:46 +0000 (20:09 -0700)] 
Phonet: kernel documentation

Signed-off-by: Rémi Denis-Courmont <remi.denis-courmont@nokia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoPhonet: emit errors when a packet cannot be delivered locally
Remi Denis-Courmont [Tue, 23 Sep 2008 03:09:13 +0000 (20:09 -0700)] 
Phonet: emit errors when a packet cannot be delivered locally

When there is no listener socket for a received packet, send an error
back to the sender.

Signed-off-by: Remi Denis-Courmont <remi.denis-courmont@nokia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoPhonet: proc interface for port range
Remi Denis-Courmont [Tue, 23 Sep 2008 03:08:39 +0000 (20:08 -0700)] 
Phonet: proc interface for port range

Phonet endpoints are bound to individual ports.
This provides a /proc/sys/net/phonet (or sysctl) interface for
selecting the range of automatically allocated ports (much like the
ip_local_port_range with IPv4).

Signed-off-by: Remi Denis-Courmont <remi.denis-courmont@nokia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoPhonet: provide MAC header operations
Remi Denis-Courmont [Tue, 23 Sep 2008 03:08:04 +0000 (20:08 -0700)] 
Phonet: provide MAC header operations

Signed-off-by: Rémi Denis-Courmont <remi.denis-courmont@nokia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoPhonet: Phonet datagram transport protocol
Remi Denis-Courmont [Tue, 23 Sep 2008 03:05:57 +0000 (20:05 -0700)] 
Phonet: Phonet datagram transport protocol

This provides the basic SOCK_DGRAM transport protocol for Phonet.

Signed-off-by: Remi Denis-Courmont <remi.denis-courmont@nokia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoPhonet: common socket glue
Remi Denis-Courmont [Tue, 23 Sep 2008 03:05:19 +0000 (20:05 -0700)] 
Phonet: common socket glue

This provides the socket API for the Phonet protocols family.

Signed-off-by: Remi Denis-Courmont <remi.denis-courmont@nokia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoPhonet: Netlink interface
Remi Denis-Courmont [Tue, 23 Sep 2008 03:04:30 +0000 (20:04 -0700)] 
Phonet: Netlink interface

This provides support for configuring Phonet addresses, notifying
Phonet configuration changes, and dumping the configuration.

Signed-off-by: Remi Denis-Courmont <remi.denis-courmont@nokia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoPhonet: network device and address handling
Remi Denis-Courmont [Tue, 23 Sep 2008 03:03:44 +0000 (20:03 -0700)] 
Phonet: network device and address handling

This provides support for adding Phonet addresses to and removing
Phonet addresses from network devices.

Signed-off-by: Rémi Denis-Courmont <remi.denis-courmont@nokia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoPhonet: add CONFIG_PHONET
Remi Denis-Courmont [Tue, 23 Sep 2008 03:03:00 +0000 (20:03 -0700)] 
Phonet: add CONFIG_PHONET

Signed-off-by: Remi Denis-Courmont <remi.denis-courmont@nokia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoPhonet: PF_PHONET protocol family support
Remi Denis-Courmont [Tue, 23 Sep 2008 03:02:10 +0000 (20:02 -0700)] 
Phonet: PF_PHONET protocol family support

This is the basis for the Phonet protocol families, and introduces
the ETH_P_PHONET packet type and the PF_PHONET socket family.

Signed-off-by: Remi Denis-Courmont <remi.denis-courmont@nokia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoPhonet: global definitions
Remi Denis-Courmont [Tue, 23 Sep 2008 02:51:15 +0000 (19:51 -0700)] 
Phonet: global definitions

Signed-off-by: Remi Denis-Courmont <remi.denis-courmont@nokia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoipsec: Fix xfrm_state_walk race
Herbert Xu [Tue, 23 Sep 2008 02:48:19 +0000 (19:48 -0700)] 
ipsec: Fix xfrm_state_walk race

As discovered by Timo Teräs, the currently xfrm_state_walk scheme
is racy because if a second dump finishes before the first, we
may free xfrm states that the first dump would walk over later.

This patch fixes this by storing the dumps in a list in order
to calculate the correct completion counter which cures this
problem.

I've expanded netlink_cb in order to accomodate the extra state
related to this.  It shouldn't be a big deal since netlink_cb
is kmalloced for each dump and we're just increasing it by 4 or
8 bytes.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agocassini: use request_firmware
Jaswinder Singh [Tue, 23 Sep 2008 02:27:10 +0000 (19:27 -0700)] 
cassini: use request_firmware

Firmware blob looks like this...
        __le16 load_address
        unsigned char data[]

[akpm@linux-foundation.org: include vmalloc.h]
Signed-off-by: Jaswinder Singh <jaswinder@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agonet/atm/lec.c: drop code after return
Julia Lawall [Tue, 23 Sep 2008 02:24:45 +0000 (19:24 -0700)] 
net/atm/lec.c: drop code after return

The break after the return serves no purpose.

Signed-off-by: Julia Lawall <julia@diku.dk>
Reviewed-by: Richard Genoud <richard.genoud@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agodrivers/net/wan: Use DIV_ROUND_UP
Julia Lawall [Tue, 23 Sep 2008 02:23:48 +0000 (19:23 -0700)] 
drivers/net/wan: Use DIV_ROUND_UP

The kernel.h macro DIV_ROUND_UP performs the computation (((n) + (d) - 1) /
(d)) but is perhaps more readable.

An extract of the semantic patch that makes this change is as follows:
(http://www.emn.fr/x-info/coccinelle/)

// <smpl>
@haskernel@
@@

#include <linux/kernel.h>

@depends on haskernel@
expression n,d;
@@

(
- (n + d - 1) / d
+ DIV_ROUND_UP(n,d)
|
- (n + (d - 1)) / d
+ DIV_ROUND_UP(n,d)
)

@depends on haskernel@
expression n,d;
@@

- DIV_ROUND_UP((n),d)
+ DIV_ROUND_UP(n,d)

@depends on haskernel@
expression n,d;
@@

- DIV_ROUND_UP(n,(d))
+ DIV_ROUND_UP(n,d)
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agodrivers/atm: Use DIV_ROUND_UP
Julia Lawall [Tue, 23 Sep 2008 02:22:58 +0000 (19:22 -0700)] 
drivers/atm: Use DIV_ROUND_UP

The kernel.h macro DIV_ROUND_UP performs the computation (((n) + (d) - 1) /
(d)) but is perhaps more readable.

In the case of the file drivers/atm/eni.c, I am a little bit suspicious of
the -1 at the end of the affected expression.  Please check that that is
what is wanted.

An extract of the semantic patch that makes this change is as follows:
(http://www.emn.fr/x-info/coccinelle/)

// <smpl>
@haskernel@
@@

#include <linux/kernel.h>

@depends on haskernel@
expression n,d;
@@

(
- (n + d - 1) / d
+ DIV_ROUND_UP(n,d)
|
- (n + (d - 1)) / d
+ DIV_ROUND_UP(n,d)
)

@depends on haskernel@
expression n,d;
@@

- DIV_ROUND_UP((n),d)
+ DIV_ROUND_UP(n,d)

@depends on haskernel@
expression n,d;
@@

- DIV_ROUND_UP(n,(d))
+ DIV_ROUND_UP(n,d)
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agohci_usb: replace mb with smp_mb
Ming Lei [Tue, 23 Sep 2008 02:21:51 +0000 (19:21 -0700)] 
hci_usb: replace mb with smp_mb

smp_mb is enough for ordering memory operations among processors,and mb is
more expensive than smp_mb for UP machine, so replace it with smp_mb().

Signed-off-by: Ming Lei <tom.leiming@gmail.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agonet: em_cmp.c use unaligned access helpers
Harvey Harrison [Tue, 23 Sep 2008 02:20:51 +0000 (19:20 -0700)] 
net: em_cmp.c use unaligned access helpers

Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoirda: follow lspci device/vendor style
Bjorn Helgaas [Tue, 23 Sep 2008 02:20:06 +0000 (19:20 -0700)] 
irda: follow lspci device/vendor style

Use "[%04x:%04x]" for PCI vendor/device IDs to follow the format used by
lspci(8).

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agomISDN: misc timerdev fixes
Andi Kleen [Tue, 23 Sep 2008 02:18:15 +0000 (19:18 -0700)] 
mISDN: misc timerdev fixes

- Remove noop VFS stubs. The VFS does that on a NULL pointer anyways.
- Fix timer handler prototype to be correct
- Comment ugly SMP race I didn't fix.

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agomISDN: annotate iomem pointer and add statics
Harvey Harrison [Tue, 23 Sep 2008 02:16:51 +0000 (19:16 -0700)] 
mISDN: annotate iomem pointer and add statics

Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agomISDN: endian annotations for struct zt
Harvey Harrison [Tue, 23 Sep 2008 02:16:20 +0000 (19:16 -0700)] 
mISDN: endian annotations for struct zt

Found two possible bugs where the z1 value was used directly without
byteswapping.

Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agodrivers/isdn/capi/kcapi.c: Adjust error handling code involving capi_ctr_put
Julia Lawall [Tue, 23 Sep 2008 02:04:54 +0000 (19:04 -0700)] 
drivers/isdn/capi/kcapi.c: Adjust error handling code involving capi_ctr_put

After calling capi_ctr_get, error handling code should call capi_ctr_put.

The semantic match that finds this problem is as follows:
(http://www.emn.fr/x-info/coccinelle/)

// <smpl>
@r@
expression x,E;
statement S;
position p1,p2,p3;
@@

(
if ((x = capi_ctr_get@p1(...)) == NULL || ...) S
|
x = capi_ctr_get@p1(...)
... when != x
if (x == NULL || ...) S
)
<...
if@p3 (...) { ... when != capi_ctr_put(x)
                  when != if (x) { ... capi_ctr_put(x); ...}
    return@p2 ...;
}
...>
(
return x;
|
return 0;
|
x = E
|
E = x
|
capi_ctr_put(x)
)

@exists@
position r.p1,r.p2,r.p3;
expression x;
int ret != 0;
statement S;
@@

* x = capi_ctr_get@p1(...)
  <...
* if@p3 (...)
  S
  ...>
* return@p2 \(NULL\|ret\);
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agonetfilter: xt_time gives a wrong monthday in a leap year
Kaihui Luo [Tue, 23 Sep 2008 02:02:36 +0000 (19:02 -0700)] 
netfilter: xt_time gives a wrong monthday in a leap year

The function localtime_3 in xt_time.c gives a wrong monthday in a leap
year after 28th 2.  calculating monthday should use the array
days_since_leapyear[] not days_since_year[] in a leap year.

Signed-off-by: Kaihui Luo <kaih.luo@gmail.com>
Acked-by: Jan Engelhardt <jengelh@computergmbh.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agocxgb3: Use SKB list interfaces instead of home-grown implementation.
David S. Miller [Mon, 22 Sep 2008 08:29:52 +0000 (01:29 -0700)] 
cxgb3: Use SKB list interfaces instead of home-grown implementation.

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoisdn: isdn_ppp: Use SKB list facilities instead of home-grown implementation.
David S. Miller [Mon, 22 Sep 2008 08:15:02 +0000 (01:15 -0700)] 
isdn: isdn_ppp: Use SKB list facilities instead of home-grown implementation.

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agobluetooth: hci_bcsp: Use SKB list interfaces instead of home-grown stuff.
David S. Miller [Mon, 22 Sep 2008 05:44:08 +0000 (22:44 -0700)] 
bluetooth: hci_bcsp: Use SKB list interfaces instead of home-grown stuff.

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoaoe: Use SKB interfaces for list management instead of home-grown stuff.
David S. Miller [Mon, 22 Sep 2008 05:36:49 +0000 (22:36 -0700)] 
aoe: Use SKB interfaces for list management instead of home-grown stuff.

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agonet: Add new interfaces for SKB list light-weight init and splicing.
David S. Miller [Mon, 22 Sep 2008 05:36:24 +0000 (22:36 -0700)] 
net: Add new interfaces for SKB list light-weight init and splicing.

This will be used by subsequent changesets.

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoatm: idt77252: Use generic SKB queue management instead of home-grown scheme.
David S. Miller [Mon, 22 Sep 2008 04:38:26 +0000 (21:38 -0700)] 
atm: idt77252: Use generic SKB queue management instead of home-grown scheme.

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agonet: Remove __skb_insert() calls outside of skbuff internals.
David S. Miller [Mon, 22 Sep 2008 04:28:51 +0000 (21:28 -0700)] 
net: Remove __skb_insert() calls outside of skbuff internals.

This minor cleanup simplifies later changes which will convert
struct sk_buff and friends over to using struct list_head.

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agotcp: advertise MSS requested by user
Tom Quetchenbach [Sun, 21 Sep 2008 07:21:51 +0000 (00:21 -0700)] 
tcp: advertise MSS requested by user

I'm trying to use the TCP_MAXSEG option to setsockopt() to set the MSS
for both sides of a bidirectional connection.

man tcp says: "If this option is set before connection establishment, it
also changes the MSS value announced to the other end in the initial
packet."

However, the kernel only uses the MTU/route cache to set the advertised
MSS. That means if I set the MSS to, say, 500 before calling connect(),
I will send at most 500-byte packets, but I will still receive 1500-byte
packets in reply.

This is a bug, either in the kernel or the documentation.

This patch (applies to latest net-2.6) reduces the advertised value to
that requested by the user as long as setsockopt() is called before
connect() or accept(). This seems like the behavior that one would
expect as well as that which is documented.

I've tried to make sure that things that depend on the advertised MSS
are set correctly.

Signed-off-by: Tom Quetchenbach <virtualphtn@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agonet: Use hton[sl]() instead of __constant_hton[sl]() where applicable
Arnaldo Carvalho de Melo [Sun, 21 Sep 2008 05:20:49 +0000 (22:20 -0700)] 
net: Use hton[sl]() instead of __constant_hton[sl]() where applicable

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agomultiq: requeue should rewind the current_band
Alexander Duyck [Sun, 21 Sep 2008 05:07:34 +0000 (22:07 -0700)] 
multiq: requeue should rewind the current_band

Currently dequeueing a packet and requeueing the same packet will cause a
different packet to be pulled on the next dequeue.  This change forces
requeue to rewind the current_band.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agotcp: back retransmit_high when it over-estimated
Ilpo Järvinen [Sun, 21 Sep 2008 04:26:22 +0000 (21:26 -0700)] 
tcp: back retransmit_high when it over-estimated

If lost skb is sacked, we might have nothing to retransmit
as high as the retransmit_high is pointing to, so place
it lower to avoid unnecessary walking.

This is mainly for the case where high L'ed skbs gets sacked.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agotcp: don't clear lost_skb_hint when not necessary
Ilpo Järvinen [Sun, 21 Sep 2008 04:25:52 +0000 (21:25 -0700)] 
tcp: don't clear lost_skb_hint when not necessary

Most importantly avoid doing it with cumulative ACK. However,
since we have lost_cnt_hint in the picture as well needing
adjustments, it's not as trivial as dealing with
retransmit_skb_hint (and cannot be done in the all place we
could trivially leave retransmit_skb_hint untouched).

With the previous patch, this should mostly remove O(n^2)
behavior while cumulative ACKs start flowing once rexmit
after a lossy round-trip made it through.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agotcp: don't clear retransmit_skb_hint when not necessary
Ilpo Järvinen [Sun, 21 Sep 2008 04:25:15 +0000 (21:25 -0700)] 
tcp: don't clear retransmit_skb_hint when not necessary

Most importantly avoid doing it with cumulative ACK. Not clearing
means that we no longer need n^2 processing in resolution of each
fast recovery.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agotcp: remove retransmit_skb_hint clearing from failure
Ilpo Järvinen [Sun, 21 Sep 2008 04:24:49 +0000 (21:24 -0700)] 
tcp: remove retransmit_skb_hint clearing from failure

This doesn't much sense here afaict, probably never has. Since
fragmenting and collapsing deal the hints by themselves, there
should be very little reason for the rexmit loop to do that.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agotcp: reorganize retransmit code loops
Ilpo Järvinen [Sun, 21 Sep 2008 04:24:21 +0000 (21:24 -0700)] 
tcp: reorganize retransmit code loops

Both loops are quite similar, so they can be combined
with little effort. As a result, forward_skb_hint becomes
obsolete as well.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agotcp: remove tp->lost_out guard to make joining diff nicer
Ilpo Järvinen [Sun, 21 Sep 2008 04:23:49 +0000 (21:23 -0700)] 
tcp: remove tp->lost_out guard to make joining diff nicer

The validity of the retransmit_high must then be ensured
if no L'ed skb exits!

This makes a minor change to behavior, we now have to
iterate the head to find out that the loop terminates.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agotcp: Reorganize skb tagbit checks
Ilpo Järvinen [Sun, 21 Sep 2008 04:22:59 +0000 (21:22 -0700)] 
tcp: Reorganize skb tagbit checks

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agotcp: remove obsolete validity concern
Ilpo Järvinen [Sun, 21 Sep 2008 04:22:17 +0000 (21:22 -0700)] 
tcp: remove obsolete validity concern

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agotcp: add tcp_can_forward_retransmit
Ilpo Järvinen [Sun, 21 Sep 2008 04:21:54 +0000 (21:21 -0700)] 
tcp: add tcp_can_forward_retransmit

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agotcp: No need to clear retransmit_skb_hint when SACKing
Ilpo Järvinen [Sun, 21 Sep 2008 04:21:16 +0000 (21:21 -0700)] 
tcp: No need to clear retransmit_skb_hint when SACKing

Because lost counter no longer requires tuning, this is
trivial to remove (the tuning wouldn't have been too
hard either) because no "new" retransmittable skb appeared
below retransmit_skb_hint when SACKing for sure.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agotcp: Kill precaution that's very likely obsolete
Ilpo Järvinen [Sun, 21 Sep 2008 04:20:50 +0000 (21:20 -0700)] 
tcp: Kill precaution that's very likely obsolete

I suspect it might have been related to the changed amount
of lost skbs, which was counted by retransmit_cnt_hint that
got changed.

The place for this clearing was very illogical anyway,
it should have been after the LOST-bit clearing loop to
make any sense.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agotcp: convert retransmit_cnt_hint to seqno
Ilpo Järvinen [Sun, 21 Sep 2008 04:20:20 +0000 (21:20 -0700)] 
tcp: convert retransmit_cnt_hint to seqno

Main benefit in this is that we can then freely point
the retransmit_skb_hint to anywhere we want to because
there's no longer need to know what would be the count
changes involve, and since this is really used only as a
terminator, unnecessary work is one time walk at most,
and if some retransmissions are necessary after that
point later on, the walk is not full waste of time
anyway.

Since retransmit_high must be kept valid, all lost
markers must ensure that.

Now I also have learned how those "holes" in the
rexmittable skbs can appear, mtu probe does them. So
I removed the misleading comment as well.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agotcp: add helper for lost bit toggling
Ilpo Järvinen [Sun, 21 Sep 2008 04:19:22 +0000 (21:19 -0700)] 
tcp: add helper for lost bit toggling

This useful because we'd need to verifying soon in many places
which makes things slightly more complex than it used to be.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agotcp: move tcp_verify_retransmit_hint
Ilpo Järvinen [Sun, 21 Sep 2008 04:18:55 +0000 (21:18 -0700)] 
tcp: move tcp_verify_retransmit_hint

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agotcp: Partial hint clearing has again become meaningless
Ilpo Järvinen [Sun, 21 Sep 2008 04:18:32 +0000 (21:18 -0700)] 
tcp: Partial hint clearing has again become meaningless

Ie., the difference between partial and all clearing doesn't
exists anymore since the SACK optimizations got dropped by
an sacktag rewrite.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoMerge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wirel...
David S. Miller [Fri, 19 Sep 2008 23:17:12 +0000 (16:17 -0700)] 
Merge branch 'master' of git://git./linux/kernel/git/linville/wireless-next-2.6

16 years agoqlge: Protect qlge_resume() with CONFIG_PM
David S. Miller [Fri, 19 Sep 2008 23:14:24 +0000 (16:14 -0700)] 
qlge: Protect qlge_resume() with CONFIG_PM

Fixes the following build warning:

drivers/net/qlge/qlge_main.c:3897: warning: ‘qlge_resume’ defined but not used

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoqlge: Fix warnings in debugging code.
David S. Miller [Fri, 19 Sep 2008 23:13:05 +0000 (16:13 -0700)] 
qlge: Fix warnings in debugging code.

drivers/net/qlge/qlge_dbg.c: In function ‘ql_dump_qdev’:
drivers/net/qlge/qlge_dbg.c:369: warning: cast to pointer from integer of different size
drivers/net/qlge/qlge_dbg.c:373: warning: cast to pointer from integer of different size
drivers/net/qlge/qlge_dbg.c: In function ‘ql_dump_tx_ring’:
drivers/net/qlge/qlge_dbg.c:457: warning: format ‘%llx’ expects type ‘long long unsigned int’, but argument 2 has type ‘long unsigned int’
drivers/net/qlge/qlge_dbg.c:461: warning: format ‘%llx’ expects type ‘long long unsigned int’, but argument 2 has type ‘long unsigned int’
drivers/net/qlge/qlge_dbg.c: In function ‘ql_dump_rx_ring’:
drivers/net/qlge/qlge_dbg.c:557: warning: format ‘%llx’ expects type ‘long long unsigned int’, but argument 2 has type ‘long unsigned int’
drivers/net/qlge/qlge_dbg.c:565: warning: format ‘%llx’ expects type ‘long long unsigned int’, but argument 2 has type ‘long unsigned int’
drivers/net/qlge/qlge_dbg.c:575: warning: format ‘%llx’ expects type ‘long long unsigned int’, but argument 2 has type ‘long unsigned int’
drivers/net/qlge/qlge_dbg.c:579: warning: format ‘%llx’ expects type ‘long long unsigned int’, but argument 2 has type ‘long unsigned int’
drivers/net/qlge/qlge_dbg.c:598: warning: format ‘%llx’ expects type ‘long long unsigned int’, but argument 2 has type ‘long unsigned int’
drivers/net/qlge/qlge_dbg.c:602: warning: format ‘%llx’ expects type ‘long long unsigned int’, but argument 2 has type ‘long unsigned int’

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoMerge branch 'new-drivers' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik...
David S. Miller [Fri, 19 Sep 2008 22:51:35 +0000 (15:51 -0700)] 
Merge branch 'new-drivers' of /linux/kernel/git/jgarzik/netdev-2.6

16 years agonet: Fix build with ARCH=um
David S. Miller [Fri, 19 Sep 2008 19:44:54 +0000 (12:44 -0700)] 
net: Fix build with ARCH=um

If UM is going to claim that it supports DMA by setting
HAS_DMA, it should provide a dma_mapping_error() implementation.

Based upon a report by Julius Volz.

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoISDN sockets: add missing lockdep strings
Rémi Denis-Courmont [Thu, 18 Sep 2008 23:44:31 +0000 (16:44 -0700)] 
ISDN sockets: add missing lockdep strings

Signed-off-by: Rémi Denis-Courmont <remi.denis-courmont@nokia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agobnx2: Remove timer_interval field from the bnx2 structure
Benjamin Li [Thu, 18 Sep 2008 23:40:49 +0000 (16:40 -0700)] 
bnx2: Remove timer_interval field from the bnx2 structure

The timer_interval field is only assigned once, and never reassigned.
We can safely replace all instances of the timer_interval with a
constant value.

Signed-off-by: Benjamin Li <benli@broadcom.com>
Signed-off-by: Michael Chan <mchan@broadcom.com>
Acked-by: Jeff Garzik <jeff@garzik.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agobnx2: Remove name field from bnx2 structure
Benjamin Li [Thu, 18 Sep 2008 23:40:03 +0000 (16:40 -0700)] 
bnx2: Remove name field from bnx2 structure

The name of the board is only used during the initialization of
the adapter.  We can save the space of a pointer by not storing
this information.

Signed-off-by: Benjamin Li <benli@broadcom.com>
Signed-off-by: Michael Chan <mchan@broadcom.com>
Acked-by: Jeff Garzik <jeff@garzik.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agobnx2: Update MODULE_DESCRIPTION to include the 5716
Benjamin Li [Thu, 18 Sep 2008 23:39:16 +0000 (16:39 -0700)] 
bnx2: Update MODULE_DESCRIPTION to include the 5716

Signed-off-by: Benjamin Li <benli@broadcom.com>
Signed-off-by: Michael Chan <mchan@broadcom.com>
Acked-by: Jeff Garzik <jeff@garzik.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agobnx2: In bnx2_set_mac_link() return void rather then int
Benjamin Li [Thu, 18 Sep 2008 23:38:24 +0000 (16:38 -0700)] 
bnx2: In bnx2_set_mac_link() return void rather then int

bnx2_set_mac_link() doesn't need to return any error codes.  And
all the callers don't check the return code. It is safe to
change the return type to a void.

Signed-off-by: Benjamin Li <benli@broadcom.com>
Signed-off-by: Michael Chan <mchan@broadcom.com>
Acked-by: Jeff Garzik <jeff@garzik.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoqlge: New Qlogic 10Gb Ethernet Driver.
Ron Mercer [Thu, 18 Sep 2008 15:56:28 +0000 (11:56 -0400)] 
qlge: New Qlogic 10Gb Ethernet Driver.

Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
16 years agojme: JMicron Gigabit Ethernet Driver
Guo-Fu Tseng [Mon, 15 Sep 2008 17:00:11 +0000 (01:00 +0800)] 
jme: JMicron Gigabit Ethernet Driver

Supporting JMC250, and JMC260.

Signed-off-by: Guo-Fu Tseng <cooldavid@cooldavid.org>
Acked-and-tested-by: Ethan Hsiao <ethanhsiao@jmicron.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
16 years agoenic: add Cisco 10G Ethernet NIC driver
Scott Feldman [Mon, 15 Sep 2008 16:17:11 +0000 (09:17 -0700)] 
enic: add Cisco 10G Ethernet NIC driver

Signed-off-by: Scott Feldman <scofeldm@cisco.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
16 years agoatl2: add atl2 driver
Chris Snook [Mon, 15 Sep 2008 00:56:10 +0000 (19:56 -0500)] 
atl2: add atl2 driver

Driver for Atheros L2 10/100 network device. Includes necessary
changes for Kconfig, Makefile, and pci_ids.h.

Signed-off-by: Chris Snook <csnook@redhat.com>
Signed-off-by: Jay Cliburn <jacliburn@bellsouth.net>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
16 years agoipvs: change some __constant_htons() to htons()
Brian Haley [Tue, 16 Sep 2008 15:11:11 +0000 (11:11 -0400)] 
ipvs: change some __constant_htons() to htons()

Change __contant_htons() to htons() in the IPVS code when not in an
initializer.

-Brian

Signed-off-by: Brian Haley <brian.haley@hp.com>
Acked-by: Julius Volz <juliusv@google.com>
Signed-off-by: Simon Horman <horms@verge.net.au>
16 years agoipvs: add __aquire/__release annotations to ip_vs_info_seq_start/ip_vs_info_seq_stop
Simon Horman [Wed, 17 Sep 2008 00:10:42 +0000 (10:10 +1000)] 
ipvs: add __aquire/__release annotations to ip_vs_info_seq_start/ip_vs_info_seq_stop

This teaches sparse that the following are not problems:

make C=1
  CHECK   net/ipv4/ipvs/ip_vs_ctl.c
net/ipv4/ipvs/ip_vs_ctl.c:1793:14: warning: context imbalance in 'ip_vs_info_seq_start' - wrong count at exit
net/ipv4/ipvs/ip_vs_ctl.c:1842:13: warning: context imbalance in 'ip_vs_info_seq_stop' - unexpected unlock

Acked-by: Sven Wegener <sven.wegener@stealer.net>
Acked-by: Julius Volz <juliusv@google.com>
Signed-off-by: Simon Horman <horms@verge.net.au>
16 years agoipvs: supply a valid 0 address to ip_vs_conn_new()
Simon Horman [Wed, 17 Sep 2008 00:10:42 +0000 (10:10 +1000)] 
ipvs: supply a valid 0 address to ip_vs_conn_new()

ip_vs_conn_new expects a union nf_inet_addr as the type for its address
parameters, not a plain integer.

This problem was detected by sparse.

make C=1
  CHECK   net/ipv4/ipvs/ip_vs_core.c
net/ipv4/ipvs/ip_vs_core.c:469:9: warning: Using plain integer as NULL pointer

Acked-by: Sven Wegener <sven.wegener@stealer.net>
Acked-by: Julius Volz <juliusv@google.com>
Signed-off-by: Simon Horman <horms@verge.net.au>
16 years agoipvs: only unlock in ip_vs_edit_service() if already locked
Simon Horman [Wed, 17 Sep 2008 00:10:41 +0000 (10:10 +1000)] 
ipvs: only unlock in ip_vs_edit_service() if already locked

Jumping to out unlocks __ip_vs_svc_lock, but that lock is not taken until
after code that may jump to out.

This problem was detected by sparse.

make C=1
  CHECK   net/ipv4/ipvs/ip_vs_ctl.c
net/ipv4/ipvs/ip_vs_ctl.c:1332:2: warning: context imbalance in 'ip_vs_edit_service' - unexpected unlock

Acked-by: Sven Wegener <sven.wegener@stealer.net>
Acked-by: Julius Volz <juliusv@google.com>
Signed-off-by: Simon Horman <horms@verge.net.au>
16 years agoMerge git://git.kernel.org/pub/scm/linux/kernel/git/horms/lvs-2.6 into lvs-next-2.6
Simon Horman [Wed, 17 Sep 2008 00:08:26 +0000 (10:08 +1000)] 
Merge git://git./linux/kernel/git/horms/lvs-2.6 into lvs-next-2.6

16 years agolibertas: correct "limited range of data type" warning
John W. Linville [Mon, 15 Sep 2008 21:25:54 +0000 (17:25 -0400)] 
libertas: correct "limited range of data type" warning

  CC [M]  drivers/net/wireless/libertas/wext.o
drivers/net/wireless/libertas/wext.c: In function ‘lbs_get_rts’:
drivers/net/wireless/libertas/wext.c:307: warning: comparison is always
false due to limited range of data type

Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoorinoco: Fix compile warnings
David Kilroy [Fri, 12 Sep 2008 21:28:18 +0000 (22:28 +0100)] 
orinoco: Fix compile warnings

Use min_t to avoid warnings when the typesafe version is used.

Explicitly cast u64s to unsigned long long when being passed to printk.

Signed-off-by: David Kilroy <kilroyd@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211 : Fix mode change hard_start_xmit function
Abhijeet Kolekar [Fri, 12 Sep 2008 20:44:08 +0000 (13:44 -0700)] 
mac80211 : Fix mode change hard_start_xmit function

When monitor mode is changed to BSS or IBSS, data trasnfer can not happen
because proper transmit function is not assigend for BSS ,IBSS mode.
This patch fixes this problem by assigning the ieee80211_subif_start_xmit
to device's hard_start_xmit function.

Signed-off-by: Abhijeet Kolekar <abhijeet.kolekar@intel.com>
Acked-by: Zhu Yi <yi.zhu@intel.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: remove debug frame dumping
Johannes Berg [Fri, 12 Sep 2008 13:22:53 +0000 (15:22 +0200)] 
mac80211: remove debug frame dumping

You can just pull up a monitor interface to get much more
detailed information, or, when debugging a driver, insert
dump code into the driver (which usually you will have to
do anyway to dump the driver-specific information). Hence
this option is useless.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: remove beacon counters
Johannes Berg [Fri, 12 Sep 2008 09:05:39 +0000 (11:05 +0200)] 
mac80211: remove beacon counters

The beacon counters mac80211 keeps are only used for debugfs,
unfortunately, they are incorrect for many hardware designs,
namely any design that has a beacon template. Hence, remove the
counters so we don't create the impression they are usable.

This also allows removing the beacon MESH #ifdef again.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: clean up kdoc
Johannes Berg [Fri, 12 Sep 2008 08:18:44 +0000 (10:18 +0200)] 
mac80211: clean up kdoc

A few errors sneaked in over time, some functions no longer exist,
for some alternatives exist. This changes the docbook template to
include the right things.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: fix sta_info kernel-doc warning
Johannes Berg [Fri, 12 Sep 2008 07:53:27 +0000 (09:53 +0200)] 
mac80211: fix sta_info kernel-doc warning

Sorry, forgot to run kernel-doc and just got the output from the nightly
run by email, this fixes a warning which I introduced when doing the
first RC API cleanups.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211 hwsim: make radio list dynamic
Johannes Berg [Thu, 11 Sep 2008 22:39:22 +0000 (00:39 +0200)] 
mac80211 hwsim: make radio list dynamic

This paves the way for dynamic radio additions while the module
is loaded. Also restrict the number of radios to 100 because
creating that many already takes forever.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: fix virtual interfaces vs. injection
Johannes Berg [Fri, 12 Sep 2008 20:52:47 +0000 (22:52 +0200)] 
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>
16 years agolibertas: Reduce the WPA key installation time.
Javier Cardona [Thu, 11 Sep 2008 22:32:50 +0000 (15:32 -0700)] 
libertas: Reduce the WPA key installation time.

WPA requires that the PTK is installed immediately after the 4-way handshake
in order to properly decrypt the subsequent incoming EAPOL-GTK frame.  If the
PTK is not enabled by the time the EAPOL-GTK frame arrives, the frame is
dropped and the supplicant does not receive the group key.

This will happen with fast Access Points that send the EAPOL-GTK frame before
the suplicant has successfully installed and enabled the PTK.  To mitigate
this situation, this patch simplifies and accelerates the SIOCSIWENCODEEXT
execution.

This patch resolves OLPC ticket 7825 (http://dev.laptop.org/ticket/7825)

Signed-off-by: Javier Cardona <javier@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agorfkill: remove transmitter blocking on suspend
Henrique de Moraes Holschuh [Tue, 26 Aug 2008 14:58:01 +0000 (11:58 -0300)] 
rfkill: remove transmitter blocking on suspend

Currently, rfkill would stand in the way of properly supporting wireless
devices that are capable of waking the system up from sleep or hibernation
when they receive a special wireless message.  It would also get in the way
of mesh devices that need to remain operational even during platform
suspend.

To avoid that, stop trying to block the transmitters on the rfkill class
suspend handler.

Drivers that need rfkill's older behaviour will have to implement it by
themselves in their own suspend handling.

Do note that rfkill *will* attempt to restore the transmitter state on
resume in any situation.  This happens after the driver's resume method is
called by the suspend core (class devices resume after the devices they are
attached to have been resumed).

The following drivers need to check if they need to explicitly block
their transmitters in their own suspend handlers (maintainers Cc'd):
arch/arm/mach-pxa/tosa-bt.c
drivers/net/usb/hso.c
drivers/net/wireless/rt2x00/* (USB might need it?)
drivers/net/wireless/b43/ (SSB over USB might need it?)
drivers/misc/hp-wmi.c
eeepc-laptop w/rfkill support (not in mainline yet)
Compal laptop w/rfkill support (not in mainline yet)
toshiba-acpi w/rfkill support (not in mainline yet)

Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Cc: Ivo van Doorn <IvDoorn@gmail.com>
Cc: Matthew Garrett <mjg@redhat.com>
Cc: Andrew Bird <ajb@spheresystems.co.uk>
Cc: Greg Kroah-Hartman <gregkh@suse.de>
Cc: Cezary Jackiewicz <cezary.jackiewicz@gmail.com>
Cc: Philip Langdale <philipl@overt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agob43: fix QoS parameters initialization
Lorenzo Nava [Thu, 11 Sep 2008 13:06:24 +0000 (15:06 +0200)] 
b43: fix QoS parameters initialization

This fixes the initialization of QoS parameters.

Reported-by: Lorenzo Nava, Francesco Gringoli
Signed-off-by: Francesco Gringoli <francesco.gringoli@ing.unibs.it>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwl3945: add MODULE_FIRMWARE for 3945 HW
Zhu Yi [Thu, 11 Sep 2008 03:45:22 +0000 (11:45 +0800)] 
iwl3945: add MODULE_FIRMWARE for 3945 HW

This patch adds MODULE_FIRMWARE statement for 3945 HW.

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>