Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 281432
b: refs/heads/master
c: 0ddcf5f
h: refs/heads/master
v: v3
  • Loading branch information
Sean MacLennan authored and Greg Kroah-Hartman committed Dec 22, 2011
1 parent 1b1d935 commit 5c62163
Show file tree
Hide file tree
Showing 10 changed files with 67 additions and 69 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 32c44cb5b9fdc6eaa445bd622008dd672a3dd1a7
refs/heads/master: 0ddcf5fdfac6bd80e153ee5c405bdfc9cb868b95
2 changes: 1 addition & 1 deletion trunk/drivers/staging/rtl8192e/rtl8192e/rtl_wx.c
Original file line number Diff line number Diff line change
Expand Up @@ -802,7 +802,7 @@ static int r8192_wx_set_enc(struct net_device *dev,

switch (wrqu->encoding.flags & IW_ENCODE_INDEX) {
case 0:
key_idx = ieee->tx_keyidx;
key_idx = ieee->crypt_info.tx_keyidx;
break;
case 1:
key_idx = 0;
Expand Down
8 changes: 2 additions & 6 deletions trunk/drivers/staging/rtl8192e/rtllib.h
Original file line number Diff line number Diff line change
Expand Up @@ -2188,14 +2188,10 @@ struct rtllib_device {
u8 ap_mac_addr[6];
u16 pairwise_key_type;
u16 group_key_type;
struct list_head crypt_deinit_list;
struct rtllib_crypt_data *crypt[NUM_WEP_KEYS];

int tx_keyidx; /* default TX key index (crypt[tx_keyidx]) */
struct sw_cam_table swcamtable[TOTAL_CAM_ENTRY];
struct timer_list crypt_deinit_timer;
int crypt_quiesced;
struct lib80211_crypt_info crypt_info;

struct sw_cam_table swcamtable[TOTAL_CAM_ENTRY];
int bcrx_sta_key; /* use individual keys to override default keys even
* with RX of broad/multicast frames */

Expand Down
38 changes: 19 additions & 19 deletions trunk/drivers/staging/rtl8192e/rtllib_crypt.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,14 @@ struct rtllib_crypto {

static struct rtllib_crypto *hcrypt;

void rtllib_crypt_deinit_entries(struct rtllib_device *ieee,
void rtllib_crypt_deinit_entries(struct lib80211_crypt_info *info,
int force)
{
struct list_head *ptr, *n;
struct lib80211_crypt_data *entry;

for (ptr = ieee->crypt_deinit_list.next, n = ptr->next;
ptr != &ieee->crypt_deinit_list; ptr = n, n = ptr->next) {
for (ptr = info->crypt_deinit_list.next, n = ptr->next;
ptr != &info->crypt_deinit_list; ptr = n, n = ptr->next) {
entry = list_entry(ptr, struct lib80211_crypt_data, list);

if (atomic_read(&entry->refcnt) != 0 && !force)
Expand All @@ -56,24 +56,24 @@ EXPORT_SYMBOL(rtllib_crypt_deinit_entries);

void rtllib_crypt_deinit_handler(unsigned long data)
{
struct rtllib_device *ieee = (struct rtllib_device *)data;
struct lib80211_crypt_info *info = (struct lib80211_crypt_info *)data;
unsigned long flags;

spin_lock_irqsave(&ieee->lock, flags);
rtllib_crypt_deinit_entries(ieee, 0);
if (!list_empty(&ieee->crypt_deinit_list)) {
spin_lock_irqsave(info->lock, flags);
rtllib_crypt_deinit_entries(info, 0);
if (!list_empty(&info->crypt_deinit_list)) {
printk(KERN_DEBUG "%s: entries remaining in delayed crypt "
"deletion list\n", ieee->dev->name);
ieee->crypt_deinit_timer.expires = jiffies + HZ;
add_timer(&ieee->crypt_deinit_timer);
"deletion list\n", info->name);
info->crypt_deinit_timer.expires = jiffies + HZ;
add_timer(&info->crypt_deinit_timer);
}
spin_unlock_irqrestore(&ieee->lock, flags);
spin_unlock_irqrestore(info->lock, flags);

}
EXPORT_SYMBOL(rtllib_crypt_deinit_handler);

void rtllib_crypt_delayed_deinit(struct rtllib_device *ieee,
struct lib80211_crypt_data **crypt)
void rtllib_crypt_delayed_deinit(struct lib80211_crypt_info *info,
struct lib80211_crypt_data **crypt)
{
struct lib80211_crypt_data *tmp;
unsigned long flags;
Expand All @@ -88,13 +88,13 @@ void rtllib_crypt_delayed_deinit(struct rtllib_device *ieee,
* decrypt operations. Use a list of delayed deinits to avoid needing
* locking. */

spin_lock_irqsave(&ieee->lock, flags);
list_add(&tmp->list, &ieee->crypt_deinit_list);
if (!timer_pending(&ieee->crypt_deinit_timer)) {
ieee->crypt_deinit_timer.expires = jiffies + HZ;
add_timer(&ieee->crypt_deinit_timer);
spin_lock_irqsave(info->lock, flags);
list_add(&tmp->list, &info->crypt_deinit_list);
if (!timer_pending(&info->crypt_deinit_timer)) {
info->crypt_deinit_timer.expires = jiffies + HZ;
add_timer(&info->crypt_deinit_timer);
}
spin_unlock_irqrestore(&ieee->lock, flags);
spin_unlock_irqrestore(info->lock, flags);
}
EXPORT_SYMBOL(rtllib_crypt_delayed_deinit);

Expand Down
6 changes: 3 additions & 3 deletions trunk/drivers/staging/rtl8192e/rtllib_crypt.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
int rtllib_register_crypto_ops(struct lib80211_crypto_ops *ops);
int rtllib_unregister_crypto_ops(struct lib80211_crypto_ops *ops);
struct lib80211_crypto_ops *rtllib_get_crypto_ops(const char *name);
void rtllib_crypt_deinit_entries(struct rtllib_device *, int);
void rtllib_crypt_deinit_handler(unsigned long);
void rtllib_crypt_delayed_deinit(struct rtllib_device *ieee,
void rtllib_crypt_deinit_entries(struct lib80211_crypt_info *info, int force);
void rtllib_crypt_deinit_handler(unsigned long data);
void rtllib_crypt_delayed_deinit(struct lib80211_crypt_info *info,
struct lib80211_crypt_data **crypt);
#endif
16 changes: 9 additions & 7 deletions trunk/drivers/staging/rtl8192e/rtllib_module.c
Original file line number Diff line number Diff line change
Expand Up @@ -137,10 +137,10 @@ struct net_device *alloc_rtllib(int sizeof_priv)
ieee->ieee802_1x = 1; /* Default to supporting 802.1x */

/* SAM Init here */
INIT_LIST_HEAD(&ieee->crypt_deinit_list);
_setup_timer(&ieee->crypt_deinit_timer,
INIT_LIST_HEAD(&ieee->crypt_info.crypt_deinit_list);
_setup_timer(&ieee->crypt_info.crypt_deinit_timer,
rtllib_crypt_deinit_handler,
(unsigned long) ieee);
(unsigned long)&ieee->crypt_info);
ieee->rtllib_ap_sec_type = rtllib_ap_sec_type;

spin_lock_init(&ieee->lock);
Expand Down Expand Up @@ -197,16 +197,18 @@ void free_rtllib(struct net_device *dev)
kfree(ieee->pHTInfo);
ieee->pHTInfo = NULL;
rtllib_softmac_free(ieee);
del_timer_sync(&ieee->crypt_deinit_timer);
rtllib_crypt_deinit_entries(ieee, 1);

/* SAM cleanup */
del_timer_sync(&ieee->crypt_info.crypt_deinit_timer);
rtllib_crypt_deinit_entries(&ieee->crypt_info, 1);

for (i = 0; i < NUM_WEP_KEYS; i++) {
struct lib80211_crypt_data *crypt = ieee->crypt[i];
struct lib80211_crypt_data *crypt = ieee->crypt_info.crypt[i];
if (crypt) {
if (crypt->ops)
crypt->ops->deinit(crypt->priv);
kfree(crypt);
ieee->crypt[i] = NULL;
ieee->crypt_info.crypt[i] = NULL;
}
}

Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/staging/rtl8192e/rtllib_rx.c
Original file line number Diff line number Diff line change
Expand Up @@ -1019,7 +1019,7 @@ static int rtllib_rx_get_crypt(struct rtllib_device *ieee, struct sk_buff *skb,
if (skb->len >= hdrlen + 3)
idx = skb->data[hdrlen + 3] >> 6;

*crypt = ieee->crypt[idx];
*crypt = ieee->crypt_info.crypt[idx];
/* allow NULL decrypt to indicate an station specific override
* for default encryption */
if (*crypt && ((*crypt)->ops == NULL ||
Expand Down
18 changes: 9 additions & 9 deletions trunk/drivers/staging/rtl8192e/rtllib_softmac.c
Original file line number Diff line number Diff line change
Expand Up @@ -871,7 +871,7 @@ static struct sk_buff *rtllib_probe_resp(struct rtllib_device *ieee, u8 *dest)
} else
erp_len = 0;

crypt = ieee->crypt[ieee->tx_keyidx];
crypt = ieee->crypt_info.crypt[ieee->crypt_info.tx_keyidx];
encrypt = ieee->host_encrypt && crypt && crypt->ops &&
((0 == strcmp(crypt->ops->name, "WEP") || wpa_ie_len));
if (ieee->pHTInfo->bCurrentHTSupport) {
Expand Down Expand Up @@ -923,7 +923,7 @@ static struct sk_buff *rtllib_probe_resp(struct rtllib_device *ieee, u8 *dest)
cpu_to_le16((beacon_buf->capability |=
WLAN_CAPABILITY_SHORT_SLOT_TIME));

crypt = ieee->crypt[ieee->tx_keyidx];
crypt = ieee->crypt_info.crypt[ieee->crypt_info.tx_keyidx];
if (encrypt)
beacon_buf->capability |= cpu_to_le16(WLAN_CAPABILITY_PRIVACY);

Expand Down Expand Up @@ -1013,7 +1013,7 @@ static struct sk_buff *rtllib_assoc_resp(struct rtllib_device *ieee, u8 *dest)
cpu_to_le16(WLAN_CAPABILITY_SHORT_SLOT_TIME);

if (ieee->host_encrypt)
crypt = ieee->crypt[ieee->tx_keyidx];
crypt = ieee->crypt_info.crypt[ieee->crypt_info.tx_keyidx];
else
crypt = NULL;

Expand Down Expand Up @@ -1191,7 +1191,7 @@ inline struct sk_buff *rtllib_association_req(struct rtllib_network *beacon,
unsigned int turbo_info_len = beacon->Turbo_Enable ? 9 : 0;

int len = 0;
crypt = ieee->crypt[ieee->tx_keyidx];
crypt = ieee->crypt_info.crypt[ieee->crypt_info.tx_keyidx];
if (crypt != NULL)
encrypt = ieee->host_encrypt && crypt && crypt->ops &&
((0 == strcmp(crypt->ops->name, "WEP") ||
Expand Down Expand Up @@ -3367,7 +3367,7 @@ static int rtllib_wpa_set_encryption(struct rtllib_device *ieee,
param->sta_addr[4] == 0xff && param->sta_addr[5] == 0xff) {
if (param->u.crypt.idx >= NUM_WEP_KEYS)
return -EINVAL;
crypt = &ieee->crypt[param->u.crypt.idx];
crypt = &ieee->crypt_info.crypt[param->u.crypt.idx];
} else {
return -EINVAL;
}
Expand All @@ -3377,7 +3377,7 @@ static int rtllib_wpa_set_encryption(struct rtllib_device *ieee,
sec.enabled = 0;
sec.level = SEC_LEVEL_0;
sec.flags |= SEC_ENABLED | SEC_LEVEL;
rtllib_crypt_delayed_deinit(ieee, crypt);
rtllib_crypt_delayed_deinit(&ieee->crypt_info, crypt);
}
goto done;
}
Expand Down Expand Up @@ -3410,7 +3410,7 @@ static int rtllib_wpa_set_encryption(struct rtllib_device *ieee,
if (*crypt == NULL || (*crypt)->ops != ops) {
struct lib80211_crypt_data *new_crypt;

rtllib_crypt_delayed_deinit(ieee, crypt);
rtllib_crypt_delayed_deinit(&ieee->crypt_info, crypt);

new_crypt = (struct lib80211_crypt_data *)
kmalloc(sizeof(*new_crypt), GFP_KERNEL);
Expand Down Expand Up @@ -3446,7 +3446,7 @@ static int rtllib_wpa_set_encryption(struct rtllib_device *ieee,

skip_host_crypt:
if (param->u.crypt.set_tx) {
ieee->tx_keyidx = param->u.crypt.idx;
ieee->crypt_info.tx_keyidx = param->u.crypt.idx;
sec.active_key = param->u.crypt.idx;
sec.flags |= SEC_ACTIVE_KEY;
} else
Expand Down Expand Up @@ -3565,7 +3565,7 @@ u8 rtllib_ap_sec_type(struct rtllib_device *ieee)
struct lib80211_crypt_data *crypt;
int encrypt;

crypt = ieee->crypt[ieee->tx_keyidx];
crypt = ieee->crypt_info.crypt[ieee->crypt_info.tx_keyidx];
encrypt = (ieee->current_network.capability & WLAN_CAPABILITY_PRIVACY)
|| (ieee->host_encrypt && crypt && crypt->ops &&
(0 == strcmp(crypt->ops->name, "WEP")));
Expand Down
4 changes: 2 additions & 2 deletions trunk/drivers/staging/rtl8192e/rtllib_tx.c
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ int rtllib_encrypt_fragment(struct rtllib_device *ieee, struct sk_buff *frag,
struct lib80211_crypt_data *crypt = NULL;
int res;

crypt = ieee->crypt[ieee->tx_keyidx];
crypt = ieee->crypt_info.crypt[ieee->crypt_info.tx_keyidx];

if (!(crypt && crypt->ops)) {
printk(KERN_INFO "=========>%s(), crypt is null\n", __func__);
Expand Down Expand Up @@ -645,7 +645,7 @@ int rtllib_xmit_inter(struct sk_buff *skb, struct net_device *dev)
}

skb->priority = rtllib_classify(skb, IsAmsdu);
crypt = ieee->crypt[ieee->tx_keyidx];
crypt = ieee->crypt_info.crypt[ieee->crypt_info.tx_keyidx];
encrypt = !(ether_type == ETH_P_PAE && ieee->ieee802_1x) &&
ieee->host_encrypt && crypt && crypt->ops;
if (!encrypt && ieee->ieee802_1x &&
Expand Down
Loading

0 comments on commit 5c62163

Please sign in to comment.