Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 19ec690a authored by Alexander Aring's avatar Alexander Aring Committed by Marcel Holtmann
Browse files

mac802154: main: move open and close into iface



These functions can be static inside the iface file, because it's not
used anywhere else. This patch moves these functions into iface file.

Signed-off-by: default avatarAlexander Aring <alex.aring@gmail.com>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent b9ff77e5
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -123,9 +123,6 @@ IEEE802154_DEV_TO_SUB_IF(const struct net_device *dev)
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);
+59 −0
Original line number Diff line number Diff line
@@ -142,6 +142,46 @@ void mac802154_get_mac_params(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;
@@ -201,6 +241,25 @@ static int mac802154_wpan_open(struct net_device *dev)
	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)
+0 −59
Original line number Diff line number Diff line
@@ -29,65 +29,6 @@

#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)
{