Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=13262ffd4902805acad2618c12b41fcaa6c50791
Commit:     13262ffd4902805acad2618c12b41fcaa6c50791
Parent:     d6f2da5b33911a31eb61e1790ef8e555e9605837
Author:     Jiri Slaby <[EMAIL PROTECTED]>
AuthorDate: Tue Aug 28 17:01:54 2007 -0400
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Wed Oct 10 16:48:50 2007 -0700

    [MAC80211]: Remove bitfields from struct ieee80211_sub_if_data
    
    mac80211, remove bitfields from struct ieee80211_sub_if_data
    
    Signed-off-by: Jiri Slaby <[EMAIL PROTECTED]>
    Signed-off-by: Johannes Berg <[EMAIL PROTECTED]>
    Acked-by: Michael Wu <[EMAIL PROTECTED]>
    Signed-off-by: John W. Linville <[EMAIL PROTECTED]>
    Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
---
 net/mac80211/debugfs_netdev.c  |    2 +-
 net/mac80211/ieee80211.c       |   30 ++++++++++++++----------------
 net/mac80211/ieee80211_i.h     |   18 ++++++++++--------
 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, 67 insertions(+), 50 deletions(-)

diff --git a/net/mac80211/debugfs_netdev.c b/net/mac80211/debugfs_netdev.c
index 099dac9..8ceda33 100644
--- a/net/mac80211/debugfs_netdev.c
+++ b/net/mac80211/debugfs_netdev.c
@@ -118,7 +118,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);
 
diff --git a/net/mac80211/ieee80211.c b/net/mac80211/ieee80211.c
index be678c6..50d7af3 100644
--- a/net/mac80211/ieee80211.c
+++ b/net/mac80211/ieee80211.c
@@ -555,23 +555,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 +
@@ -740,16 +738,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);
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 28c5d51..ef633a0 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -277,6 +277,14 @@ struct ieee80211_if_sta {
 };
 
 
+/* flags used in struct ieee80211_sub_if_data.flags */
+#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 */
+#define IEEE80211_SDATA_SHORT_PREAMBLE BIT(3)
 struct ieee80211_sub_if_data {
        struct list_head list;
        unsigned int type;
@@ -287,14 +295,8 @@ 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 */
-
-       /* 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;
+
+       unsigned int flags;
 
        struct net_device_stats stats;
        int drop_unencrypted;
diff --git a/net/mac80211/ieee80211_ioctl.c b/net/mac80211/ieee80211_ioctl.c
index ea2e0f9..9964f05 100644
--- a/net/mac80211/ieee80211_ioctl.c
+++ b/net/mac80211/ieee80211_ioctl.c
@@ -1063,8 +1063,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;
                }
@@ -1072,8 +1076,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;
                }
@@ -1167,11 +1175,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_SHORT_SLOT_TIME:
diff --git a/net/mac80211/ieee80211_sta.c b/net/mac80211/ieee80211_sta.c
index 6a57333..fe94ebf 100644
--- a/net/mac80211/ieee80211_sta.c
+++ b/net/mac80211/ieee80211_sta.c
@@ -321,7 +321,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",
@@ -329,11 +329,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",
@@ -342,7 +345,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;
        }
 
@@ -2307,8 +2313,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;
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index af94fb5..b52e330 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -1288,7 +1288,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;
                }
@@ -1303,7 +1303,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)
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 01e7a73..ddb104a 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -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;
@@ -613,7 +614,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)
@@ -670,7 +671,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;
 
@@ -679,7 +680,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;
        }
@@ -1777,8 +1778,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;
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index 091ac0d..07686bd 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -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);
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to