Author: kevlo
Date: Tue Sep  8 07:53:10 2015
New Revision: 287553
URL: https://svnweb.freebsd.org/changeset/base/287553

Log:
  Fix comparison in run_key_set_cb().
  
  Tested on RT5370, sta mode.
  
  Submitted by: Andriy Voskoboinyk <s3erios at gmail com>
  Differential Revision:        https://reviews.freebsd.org/D3589

Modified:
  head/sys/dev/usb/wlan/if_run.c

Modified: head/sys/dev/usb/wlan/if_run.c
==============================================================================
--- head/sys/dev/usb/wlan/if_run.c      Tue Sep  8 07:50:35 2015        
(r287552)
+++ head/sys/dev/usb/wlan/if_run.c      Tue Sep  8 07:53:10 2015        
(r287553)
@@ -2235,6 +2235,7 @@ run_key_set_cb(void *arg)
        struct ieee80211com *ic = vap->iv_ic;
        struct run_softc *sc = ic->ic_softc;
        struct ieee80211_node *ni;
+       u_int cipher = k->wk_cipher->ic_cipher;
        uint32_t attr;
        uint16_t base, associd;
        uint8_t mode, wcid, iv[8];
@@ -2248,7 +2249,7 @@ run_key_set_cb(void *arg)
        associd = (ni != NULL) ? ni->ni_associd : 0;
 
        /* map net80211 cipher to RT2860 security mode */
-       switch (k->wk_cipher->ic_cipher) {
+       switch (cipher) {
        case IEEE80211_CIPHER_WEP:
                if(k->wk_keylen < 8)
                        mode = RT2860_MODE_WEP40;
@@ -2281,7 +2282,7 @@ run_key_set_cb(void *arg)
                base = RT2860_PKEY(wcid);
        }
 
-       if (k->wk_cipher->ic_cipher == IEEE80211_CIPHER_TKIP) {
+       if (cipher == IEEE80211_CIPHER_TKIP) {
                if(run_write_region_1(sc, base, k->wk_key, 16))
                        return;
                if(run_write_region_1(sc, base + 16, &k->wk_key[16], 8))        
/* wk_txmic */
@@ -2297,11 +2298,11 @@ run_key_set_cb(void *arg)
        if (!(k->wk_flags & IEEE80211_KEY_GROUP) ||
            (k->wk_flags & (IEEE80211_KEY_XMIT | IEEE80211_KEY_RECV))) {
                /* set initial packet number in IV+EIV */
-               if (k->wk_cipher == IEEE80211_CIPHER_WEP) {
+               if (cipher == IEEE80211_CIPHER_WEP) {
                        memset(iv, 0, sizeof iv);
                        iv[3] = vap->iv_def_txkey << 6;
                } else {
-                       if (k->wk_cipher->ic_cipher == IEEE80211_CIPHER_TKIP) {
+                       if (cipher == IEEE80211_CIPHER_TKIP) {
                                iv[0] = k->wk_keytsc >> 8;
                                iv[1] = (iv[0] | 0x20) & 0x7f;
                                iv[2] = k->wk_keytsc;
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to