openwrt/staging/blogic.git
16 years agoiwlwifi: fix potential lock inversion deadlock
Reinette Chatre [Fri, 7 Mar 2008 21:47:20 +0000 (13:47 -0800)]
iwlwifi: fix potential lock inversion deadlock

This is a change to a previous patch ("iwlwifi: 3945 split tx_complete
to command and packet function") to ensure we do not have hardirq safe
locks (priv->lock in this case) depend on hardirq unsafe locks.

We only call iwl3945_tx_queue_reclaim while in a tasklet so we have to use
the irqsafe version of the function.

Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agowireless: correct warnings from using '%llx' for type 'u64'
John W. Linville [Fri, 7 Mar 2008 21:38:43 +0000 (16:38 -0500)]
wireless: correct warnings from using '%llx' for type 'u64'

drivers/net/wireless/ath5k/debug.c: In function 'read_file_tsf': drivers/net/wireless/ath5k/debug.c:203: warning: format '%016llx'
expects type 'long long unsigned int', but argument 4 has type 'u64' drivers/net/wireless/ath5k/debug.c:203: warning: format '%016llx'
expects type 'long long unsigned int', but argument 4 has type 'u64' drivers/net/wireless/ath5k/debug.c: In function 'read_file_beacon':
drivers/net/wireless/ath5k/debug.c:274: warning: format '%016llx' expects type 'long long unsigned int', but argument 4 has type 'u64'
drivers/net/wireless/ath5k/debug.c:274: warning: format '%016llx' expects type 'long long unsigned int', but argument 4 has type 'u64'

drivers/net/wireless/iwlwifi/iwl-4965.c: In function 'iwl4965_tx_status_reply_compressed_ba':
drivers/net/wireless/iwlwifi/iwl-4965.c:3907: warning: format '%llx' expects type 'long long unsigned int', but argument 4 has type 'u64'
drivers/net/wireless/iwlwifi/iwl-4965.c: In function 'iwl4965_rx_reply_compressed_ba':
drivers/net/wireless/iwlwifi/iwl-4965.c:4039: warning: format '%llx' expects type 'long long unsigned int', but argument 6 has type '__le64'
drivers/net/wireless/iwlwifi/iwl-4965.c:4046: warning: format '%llx' expects type 'long long unsigned int', but argument 5 has type 'u64'
drivers/net/wireless/iwlwifi/iwl4965-base.c: In function 'iwl4965_tx_status_reply_tx':
drivers/net/wireless/iwlwifi/iwl4965-base.c:3661: warning: format '%llx' expects type 'long long unsigned int', but argument 6 has type 'u64'

Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoath5k: work around wrong beacon rx timestamp in IBSS mode
Bruno Randolf [Wed, 5 Mar 2008 09:36:26 +0000 (18:36 +0900)]
ath5k: work around wrong beacon rx timestamp in IBSS mode

atheros hardware has a problem with the rx timestamp of some IBSS beacons when
they caused a TSF update (they have the same BSSID).

the rx timestamp is wrong especially if the beacon frames get bigger than 78
byte (at least on AR5213 and AR5414 hardware). in that case ath5k_extend_tsf()
will assume a rs_tstamp overflow and give us a timestamp too far in the past
which will cause mac80211 to merge IBSS on every beacon (which is not necessary
since the BSSID already matches). but in this case we know that the HW must
have synced to the beacons TSF and the rx timestamp must be later than that so
we can adjust mactime accordingly.

also rename the function to ath5k_check_ibss_tsf() and change comments, since
"hw merge" is better described as a TSF update.

drivers/net/wireless/ath5k/base.c:      Changes-licensed-under: 3-Clause-BSD

Signed-off-by: Bruno Randolf <bruno@thinktube.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoath5k: add notes about rx timestamp
Bruno Randolf [Wed, 5 Mar 2008 09:36:05 +0000 (18:36 +0900)]
ath5k: add notes about rx timestamp

add comments about the fact that we don't know when exactly the atheros
hardware takes the RX timestamp.

drivers/net/wireless/ath5k/base.c:      Changes-licensed-under: 3-Clause-BSD

Signed-off-by: Bruno Randolf <bruno@thinktube.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoath5k: move rx and tx status structures out of hardware descriptor
Bruno Randolf [Wed, 5 Mar 2008 09:35:45 +0000 (18:35 +0900)]
ath5k: move rx and tx status structures out of hardware descriptor

move ath5k_tx_status and ath5k_rx_status structures out of the hardware
descriptor since they are not accessed by the hardware at all. they just
contain converted information from the hardware descriptor. since they are only
used in the rx and tx tasklets there is also no use to keep them for each
descriptor.

drivers/net/wireless/ath5k/ath5k.h:     Changes-licensed-under: ISC
drivers/net/wireless/ath5k/base.c:      Changes-licensed-under: 3-Clause-BSD
drivers/net/wireless/ath5k/debug.c:     Changes-licensed-under: GPL
drivers/net/wireless/ath5k/debug.h:     Changes-licensed-under: GPL
drivers/net/wireless/ath5k/hw.c:        Changes-licensed-under: ISC

Signed-off-by: Bruno Randolf <bruno@thinktube.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoath5k: struct ath5k_desc cleanups
Bruno Randolf [Wed, 5 Mar 2008 09:35:23 +0000 (18:35 +0900)]
ath5k: struct ath5k_desc cleanups

* make struct ath5k_desc clearer by directly including unions of structures,
  which correspond to the hardware descriptors of different HW versions (5210
  and 5212). before they were casted at onto ath5k_desc at different points
  (e.g.  ds_hw[2]).

* rename some structures and variable names to make their use clearer, e.g.
  struct ath5k_hw_4w_tx_desc to ath5k_hw_4w_tx_ctl.

* substitute "old" with "5210" and "new" with "5212" (eg. rename
  ath5k_hw_proc_new_rx_status() to ath5k_hw_proc_5212_rx_status()) because old
  and new are relative and we might have a newer structure at some point.

* unify structs ath5k_hw_old_rx_status and ath5k_hw_new_rx_status into one
  ath5k_hw_rx_status, because they only differ in the flags and masks.

drivers/net/wireless/ath5k/ath5k.h:     Changes-licensed-under: ISC
drivers/net/wireless/ath5k/debug.c:     Changes-licensed-under: GPL
drivers/net/wireless/ath5k/hw.c:        Changes-licensed-under: ISC
drivers/net/wireless/ath5k/hw.h:        Changes-licensed-under: ISC

Signed-off-by: Bruno Randolf <bruno@thinktube.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: grab NIC access when disabling aggregations
Ron Rindjunsky [Fri, 7 Mar 2008 01:36:56 +0000 (17:36 -0800)]
iwlwifi: grab NIC access when disabling aggregations

This patch grabs NIC access inside iwl4965_tx_queue_agg_disable, instead of the
caller doing it.
The caller must still hold priv->lock when calling the function.

Signed-off-by: Max Stepanov <max.stepanov@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Ron Rindjunsky <ron.rindjunsky@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: 3945 split tx_complete to command and packet function
Tomas Winkler [Fri, 7 Mar 2008 01:36:55 +0000 (17:36 -0800)]
iwlwifi: 3945 split tx_complete to command and packet function

This patch
1. removes cmd completion from iwl3945_tx_queue_reclaim
and creates iwl3945_cmd_queue_reclaim.
1. removes 11n relevant elements from this function
2. removes call to ieee80211_tx_status_irqsafe
and uses ieee80211_tx_status only

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: Fix 3945 rate scaling
Tomas Winkler [Fri, 7 Mar 2008 01:36:54 +0000 (17:36 -0800)]
iwlwifi: Fix 3945 rate scaling

This patch fix 3945 rate scaling after cfg80211 rate/band changes

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: queue functions cleanup
Tomas Winkler [Fri, 7 Mar 2008 01:36:53 +0000 (17:36 -0800)]
iwlwifi: queue functions cleanup

This patch moves
1. iwl_queue_inc_wrap and int iwl_queue_dec_wrap
into  iwl-helpers.h these two functions are identical to common
for both iwl3956 and iwl4965
2. renames x2_queue_used to iwl3945_x2_queue_used
3. exports iwl3945_queue_space out of iwl3964-base.c

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: Moving EEPROM handling in iwlcore module
Assaf Krauss [Thu, 6 Mar 2008 18:40:20 +0000 (10:40 -0800)]
iwlwifi: Moving EEPROM handling in iwlcore module

This patch move EEPROM code into iwl core module

Signed-off-by: Assaf Krauss <assaf.krauss@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: add iwl-core module
Tomas Winkler [Thu, 6 Mar 2008 18:40:19 +0000 (10:40 -0800)]
iwlwifi: add iwl-core module

This patch adds iwl-core module to iwlwifi driver.
This module will contain common code and infrastracture for iwlwifi
driver

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: fix locking unbalance in 4965 rate scale
Tomas Winkler [Wed, 5 Mar 2008 19:31:00 +0000 (11:31 -0800)]
iwlwifi: fix locking unbalance in 4965 rate scale

This patch fixes locking unbalance after adding rcu locking
for sta

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: document IEEE80211_TXCTL_OFDM_HT
Ron Rindjunsky [Wed, 5 Mar 2008 15:38:59 +0000 (17:38 +0200)]
mac80211: document IEEE80211_TXCTL_OFDM_HT

This patch clarifies the use of IEEE80211_TXCTL_OFDM_HT flag.

Can by united with patch "mac80211: adding mac80211_tx_control
flags and HT flags"

Signed-off-by: Ron Rindjunsky <ron.rindjunsky@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: Cancel scanning upon association
Emmanuel Grumbach [Wed, 5 Mar 2008 02:09:32 +0000 (18:09 -0800)]
iwlwifi: Cancel scanning upon association

This patch cancels an ongoing HW scan upon association. Not doing this
resulted in instability in association.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: Take the fw file name from the iwl_cfg.
Tomas Winkler [Wed, 5 Mar 2008 02:09:31 +0000 (18:09 -0800)]
iwlwifi: Take the fw file name from the iwl_cfg.

This patch adds fw_name to iwl_cfg. This allows run time selection
of needed fw/ucode file

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: add struct iwl_cfg
Tomas Winkler [Wed, 5 Mar 2008 02:09:30 +0000 (18:09 -0800)]
iwlwifi: add struct iwl_cfg

This patch introduces struct iwl_cfg. struct iwl_cfg defines static
configuration for each device type and sku. It is passed as driver_data
to the bus probe function.
This patch also introduce new common header file iwl-core.h
which will represent core functionality of iwlwifi driver

3945ABG uses separate iwl-3945-dev.h header file for now

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: Move HBUS address to iwl-csr.h
Tomas Winkler [Wed, 5 Mar 2008 02:09:29 +0000 (18:09 -0800)]
iwlwifi: Move HBUS address to iwl-csr.h

HBUS is accessed through CSR registers
moved to iwl-csr.h

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: extract iwl-csr.h
Tomas Winkler [Wed, 5 Mar 2008 02:09:28 +0000 (18:09 -0800)]
iwlwifi: extract iwl-csr.h

This patch extract CSR Register definition into separate
header files as most of the definition are commons to both
3945 and 4965.

Definitions specific for 3945 and 4965 are properly prefixed

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: use mac80211_tx_control_flags
Ron Rindjunsky [Wed, 5 Mar 2008 02:09:27 +0000 (18:09 -0800)]
iwlwifi: use mac80211_tx_control_flags

This patch makes use of the new mac80211_tx_control_flags and tx_rate to
pass Tx data, regular and 11n, from the HW tx response into the rate scaling.

Signed-off-by: Ron Rindjunsky <ron.rindjunsky@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: adding mac80211_tx_control_flags and HT flags
Ron Rindjunsky [Wed, 5 Mar 2008 02:09:26 +0000 (18:09 -0800)]
mac80211: adding mac80211_tx_control_flags and HT flags

This patch makes enum from the defines previously dwelled inside
ieee80211_tx_control for better readability.
The patch also addes HT flags, for 802.11n drivers:
- IEEE80211_TXCTL_OFDM_HT: request low-level driver to use HT OFDM rates
- IEEE80211_TXCTL_GREEN_FIELD: use green field protection
- IEEE80211_TXCTL_DUP_DATA: duplicate data on both 20 Mhz channels
- IEEE80211_TXCTL_40_MHZ_WIDTH: send this frame in 40Mhz width
- IEEE80211_TXCTL_SHORT_GI: send this frame with short guard interval

Tx command can be a combination of any of these flags, along with
bitrate represented by ieee80211_rate. this will allow legacy drivers to
switch easily to any 11n rate representation.

Signed-off-by: Ron Rindjunsky <ron.rindjunsky@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
CC: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: 802.11n spec removes AUTO offset for FAT channel
Guy Cohen [Wed, 5 Mar 2008 02:09:25 +0000 (18:09 -0800)]
iwlwifi: 802.11n spec removes AUTO offset for FAT channel

This patch adapts to 802.11 patch and remove AUTO offset for FAT
channel

Signed-off-by: Guy Cohen <guy.cohen@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agob43: Fix failed frames status report typo
Michael Buesch [Fri, 7 Mar 2008 18:52:24 +0000 (19:52 +0100)]
b43: Fix failed frames status report typo

This fixes a typo in the status report.

Signed-off-by: Michael Buesch <mb@bu3sch.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agob43: Add TX statistics debugging counters
Michael Buesch [Fri, 7 Mar 2008 14:50:02 +0000 (15:50 +0100)]
b43: Add TX statistics debugging counters

This adds a few debugging counters, that are useful for debugging the
"card does not transmit" or "connection is unstable" kind of problems.
It's also useful for tuning an RC algorithm.

Signed-off-by: Michael Buesch <mb@bu3sch.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agob43: Rename the DMA ring pointers
Michael Buesch [Thu, 6 Mar 2008 15:32:46 +0000 (16:32 +0100)]
b43: Rename the DMA ring pointers

Rename the DMA ring pointers to have more descriptive and standard
names. Also remove the 6th unused TX ring. We can add it back later,
if we need it. The unused TX-status rx-ring is also removed, as that's
only used by legacy devices not supported by this driver anyway.

This is no functional change, except less memory allocation for
the removed rings.

Signed-off-by: Michael Buesch <mb@bu3sch.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agob43: Add QOS support
Michael Buesch [Wed, 5 Mar 2008 20:18:49 +0000 (21:18 +0100)]
b43: Add QOS support

This adds QOS support to the b43 driver.
QOS can be disabled on driver level with a module parameter for debugging purposes.

Signed-off-by: Michael Buesch <mb@bu3sch.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: don't call conf_tx under RCU lock
Johannes Berg [Wed, 5 Mar 2008 19:39:31 +0000 (20:39 +0100)]
mac80211: don't call conf_tx under RCU lock

Reinette pointed out that with the sta_info RCU-ification
the behaviour here changed and the conf_tx callback is
now invoked under RCU read lock. That is not necessary so
this patch restores the original behaviour

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Tested-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoath5k: Add 2413 to srev_names so that it shows up during module load
Nick Kossifidis [Fri, 7 Mar 2008 16:52:51 +0000 (11:52 -0500)]
ath5k: Add 2413 to srev_names so that it shows up during module load

Add 2413 to srev_names so that it shows up during module load.
This is based on the new patch 7 which did not introduce a helper
on ath5k_hw_reset().

Changes-licensed-under: 3-clause-BSD
Signed-off-by: Nick Kossifidis <mickflemm@gmail.com>
Signed-off-by: Luis R. Rodriguez <mcgrof@winlab.rutgers.edu>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoath5k: Make some changes to follow register dumps.
Nick Kossifidis [Fri, 7 Mar 2008 16:48:21 +0000 (11:48 -0500)]
ath5k: Make some changes to follow register dumps.

Make some changes which mimic what we see in register dumps.
This patch does not add a helper to ath5k_hw_reset(). It
does seem clear we need a re-shuffle around ath5k_hw_reset()
though as code in there is lengthy and already hitting 80-char
limit. This can be dealt with later though.

Changes-licensed-under: ISC
Signed-off-by: Nick Kossifidis <mickflemm@gmail.com>
Signed-off-by: Luis R. Rodriguez <mcgrof@winlab.rutgers.edu>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoath5k: Fixes for PCI-E cards
Nick Kossifidis [Thu, 28 Feb 2008 21:20:52 +0000 (16:20 -0500)]
ath5k: Fixes for PCI-E cards

 * Fix nic_wakeup for PCI-E chips (don't set AR5K_RESET_CTL_PCI bit)

 * Fix dma size setting for PCI-E chips (thanx to Bob Copeland).

Changes-licensed-under: ISC
Signed-off-by: Nick Kossifidis <mickflemm@gmail.com>
Signed-off-by: Luis R. Rodriguez <mcgrof@winlab.rutgers.edu>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoath5k: Remove RF5413 from rf gain optimization functions
Nick Kossifidis [Thu, 28 Feb 2008 19:51:40 +0000 (14:51 -0500)]
ath5k: Remove RF5413 from rf gain optimization functions

 * Since RF2413 it seems that RF_BUFFER settings are different (notice
that the last part -"bank 7" or whatever- is smaller than in 5111/5112).
So until we know what's going on we assume there is no gain optimization
stuff in post-5112 chips.

Changes-licensed-under: ISC
Signed-off-by: Nick Kossifidis <mickflemm@gmail.com>
Signed-off-by: Luis R. Rodriguez <mcgrof@winlab.rutgers.edu>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoath5k: more RF2413 stuff
Nick Kossifidis [Thu, 28 Feb 2008 19:50:50 +0000 (14:50 -0500)]
ath5k: more RF2413 stuff

 * Add AR5K_RF2413 to radio check during hw_reset so it doesn't complain

 * Write ah_phy_spending value we set during attach instead of checking
each time for radio revision

 * Skip txpower setup for RF2413 because it can't transmit with it
(weird thing is that RF5413 has no problem with it).

Changes-licensed-under: ISC
Signed-off-by: Nick Kossifidis <mickflemm@gmail.com>
Signed-off-by: Luis R. Rodriguez <mcgrof@winlab.rutgers.edu>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoath5k: Identify RF2413 and deal with PHY_SPENDING
Nick Kossifidis [Thu, 28 Feb 2008 19:49:05 +0000 (14:49 -0500)]
ath5k: Identify RF2413 and deal with PHY_SPENDING

 * Attach RF2413.

 * Propertly handle different AR5K_PHY_SPENDING settings for each RF
chip by adding a field in ath5k_hw. This way we won't have to check
inside hw_reset (see next patch).

Changes-licensed-under: ISC
Signed-off-by: Nick Kossifidis <mickflemm@gmail.com>
Signed-off-by: Luis R. Rodriguez <mcgrof@winlab.rutgers.edu>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoath5k: Add RF2413 initial settings
Nick Kossifidis [Thu, 28 Feb 2008 19:43:51 +0000 (14:43 -0500)]
ath5k: Add RF2413 initial settings

* Add initial settings for RF2413

Changes-licensed-under: ISC
Signed-off-by: Nick Kossifidis <mickflemm@gmail.com>
Signed-off-by: Luis R. Rodriguez <mcgrof@winlab.rutgers.edu>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoath5k: Add RF2413 srev values
Nick Kossifidis [Thu, 28 Feb 2008 19:40:00 +0000 (14:40 -0500)]
ath5k: Add RF2413 srev values

 * Add RF2413 srev values and a new entry on ath5k_radio enum for it
  since it differs from RF5413 (it's not like 5112-2112).

Changes-licensed-under: ISC
Signed-off-by: Nick Kossifidis <mickflemm@gmail.com>
Signed-off-by: Luis R. Rodriguez <mcgrof@winlab.rutgers.edu>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agozd1211rw: support for mesh interface and beaconing
Luis Carlos Cobo [Mon, 3 Mar 2008 20:32:15 +0000 (12:32 -0800)]
zd1211rw: support for mesh interface and beaconing

The previously unused CR_CAM_MODE register is set to MODE_AP_WDS. This makes the
driver ack mesh (WDS) frames. It does not affect Infra functionality of the
driver.

Previously missing beaconing support has been added. This might also help
implement a currently missing ah-hoc mode.

Support for interrupts from the device have been added, but we are not handling
most of them.

Mesh interfaces are considered associated as long as the interface is up.

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: clean up scan.c, remove zeromac and bcastmac
David Woodhouse [Mon, 3 Mar 2008 11:18:59 +0000 (12:18 +0100)]
libertas: clean up scan.c, remove zeromac and bcastmac

Should be purely cosmetic apart from the removal of the two pointless
MAC addresses.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: convert 802_11_SCAN to a direct command
David Woodhouse [Mon, 3 Mar 2008 11:18:03 +0000 (12:18 +0100)]
libertas: convert 802_11_SCAN to a direct command

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: add LED control TLV to types.h
David Woodhouse [Mon, 3 Mar 2008 11:16:42 +0000 (12:16 +0100)]
libertas: add LED control TLV to types.h

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: convert KEY_MATERIAL to a direct command
David Woodhouse [Mon, 3 Mar 2008 11:15:39 +0000 (12:15 +0100)]
libertas: convert KEY_MATERIAL to a direct command

The struct enc_key probably wants to die too, but that can come later.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: Fix 52 rate report in rx status
Tomas Winkler [Sat, 1 Mar 2008 23:52:00 +0000 (01:52 +0200)]
iwlwifi: Fix 52 rate report in rx status

This patch fixes reporting rate in RX packets in 52 band.
The rate was updated from CCK rate index instead of OFDM rate 6M
Most of the patch is collateral clean up

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: refactor init geos function
Tomas Winkler [Sat, 1 Mar 2008 23:36:04 +0000 (01:36 +0200)]
iwlwifi: refactor init geos function

This patch refactors init geos function. It also fixes few minor bugs.
IWL_MAX_RATE -> IWL_RATE_COUNT (IWL_MAX_RATE included also MCS setting)
There are 9 and 13 rates for 4965 in 2.4 and 5.2 respectively  (rate 60)

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: removing unused priv->config
Tomas Winkler [Sat, 1 Mar 2008 23:25:59 +0000 (01:25 +0200)]
iwlwifi: removing unused priv->config

This patch removes unused variable in iwlYYYY_priv

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agossb: Add Gigabit Ethernet driver
Michael Buesch [Fri, 29 Feb 2008 10:36:12 +0000 (11:36 +0100)]
ssb: Add Gigabit Ethernet driver

This adds the Gigabit Ethernet driver for the SSB
Gigabit Ethernet core. This driver actually is a frontend to
the Tigon3 driver. So the real work is done by tg3.
This device is used in the Linksys WRT350N.

Signed-off-by: Michael Buesch <mb@bu3sch.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: fix hardware scan completion
Johannes Berg [Wed, 5 Mar 2008 09:58:40 +0000 (10:58 +0100)]
mac80211: fix hardware scan completion

The mac80211 MLME requires restarting timers after a scan
completes but this wasn't done when hardware scan offload
was added, so add it now.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Tested-by: Bill Moss <bmoss@clemson.edu>
Cc: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: fix mesh_path and sta_info get_by_idx functions
Luis Carlos Cobo [Sat, 1 Mar 2008 01:51:25 +0000 (17:51 -0800)]
mac80211: fix mesh_path and sta_info get_by_idx functions

Skip properly entries whose dev does not match.

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: path IE fields macros, fix alignment problems and clean up
Luis Carlos Cobo [Sat, 1 Mar 2008 01:07:54 +0000 (17:07 -0800)]
mac80211: path IE fields macros, fix alignment problems and clean up

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: add PLINK_ prefix and kernel doc to enum plink_state
Luis Carlos Cobo [Fri, 29 Feb 2008 23:46:08 +0000 (15:46 -0800)]
mac80211: add PLINK_ prefix and kernel doc to enum plink_state

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: always force mesh_path deletions
Luis Carlos Cobo [Fri, 29 Feb 2008 23:04:13 +0000 (15:04 -0800)]
mac80211: always force mesh_path deletions

Postponing the deletion is not really useful anymore.

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: delete mesh_path timer on mesh_path removal
Luis Carlos Cobo [Fri, 29 Feb 2008 22:49:37 +0000 (14:49 -0800)]
mac80211: delete mesh_path timer on mesh_path removal

This avoids dereferencing a no longer existing struct mesh_path.

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: clean up use of endianness conversion functions
Luis Carlos Cobo [Fri, 29 Feb 2008 22:30:32 +0000 (14:30 -0800)]
mac80211: clean up use of endianness conversion functions

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: breakdown mesh network attributes in different extra fields for wext
Luis Carlos Cobo [Fri, 29 Feb 2008 20:32:46 +0000 (12:32 -0800)]
mac80211: breakdown mesh network attributes in different extra fields for wext

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: move comment to better location
Luis Carlos Cobo [Fri, 29 Feb 2008 20:20:39 +0000 (12:20 -0800)]
mac80211: move comment to better location

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: fix incorrect parenthesis
Luis Carlos Cobo [Fri, 29 Feb 2008 20:15:28 +0000 (12:15 -0800)]
mac80211: fix incorrect parenthesis

Pointed out by Johannes Berg.

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: fix mesh endianness sparse warnings and unmark it as broken
Luis Carlos Cobo [Fri, 29 Feb 2008 20:13:38 +0000 (12:13 -0800)]
mac80211: fix mesh endianness sparse warnings and unmark it as broken

This patch fixes all the mesh related endianness warnings reported by sparse. As
they were the reason why Johannes marked mesh as BROKEN, that flag has been
removed.

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: always insert key into list
Johannes Berg [Sat, 1 Mar 2008 18:32:18 +0000 (19:32 +0100)]
mac80211: always insert key into list

Today I hit one of my new WARN_ONs in the mac80211 code because
a key wasn't being freed correctly. After wondering for a while
I finally tracked it to the fact that STA keys aren't added to
the per-sdata key list correctly, they are supposed to always be
on that list, not just for default keys. This patch fixes that.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agob43: verify sta_notify mac80211 callback
Johannes Berg [Mon, 25 Feb 2008 15:27:50 +0000 (16:27 +0100)]
b43: verify sta_notify mac80211 callback

This helps verify that nothing bad is going on in mac80211,
it is unfortunately not possible to implement this generically
in mac80211 easily because there we can't assume that we only
have a single vif which b43 currently can assume.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Michael Buesch <mb@bu3sch.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: fix sta_info mesh timer bug
Johannes Berg [Wed, 27 Feb 2008 08:56:40 +0000 (09:56 +0100)]
mac80211: fix sta_info mesh timer bug

I noticed a bug I introduced when mesh is enabled: sta_info_destroy()
will end up calling cancel_timer() on a timer that has never been
initialized because the timer is only initialized in mesh_plink_alloc(),
not in sta_info_alloc(). This patch moves the initialization of all mesh
related fields into sta_info_alloc(), adds a bit of sanity checking to
the cfg80211 handlers and sta_info_insert() and makes mesh_plink_alloc()
a static helper function that is only used from the mesh plink code.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Cc: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: add documentation book
Johannes Berg [Tue, 26 Feb 2008 13:34:06 +0000 (14:34 +0100)]
mac80211: add documentation book

Quite a while ago I started this book. The required kernel-doc
patches have since gone into the tree so it is now possible to
build the book in mainline.

The actual documentation is still rather incomplete and not all
things are linked into the book, but this enables us to edit
the documentation collaboratively, hopefully driver authors can
add documentation based on their experience with mac80211.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: don't clear next_hop in path reclaim
Johannes Berg [Tue, 26 Feb 2008 09:53:57 +0000 (10:53 +0100)]
mac80211: don't clear next_hop in path reclaim

Luis pointed out that this path is going to be freed right
away anyway so there's no point in assigning next_hop.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Cc: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: remove STA entries when taking down interface
Johannes Berg [Mon, 25 Feb 2008 15:27:49 +0000 (16:27 +0100)]
mac80211: remove STA entries when taking down interface

When we take down an interface, we need to remove the STA info
items that belong to it because otherwise we might invoke a
sta_notify() callback in the driver when we later delete the
STA entries, but in that case the driver will already have
removed its knowledge of the interface they belonged to leading
to confusion. Also, we could invoke the set_tim() callback after
the driver removed its knowledge of the interface, which can
lead to a crash if it requests a beacon with a then-invalid vif
pointer!

A side effect of this patch is that, because it was easier, it
disallows changing the WDS peer while an interface is up. Should
that actually be necessary, it can be added back, but the WDS
peer STA entry may not be added while the interface is UP so for
now I've simplified the WDS peer's STA entry lifetime management.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: clean up sta_info and document locking
Johannes Berg [Mon, 25 Feb 2008 15:27:48 +0000 (16:27 +0100)]
mac80211: clean up sta_info and document locking

This patch cleans up the sta_info struct and documents how
each set of variables is locked. Notably, flags locking is
completely missing. It also adds kernel-doc for some (but
not all yet) members of the struct.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: split sta_info_add
Johannes Berg [Mon, 25 Feb 2008 15:27:47 +0000 (16:27 +0100)]
mac80211: split sta_info_add

sta_info_add() has two functions: allocating a station info
structure and inserting it into the hash table/list. Splitting
these two functions allows allocating with GFP_KERNEL in many
places instead of GFP_ATOMIC which is now required by the RCU
protection. Additionally, in many places RCU protection is now
no longer needed at all because between sta_info_alloc() and
sta_info_insert() the caller owns the structure.

This fixes a few race conditions with setting initial flags
and similar, but not all (see comments in ieee80211_sta.c and
cfg.c). More documentation on the existing races will be in
a follow-up patch.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: RCU-ify STA info structure access
Johannes Berg [Mon, 25 Feb 2008 15:27:46 +0000 (16:27 +0100)]
mac80211: RCU-ify STA info structure access

This makes access to the STA hash table/list use RCU to protect
against freeing of items. However, it's not a true RCU, the
copy step is missing: whenever somebody changes a STA item it
is simply updated. This is an existing race condition that is
now somewhat understandable.

This patch also fixes the race key freeing vs. STA destruction
by making sure that sta_info_destroy() is always called under
RTNL and frees the key.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: split ieee80211_txrx_data
Johannes Berg [Mon, 25 Feb 2008 15:27:43 +0000 (16:27 +0100)]
mac80211: split ieee80211_txrx_data

Split it into ieee80211_tx_data and ieee80211_rx_data to clarify
usage/flag usage and remove the stupid union thing.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: reorder a few fields in sta_info
Johannes Berg [Mon, 25 Feb 2008 21:17:30 +0000 (22:17 +0100)]
mac80211: reorder a few fields in sta_info

Three __le16s followed by an enum (int) leave a two-byte hole
of padding which we can use for two of the other fields.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: fix kernel-doc comment for mesh_plink_deactivate
Johannes Berg [Mon, 25 Feb 2008 20:36:27 +0000 (21:36 +0100)]
mac80211: fix kernel-doc comment for mesh_plink_deactivate

Accidentally copied in a __mesh_plink_deactivate, noticed by Luis
Carlos Cobo.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: clean up mesh RX path a bit more
Johannes Berg [Mon, 25 Feb 2008 15:24:38 +0000 (16:24 +0100)]
mac80211: clean up mesh RX path a bit more

Moves another ifdef into the sta_info header file in favour of
compiling more code even w/o CONFIG_MAC80211_MESH.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Cc: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: export mesh_plink_broken
Johannes Berg [Mon, 25 Feb 2008 15:15:06 +0000 (16:15 +0100)]
mac80211: export mesh_plink_broken

This needs to be exported because rate control algorithms
can be modular.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: clarify mesh Kconfig
Johannes Berg [Mon, 25 Feb 2008 09:13:31 +0000 (10:13 +0100)]
mac80211: clarify mesh Kconfig

This clarifies that the mesh networking code is currently
based on Draft 1.08 of the 802.11 Mesh Networking amendment.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: add missing "break" statement in mesh code
Johannes Berg [Mon, 25 Feb 2008 09:11:50 +0000 (10:11 +0100)]
mac80211: add missing "break" statement in mesh code

This inserts a missing break statement which, if hit, would cause
the code to fall-through and unlock a spinlock twice. Noticed via
sparse's "lock count wrong in basic block" warning and careful
code inspection.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Cc: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: enable mesh in Kconfig
Johannes Berg [Sat, 23 Feb 2008 14:17:21 +0000 (15:17 +0100)]
mac80211: enable mesh in Kconfig

Currently marked BROKEN because of endianness problems.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: mesh hwmp locking fixes
Johannes Berg [Sat, 23 Feb 2008 14:17:20 +0000 (15:17 +0100)]
mac80211: mesh hwmp locking fixes

This fixes missing unlocks noticed by sparse.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: clean up mesh code
Johannes Berg [Sat, 23 Feb 2008 14:17:19 +0000 (15:17 +0100)]
mac80211: clean up mesh code

Various cleanups, reducing the #ifdef mess and other things.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: complete the mesh (interface handling) code
Luis Carlos Cobo [Sat, 23 Feb 2008 14:17:18 +0000 (15:17 +0100)]
mac80211: complete the mesh (interface handling) code

This completes the mesh interface handling code and a few other
bits about the mac80211 module.

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: mesh path and mesh peer configuration
Luis Carlos Cobo [Sat, 23 Feb 2008 14:17:17 +0000 (15:17 +0100)]
mac80211: mesh path and mesh peer configuration

This adds code to allow adding mesh interfaces and configuring
mesh peers etc. Also, it adds code for station dumping.

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: mesh statistics and config through debugfs
Luis Carlos Cobo [Sat, 23 Feb 2008 14:17:16 +0000 (15:17 +0100)]
mac80211: mesh statistics and config through debugfs

This patch contains the debugfs code for mesh statistics and configuration
parameters. Please note that generic support for r/w debugfs attributes has been
added.

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: code for on-demand Hybrid Wireless Mesh Protocol
Luis Carlos Cobo [Sat, 23 Feb 2008 14:17:15 +0000 (15:17 +0100)]
mac80211: code for on-demand Hybrid Wireless Mesh Protocol

This file implements the on-demand Hybrid Wireless Mesh Protocol, at this moment
using hop-count as the metric. When no mesh path exists for a given destination
or the mesh path is not active, frames addressed to that destination will be
queued and a Path Request frame will be sent. Queued frames will be sent when
the path is resolved (usually after reception of a Path Response) or discarded
if discovery times out. Path Requests will also be sent to refresh paths that
are being used and are close to expiring.

Path Errors are sent when a path discovery process triggered by the attempt to
forward a frame originated in a different mesh point times out. Path Errors are
also sent when a peer link is determined to be unreachable because of high error
rates.

Multiple destination support in Path Requests and Path Errors and precursors
have not been implemented yet.

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: mesh path table implementation
Luis Carlos Cobo [Sat, 23 Feb 2008 14:17:14 +0000 (15:17 +0100)]
mac80211: mesh path table implementation

The mesh path table associates destinations with the next hop to reach them. The
table is a hash of linked lists protected by rcu mechanisms. Every mesh path
contains a lock to protect the mesh path state.

Each outgoing mesh frame requires a look up into this table. Therefore, the
table it has been designed so it is not necessary to hold any lock to find the
appropriate next hop.

If the path is determined to be active within a rcu context we can safely
dereference mpath->next_hop->addr, since it holds a reference to the sta
next_hop. After a mesh path has been set active for the first time it next_hop
must always point to a valid sta.  If this is not possible the mpath must be
deleted or replaced in a RCU safe fashion.

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: mesh peer link implementation
Luis Carlos Cobo [Sat, 23 Feb 2008 14:17:13 +0000 (15:17 +0100)]
mac80211: mesh peer link implementation

This file implements mesh discovery and peer link establishment support using
the mesh peer link table provided in mesh_plinktbl.c.

Secure peer links have not been implemented yet.

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: mesh changes to the MLME
Luis Carlos Cobo [Sat, 23 Feb 2008 14:17:12 +0000 (15:17 +0100)]
mac80211: mesh changes to the MLME

This includes support for mesh network scanning. The ugly code in
ieee80211_sta_scan_result() is my approach to work around wext. This has been
tested with wireless tools version 29 and works as expected (the new interface
mode is just not shown).

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: mesh data structures and first mesh changes
Luis Carlos Cobo [Sat, 23 Feb 2008 14:17:11 +0000 (15:17 +0100)]
mac80211: mesh data structures and first mesh changes

Includes integration in struct sta_info of mesh peer link elements, previously
on their own mesh peer link table.

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: support for mesh interfaces in mac80211 data path
Luis Carlos Cobo [Sat, 23 Feb 2008 14:17:10 +0000 (15:17 +0100)]
mac80211: support for mesh interfaces in mac80211 data path

This changes the TX/RX paths in mac80211 to support mesh interfaces.
This code will be cleaned up later again before being enabled.

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: support functions for mesh
Luis Carlos Cobo [Sat, 23 Feb 2008 14:17:09 +0000 (15:17 +0100)]
mac80211: support functions for mesh

The two important features coded in mesh.c are:

Recently Multicast Cache: in on-demand HWMP, multicast traffic is retransmitted
by every receiving node. Even though a mesh TTL counter avoids infinite loops,
it is also necessary to avoid traffic explosion by keeping a cache of multicast
mesh frame that have been received recently. With this feature, maximum number
of retransmissions of a multicast frame for the case of N nodes within the range
of each other would be N. Without it, the maximum number of retransmissions
would be in the order of N^(MESH_TTL - 1).

Code to support mesh tables.

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: mesh function and data structures definitions
Luis Carlos Cobo [Sat, 23 Feb 2008 14:17:08 +0000 (15:17 +0100)]
mac80211: mesh function and data structures definitions

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agomac80211: add mesh interface type
Johannes Berg [Sat, 23 Feb 2008 14:17:07 +0000 (15:17 +0100)]
mac80211: add mesh interface type

This adds the mesh interface type.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agonl80211/cfg80211: support for mesh, sta dumping
Luis Carlos Cobo [Sat, 23 Feb 2008 14:17:06 +0000 (15:17 +0100)]
nl80211/cfg80211: support for mesh, sta dumping

Added support for mesh id and mesh path operation as well as
station structure dumping.

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoWEXT: add mesh interface type
Johannes Berg [Sat, 23 Feb 2008 14:17:05 +0000 (15:17 +0100)]
WEXT: add mesh interface type

This introduces a new WEXT type IW_MODE_MESH for mesh networks,
used for scan results.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agowireless: various definitions for mesh networking
Luis Carlos Cobo [Sat, 23 Feb 2008 14:17:04 +0000 (15:17 +0100)]
wireless: various definitions for mesh networking

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years ago[IPV6]: Fix powerpc allmodconfig build warnings.
David S. Miller [Thu, 6 Mar 2008 04:58:10 +0000 (20:58 -0800)]
[IPV6]: Fix powerpc allmodconfig build warnings.

Introduced by changeset 95e41e93e18d8e1e272ce23d96bae4f17ce11d42
("[IPV6]: Make ndisc_flow_init() common for later use.")

Reported by Stephen Rothwell.

In file included from net/ipv6/netfilter/ip6_tables.c:21:
include/linux/icmpv6.h:192: warning: 'struct in6_addr' declared inside parameter list
include/linux/icmpv6.h:192: warning: its scope is only this definition or declaration, which is probably not what you want

Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agonet: replace remaining __FUNCTION__ occurrences
Harvey Harrison [Thu, 6 Mar 2008 04:47:47 +0000 (20:47 -0800)]
net: replace remaining __FUNCTION__ occurrences

__FUNCTION__ is gcc-specific, use __func__

Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoCOSA/SRP: convert channel_data.rsem to mutex
Matthias Kaehlcke [Thu, 6 Mar 2008 02:53:01 +0000 (18:53 -0800)]
COSA/SRP: convert channel_data.rsem to mutex

COSA/SRP driver: The semaphore channel_data.rsem is used as a mutex,
convert it to the mutex API

Signed-off-by: Matthias Kaehlcke <matthias@kaehlcke.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years ago[IPV4]: Add 'rtable' field in struct sk_buff to alias 'dst' and avoid casts
Eric Dumazet [Thu, 6 Mar 2008 02:30:47 +0000 (18:30 -0800)]
[IPV4]: Add 'rtable' field in struct sk_buff to alias 'dst' and avoid casts

(Anonymous) unions can help us to avoid ugly casts.

A common cast it the (struct rtable *)skb->dst one.

Defining an union like  :
union {
     struct dst_entry *dst;
     struct rtable *rtable;
};
permits to use skb->rtable in place.

Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years ago[IPV6]: Remove commented lines.
Daniel Lezcano [Wed, 5 Mar 2008 20:37:29 +0000 (12:37 -0800)]
[IPV6]: Remove commented lines.

Remove commented lines from netns patchset.

Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoMerge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
David S. Miller [Wed, 5 Mar 2008 20:26:41 +0000 (12:26 -0800)]
Merge branch 'master' of /linux/kernel/git/davem/net-2.6

Conflicts:

net/mac80211/rc80211_pid_algo.c

16 years ago[NETNS][IPV6] icmp6 - make icmpv6_socket per namespace
Benjamin Thery [Wed, 5 Mar 2008 18:49:18 +0000 (10:49 -0800)]
[NETNS][IPV6] icmp6 - make icmpv6_socket per namespace

This patch make the changes necessary to support network namespaces in
ICMPv6.

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>
16 years ago[NETNS][IPV6] ip6_input - enable ipv6_rcv to handle several network namespace
Daniel Lezcano [Wed, 5 Mar 2008 18:48:56 +0000 (10:48 -0800)]
[NETNS][IPV6] ip6_input - enable ipv6_rcv to handle several network namespace

The different subsystem of ipv6 are ready for namespaces, so let's
activate it for ipv6_rcv.

Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
Signed-off-by: Benjamin Thery <benjamin.thery@bull.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years ago[NETNS][IPV6] route6 - pass always a valid socket to ip6_dst_lookup
Daniel Lezcano [Wed, 5 Mar 2008 18:48:35 +0000 (10:48 -0800)]
[NETNS][IPV6] route6 - pass always a valid socket to ip6_dst_lookup

The ip6_dst_lookup receive a socket as parameter. In some part of the code
it is called with a NULL socket parameter. We want to rely on the socket
to retrieve the network namespace, so we always pass a valid socket in all
cases.

Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
Signed-off-by: Benjamin Thery <benjamin.thery@bull.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years ago[NETNS][IPV6] route6 - add netns parameter to ip6_route_output
Daniel Lezcano [Wed, 5 Mar 2008 18:48:10 +0000 (10:48 -0800)]
[NETNS][IPV6] route6 - add netns parameter to ip6_route_output

Add an netns parameter to ip6_route_output. That will allow to access
to the right routing table for outgoing traffic.

Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
Signed-off-by: Benjamin Thery <benjamin.thery@bull.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years ago[NETNS][IPV6] addrconf - make addrconf per namespace
Benjamin Thery [Wed, 5 Mar 2008 18:47:47 +0000 (10:47 -0800)]
[NETNS][IPV6] addrconf - make addrconf per namespace

All the infrastructure to propagate the network namespace information
is ready. Make use of it.

There is a special case here between the initial network namespace and
the other namespaces:

* When ipv6 is initialized at boot time (aka in the init_net), it
registers to the notifier callback. So addrconf_notify will be called
as many time as there are network devices setup on the system and the
function will add ipv6 addresses to the network devices. But the first
device which needs to have its ipv6 address setup is the loopback,
unfortunatly this is not the case. So the loopback address is setup
manually in the ipv6 init function.

* With the network namespace, this ordering problem does not appears
because notifier is already setup and active, so as soon as we
register the loopback the ipv6 address is setup and it will be the
first device.

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>