The IEEE 802.11p amendment (already part of IEEE 802.11-2012) specifies usage of 5 and 10 MHz wide channels in 5.9GHz band for vehicular environment. All the 802.11p compliant devices should be set to the newly added operation mode -- OCB (Outside the Context of a BSS). No authentication/association is necessary to communicate. The only parameter to be configured is the channel (central frequency and bandwidth) to communicate on. The channel has to be known a priori. It is set during the 'ocb join' operation (sent via netlink message from user-space). This patchset adds the OCB mode, OCB join and leave handling (nl80211, cfg80211, mac80211), 802.11p EDCA parameters modification, RX and TX path (for unicast/broadcast messages). What aspects are ignored for now: * Rate control -- We limit the supported datarates to the .11a mandatory rates and use the Minstrel as usual * Actually restricting the OCB mode to the 5.9 GHz band Tested with the ath9k card with slightly modified driver. User-space configuration utilities are not part of this patch. Changes since v1: * Do not define bssid_wildcard in a header file, define it as 'static const' in ieee80211_setup_sdata only (JBerg) * Use GFP_ATOMIC memory allocation in ieee80211_ocb_rx_no_sta so it can be called in the RX path (JBerg) * IEEE80211_CHANCTX_EXCLUSIVE -> IEEE80211_CHANCTX_SHARED (JBerg) * Fix the situation when the housekeeping timer might be called (JBerg) * Remove NL80211_CHAN_WIDTH_5/10 from 'old channels' handling functions cfg80211_get_chandef_type() and nl80211_send_chandef() (JBerg) * Do not break ABI by adding new fileds in the middle of the enum nl80211_commands (JBerg) * Add a flag denoting whether we are joined to the network or not * Handle multiple consecutive calls to ocb_join * Many minor fixes Rostislav Lisovy (2): cfg80211: 802.11p OCB mode handling mac80211: 802.11p OCB mode support include/net/cfg80211.h | 14 +++ include/net/mac80211.h | 2 + include/uapi/linux/nl80211.h | 10 ++ net/mac80211/Kconfig | 11 ++ net/mac80211/Makefile | 3 +- net/mac80211/cfg.c | 14 +++ net/mac80211/chan.c | 3 + net/mac80211/debug.h | 10 ++ net/mac80211/driver-ops.h | 3 +- net/mac80211/ieee80211_i.h | 29 +++++ net/mac80211/iface.c | 23 ++++ net/mac80211/ocb.c | 251 +++++++++++++++++++++++++++++++++++++++++++ net/mac80211/rx.c | 35 ++++++ net/mac80211/tx.c | 15 +++ net/mac80211/util.c | 31 +++++- net/mac80211/wme.c | 4 + net/wireless/Makefile | 2 +- net/wireless/chan.c | 8 ++ net/wireless/core.h | 10 ++ net/wireless/nl80211.c | 41 +++++++ net/wireless/ocb.c | 89 +++++++++++++++ net/wireless/rdev-ops.h | 21 ++++ net/wireless/trace.h | 21 ++++ net/wireless/util.c | 5 +- 24 files changed, 646 insertions(+), 9 deletions(-) create mode 100644 net/mac80211/ocb.c create mode 100644 net/wireless/ocb.c -- 2.0.0.rc4 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html