20 Dec, 2011
1 commit
-
DaveM said:
Please, this kind of stuff rots forever and not using bool properly
drives me crazy.Joe Perches gave me the spatch script:
@@
bool b;
@@
-b = 0
+b = false
@@
bool b;
@@
-b = 1
+b = trueI merely installed coccinelle, read the documentation and took credit.
Signed-off-by: Rusty Russell
Signed-off-by: David S. Miller
30 Mar, 2010
1 commit
-
…it slab.h inclusion from percpu.h
percpu.h is included by sched.h and module.h and thus ends up being
included when building most .c files. percpu.h includes slab.h which
in turn includes gfp.h making everything defined by the two files
universally available and complicating inclusion dependencies.percpu.h -> slab.h dependency is about to be removed. Prepare for
this change by updating users of gfp and slab facilities include those
headers directly instead of assuming availability. As this conversion
needs to touch large number of source files, the following script is
used as the basis of conversion.http://userweb.kernel.org/~tj/misc/slabh-sweep.py
The script does the followings.
* Scan files for gfp and slab usages and update includes such that
only the necessary includes are there. ie. if only gfp is used,
gfp.h, if slab is used, slab.h.* When the script inserts a new include, it looks at the include
blocks and try to put the new include such that its order conforms
to its surrounding. It's put in the include block which contains
core kernel includes, in the same order that the rest are ordered -
alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
doesn't seem to be any matching order.* If the script can't find a place to put a new include (mostly
because the file doesn't have fitting include block), it prints out
an error message indicating which .h file needs to be added to the
file.The conversion was done in the following steps.
1. The initial automatic conversion of all .c files updated slightly
over 4000 files, deleting around 700 includes and adding ~480 gfp.h
and ~3000 slab.h inclusions. The script emitted errors for ~400
files.2. Each error was manually checked. Some didn't need the inclusion,
some needed manual addition while adding it to implementation .h or
embedding .c file was more appropriate for others. This step added
inclusions to around 150 files.3. The script was run again and the output was compared to the edits
from #2 to make sure no file was left behind.4. Several build tests were done and a couple of problems were fixed.
e.g. lib/decompress_*.c used malloc/free() wrappers around slab
APIs requiring slab.h to be added manually.5. The script was run on all .h files but without automatically
editing them as sprinkling gfp.h and slab.h inclusions around .h
files could easily lead to inclusion dependency hell. Most gfp.h
inclusion directives were ignored as stuff from gfp.h was usually
wildly available and often used in preprocessor macros. Each
slab.h inclusion directive was examined and added manually as
necessary.6. percpu.h was updated not to include slab.h.
7. Build test were done on the following configurations and failures
were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my
distributed build env didn't work with gcov compiles) and a few
more options had to be turned off depending on archs to make things
build (like ipr on powerpc/64 which failed due to missing writeq).* x86 and x86_64 UP and SMP allmodconfig and a custom test config.
* powerpc and powerpc64 SMP allmodconfig
* sparc and sparc64 SMP allmodconfig
* ia64 SMP allmodconfig
* s390 SMP allmodconfig
* alpha SMP allmodconfig
* um on x86_64 SMP allmodconfig8. percpu.h modifications were reverted so that it could be applied as
a separate patch and serve as bisection point.Given the fact that I had only a couple of failures from tests on step
6, I'm fairly confident about the coverage of this conversion patch.
If there is a breakage, it's likely to be something in one of the arch
headers which should be easily discoverable easily on most builds of
the specific arch.Signed-off-by: Tejun Heo <tj@kernel.org>
Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
20 Jan, 2010
1 commit
-
Code directly scaling by HZ and rounding can be more efficiently
and clearly performed with msecs_to_jiffies.Signed-off-by: Bob Copeland
Signed-off-by: John W. Linville
19 Jan, 2010
1 commit
-
While testing the pid rate controller in mac80211_hwsim, I noticed
that once the controller reached 54 Mbit rates, it would fail to
lower the rate when necessary. The debug log shows:1945 186786 pf_sample 50 3534 3577 50
My interpretation is that the fixed point scaling of the target
error value (pf) is incorrect: the error value of 50 compared to
a target of 14 case should result in a scaling value of
(14-50) = -36 * 256 or -9216, but instead it is (14 * 256)-50, or
3534.Correct this by doing fixed point scaling after subtraction.
Signed-off-by: Bob Copeland
Acked-by: Stefano Brivio
Acked-by: Mattias Nissler
Signed-off-by: John W. Linville
20 Aug, 2009
2 commits
-
CC [M] net/mac80211/rc80211_pid_algo.o
net/mac80211/rc80211_pid_algo.c: In function ‘rate_control_pid_rate_init’:
net/mac80211/rc80211_pid_algo.c:304: warning: unused variable ‘si’Signed-off-by: John W. Linville
-
Mesh uses the tx failure average to compute the (m)path metric. This used to
be done inside the rate control module. This patch breaks the dependency
between the mesh stack and the rate control algorithm. Mesh will now work
independently of the chosen rate control algorithm.The mesh stack keeps a moving average of the average transmission losses for
each mesh peer station. If the fail average exceeds a certain threshold, the
peer link is marked as broken.Signed-off-by: Javier Cardona
Signed-off-by: John W. Linville
25 Jul, 2009
2 commits
-
All current rate control algorithms agree to send management and no-ack
frames at the lowest rate. They also agree to do this when sta
and the private rate control data is NULL. We add a hlper to mac80211
for this and simplify the rate control algorithm code.Developers wishing to make enhancements to rate control algorithms
are for broadcast/multicast can opt to not use this in their
gate_rate() mac80211 callback.Cc: Zhu Yi
Acked-by: Reinette Chatre
Cc: ipw3945-devel@lists.sourceforge.net
Cc: Gabor Juhos
Acked-by: Felix Fietkau
Cc: Derek Smithies
Cc: Chittajit Mitra
Signed-off-by: Luis R. Rodriguez
Signed-off-by: John W. Linville -
Cc: Felix Fietkau
Cc: Derek Smithies
Cc: Chittajit Mitra
Signed-off-by: Luis R. Rodriguez
Signed-off-by: John W. Linville
19 May, 2009
1 commit
-
Conflicts:
drivers/scsi/fcoe/fcoe.c
12 May, 2009
1 commit
-
"There is another problem with this piece of code. The sband will be NULL
after second iteration on single band device and cause null pointer
dereference. Everything is working with dual band card. Sorry, but i
don't know how to explain this clearly in English. I have looked on the
second patch for pid algorithm and found similar bug."Reported-by: Karol Szuster
Signed-off-by: John W. Linville
09 May, 2009
1 commit
07 May, 2009
1 commit
-
Make PID check for IEEE80211_TX_CTL_NO_ACK instead of
is_multicast_ether_addr when determining whether to use the lowest
rate, and set the retry count to 0 (total try count = 1) if
IEEE80211_TX_CTL_NO_ACK is set.Signed-off-by: Gábor Stefanik
Signed-off-by: John W. Linville
05 May, 2009
1 commit
-
pid doesn't count with some band having more bitrates than the one
associated the first time.
Fix that by counting the maximal available bitrate count and allocate
big enough space.Secondly, fix touching uninitialized memory which causes panics.
Index sucked from this random memory points to the hell.
The fix is to sort the rates on each band change.Signed-off-by: Jiri Slaby
Signed-off-by: John W. Linville
26 Nov, 2008
1 commit
-
In commit 9ea2c74 named "mac80211/drivers: rewrite the rate control API",
the meaning of status.rates[i].count was changed from number of retries
to total number of tries. As a result, the pid rate-setting algorithm fails
because every packet appears to have needed a retransmit.Signed-off-by: Larry Finger
Acked-by: Johannes Berg
Signed-off-by: John W. Linville
22 Nov, 2008
1 commit
-
This patch eliminates sparse warnings in pid rate scale algorithm
'debugfs: allow access to signed values' patch hit the dead end
year ago w/o much echo so I guess there is no real need to address this
properly.Signed-off-by: Tomas Winkler
Acked-by: Johannes Berg
Signed-off-by: John W. Linville
01 Nov, 2008
2 commits
-
"Clearing" the rate control algorithm is pointless, none of
the algorithms actually uses this operation and it's not even
invoked properly for all channel switching. Also, there's no
need to since rate control algorithms work per station.Signed-off-by: Johannes Berg
Signed-off-by: John W. Linville -
So after the previous changes we were still unhappy with how
convoluted the API is and decided to make things simpler for
everybody. This completely changes the rate control API, now
taking into account 802.11n with MCS rates and more control,
most drivers don't support that though.Signed-off-by: Felix Fietkau
Signed-off-by: Johannes Berg
Signed-off-by: John W. Linville
25 Sep, 2008
1 commit
-
Long awaited, hard work. This patch totally cleans up the rate control
API to remove the requirement to include internal headers outside of
net/mac80211/.There's one internal use in the PID algorithm left for mesh networking,
we'll have to figure out a way to clean that one up and decide how to
do the peer link evaluation, possibly independent of the rate control
algorithm or via new API.Additionally, ath9k is left using the cross-inclusion hack for now, we
will add new API where necessary to make this work properly, but right
now I'm not expert enough to do it. It's still off better than before.Signed-off-by: Johannes Berg
Signed-off-by: John W. Linville
16 Sep, 2008
4 commits
-
The sta_info->txrate_idx member isn't used by all RC algorithms
in the way it was intended to be used, move it into those that
require it (only PID) and keep track in the core code of which
rate was last used for reporting to userspace and the mesh MLME.Signed-off-by: Johannes Berg
Signed-off-by: John W. Linville -
This variable in sta_info is only used in a meaningful way
by the Intel RC algorithms, so move it into those.Signed-off-by: Johannes Berg
Signed-off-by: John W. Linville -
This patch fixes mac80211 to not rely on the rate control
algorithm to update sta->tx_retry_failed and sta->tx_retry_count
(even if we don't currently use them), removes a number of
completely unused values we don't even show in debugfs and
changes the code in ieee80211_tx_status() to not look up the
sta_info repeatedly.The only behaviour change here would be not calling the rate
control function rate_control_tx_status() when no sta_info is
found, but all rate control algorithms ignore such calls anyway.Signed-off-by: Johannes Berg
Signed-off-by: John W. Linville -
This patch splits off mesh handling from the STA/IBSS.
Unfortunately it increases mesh code size a bit, but I
think it makes things clearer. The patch also reduces
per-interface run-time memory usage.Also clean up a few places where ifdef is not required.
Signed-off-by: Johannes Berg
Signed-off-by: John W. Linville
15 Jul, 2008
3 commits
-
Conflicts:
net/netfilter/nf_conntrack_proto_tcp.c
-
Currently, almost every interface type has a 'bss' pointer
pointing to BSS information. This BSS information, however,
is for a _local_ BSS, not for the BSS we joined, so having
it on a STA mode interface makes little sense, but now they
have it pointing to the master device, which is an AP mode
virtual interface. However, except for some bitrate control
data, this pointer is only used in AP/VLAN modes (for power
saving stations.)Overall, it is not necessary to even have the master netdev
be a valid virtual interface, and it doesn't have to be on
the list of interfaces either.This patch changes the master netdev to be special, it now
- no longer is on the list of virtual interfaces, which
lets me remove a lot of tests for that
- no longer has sub_if_data attached, since that isn't usedAdditionally, this patch changes some vlan/ap mode handling
that is related to these 'bss' pointers described above (but
in the VLAN case they actually make sense because there they
point to the AP they belong to); it also adds some debugging
code to IEEE80211_DEV_TO_SUB_IF to validate it is not called
on the master netdev any more.Signed-off-by: Johannes Berg
Signed-off-by: John W. Linville
10 Jul, 2008
1 commit
-
This removes the fast_start parameter from the rc_pid parameters
information and instead uses the parameter macro when initializing
the rc_pid state. Since the parameter is only used on initialization,
there is no point of making exporting it via debugfs. This also fixes
uninitialized memory references to the fast_start and norm_offset
parameters detected by the kmemcheck utility. Thanks to Vegard Nossum
for reporting the bug.Signed-off-by: Mattias Nissler
Signed-off-by: John W. Linville
01 Jul, 2008
1 commit
-
The old infrastructure was:
- the default algorithm is built into mac80211
- other algorithms get into their own modulesThe implementation of this complicated scheme was horrible
(just look at net/mac80211/Makefile), and anyone adding a new
algorithm would most likely not get it right at his first attempt.This patch therefore builds all enabled algorithms into the mac80211
module.The user interface for the rate control algorithms changes as follows:
- first the user can choose which algorithms to enable (currently only
MAC80211_RC_PID is available)
- if more than one algorithm is enabled (currently not possible since
only one algorithm is present) the user then chooses the default oneNote:
- MAC80211_RC_PID is always enables for CONFIG_EMBEDDED=nTechnical changes:
- all selected algorithms get into the mac80211 module
- net/mac80211/Makefile can now become much less complicated
- support for rc80211_pid_algo.c being modular is no longer required
- this includes unexporting mesh_plink_brokenSigned-off-by: Adrian Bunk
Signed-off-by: John W. Linville
22 May, 2008
2 commits
-
This patch converts mac80211 and all drivers to have transmit
information and status in skb->cb rather than allocating extra
memory for it and copying all the data around. To make it fit,
a union is used where only data that is necessary for all steps
is kept outside of the union.A number of fixes were done by Ivo, as well as the rt2x00 part
of this patch.Signed-off-by: Ivo van Doorn
Signed-off-by: Johannes Berg
Acked-by: David S. Miller
Signed-off-by: John W. Linville -
This patch modifies struct ieee80211_tx_control to give band
info and the rate index (instead of rate pointers) to drivers.
This mostly serves to reduce the TX control structure size to
make it fit into skb->cb so that the fragmentation code can
put it there and we can think about passing it to drivers that
way in the future.The rt2x00 driver update was done by Ivo, thanks.
Signed-off-by: Ivo van Doorn
Signed-off-by: Johannes Berg
Signed-off-by: John W. Linville
09 Apr, 2008
1 commit
-
This patch renames all mac80211 files (except ieee80211_i.h) to get rid
of the useless ieee80211_ prefix.Signed-off-by: Johannes Berg
Signed-off-by: John W. Linville
07 Mar, 2008
3 commits
-
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
Signed-off-by: John W. Linville -
Various cleanups, reducing the #ifdef mess and other things.
Signed-off-by: Johannes Berg
Signed-off-by: John W. Linville -
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
Signed-off-by: Johannes Berg
Signed-off-by: John W. Linville
01 Mar, 2008
3 commits
-
These things aren't used and the only possible use is within
rate control algorithms, however those can, if they need it,
keep track of it in their private data. last_ack_ms isn't
even updated so completely useless.Signed-off-by: Johannes Berg
Signed-off-by: John W. Linville -
Merge rate_control_pid_shift_adjust() to rate_control_pid_adjust_rate()
in order to make the learning algorithm aware of constraints on rates. Also
add some comments and rename variables.This fixes a bug which prevented 802.11b/g non-AP STAs from working with
802.11b only AP STAs.Signed-off-by: Stefano Brivio
Signed-off-by: John W. Linville -
This patch creates new cfg80211 wiphy API for channel and bitrate
registration and converts mac80211 and drivers to the new API. The
old mac80211 API is completely ripped out. All drivers (except ath5k)
are updated to the new API, in many cases I expect that optimisations
can be done.Along with the regulatory code I've also ripped out the
IEEE80211_HW_DEFAULT_REG_DOMAIN_CONFIGURED flag, I believe it to be
unnecessary if the hardware simply gives us whatever channels it wants
to support and we then enable/disable them as required, which is pretty
much required for travelling.Additionally, the patch adds proper "basic" rate handling for STA
mode interface, AP mode interface will have to have new API added
to allow userspace to set the basic rate set, currently it'll be
empty... However, the basic rate handling will need to be moved to
the BSS conf stuff.I do expect there to be bugs in this, especially wrt. transmit
power handling where I'm basically clueless about how it should work.Signed-off-by: Johannes Berg
Signed-off-by: John W. Linville
02 Feb, 2008
1 commit
-
When the rate control algorithms are built-in, their exit
functions can be called from mac80211's init function so
they cannot be marked __exit.Signed-off-by: Johannes Berg
Acked-by: Stefano Brivio
Signed-off-by: John W. Linville
29 Jan, 2008
3 commits
-
Fix last_sample initialization. kzalloc'ing the per-STA data wasn't enough,
as jiffies can assume negative values as well. This fixes a bug which
prevented correct PID operation for a while after booting.Thanks to Michael Buesch for reporting this.
Reported-and-tested-by: Michael Buesch
Signed-off-by: Stefano Brivio
Signed-off-by: John W. Linville -
Mattias Nissler's "clean up rate selection" patch incorrectly changes
the behavior of txrate setting in sta_info. This patch backs out parts
of the rate selection consolidation in order to fix this issue for now.Signed-off-by: Michael Wu
Signed-off-by: John W. Linville -
I would argue that mac80211 should handle fixed rates outside the rate
control code, which would also allow them to take effect immediately
instead of during the rate control callback, but this is pretty close
to correct.Signed-Off-By: Andy Lutomirski
Signed-off-by: John W. Linville
Signed-off-by: David S. Miller