Skip to content

Commit

Permalink
mac802154: main: move open and close into iface
Browse files Browse the repository at this point in the history
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: Alexander Aring <alex.aring@gmail.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
  • Loading branch information
Alexander Aring authored and Marcel Holtmann committed Oct 28, 2014
1 parent b9ff77e commit 19ec690
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 62 deletions.
3 changes: 0 additions & 3 deletions net/mac802154/ieee802154_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
59 changes: 59 additions & 0 deletions net/mac802154/iface.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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)
Expand Down
59 changes: 0 additions & 59 deletions net/mac802154/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand Down

0 comments on commit 19ec690

Please sign in to comment.