Loading Documentation/feature-removal-schedule.txt +7 −0 Original line number Diff line number Diff line Loading @@ -437,3 +437,10 @@ Why: Superseded by tdfxfb. I2C/DDC support used to live in a separate driver but this caused driver conflicts. Who: Jean Delvare <khali@linux-fr.org> Krzysztof Helt <krzysztof.h1@wp.pl> --------------------------- What: CONFIG_RFKILL_INPUT When: 2.6.33 Why: Should be implemented in userspace, policy daemon. Who: Johannes Berg <johannes@sipsolutions.net> Documentation/isdn/INTERFACE.CAPI +90 −4 Original line number Diff line number Diff line Loading @@ -45,7 +45,7 @@ From then on, Kernel CAPI may call the registered callback functions for the device. If the device becomes unusable for any reason (shutdown, disconnect ...), the driver has to call capi_ctr_reseted(). This will prevent further calls to the driver has to call capi_ctr_down(). This will prevent further calls to the callback functions by Kernel CAPI. Loading Loading @@ -114,20 +114,36 @@ char *driver_name int (*load_firmware)(struct capi_ctr *ctrlr, capiloaddata *ldata) (optional) pointer to a callback function for sending firmware and configuration data to the device Return value: 0 on success, error code on error Called in process context. void (*reset_ctr)(struct capi_ctr *ctrlr) pointer to a callback function for performing a reset on the device, releasing all registered applications (optional) pointer to a callback function for performing a reset on the device, releasing all registered applications Called in process context. void (*register_appl)(struct capi_ctr *ctrlr, u16 applid, capi_register_params *rparam) void (*release_appl)(struct capi_ctr *ctrlr, u16 applid) pointers to callback functions for registration and deregistration of applications with the device Calls to these functions are serialized by Kernel CAPI so that only one call to any of them is active at any time. u16 (*send_message)(struct capi_ctr *ctrlr, struct sk_buff *skb) pointer to a callback function for sending a CAPI message to the device Return value: CAPI error code If the method returns 0 (CAPI_NOERROR) the driver has taken ownership of the skb and the caller may no longer access it. If it returns a non-zero (error) value then ownership of the skb returns to the caller who may reuse or free it. The return value should only be used to signal problems with respect to accepting or queueing the message. Errors occurring during the actual processing of the message should be signaled with an appropriate reply message. Calls to this function are not serialized by Kernel CAPI, ie. it must be prepared to be re-entered. char *(*procinfo)(struct capi_ctr *ctrlr) pointer to a callback function returning the entry for the device in Loading @@ -138,6 +154,8 @@ read_proc_t *ctr_read_proc system entry, /proc/capi/controllers/<n>; will be called with a pointer to the device's capi_ctr structure as the last (data) argument Note: Callback functions are never called in interrupt context. - to be filled in before calling capi_ctr_ready(): u8 manu[CAPI_MANUFACTURER_LEN] Loading @@ -153,6 +171,45 @@ u8 serial[CAPI_SERIAL_LEN] value to return for CAPI_GET_SERIAL 4.3 The _cmsg Structure (declared in <linux/isdn/capiutil.h>) The _cmsg structure stores the contents of a CAPI 2.0 message in an easily accessible form. It contains members for all possible CAPI 2.0 parameters, of which only those appearing in the message type currently being processed are actually used. Unused members should be set to zero. Members are named after the CAPI 2.0 standard names of the parameters they represent. See <linux/isdn/capiutil.h> for the exact spelling. Member data types are: u8 for CAPI parameters of type 'byte' u16 for CAPI parameters of type 'word' u32 for CAPI parameters of type 'dword' _cstruct for CAPI parameters of type 'struct' not containing any variably-sized (struct) subparameters (eg. 'Called Party Number') The member is a pointer to a buffer containing the parameter in CAPI encoding (length + content). It may also be NULL, which will be taken to represent an empty (zero length) parameter. _cmstruct for CAPI parameters of type 'struct' containing 'struct' subparameters ('Additional Info' and 'B Protocol') The representation is a single byte containing one of the values: CAPI_DEFAULT: the parameter is empty CAPI_COMPOSE: the values of the subparameters are stored individually in the corresponding _cmsg structure members Functions capi_cmsg2message() and capi_message2cmsg() are provided to convert messages between their transport encoding described in the CAPI 2.0 standard and their _cmsg structure representation. Note that capi_cmsg2message() does not know or check the size of its destination buffer. The caller must make sure it is big enough to accomodate the resulting CAPI message. 5. Lower Layer Interface Functions (declared in <linux/isdn/capilli.h>) Loading @@ -166,7 +223,7 @@ int detach_capi_ctr(struct capi_ctr *ctrlr) register/unregister a device (controller) with Kernel CAPI void capi_ctr_ready(struct capi_ctr *ctrlr) void capi_ctr_reseted(struct capi_ctr *ctrlr) void capi_ctr_down(struct capi_ctr *ctrlr) signal controller ready/not ready void capi_ctr_suspend_output(struct capi_ctr *ctrlr) Loading Loading @@ -211,3 +268,32 @@ CAPIMSG_CONTROL(m) CAPIMSG_SETCONTROL(m, contr) Controller/PLCI/NCCI (u32) CAPIMSG_DATALEN(m) CAPIMSG_SETDATALEN(m, len) Data Length (u16) Library functions for working with _cmsg structures (from <linux/isdn/capiutil.h>): unsigned capi_cmsg2message(_cmsg *cmsg, u8 *msg) Assembles a CAPI 2.0 message from the parameters in *cmsg, storing the result in *msg. unsigned capi_message2cmsg(_cmsg *cmsg, u8 *msg) Disassembles the CAPI 2.0 message in *msg, storing the parameters in *cmsg. unsigned capi_cmsg_header(_cmsg *cmsg, u16 ApplId, u8 Command, u8 Subcommand, u16 Messagenumber, u32 Controller) Fills the header part and address field of the _cmsg structure *cmsg with the given values, zeroing the remainder of the structure so only parameters with non-default values need to be changed before sending the message. void capi_cmsg_answer(_cmsg *cmsg) Sets the low bit of the Subcommand field in *cmsg, thereby converting _REQ to _CONF and _IND to _RESP. char *capi_cmd2str(u8 Command, u8 Subcommand) Returns the CAPI 2.0 message name corresponding to the given command and subcommand values, as a static ASCII string. The return value may be NULL if the command/subcommand is not one of those defined in the CAPI 2.0 standard. Documentation/networking/ieee802154.txt 0 → 100644 +76 −0 Original line number Diff line number Diff line Linux IEEE 802.15.4 implementation Introduction ============ The Linux-ZigBee project goal is to provide complete implementation of IEEE 802.15.4 / ZigBee / 6LoWPAN protocols. IEEE 802.15.4 is a stack of protocols for organizing Low-Rate Wireless Personal Area Networks. Currently only IEEE 802.15.4 layer is implemented. We have choosen to use plain Berkeley socket API, the generic Linux networking stack to transfer IEEE 802.15.4 messages and a special protocol over genetlink for configuration/management Socket API ========== int sd = socket(PF_IEEE802154, SOCK_DGRAM, 0); ..... The address family, socket addresses etc. are defined in the include/net/ieee802154/af_ieee802154.h header or in the special header in our userspace package (see either linux-zigbee sourceforge download page or git tree at git://linux-zigbee.git.sourceforge.net/gitroot/linux-zigbee). One can use SOCK_RAW for passing raw data towards device xmit function. YMMV. MLME - MAC Level Management ============================ Most of IEEE 802.15.4 MLME interfaces are directly mapped on netlink commands. See the include/net/ieee802154/nl802154.h header. Our userspace tools package (see above) provides CLI configuration utility for radio interfaces and simple coordinator for IEEE 802.15.4 networks as an example users of MLME protocol. Kernel side ============= Like with WiFi, there are several types of devices implementing IEEE 802.15.4. 1) 'HardMAC'. The MAC layer is implemented in the device itself, the device exports MLME and data API. 2) 'SoftMAC' or just radio. These types of devices are just radio transceivers possibly with some kinds of acceleration like automatic CRC computation and comparation, automagic ACK handling, address matching, etc. Those types of devices require different approach to be hooked into Linux kernel. HardMAC ======= See the header include/net/ieee802154/netdevice.h. You have to implement Linux net_device, with .type = ARPHRD_IEEE802154. Data is exchanged with socket family code via plain sk_buffs. The control block of sk_buffs will contain additional info as described in the struct ieee802154_mac_cb. To hook the MLME interface you have to populate the ml_priv field of your net_device with a pointer to struct ieee802154_mlme_ops instance. All fields are required. We provide an example of simple HardMAC driver at drivers/ieee802154/fakehard.c SoftMAC ======= We are going to provide intermediate layer impelementing IEEE 802.15.4 MAC in software. This is currently WIP. See header include/net/ieee802154/mac802154.h and several drivers in drivers/ieee802154/ Documentation/networking/ip-sysctl.txt +7 −0 Original line number Diff line number Diff line Loading @@ -1057,6 +1057,13 @@ disable_ipv6 - BOOLEAN address. Default: FALSE (enable IPv6 operation) When this value is changed from 1 to 0 (IPv6 is being enabled), it will dynamically create a link-local address on the given interface and start Duplicate Address Detection, if necessary. When this value is changed from 0 to 1 (IPv6 is being disabled), it will dynamically delete all address on the given interface. accept_dad - INTEGER Whether to accept DAD (Duplicate Address Detection). 0: Disable DAD Loading Documentation/networking/ipv6.txt +37 −0 Original line number Diff line number Diff line Loading @@ -33,3 +33,40 @@ disable A reboot is required to enable IPv6. autoconf Specifies whether to enable IPv6 address autoconfiguration on all interfaces. This might be used when one does not wish for addresses to be automatically generated from prefixes received in Router Advertisements. The possible values and their effects are: 0 IPv6 address autoconfiguration is disabled on all interfaces. Only the IPv6 loopback address (::1) and link-local addresses will be added to interfaces. 1 IPv6 address autoconfiguration is enabled on all interfaces. This is the default value. disable_ipv6 Specifies whether to disable IPv6 on all interfaces. This might be used when no IPv6 addresses are desired. The possible values and their effects are: 0 IPv6 is enabled on all interfaces. This is the default value. 1 IPv6 is disabled on all interfaces. No IPv6 addresses will be added to interfaces. Loading
Documentation/feature-removal-schedule.txt +7 −0 Original line number Diff line number Diff line Loading @@ -437,3 +437,10 @@ Why: Superseded by tdfxfb. I2C/DDC support used to live in a separate driver but this caused driver conflicts. Who: Jean Delvare <khali@linux-fr.org> Krzysztof Helt <krzysztof.h1@wp.pl> --------------------------- What: CONFIG_RFKILL_INPUT When: 2.6.33 Why: Should be implemented in userspace, policy daemon. Who: Johannes Berg <johannes@sipsolutions.net>
Documentation/isdn/INTERFACE.CAPI +90 −4 Original line number Diff line number Diff line Loading @@ -45,7 +45,7 @@ From then on, Kernel CAPI may call the registered callback functions for the device. If the device becomes unusable for any reason (shutdown, disconnect ...), the driver has to call capi_ctr_reseted(). This will prevent further calls to the driver has to call capi_ctr_down(). This will prevent further calls to the callback functions by Kernel CAPI. Loading Loading @@ -114,20 +114,36 @@ char *driver_name int (*load_firmware)(struct capi_ctr *ctrlr, capiloaddata *ldata) (optional) pointer to a callback function for sending firmware and configuration data to the device Return value: 0 on success, error code on error Called in process context. void (*reset_ctr)(struct capi_ctr *ctrlr) pointer to a callback function for performing a reset on the device, releasing all registered applications (optional) pointer to a callback function for performing a reset on the device, releasing all registered applications Called in process context. void (*register_appl)(struct capi_ctr *ctrlr, u16 applid, capi_register_params *rparam) void (*release_appl)(struct capi_ctr *ctrlr, u16 applid) pointers to callback functions for registration and deregistration of applications with the device Calls to these functions are serialized by Kernel CAPI so that only one call to any of them is active at any time. u16 (*send_message)(struct capi_ctr *ctrlr, struct sk_buff *skb) pointer to a callback function for sending a CAPI message to the device Return value: CAPI error code If the method returns 0 (CAPI_NOERROR) the driver has taken ownership of the skb and the caller may no longer access it. If it returns a non-zero (error) value then ownership of the skb returns to the caller who may reuse or free it. The return value should only be used to signal problems with respect to accepting or queueing the message. Errors occurring during the actual processing of the message should be signaled with an appropriate reply message. Calls to this function are not serialized by Kernel CAPI, ie. it must be prepared to be re-entered. char *(*procinfo)(struct capi_ctr *ctrlr) pointer to a callback function returning the entry for the device in Loading @@ -138,6 +154,8 @@ read_proc_t *ctr_read_proc system entry, /proc/capi/controllers/<n>; will be called with a pointer to the device's capi_ctr structure as the last (data) argument Note: Callback functions are never called in interrupt context. - to be filled in before calling capi_ctr_ready(): u8 manu[CAPI_MANUFACTURER_LEN] Loading @@ -153,6 +171,45 @@ u8 serial[CAPI_SERIAL_LEN] value to return for CAPI_GET_SERIAL 4.3 The _cmsg Structure (declared in <linux/isdn/capiutil.h>) The _cmsg structure stores the contents of a CAPI 2.0 message in an easily accessible form. It contains members for all possible CAPI 2.0 parameters, of which only those appearing in the message type currently being processed are actually used. Unused members should be set to zero. Members are named after the CAPI 2.0 standard names of the parameters they represent. See <linux/isdn/capiutil.h> for the exact spelling. Member data types are: u8 for CAPI parameters of type 'byte' u16 for CAPI parameters of type 'word' u32 for CAPI parameters of type 'dword' _cstruct for CAPI parameters of type 'struct' not containing any variably-sized (struct) subparameters (eg. 'Called Party Number') The member is a pointer to a buffer containing the parameter in CAPI encoding (length + content). It may also be NULL, which will be taken to represent an empty (zero length) parameter. _cmstruct for CAPI parameters of type 'struct' containing 'struct' subparameters ('Additional Info' and 'B Protocol') The representation is a single byte containing one of the values: CAPI_DEFAULT: the parameter is empty CAPI_COMPOSE: the values of the subparameters are stored individually in the corresponding _cmsg structure members Functions capi_cmsg2message() and capi_message2cmsg() are provided to convert messages between their transport encoding described in the CAPI 2.0 standard and their _cmsg structure representation. Note that capi_cmsg2message() does not know or check the size of its destination buffer. The caller must make sure it is big enough to accomodate the resulting CAPI message. 5. Lower Layer Interface Functions (declared in <linux/isdn/capilli.h>) Loading @@ -166,7 +223,7 @@ int detach_capi_ctr(struct capi_ctr *ctrlr) register/unregister a device (controller) with Kernel CAPI void capi_ctr_ready(struct capi_ctr *ctrlr) void capi_ctr_reseted(struct capi_ctr *ctrlr) void capi_ctr_down(struct capi_ctr *ctrlr) signal controller ready/not ready void capi_ctr_suspend_output(struct capi_ctr *ctrlr) Loading Loading @@ -211,3 +268,32 @@ CAPIMSG_CONTROL(m) CAPIMSG_SETCONTROL(m, contr) Controller/PLCI/NCCI (u32) CAPIMSG_DATALEN(m) CAPIMSG_SETDATALEN(m, len) Data Length (u16) Library functions for working with _cmsg structures (from <linux/isdn/capiutil.h>): unsigned capi_cmsg2message(_cmsg *cmsg, u8 *msg) Assembles a CAPI 2.0 message from the parameters in *cmsg, storing the result in *msg. unsigned capi_message2cmsg(_cmsg *cmsg, u8 *msg) Disassembles the CAPI 2.0 message in *msg, storing the parameters in *cmsg. unsigned capi_cmsg_header(_cmsg *cmsg, u16 ApplId, u8 Command, u8 Subcommand, u16 Messagenumber, u32 Controller) Fills the header part and address field of the _cmsg structure *cmsg with the given values, zeroing the remainder of the structure so only parameters with non-default values need to be changed before sending the message. void capi_cmsg_answer(_cmsg *cmsg) Sets the low bit of the Subcommand field in *cmsg, thereby converting _REQ to _CONF and _IND to _RESP. char *capi_cmd2str(u8 Command, u8 Subcommand) Returns the CAPI 2.0 message name corresponding to the given command and subcommand values, as a static ASCII string. The return value may be NULL if the command/subcommand is not one of those defined in the CAPI 2.0 standard.
Documentation/networking/ieee802154.txt 0 → 100644 +76 −0 Original line number Diff line number Diff line Linux IEEE 802.15.4 implementation Introduction ============ The Linux-ZigBee project goal is to provide complete implementation of IEEE 802.15.4 / ZigBee / 6LoWPAN protocols. IEEE 802.15.4 is a stack of protocols for organizing Low-Rate Wireless Personal Area Networks. Currently only IEEE 802.15.4 layer is implemented. We have choosen to use plain Berkeley socket API, the generic Linux networking stack to transfer IEEE 802.15.4 messages and a special protocol over genetlink for configuration/management Socket API ========== int sd = socket(PF_IEEE802154, SOCK_DGRAM, 0); ..... The address family, socket addresses etc. are defined in the include/net/ieee802154/af_ieee802154.h header or in the special header in our userspace package (see either linux-zigbee sourceforge download page or git tree at git://linux-zigbee.git.sourceforge.net/gitroot/linux-zigbee). One can use SOCK_RAW for passing raw data towards device xmit function. YMMV. MLME - MAC Level Management ============================ Most of IEEE 802.15.4 MLME interfaces are directly mapped on netlink commands. See the include/net/ieee802154/nl802154.h header. Our userspace tools package (see above) provides CLI configuration utility for radio interfaces and simple coordinator for IEEE 802.15.4 networks as an example users of MLME protocol. Kernel side ============= Like with WiFi, there are several types of devices implementing IEEE 802.15.4. 1) 'HardMAC'. The MAC layer is implemented in the device itself, the device exports MLME and data API. 2) 'SoftMAC' or just radio. These types of devices are just radio transceivers possibly with some kinds of acceleration like automatic CRC computation and comparation, automagic ACK handling, address matching, etc. Those types of devices require different approach to be hooked into Linux kernel. HardMAC ======= See the header include/net/ieee802154/netdevice.h. You have to implement Linux net_device, with .type = ARPHRD_IEEE802154. Data is exchanged with socket family code via plain sk_buffs. The control block of sk_buffs will contain additional info as described in the struct ieee802154_mac_cb. To hook the MLME interface you have to populate the ml_priv field of your net_device with a pointer to struct ieee802154_mlme_ops instance. All fields are required. We provide an example of simple HardMAC driver at drivers/ieee802154/fakehard.c SoftMAC ======= We are going to provide intermediate layer impelementing IEEE 802.15.4 MAC in software. This is currently WIP. See header include/net/ieee802154/mac802154.h and several drivers in drivers/ieee802154/
Documentation/networking/ip-sysctl.txt +7 −0 Original line number Diff line number Diff line Loading @@ -1057,6 +1057,13 @@ disable_ipv6 - BOOLEAN address. Default: FALSE (enable IPv6 operation) When this value is changed from 1 to 0 (IPv6 is being enabled), it will dynamically create a link-local address on the given interface and start Duplicate Address Detection, if necessary. When this value is changed from 0 to 1 (IPv6 is being disabled), it will dynamically delete all address on the given interface. accept_dad - INTEGER Whether to accept DAD (Duplicate Address Detection). 0: Disable DAD Loading
Documentation/networking/ipv6.txt +37 −0 Original line number Diff line number Diff line Loading @@ -33,3 +33,40 @@ disable A reboot is required to enable IPv6. autoconf Specifies whether to enable IPv6 address autoconfiguration on all interfaces. This might be used when one does not wish for addresses to be automatically generated from prefixes received in Router Advertisements. The possible values and their effects are: 0 IPv6 address autoconfiguration is disabled on all interfaces. Only the IPv6 loopback address (::1) and link-local addresses will be added to interfaces. 1 IPv6 address autoconfiguration is enabled on all interfaces. This is the default value. disable_ipv6 Specifies whether to disable IPv6 on all interfaces. This might be used when no IPv6 addresses are desired. The possible values and their effects are: 0 IPv6 is enabled on all interfaces. This is the default value. 1 IPv6 is disabled on all interfaces. No IPv6 addresses will be added to interfaces.