extern struct ieee802154_reduced_mlme_ops mac802154_mlme_reduced;
extern struct ieee802154_mlme_ops mac802154_mlme_wpan;
-int mac802154_slave_open(struct net_device *dev);
-int mac802154_slave_close(struct net_device *dev);
-
void mac802154_monitor_setup(struct net_device *dev);
netdev_tx_t
ieee802154_monitor_start_xmit(struct sk_buff *skb, struct net_device *dev);
mutex_unlock(&sdata->local->iflist_mtx);
}
+static int mac802154_slave_open(struct net_device *dev)
+{
+ struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
+ struct ieee802154_sub_if_data *subif;
+ struct ieee802154_local *local = sdata->local;
+ int res = 0;
+
+ ASSERT_RTNL();
+
+ if (sdata->type == IEEE802154_DEV_WPAN) {
+ mutex_lock(&sdata->local->iflist_mtx);
+ list_for_each_entry(subif, &sdata->local->interfaces, list) {
+ if (subif != sdata && subif->type == sdata->type &&
+ subif->running) {
+ mutex_unlock(&sdata->local->iflist_mtx);
+ return -EBUSY;
+ }
+ }
+ mutex_unlock(&sdata->local->iflist_mtx);
+ }
+
+ mutex_lock(&sdata->local->iflist_mtx);
+ sdata->running = true;
+ mutex_unlock(&sdata->local->iflist_mtx);
+
+ if (local->open_count++ == 0) {
+ res = local->ops->start(&local->hw);
+ WARN_ON(res);
+ if (res)
+ goto err;
+ }
+
+ netif_start_queue(dev);
+ return 0;
+err:
+ sdata->local->open_count--;
+
+ return res;
+}
+
static int mac802154_wpan_open(struct net_device *dev)
{
int rc;
return rc;
}
+static int mac802154_slave_close(struct net_device *dev)
+{
+ struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
+ struct ieee802154_local *local = sdata->local;
+
+ ASSERT_RTNL();
+
+ netif_stop_queue(dev);
+
+ mutex_lock(&sdata->local->iflist_mtx);
+ sdata->running = false;
+ mutex_unlock(&sdata->local->iflist_mtx);
+
+ if (!--local->open_count)
+ local->ops->stop(&local->hw);
+
+ return 0;
+}
+
static int mac802154_set_header_security(struct ieee802154_sub_if_data *sdata,
struct ieee802154_hdr *hdr,
const struct ieee802154_mac_cb *cb)
#include "ieee802154_i.h"
-int mac802154_slave_open(struct net_device *dev)
-{
- struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
- struct ieee802154_sub_if_data *subif;
- struct ieee802154_local *local = sdata->local;
- int res = 0;
-
- ASSERT_RTNL();
-
- if (sdata->type == IEEE802154_DEV_WPAN) {
- mutex_lock(&sdata->local->iflist_mtx);
- list_for_each_entry(subif, &sdata->local->interfaces, list) {
- if (subif != sdata && subif->type == sdata->type &&
- subif->running) {
- mutex_unlock(&sdata->local->iflist_mtx);
- return -EBUSY;
- }
- }
- mutex_unlock(&sdata->local->iflist_mtx);
- }
-
- mutex_lock(&sdata->local->iflist_mtx);
- sdata->running = true;
- mutex_unlock(&sdata->local->iflist_mtx);
-
- if (local->open_count++ == 0) {
- res = local->ops->start(&local->hw);
- WARN_ON(res);
- if (res)
- goto err;
- }
-
- netif_start_queue(dev);
- return 0;
-err:
- sdata->local->open_count--;
-
- return res;
-}
-
-int mac802154_slave_close(struct net_device *dev)
-{
- struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
- struct ieee802154_local *local = sdata->local;
-
- ASSERT_RTNL();
-
- netif_stop_queue(dev);
-
- mutex_lock(&sdata->local->iflist_mtx);
- sdata->running = false;
- mutex_unlock(&sdata->local->iflist_mtx);
-
- if (!--local->open_count)
- local->ops->stop(&local->hw);
-
- return 0;
-}
-
static int
mac802154_netdev_register(struct wpan_phy *phy, struct net_device *dev)
{