diff options
Diffstat (limited to 'net/mac802154/mac_cmd.c')
-rw-r--r-- | net/mac802154/mac_cmd.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/net/mac802154/mac_cmd.c b/net/mac802154/mac_cmd.c index afb4e2cbc00a..bf809131eef7 100644 --- a/net/mac802154/mac_cmd.c +++ b/net/mac802154/mac_cmd.c | |||
@@ -40,6 +40,9 @@ static int mac802154_mlme_start_req(struct net_device *dev, | |||
40 | u8 pan_coord, u8 blx, | 40 | u8 pan_coord, u8 blx, |
41 | u8 coord_realign) | 41 | u8 coord_realign) |
42 | { | 42 | { |
43 | struct ieee802154_mlme_ops *ops = ieee802154_mlme_ops(dev); | ||
44 | int rc = 0; | ||
45 | |||
43 | BUG_ON(addr->mode != IEEE802154_ADDR_SHORT); | 46 | BUG_ON(addr->mode != IEEE802154_ADDR_SHORT); |
44 | 47 | ||
45 | mac802154_dev_set_pan_id(dev, addr->pan_id); | 48 | mac802154_dev_set_pan_id(dev, addr->pan_id); |
@@ -47,12 +50,31 @@ static int mac802154_mlme_start_req(struct net_device *dev, | |||
47 | mac802154_dev_set_ieee_addr(dev); | 50 | mac802154_dev_set_ieee_addr(dev); |
48 | mac802154_dev_set_page_channel(dev, page, channel); | 51 | mac802154_dev_set_page_channel(dev, page, channel); |
49 | 52 | ||
53 | if (ops->llsec) { | ||
54 | struct ieee802154_llsec_params params; | ||
55 | int changed = 0; | ||
56 | |||
57 | params.coord_shortaddr = addr->short_addr; | ||
58 | changed |= IEEE802154_LLSEC_PARAM_COORD_SHORTADDR; | ||
59 | |||
60 | params.pan_id = addr->pan_id; | ||
61 | changed |= IEEE802154_LLSEC_PARAM_PAN_ID; | ||
62 | |||
63 | params.hwaddr = ieee802154_devaddr_from_raw(dev->dev_addr); | ||
64 | changed |= IEEE802154_LLSEC_PARAM_HWADDR; | ||
65 | |||
66 | params.coord_hwaddr = params.hwaddr; | ||
67 | changed |= IEEE802154_LLSEC_PARAM_COORD_HWADDR; | ||
68 | |||
69 | rc = ops->llsec->set_params(dev, ¶ms, changed); | ||
70 | } | ||
71 | |||
50 | /* FIXME: add validation for unused parameters to be sane | 72 | /* FIXME: add validation for unused parameters to be sane |
51 | * for SoftMAC | 73 | * for SoftMAC |
52 | */ | 74 | */ |
53 | ieee802154_nl_start_confirm(dev, IEEE802154_SUCCESS); | 75 | ieee802154_nl_start_confirm(dev, IEEE802154_SUCCESS); |
54 | 76 | ||
55 | return 0; | 77 | return rc; |
56 | } | 78 | } |
57 | 79 | ||
58 | static struct wpan_phy *mac802154_get_phy(const struct net_device *dev) | 80 | static struct wpan_phy *mac802154_get_phy(const struct net_device *dev) |