GitHub/LineageOS/android_kernel_motorola_exynos9610.git
15 years agomv643xx_eth: implement ethtool rx/tx ring size query and resizing
Lennert Buytenhek [Thu, 12 Feb 2009 14:07:37 +0000 (14:07 +0000)]
mv643xx_eth: implement ethtool rx/tx ring size query and resizing

Rename the mp->default_[rt]x_ring_size variables to ->[rt]x_ring_size,
allow them to be read via the standard ethtool ->get_ringparam() op,
and add a ->set_ringparam() op to allow resizing them at run time.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agomv643xx_eth: rework interrupt coalescing, and export via ethtool
Lennert Buytenhek [Thu, 12 Feb 2009 14:07:09 +0000 (14:07 +0000)]
mv643xx_eth: rework interrupt coalescing, and export via ethtool

This patch:
- increases the precision of the receive/transmit interrupt
  coalescing register value computations by using 64bit temporaries;
- adds functions to read the current hardware coalescing register
  values and convert them back to usecs;
- exports the {get,set} {rx,tx} coal methods via the standard
  ethtool coalescing interface.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agomv643xx_eth: unify ethtool ops for phy'd and phy-less interfaces
Lennert Buytenhek [Thu, 12 Feb 2009 14:06:46 +0000 (14:06 +0000)]
mv643xx_eth: unify ethtool ops for phy'd and phy-less interfaces

It's a waste having two different versions of this structure around
when the differences between ethtool ops for phy'd and phy-less
interfaces are so minor.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agodrivers/isdn/hardware/mISDN: change type of hfc_jiffies to unsigned long
Hannes Eder [Sat, 14 Feb 2009 13:10:33 +0000 (13:10 +0000)]
drivers/isdn/hardware/mISDN: change type of hfc_jiffies to unsigned long

Jiffies are unsigned long, make sure we fit in jiffies store variable
on archs with bits per long > 32.

Patch suggested by Jiri Slaby.

Signed-off-by: Hannes Eder <hannes@hanneseder.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agodrivers/isdn/mISDN: fix sparse warnings: make symbols static
Hannes Eder [Thu, 12 Feb 2009 09:32:41 +0000 (09:32 +0000)]
drivers/isdn/mISDN: fix sparse warnings: make symbols static

Fix this sparse warnings:
  drivers/isdn/mISDN/clock.c:44:1: warning: symbol 'iclock_lock' was not declared. Should it be static?
  drivers/isdn/mISDN/clock.c:45:9: warning: symbol 'iclock_count' was not declared. Should it be static?
  drivers/isdn/mISDN/clock.c:46:17: warning: symbol 'iclock_tv' was not declared. Should it be static?
  drivers/isdn/mISDN/clock.c:47:9: warning: symbol 'iclock_tv_valid' was not declared. Should it be static?
  drivers/isdn/mISDN/clock.c:48:20: warning: symbol 'iclock_current' was not declared. Should it be static?

Signed-off-by: Hannes Eder <hannes@hanneseder.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agodrivers/isdn/hardware/mISDN: fix sparse warnings: make symbols static
Hannes Eder [Thu, 12 Feb 2009 09:28:40 +0000 (09:28 +0000)]
drivers/isdn/hardware/mISDN: fix sparse warnings: make symbols static

Fix this sparse warnings:
  drivers/isdn/hardware/mISDN/hfcpci.c:59:19: warning: symbol 'hfc_tl' was not declared. Should it be static?
  drivers/isdn/hardware/mISDN/hfcpci.c:60:9: warning: symbol 'hfc_jiffies' was not declared. Should it be static?
  drivers/isdn/hardware/mISDN/hfcsusb.h:201:6: warning: symbol 'conf_str' was not declared. Should it be static?
  drivers/isdn/hardware/mISDN/hfcsusb.h:319:12: warning: symbol 'HFC_TE_LAYER1_STATES' was not declared. Should it be static?
  drivers/isdn/hardware/mISDN/hfcsusb.h:331:12: warning: symbol 'HFC_NT_LAYER1_STATES' was not declared. Should it be static?
  drivers/isdn/hardware/mISDN/hfcsusb.c:38:12: warning: symbol 'hfcsusb_rev' was not declared. Should it be static?
  drivers/isdn/hardware/mISDN/hfcsusb.c:978:1: warning: symbol 'fill_isoc_urb' was not declared. Should it be static?
  drivers/isdn/hardware/mISDN/hfcsusb.c:1724:1: warning: symbol 'setup_hfcsusb' was not declared. Should it be static?

Signed-off-by: Hannes Eder <hannes@hanneseder.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Version
Eilon Greenstein [Thu, 12 Feb 2009 08:38:35 +0000 (08:38 +0000)]
bnx2x: Version

And updating the year

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Clean-up
Eilon Greenstein [Thu, 12 Feb 2009 08:38:32 +0000 (08:38 +0000)]
bnx2x: Clean-up

Whitespaces, empty lines, 80 columns, indentations and removing redundant
parenthesis

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Comments and prints
Eilon Greenstein [Thu, 12 Feb 2009 08:38:30 +0000 (08:38 +0000)]
bnx2x: Comments and prints

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Re-arrange module parameters
Eilon Greenstein [Thu, 12 Feb 2009 08:38:27 +0000 (08:38 +0000)]
bnx2x: Re-arrange module parameters

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Moving includes
Eilon Greenstein [Thu, 12 Feb 2009 08:38:25 +0000 (08:38 +0000)]
bnx2x: Moving includes

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Driver dump
Eilon Greenstein [Thu, 12 Feb 2009 08:38:22 +0000 (08:38 +0000)]
bnx2x: Driver dump

Re-arrange the driver debug print to support the Tx multi-queue and add support
for debug prints at the end of the ring (when start<end)

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Removing unused struct
Eilon Greenstein [Thu, 12 Feb 2009 08:38:20 +0000 (08:38 +0000)]
bnx2x: Removing unused struct

Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Sparse endianity annotation
Eilon Greenstein [Thu, 12 Feb 2009 08:38:17 +0000 (08:38 +0000)]
bnx2x: Sparse endianity annotation

Resolving the majority of the issues, but there are still some left for future
patches.

Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Removing redundant macros
Eilon Greenstein [Thu, 12 Feb 2009 08:38:14 +0000 (08:38 +0000)]
bnx2x: Removing redundant macros

Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Better struct naming
Eilon Greenstein [Thu, 12 Feb 2009 08:38:11 +0000 (08:38 +0000)]
bnx2x: Better struct naming

This is the device info from the chip shared memory - rename to avoid confusion

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Loopback in diag mode
Eilon Greenstein [Thu, 12 Feb 2009 08:38:08 +0000 (08:38 +0000)]
bnx2x: Loopback in diag mode

When loading in diag mode, set the device to loopback instead of normal link and
then changing it to loopback mode

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Optimize chip MPS configuration
Eilon Greenstein [Thu, 12 Feb 2009 08:38:01 +0000 (08:38 +0000)]
bnx2x: Optimize chip MPS configuration

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Memory clean up on failure
Eilon Greenstein [Thu, 12 Feb 2009 08:37:57 +0000 (08:37 +0000)]
bnx2x: Memory clean up on failure

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Using nvram default WoL config
Eilon Greenstein [Thu, 12 Feb 2009 08:37:52 +0000 (08:37 +0000)]
bnx2x: Using nvram default WoL config

The driver default WoL setting is set to the nvram default value

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: smp_mb and not just smp_rmb
Eilon Greenstein [Thu, 12 Feb 2009 08:37:25 +0000 (08:37 +0000)]
bnx2x: smp_mb and not just smp_rmb

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Increasing FW timeout
Eilon Greenstein [Thu, 12 Feb 2009 08:37:23 +0000 (08:37 +0000)]
bnx2x: Increasing FW timeout

When enabling many debug prints, it can take a while before processing an event.
To ease the debug process, allow bigger timeout before giving up

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Returning EBUSY in debug mode as well
Eilon Greenstein [Thu, 12 Feb 2009 08:37:21 +0000 (08:37 +0000)]
bnx2x: Returning EBUSY in debug mode as well

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Manual setting for MRRS
Eilon Greenstein [Thu, 12 Feb 2009 08:37:19 +0000 (08:37 +0000)]
bnx2x: Manual setting for MRRS

Allows better debug capabilities if the user wants to force an MRRS value

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Using registers name
Eilon Greenstein [Thu, 12 Feb 2009 08:37:16 +0000 (08:37 +0000)]
bnx2x: Using registers name

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Pre emphasis configuration
Eilon Greenstein [Thu, 12 Feb 2009 08:37:14 +0000 (08:37 +0000)]
bnx2x: Pre emphasis configuration

Supporting non-default pre-emphasis settings for the internal and some external
PHYs

Signed-off-by: Yaniv Rosner <yanivr@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: GMII not SGMII
Eilon Greenstein [Thu, 12 Feb 2009 08:37:12 +0000 (08:37 +0000)]
bnx2x: GMII not SGMII

Fixing the function name

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Removing CL73 code
Eilon Greenstein [Thu, 12 Feb 2009 08:37:09 +0000 (08:37 +0000)]
bnx2x: Removing CL73 code

This code is disabled, so removing it to avoid confusion

Signed-off-by: Yaniv Rosner <yanivr@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Using the HW 5th lane
Eilon Greenstein [Thu, 12 Feb 2009 08:37:07 +0000 (08:37 +0000)]
bnx2x: Using the HW 5th lane

This 1G interface (on top of the 4 lanes 10G interface) requires additional
setting to work in CL45

Signed-off-by: Yaniv Rosner <yanivr@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: EMAC reset
Eilon Greenstein [Thu, 12 Feb 2009 08:37:04 +0000 (08:37 +0000)]
bnx2x: EMAC reset

The NIG_ENABLE does not reset the emac. Replace it with explicit reset

Signed-off-by: Yaniv Rosner <yanivr@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Saving PHY FW version
Eilon Greenstein [Thu, 12 Feb 2009 08:37:02 +0000 (08:37 +0000)]
bnx2x: Saving PHY FW version

Some PHYs (like the BCM8726) FW version cannot be read after activating the
PHY, so we need to save this information

Signed-off-by: Yaniv Rosner <yanivr@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Supporting BCM8481 PHY
Eilon Greenstein [Thu, 12 Feb 2009 08:37:00 +0000 (08:37 +0000)]
bnx2x: Supporting BCM8481 PHY

Signed-off-by: Yaniv Rosner <yanivr@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: PHY lock list
Eilon Greenstein [Thu, 12 Feb 2009 08:36:58 +0000 (08:36 +0000)]
bnx2x: PHY lock list

Some dual port PHY require HW lock since they are used by both interfaces
(different driver instances). Since this list is getting longer, update a
parameter at load time instead of calculating it on runtime

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Supporting BCM8726 PHY
Eilon Greenstein [Thu, 12 Feb 2009 08:36:55 +0000 (08:36 +0000)]
bnx2x: Supporting BCM8726 PHY

Also adding the ability to recognize the optic module and disable it if it is
not authorized for safety reasons - since this feature might upset some users
which are willing to take the risk, it is optional and can be disabled by
setting an nvram bit (or a trivial driver patch to set this bit).
This dual port PHY requires special handling if the ports are swapped.

Signed-off-by: Yaniv Rosner <yanivr@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: GPIO accessories
Eilon Greenstein [Thu, 12 Feb 2009 08:36:52 +0000 (08:36 +0000)]
bnx2x: GPIO accessories

A GPIO is used with the 8726 PHY. Adding the GPIO related functions in this

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Removing redundant device parameters
Eilon Greenstein [Thu, 12 Feb 2009 08:36:49 +0000 (08:36 +0000)]
bnx2x: Removing redundant device parameters

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Removing the board type
Eilon Greenstein [Thu, 12 Feb 2009 08:36:47 +0000 (08:36 +0000)]
bnx2x: Removing the board type

There are too many different board types and this field is not scalable.
Removing it and making decisions according to other fields

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Flow control enhancement
Eilon Greenstein [Thu, 12 Feb 2009 08:36:43 +0000 (08:36 +0000)]
bnx2x: Flow control enhancement

Setting better HW thresholds and enabling FW capabilities for better
enforcement. Also set the HW to more efficiently use the internal buffers if
this is a single port design

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: BW shaper enhancements
Eilon Greenstein [Thu, 12 Feb 2009 08:36:40 +0000 (08:36 +0000)]
bnx2x: BW shaper enhancements

Some of the configuration can be set when loading the device and shouldn't be
re-calculated after each link up indication since it is not dependent on the
link speed

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Moving skb_record_rx_queue
Eilon Greenstein [Thu, 12 Feb 2009 08:36:37 +0000 (08:36 +0000)]
bnx2x: Moving skb_record_rx_queue

Should be called for all incoming packets and not just for GRO packets

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Per queue statistics
Eilon Greenstein [Thu, 12 Feb 2009 08:36:33 +0000 (08:36 +0000)]
bnx2x: Per queue statistics

Re-ordering the statistics to enhance readability and adding per queue
statistics (available via ethtool -S)

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Removing microcode assertion check
Eilon Greenstein [Thu, 12 Feb 2009 08:36:27 +0000 (08:36 +0000)]
bnx2x: Removing microcode assertion check

This check is unreliable since latest MC can issue warnings on rare occasions
which are not fatal errors

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Disabling interrupts after iSCSI-boot
Eilon Greenstein [Thu, 12 Feb 2009 08:36:23 +0000 (08:36 +0000)]
bnx2x: Disabling interrupts after iSCSI-boot

Before initializing the chip after iSCSI boot, the interrupts of the function
that was used to boot must be disabled. That means that the driver needs to set
the chip as if it is the iSCSI PCI function - this bug is exposed only with MSI

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: System-page alignment
Eilon Greenstein [Thu, 12 Feb 2009 08:36:18 +0000 (08:36 +0000)]
bnx2x: System-page alignment

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: MSI support
Eilon Greenstein [Thu, 12 Feb 2009 08:36:15 +0000 (08:36 +0000)]
bnx2x: MSI support

Enabling MSI on top of MSI-X and INTA. Also changing the module parameter to
allow choosing INTA or MSI even when MSI-X is available. The default status
block should not be reversed for endianity. Since MSI can issue
re-configuration, the interrupt disable function now requires mmiowb

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Multi-queue
Eilon Greenstein [Thu, 12 Feb 2009 08:36:11 +0000 (08:36 +0000)]
bnx2x: Multi-queue

Adding Tx multi-queue and enabling multi-queue by default

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: New FW
Eilon Greenstein [Mon, 16 Feb 2009 07:24:08 +0000 (23:24 -0800)]
bnx2x: New FW

This is the FW blob and the relevant definitions without any logic. It
also contains the minimal mandatory code changes to work with this FW
but it does not contain enabling of the new features that this FW
provides.

This FW is needed for:
- More efficient multi-queue
- per queue statistics
- Big-endian issue with MSI
- Improved pause response

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoigb: use timecompare to implement hardware time stamping
Patrick Ohly [Thu, 12 Feb 2009 05:03:43 +0000 (05:03 +0000)]
igb: use timecompare to implement hardware time stamping

Both TX and RX hardware time stamping are implemented.  Due to
hardware limitations it is not possible to verify reliably which
packet was time stamped when multiple were pending for sending; this
could be solved by only allowing one packet marked for hardware time
stamping into the queue (not implemented yet).

RX time stamping relies on the flag in the packet descriptor which
marks packets that were time stamped. In "all packet" mode this flag
is not set. TODO: also support that mode (even though it'll suffer
from race conditions).

Signed-off-by: John Ronciak <john.ronciak@intel.com>
Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoigb: stub support for SIOCSHWTSTAMP
Patrick Ohly [Thu, 12 Feb 2009 05:03:42 +0000 (05:03 +0000)]
igb: stub support for SIOCSHWTSTAMP

Signed-off-by: John Ronciak <john.ronciak@intel.com>
Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoigb: access to NIC time
Patrick Ohly [Thu, 12 Feb 2009 05:03:41 +0000 (05:03 +0000)]
igb: access to NIC time

Adds the register definitions and code to read the time
register.

Signed-off-by: John Ronciak <john.ronciak@intel.com>
Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agonet: pass new SIOCSHWTSTAMP through to device drivers
Patrick Ohly [Thu, 12 Feb 2009 05:03:40 +0000 (05:03 +0000)]
net: pass new SIOCSHWTSTAMP through to device drivers

Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoip: support for TX timestamps on UDP and RAW sockets
Patrick Ohly [Thu, 12 Feb 2009 05:03:39 +0000 (05:03 +0000)]
ip: support for TX timestamps on UDP and RAW sockets

Instructions for time stamping outgoing packets are take from the
socket layer and later copied into the new skb.

Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agonet: socket infrastructure for SO_TIMESTAMPING
Patrick Ohly [Thu, 12 Feb 2009 05:03:38 +0000 (05:03 +0000)]
net: socket infrastructure for SO_TIMESTAMPING

The overlap with the old SO_TIMESTAMP[NS] options is handled so
that time stamping in software (net_enable_timestamp()) is
enabled when SO_TIMESTAMP[NS] and/or SO_TIMESTAMPING_RX_SOFTWARE
is set.  It's disabled if all of these are off.

Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agonet: infrastructure for hardware time stamping
Patrick Ohly [Thu, 12 Feb 2009 05:03:37 +0000 (05:03 +0000)]
net: infrastructure for hardware time stamping

The additional per-packet information (16 bytes for time stamps, 1
byte for flags) is stored for all packets in the skb_shared_info
struct. This implementation detail is hidden from users of that
information via skb_* accessor functions. A separate struct resp.
union is used for the additional information so that it can be
stored/copied easily outside of skb_shared_info.

Compared to previous implementations (reusing the tstamp field
depending on the context, optional additional structures) this
is the simplest solution. It does not extend sk_buff itself.

TX time stamping is implemented in software if the device driver
doesn't support hardware time stamping.

The new semantic for hardware/software time stamping around
ndo_start_xmit() is based on two assumptions about existing
network device drivers which don't support hardware time
stamping and know nothing about it:
 - they leave the new skb_shared_tx unmodified
 - the keep the connection to the originating socket in skb->sk
   alive, i.e., don't call skb_orphan()

Given that skb_shared_tx is new, the first assumption is safe.
The second is only true for some drivers. As a result, software
TX time stamping currently works with the bnx2 driver, but not
with the unmodified igb driver (the two drivers this patch series
was tested with).

Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agonet: new user space API for time stamping of incoming and outgoing packets
Patrick Ohly [Thu, 12 Feb 2009 05:03:36 +0000 (05:03 +0000)]
net: new user space API for time stamping of incoming and outgoing packets

User space can request hardware and/or software time stamping.
Reporting of the result(s) via a new control message is enabled
separately for each field in the message because some of the
fields may require additional computation and thus cause overhead.
User space can tell the different kinds of time stamps apart
and choose what suits its needs.

When a TX timestamp operation is requested, the TX skb will be cloned
and the clone will be time stamped (in hardware or software) and added
to the socket error queue of the skb, if the skb has a socket
associated with it.

The actual TX timestamp will reach userspace as a RX timestamp on the
cloned packet. If timestamping is requested and no timestamping is
done in the device driver (potentially this may use hardware
timestamping), it will be done in software after the device's
start_hard_xmit routine.

Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agotimecompare: generic infrastructure to map between two time bases
Patrick Ohly [Thu, 12 Feb 2009 05:03:35 +0000 (05:03 +0000)]
timecompare: generic infrastructure to map between two time bases

Mapping from a struct timecounter to a time returned by functions like
ktime_get_real() is implemented. This is sufficient to use this code
in a network device driver which wants to support hardware time
stamping and transformation of hardware time stamps to system time.

The interface could have been made more versatile by not depending on
a time counter, but this wasn't done to avoid writing glue code
elsewhere.

The method implemented here is the one used and analyzed under the name
"assisted PTP" in the LCI PTP paper:
http://www.linuxclustersinstitute.org/conferences/archive/2008/PDF/Ohly_92221.pdf

Acked-by: John Stultz <johnstul@us.ibm.com>
Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoclocksource: allow usage independent of timekeeping.c
Patrick Ohly [Thu, 12 Feb 2009 05:03:34 +0000 (05:03 +0000)]
clocksource: allow usage independent of timekeeping.c

So far struct clocksource acted as the interface between time/timekeeping.c
and hardware. This patch generalizes the concept so that a similar
interface can also be used in other contexts. For that it introduces
new structures and related functions *without* touching the existing
struct clocksource.

The reasons for adding these new structures to clocksource.[ch] are
* the APIs are clearly related
* struct clocksource could be cleaned up to use the new structs
* avoids proliferation of files with similar names (timesource.h?
  timecounter.h?)

As outlined in the discussion with John Stultz, this patch adds
* struct cyclecounter: stateless API to hardware which counts clock cycles
* struct timecounter: stateful utility code built on a cyclecounter which
  provides a nanosecond counter
* only the function to read the nanosecond counter; deltas are used internally
  and not exposed to users of timecounter

The code does no locking of the shared state. It must be called at least
as often as the cycle counter wraps around to detect these wrap arounds.
Both is the responsibility of the timecounter user.

Acked-by: John Stultz <johnstul@us.ibm.com>
Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoe1000e: Remove mutex_trylock and associated WARN on failure.
dave graham [Sun, 15 Feb 2009 07:46:10 +0000 (23:46 -0800)]
e1000e: Remove mutex_trylock and associated WARN on failure.

Single-thread access must be ensured for ICH8 NVM and PHY operations.
This synchronization is provided by the nvm_mutex. To assist in
understanding the contexts from which this code could be reached,
a WARN was output if the mutex was not going to be immediately
acquirable (if !mutex_trylock()). The code has now been optimized,
and we have verified that the few remaining mutex contentions are
reasonable and non-blocking, and it is time to remove the
mutex_trylock() and WARN messages.

Signed-off-by: dave graham <david.graham@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoMerge branch 'master' of /home/davem/src/GIT/linux-2.6/
David S. Miller [Sun, 15 Feb 2009 07:12:00 +0000 (23:12 -0800)]
Merge branch 'master' of /home/davem/src/GIT/linux-2.6/

Conflicts:
drivers/net/wireless/iwlwifi/iwl-agn.c
drivers/net/wireless/iwlwifi/iwl3945-base.c

15 years agoMerge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wirel...
David S. Miller [Sun, 15 Feb 2009 07:06:44 +0000 (23:06 -0800)]
Merge branch 'master' of git://git./linux/kernel/git/linville/wireless-next-2.6

15 years agonet: replace __constant_{endian} uses in net headers
Harvey Harrison [Sun, 15 Feb 2009 06:58:35 +0000 (22:58 -0800)]
net: replace __constant_{endian} uses in net headers

Base versions handle constant folding now.  For headers exposed to
userspace, we must only expose the __ prefixed versions.

Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agorndis: remove private wrapper of __constant_cpu_to_le32
Harvey Harrison [Sun, 15 Feb 2009 06:56:56 +0000 (22:56 -0800)]
rndis: remove private wrapper of __constant_cpu_to_le32

Use cpu_to_le32 directly as it handles constant folding now, replace direct
uses of __constant_cpu_to_{endian} as well.

Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
Acked-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agotun: Fix merge error
Herbert Xu [Sun, 15 Feb 2009 04:46:39 +0000 (20:46 -0800)]
tun: Fix merge error

When forward-porting the tun accounting patch I managed to break
the send path compltely by dropping the tun_get call.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoLinux 2.6.29-rc5
Linus Torvalds [Fri, 13 Feb 2009 23:31:30 +0000 (15:31 -0800)]
Linux 2.6.29-rc5

15 years agoath9k: add udelay() for AR5416 on ath9k_hw_configpcipowersave()
Luis R. Rodriguez [Tue, 10 Feb 2009 23:35:27 +0000 (15:35 -0800)]
ath9k: add udelay() for AR5416 on ath9k_hw_configpcipowersave()

We need the udelay() for all families, including AR5416.

Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agoath9k: add comments for ath9k_hw_configpcipowersave()
Luis R. Rodriguez [Tue, 10 Feb 2009 23:35:22 +0000 (15:35 -0800)]
ath9k: add comments for ath9k_hw_configpcipowersave()

This is used for ASPM.

Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agoiwlwifi: fix FAT channel config for 5000 series
Reinette Chatre [Tue, 10 Feb 2009 23:19:04 +0000 (15:19 -0800)]
iwlwifi: fix FAT channel config for 5000 series

The test to find out if we have FAT channels do not consider that
the value of regulatory_bands for the 5000 series is larger than its
eeprom size. Using the eeprom size is strange in itself.

Use a new EEPROM_REGULATORY_BAND_NO_FAT to indicate no FAT support
and test for that explicitly.

Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Acked-by: Samuel Ortiz <samuel.ortiz@intel.com>
Tested-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agoiwlwifi: drop PCIe workaround applicable for development boards
Tomas Winkler [Tue, 10 Feb 2009 23:19:03 +0000 (15:19 -0800)]
iwlwifi: drop PCIe workaround applicable for development boards

This patch remove w/a used for development boards.
These boards are not available thus no need to keep it inside 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>
15 years agoiwlwifi: use pci registers defined in pci_regs.h
Tomas Winkler [Tue, 10 Feb 2009 23:19:02 +0000 (15:19 -0800)]
iwlwifi: use pci registers defined in pci_regs.h

This patch replaces where possible usage of pci register
defined in the driver by ones defined in pci_regs.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>
15 years agomac80211: split managed/ibss code a little more
Johannes Berg [Tue, 10 Feb 2009 20:26:03 +0000 (21:26 +0100)]
mac80211: split managed/ibss code a little more

It appears that you can completely mess up mac80211 in IBSS
mode by sending it a disassoc or deauth: it'll stop queues
and do a lot more but not ever do anything again. Fix this
by not handling all those frames in IBSS mode,

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agomac80211: fix IBSS auth
Johannes Berg [Tue, 10 Feb 2009 20:26:02 +0000 (21:26 +0100)]
mac80211: fix IBSS auth

The code beyond this point is supposed to be used for
non-IBSS (managed) mode only.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Cc: Jouni Malinen <j@w1.fi>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agomac80211: calculate wstats_flags on the fly
Johannes Berg [Tue, 10 Feb 2009 20:26:01 +0000 (21:26 +0100)]
mac80211: calculate wstats_flags on the fly

Just to make wext.c more self-contained.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agomac80211: use cfg80211s BSS infrastructure
Johannes Berg [Tue, 10 Feb 2009 20:26:00 +0000 (21:26 +0100)]
mac80211: use cfg80211s BSS infrastructure

Remove all the code from mac80211 to keep track of BSSes
and use the cfg80211-provided code completely.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agocfg80211: add more flexible BSS lookup
Johannes Berg [Tue, 10 Feb 2009 20:25:59 +0000 (21:25 +0100)]
cfg80211: add more flexible BSS lookup

Add a more flexible BSS lookup function so that mac80211 or
other drivers can actually use this for getting the BSS to
connect to.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agocfg80211: allow users to request removing a BSS
Johannes Berg [Tue, 10 Feb 2009 20:25:58 +0000 (21:25 +0100)]
cfg80211: allow users to request removing a BSS

This patch introduces cfg80211_unlink_bss, a function to
allow a driver to remove a BSS from the internal list and
make it not show up in scan results any more -- this is
to be used when the driver detects that the BSS is no
longer available.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agocfg80211: free_priv for BSS info
Johannes Berg [Tue, 10 Feb 2009 20:25:57 +0000 (21:25 +0100)]
cfg80211: free_priv for BSS info

When cfg80211 users have their own allocated data in the per-BSS
private data, they will need to free this when the BSS struct is
destroyed. Add a free_priv method and fix one place where the BSS
was kfree'd rather than released properly.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agomac80211: dont add BSS when creating IBSS
Johannes Berg [Tue, 10 Feb 2009 20:25:56 +0000 (21:25 +0100)]
mac80211: dont add BSS when creating IBSS

There's no need to create a BSS struct only to pass it to
ieee80211_sta_join_ibss, so refactor this function into
__ieee80211_sta_join_ibss which takes all the relevant
paramters, and ieee80211_sta_join_ibss which takes a BSS
struct (used when joining an IBSS that already has other
members).

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agocfg80211/nl80211: scanning (and mac80211 update to use it)
Johannes Berg [Tue, 10 Feb 2009 20:25:55 +0000 (21:25 +0100)]
cfg80211/nl80211: scanning (and mac80211 update to use it)

This patch adds basic scan capability to cfg80211/nl80211 and
changes mac80211 to use it. The BSS list that cfg80211 maintains
is made driver-accessible with a private area in each BSS struct,
but mac80211 doesn't yet use it. That's another large project.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agomac80211: further cleanups to stopping BA sessions
Johannes Berg [Tue, 10 Feb 2009 20:25:54 +0000 (21:25 +0100)]
mac80211: further cleanups to stopping BA sessions

Essentially consisting of passing the sta_info pointer around,
instead of repeatedly doing hash lookups.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agomac80211: RX aggregation: clean up stop session
Johannes Berg [Tue, 10 Feb 2009 20:25:53 +0000 (21:25 +0100)]
mac80211: RX aggregation: clean up stop session

Clean up the locking by splitting it into two functions,
this will also enable further cleanups of stopping all
sessions.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agomac80211: clean up BA session teardown
Johannes Berg [Tue, 10 Feb 2009 20:25:52 +0000 (21:25 +0100)]
mac80211: clean up BA session teardown

The sta_info pointer can very well be passed to
ieee80211_sta_tear_down_BA_sessions, this will
later allow us to pass it through even further.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agomac80211: fix aggregation timer lockups
Johannes Berg [Tue, 10 Feb 2009 20:25:51 +0000 (21:25 +0100)]
mac80211: fix aggregation timer lockups

As far as I can tell, there are possible lockups because both the RX
session_timer and TX addba_resp_timer are del_timer_sync'ed under
the sta spinlock which both timer functions take. Additionally, the
TX agg code seems to leak memory when TX aggregation is not disabled
before the sta_info is freed.

Fix this by making the free code a little smarter in the RX agg case,
and actually make the sta_info_destroy code free the TX agg info in
the TX agg case. We won't notify the peer, but it'll notice something
is wrong anyway, and normally this only happens after we've told it
in some other way we will no longer talk to it.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agomac80211: fix race in TX aggregation
Johannes Berg [Tue, 10 Feb 2009 20:25:50 +0000 (21:25 +0100)]
mac80211: fix race in TX aggregation

When disabling TX aggregation because it was rejected or from
the timer (it was not accepted), there is a window where we
first set the state to operation, unlock, and then undo the
whole thing. Avoid that by splitting up the stop function.
Also get rid of the pointless sta_info indirection in the timer.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agomac80211: document TX aggregation (and small cleanup)
Johannes Berg [Tue, 10 Feb 2009 20:25:49 +0000 (21:25 +0100)]
mac80211: document TX aggregation (and small cleanup)

Add documentation and move ieee80211_start_tx_ba_cb_irqsafe to right
after ieee80211_start_tx_ba_cb.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agomac80211: hardware should not deny going back to legacy
Johannes Berg [Tue, 10 Feb 2009 20:25:48 +0000 (21:25 +0100)]
mac80211: hardware should not deny going back to legacy

Doing so would be an MLME protocol violation when the peer disabled
the aggregation session. Quick driver review indicates that there are
error codes passed all over the drivers but cannot ever be nonzero
except in error conditions that would indicate mac80211 bugs.

No real changes here, since no drivers currently can return -EBUSY.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agomac80211: restrict aggregation to supported interface modes
Johannes Berg [Tue, 10 Feb 2009 20:25:47 +0000 (21:25 +0100)]
mac80211: restrict aggregation to supported interface modes

We can only support aggregation on AP/STA right now. HT isn't defined
for IBSS, WDS or MESH. In the WDS/MESH cases it's not clear what to
put into the IBSS field, and we don't handle that in the code at all.
Also fix the code to handle VLAN correctly.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agomac80211: restructure HT code
Johannes Berg [Tue, 10 Feb 2009 20:25:46 +0000 (21:25 +0100)]
mac80211: restructure HT code

Create two new files, agg-tx.c and agg-rx.c to make it clearer
which code is common (ht.c) and which is specific (agg-*.c).

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agomac80211: fix RX aggregation timeouts
Johannes Berg [Tue, 10 Feb 2009 20:25:45 +0000 (21:25 +0100)]
mac80211: fix RX aggregation timeouts

The values are in TUs (1.024ms), not ms.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agomac80211: remove stray aggregation debugfs definition
Johannes Berg [Tue, 10 Feb 2009 20:25:44 +0000 (21:25 +0100)]
mac80211: remove stray aggregation debugfs definition

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agomac80211: remove bssid argument from prepare_for_handlers
Johannes Berg [Tue, 10 Feb 2009 20:25:43 +0000 (21:25 +0100)]
mac80211: remove bssid argument from prepare_for_handlers

It's a little confusing to get the BSSID outside the function
and pass it in, when it's only needed for this function, so
change that.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agomac80211: fix beacon enable more
Johannes Berg [Tue, 10 Feb 2009 20:25:42 +0000 (21:25 +0100)]
mac80211: fix beacon enable more

Hopefully the last required fix ... disable beaconing
only on beaconing interfaces, and thus avoid calling
ieee80211_if_config for purely virtual interfaces
(those driver doesn't know about).

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agomac80211: reject extra IEs for probe request when hw_scan
Johannes Berg [Tue, 10 Feb 2009 20:25:41 +0000 (21:25 +0100)]
mac80211: reject extra IEs for probe request when hw_scan

We cannot currently hand off extra IEs to hw_scan, so reject
configuring extra IEs for probe request frames when hw_scan
is set.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Cc: Jouni Malinen <j@w1.fi>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agomac80211: properly validate/translate IW_AUTH_MFP values
Johannes Berg [Tue, 10 Feb 2009 20:25:40 +0000 (21:25 +0100)]
mac80211: properly validate/translate IW_AUTH_MFP values

Make sure nobody passes in bogus values, and translate the values
(although it isn't necessary).

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agozd1211rw: honour enable_beacon conf
Johannes Berg [Tue, 10 Feb 2009 20:25:39 +0000 (21:25 +0100)]
zd1211rw: honour enable_beacon conf

This makes zd1211rw honour enable_beacon, as well as fixing
a memory leak: the beacon skb is leaked when configuring it
to the hardware fails.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agomac80211: disable IBSS beacon before join
Johannes Berg [Tue, 10 Feb 2009 20:25:38 +0000 (21:25 +0100)]
mac80211: disable IBSS beacon before join

Before we have a probe response frame (which is used as the
beacon too) there's no need to ask drivers to beacon, they
will not get a beacon anyway.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agozd1211rw: do not ratelimit no-ops
Johannes Berg [Tue, 10 Feb 2009 20:25:37 +0000 (21:25 +0100)]
zd1211rw: do not ratelimit no-ops

It is rather confusing to see this in the log:
[  695.606877] __ratelimit: 40 callbacks suppressed
[  700.726878] __ratelimit: 40 callbacks suppressed

without ever seeing any actual message. This is because
zd1211rw doesn't compile out the net_ratelimit() call
properly if debugging is not enabled.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agomac80211: use ps-poll when dynamic power save mode is disabled
Kalle Valo [Tue, 10 Feb 2009 15:09:31 +0000 (17:09 +0200)]
mac80211: use ps-poll when dynamic power save mode is disabled

When a directed tim bit is set, mac80211 currently disables power save
ands sends a null frame to the AP. But if dynamic power save is
disabled, mac80211 will not enable power save ever gain. Fix this by
adding ps-poll functionality to mac80211. When a directed tim bit is
set, mac80211 sends a ps-poll frame to the AP and checks for the more
data bit in the returned data frames.

Using ps-poll is slower than waking up with null frame, but it's saves more
power in cases where the traffic is low. Userspace can control if either
ps-poll or null wakeup method is used by enabling and disabling dynamic
power save.

Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agomac80211: remove multicast check from check_tim()
Kalle Valo [Tue, 10 Feb 2009 15:09:24 +0000 (17:09 +0200)]
mac80211: remove multicast check from check_tim()

Currently mac80211 checks for the multicast tim bit from beacons,
disables power save and sends a null frame if the bit is set. This was
added to support ath9k. But this is a bit controversial because the AP will
send multicast frames immediately after the beacon and the time constraints
are really high. Relying mac80211 to be fast enough here might not be
reliable in all situations. And there's no need to send a null frame, AP
will send the frames immediately after the dtim beacon no matter what.

Also if dynamic power save is disabled (iwconfig wlan0 power timeout 0)
currently mac80211 disables power save whenever the multicast bit is set
but it's never enabled again after receiving the first multicast/broadcast
frame.

The current implementation is not usable on p54/stlc45xx and the
easiest way to fix this is to remove the multicast tim bit check
altogether. Handling multicast tim bit in host is rare, most of the
designs do this in firmware/hardware, so it's better not to have it in
mac80211. It's a lot better to do this in firmware/hardware, or if
that's not possible it could be done in the driver.

Also renamed the function to ieee80211_check_tim() to follow the style
of the file.

Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agoorinoco: Storage class should be before const qualifier
Tobias Klauser [Mon, 9 Feb 2009 22:06:53 +0000 (23:06 +0100)]
orinoco: Storage class should be before const qualifier

The C99 specification states in section 6.11.5:

The placement of a storage-class specifier other than at the beginning
of the declaration specifiers in a declaration is an obsolescent
feature.

Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
15 years agoath5k: Storage class should be before const qualifier
Tobias Klauser [Mon, 9 Feb 2009 22:05:40 +0000 (23:05 +0100)]
ath5k: Storage class should be before const qualifier

The C99 specification states in section 6.11.5:

The placement of a storage-class specifier other than at the beginning
of the declaration specifiers in a declaration is an obsolescent
feature.

Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Acked-by: Jiri Slaby <jirislaby@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>