Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 15 Mar 2015 20:33:14 +0000 (UTC)
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r280068 - head/sys/dev/wpi
Message-ID:  <201503152033.t2FKXEEF063734@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: adrian
Date: Sun Mar 15 20:33:13 2015
New Revision: 280068
URL: https://svnweb.freebsd.org/changeset/base/280068

Log:
  Move key processing in wpi_tx_data.
  
  (This is in preparation for further work to support hardware encryption.)
  
  PR:		kern/197143
  Submitted by:	Andriy Voskoboinyk <s3erios@gmail.com>

Modified:
  head/sys/dev/wpi/if_wpi.c

Modified: head/sys/dev/wpi/if_wpi.c
==============================================================================
--- head/sys/dev/wpi/if_wpi.c	Sun Mar 15 20:32:12 2015	(r280067)
+++ head/sys/dev/wpi/if_wpi.c	Sun Mar 15 20:33:13 2015	(r280068)
@@ -2379,7 +2379,7 @@ wpi_tx_data(struct wpi_softc *sc, struct
 	uint32_t flags;
 	uint16_t qos;
 	uint8_t tid, type;
-	int ac, error, rate, ismcast, totlen;
+	int ac, error, swcrypt, rate, ismcast, totlen;
 
 	wh = mtod(m, struct ieee80211_frame *);
 	type = wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK;
@@ -2422,6 +2422,8 @@ wpi_tx_data(struct wpi_softc *sc, struct
 			error = ENOBUFS;
 			goto fail;
 		}
+		swcrypt = k->wk_flags & IEEE80211_KEY_SWCRYPT;
+
 		/* 802.11 header may have moved. */
 		wh = mtod(m, struct ieee80211_frame *);
 	}
@@ -2508,6 +2510,19 @@ wpi_tx_data(struct wpi_softc *sc, struct
 	if (type != IEEE80211_FC0_TYPE_MGT)
 		tx.data_ntries = tp->maxretry;
 
+	if (k != NULL && !swcrypt) {
+		switch (k->wk_cipher->ic_cipher) {
+		case IEEE80211_CIPHER_AES_CCM:
+			tx.security = WPI_CIPHER_CCMP;
+			break;
+
+		default:
+			break;
+		}
+
+		memcpy(tx.key, k->wk_key, k->wk_keylen);
+	}
+
 	tx.len = htole16(totlen);
 	tx.flags = htole32(flags);
 	tx.plcp = rate2plcp(rate);
@@ -2517,13 +2532,6 @@ wpi_tx_data(struct wpi_softc *sc, struct
 	tx.cck_mask = 0x0f;
 	tx.rts_ntries = 7;
 
-	if (k != NULL && k->wk_cipher->ic_cipher == IEEE80211_CIPHER_AES_CCM) {
-		if (!(k->wk_flags & IEEE80211_KEY_SWCRYPT)) {
-			tx.security = WPI_CIPHER_CCMP;
-			memcpy(tx.key, k->wk_key, k->wk_keylen);
-		}
-	}
-
 	tx_data.data = &tx;
 	tx_data.ni = ni;
 	tx_data.m = m;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201503152033.t2FKXEEF063734>