OSDN Git Service
Luis Carlos Cobo [Thu, 2 Aug 2007 17:16:02 +0000 (13:16 -0400)]
[PATCH] libertas: keep mesh autostart enabled while asleep
After loading the firmware, mesh autostart will be disabled. After that, the
user will still be able to enable or disable it at will. On suspend, it will be
always activated and later on resume it will go back to the state it had before
going to sleep.
Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Luis Carlos Cobo [Thu, 2 Aug 2007 17:15:40 +0000 (13:15 -0400)]
[PATCH] libertas: revert CAPINFO_MASK to its original value
CAPINFO_MASK changed on commits
981f187b and
a091095b. Reverting to the original
value. Also move CAPINFO_MASK into the sole user, join.c. CAPINFO_MASK
should be in host CPU byte order; capability is converted to device
byte order elsewhere.
This fixes OLPC ticket #2161
Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Dan Williams [Thu, 2 Aug 2007 17:14:56 +0000 (13:14 -0400)]
[PATCH] libertas: push mesh beacon bit to userspace in scan results
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Dan Williams [Thu, 2 Aug 2007 17:14:29 +0000 (13:14 -0400)]
[PATCH] libertas: send association events on adhoc reassociation
Send association event to userspace when reassociating to the same
ad-hoc network, because it's still an association.
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 17:14:07 +0000 (13:14 -0400)]
[PATCH] libertas: fix two debug statements in cmdresp.c
Purely cosmetic: this moves an lbs_deb_enter() to the proper place
and changes an erraneous lbs_deb_enter_args() into lbs_deb_leave_args()
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 17:13:00 +0000 (13:13 -0400)]
[PATCH] libertas: remove bss_descriptor->timestamp
Noone used this variable.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 17:12:45 +0000 (13:12 -0400)]
[PATCH] libertas: remove bss_descriptior->networktsf
This value was parsed out, but then nowhere used ... except in
some debugfs output. I can't imagine anyone wanting to use this
value for anything real (as no other driver exports it), so
bye-bye.
Along this, made the columns of
/sys/kernel/debug/libertas_wireless/*/getscantable align again.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 17:12:27 +0000 (13:12 -0400)]
[PATCH] libertas: remove adapter->scantype
scantype was initialized with CMD_SCAN_TYPE_ACTIVE, but there is no code
that would ever change it, so we can use that variable directly.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 17:12:12 +0000 (13:12 -0400)]
[PATCH] libertas: remove adapter->scanmode
scanmode was initialized with CMD_BSS_TYPE_ANY, but there is no code
that ever can store another value there, so it can go away.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 17:11:38 +0000 (13:11 -0400)]
[PATCH] libertas: remove adapter->beaconperiod
beaconperiod was initialized with MRVDRV_BEACON_INTERVAL, but there is
no code that would ever change it's value. We can use the define directly.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 17:11:19 +0000 (13:11 -0400)]
[PATCH] libertas: remove adapter->adhoc_grate_enabled
The variable was initialized with 0 (false). There is no code that would
ever change it, so we can use the false-patch directly.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 17:10:59 +0000 (13:10 -0400)]
[PATCH] libertas: remove adapter->listeninterval
listeninterval was initialized with MRVDRV_DEFAULT_LISTEN_INTERVAL, but
there exists that would ever change it. So we can use this define directly.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 17:10:41 +0000 (13:10 -0400)]
[PATCH] libertas: remove adapter->regiontableindex
The value was computed, but then never used.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 17:10:05 +0000 (13:10 -0400)]
[PATCH] libertas: remove adapter->atimwindow
This varaible was initialized with 0 but there is no code that would ever
change it's value. So it can go away.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 17:09:49 +0000 (13:09 -0400)]
[PATCH] libertas: remove adapter->multipledtim
multipledtim was initialized with MRVDRV_DEFAULT_MULTIPLE_DTIM and then
kept at that value, so we could use that define directly.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 17:09:34 +0000 (13:09 -0400)]
[PATCH] libertas: remove adapter->locallisteninterval
locallisteninterval was initialized with 0, but there is no code that
changes it, rendering it rather useless.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 17:09:15 +0000 (13:09 -0400)]
[PATCH] libertas: remove adapter->nullpktinterval
No code ever initialized this variable, so it was 0 because of kzalloc().
But no other code changes it, making it rather useless.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 17:08:24 +0000 (13:08 -0400)]
[PATCH] libertas: remove adapter->{data,bcn}_avg_factor
Those two variables were initialized with some default values, but there
is no code that would ever change them. So we could use as well the defaults
directly.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 17:07:56 +0000 (13:07 -0400)]
[PATCH] libertas: remove adapter->rxpd_rate
No code uses the contents of this variable, so it can go.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 17:07:15 +0000 (13:07 -0400)]
[PATCH] libertas: remove adapter->txrate
The value of txrate was only set by a CMD_802_11_TX_RATE_QUERY command,
but there was no code in the driver that ever issued this command.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Dan Williams [Thu, 2 Aug 2007 17:06:54 +0000 (13:06 -0400)]
[PATCH] libertas: fix WEXT quality reporting
Found by Ronak and others at Marvell.
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 17:06:11 +0000 (13:06 -0400)]
[PATCH] libertas: remove adapter->pkttxctrl
The variable was initialized to 0 and nowhere else changed, so basically
the per-packet TX control wasn't used.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 17:05:53 +0000 (13:05 -0400)]
[PATCH] libertas: remove adapter->scanprobes
The variable was initialized to 0 and nowhere else to anything
different.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 17:05:32 +0000 (13:05 -0400)]
[PATCH] libertas: remove adapter->prescan
The value 1 was assigned to it and there was nowhere any code
that would have changed that to 0.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 17:05:08 +0000 (13:05 -0400)]
[PATCH] libertas: remove adapter->{rx,tx}antenna
There was nowhere any code that used the values of those
variables.
This patch also removes two static functions that are now unused.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 17:04:28 +0000 (13:04 -0400)]
[PATCH] libertas: remove unused adapter->prev_XXXX variables
There were just used in some debug output, but nowhere else.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 4 Oct 2007 00:25:41 +0000 (17:25 -0700)]
[PATCH] add support for Marvell 8385 CF cards
This patch adds support for Marvell based 8385 compact flash cards.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Luis Carlos Cobo [Thu, 2 Aug 2007 15:55:22 +0000 (11:55 -0400)]
[PATCH] libertas: Avoid MESH_AUTOSTARTED spam on console
Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 15:54:31 +0000 (11:54 -0400)]
[PATCH] libertas: use LBS_DEB_HOST for host-to-card communications
... and LBS_DEB_CMD for command execution. Also tidies misc
comments to give a consistent output.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 15:54:10 +0000 (11:54 -0400)]
[PATCH] libertas: use LBS_DEB_HOST for host-to-card communications
... and LBS_DEB_CMD for command execution. Also tidies misc
comments to give a consistent output.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 15:53:36 +0000 (11:53 -0400)]
[PATCH] libertas: remove a hundred CMD_RET_xxx definitions
types.h contains the same amount of CMD_RET_xxx and CMD_xxx definitions.
They contains the same info: the firmware command opcode and, when the
firmware sends back a result, the command opcode ORed with 0x8000.
Having the same data twice in the source code is redundant and can lead to
errors (e.g. if you update or delete only one instance). This patch removed
all CMD_RET_xxx definitions and introduces a simple CMD_RET() macro.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 15:53:06 +0000 (11:53 -0400)]
[PATCH] libertas: make the hex dumper nicer
Currently, when you define LBS_DEB_HEX, you get every hex dump in the
whole driver, e.g. for LBS_DEB_CMD, LBS_DEB_RX, LBS_DEB_TX etc. This
patch makes sure that you only get the hexdump that you're interested in.
Renamed lbs_dbg_hex() into lbs_deb_hex(), like the other lbs_deb_XXX()
macros.
Made lbs_deb_hex() issue a line feed (and a new prompt) after 16 bytes.
As lbs_deb_hex() now prints the ":" after the prompt by itself, removed
the misc colons in the various *.c files.
lbs_deb_XXX() now print the debug category as well.
As lbs_deb_XXX() --- and especially lbs_deb_11d() --- now print the
category, I removed various "11D:" prefixes in 11d.c as well.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Luis Carlos Cobo [Thu, 2 Aug 2007 15:52:29 +0000 (11:52 -0400)]
[PATCH] Support for mesh autostart deactivation through sysfs
echo 0 > /sys/class/net/mshX/autostart_enabled
This is supported from Marvell firmware version 5.110.16.p0 (to be released).
Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 15:51:18 +0000 (11:51 -0400)]
[PATCH] libertas: remove debugmode
There is nowhere any place that set's this variable.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 15:50:35 +0000 (11:50 -0400)]
[PATCH] libertas: tune hardware info output
This changes the output of hardware related info from:
libertas: GET_HW_SPEC: FWReleaseVersion- 5.0.11.p0
libertas: GET_HW_SPEC: Permanent addr- 0:16:41:72:f6:a8
libertas: GET_HW_SPEC: hwifversion=0x2 version=0x213
to:
libertas: GET_HW_SPEC: FWReleaseVersion: 5.0.11.p0
libertas: GET_HW_SPEC: Permanent addr: 00:16:41:72:f6:a8
libertas: GET_HW_SPEC: hwifversion: 0x2, version: 0x213
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 15:50:12 +0000 (11:50 -0400)]
[PATCH] libertas: access mesh_dev more carefully
The CF/SDIO firmware doesn't support Mesh, so priv->mesh_dev is
NULL there. Protect all accesses.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 15:49:45 +0000 (11:49 -0400)]
[PATCH] libertas: uppercase some #defines
Usually constants defined by #define are in ALL_UPPERCASE. This patch
fixes this.
I also shuffled the bits around so that they match the bit positions in the
host-interrupt-state register of the CF/SDIO card :-)
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 15:49:06 +0000 (11:49 -0400)]
[PATCH] libertas: make more functions static & remove unused functions
Some functions where declared in header files, but used only once. They are
now static functions.
After doing this, I found out that some functions weren't used at all. I
removed this dead code.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 15:45:30 +0000 (11:45 -0400)]
[PATCH] libertas: fix one more sparse warning
adhoc_rates_b is only used locally, so make it static
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Holger Schurig [Thu, 2 Aug 2007 15:45:12 +0000 (11:45 -0400)]
[PATCH] libertas: remove fw.c
Firmware download is quite different for different hardware. The SDIO and CF
cards have two flat files that need to be downloaded, whereas the USB driver
needs only one file, but with an internal structure.
The code that handles this (USB only) structured file is currently in fw.c.
This patch moves this code into if_usb.c. The remaining functions in fw.c
have not much to do with firmware, they are various card- and network-stack
initialisation functions. I've moved them into main.c.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Dan Williams [Thu, 2 Aug 2007 15:40:45 +0000 (11:40 -0400)]
[PATCH] libertas: simplify and clean up data rate handling
Remove unused/duplicated fields and consolidate static data rate arrays,
for example the libertas_supported_rates[] and datarates[] arrays in
the bss_descriptor structure, and the libertas_supported_rates field
in the wlan_adapter structure.
Introduce libertas_fw_index_to_data_rate and libertas_data_rate_to_fw_index
functions and use them everywhere firmware requires a rate index rather
than a rate array.
The firmware requires the 4 basic rates to have the MSB set, but most
other stuff doesn't, like WEXT and mesh ioctls. Therefore, only set the MSB
on basic rates when pushing rate arrays to firmware instead of doing a ton
of (rate & 0x7f) everywhere.
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Dan Williams [Thu, 2 Aug 2007 15:39:19 +0000 (11:39 -0400)]
[PATCH] libertas: wlan_ -> libertas_ function prefix renames for main.c
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Dan Williams [Thu, 2 Aug 2007 15:36:22 +0000 (11:36 -0400)]
[PATCH] libertas: move generic firmware reset command to common code
It's not USB specific, so move it out of the USB interface code.
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Dan Williams [Thu, 2 Aug 2007 15:35:46 +0000 (11:35 -0400)]
[PATCH] libertas: fix more mixed-case abuse
Mistakently introduced by a previous patch to upper-case all command
constants.
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Dan Williams [Thu, 2 Aug 2007 15:34:47 +0000 (11:34 -0400)]
[PATCH] libertas: bump version to 322.p1
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Dan Williams [Thu, 2 Aug 2007 15:34:24 +0000 (11:34 -0400)]
[PATCH] libertas: new mesh control knobs
Support for new mesh control knobs on firmware 5.220.11.p4:
Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Dan Williams [Thu, 2 Aug 2007 15:32:25 +0000 (11:32 -0400)]
[PATCH] libertas: remove thread.h and make kthread usage clearer
Remove the thread.h abstractions and opencode kthread stuff
to make it clearer.
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Dan Williams [Thu, 2 Aug 2007 15:31:49 +0000 (11:31 -0400)]
[PATCH] libertas: fix debug build breakage due to field rename
Missed when fixing mixed-case structure field names.
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Dan Williams [Thu, 2 Aug 2007 15:31:18 +0000 (11:31 -0400)]
[PATCH] libertas: re-uppercase command defines and other constants
For readability.
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Dan Williams [Thu, 2 Aug 2007 15:18:40 +0000 (11:18 -0400)]
[PATCH] libertas: fix mixed-case abuse in cmd_ds_802_11_ad_hoc_start
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Dan Williams [Thu, 2 Aug 2007 15:18:23 +0000 (11:18 -0400)]
[PATCH] libertas: fix mixed-case abuse in cmd_ds_802_11_ad_hoc_result
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Dan Williams [Thu, 2 Aug 2007 15:16:07 +0000 (11:16 -0400)]
[PATCH] libertas: fix mixed-case abuse in cmd_ds_802_11_scan
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Dan Williams [Thu, 2 Aug 2007 15:14:49 +0000 (11:14 -0400)]
[PATCH] libertas: remove if_bootcmd.c
Move the only function in it to if_usb.c, which was its
only user anyway.
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Luis Carlos Cobo [Thu, 2 Aug 2007 14:51:27 +0000 (10:51 -0400)]
[PATCH] libertas: specific mesh scan for mshX interface
With this patch, scanning with mshX interface will only return mesh networks. To
differentiate them, a specific mesh IE in beacons/probe responses is used. This
IE has been introduced in firmware release 5.110.14. Note:
Even though there can be at most a single mesh per channel, this scan might
return several networks in the same channel.
If all nodes in a mesh network are associated to an AP, they won't produce
beacons/probe responses, thus the network will not be listed. This will be fixed
in future firmware releases.
Scan on ethX interface is not filtered, so it will list both mesh and non-mesh
networks.
Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Dan Williams [Thu, 2 Aug 2007 14:48:02 +0000 (10:48 -0400)]
[PATCH] libertas: clean up 802.11 IE post-scan handling
Remove struct IE_WPA and just use direct checking of the IE
bytes like ipw. Remove WLAN_802_11_VARIABLE_IEs because
it's unused.
Kill ieeetypes_elementid enum and just use MFIE_* from
ieee80211.h. Also use struct ieee80211_info_element for
scan buffer processing to simplify pointer usage.
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Dan Williams [Thu, 2 Aug 2007 14:47:17 +0000 (10:47 -0400)]
[PATCH] libertas: clean up indentation in libertas_association_worker
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Dan Williams [Thu, 2 Aug 2007 14:45:55 +0000 (10:45 -0400)]
[PATCH] libertas: rename WLAN_802_11_KEY to enc_key and clean up usage
It doesn't touch hardware and therefore doesn't need endian notations
either.
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Dan Williams [Thu, 2 Aug 2007 14:43:44 +0000 (10:43 -0400)]
[PATCH] libertas: kill ieeetypes_capinfo bitfield, use ieee80211.h types
Use standard BSS capability field constants from ieee80211.h.
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Yoann Padioleau [Fri, 3 Aug 2007 17:37:16 +0000 (19:37 +0200)]
[PATCH] dev->priv to netdev_priv(dev), for drivers/net/wireless
Replacing accesses to dev->priv to netdev_priv(dev). The replacment
is safe when netdev_priv is used to access a private structure that is
right next to the net_device structure in memory. Cf
http://groups.google.com/group/comp.os.linux.development.system/browse_thread/thread/
de19321bcd94dbb8/
0d74a4adcd6177bd
This is the case when the net_device structure was allocated with
a call to alloc_netdev or one of its derivative.
Signed-off-by: Yoann Padioleau <padator@wanadoo.fr>
Cc: mcgrof@gmail.com
Cc: linux-wireless@vger.kernel.org
Cc: akpm@linux-foundation.org
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Mariusz Kozlowski [Tue, 31 Jul 2007 21:34:50 +0000 (23:34 +0200)]
[PATCH] drivers/net/wireless/prism54/oid_mgt.c: kmalloc + memset conversion to kzalloc
Signed-off-by: Mariusz Kozlowski <m.kozlowski@tuxland.pl>
Acked-by: Luis R. Rodriguez <mcgrof@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Matthias Kaehlcke [Mon, 30 Jul 2007 05:40:04 +0000 (07:40 +0200)]
[PATCH] Use mutex instead of semaphore in the Host AP driver
The Host AP driver uses a semaphore as mutex. Use the mutex API
instead of the (binary) semaphore.
Signed-off-by: Matthias Kaehlcke <matthias.kaehlcke@gmail.com>
Acked-by: Satyam Sharma <satyam@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Bill Nottingham [Fri, 27 Jul 2007 23:43:17 +0000 (19:43 -0400)]
[PATCH] remove gratuitous space in airo module description
Currently the modinfo looks like:
description: Support for Cisco/Aironet 802.11 wireless ethernet cards. Direct support for ISA/PCI/MPI cards and support for PCMCIA when used with airo_cs.
Arguably, it should be cut at the end of the first sentence.
This at least makes it somewhat more legible.
Signed-off-by: Bill Nottingham <notting@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Faidon Liambotis [Sun, 22 Jul 2007 13:16:59 +0000 (16:16 +0300)]
[PATCH] Kconfig: remove references of pcmcia-cs
pcmcia-cs/cardmgr is deprecated and mentioning it in the help text is
misleading.
Signed-off-by: Faidon Liambotis <paravoid@debian.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Faidon Liambotis [Sun, 22 Jul 2007 13:16:36 +0000 (16:16 +0300)]
[PATCH] Kconfig: order options
Reorder the Atmel options so that the menu appears saner.
Before:
< > Hermes chipset 802.11b support (Orinoco/Prism2/Symbol)
<*> Atmel at76c50x chipset 802.11b support
< > Atmel at76c506 PCI cards (NEW)
< > Cisco/Aironet 34X/35X/4500/4800 PCMCIA cards
< > Atmel at76c502/at76c504 PCMCIA cards (NEW)
After:
< > Hermes chipset 802.11b support (Orinoco/Prism2/Symbol)
<*> Atmel at76c50x chipset 802.11b support
< > Atmel at76c506 PCI cards (NEW)
< > Atmel at76c502/at76c504 PCMCIA cards (NEW)
< > Cisco/Aironet 34X/35X/4500/4800 PCMCIA cards
Signed-off-by: Faidon Liambotis <paravoid@debian.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Ulrich Kunitz [Sat, 21 Jul 2007 21:42:13 +0000 (22:42 +0100)]
[PATCH] zd1211rw: monitor all packets
While in monitor mode the zd1211rw received only a limited
set of packets. This patch forwards now all packets the device
receives. Notify that while monitoring no FCS checks are done; so
strange packets might appear in the network sniffer of your
choice.
ATTENTION: Support for multiple interfaces on a single ZD1211
device is currently broken. So this code works only on the first
interface.
Here is an example to put the device in monitor mode.
iwconfig wlan0 mode monitor
ifconfig wlan0 up
iwconfig wlan0 channel 10
[dsd@gentoo.org: backport to mainline]
Signed-off-by: Ulrich Kunitz <kune@deine-taler.de>
Signed-off-by: Daniel Drake <dsd@gentoo.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Michael Wu [Fri, 31 Aug 2007 05:15:25 +0000 (01:15 -0400)]
[PATCH] Add adm8211 802.11b wireless driver
This patch adds a mac80211 wireless driver for ADMtek ADM8211 based
wireless cards.
Signed-off-by: Michael Wu <flamingice@sourmilk.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Johannes Berg [Mon, 10 Sep 2007 12:15:25 +0000 (14:15 +0200)]
[MAC80211]: remove/change some comments about Michael MIC hardware offload
There are a few TODO comments in the mac80211 sources regarding
hardware offload for Michael MIC verification. Those items are,
however, better handled in the driver instead of the stack, if
any device requires such hand-holding.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Tomas Winkler [Sun, 2 Sep 2007 19:58:21 +0000 (22:58 +0300)]
[MAC80211]: PS mode fix
tx.mode must be set also for buffered frames. It is used in the tx hanlders
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Stephen Hemminger [Fri, 24 Aug 2007 18:29:34 +0000 (11:29 -0700)]
[MAC80211]: use internal network device stats
Stats are now available for device usage inside network_device
Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
warmcat [Fri, 14 Sep 2007 15:10:25 +0000 (11:10 -0400)]
[MAC80211]: get STA after tx radiotap snipped
Johannes Berg noticed that in __ieee80211_tx_prepare() we try to get the
STA from addr1 of the ieee80211 header when the radiotap header is actually
still at the front of the packet. This patch defers doing that until the
radiotap header is gone.
Signed-off-by: Andy Green <andy@warmcat.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Volker Braun [Fri, 14 Sep 2007 15:10:25 +0000 (11:10 -0400)]
[MAC80211]: ignore key index on pairwise key (WEP only)
Work-around for broken APs that use a non-zero key index for WEP
pairwise keys. With this patch, WEP encryption only is exempt from
providing a zero key index.
Signed-off-by: Volker Braun <volker.braun@physik.hu-berlin.de>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Acked-by: Michael Wu <flamingice@sourmilk.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Johannes Berg [Fri, 14 Sep 2007 15:10:25 +0000 (11:10 -0400)]
[MAC80211]: remove TKIP mixing for hw accel again
The TKIP mixing code was added for the benefit of Intel's ipw3945
chipset but that code ended up not using it. We have previously
identified many problems with this code and it crystallized that
library functions for mixing are likely to handle this in much
more generality and might allow b43 to take advantage of hardware
acceleration for TKIP.
Due to these reasons, remove the TKIP mixing for hardware
accelerated crypto operations.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Acked-by: Michael Buesch <mb@bu3sch.de>
Acked-by: Michael Wu <flamingice@sourmilk.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Johannes Berg [Fri, 14 Sep 2007 15:10:25 +0000 (11:10 -0400)]
[MAC80211]: remove HW_KEY_IDX_INVALID
This patch makes the mac80211/driver interface rely only on the
IEEE80211_TXCTL_DO_NOT_ENCRYPT flag to signal to the driver whether
a frame should be encrypted or not, since mac80211 internally no
longer relies on HW_KEY_IDX_INVALID either this removes it, changes
the key index to be a u8 in all places and makes the full range of
the value available to drivers.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Acked-by: Michael Wu <flamingice@sourmilk.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Johannes Berg [Fri, 14 Sep 2007 15:10:25 +0000 (11:10 -0400)]
[MAC80211]: some more documentation
This patch formats some documentation in mac80211.h into kerneldoc
and also adds some more explanations for hardware crypto.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Acked-by: Michael Wu <flamingice@sourmilk.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Johannes Berg [Fri, 14 Sep 2007 15:10:25 +0000 (11:10 -0400)]
[MAC80211]: remove set_key_idx callback
No existing drivers use this callback, hence there's no telling
how it might be used. In fact, it is unlikely to be of much use
as-is because the default key index isn't something that the
driver can do much with without knowing which interface it was
for etc. And if it needs the key index for the transmitted frame,
it can get it by keeping a reference to the key_conf structure
and looking it up by hw_key_idx.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Acked-by: Michael Wu <flamingice@sourmilk.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Johannes Berg [Fri, 14 Sep 2007 15:10:25 +0000 (11:10 -0400)]
[MAC80211]: rework hardware crypto flags
This patch reworks the various hardware crypto related
flags to make them more local, i.e. put them with each
key or each packet instead of into the hw struct.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Acked-by: Michael Wu <flamingice@sourmilk.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Johannes Berg [Fri, 14 Sep 2007 15:10:25 +0000 (11:10 -0400)]
[MAC80211]: remove turbo modes
This patch removes all mention of the atheros turbo modes that
can't possibly work properly anyway since in some places we don't
check for them when we should.
I have no idea what the iwlwifi drivers were doing with these but
it can't possibly have been correct.
Cc: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Acked-by: Michael Wu <flamingice@sourmilk.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Johannes Berg [Fri, 14 Sep 2007 15:10:24 +0000 (11:10 -0400)]
[MAC80211]: fix race conditions with keys
During receive processing, we select the key long before using it and
because there's no locking it is possible that we kfree() the key
after having selected it but before using it for crypto operations.
Obviously, this is bad.
Secondly, during transmit processing, there are two possible races: We
have a similar race between select_key() and using it for encryption,
but we also have a race here between select_key() and hardware
encryption (both when a key is removed.)
This patch solves these issues by using RCU: when a key is to be freed,
we first remove the pointer from the appropriate places (sdata->keys,
sdata->default_key, sta->key) using rcu_assign_pointer() and then
synchronize_rcu(). Then, we can safely kfree() the key and remove it
from the hardware. There's a window here where the hardware may still
be using it for decryption, but we can't work around that without having
two hardware callbacks, one to disable the key for RX and one to disable
it for TX; but the worst thing that will happen is that we receive a
packet decrypted that we don't find a key for any more and then drop it.
When we add a key, we first need to upload it to the hardware and then,
using rcu_assign_pointer() again, link it into our structures.
In the code using keys (TX/RX paths) we use rcu_dereference() to get the
key and enclose the whole tx/rx section in a rcu_read_lock() ...
rcu_read_unlock() block. Because we've uploaded the key to hardware
before linking it into internal structures, we can guarantee that it is
valid once get to into tx().
One possible race condition remains, however: when we have hardware
acceleration enabled and the driver shuts down the queues, we end up
queueing the frame. If now somebody removes the key, the key will be
removed from hwaccel and then then driver will be asked to encrypt the
frame with a key index that has been removed. Hence, drivers will need
to be aware that the hw_key_index they are passed might not be under
all circumstances. Most drivers will, however, simply ignore that
condition and encrypt the frame with the selected key anyway, this
only results in a frame being encrypted with a wrong key or dropped
(rightfully) because the key was not valid. There isn't much we can
do about it unless we want to walk the pending frame queue every time
a key is removed and remove all frames that used it.
This race condition, however, will most likely be solved once we add
multiqueue support to mac80211 because then frames will be queued
further up the stack instead of after being processed.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Acked-by: Michael Wu <flamingice@sourmilk.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Johannes Berg [Fri, 14 Sep 2007 15:10:24 +0000 (11:10 -0400)]
[MAC80211]: don't send invalid QoS frames
Kalle Valo noticed that QoS frames are sent with an invalid QoS control
field; this is because we increase the header length but neither
initialise the space nor actually have enough space in the header
structure for the QoS control field.
This patch fixes it by treating the QoS field specially and appending it
explicitly, initialising it to zero.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Acked-by: Michael Wu <flamingice@sourmilk.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Johannes Berg [Fri, 14 Sep 2007 15:10:24 +0000 (11:10 -0400)]
[MAC80211]: remove spy wext ioctls
mac80211 never calls wireless_spy_update so these aren't
useful.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Acked-by: Michael Wu <flamingice@sourmilk.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Eric Dumazet [Sat, 15 Sep 2007 17:55:54 +0000 (10:55 -0700)]
[IPV4]: Convert rt_check_expire() from softirq processing to workqueue.
On loaded/big hosts, rt_check_expire() if of litle use, because it
generally breaks out of its main loop because of a jiffies change.
It can take a long time (read : timer invocations) to actually
scan the whole hash table, freeing unused entries.
Converting it to use a workqueue instead of softirq is a nice
move because we can allow rt_check_expire() to do the scan
it is supposed to do, without hogging the CPU.
This has an impact on the average number of entries in cache,
reducing ram usage. Cache is more responsive to parameter
changes (/proc/sys/net/ipv4/route/gc_timeout and
/proc/sys/net/ipv4/route/gc_interval)
Note: Maybe the default value of gc_interval (60 seconds)
is too high, since this means we actually need 5 (300/60)
invocations to scan the whole table.
Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Ivo van Doorn [Thu, 13 Sep 2007 07:22:55 +0000 (09:22 +0200)]
[RFKILL]: Add rfkill documentation
Add a documentation file which contains
a short description about rfkill with some
notes about drivers and the userspace interface.
Changes since v1 and v2:
- Spellchecking
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Acked-by: Dmitry Torokhov <dtor@mail.ru>
Acked-by: Randy Dunlap <randy.dunlap@oracle.com>
Ivo van Doorn [Thu, 13 Sep 2007 07:21:31 +0000 (09:21 +0200)]
[RFKILL]: Add support for ultrawideband
This patch will add support for UWB keys to rfkill,
support for this has been requested by Inaky.
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Ivo van Doorn [Thu, 13 Sep 2007 07:20:42 +0000 (09:20 +0200)]
[RFKILL]: Remove IRDA
As Dmitry pointed out earlier, rfkill-input.c
doesn't support irda because there are no users
and we shouldn't add unrequired KEY_ defines.
However, RFKILL_TYPE_IRDA was defined in the
rfkill.h header file and would confuse people
about whether it is implemented or not.
This patch removes IRDA support completely,
so it can be added whenever a driver wants the
feature.
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Eric W. Biederman [Thu, 13 Sep 2007 07:18:57 +0000 (09:18 +0200)]
[NET]: Fix race when opening a proc file while a network namespace is exiting.
The problem: proc_net files remember which network namespace the are
against but do not remember hold a reference count (as that would pin
the network namespace). So we currently have a small window where
the reference count on a network namespace may be incremented when opening
a /proc file when it has already gone to zero.
To fix this introduce maybe_get_net and get_proc_net.
maybe_get_net increments the network namespace reference count only if it is
greater then zero, ensuring we don't increment a reference count after it
has gone to zero.
get_proc_net handles all of the magic to go from a proc inode to the network
namespace instance and call maybe_get_net on it.
PROC_NET the old accessor is removed so that we don't get confused and use
the wrong helper function.
Then I fix up the callers to use get_proc_net and handle the case case
where get_proc_net returns NULL. In that case I return -ENXIO because
effectively the network namespace has already gone away so the files
we are trying to access don't exist anymore.
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Acked-by: Paul E. McKenney <paulmck@us.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Daniel Lezcano [Thu, 13 Sep 2007 07:16:29 +0000 (09:16 +0200)]
[NETNS]: Fix allnoconfig compilation error.
When CONFIG_NET=no, init_net is unresolved because net_namespace.c
is not compiled and the include pull init_net definition.
This problem was very similar with the ipc namespace where the kernel
can be compiled with SYSV ipc out.
This patch fix that defining a macro which simply remove init_net
initialization from nsproxy namespace aggregator.
Compiled and booted on qemu-i386 with CONFIG_NET=no and CONFIG_NET=yes.
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Jesper Dangaard Brouer [Wed, 12 Sep 2007 14:36:28 +0000 (16:36 +0200)]
[NET_SCHED]: Making rate table lookups more flexible.
This is done in order to, add support to changing the rate table to
use the upper-boundry L2T (length to time) value. Currently we use the
lower-boundry, which result in under-estimating the actual bandwidth
usage.
Extend the tc_ratespec struct, with two parameters: 1) "cell_align"
that allow adjusting the alignment of the rate table. 2) "overhead"
that allow adding a packet overhead before the lookup.
Signed-off-by: Jesper Dangaard Brouer <hawk@comx.dk>
Acked-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Jesper Dangaard Brouer [Wed, 12 Sep 2007 14:35:24 +0000 (16:35 +0200)]
[NET_SCHED]: Cleanup L2T macros and handle oversized packets
Change L2T (length to time) macros, in all rate based schedulers, to
call a common function qdisc_l2t() that does the rate table lookup.
This function handles if the packet size lookup is larger than the
rate table, which often occurs with TSO enabled.
Signed-off-by: Jesper Dangaard Brouer <hawk@comx.dk>
Acked-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Adrian Bunk [Wed, 12 Sep 2007 13:18:00 +0000 (15:18 +0200)]
[SCTP] net/sctp/socket.c: make 3 variables static
This patch makes the following needlessly global variables static:
- sctp_memory_pressure
- sctp_memory_allocated
- sctp_sockets_allocated
Signed-off-by: Adrian Bunk <bunk@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Adrian Bunk [Wed, 12 Sep 2007 13:16:21 +0000 (15:16 +0200)]
[SCTP]: Make sctp_addto_param() static.
sctp_addto_param() can become static.
Signed-off-by: Adrian Bunk <bunk@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Adrian Bunk [Wed, 12 Sep 2007 13:14:45 +0000 (15:14 +0200)]
[KERNEL]: Unexport raise_softirq_irqoff
raise_softirq_irqoff no longer has any modular user.
Signed-off-by: Adrian Bunk <bunk@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Daniel Lezcano [Wed, 12 Sep 2007 12:57:09 +0000 (14:57 +0200)]
[NETNS]: Fix bad macro definition.
The macro definition is bad. When calling next_net_device with
parameter name "dev", the resulting code is:
struct net_device *dev = dev and that leads to an unexpected
behavior. Especially when llc_core is compiled in, the kernel panics
at boot time.
The patchset change macro definition with static inline functions as
they were defined before.
Signed-off-by: Benjamin Thery <benjamin.thery@bull.net>
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Daniel Lezcano [Wed, 12 Sep 2007 12:54:14 +0000 (14:54 +0200)]
[NETNS]: Fix loopback network namespace initialization.
The core patchset of the network namespace sent by
Eric Biederman does not do dynamic loopback creation.
So there is no call to alloc_netdev_mq which fills the
network namespace field of the netdevice.
This patch assign the loopback to the init network namespace.
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Daniel Lezcano [Wed, 12 Sep 2007 12:51:47 +0000 (14:51 +0200)]
[NETNS]: Fix export symbols.
Add the appropriate EXPORT_SYMBOLS for proc_net_create,
proc_net_fops_create and proc_net_remove to fix errors when
compiling allmodconfig
Signed-off-by: Mark Nelson <markn@au1.ibm.com>
Acked-by: Benjamin Thery <benjamin.thery@bull.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Thomas Graf [Wed, 12 Sep 2007 12:44:36 +0000 (14:44 +0200)]
[NETLINK]: Introduce nested and byteorder flag to netlink attribute
This change allows the generic attribute interface to be used within
the netfilter subsystem where this flag was initially introduced.
The byte-order flag is yet unused, it's intended use is to
allow automatic byte order convertions for all atomic types.
Signed-off-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller [Wed, 12 Sep 2007 12:33:25 +0000 (14:33 +0200)]
[NET]: Add a might_sleep() to dev_close().
Requested by Johannes Berg.
Signed-off-by: David S. Miller <davem@davemloft.net>
Eric Dumazet [Wed, 12 Sep 2007 12:29:01 +0000 (14:29 +0200)]
[PATCH] NET : convert IP route cache garbage collection from softirq processing to a workqueue
When the periodic IP route cache flush is done (every 600 seconds on
default configuration), some hosts suffer a lot and eventually trigger
the "soft lockup" message.
dst_run_gc() is doing a scan of a possibly huge list of dst_entries,
eventually freeing some (less than 1%) of them, while holding the
dst_lock spinlock for the whole scan.
Then it rearms a timer to redo the full thing 1/10 s later...
The slowdown can last one minute or so, depending on how active are
the tcp sessions.
This second version of the patch converts the processing from a softirq
based one to a workqueue.
Even if the list of entries in garbage_list is huge, host is still
responsive to softirqs and can make progress.
Instead of resetting gc timer to 0.1 second if one entry was freed in a
gc run, we do this if more than 10% of entries were freed.
Before patch :
Aug 16 06:21:37 SRV1 kernel: BUG: soft lockup detected on CPU#0!
Aug 16 06:21:37 SRV1 kernel:
Aug 16 06:21:37 SRV1 kernel: Call Trace:
Aug 16 06:21:37 SRV1 kernel: <IRQ> [<
ffffffff802286f0>] wake_up_process+0x10/0x20
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff80251e09>] softlockup_tick+0xe9/0x110
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff803cd380>] dst_run_gc+0x0/0x140
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff802376f3>] run_local_timers+0x13/0x20
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff802379c7>] update_process_times+0x57/0x90
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff80216034>] smp_local_timer_interrupt+0x34/0x60
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff802165cc>] smp_apic_timer_interrupt+0x5c/0x80
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff8020a816>] apic_timer_interrupt+0x66/0x70
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff803cd3d3>] dst_run_gc+0x53/0x140
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff803cd3c6>] dst_run_gc+0x46/0x140
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff80237148>] run_timer_softirq+0x148/0x1c0
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff8023340c>] __do_softirq+0x6c/0xe0
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff8020ad6c>] call_softirq+0x1c/0x30
Aug 16 06:21:37 SRV1 kernel: <EOI> [<
ffffffff8020cb34>] do_softirq+0x34/0x90
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff802331cf>] local_bh_enable_ip+0x3f/0x60
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff80422913>] _spin_unlock_bh+0x13/0x20
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff803dfde8>] rt_garbage_collect+0x1d8/0x320
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff803cd4dd>] dst_alloc+0x1d/0xa0
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff803e1433>] __ip_route_output_key+0x573/0x800
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff803c02e2>] sock_common_recvmsg+0x32/0x50
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff803e16dc>] ip_route_output_flow+0x1c/0x60
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff80400160>] tcp_v4_connect+0x150/0x610
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff803ebf07>] inet_bind_bucket_create+0x17/0x60
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff8040cd16>] inet_stream_connect+0xa6/0x2c0
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff80422981>] _spin_lock_bh+0x11/0x30
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff803c0bdf>] lock_sock_nested+0xcf/0xe0
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff80422981>] _spin_lock_bh+0x11/0x30
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff803be551>] sys_connect+0x71/0xa0
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff803eee3f>] tcp_setsockopt+0x1f/0x30
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff803c030f>] sock_common_setsockopt+0xf/0x20
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff803be4bd>] sys_setsockopt+0x9d/0xc0
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff8028881e>] sys_ioctl+0x5e/0x80
Aug 16 06:21:37 SRV1 kernel: [<
ffffffff80209c4e>] system_call+0x7e/0x83
After patch : (RT_CACHE_DEBUG set to 2 to get following traces)
dst_total: 75469 delayed: 74109 work_perf: 141 expires: 150 elapsed: 8092 us
dst_total: 78725 delayed: 73366 work_perf: 743 expires: 400 elapsed: 8542 us
dst_total: 86126 delayed: 71844 work_perf: 1522 expires: 775 elapsed: 8849 us
dst_total: 100173 delayed: 68791 work_perf: 3053 expires: 1256 elapsed: 9748 us
dst_total: 121798 delayed: 64711 work_perf: 4080 expires: 1997 elapsed: 10146 us
dst_total: 154522 delayed: 58316 work_perf: 6395 expires: 25 elapsed: 11402 us
dst_total: 154957 delayed: 58252 work_perf: 64 expires: 150 elapsed: 6148 us
dst_total: 157377 delayed: 57843 work_perf: 409 expires: 400 elapsed: 6350 us
dst_total: 163745 delayed: 56679 work_perf: 1164 expires: 775 elapsed: 7051 us
dst_total: 176577 delayed: 53965 work_perf: 2714 expires: 1389 elapsed: 8120 us
dst_total: 198993 delayed: 49627 work_perf: 4338 expires: 1997 elapsed: 8909 us
dst_total: 226638 delayed: 46865 work_perf: 2762 expires: 2748 elapsed: 7351 us
I successfully reduced the IP route cache of many hosts by a four factor
thanks to this patch. Previously, I had to disable "ip route flush cache"
to avoid crashes.
Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller [Wed, 12 Sep 2007 12:18:18 +0000 (14:18 +0200)]
[NET]: Fix missed addition of fs/proc/proc_net.c
My bad.
Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller [Wed, 12 Sep 2007 12:01:08 +0000 (14:01 +0200)]
[NET]: #if 0 out net_alloc() for now.
We will undo this once it is actually used.
Signed-off-by: David S. Miller <davem@davemloft.net>
Eric W. Biederman [Wed, 12 Sep 2007 11:58:02 +0000 (13:58 +0200)]
[NET]: Disable netfilter sockopts when not in the initial network namespace
Until we support multiple network namespaces with netfilter only allow
netfilter configuration in the initial network namespace.
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>