Skip to content

Commit

Permalink
mac802154: tx: move xmit callback to tx file
Browse files Browse the repository at this point in the history
This patch moves the netdev xmit callback functions into the tx.c 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 26, 2014
1 parent c6f635f commit 50c6fb9
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 67 deletions.
5 changes: 2 additions & 3 deletions net/mac802154/ieee802154_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -121,12 +121,11 @@ int mac802154_slave_close(struct net_device *dev);

void mac802154_monitors_rx(struct ieee802154_local *local, struct sk_buff *skb);
void mac802154_monitor_setup(struct net_device *dev);
netdev_tx_t mac802154_monitor_xmit(struct sk_buff *skb, struct net_device *dev);

void mac802154_wpans_rx(struct ieee802154_local *local, struct sk_buff *skb);
void mac802154_wpan_setup(struct net_device *dev);

netdev_tx_t mac802154_tx(struct ieee802154_local *local, struct sk_buff *skb,
u8 page, u8 chan);
netdev_tx_t mac802154_wpan_xmit(struct sk_buff *skb, struct net_device *dev);

/* MIB callbacks */
void mac802154_dev_set_short_addr(struct net_device *dev, __le16 val);
Expand Down
35 changes: 0 additions & 35 deletions net/mac802154/iface.c
Original file line number Diff line number Diff line change
Expand Up @@ -307,41 +307,6 @@ mac802154_header_parse(const struct sk_buff *skb, unsigned char *haddr)
return sizeof(*addr);
}

static netdev_tx_t
mac802154_wpan_xmit(struct sk_buff *skb, struct net_device *dev)
{
struct ieee802154_sub_if_data *sdata;
u8 chan, page;
int rc;

sdata = IEEE802154_DEV_TO_SUB_IF(dev);

spin_lock_bh(&sdata->mib_lock);
chan = sdata->chan;
page = sdata->page;
spin_unlock_bh(&sdata->mib_lock);

if (chan == MAC802154_CHAN_NONE ||
page >= WPAN_NUM_PAGES ||
chan >= WPAN_NUM_CHANNELS) {
kfree_skb(skb);
return NETDEV_TX_OK;
}

rc = mac802154_llsec_encrypt(&sdata->sec, skb);
if (rc) {
pr_warn("encryption failed: %i\n", rc);
kfree_skb(skb);
return NETDEV_TX_OK;
}

skb->skb_iif = dev->ifindex;
dev->stats.tx_packets++;
dev->stats.tx_bytes += skb->len;

return mac802154_tx(sdata->local, skb, page, chan);
}

static struct header_ops mac802154_header_ops = {
.create = mac802154_header_create,
.parse = mac802154_header_parse,
Expand Down
27 changes: 0 additions & 27 deletions net/mac802154/monitor.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,33 +30,6 @@

#include "ieee802154_i.h"

static netdev_tx_t mac802154_monitor_xmit(struct sk_buff *skb,
struct net_device *dev)
{
struct ieee802154_sub_if_data *sdata;
u8 chan, page;

sdata = IEEE802154_DEV_TO_SUB_IF(dev);

/* FIXME: locking */
chan = sdata->local->phy->current_channel;
page = sdata->local->phy->current_page;

if (chan == MAC802154_CHAN_NONE) /* not initialized */
return NETDEV_TX_OK;

if (WARN_ON(page >= WPAN_NUM_PAGES) ||
WARN_ON(chan >= WPAN_NUM_CHANNELS))
return NETDEV_TX_OK;

skb->skb_iif = dev->ifindex;
dev->stats.tx_packets++;
dev->stats.tx_bytes += skb->len;

return mac802154_tx(sdata->local, skb, page, chan);
}


void mac802154_monitors_rx(struct ieee802154_local *local, struct sk_buff *skb)
{
struct sk_buff *skb2;
Expand Down
59 changes: 57 additions & 2 deletions net/mac802154/tx.c
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,8 @@ static void mac802154_xmit_worker(struct work_struct *work)
kfree(xw);
}

netdev_tx_t mac802154_tx(struct ieee802154_local *local, struct sk_buff *skb,
u8 page, u8 chan)
static netdev_tx_t mac802154_tx(struct ieee802154_local *local,
struct sk_buff *skb, u8 page, u8 chan)
{
struct xmit_work *work;
struct ieee802154_sub_if_data *sdata;
Expand Down Expand Up @@ -127,3 +127,58 @@ netdev_tx_t mac802154_tx(struct ieee802154_local *local, struct sk_buff *skb,
kfree_skb(skb);
return NETDEV_TX_OK;
}

netdev_tx_t mac802154_monitor_xmit(struct sk_buff *skb, struct net_device *dev)
{
struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
u8 chan, page;

/* FIXME: locking */
chan = sdata->local->phy->current_channel;
page = sdata->local->phy->current_page;

if (chan == MAC802154_CHAN_NONE) /* not initialized */
return NETDEV_TX_OK;

if (WARN_ON(page >= WPAN_NUM_PAGES) ||
WARN_ON(chan >= WPAN_NUM_CHANNELS))
return NETDEV_TX_OK;

skb->skb_iif = dev->ifindex;
dev->stats.tx_packets++;
dev->stats.tx_bytes += skb->len;

return mac802154_tx(sdata->local, skb, page, chan);
}

netdev_tx_t mac802154_wpan_xmit(struct sk_buff *skb, struct net_device *dev)
{
struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
u8 chan, page;
int rc;

spin_lock_bh(&sdata->mib_lock);
chan = sdata->chan;
page = sdata->page;
spin_unlock_bh(&sdata->mib_lock);

if (chan == MAC802154_CHAN_NONE ||
page >= WPAN_NUM_PAGES ||
chan >= WPAN_NUM_CHANNELS) {
kfree_skb(skb);
return NETDEV_TX_OK;
}

rc = mac802154_llsec_encrypt(&sdata->sec, skb);
if (rc) {
pr_warn("encryption failed: %i\n", rc);
kfree_skb(skb);
return NETDEV_TX_OK;
}

skb->skb_iif = dev->ifindex;
dev->stats.tx_packets++;
dev->stats.tx_bytes += skb->len;

return mac802154_tx(sdata->local, skb, page, chan);
}

0 comments on commit 50c6fb9

Please sign in to comment.