kernel_optimize_test/Documentation/wimax
Inaky Perez-Gonzalez 3e91029ae0 i2400m: documentation and instructions for usage
The driver for the i2400m is a stacked driver. There is a core driver,
the bus-generic driver that has no knowledge or dependencies on how
the device is connected to the system; it only knows how to speak the
device protocol. Then there are the bus-specific drivers (for USB and
SDIO) that provide backends for the generic driver to communicate with
the device.

The bus generic driver connects to the network and WiMAX stacks on the
top side, and on the bottom to the bus-specific drivers.

Signed-off-by: Inaky Perez-Gonzalez <inaky@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-01-07 10:00:18 -08:00
..
README.i2400m i2400m: documentation and instructions for usage 2009-01-07 10:00:18 -08:00
README.wimax wimax: documentation for the stack 2009-01-07 10:00:16 -08:00

   Linux kernel WiMAX stack

   (C) 2008 Intel Corporation < linux-wimax@intel.com >

   This provides a basic Linux kernel WiMAX stack to provide a common
   control API for WiMAX devices, usable from kernel and user space.

1. Design

   The WiMAX stack is designed to provide for common WiMAX control
   services to current and future WiMAX devices from any vendor.

   Because currently there is only one and we don't know what would be the
   common services, the APIs it currently provides are very minimal.
   However, it is done in such a way that it is easily extensible to
   accommodate future requirements.

   The stack works by embedding a struct wimax_dev in your device's
   control structures. This provides a set of callbacks that the WiMAX
   stack will call in order to implement control operations requested by
   the user. As well, the stack provides API functions that the driver
   calls to notify about changes of state in the device.

   The stack exports the API calls needed to control the device to user
   space using generic netlink as a marshalling mechanism. You can access
   them using your own code or use the wrappers provided for your
   convenience in libwimax (in the wimax-tools package).

   For detailed information on the stack, please see
   include/linux/wimax.h.

2. Usage

   For usage in a driver (registration, API, etc) please refer to the
   instructions in the header file include/linux/wimax.h.

   When a device is registered with the WiMAX stack, a set of debugfs
   files will appear in /sys/kernel/debug/wimax:wmxX can tweak for
   control.

2.1. Obtaining debug information: debugfs entries

   The WiMAX stack is compiled, by default, with debug messages that can
   be used to diagnose issues. By default, said messages are disabled.

   The drivers will register debugfs entries that allow the user to tweak
   debug settings.

   Each driver, when registering with the stack, will cause a debugfs
   directory named wimax:DEVICENAME to be created; optionally, it might
   create more subentries below it.

2.1.1. Increasing debug output

   The files named *dl_* indicate knobs for controlling the debug output
   of different submodules of the WiMAX stack:
     *
# find /sys/kernel/debug/wimax\:wmx0 -name \*dl_\*
/sys/kernel/debug/wimax:wmx0/wimax_dl_stack
/sys/kernel/debug/wimax:wmx0/wimax_dl_op_rfkill
/sys/kernel/debug/wimax:wmx0/wimax_dl_op_reset
/sys/kernel/debug/wimax:wmx0/wimax_dl_op_msg
/sys/kernel/debug/wimax:wmx0/wimax_dl_id_table
/sys/kernel/debug/wimax:wmx0/wimax_dl_debugfs
/sys/kernel/debug/wimax:wmx0/.... # other driver specific files

       NOTE: Of course, if debugfs is mounted in a directory other than
       /sys/kernel/debug, those paths will change.

   By reading the file you can obtain the current value of said debug
   level; by writing to it, you can set it.

   To increase the debug level of, for example, the id-table submodule,
   just write:

$ echo 3 > /sys/kernel/debug/wimax:wmx0/wimax_dl_id_table

   Increasing numbers yield increasing debug information; for details of
   what is printed and the available levels, check the source. The code
   uses 0 for disabled and increasing values until 8.