All three one-bit bitfields have been subsumed into the new 'flags'
structure member and the new IEEE80211_KEY_* definitions. The 8 bit
keyidx bitfield is converted to type s8.

Signed-off-by: David Kimdon <[EMAIL PROTECTED]>

Index: wireless-dev/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c
===================================================================
--- wireless-dev.orig/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c
+++ wireless-dev/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c
@@ -3634,8 +3634,8 @@ static int bcm43xx_net_set_key(struct ne
                if (err)
                        goto out_unlock;
                key->hw_key_idx = index;
-               key->force_sw_encrypt = 0;
-               if (key->default_tx_key)
+               key->flags &= ~IEEE80211_KEY_FORCE_SW_ENCRYPT;
+               if (key->flags & IEEE80211_KEY_DEFAULT_TX_KEY)
                        bcm->default_key_idx = index;
                bcm->key[index].enabled = 1;
                break;
Index: wireless-dev/include/net/d80211.h
===================================================================
--- wireless-dev.orig/include/net/d80211.h
+++ wireless-dev/include/net/d80211.h
@@ -366,13 +366,19 @@ struct ieee80211_key_conf {
        ieee80211_key_alg alg;
        int keylen;
 
-       unsigned int force_sw_encrypt:1;/* to be cleared by low-level driver */
-       int keyidx:8;                   /* WEP key index */
-       unsigned int default_tx_key:1;  /* This key is the new default TX key
-                                        * (used only for broadcast keys). */
-       unsigned int default_wep_only:1;/* static WEP is the only configured 
security
-                                        * policy; this allows some low-level 
drivers
-                                        * to determine when hwaccel can be 
used */
+#define IEEE80211_KEY_FORCE_SW_ENCRYPT (1<<0) /* to be cleared by low-level
+                                                driver */
+#define IEEE80211_KEY_DEFAULT_TX_KEY   (1<<1) /* This key is the new default TX
+                                                key (used only for broadcast
+                                                keys). */
+#define IEEE80211_KEY_DEFAULT_WEP_ONLY (1<<2) /* static WEP is the only
+                                                configured security policy;
+                                                this allows some low-level
+                                                drivers to determine when
+                                                hwaccel can be used */
+       u8 flags; /* key configuration flags defined above */
+
+       s8 keyidx;                      /* WEP key index */
         u8 key[0];
 };
 
Index: wireless-dev/net/d80211/ieee80211.c
===================================================================
--- wireless-dev.orig/net/d80211/ieee80211.c
+++ wireless-dev/net/d80211/ieee80211.c
@@ -74,10 +74,14 @@ ieee80211_key_data2conf(struct ieee80211
        conf->hw_key_idx = data->hw_key_idx;
        conf->alg = data->alg;
        conf->keylen = data->keylen;
-       conf->force_sw_encrypt = data->force_sw_encrypt;
+       conf->flags = 0;
+       if (data->force_sw_encrypt)
+               conf->flags |= IEEE80211_KEY_FORCE_SW_ENCRYPT;
        conf->keyidx = data->keyidx;
-       conf->default_tx_key = data->default_tx_key;
-       conf->default_wep_only = local->default_wep_only;
+       if (data->default_tx_key)
+               conf->flags |= IEEE80211_KEY_DEFAULT_TX_KEY;
+       if (local->default_wep_only)
+               conf->flags |= IEEE80211_KEY_DEFAULT_WEP_ONLY;
        memcpy(conf->key, data->key, data->keylen);
 
        return conf;
Index: wireless-dev/net/d80211/ieee80211_ioctl.c
===================================================================
--- wireless-dev.orig/net/d80211/ieee80211_ioctl.c
+++ wireless-dev/net/d80211/ieee80211_ioctl.c
@@ -326,7 +326,7 @@ static int ieee80211_ioctl_add_sta(struc
                memset(&conf, 0, sizeof(conf));
                conf.hw_key_idx = HW_KEY_IDX_INVALID;
                conf.alg = ALG_NULL;
-               conf.force_sw_encrypt = 1;
+               conf.flags |= IEEE80211_KEY_FORCE_SW_ENCRYPT;
                if (local->hw->set_key(dev, SET_KEY, sta->addr, &conf,
                                       sta->aid)) {
                        sta->key_idx_compression = HW_KEY_IDX_INVALID;
@@ -496,7 +496,7 @@ int ieee80211_set_hw_encryption(struct n
                        key->hw_key_idx = HW_KEY_IDX_INVALID;
                } else {
                        key->force_sw_encrypt =
-                               keyconf->force_sw_encrypt;
+                               !!(keyconf->flags & 
IEEE80211_KEY_FORCE_SW_ENCRYPT);
                        key->hw_key_idx =
                                keyconf->hw_key_idx;
 
@@ -2289,7 +2289,8 @@ static void ieee80211_key_enable_hwaccel
        keyconf = ieee80211_key_data2conf(local, key);
        if (keyconf && local->hw->set_key &&
            local->hw->set_key(local->mdev, SET_KEY, addr, keyconf, 0) == 0) {
-               key->force_sw_encrypt = keyconf->force_sw_encrypt;
+               key->force_sw_encrypt =
+                       !!(keyconf->flags & IEEE80211_KEY_FORCE_SW_ENCRYPT);
                key->hw_key_idx = keyconf->hw_key_idx;
        }
        kfree(keyconf);
Index: wireless-dev/net/d80211/sta_info.c
===================================================================
--- wireless-dev.orig/net/d80211/sta_info.c
+++ wireless-dev/net/d80211/sta_info.c
@@ -255,7 +255,7 @@ void sta_info_free(struct sta_info *sta,
                memset(&conf, 0, sizeof(conf));
                conf.hw_key_idx = sta->key_idx_compression;
                conf.alg = ALG_NULL;
-               conf.force_sw_encrypt = 1;
+               conf.flags |= IEEE80211_KEY_FORCE_SW_ENCRYPT;
                local->hw->set_key(local->mdev, DISABLE_KEY, sta->addr, &conf,
                                   sta->aid);
                sta->key_idx_compression = HW_KEY_IDX_INVALID;

--
-
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

Reply via email to