Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

net: rfs: fix crash in get_rps_cpus()

Commit 567e4b7 ("net: rfs: add hash collision detection") had one
mistake :

RPS_NO_CPU is no longer the marker for invalid cpu in set_rps_cpu()
and get_rps_cpu(), as @next_cpu was the result of an AND with

This bug showed up on a host with 72 cpus :
next_cpu was 0x7f, and the code was trying to access percpu data of an
non existent cpu.

In a follow up patch, we might get rid of compares against nr_cpu_ids,
if we init the tables with 0. This is silly to test for a very unlikely
condition that exists only shortly after table initialization, as
we got rid of rps_reset_sock_flow() and similar functions that were
writing this RPS_NO_CPU magic value at flow dismantle : When table is
old enough, it never contains this value anymore.

Fixes: 567e4b7 ("net: rfs: add hash collision detection")
Signed-off-by: Eric Dumazet <>
Cc: Tom Herbert <>
Cc: Ben Hutchings <>
Signed-off-by: David S. Miller <>
latest commit a31196b07f
Eric Dumazet authored davem330 committed
Failed to load latest commit information.
caif Documentation/networking/caif: Update documentation
mac80211_hwsim mac80211_hwsim: Update documentation (AP mode enabled)
timestamping net-timestamp: no-payload option in txtimestamp test
00-INDEX Update of Documentation/networking/00-INDEX
3c509.txt drivers/net: delete all code/drivers depending on CONFIG_MCA
6pack.txt Update Andreas Koensgen's email address
LICENSE.qla3xxx [PATCH] qla3xxx NIC driver
LICENSE.qlcnic qlcnic: Updating copyright information.
LICENSE.qlge qlge: Updating Schultz LICENSE.qlge file.
Makefile Documentation: use subdir-y to avoid unnecessary built-in.o files
PLIP.txt Linux-2.6.12-rc2
README.ipw2100 Documentation: update broken web addresses.
README.ipw2200 Fix common misspellings
README.sb1000 Documentation: update broken web addresses.
alias.txt net: update documentation ip aliases
altera_tse.txt Documentation: networking: Add Altera Ethernet (TSE) Documentation
arcnet-hardware.txt Fix "can not" in Documentation and Kconfig
arcnet.txt Documentation: Fix references to defunct
atm.txt Linux-2.6.12-rc2
ax25.txt [NET] AX.25 Kconfig and docs updates and fixes
batman-adv.txt batman-adv: add missing sysfs attributes to README
baycom.txt Documentation: remove references to /etc/modprobe.conf
bonding.txt tcp: allow for bigger reordering level
bridge.txt bridge: update documentation references
can.txt can: introduce new raw socket option to join the given CAN filters
cdc_mbim.txt net: cdc_mbim: add driver documentation
cops.txt Linux-2.6.12-rc2
cs89x0.txt networking/cs89x0.txt: delete stale information about hand patching USB: cxacru: remove cxacru-cf.bin loader
cxgb.txt Fix typos in Documentation/: 'F'-'G'
dccp.txt doc: spelling error changes
dctcp.txt net: tcp: add DCTCP congestion control algorithm
de4x5.txt Linux-2.6.12-rc2
decnet.txt Documentation: update broken web addresses.
dl2k.txt Documentation: remove references to /etc/modprobe.conf
dm9000.txt trivial: Miscellaneous documentation typo fixes
dmfe.txt Documentation: networking: dmfe.txt: Remove the maintainer of orphan …
dns_resolver.txt KEYS: Allow special keyrings to be cleared
driver.txt doc, net: Update ndo_start_xmit return type and values
e100.txt doc:net: Fix typo in Documentation/networking
e1000.txt Documentation/networking/: Update Intel wired LAN driver documentation
e1000e.txt Documentation/networking/: Update Intel wired LAN driver documentation
eql.txt Linux-2.6.12-rc2
fib_trie.txt fib_trie.txt: fix typo
filter.txt filter: introduce SKF_AD_VLAN_TPID BPF extension
fore200e.txt drivers/net: delete all code/drivers depending on CONFIG_MCA
framerelay.txt Linux-2.6.12-rc2
gen_stats.txt Fix typos in Documentation/: 'N'-'P'
generic-hdlc.txt WAN: new synchronous PPP implementation for generic HDLC.
generic_netlink.txt Docs/Kconfig: Update: ->
gianfar.txt gianfar: Remove sysfs stubs for FIFOCFG and stashing
i40e.txt i40e: adds FCoE to build and updates its documentation
i40evf.txt i40evf: add driver to kernel build system
ieee802154.txt doc:net: Fix typo in Documentation/networking
igb.txt igb: doc don't refer to ifconfig
igbvf.txt Documentation/networking/: Update Intel wired LAN driver documentation
ip-sysctl.txt ipv6: add documentation for stable_secret, idgen_delay and idgen_retr…
ip_dynaddr.txt Linux-2.6.12-rc2
ipddp.txt Documentation: update broken web addresses.
iphase.txt Documentation: update broken web addresses.
ipsec.txt xfrm: Add file to document IPsec corner case
ipv6.txt Documentation: remove references to /etc/modprobe.conf
ipvlan.txt ipvlan: Initial check-in of the IPVLAN driver.
ipvs-sysctl.txt ipvs: allow rescheduling of new connections when port reuse is detected
irda.txt [PATCH] kernel Doc/ URL corrections
ixgb.txt ixgb: remove references to ifconfig
ixgbe.txt ixgbe: fix documentation
ixgbevf.txt Documentation/networking/: Update Intel wired LAN driver documentation
l2tp.txt doc:net: Fix typo in Documentation/networking
lapb-module.txt Linux-2.6.12-rc2
ltpc.txt Documentation: remove references to /etc/modprobe.conf
mac80211-auth-assoc-deauth.txt mac80211: set HT channel before association
mac80211-injection.txt mac80211: Update injection documentation
mpls-sysctl.txt mpls: Per-device enabling of packet input
multiqueue.txt multiq: Further multiqueue cleanup
netconsole.txt netconsole: add IPv6 example in doc
netdev-FAQ.txt doc:net: Fix typo in Documentation/networking
netdev-features.txt doc/net: Fix typo in netdev-features.txt
netdevices.txt net: extend net_device allocation to vmalloc()
netif-msg.txt Fix typos in Documentation/: 'Q'-'R'
netlink_mmap.txt Documentation: Update netlink_mmap.txt
nf_conntrack-sysctl.txt netfilter: conntrack: adjust nf_conntrack_buckets default value
nfc.txt NFC: add Documentation/networking/nfc.txt
openvswitch.txt openvswitch: Add support for unique flow IDs.
operstates.txt doc:net: Fix typo in Documentation/networking
packet_mmap.txt af_packet: pass checksum validation status to the user
phonet.txt Phonet: kill the ST-Ericsson pipe controller Kconfig
phy.txt Documentation: networking: phy.txt: Update text for indirect MMD access
pktgen.txt pktgen: Correct documentation of module name and command
policy-routing.txt Linux-2.6.12-rc2
ppp_generic.txt ppp: Move ioctl definitions from if_ppp.h to new ppp-ioctl.h
proc_net_tcp.txt [TCP]: Update the /proc/net/tcp documentation
radiotap-headers.txt [PATCH] cfg80211: Radiotap parser
ray_cs.txt Documentation: update broken web addresses.
rds.txt RDS: Documentation: Document AF_RDS, PF_RDS and SOL_RDS correctly.
regulatory.txt cfg80211: consolidate passive-scan and no-ibss flags
rxrpc.txt af_rxrpc: Expose more RxRPC parameters via sysctls
s2io.txt neterion: remove reference to ifconfig
scaling.txt net: rfs: fix crash in get_rps_cpus()
sctp.txt net: sctp: trivial: update mailing list address
secid.txt [MLSXFRM]: Add security sid to flowi
skfp.txt tree-wide: Assorted spelling fixes
smc9.txt Linux-2.6.12-rc2
spider_net.txt doc: fix double words
stmmac.txt stmmac: update driver documentation
switchdev.txt net: introduce generic switch devices support
tc-actions-env-rules.txt Fix common misspellings
tcp-thin.txt net: TCP thin-stream detection
tcp.txt tcp: remove unused min_cwnd member of tcp_congestion_ops
team.txt net: introduce ethernet teaming device
timestamping.txt net-timestamp: no-payload option
tlan.txt Documentation: update broken web addresses.
tproxy.txt netfilter: tproxy: remove nf_tproxy_core, keep tw sk assigned to skb
tuntap.txt net: docs: document multiqueue tuntap API
udplite.txt Documentation: update broken web addresses.
vortex.txt doc:net: Fix typo in Documentation/networking
vxge.txt neterion: remove reference to ifconfig
vxlan.txt vxlan: fix command usage in its doc
x25-iface.txt doc:net: Fix typo in Documentation/networking
x25.txt Linux-2.6.12-rc2
xfrm_proc.txt [XFRM]: Fix statistics.
xfrm_sync.txt [XFRM]: Fix aevent structuring to be more complete.
xfrm_sysctl.txt [IPSEC]: Add xfrm_sysctl.txt.
z8530drv.txt Linux-2.6.12-rc2


Intel(R) PRO/Wireless 2100 Driver for Linux in support of:

Intel(R) PRO/Wireless 2100 Network Connection

Copyright (C) 2003-2006, Intel Corporation


Version: git-1.1.5
Date   : January 25, 2006

1. Introduction
2. Release git-1.1.5 Current Features
3. Command Line Parameters
4. Sysfs Helper Files
5. Radio Kill Switch
6. Dynamic Firmware
7. Power Management
8. Support
9. License



Intel wireless LAN adapters are engineered, manufactured, tested, and
quality checked to ensure that they meet all necessary local and
governmental regulatory agency requirements for the regions that they
are designated and/or marked to ship into. Since wireless LANs are
generally unlicensed devices that share spectrum with radars,
satellites, and other licensed and unlicensed devices, it is sometimes
necessary to dynamically detect, avoid, and limit usage to avoid
interference with these devices. In many instances Intel is required to
provide test data to prove regional and local compliance to regional and
governmental regulations before certification or approval to use the
product is granted. Intel's wireless LAN's EEPROM, firmware, and
software driver are designed to carefully control parameters that affect
radio operation and to ensure electromagnetic compliance (EMC). These
parameters include, without limitation, RF power, spectrum usage,
channel scanning, and human exposure.

For these reasons Intel cannot permit any manipulation by third parties
of the software provided in binary format with the wireless WLAN
adapters (e.g., the EEPROM and firmware). Furthermore, if you use any
patches, utilities, or code with the Intel wireless LAN adapters that
have been manipulated by an unauthorized party (i.e., patches,
utilities, or code (including open source code modifications) which have
not been validated by Intel), (i) you will be solely responsible for
ensuring the regulatory compliance of the products, (ii) Intel will bear
no liability, under any theory of liability for any issues associated
with the modified products, including without limitation, claims under
the warranty and/or issues arising from regulatory non-compliance, and
(iii) Intel will not provide or be required to assist in providing
support to any third parties for such modified products.

Note: Many regulatory agencies consider Wireless LAN adapters to be
modules, and accordingly, condition system-level regulatory approval
upon receipt and review of test data documenting that the antennas and
system configuration do not cause the EMC and radio operation to be

The drivers available for download from SourceForge are provided as a
part of a development project.  Conformance to local regulatory
requirements is the responsibility of the individual developer.  As
such, if you are interested in deploying or shipping a driver as part of
solution intended to be used for purposes other than development, please
obtain a tested driver from Intel Customer Support at:

1. Introduction

This document provides a brief overview of the features supported by the 
IPW2100 driver project.  The main project website, where the latest 
development version of the driver can be found, is:

There you can find the not only the latest releases, but also information about
potential fixes and patches, as well as links to the development mailing list
for the driver project.

2. Release git-1.1.5 Current Supported Features
- Managed (BSS) and Ad-Hoc (IBSS)
- WEP (shared key and open)
- Wireless Tools support 
- 802.1x (tested with XSupplicant 1.0.1)

Enabled (but not supported) features:
- Monitor/RFMon mode

The distinction between officially supported and enabled is a reflection
on the amount of validation and interoperability testing that has been
performed on a given feature.

3. Command Line Parameters

If the driver is built as a module, the following optional parameters are used
by entering them on the command line with the modprobe command using this

	modprobe ipw2100 [<option>=<VAL1><,VAL2>...]

For example, to disable the radio on driver loading, enter:

	modprobe ipw2100 disable=1

The ipw2100 driver supports the following module parameters:

Name		Value		Example:
debug		0x0-0xffffffff	debug=1024
mode		0,1,2		mode=1   /* AdHoc */
channel		int		channel=3 /* Only valid in AdHoc or Monitor */
associate	boolean		associate=0 /* Do NOT auto associate */
disable		boolean		disable=1 /* Do not power the HW */

4. Sysfs Helper Files

There are several ways to control the behavior of the driver.  Many of the 
general capabilities are exposed through the Wireless Tools (iwconfig).  There
are a few capabilities that are exposed through entries in the Linux Sysfs.

----- Driver Level ------
For the driver level files, look in /sys/bus/pci/drivers/ipw2100/

	This controls the same global as the 'debug' module parameter.  For 
        information on the various debugging levels available, run the 'dvals'
	script found in the driver source directory.

	NOTE:  'debug_level' is only enabled if CONFIG_IPW2100_DEBUG is turn

----- Device Level ------
For the device level files look in

For example:

For the device level files, see /sys/bus/pci/drivers/ipw2100:

	read - 
	0 = RF kill not enabled (radio on)
	1 = SW based RF kill active (radio off)
	2 = HW based RF kill active (radio off)
	3 = Both HW and SW RF kill active (radio off)
	write -
	0 = If SW based RF kill active, turn the radio back on
	1 = If radio is on, activate SW based RF kill

	NOTE: If you enable the SW based RF kill and then toggle the HW
  	based RF kill from ON -> OFF -> ON, the radio will NOT come back on

5. Radio Kill Switch
Most laptops provide the ability for the user to physically disable the radio.
Some vendors have implemented this as a physical switch that requires no
software to turn the radio off and on.  On other laptops, however, the switch
is controlled through a button being pressed and a software driver then making
calls to turn the radio off and on.  This is referred to as a "software based
RF kill switch"

See the Sysfs helper file 'rf_kill' for determining the state of the RF switch
on your system.

6. Dynamic Firmware
As the firmware is licensed under a restricted use license, it can not be 
included within the kernel sources.  To enable the IPW2100 you will need a 
firmware image to load into the wireless NIC's processors.

You can obtain these images from <>.

See INSTALL for instructions on installing the firmware.

7. Power Management
The IPW2100 supports the configuration of the Power Save Protocol 
through a private wireless extension interface.  The IPW2100 supports 
the following different modes:

	off	No power management.  Radio is always on.
	on	Automatic power management
	1-5	Different levels of power management.  The higher the 
		number the greater the power savings, but with an impact to 
		packet latencies. 

Power management works by powering down the radio after a certain 
interval of time has passed where no packets are passed through the 
radio.  Once powered down, the radio remains in that state for a given 
period of time.  For higher power savings, the interval between last 
packet processed to sleep is shorter and the sleep period is longer.

When the radio is asleep, the access point sending data to the station 
must buffer packets at the AP until the station wakes up and requests 
any buffered packets.  If you have an AP that does not correctly support 
the PSP protocol you may experience packet loss or very poor performance 
while power management is enabled.  If this is the case, you will need 
to try and find a firmware update for your AP, or disable power 
management (via `iwconfig eth1 power off`)

To configure the power level on the IPW2100 you use a combination of 
iwconfig and iwpriv.  iwconfig is used to turn power management on, off, 
and set it to auto.

	iwconfig eth1 power off    Disables radio power down
	iwconfig eth1 power on     Enables radio power management to 
				   last set level (defaults to AUTO)
	iwpriv eth1 set_power 0    Sets power level to AUTO and enables 
				   power management if not previously 
	iwpriv eth1 set_power 1-5  Set the power level as specified, 
				   enabling power management if not 
				   previously enabled.

You can view the current power level setting via:
	iwpriv eth1 get_power

It will return the current period or timeout that is configured as a string
in the form of xxxx/yyyy (z) where xxxx is the timeout interval (amount of
time after packet processing), yyyy is the period to sleep (amount of time to 
wait before powering the radio and querying the access point for buffered
packets), and z is the 'power level'.  If power management is turned off the
xxxx/yyyy will be replaced with 'off' -- the level reported will be the active
level if `iwconfig eth1 power on` is invoked.

8. Support

For general development information and support,
go to:

The ipw2100 1.1.0 driver and firmware can be downloaded from:

For installation support on the ipw2100 1.1.0 driver on Linux kernels 
2.6.8 or greater, email support is available from:

9. License

  Copyright(c) 2003 - 2006 Intel Corporation. All rights reserved.

  This program is free software; you can redistribute it and/or modify it 
  under the terms of the GNU General Public License (version 2) as 
  published by the Free Software Foundation.
  This program is distributed in the hope that it will be useful, but WITHOUT 
  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for 
  more details.
  You should have received a copy of the GNU General Public License along with
  this program; if not, write to the Free Software Foundation, Inc., 59 
  Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  The full GNU General Public License is included in this distribution in the
  file called LICENSE.
  License Contact Information:
  James P. Ketrenos <>
  Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497

Something went wrong with that request. Please try again.