Skip to content

Commit

Permalink
rndis_wlan: explain bits used in key setup code.
Browse files Browse the repository at this point in the history
Driver uses some unnamed bits to control encryption setup. Move these to
enumerations with proper names explaining their meaning.

Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Jussi Kivilinna authored and John W. Linville committed May 22, 2009
1 parent 9656e85 commit b4703a2
Showing 1 changed file with 18 additions and 5 deletions.
23 changes: 18 additions & 5 deletions drivers/net/wireless/rndis_wlan.c
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,18 @@ enum ndis_80211_priv_filter {
ndis_80211_priv_8021x_wep
};

enum ndis_80211_addkey_bits {
ndis_80211_addkey_8021x_auth = cpu_to_le32(1 << 28),
ndis_80211_addkey_set_init_recv_seq = cpu_to_le32(1 << 29),
ndis_80211_addkey_pairwise_key = cpu_to_le32(1 << 30),
ndis_80211_addkey_transmit_key = cpu_to_le32(1 << 31),
};

enum ndis_80211_addwep_bits {
ndis_80211_addwep_perclient_key = cpu_to_le32(1 << 30),
ndis_80211_addwep_transmit_key = cpu_to_le32(1 << 31),
};

struct ndis_80211_ssid {
__le32 length;
u8 essid[NDIS_802_11_LENGTH_SSID];
Expand Down Expand Up @@ -998,7 +1010,7 @@ static int add_wep_key(struct usbnet *usbdev, char *key, int key_len, int index)
memcpy(&ndis_key.material, key, key_len);

if (index == priv->encr_tx_key_index) {
ndis_key.index |= cpu_to_le32(1 << 31);
ndis_key.index |= ndis_80211_addwep_transmit_key;
ret = set_encr_mode(usbdev, IW_AUTH_CIPHER_WEP104,
IW_AUTH_CIPHER_NONE);
if (ret)
Expand Down Expand Up @@ -1044,7 +1056,8 @@ static int remove_key(struct usbnet *usbdev, int index, u8 bssid[ETH_ALEN])
if (bssid) {
/* pairwise key */
if (memcmp(bssid, ffff_bssid, ETH_ALEN) != 0)
remove_key.index |= cpu_to_le32(1 << 30);
remove_key.index |=
ndis_80211_addkey_pairwise_key;
memcpy(remove_key.bssid, bssid,
sizeof(remove_key.bssid));
} else
Expand Down Expand Up @@ -1626,7 +1639,7 @@ static int rndis_iw_set_encode_ext(struct net_device *dev,

if (ext->ext_flags & IW_ENCODE_EXT_RX_SEQ_VALID) {
memcpy(ndis_key.rsc, ext->rx_seq, 6);
ndis_key.index |= cpu_to_le32(1 << 29);
ndis_key.index |= ndis_80211_addkey_set_init_recv_seq;
}

addr = ext->addr.sa_data;
Expand All @@ -1638,12 +1651,12 @@ static int rndis_iw_set_encode_ext(struct net_device *dev,
get_bssid(usbdev, ndis_key.bssid);
} else {
/* pairwise key */
ndis_key.index |= cpu_to_le32(1 << 30);
ndis_key.index |= ndis_80211_addkey_pairwise_key;
memcpy(ndis_key.bssid, addr, ETH_ALEN);
}

if (ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY)
ndis_key.index |= cpu_to_le32(1 << 31);
ndis_key.index |= ndis_80211_addkey_transmit_key;

if (ext->alg == IW_ENCODE_ALG_TKIP && ext->key_len == 32) {
/* wpa_supplicant gives us the Michael MIC RX/TX keys in
Expand Down

0 comments on commit b4703a2

Please sign in to comment.