-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This patch adds new iface type (NL80211_IFTYPE_OCB) representing the OCB (Outside the Context of a BSS) mode. When establishing a connection to the network a cfg80211_join_ocb function is called (particular nl80211_command is added as well). A mandatory parameters during the ocb_join operation are 'center frequency' and 'channel width (5/10 MHz)'. Changes done in mac80211 are minimal possible required to avoid many warnings (warning: enumeration value 'NL80211_IFTYPE_OCB' not handled in switch) during compilation. Full functionality (where needed) is added in the following patch. Signed-off-by: Rostislav Lisovy <rostislav.lisovy@fel.cvut.cz> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
- Loading branch information
Rostislav Lisovy
authored and
Johannes Berg
committed
Nov 4, 2014
1 parent
5b3dc42
commit 6e0bd6c
Showing
15 changed files
with
238 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
/* | ||
* OCB mode implementation | ||
* | ||
* Copyright: (c) 2014 Czech Technical University in Prague | ||
* (c) 2014 Volkswagen Group Research | ||
* Author: Rostislav Lisovy <rostislav.lisovy@fel.cvut.cz> | ||
* Funded by: Volkswagen Group Research | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
|
||
#include <linux/ieee80211.h> | ||
#include <net/cfg80211.h> | ||
#include "nl80211.h" | ||
#include "core.h" | ||
#include "rdev-ops.h" | ||
|
||
int __cfg80211_join_ocb(struct cfg80211_registered_device *rdev, | ||
struct net_device *dev, | ||
struct ocb_setup *setup) | ||
{ | ||
struct wireless_dev *wdev = dev->ieee80211_ptr; | ||
int err; | ||
|
||
ASSERT_WDEV_LOCK(wdev); | ||
|
||
if (dev->ieee80211_ptr->iftype != NL80211_IFTYPE_OCB) | ||
return -EOPNOTSUPP; | ||
|
||
if (WARN_ON(!setup->chandef.chan)) | ||
return -EINVAL; | ||
|
||
err = rdev_join_ocb(rdev, dev, setup); | ||
if (!err) | ||
wdev->chandef = setup->chandef; | ||
|
||
return err; | ||
} | ||
|
||
int cfg80211_join_ocb(struct cfg80211_registered_device *rdev, | ||
struct net_device *dev, | ||
struct ocb_setup *setup) | ||
{ | ||
struct wireless_dev *wdev = dev->ieee80211_ptr; | ||
int err; | ||
|
||
wdev_lock(wdev); | ||
err = __cfg80211_join_ocb(rdev, dev, setup); | ||
wdev_unlock(wdev); | ||
|
||
return err; | ||
} | ||
|
||
int __cfg80211_leave_ocb(struct cfg80211_registered_device *rdev, | ||
struct net_device *dev) | ||
{ | ||
struct wireless_dev *wdev = dev->ieee80211_ptr; | ||
int err; | ||
|
||
ASSERT_WDEV_LOCK(wdev); | ||
|
||
if (dev->ieee80211_ptr->iftype != NL80211_IFTYPE_OCB) | ||
return -EOPNOTSUPP; | ||
|
||
if (!rdev->ops->leave_ocb) | ||
return -EOPNOTSUPP; | ||
|
||
err = rdev_leave_ocb(rdev, dev); | ||
if (!err) | ||
memset(&wdev->chandef, 0, sizeof(wdev->chandef)); | ||
|
||
return err; | ||
} | ||
|
||
int cfg80211_leave_ocb(struct cfg80211_registered_device *rdev, | ||
struct net_device *dev) | ||
{ | ||
struct wireless_dev *wdev = dev->ieee80211_ptr; | ||
int err; | ||
|
||
wdev_lock(wdev); | ||
err = __cfg80211_leave_ocb(rdev, dev); | ||
wdev_unlock(wdev); | ||
|
||
return err; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.