From 5818fa630d9eb91514fc00d15211476354e72369 Mon Sep 17 00:00:00 2001 From: Alexander Egorenkov Date: Wed, 3 Feb 2010 11:04:18 +0100 Subject: [PATCH] Added STBC handling to frame transmission --- rt2860.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/rt2860.c b/rt2860.c index d2e9db6..984510a 100644 --- a/rt2860.c +++ b/rt2860.c @@ -3431,7 +3431,7 @@ static int rt2860_tx_frame(struct rt2860_softc *sc, struct rt2860_softc_tx_radiotap_header *tap; bus_dma_segment_t dma_seg[RT2860_SOFTC_MAX_SCATTER]; u_int hdrsize, hdrspace; - uint8_t type, rate, bw, shortgi, mcs, pid, wcid, qsel; + uint8_t type, rate, bw, stbc, shortgi, mcs, pid, wcid, qsel; uint16_t qos, len, dmalen, mpdu_len, dur; int error, hasqos, ackrate, ndmasegs, ndescs, i, j; @@ -3514,13 +3514,13 @@ static int rt2860_tx_frame(struct rt2860_softc *sc, RT2860_TXWI_PID_SHIFT) | ((htole16(mpdu_len) & RT2860_TXWI_MPDU_LEN_MASK) << RT2860_TXWI_MPDU_LEN_SHIFT); - if ((ic->ic_flags_ext & (IEEE80211_FEXT_SHORTGI20 | IEEE80211_FEXT_SHORTGI40)) && - (ni->ni_flags & IEEE80211_NODE_HT)) - shortgi = 1; - else - shortgi = 0; + stbc = (ni->ni_htcap & IEEE80211_HTCAP_RXSTBC) ? 1 : 0; + + shortgi = (ic->ic_flags_ext & (IEEE80211_FEXT_SHORTGI20 | IEEE80211_FEXT_SHORTGI40)) && + (ni->ni_flags & IEEE80211_NODE_HT); txwi->phymode_ifs_stbc_shortgi |= + ((stbc & RT2860_TXWI_STBC_MASK) << RT2860_TXWI_STBC_SHIFT) | ((shortgi & RT2860_TXWI_SHORTGI_MASK) << RT2860_TXWI_SHORTGI_SHIFT); if (ni->ni_flags & IEEE80211_NODE_HT) @@ -3736,10 +3736,10 @@ static int rt2860_tx_frame(struct rt2860_softc *sc, RT2860_DPRINTF(sc, RT2860_DEBUG_TX, "%s: sending frame: qid=%d, hdrsize=%d, hdrspace=%d, len=%d, " - "bw=%d, shortgi=%d, mcs=%d, DMA len=%d, ndmasegs=%d, DMA ds_len=%d/%d/%d/%d/%d\n", + "bw=%d, stbc=%d, shortgi=%d, mcs=%d, DMA len=%d, ndmasegs=%d, DMA ds_len=%d/%d/%d/%d/%d\n", device_get_nameunit(sc->dev), qid, hdrsize, hdrspace, m->m_pkthdr.len + hdrsize, - bw, shortgi, mcs, dmalen, ndmasegs, + bw, stbc, shortgi, mcs, dmalen, ndmasegs, dma_seg[0].ds_len, dma_seg[1].ds_len, dma_seg[2].ds_len, dma_seg[3].ds_len, dma_seg[4].ds_len); bus_dmamap_sync(ring->seg0_dma_tag, ring->seg0_dma_map, -- 2.11.4.GIT