mac802154: add ieee802154_vif struct
This patch adds an ieee802154_vif similar like the ieee80211_vif which holds the interface type and maybe further more attributes like the ieee80211_vif structure. Signed-off-by: Alexander Aring <alex.aring@gmail.com> Cc: Varka Bhadram <varkabhadram@gmail.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
committed by
Marcel Holtmann
parent
e4962a1443
commit
7c118c1a86
@@ -79,7 +79,6 @@ struct ieee802154_sub_if_data {
|
||||
struct ieee802154_local *local;
|
||||
struct net_device *dev;
|
||||
|
||||
int type;
|
||||
unsigned long state;
|
||||
char name[IFNAMSIZ];
|
||||
|
||||
@@ -103,6 +102,8 @@ struct ieee802154_sub_if_data {
|
||||
struct mutex sec_mtx;
|
||||
|
||||
struct mac802154_llsec sec;
|
||||
/* must be last, dynamically sized area in this! */
|
||||
struct ieee802154_vif vif;
|
||||
};
|
||||
|
||||
#define MAC802154_CHAN_NONE 0xff /* No channel is assigned */
|
||||
|
||||
@@ -136,10 +136,11 @@ static int mac802154_slave_open(struct net_device *dev)
|
||||
|
||||
ASSERT_RTNL();
|
||||
|
||||
if (sdata->type == IEEE802154_DEV_WPAN) {
|
||||
if (sdata->vif.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 &&
|
||||
if (subif != sdata &&
|
||||
subif->vif.type == sdata->vif.type &&
|
||||
ieee802154_sdata_running(subif)) {
|
||||
mutex_unlock(&sdata->local->iflist_mtx);
|
||||
return -EBUSY;
|
||||
@@ -397,7 +398,7 @@ static int
|
||||
ieee802154_setup_sdata(struct ieee802154_sub_if_data *sdata, int type)
|
||||
{
|
||||
/* set some type-dependent values */
|
||||
sdata->type = type;
|
||||
sdata->vif.type = type;
|
||||
|
||||
get_random_bytes(&sdata->bsn, 1);
|
||||
get_random_bytes(&sdata->dsn, 1);
|
||||
@@ -447,8 +448,8 @@ ieee802154_if_add(struct ieee802154_local *local, const char *name,
|
||||
|
||||
ASSERT_RTNL();
|
||||
|
||||
ndev = alloc_netdev(sizeof(*sdata), name, NET_NAME_UNKNOWN,
|
||||
ieee802154_if_setup);
|
||||
ndev = alloc_netdev(sizeof(*sdata) + local->hw.vif_data_size, name,
|
||||
NET_NAME_UNKNOWN, ieee802154_if_setup);
|
||||
if (!ndev)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
|
||||
+2
-2
@@ -208,7 +208,7 @@ __ieee802154_rx_handle_packet(struct ieee802154_local *local,
|
||||
}
|
||||
|
||||
list_for_each_entry_rcu(sdata, &local->interfaces, list) {
|
||||
if (sdata->type != IEEE802154_DEV_WPAN ||
|
||||
if (sdata->vif.type != IEEE802154_DEV_WPAN ||
|
||||
!netif_running(sdata->dev))
|
||||
continue;
|
||||
|
||||
@@ -233,7 +233,7 @@ ieee802154_monitors_rx(struct ieee802154_local *local, struct sk_buff *skb)
|
||||
skb->protocol = htons(ETH_P_IEEE802154);
|
||||
|
||||
list_for_each_entry_rcu(sdata, &local->interfaces, list) {
|
||||
if (sdata->type != IEEE802154_DEV_MONITOR)
|
||||
if (sdata->vif.type != IEEE802154_DEV_MONITOR)
|
||||
continue;
|
||||
|
||||
if (!ieee802154_sdata_running(sdata))
|
||||
|
||||
Reference in New Issue
Block a user