This patch reduces mdev usage by replacing struct net_device *
arguments that are never used except for dereferencing to get
struct ieee80211_local from ieee80211_ptr by struct
ieee80211_local directly. Also removes ->master from sub_if_data.
Signed-off-by: Johannes Berg <[EMAIL PROTECTED]>
--- wireless-dev.orig/net/d80211/ieee80211_i.h 2006-11-19 20:13:55.359275208
+0100
+++ wireless-dev/net/d80211/ieee80211_i.h 2006-11-19 20:13:56.069275208
+0100
@@ -289,7 +289,6 @@ struct ieee80211_sub_if_data {
unsigned int type;
struct net_device *dev;
- struct net_device *master;
struct ieee80211_local *local;
int mc_count;
--- wireless-dev.orig/net/d80211/ieee80211.c 2006-11-19 20:13:55.359275208
+0100
+++ wireless-dev/net/d80211/ieee80211.c 2006-11-19 20:13:56.079275208 +0100
@@ -1569,7 +1569,7 @@ static int ieee80211_subif_start_xmit(st
pkt_data->mgmt_iface = (sdata->type == IEEE80211_IF_TYPE_MGMT);
pkt_data->do_not_encrypt = no_encrypt;
- skb->dev = sdata->master;
+ skb->dev = local->mdev;
sdata->stats.tx_packets++;
sdata->stats.tx_bytes += skb->len;
@@ -1625,7 +1625,7 @@ ieee80211_mgmt_start_xmit(struct sk_buff
pkt_data->pkt_probe_resp = 1;
skb->priority = 20; /* use hardcoded priority for mgmt TX queue */
- skb->dev = sdata->master;
+ skb->dev = sdata->local->mdev;
/*
* We're using the protocol field of the the frame control header
@@ -2031,12 +2031,12 @@ static void ieee80211_set_multicast_list
sdata->mc_count = dev->mc_count;
}
if (local->hw->set_multicast_list) {
- flags = sdata->master->flags;
+ flags = local->mdev->flags;
if (local->iff_allmultis)
flags |= IFF_ALLMULTI;
if (local->iff_promiscs)
flags |= IFF_PROMISC;
- local->hw->set_multicast_list(sdata->master, flags,
+ local->hw->set_multicast_list(local->mdev, flags,
local->mc_count);
}
}
@@ -2229,7 +2229,7 @@ static int ieee80211_open(struct net_dev
conf.if_id = dev->ifindex;
conf.type = sdata->type;
conf.mac_addr = dev->dev_addr;
- res = local->hw->add_interface(sdata->master, &conf);
+ res = local->hw->add_interface(local->mdev, &conf);
if (res) {
if (sdata->type == IEEE80211_IF_TYPE_MNTR)
ieee80211_start_hard_monitor(local);
@@ -2245,12 +2245,12 @@ static int ieee80211_open(struct net_dev
if (local->open_count == 0) {
res = 0;
if (local->hw->open)
- res = local->hw->open(sdata->master);
+ res = local->hw->open(local->mdev);
if (res == 0) {
- res = dev_open(sdata->master);
+ res = dev_open(local->mdev);
if (res) {
if (local->hw->stop)
- local->hw->stop(sdata->master);
+ local->hw->stop(local->mdev);
} else if (local->apdev)
dev_open(local->apdev);
}
@@ -2259,7 +2259,7 @@ static int ieee80211_open(struct net_dev
local->hw->remove_interface(dev, &conf);
return res;
}
- ieee80211_init_scan(sdata->master);
+ ieee80211_init_scan(local->mdev);
}
local->open_count++;
@@ -2296,12 +2296,12 @@ static int ieee80211_stop(struct net_dev
local->open_count--;
if (local->open_count == 0) {
- ieee80211_stop_scan(sdata->master);
- dev_close(sdata->master);
+ ieee80211_stop_scan(local->mdev);
+ dev_close(local->mdev);
if (local->apdev)
dev_close(local->apdev);
if (local->hw->stop)
- local->hw->stop(sdata->master);
+ local->hw->stop(local->mdev);
}
if (local->hw->remove_interface) {
struct ieee80211_if_init_conf conf;
@@ -2309,7 +2309,7 @@ static int ieee80211_stop(struct net_dev
conf.if_id = dev->ifindex;
conf.type = sdata->type;
conf.mac_addr = dev->dev_addr;
- local->hw->remove_interface(sdata->master, &conf);
+ local->hw->remove_interface(local->mdev, &conf);
}
ieee80211_if_shutdown(dev);
@@ -3660,7 +3660,7 @@ void __ieee80211_rx(struct net_device *d
continue;
rx.u.rx.ra_match = 0;
}
- if (sdata->dev == sdata->master &&
+ if (sdata->dev == local->mdev &&
!rx.u.rx.in_scan)
/* do not receive anything via
* master device when not scanning */
@@ -4438,7 +4438,6 @@ struct net_device *ieee80211_alloc_hw(si
sdata = IEEE80211_DEV_TO_SUB_IF(mdev);
sdata->type = IEEE80211_IF_TYPE_AP;
sdata->dev = mdev;
- sdata->master = mdev;
sdata->local = local;
sdata->u.ap.force_unicast_rateidx = -1;
sdata->u.ap.max_ratectrl_rateidx = -1;
@@ -4676,8 +4675,7 @@ void ieee80211_release_hw(struct ieee802
int ieee80211_netif_oper(struct net_device *sdev, Netif_Oper op)
{
struct ieee80211_local *local = sdev->ieee80211_ptr;
- struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(sdev);
- struct net_device *dev = sdata->master;
+ struct net_device *dev = local->mdev;
switch (op) {
case NETIF_ATTACH:
--- wireless-dev.orig/net/d80211/ieee80211_iface.c 2006-11-19
20:13:55.359275208 +0100
+++ wireless-dev/net/d80211/ieee80211_iface.c 2006-11-19 20:13:56.079275208
+0100
@@ -80,7 +80,6 @@ int ieee80211_if_add(struct net_device *
sdata = IEEE80211_DEV_TO_SUB_IF(ndev);
sdata->type = IEEE80211_IF_TYPE_AP;
- sdata->master = local->mdev;
sdata->dev = ndev;
sdata->local = local;
sdata_parent = IEEE80211_DEV_TO_SUB_IF(dev);
@@ -129,7 +128,6 @@ int ieee80211_if_add_mgmt(struct ieee802
nsdata = IEEE80211_DEV_TO_SUB_IF(ndev);
nsdata->type = IEEE80211_IF_TYPE_MGMT;
- nsdata->master = local->mdev;
nsdata->dev = ndev;
nsdata->local = local;
ieee80211_if_sdata_init(nsdata);
@@ -195,7 +193,7 @@ void ieee80211_if_set_type(struct net_de
ifsta->create_ibss = 1;
ifsta->wmm_enabled = 1;
- msdata = IEEE80211_DEV_TO_SUB_IF(sdata->master);
+ msdata = IEEE80211_DEV_TO_SUB_IF(sdata->local->mdev);
sdata->bss = &msdata->u.ap;
break;
}
@@ -326,9 +324,6 @@ int ieee80211_if_remove(struct net_devic
ASSERT_RTNL();
- /* Make sure not to touch sdata->master since it may
- * have already been deleted, etc. */
-
list_for_each_entry_safe(sdata, n, &local->sub_if_list, list) {
if ((sdata->type == id || id == -1) &&
strcmp(name, sdata->dev->name) == 0 &&
--- wireless-dev.orig/net/d80211/ieee80211_sta.c 2006-11-19
20:13:55.369275208 +0100
+++ wireless-dev/net/d80211/ieee80211_sta.c 2006-11-19 20:13:56.079275208
+0100
@@ -390,7 +390,7 @@ static void ieee80211_sta_tx(struct net_
struct ieee80211_tx_packet_data *pkt_data;
sdata = IEEE80211_DEV_TO_SUB_IF(dev);
- skb->dev = sdata->master;
+ skb->dev = sdata->local->mdev;
skb->mac.raw = skb->nh.raw = skb->h.raw = skb->data;
pkt_data = (struct ieee80211_tx_packet_data *) skb->cb;
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html