Net: mac80211, remove bitfields from struct ieee80211_tx_packet_data
Subsystems (3)
PATCH 1/4 Net: mac80211, remove bitfields from struct ieee80211_tx_packet_data
All against mac80211 tree
--
mac80211, remove bitfields from struct ieee80211_tx_packet_data
---
commit 10e9252a35d42fb92e65dfaaef136d81dbb71c4f
tree f8579cff30dc8053b770b78582a30961b7320046
parent a050b807aede7f33339c6bee0bef1c07cd9c5fc4
author Jiri Slaby <[email protected]> Sun, 12 Aug 2007 11:14:36 +0200 committer Jiri Slaby <[email protected]> Sun, 12 Aug 2007 11:14:36 +0200
net/mac80211/ieee80211.c | 15 +++++++++++---- net/mac80211/ieee80211_i.h | 11 ++++++----- net/mac80211/ieee80211_sta.c | 6 ++++-- net/mac80211/rx.c | 4 ++-- net/mac80211/tx.c | 23 ++++++++++++----------- net/mac80211/wme.c | 4 ++-- 6 files changed, 37 insertions(+), 26 deletions(-)
net/mac80211/ieee80211.c +11 -4
@@ -933,10 +933,17 @@ static void ieee80211_remove_tx_extra(struct ieee80211_local *local, pkt_data = (struct ieee80211_tx_packet_data *)skb->cb; pkt_data->ifindex = control->ifindex; - pkt_data->mgmt_iface = (control->type ==IEEE80211_IF_TYPE_MGMT ); - pkt_data->req_tx_status = !!(control->flags &IEEE80211_TXCTL_REQ_TX_STATUS ); - pkt_data->do_not_encrypt = !!(control->flags &IEEE80211_TXCTL_DO_NOT_ENCRYPT ); - pkt_data->requeue = !!(control->flags &IEEE80211_TXCTL_REQUEUE ); + pkt_data->flags &= ~(IEEE80211_TXPD_REQ_TX_STATUS | +IEEE80211_TXPD_DO_NOT_ENCRYPT |IEEE80211_TXPD_REQUEUE | +IEEE80211_TXPD_MGMT_IFACE ); +if (control->flags &IEEE80211_TXCTL_REQ_TX_STATUS ) + pkt_data->flags |=IEEE80211_TXPD_REQ_TX_STATUS ; +if (control->flags &IEEE80211_TXCTL_DO_NOT_ENCRYPT ) + pkt_data->flags |=IEEE80211_TXPD_DO_NOT_ENCRYPT ; +if (control->flags &IEEE80211_TXCTL_REQUEUE ) + pkt_data->flags |=IEEE80211_TXPD_REQUEUE ; +if (control->type ==IEEE80211_IF_TYPE_MGMT ) + pkt_data->flags |=IEEE80211_TXPD_MGMT_IFACE ; pkt_data->queue = control->queue; hdrlen =ieee80211_get_hdrlen_from_skb (skb);
net/mac80211/ieee80211_i.h +6 -5
@@ -170,11 +170,12 @@ struct ieee80211_txrx_data {struct ieee80211_tx_packet_data {int ifindex;unsigned long jiffies; -unsigned int req_tx_status:1 ; -unsigned int do_not_encrypt:1 ; -unsigned int requeue:1 ; -unsigned int mgmt_iface:1 ; -unsigned int queue:4 ; +#define IEEE80211_TXPD_REQ_TX_STATUS BIT(0) +#define IEEE80211_TXPD_DO_NOT_ENCRYPT BIT(1) +#define IEEE80211_TXPD_REQUEUE BIT(2) +#define IEEE80211_TXPD_MGMT_IFACE BIT(3) +unsigned int flags; +u8 queue; };struct ieee80211_tx_stored_packet {
net/mac80211/ieee80211_sta.c +4 -2
@@ -506,8 +506,10 @@ static void ieee80211_sta_tx(struct net_device *dev, struct sk_buff *skb, pkt_data = (struct ieee80211_tx_packet_data *) skb->cb;memset (pkt_data,0 ,sizeof (struct ieee80211_tx_packet_data )); pkt_data->ifindex = sdata->dev->ifindex; - pkt_data->mgmt_iface = (sdata->type ==IEEE80211_IF_TYPE_MGMT ); - pkt_data->do_not_encrypt = !encrypt; +if (sdata->type ==IEEE80211_IF_TYPE_MGMT ) + pkt_data->flags |=IEEE80211_TXPD_MGMT_IFACE ; +if (!encrypt) + pkt_data->flags |=IEEE80211_TXPD_DO_NOT_ENCRYPT ;dev_queue_xmit (skb); }
net/mac80211/rx.c +2 -2
@@ -415,7 +415,7 @@ static int ap_sta_ps_end(struct net_device *dev, struct sta_info *sta)while ((skb =skb_dequeue (&sta->tx_filtered)) !=NULL ) { pkt_data = (struct ieee80211_tx_packet_data *) skb->cb; sent++; - pkt_data->requeue =1 ; + pkt_data->flags |=IEEE80211_TXPD_REQUEUE ;dev_queue_xmit (skb); }while ((skb =skb_dequeue (&sta->ps_tx_buf)) !=NULL ) {
@@ -427,7 +427,7 @@ static int ap_sta_ps_end(struct net_device *dev, struct sta_info *sta)"since STA not sleeping anymore\n" , dev->name, MAC_ARG(sta->addr), sta->aid);#endif /* CONFIG_MAC80211_VERBOSE_PS_DEBUG */ - pkt_data->requeue =1 ; + pkt_data->flags |=IEEE80211_TXPD_REQUEUE ;dev_queue_xmit (skb); }
net/mac80211/tx.c +12 -11
@@ -1248,11 +1248,11 @@ int ieee80211_master_start_xmit(struct sk_buff *skb, control.ifindex = odev->ifindex; control.type = osdata->type; -if (pkt_data->req_tx_status) +if (pkt_data->flags &IEEE80211_TXPD_REQ_TX_STATUS ) control.flags |=IEEE80211_TXCTL_REQ_TX_STATUS ; -if (pkt_data->do_not_encrypt) +if (pkt_data->flags &IEEE80211_TXPD_DO_NOT_ENCRYPT ) control.flags |=IEEE80211_TXCTL_DO_NOT_ENCRYPT ; -if (pkt_data->requeue) +if (pkt_data->flags &IEEE80211_TXPD_REQUEUE ) control.flags |=IEEE80211_TXCTL_REQUEUE ; control.queue = pkt_data->queue;
@@ -1294,8 +1294,7 @@ int ieee80211_monitor_start_xmit(struct sk_buff *skb,/* needed because we set skb device to master */ pkt_data->ifindex = dev->ifindex; - pkt_data->mgmt_iface =0 ; - pkt_data->do_not_encrypt =1 ; + pkt_data->flags |=IEEE80211_TXPD_DO_NOT_ENCRYPT ;/* * fix up the pointers accounting for the radiotap
@@ -1346,7 +1345,7 @@ int ieee80211_subif_start_xmit(struct sk_buff *skb,struct ieee80211_hdr hdr;const u8 *encaps_data;int encaps_len, skip_header_bytes; -int nh_pos, h_pos, no_encrypt =0 ; +int nh_pos, h_pos;struct sta_info *sta; sdata =IEEE80211_DEV_TO_SUB_IF (dev);
@@ -1492,8 +1491,8 @@ int ieee80211_subif_start_xmit(struct sk_buff *skb, pkt_data = (struct ieee80211_tx_packet_data *)skb->cb;memset (pkt_data,0 ,sizeof (struct ieee80211_tx_packet_data )); pkt_data->ifindex = dev->ifindex; - pkt_data->mgmt_iface = (sdata->type ==IEEE80211_IF_TYPE_MGMT ); - pkt_data->do_not_encrypt = no_encrypt; +if (sdata->type ==IEEE80211_IF_TYPE_MGMT ) + pkt_data->flags |=IEEE80211_TXPD_MGMT_IFACE ; skb->dev = local->mdev; sdata->stats.tx_packets++;
@@ -1551,7 +1550,8 @@ int ieee80211_mgmt_start_xmit(struct sk_buff *skb, struct net_device *dev) pkt_data = (struct ieee80211_tx_packet_data *) skb->cb;memset (pkt_data,0 ,sizeof (struct ieee80211_tx_packet_data )); pkt_data->ifindex = sdata->dev->ifindex; - pkt_data->mgmt_iface = (sdata->type ==IEEE80211_IF_TYPE_MGMT ); +if (sdata->type ==IEEE80211_IF_TYPE_MGMT ) + pkt_data->flags |=IEEE80211_TXPD_MGMT_IFACE ; skb->priority =20 ;/* use hardcoded priority for mgmt TX queue */ skb->dev = sdata->local->mdev;
@@ -1561,12 +1561,13 @@ int ieee80211_mgmt_start_xmit(struct sk_buff *skb, struct net_device *dev)* to request TX callback for hostapd. BIT(1) is checked. */ if ((fc &BIT (1 )) ==BIT (1 )) { - pkt_data->req_tx_status =1 ; + pkt_data->flags |=IEEE80211_TXPD_REQ_TX_STATUS ; fc &= ~BIT (1 ); hdr->frame_control =cpu_to_le16 (fc); } - pkt_data->do_not_encrypt = !(fc &IEEE80211_FCTL_PROTECTED ); +if (!(fc &IEEE80211_FCTL_PROTECTED )) + pkt_data->flags |=IEEE80211_TXPD_DO_NOT_ENCRYPT ; sdata->stats.tx_packets++; sdata->stats.tx_bytes += skb->len;
net/mac80211/wme.c +2 -2
@@ -110,7 +110,7 @@ static inline int classify80211(struct sk_buff *skb, struct Qdisc *qd)return IEEE80211_TX_QUEUE_DATA0 ; } -if (unlikely (pkt_data->mgmt_iface)) { +if (unlikely (pkt_data->flags &IEEE80211_TXPD_MGMT_IFACE )) {/* Data frames from hostapd (mainly, EAPOL) use AC_VO * and they will include QoS control fields if * the target STA is using WME. */
@@ -179,7 +179,7 @@ static int wme_qdiscop_enqueue(struct sk_buff *skb, struct Qdisc* qd)struct Qdisc *qdisc;int err, queue; -if (pkt_data->requeue) { +if (pkt_data->flags &IEEE80211_TXPD_REQUEUE ) {skb_queue_tail (&q->requeued[pkt_data->queue], skb); qd->q.qlen++;return 0 ;
PATCH 2/4 Net: mac80211, remove bitfields from struct ieee80211_txrx_data
mac80211, remove bitfields from struct ieee80211_txrx_data
---
commit 37d65bd9e26732c7ec33a58eab6bda750b3be113
tree ac8e2b83c426b03007ea0bd7c5092e351598053c
parent 10e9252a35d42fb92e65dfaaef136d81dbb71c4f
author Jiri Slaby <[email protected]> Sun, 12 Aug 2007 11:50:05 +0200 committer Jiri Slaby <[email protected]> Sun, 12 Aug 2007 11:50:05 +0200
net/mac80211/ieee80211_i.h | 22 ++++++++------- net/mac80211/rx.c | 64 +++++++++++++++++++++++++------------------- net/mac80211/tx.c | 61 +++++++++++++++++++++++++----------------- net/mac80211/wpa.c | 14 +++++----- 4 files changed, 91 insertions(+), 70 deletions(-)
net/mac80211/ieee80211_i.h +12 -10
@@ -127,13 +127,20 @@ struct ieee80211_txrx_data {struct sta_info *sta;u16 fc, ethertype;struct ieee80211_key *key; - unsigned int fragmented:1; /* whether the MSDU was fragmented */ +/* whether the MSDU was fragmented */ +#define IEEE80211_TXRXD_FRAGMENTED BIT(0) +#define IEEE80211_TXRXD_TXUNICAST BIT(1) +#define IEEE80211_TXRXD_TXPS_BUFFERED BIT(2) +#define IEEE80211_TXRXD_TXPROBE_LAST_FRAG BIT(3) +#define IEEE80211_TXRXD_RXIN_SCAN BIT(4) +/* frame is destined to interface currently processed +* (including multicast frames) */ +#define IEEE80211_TXRXD_RXRA_MATCH BIT(5) +#define IEEE80211_TXRXD_RXIS_AGG_FRAME BIT(6) +unsigned int flags;union {struct {struct ieee80211_tx_control *control; -unsigned int unicast:1 ; -unsigned int ps_buffered:1 ; -unsigned int probe_last_frag:1 ;struct ieee80211_hw_mode *mode;struct ieee80211_rate *rate;/* use this rate (if set) for last fragment; rate can
@@ -154,11 +161,6 @@ struct ieee80211_txrx_data {int queue;int load;u16 qos_control; - unsigned int in_scan:1; -/* frame is destined to interface currently processed -* (including multicast frames) */ - unsigned int ra_match:1; - unsigned int is_agg_frame:1; } rx; } u;#ifdef CONFIG_HOSTAPD_WPA_TESTING
@@ -186,7 +188,7 @@ struct ieee80211_tx_stored_packet {int last_frag_rateidx;int last_frag_hwrate;struct ieee80211_rate *last_frag_rate; - unsigned int last_frag_rate_ctrl_probe:1; +unsigned int last_frag_rate_ctrl_probe; };struct sta_ts_data {
net/mac80211/rx.c +36 -28
210 lines not on this page · raw message
net/mac80211/tx.c +36 -25
148 lines not on this page · raw message
net/mac80211/wpa.c +7 -7
@@ -97,14 +97,14 @@ ieee80211_tx_h_michael_mic_add(struct ieee80211_txrx_data *tx)#ifdef CONFIG_HOSTAPD_WPA_TESTING if ((tx->sta && tx->sta->wpa_trigger &WPA_TRIGGER_FAIL_TX_MIC ) || - (!tx->u.tx.unicast && + (!(tx->flags &IEEE80211_TXRXD_TXUNICAST ) && tx->local->wpa_trigger &WPA_TRIGGER_FAIL_TX_MIC )) { wpa_test =1 ; }#endif /* CONFIG_HOSTAPD_WPA_TESTING */ if (!tx->key->force_sw_encrypt && - !tx->fragmented && + !(tx->flags &IEEE80211_TXRXD_FRAGMENTED ) && !(tx->local->hw.flags &IEEE80211_HW_TKIP_INCLUDE_MMIC ) && !wpa_test) {/* hwaccel - with no need for preallocated room for Michael MIC
@@ -142,7 +142,7 @@ ieee80211_tx_h_michael_mic_add(struct ieee80211_txrx_data *tx) tx->sta->wpa_trigger &= ~WPA_TRIGGER_FAIL_TX_MIC ; tx->wpa_test =1 ; mic[0 ]++; - }else if (!tx->u.tx.unicast && + }else if (!(tx->flags &IEEE80211_TXRXD_TXUNICAST ) && tx->local->wpa_trigger &WPA_TRIGGER_FAIL_TX_MIC ) {printk (KERN_INFO "%s: WPA testing - corrupting TX Michael MIC " "for Group Key\n" , tx->dev->name);
@@ -193,7 +193,7 @@ ieee80211_rx_h_michael_mic_verify(struct ieee80211_txrx_data *rx)/* Need to verify Michael MIC sometimes in software even when * hwaccel is used. Atheros ar5212: fragmented frames and QoS * frames. */ -if (!rx->fragmented && !wpa_test) +if (!(rx->flags &IEEE80211_TXRXD_FRAGMENTED ) && !wpa_test) goto remove_mic; }
@@ -225,7 +225,7 @@ ieee80211_rx_h_michael_mic_verify(struct ieee80211_txrx_data *rx)int i;#endif /* CONFIG_HOSTAPD_WPA_TESTING */ -if (!rx->u.rx.ra_match) +if (!(rx->flags &IEEE80211_TXRXD_RXRA_MATCH ))return TXRX_DROP ; printk(KERN_DEBUG "%s: invalid Michael MIC in data frame from "
@@ -392,7 +392,7 @@ ieee80211_tx_h_tkip_encrypt(struct ieee80211_txrx_data *tx)#ifdef CONFIG_HOSTAPD_WPA_TESTING if ((tx->sta && tx->sta->wpa_trigger &WPA_TRIGGER_FAIL_TX_ICV ) || - (!tx->u.tx.unicast && + (!(tx->flags &IEEE80211_TXRXD_TXUNICAST ) && tx->local->wpa_trigger &WPA_TRIGGER_FAIL_TX_ICV )) { wpa_test =1 ; }
@@ -453,7 +453,7 @@ ieee80211_tx_h_tkip_encrypt(struct ieee80211_txrx_data *tx) tx->u.tx.control->key_idx =HW_KEY_IDX_INVALID ; tx->sta->wpa_trigger &= ~WPA_TRIGGER_FAIL_TX_ICV ; skb->data[skb->len -1 ]++; - }else if (!tx->u.tx.unicast && + }else if (!(tx->flags &IEEE80211_TXRXD_TXUNICAST ) && tx->local->wpa_trigger &WPA_TRIGGER_FAIL_TX_ICV ) { printk(KERN_INFO "%s: WPA testing - corrupting TX TKIP ICV " "for Group Key\n",
A message that is not in the archive (sent off-list or not yet received): [email protected]
Re: [PATCH 2/4] Net: mac80211, remove bitfields from struct ieee80211_txrx_data
net/mac80211/ieee80211_i.h struct ieee80211_txrx_data { · line 135
Quoted 7 lines · Jiri Slaby
net/mac80211/ieee80211_i.h +6
-1- unsigned int fragmented:1; /* whether the MSDU was fragmented */ +/* whether the MSDU was fragmented */ +#define IEEE80211_TXRXD_FRAGMENTED BIT(0) +#define IEEE80211_TXRXD_TXUNICAST BIT(1) +#define IEEE80211_TXRXD_TXPS_BUFFERED BIT(2) +#define IEEE80211_TXRXD_TXPROBE_LAST_FRAG BIT(3) +#define IEEE80211_TXRXD_RXIN_SCAN BIT(4)
I know this isn't the style currently used, but could you put these definitions before the struct declaration? That way, kerneldoc doesn't totally screw up.
johannes
A message that is not in the archive (sent off-list or not yet received): 1187009078.27916.109.camel-YfaajirXv214zXjbi5bjpg@public.gmane.org
Re: [PATCH 2/4] Net: mac80211, remove bitfields from struct ieee80211_txrx_data
Johannes Berg napsal(a):
Quoted 13 lines · Jiri Slaby
net/mac80211/ieee80211_i.h struct ieee80211_txrx_data { · line 135
Quoted 8 lines
net/mac80211/ieee80211_i.h +6
-1- unsigned int fragmented:1; /* whether the MSDU was fragmented */ +/* whether the MSDU was fragmented */ +#define IEEE80211_TXRXD_FRAGMENTED BIT(0) +#define IEEE80211_TXRXD_TXUNICAST BIT(1) +#define IEEE80211_TXRXD_TXPS_BUFFERED BIT(2) +#define IEEE80211_TXRXD_TXPROBE_LAST_FRAG BIT(3) +#define IEEE80211_TXRXD_RXIN_SCAN BIT(4)I know this isn't the style currently used, but could you put these definitions before the struct declaration? That way, kerneldoc doesn't totally screw up.
OK
Signature · 2 lines
Jiri Slaby ([email protected]) Faculty of Informatics, Masaryk University
PATCH 3/4 Net: mac80211, remove bitfields from struct ieee80211_if_sta
In reply to Jiri Slabymac80211, remove bitfields from struct ieee80211_if_sta
---
commit 3fe2e620fcc758be03b87e3ca5265b10fbd60e1a
tree 2f3e78c8f801af86ac42b8de1ab4495cdcd24bc3
parent 37d65bd9e26732c7ec33a58eab6bda750b3be113
author Jiri Slaby <[email protected]> Sun, 12 Aug 2007 13:10:40 +0200 committer Jiri Slaby <[email protected]> Sun, 12 Aug 2007 13:10:40 +0200
net/mac80211/debugfs_netdev.c | 14 +++-- net/mac80211/ieee80211.c | 2 - net/mac80211/ieee80211_i.h | 27 +++++----- net/mac80211/ieee80211_iface.c | 9 ++- net/mac80211/ieee80211_ioctl.c | 57 +++++++++++++++------- net/mac80211/ieee80211_sta.c | 104 ++++++++++++++++++++++------------------ 6 files changed, 122 insertions(+), 91 deletions(-)
net/mac80211/debugfs_netdev.c +7 -7
@@ -373,13 +373,13 @@ static ssize_t ieee80211_if_fmt_flags( const struct ieee80211_sub_if_data *sdata, char *buf, int buflen) { return scnprintf(buf, buflen, "%s%s%s%s%s%s%s\n", - sdata->u.sta.ssid_set ?"SSID\n" :"" , - sdata->u.sta.bssid_set ?"BSSID\n" :"" , - sdata->u.sta.prev_bssid_set ?"prev BSSID\n" :"" , - sdata->u.sta.authenticated ?"AUTH\n" :"" , - sdata->u.sta.associated ?"ASSOC\n" :"" , - sdata->u.sta.probereq_poll ?"PROBEREQ POLL\n" :"" , - sdata->use_protection ? "CTS prot\n" : ""); + sdata->u.sta.flags &IEEE80211_STA_SSID_SET ?"SSID\n" :"" , + sdata->u.sta.flags &IEEE80211_STA_BSSID_SET ?"BSSID\n" :"" , + sdata->u.sta.flags &IEEE80211_STA_PREV_BSSID_SET ?"prev BSSID\n" :"" , + sdata->u.sta.flags &IEEE80211_STA_AUTHENTICATED ?"AUTH\n" :"" , + sdata->u.sta.flags &IEEE80211_STA_ASSOCIATED ?"ASSOC\n" :"" , + sdata->u.sta.flags &IEEE80211_STA_PROBEREQ_POLL ?"PROBEREQ POLL\n" :"" , + sdata->use_protection ? "CTS prot\n" : ""); }__IEEE80211_IF_FILE (flags);
net/mac80211/ieee80211.c +1 -1
@@ -382,7 +382,7 @@ static void ieee80211_if_open(struct net_device *dev)switch (sdata->type) {case IEEE80211_IF_TYPE_STA :case IEEE80211_IF_TYPE_IBSS : - sdata->u.sta.prev_bssid_set =0 ; + sdata->u.sta.flags &= ~IEEE80211_STA_PREV_BSSID_SET ;break ; } }
net/mac80211/ieee80211_i.h +14 -13
@@ -263,19 +263,20 @@ struct ieee80211_if_sta {int auth_tries, assoc_tries; - unsigned int ssid_set:1; - unsigned int bssid_set:1; - unsigned int prev_bssid_set:1; - unsigned int authenticated:1; - unsigned int associated:1; - unsigned int probereq_poll:1; - unsigned int create_ibss:1; - unsigned int mixed_cell:1; - unsigned int wmm_enabled:1; - unsigned int ht_enabled:1; - unsigned int auto_ssid_sel:1; - unsigned int auto_bssid_sel:1; - unsigned int auto_channel_sel:1; +#define IEEE80211_STA_SSID_SET BIT(0) +#define IEEE80211_STA_BSSID_SET BIT(1) +#define IEEE80211_STA_PREV_BSSID_SET BIT(2) +#define IEEE80211_STA_AUTHENTICATED BIT(3) +#define IEEE80211_STA_ASSOCIATED BIT(4) +#define IEEE80211_STA_PROBEREQ_POLL BIT(5) +#define IEEE80211_STA_CREATE_IBSS BIT(6) +#define IEEE80211_STA_MIXED_CELL BIT(7) +#define IEEE80211_STA_WMM_ENABLED BIT(8) +#define IEEE80211_STA_HT_ENABLED BIT(9) +#define IEEE80211_STA_AUTO_SSID_SEL BIT(10) +#define IEEE80211_STA_AUTO_BSSID_SEL BIT(11) +#define IEEE80211_STA_AUTO_CHANNEL_SEL BIT(12) +unsigned int flags;#define IEEE80211_STA_REQ_SCAN 0#define IEEE80211_STA_REQ_AUTH 1#define IEEE80211_STA_REQ_RUN 2
net/mac80211/ieee80211_iface.c +4 -5
@@ -191,11 +191,10 @@ void ieee80211_if_set_type(struct net_device *dev, int type) ifsta->capab =WLAN_CAPABILITY_ESS ; ifsta->auth_algs =IEEE80211_AUTH_ALG_OPEN |IEEE80211_AUTH_ALG_SHARED_KEY ; - ifsta->create_ibss =1 ; - ifsta->wmm_enabled =1 ; - ifsta->ht_enabled =1 ; - ifsta->auto_channel_sel =1 ; - ifsta->auto_bssid_sel =1 ; + ifsta->flags |=IEEE80211_STA_CREATE_IBSS | +IEEE80211_STA_WMM_ENABLED |IEEE80211_STA_HT_ENABLED | +IEEE80211_STA_AUTO_BSSID_SEL | +IEEE80211_STA_AUTO_CHANNEL_SEL ;/* Initialize non-AP QSTA QoS Params */ ifsta->dot11EDCAAveragingPeriod =5 ;
net/mac80211/ieee80211_ioctl.c +38 -19
122 lines not on this page · raw message
net/mac80211/ieee80211_sta.c +58 -46
312 lines not on this page · raw message
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 4/4 Net: mac80211, remove bitfields from struct ieee80211_sub_if_data
mac80211, remove bitfields from struct ieee80211_sub_if_data
---
commit 086d27164f6a040ea24efe6baab3e6b9075942a5
tree 61fb84b9bb528c8321a86a6afbf980eafb28ee3f
parent 3fe2e620fcc758be03b87e3ca5265b10fbd60e1a
author Jiri Slaby <[email protected]> Sun, 12 Aug 2007 13:41:55 +0200 committer Jiri Slaby <[email protected]> Sun, 12 Aug 2007 13:41:55 +0200
net/mac80211/debugfs_netdev.c | 2 +- net/mac80211/ieee80211.c | 30 ++++++++++++++---------------- net/mac80211/ieee80211_i.h | 10 +++++----- net/mac80211/ieee80211_ioctl.c | 20 ++++++++++++++------ net/mac80211/ieee80211_sta.c | 19 +++++++++++++------ net/mac80211/rx.c | 4 ++-- net/mac80211/tx.c | 18 ++++++++++-------- net/mac80211/util.c | 6 +++--- 8 files changed, 62 insertions(+), 47 deletions(-)
net/mac80211/debugfs_netdev.c +1 -1
@@ -379,7 +379,7 @@ static ssize_t ieee80211_if_fmt_flags( sdata->u.sta.flags &IEEE80211_STA_AUTHENTICATED ?"AUTH\n" :"" , sdata->u.sta.flags &IEEE80211_STA_ASSOCIATED ?"ASSOC\n" :"" , sdata->u.sta.flags &IEEE80211_STA_PROBEREQ_POLL ?"PROBEREQ POLL\n" :"" , - sdata->use_protection ? "CTS prot\n" : ""); + sdata->flags & IEEE80211_SDATA_USE_PROTECTION ? "CTS prot\n" : ""); }__IEEE80211_IF_FILE (flags);
net/mac80211/ieee80211.c +14 -16
@@ -575,23 +575,21 @@ static void ieee80211_set_multicast_list(struct net_device *dev)unsigned short flags;netif_tx_lock_nested (local->mdev,TX_LOCK_MASTER ); -if (((dev->flags &IFF_ALLMULTI ) !=0 ) ^ (sdata->allmulti !=0 )) { -if (sdata->allmulti) { - sdata->allmulti =0 ; +if (((dev->flags &IFF_ALLMULTI ) !=0 ) ^ + ((sdata->flags &IEEE80211_SDATA_ALLMULTI ) !=0 )) { +if (sdata->flags &IEEE80211_SDATA_ALLMULTI ) local->iff_allmultis--; - }else { - sdata->allmulti =1 ; +else local->iff_allmultis++; - } + sdata->flags ^=IEEE80211_SDATA_ALLMULTI ; } -if (((dev->flags &IFF_PROMISC ) !=0 ) ^ (sdata->promisc !=0 )) { -if (sdata->promisc) { - sdata->promisc =0 ; +if (((dev->flags &IFF_PROMISC ) !=0 ) ^ + ((sdata->flags &IEEE80211_SDATA_PROMISC ) !=0 )) { +if (sdata->flags &IEEE80211_SDATA_PROMISC ) local->iff_promiscs--; - }else { - sdata->promisc =1 ; +else local->iff_promiscs++; - } + sdata->flags ^=IEEE80211_SDATA_PROMISC ; }if (dev->mc_count != sdata->mc_count) { local->mc_count = local->mc_count - sdata->mc_count +
@@ -761,16 +759,16 @@ void ieee80211_erp_info_change_notify(struct net_device *dev, u8 changes)struct ieee80211_sub_if_data *sdata =IEEE80211_DEV_TO_SUB_IF (dev);if (local->ops->erp_ie_changed) local->ops->erp_ie_changed (local_to_hw (local), changes, - sdata->use_protection, - !sdata->short_preamble); + !!(sdata->flags &IEEE80211_SDATA_USE_PROTECTION ), + !(sdata->flags &IEEE80211_SDATA_SHORT_PREAMBLE )); }void ieee80211_reset_erp_info (struct net_device *dev) {struct ieee80211_sub_if_data *sdata =IEEE80211_DEV_TO_SUB_IF (dev); - sdata->short_preamble =0 ; - sdata->use_protection =0 ; + sdata->flags &= ~(IEEE80211_SDATA_USE_PROTECTION | +IEEE80211_SDATA_SHORT_PREAMBLE );ieee80211_erp_info_change_notify (dev,IEEE80211_ERP_CHANGE_PROTECTION |IEEE80211_ERP_CHANGE_PREAMBLE );
net/mac80211/ieee80211_i.h +5 -5
@@ -322,14 +322,14 @@ struct ieee80211_sub_if_data {struct ieee80211_local *local;int mc_count; - unsigned int allmulti:1; - unsigned int promisc:1; - unsigned int use_protection:1; /* CTS protect ERP frames */ - +#define IEEE80211_SDATA_ALLMULTI BIT(0) +#define IEEE80211_SDATA_PROMISC BIT(1) +#define IEEE80211_SDATA_USE_PROTECTION BIT(2)/* CTS protect ERP frames */ /* use short preamble with IEEE 802.11b: this flag is set when the AP * or beacon generator reports that there are no present stations that * cannot support short preambles */ - unsigned int short_preamble:1; +#define IEEE80211_SDATA_SHORT_PREAMBLE BIT(3) +unsigned int flags;struct net_device_stats stats;int drop_unencrypted;
net/mac80211/ieee80211_ioctl.c +14 -6
@@ -2187,8 +2187,12 @@ static int ieee80211_ioctl_prism2_param(struct net_device *dev,case PRISM2_PARAM_CTS_PROTECT_ERP_FRAMES :if (sdata->type ==IEEE80211_IF_TYPE_AP ) { - sdata->use_protection = !!value; -ieee80211_erp_info_change_notify (dev,IEEE80211_ERP_CHANGE_PROTECTION ); +if (value) + sdata->flags |=IEEE80211_SDATA_USE_PROTECTION ; +else + sdata->flags &= ~IEEE80211_SDATA_USE_PROTECTION ; +ieee80211_erp_info_change_notify (dev, +IEEE80211_ERP_CHANGE_PROTECTION ); }else { ret = -ENOENT ; }
@@ -2196,8 +2200,12 @@ static int ieee80211_ioctl_prism2_param(struct net_device *dev,case PRISM2_PARAM_PREAMBLE :if (sdata->type !=IEEE80211_IF_TYPE_AP ) { - sdata->short_preamble = !!value; -ieee80211_erp_info_change_notify (dev,IEEE80211_ERP_CHANGE_PREAMBLE ); +if (value) + sdata->flags |=IEEE80211_SDATA_SHORT_PREAMBLE ; +else + sdata->flags &= ~IEEE80211_SDATA_SHORT_PREAMBLE ; +ieee80211_erp_info_change_notify (dev, +IEEE80211_ERP_CHANGE_PREAMBLE ); }else { ret = -ENOENT ; }
@@ -2398,11 +2406,11 @@ static int ieee80211_ioctl_get_prism2_param(struct net_device *dev,break ;case PRISM2_PARAM_CTS_PROTECT_ERP_FRAMES : - *param = sdata->use_protection; + *param = !!(sdata->flags &IEEE80211_SDATA_USE_PROTECTION );break ;case PRISM2_PARAM_PREAMBLE : - *param = sdata->short_preamble; + *param = !!(sdata->flags &IEEE80211_SDATA_SHORT_PREAMBLE );break ;case PRISM2_PARAM_STAT_TIME :
net/mac80211/ieee80211_sta.c +13 -6
@@ -362,7 +362,7 @@ static void ieee80211_handle_erp_ie(struct net_device *dev, u8 erp_value)int preamble_mode = (erp_value &WLAN_ERP_BARKER_PREAMBLE ) !=0 ;u8 changes =0 ; -if (use_protection != sdata->use_protection) { +if (use_protection != !!(sdata->flags &IEEE80211_SDATA_USE_PROTECTION )) {if (net_ratelimit ()) { printk(KERN_DEBUG "%s: CTS protection %s (BSSID=" MAC_FMT ")\n",
@@ -370,11 +370,14 @@ static void ieee80211_handle_erp_ie(struct net_device *dev, u8 erp_value) use_protection ?"enabled" :"disabled" , MAC_ARG(ifsta->bssid)); } - sdata->use_protection = use_protection; +if (use_protection) + sdata->flags |=IEEE80211_SDATA_USE_PROTECTION ; +else + sdata->flags &= ~IEEE80211_SDATA_USE_PROTECTION ; changes |=IEEE80211_ERP_CHANGE_PROTECTION ; } -if (!preamble_mode != sdata->short_preamble) { +if (preamble_mode != !(sdata->flags &IEEE80211_SDATA_SHORT_PREAMBLE )) {if (net_ratelimit ()) { printk(KERN_DEBUG "%s: switched to %s barker preamble" " (BSSID=" MAC_FMT ")\n",
@@ -383,7 +386,10 @@ static void ieee80211_handle_erp_ie(struct net_device *dev, u8 erp_value) "short" : "long", MAC_ARG(ifsta->bssid)); } - sdata->short_preamble = !preamble_mode; +if (preamble_mode) + sdata->flags &= ~IEEE80211_SDATA_SHORT_PREAMBLE ; +else + sdata->flags |=IEEE80211_SDATA_SHORT_PREAMBLE ; changes |=IEEE80211_ERP_CHANGE_PREAMBLE ; }
@@ -3251,8 +3257,9 @@ static int ieee80211_sta_join_ibss(struct net_device *dev, "for IBSS beacon\n", dev->name);break ; } - control.tx_rate = (sdata->short_preamble && - (rate->flags &IEEE80211_RATE_PREAMBLE2 )) ? + control.tx_rate = + ((sdata->flags &IEEE80211_SDATA_SHORT_PREAMBLE ) && + (rate->flags &IEEE80211_RATE_PREAMBLE2 )) ? rate->val2 : rate->val; control.antenna_sel_tx = local->hw.conf.antenna_sel_tx; control.power_level = local->hw.conf.power_level;
net/mac80211/rx.c +2 -2
@@ -1405,7 +1405,7 @@ static int prepare_for_handlers(struct ieee80211_sub_if_data *sdata, }else if (!multicast &&compare_ether_addr (sdata->dev->dev_addr, hdr->addr1) !=0 ) { -if (!sdata->promisc) +if (!(sdata->flags &IEEE80211_SDATA_PROMISC ))return 0 ; rx->flags &= ~IEEE80211_TXRXD_RXRA_MATCH ; }
@@ -1420,7 +1420,7 @@ static int prepare_for_handlers(struct ieee80211_sub_if_data *sdata, }else if (!multicast &&compare_ether_addr (sdata->dev->dev_addr, hdr->addr1) !=0 ) { -if (!sdata->promisc) +if (!(sdata->flags &IEEE80211_SDATA_PROMISC ))return 0 ; rx->flags &= ~IEEE80211_TXRXD_RXRA_MATCH ; }else if (!rx->sta)
net/mac80211/tx.c +10 -8
@@ -173,7 +173,7 @@ static u16 ieee80211_duration(struct ieee80211_txrx_data *tx, int group_addr,* to closest integer */ dur =ieee80211_frame_duration (local,10 , rate, erp, - tx->sdata->short_preamble); + tx->sdata->flags &IEEE80211_SDATA_SHORT_PREAMBLE );if (next_frag_len) {/* Frame is fragmented: duration increases with time needed to
@@ -181,8 +181,9 @@ static u16 ieee80211_duration(struct ieee80211_txrx_data *tx, int group_addr, dur *=2 ;/* ACK + SIFS */ /* next fragment */ dur +=ieee80211_frame_duration (local, next_frag_len, - txrate->rate, erp, - tx->sdata->short_preamble); + txrate->rate, erp, + tx->sdata->flags & +IEEE80211_SDATA_SHORT_PREAMBLE ); }return dur;
@@ -614,7 +615,7 @@ ieee80211_tx_h_rate_ctrl(struct ieee80211_txrx_data *tx)if (!tx->u.tx.rate)return TXRX_DROP ;if (tx->u.tx.mode->mode ==MODE_IEEE80211G && - tx->sdata->use_protection && + (tx->sdata->flags &IEEE80211_SDATA_USE_PROTECTION ) && (tx->flags &IEEE80211_TXRXD_FRAGMENTED ) && extra.nonerp) { tx->u.tx.last_frag_rate = tx->u.tx.rate;if (extra.probe)
@@ -671,7 +672,7 @@ ieee80211_tx_h_misc(struct ieee80211_txrx_data *tx)if (mode->mode ==MODE_IEEE80211G && (tx->u.tx.rate->flags &IEEE80211_RATE_ERP ) && (tx->flags &IEEE80211_TXRXD_TXUNICAST ) && - tx->sdata->use_protection && + (tx->sdata->flags &IEEE80211_SDATA_USE_PROTECTION ) && !(control->flags &IEEE80211_TXCTL_USE_RTS_CTS )) control->flags |=IEEE80211_TXCTL_USE_CTS_PROTECT ;
@@ -680,7 +681,7 @@ ieee80211_tx_h_misc(struct ieee80211_txrx_data *tx)* available on the network at the current point in time. */ if (((fc &IEEE80211_FCTL_FTYPE ) ==IEEE80211_FTYPE_DATA ) && (tx->u.tx.rate->flags &IEEE80211_RATE_PREAMBLE2 ) && - tx->sdata->short_preamble && + (tx->sdata->flags &IEEE80211_SDATA_SHORT_PREAMBLE ) && (!tx->sta || (tx->sta->flags &WLAN_STA_SHORT_PREAMBLE ))) { tx->u.tx.control->tx_rate = tx->u.tx.rate->val2; }
@@ -1782,8 +1783,9 @@ struct sk_buff *ieee80211_beacon_get(struct ieee80211_hw *hw, int if_id,return NULL ; } - control->tx_rate = (sdata->short_preamble && - (rate->flags &IEEE80211_RATE_PREAMBLE2 )) ? + control->tx_rate = + ((sdata->flags &IEEE80211_SDATA_SHORT_PREAMBLE ) && + (rate->flags &IEEE80211_RATE_PREAMBLE2 )) ? rate->val2 : rate->val; control->antenna_sel_tx = local->hw.conf.antenna_sel_tx; control->power_level = local->hw.conf.power_level;
net/mac80211/util.c +3 -3
@@ -329,7 +329,7 @@ __le16 ieee80211_generic_frame_duration(struct ieee80211_hw *hw, int if_id, sdata =IEEE80211_DEV_TO_SUB_IF (bdev); erp =ieee80211_is_erp_rate (hw->conf.phymode, rate); dur =ieee80211_frame_duration (local, frame_len, rate, - erp, sdata->short_preamble); + erp, sdata->flags &IEEE80211_SDATA_SHORT_PREAMBLE );dev_put (bdev);return cpu_to_le16 (dur);
@@ -352,7 +352,7 @@ __le16 ieee80211_rts_duration(struct ieee80211_hw *hw, int if_id,return 0 ; sdata =IEEE80211_DEV_TO_SUB_IF (bdev); - short_preamble = sdata->short_preamble; + short_preamble = sdata->flags &IEEE80211_SDATA_SHORT_PREAMBLE ; rate = frame_txctl->rts_rate; erp = !!(rate->flags &IEEE80211_RATE_ERP );
@@ -388,7 +388,7 @@ __le16 ieee80211_ctstoself_duration(struct ieee80211_hw *hw, int if_id,return 0 ; sdata =IEEE80211_DEV_TO_SUB_IF (bdev); - short_preamble = sdata->short_preamble; + short_preamble = sdata->flags &IEEE80211_SDATA_SHORT_PREAMBLE ; rate = frame_txctl->rts_rate; erp = !!(rate->flags &IEEE80211_RATE_ERP );
net/mac80211/ieee80211.c static void ieee80211_remove_tx_extra(struct ieee80211_local *local, · line 946
Quoted 8 lines · Jiri Slaby
net/mac80211/ieee80211.c +8
-0+if (control->flags &IEEE80211_TXCTL_REQ_TX_STATUS ) + pkt_data->flags |=IEEE80211_TXPD_REQ_TX_STATUS ; +if (control->flags &IEEE80211_TXCTL_DO_NOT_ENCRYPT ) + pkt_data->flags |=IEEE80211_TXPD_DO_NOT_ENCRYPT ; +if (control->flags &IEEE80211_TXCTL_REQUEUE ) + pkt_data->flags |=IEEE80211_TXPD_REQUEUE ; +if (control->type ==IEEE80211_IF_TYPE_MGMT ) + pkt_data->flags |=IEEE80211_TXPD_MGMT_IFACE ;
This looks weird. Can't we just use the same flags?
johannes
Johannes Berg napsal(a):
Quoted 12 lines · Jiri Slaby
net/mac80211/ieee80211.c static void ieee80211_remove_tx_extra(struct ieee80211_local *local, · line 946
Quoted 9 lines
net/mac80211/ieee80211.c +8
-0+if (control->flags &IEEE80211_TXCTL_REQ_TX_STATUS ) + pkt_data->flags |=IEEE80211_TXPD_REQ_TX_STATUS ; +if (control->flags &IEEE80211_TXCTL_DO_NOT_ENCRYPT ) + pkt_data->flags |=IEEE80211_TXPD_DO_NOT_ENCRYPT ; +if (control->flags &IEEE80211_TXCTL_REQUEUE ) + pkt_data->flags |=IEEE80211_TXPD_REQUEUE ; +if (control->type ==IEEE80211_IF_TYPE_MGMT ) + pkt_data->flags |=IEEE80211_TXPD_MGMT_IFACE ;This looks weird. Can't we just use the same flags?
I don't think, that it must be subset one of each another in the future. (This is why I created yet another bits defined).
Do we still want the same flags?
Signature · 2 lines
Jiri Slaby ([email protected]) Faculty of Informatics, Masaryk University