Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0ddcf5fd authored by Sean MacLennan's avatar Sean MacLennan Committed by Greg Kroah-Hartman
Browse files

staging/rtl8192e: Convert to lib80211_crypt_info



Convert rtllib to use lib80211_crypt_info.

Signed-off-by: default avatarSean MacLennan <seanm@seanm.ca>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 32c44cb5
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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;
+2 −6
Original line number Diff line number Diff line
@@ -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 */

+19 −19
Original line number Diff line number Diff line
@@ -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)
@@ -56,23 +56,23 @@ 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,
void rtllib_crypt_delayed_deinit(struct lib80211_crypt_info *info,
				 struct lib80211_crypt_data **crypt)
{
	struct lib80211_crypt_data *tmp;
@@ -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);

+3 −3
Original line number Diff line number Diff line
@@ -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
+9 −7
Original line number Diff line number Diff line
@@ -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);
@@ -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;
		}
	}

Loading