diff options
author | kevlo <kevlo@FreeBSD.org> | 2007-11-06 07:30:12 +0000 |
---|---|---|
committer | kevlo <kevlo@FreeBSD.org> | 2007-11-06 07:30:12 +0000 |
commit | 45cc59ef4fed7a576c50eedd3a9202e5a65a68f0 (patch) | |
tree | e3045ff26a3b52e03dfd3bf67b99dd9a6772dcff /sys/dev/ral/rt2560.c | |
parent | 72f16026630d78ae3329934269d62a961ba1f823 (diff) | |
download | FreeBSD-src-45cc59ef4fed7a576c50eedd3a9202e5a65a68f0.zip FreeBSD-src-45cc59ef4fed7a576c50eedd3a9202e5a65a68f0.tar.gz |
Check wep flag in *_tx_mgt since we need to encrypt some management frame
in case of shared authentification.
Obtained from: NetBSD
Diffstat (limited to 'sys/dev/ral/rt2560.c')
-rw-r--r-- | sys/dev/ral/rt2560.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/sys/dev/ral/rt2560.c b/sys/dev/ral/rt2560.c index b72ca40..58f4590 100644 --- a/sys/dev/ral/rt2560.c +++ b/sys/dev/ral/rt2560.c @@ -1612,6 +1612,7 @@ rt2560_tx_mgt(struct rt2560_softc *sc, struct mbuf *m0, struct rt2560_tx_desc *desc; struct rt2560_tx_data *data; struct ieee80211_frame *wh; + struct ieee80211_key *k; bus_dma_segment_t segs[RT2560_MAX_SCATTER]; uint16_t dur; uint32_t flags = 0; @@ -1622,6 +1623,16 @@ rt2560_tx_mgt(struct rt2560_softc *sc, struct mbuf *m0, rate = IEEE80211_IS_CHAN_5GHZ(ic->ic_curchan) ? 12 : 2; + wh = mtod(m0, struct ieee80211_frame *); + + if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + k = ieee80211_crypto_encap(ic, ni, m0); + if (k == NULL) { + m_freem(m0); + return ENOBUFS; + } + } + error = bus_dmamap_load_mbuf_sg(sc->prioq.data_dmat, data->map, m0, segs, &nsegs, 0); if (error != 0) { |