aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ieee802154
diff options
context:
space:
mode:
authorDmitry Eremin-Solenikov <dbaryshkov@gmail.com>2009-08-19 11:32:24 -0400
committerDmitry Eremin-Solenikov <dbaryshkov@gmail.com>2009-08-19 15:08:22 -0400
commit16eea493da563b5a3356a77c6d8776dffc29d3b6 (patch)
tree6a6444442b8d7789d4c2fcb8ba990453969121fc /drivers/ieee802154
parent81f9510381ee43205564063f2e8650672b11d453 (diff)
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)
119 * 802.15.4-2006 document. 119 * 802.15.4-2006 document.
120 */ 120 */
121static int fake_assoc_req(struct net_device *dev, 121static int fake_assoc_req(struct net_device *dev,
122 struct ieee802154_addr *addr, u8 channel, u8 cap) 122 struct ieee802154_addr *addr, u8 channel, u8 page, u8 cap)
123{ 123{
124 struct wpan_phy *phy = net_to_phy(dev); 124 struct wpan_phy *phy = net_to_phy(dev);
125 125
126 mutex_lock(&phy->pib_lock); 126 mutex_lock(&phy->pib_lock);
127 phy->current_channel = channel; 127 phy->current_channel = channel;
128 phy->current_page = page;
128 mutex_unlock(&phy->pib_lock); 129 mutex_unlock(&phy->pib_lock);
129 130
130 /* We simply emulate it here */ 131 /* We simply emulate it here */
@@ -191,7 +192,7 @@ static int fake_disassoc_req(struct net_device *dev,
191 * document, with 7.3.8 describing coordinator realignment. 192 * document, with 7.3.8 describing coordinator realignment.
192 */ 193 */
193static int fake_start_req(struct net_device *dev, struct ieee802154_addr *addr, 194static int fake_start_req(struct net_device *dev, struct ieee802154_addr *addr,
194 u8 channel, 195 u8 channel, u8 page,
195 u8 bcn_ord, u8 sf_ord, u8 pan_coord, u8 blx, 196 u8 bcn_ord, u8 sf_ord, u8 pan_coord, u8 blx,
196 u8 coord_realign) 197 u8 coord_realign)
197{ 198{
@@ -199,6 +200,7 @@ static int fake_start_req(struct net_device *dev, struct ieee802154_addr *addr,
199 200
200 mutex_lock(&phy->pib_lock); 201 mutex_lock(&phy->pib_lock);
201 phy->current_channel = channel; 202 phy->current_channel = channel;
203 phy->current_page = page;
202 mutex_unlock(&phy->pib_lock); 204 mutex_unlock(&phy->pib_lock);
203 205
204 /* We don't emulate beacons here at all, so START should fail */ 206 /* 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,
222 * Note: This is in section 7.5.2.1 of the IEEE 802.15.4-2006 document. 224 * Note: This is in section 7.5.2.1 of the IEEE 802.15.4-2006 document.
223 */ 225 */
224static int fake_scan_req(struct net_device *dev, u8 type, u32 channels, 226static int fake_scan_req(struct net_device *dev, u8 type, u32 channels,
225 u8 duration) 227 u8 page, u8 duration)
226{ 228{
227 u8 edl[27] = {}; 229 u8 edl[27] = {};
228 return ieee802154_nl_scan_confirm(dev, IEEE802154_SUCCESS, type, 230 return ieee802154_nl_scan_confirm(dev, IEEE802154_SUCCESS, type,
229 channels, 231 channels, page,
230 type == IEEE802154_MAC_SCAN_ED ? edl : NULL); 232 type == IEEE802154_MAC_SCAN_ED ? edl : NULL);
231} 233}
232 234