kernel-ark/drivers/net/wimax/i2400m
Inaky Perez-Gonzalez c747583d19 wimax/i2400m: implement RX reorder support
Allow the device to give the driver RX data with reorder information.

When that is done, the device will indicate the driver if a packet has
to be held in a (sorted) queue. It will also tell the driver when held
packets have to be released to the OS.

This is done to improve the WiMAX-protocol level retransmission
support when missing frames are detected.

The code docs provide details about the implementation.

In general, this just hooks into the RX path in rx.c; if a packet with
the reorder bit in the RX header is detected, the reorder information
in the header is extracted and one of the four main reorder operations
are executed. In one case (queue) no packet will be delivered to the
networking stack, just queued, whereas in the others (reset, update_ws
and queue_update_ws), queued packet might be delivered depending on
the window start for the specific queue.

The modifications to files other than rx.c are:

- control.c: during device initialization, enable reordering support
  if the rx_reorder_disabled module parameter is not enabled

- driver.c: expose a rx_reorder_disable module parameter and call
  i2400m_rx_setup/release() to initialize/shutdown RX reorder
  support.

- i2400m.h: introduce members in 'struct i2400m' needed for
  implementing reorder support.

- linux/i2400m.h: introduce TLVs, commands and constant definitions
  related to RX reorder

Last but not least, the rx reorder code includes an small circular log
where the last N reorder operations are recorded to be displayed in
case of inconsistency. Otherwise diagnosing issues would be almost
impossible.

Signed-off-by: Inaky Perez-Gonzalez <inaky@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-03-02 03:10:28 -08:00
..
control.c wimax/i2400m: implement RX reorder support 2009-03-02 03:10:28 -08:00
debug-levels.h wimax/i2400m: allow control of the base-station idle mode timeout 2009-03-02 03:10:25 -08:00
debugfs.c wimax: fix build issue when debugfs is disabled 2009-01-29 17:18:31 -08:00
driver.c wimax/i2400m: implement RX reorder support 2009-03-02 03:10:28 -08:00
fw.c wimax/i2400m: add the ability to fallback to other firmware files if the default is not there 2009-03-02 03:10:23 -08:00
i2400m-sdio.h i2400m/SDIO: header for the SDIO subdriver 2009-01-07 10:00:22 -08:00
i2400m-usb.h i2400m/USB: header for the USB bus driver 2009-01-07 10:00:21 -08:00
i2400m.h wimax/i2400m: implement RX reorder support 2009-03-02 03:10:28 -08:00
Kconfig i2400m: Makefile and Kconfig 2009-01-07 10:00:22 -08:00
Makefile wimax/i2400m: allow control of the base-station idle mode timeout 2009-03-02 03:10:25 -08:00
netdev.c wimax: replace uses of __constant_{endian} 2009-03-02 03:10:27 -08:00
op-rfkill.c
rx.c wimax/i2400m: implement RX reorder support 2009-03-02 03:10:28 -08:00
sdio-debug-levels.h i2400m/SDIO: header for the SDIO subdriver 2009-01-07 10:00:22 -08:00
sdio-fw.c i2400m/SDIO: firmware upload backend 2009-01-07 10:00:22 -08:00
sdio-rx.c i2400m/SDIO: TX and RX path backends 2009-01-07 10:00:22 -08:00
sdio-tx.c i2400m/SDIO: TX and RX path backends 2009-01-07 10:00:22 -08:00
sdio.c wimax/i2400m: add the ability to fallback to other firmware files if the default is not there 2009-03-02 03:10:23 -08:00
sysfs.c wimax/i2400m: allow control of the base-station idle mode timeout 2009-03-02 03:10:25 -08:00
tx.c i2400m: RX and TX data/control paths 2009-01-07 10:00:19 -08:00
usb-debug-levels.h i2400m/USB: header for the USB bus driver 2009-01-07 10:00:21 -08:00
usb-fw.c i2400m/USB: firmware upload backend 2009-01-07 10:00:21 -08:00
usb-notif.c wimax: struct device - replace bus_id with dev_name(), dev_set_name() 2009-03-02 03:10:26 -08:00
usb-rx.c wimax/i2400m: error paths that need to free an skb should use kfree_skb() 2009-01-19 17:58:08 -08:00
usb-tx.c i2400m/USB: TX and RX path backends 2009-01-07 10:00:21 -08:00
usb.c wimax/i2400m: add the ability to fallback to other firmware files if the default is not there 2009-03-02 03:10:23 -08:00