Search Linux Wireless

[RFC 0/4] mac80211 & ath9k: ITS-G5 (IEEE 802.11p) basic support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This patch-set is a RFC of the ongoing work of adding main features of
the Intelligent Transport Systems (ITS) G5 standard into the Linux
kernel. ITS-G5 is the European version of the car2car DSRC wireless
communication protocol stack. It uses the OCB mode defined in IEEE
802.11p. To access the medium the so called DCC (Decentralized
Congestion Control Mechanism) is used -- that is slightly modified
combination of the 802.11e EDCA, Transmit Rate Control (TRC), Transmit
Datarate Control (TDC) and per packet Transmit Power Control (TPC).
The higher layer protocols are specific (different from the IEEE 1609
WAVE).

The ITS-G5 standards are freely available on-line. The ones describing
ITS-G5 PHY and MAC are ETSI EN 302 663 [1] and ETSI TS 102 687 [2].
[1] http://www.etsi.org/deliver/etsi_en/302600_302699/302663/01.02.01_60/en_302663v010201p.pdf
[2] http://www.etsi.org/deliver/etsi_ts/102600_102699/102687/01.01.01_60/ts_102687v010101p.pdf


This patch-set modifies mac80211 subsystem and ath9k driver to enable
setting of the OCB mode, setting channel type to 5 or 10 MHz and
setting frequency between 5850 and 5925 MHz. To make this fully
functional changes in CRDA (+wireless-regdb) and 'iw' tool are
necessary (these are not included in this patch-set).

The OCB (i.e. 'Out of Context of the BSS') is a special mode enabling
STAs communication without being associated to an AP or to each other.
The BSSID is set to all FF's. Every STA receives all frames from every
STA in range and transmits to every STA tuned to the same channel
(the motivation behind that is that there will be no time for
authentication/association when there are two cars going against each
other in high speed).

The main frequency used (for the Control Channel -- CCH) is set once
and stays fixed. No beacons are sent or received.


Summary of the first two patches (5/10 MHz channel setting):
* New channel TYPE flags are added -- i.e. NL80211_CHAN_WIDTH_5 and
  NL80211_CHAN_WIDTH_10. The reason is to make it possible to
  configure the ITS-G5 from user-space with commands like
    sudo iw dev wlan0 set freq 5890 10MHZ

* New channel restricting flags are added -- the most important is the
  one restricting the channel for OCB mode only (necessary for
  frequency range 5850--5925)

* The commit fe7ef5e9ba0c60bab01390493a4c6790f7b093af has been
  reverted to make the regd probing possible for 5/10 MHz channels

* Add frequencies ranging from 5850 to 5925 as supported in the ath9k
  driver

The second two patches (adding the OCB mode) do the following:
* Add new 'interface mode' -- NL80211_IFTYPE_OCB

* Add new 'struct ieee80211_if_ocb' containing data specific for the
  interface in the OCB mode

* Instead of modifying the ieee80211_set_wmm_default() add new
  ieee80211_set_wmm_itsg5() with configuration specific for ITS-G5 --
  This will be merged in single function in the future.

* Add the ieee80211_set_ocb_channel() function.
  Since the 'set_channel()' function is not present anymore (the only
  remnant is now in the 'set_monitor_channel()'), I was not able to
  figure out how to set a fixed channel by user on interface
  configuration (there is no 'ocb_join()' function), thus I am using the
  deprecated '_oper_chandef' field in 'struct ieee80211_local *local'.
  Any suggestions how to make it properly are very welcome.

* Modify __ieee80211_recalc_idle() to disable idle if the interface is
  in the OCB mode (this will be probably unnecessary when the chanctx
  will be used properly)

* The most important part is the initialization of the OCB mode in the
  ieee80211_do_open() function

* Add ocb.c file containing the OCB specific functions -- i.e. add STA,
  process management frame, do the housekeeping, setup sdata

* Modify the RX/TX path to be able to process frames when in the OCB
  mode

Rostislav Lisovy (4):
  mac80211: Allow 5/10 MHz channel setting (for OCB)
  ath9k: Allow 5/10 MHz channel setting (for OCB)
  mac80211: Add OCB (IEEE 802.11p) mode
  ath9k: Add OCB (IEEE 802.11p) mode

 drivers/net/wireless/ath/ath9k/ani.c          |   1 +
 drivers/net/wireless/ath/ath9k/ath9k.h        |   1 +
 drivers/net/wireless/ath/ath9k/debug.c        |   4 +-
 drivers/net/wireless/ath/ath9k/htc_drv_init.c |   3 +-
 drivers/net/wireless/ath/ath9k/htc_drv_txrx.c |   5 +
 drivers/net/wireless/ath/ath9k/hw.c           |   1 +
 drivers/net/wireless/ath/ath9k/hw.h           |   3 +-
 drivers/net/wireless/ath/ath9k/init.c         |  23 ++-
 drivers/net/wireless/ath/ath9k/main.c         |   5 +-
 drivers/net/wireless/ath/ath9k/recv.c         |   8 +-
 drivers/net/wireless/ath/ath9k/xmit.c         |   6 +
 drivers/net/wireless/ath/regd.c               |  11 +-
 drivers/net/wireless/rtlwifi/regd.c           |   9 +-
 include/net/cfg80211.h                        |  21 ++-
 include/net/mac80211.h                        |   4 +-
 include/uapi/linux/nl80211.h                  |  24 ++-
 net/mac80211/Kconfig                          |  11 ++
 net/mac80211/Makefile                         |   3 +-
 net/mac80211/cfg.c                            |  43 ++++-
 net/mac80211/debug.h                          |  10 ++
 net/mac80211/driver-ops.h                     |   3 +-
 net/mac80211/ieee80211_i.h                    |  46 ++++++
 net/mac80211/iface.c                          |  63 +++++++-
 net/mac80211/main.c                           |  12 +-
 net/mac80211/ocb.c                            | 219 ++++++++++++++++++++++++++
 net/mac80211/rx.c                             |  30 ++++
 net/mac80211/tx.c                             |  21 ++-
 net/mac80211/util.c                           |  72 +++++++++
 net/mac80211/wme.c                            |   4 +
 net/wireless/chan.c                           |  27 +++-
 net/wireless/core.c                           |   3 -
 net/wireless/core.h                           |   4 +
 net/wireless/nl80211.c                        |  18 +++
 net/wireless/rdev-ops.h                       |  11 ++
 net/wireless/reg.c                            | 117 ++++++++++++--
 net/wireless/util.c                           |   7 +-
 36 files changed, 805 insertions(+), 48 deletions(-)
 create mode 100644 net/mac80211/ocb.c

-- 
1.8.5.1

--
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




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux