mac80211: reduce reliance on netdev
For bluetooth 3, we will most likely not have a netdev for a virtual interface (sdata), so prepare for that by reducing the reliance on having a netdev. This patch moves the name and address fields into the sdata struct and uses them from there all over. Some work is needed to keep them sync'ed, but that's not a lot of work and in slow paths anyway. In doing so, this also reduces the number of pointer dereferences in many places, because of things like sdata->dev->dev_addr becoming sdata->vif.addr. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:

committed by
John W. Linville

vanhempi
abe60632f3
commit
47846c9b0c
@@ -140,7 +140,6 @@ typedef unsigned __bitwise__ ieee80211_tx_result;
|
||||
|
||||
struct ieee80211_tx_data {
|
||||
struct sk_buff *skb;
|
||||
struct net_device *dev;
|
||||
struct ieee80211_local *local;
|
||||
struct ieee80211_sub_if_data *sdata;
|
||||
struct sta_info *sta;
|
||||
@@ -433,6 +432,8 @@ struct ieee80211_sub_if_data {
|
||||
|
||||
int drop_unencrypted;
|
||||
|
||||
char name[IFNAMSIZ];
|
||||
|
||||
/*
|
||||
* keep track of whether the HT opmode (stored in
|
||||
* vif.bss_info.ht_operation_mode) is valid.
|
||||
@@ -937,6 +938,8 @@ void ieee80211_rx_bss_put(struct ieee80211_local *local,
|
||||
struct ieee80211_bss *bss);
|
||||
|
||||
/* interface handling */
|
||||
int ieee80211_iface_init(void);
|
||||
void ieee80211_iface_exit(void);
|
||||
int ieee80211_if_add(struct ieee80211_local *local, const char *name,
|
||||
struct net_device **new_dev, enum nl80211_iftype type,
|
||||
struct vif_params *params);
|
||||
|
Viittaa uudesa ongelmassa
Block a user