summaryrefslogtreecommitdiffstats
path: root/drivers/ieee802154
diff options
context:
space:
mode:
authorDmitry Eremin-Solenikov <dbaryshkov@gmail.com>2009-08-19 19:32:24 +0400
committerDmitry Eremin-Solenikov <dbaryshkov@gmail.com>2009-08-19 23:08:22 +0400
commit16eea493da563b5a3356a77c6d8776dffc29d3b6 (patch)
tree6a6444442b8d7789d4c2fcb8ba990453969121fc /drivers/ieee802154
parent81f9510381ee43205564063f2e8650672b11d453 (diff)
downloadlinux-16eea493da563b5a3356a77c6d8776dffc29d3b6.tar.gz
linux-16eea493da563b5a3356a77c6d8776dffc29d3b6.tar.bz2
linux-16eea493da563b5a3356a77c6d8776dffc29d3b6.zip
ieee802154: add support for channel pages from IEEE 802.15.4-2006
IEEE 802.15.4-2006 adds new concept: channel pages, which can contain several channels. Add support for channel pages in the API and in the fakehard driver. Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Diffstat (limited to 'drivers/ieee802154')
-rw-r--r--drivers/ieee802154/fakehard.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/ieee802154/fakehard.c b/drivers/ieee802154/fakehard.c
index 22a93bc764c5..c1c9697f9fde 100644
--- a/drivers/ieee802154/fakehard.c
+++ b/drivers/ieee802154/fakehard.c
@@ -119,12 +119,13 @@ static u8 fake_get_bsn(struct net_device *dev)
* 802.15.4-2006 document.
*/
static int fake_assoc_req(struct net_device *dev,
- struct ieee802154_addr *addr, u8 channel, u8 cap)
+ struct ieee802154_addr *addr, u8 channel, u8 page, u8 cap)
{
struct wpan_phy *phy = net_to_phy(dev);
mutex_lock(&phy->pib_lock);
phy->current_channel = channel;
+ phy->current_page = page;
mutex_unlock(&phy->pib_lock);
/* We simply emulate it here */
@@ -191,7 +192,7 @@ static int fake_disassoc_req(struct net_device *dev,
* document, with 7.3.8 describing coordinator realignment.
*/
static int fake_start_req(struct net_device *dev, struct ieee802154_addr *addr,
- u8 channel,
+ u8 channel, u8 page,
u8 bcn_ord, u8 sf_ord, u8 pan_coord, u8 blx,
u8 coord_realign)
{
@@ -199,6 +200,7 @@ static int fake_start_req(struct net_device *dev, struct ieee802154_addr *addr,
mutex_lock(&phy->pib_lock);
phy->current_channel = channel;
+ phy->current_page = page;
mutex_unlock(&phy->pib_lock);
/* We don't emulate beacons here at all, so START should fail */
@@ -222,11 +224,11 @@ static int fake_start_req(struct net_device *dev, struct ieee802154_addr *addr,
* Note: This is in section 7.5.2.1 of the IEEE 802.15.4-2006 document.
*/
static int fake_scan_req(struct net_device *dev, u8 type, u32 channels,
- u8 duration)
+ u8 page, u8 duration)
{
u8 edl[27] = {};
return ieee802154_nl_scan_confirm(dev, IEEE802154_SUCCESS, type,
- channels,
+ channels, page,
type == IEEE802154_MAC_SCAN_ED ? edl : NULL);
}