root/net/mac802154/mib.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. mac802154_dev_set_page_channel
  2. mac802154_get_params
  3. mac802154_set_params
  4. mac802154_add_key
  5. mac802154_del_key
  6. mac802154_add_dev
  7. mac802154_del_dev
  8. mac802154_add_devkey
  9. mac802154_del_devkey
  10. mac802154_add_seclevel
  11. mac802154_del_seclevel
  12. mac802154_lock_table
  13. mac802154_get_table
  14. mac802154_unlock_table

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  * Copyright 2007-2012 Siemens AG
   4  *
   5  * Written by:
   6  * Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
   7  * Sergey Lapin <slapin@ossfans.org>
   8  * Maxim Gorbachyov <maxim.gorbachev@siemens.com>
   9  * Alexander Smirnov <alex.bluesman.smirnov@gmail.com>
  10  */
  11 
  12 #include <linux/if_arp.h>
  13 
  14 #include <net/mac802154.h>
  15 #include <net/ieee802154_netdev.h>
  16 #include <net/cfg802154.h>
  17 
  18 #include "ieee802154_i.h"
  19 #include "driver-ops.h"
  20 
  21 void mac802154_dev_set_page_channel(struct net_device *dev, u8 page, u8 chan)
  22 {
  23         struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
  24         struct ieee802154_local *local = sdata->local;
  25         int res;
  26 
  27         ASSERT_RTNL();
  28 
  29         BUG_ON(dev->type != ARPHRD_IEEE802154);
  30 
  31         res = drv_set_channel(local, page, chan);
  32         if (res) {
  33                 pr_debug("set_channel failed\n");
  34         } else {
  35                 local->phy->current_channel = chan;
  36                 local->phy->current_page = page;
  37         }
  38 }
  39 
  40 int mac802154_get_params(struct net_device *dev,
  41                          struct ieee802154_llsec_params *params)
  42 {
  43         struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
  44         int res;
  45 
  46         BUG_ON(dev->type != ARPHRD_IEEE802154);
  47 
  48         mutex_lock(&sdata->sec_mtx);
  49         res = mac802154_llsec_get_params(&sdata->sec, params);
  50         mutex_unlock(&sdata->sec_mtx);
  51 
  52         return res;
  53 }
  54 
  55 int mac802154_set_params(struct net_device *dev,
  56                          const struct ieee802154_llsec_params *params,
  57                          int changed)
  58 {
  59         struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
  60         int res;
  61 
  62         BUG_ON(dev->type != ARPHRD_IEEE802154);
  63 
  64         mutex_lock(&sdata->sec_mtx);
  65         res = mac802154_llsec_set_params(&sdata->sec, params, changed);
  66         mutex_unlock(&sdata->sec_mtx);
  67 
  68         return res;
  69 }
  70 
  71 int mac802154_add_key(struct net_device *dev,
  72                       const struct ieee802154_llsec_key_id *id,
  73                       const struct ieee802154_llsec_key *key)
  74 {
  75         struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
  76         int res;
  77 
  78         BUG_ON(dev->type != ARPHRD_IEEE802154);
  79 
  80         mutex_lock(&sdata->sec_mtx);
  81         res = mac802154_llsec_key_add(&sdata->sec, id, key);
  82         mutex_unlock(&sdata->sec_mtx);
  83 
  84         return res;
  85 }
  86 
  87 int mac802154_del_key(struct net_device *dev,
  88                       const struct ieee802154_llsec_key_id *id)
  89 {
  90         struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
  91         int res;
  92 
  93         BUG_ON(dev->type != ARPHRD_IEEE802154);
  94 
  95         mutex_lock(&sdata->sec_mtx);
  96         res = mac802154_llsec_key_del(&sdata->sec, id);
  97         mutex_unlock(&sdata->sec_mtx);
  98 
  99         return res;
 100 }
 101 
 102 int mac802154_add_dev(struct net_device *dev,
 103                       const struct ieee802154_llsec_device *llsec_dev)
 104 {
 105         struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
 106         int res;
 107 
 108         BUG_ON(dev->type != ARPHRD_IEEE802154);
 109 
 110         mutex_lock(&sdata->sec_mtx);
 111         res = mac802154_llsec_dev_add(&sdata->sec, llsec_dev);
 112         mutex_unlock(&sdata->sec_mtx);
 113 
 114         return res;
 115 }
 116 
 117 int mac802154_del_dev(struct net_device *dev, __le64 dev_addr)
 118 {
 119         struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
 120         int res;
 121 
 122         BUG_ON(dev->type != ARPHRD_IEEE802154);
 123 
 124         mutex_lock(&sdata->sec_mtx);
 125         res = mac802154_llsec_dev_del(&sdata->sec, dev_addr);
 126         mutex_unlock(&sdata->sec_mtx);
 127 
 128         return res;
 129 }
 130 
 131 int mac802154_add_devkey(struct net_device *dev,
 132                          __le64 device_addr,
 133                          const struct ieee802154_llsec_device_key *key)
 134 {
 135         struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
 136         int res;
 137 
 138         BUG_ON(dev->type != ARPHRD_IEEE802154);
 139 
 140         mutex_lock(&sdata->sec_mtx);
 141         res = mac802154_llsec_devkey_add(&sdata->sec, device_addr, key);
 142         mutex_unlock(&sdata->sec_mtx);
 143 
 144         return res;
 145 }
 146 
 147 int mac802154_del_devkey(struct net_device *dev,
 148                          __le64 device_addr,
 149                          const struct ieee802154_llsec_device_key *key)
 150 {
 151         struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
 152         int res;
 153 
 154         BUG_ON(dev->type != ARPHRD_IEEE802154);
 155 
 156         mutex_lock(&sdata->sec_mtx);
 157         res = mac802154_llsec_devkey_del(&sdata->sec, device_addr, key);
 158         mutex_unlock(&sdata->sec_mtx);
 159 
 160         return res;
 161 }
 162 
 163 int mac802154_add_seclevel(struct net_device *dev,
 164                            const struct ieee802154_llsec_seclevel *sl)
 165 {
 166         struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
 167         int res;
 168 
 169         BUG_ON(dev->type != ARPHRD_IEEE802154);
 170 
 171         mutex_lock(&sdata->sec_mtx);
 172         res = mac802154_llsec_seclevel_add(&sdata->sec, sl);
 173         mutex_unlock(&sdata->sec_mtx);
 174 
 175         return res;
 176 }
 177 
 178 int mac802154_del_seclevel(struct net_device *dev,
 179                            const struct ieee802154_llsec_seclevel *sl)
 180 {
 181         struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
 182         int res;
 183 
 184         BUG_ON(dev->type != ARPHRD_IEEE802154);
 185 
 186         mutex_lock(&sdata->sec_mtx);
 187         res = mac802154_llsec_seclevel_del(&sdata->sec, sl);
 188         mutex_unlock(&sdata->sec_mtx);
 189 
 190         return res;
 191 }
 192 
 193 void mac802154_lock_table(struct net_device *dev)
 194 {
 195         struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
 196 
 197         BUG_ON(dev->type != ARPHRD_IEEE802154);
 198 
 199         mutex_lock(&sdata->sec_mtx);
 200 }
 201 
 202 void mac802154_get_table(struct net_device *dev,
 203                          struct ieee802154_llsec_table **t)
 204 {
 205         struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
 206 
 207         BUG_ON(dev->type != ARPHRD_IEEE802154);
 208 
 209         *t = &sdata->sec.table;
 210 }
 211 
 212 void mac802154_unlock_table(struct net_device *dev)
 213 {
 214         struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
 215 
 216         BUG_ON(dev->type != ARPHRD_IEEE802154);
 217 
 218         mutex_unlock(&sdata->sec_mtx);
 219 }

/* [<][>][^][v][top][bottom][index][help] */