Skip to content

Commit

Permalink
mac802154: set and get PAN id
Browse files Browse the repository at this point in the history
Two methods intended to get and set the Private Area Network identifier
were added to the MIB implementation.

Signed-off-by: Alexander Smirnov <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
alex-bluesman authored and davem330 committed Jun 27, 2012
1 parent 32bad7e commit dcbe4f9
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 0 deletions.
2 changes: 2 additions & 0 deletions net/mac802154/mac802154.h
Original file line number Diff line number Diff line change
Expand Up @@ -109,5 +109,7 @@ netdev_tx_t mac802154_tx(struct mac802154_priv *priv, struct sk_buff *skb,

/* MIB callbacks */
void mac802154_dev_set_ieee_addr(struct net_device *dev);
u16 mac802154_dev_get_pan_id(const struct net_device *dev);
void mac802154_dev_set_pan_id(struct net_device *dev, u16 val);

#endif /* MAC802154_H */
31 changes: 31 additions & 0 deletions net/mac802154/mib.c
Original file line number Diff line number Diff line change
Expand Up @@ -91,3 +91,34 @@ void mac802154_dev_set_ieee_addr(struct net_device *dev)
set_hw_addr_filt(dev, IEEE802515_AFILT_IEEEADDR_CHANGED);
}
}

u16 mac802154_dev_get_pan_id(const struct net_device *dev)
{
struct mac802154_sub_if_data *priv = netdev_priv(dev);
u16 ret;

BUG_ON(dev->type != ARPHRD_IEEE802154);

spin_lock_bh(&priv->mib_lock);
ret = priv->pan_id;
spin_unlock_bh(&priv->mib_lock);

return ret;
}

void mac802154_dev_set_pan_id(struct net_device *dev, u16 val)
{
struct mac802154_sub_if_data *priv = netdev_priv(dev);

BUG_ON(dev->type != ARPHRD_IEEE802154);

spin_lock_bh(&priv->mib_lock);
priv->pan_id = val;
spin_unlock_bh(&priv->mib_lock);

if ((priv->hw->ops->set_hw_addr_filt) &&
(priv->hw->hw.hw_filt.pan_id != priv->pan_id)) {
priv->hw->hw.hw_filt.pan_id = priv->pan_id;
set_hw_addr_filt(dev, IEEE802515_AFILT_PANID_CHANGED);
}
}

0 comments on commit dcbe4f9

Please sign in to comment.