diff options
Diffstat (limited to 'drivers/net/wireless/wl12xx/wl1271_rx.c')
-rw-r--r-- | drivers/net/wireless/wl12xx/wl1271_rx.c | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/drivers/net/wireless/wl12xx/wl1271_rx.c b/drivers/net/wireless/wl12xx/wl1271_rx.c index bea133b6e489..cacfee56a0d0 100644 --- a/drivers/net/wireless/wl12xx/wl1271_rx.c +++ b/drivers/net/wireless/wl12xx/wl1271_rx.c | |||
@@ -48,10 +48,24 @@ static void wl1271_rx_status(struct wl1271 *wl, | |||
48 | struct ieee80211_rx_status *status, | 48 | struct ieee80211_rx_status *status, |
49 | u8 beacon) | 49 | u8 beacon) |
50 | { | 50 | { |
51 | enum ieee80211_band desc_band; | ||
52 | |||
51 | memset(status, 0, sizeof(struct ieee80211_rx_status)); | 53 | memset(status, 0, sizeof(struct ieee80211_rx_status)); |
52 | 54 | ||
53 | status->band = wl->band; | 55 | status->band = wl->band; |
54 | status->rate_idx = wl1271_rate_to_idx(wl, desc->rate); | 56 | |
57 | if ((desc->flags & WL1271_RX_DESC_BAND_MASK) == WL1271_RX_DESC_BAND_BG) | ||
58 | desc_band = IEEE80211_BAND_2GHZ; | ||
59 | else | ||
60 | desc_band = IEEE80211_BAND_5GHZ; | ||
61 | |||
62 | status->rate_idx = wl1271_rate_to_idx(desc->rate, desc_band); | ||
63 | |||
64 | #ifdef CONFIG_WL1271_HT | ||
65 | /* 11n support */ | ||
66 | if (desc->rate <= CONF_HW_RXTX_RATE_MCS0) | ||
67 | status->flag |= RX_FLAG_HT; | ||
68 | #endif | ||
55 | 69 | ||
56 | status->signal = desc->rssi; | 70 | status->signal = desc->rssi; |
57 | 71 | ||
@@ -170,10 +184,14 @@ void wl1271_rx(struct wl1271 *wl, struct wl1271_fw_status *status) | |||
170 | while (pkt_offset < buf_size) { | 184 | while (pkt_offset < buf_size) { |
171 | pkt_length = wl1271_rx_get_buf_size(status, | 185 | pkt_length = wl1271_rx_get_buf_size(status, |
172 | drv_rx_counter); | 186 | drv_rx_counter); |
173 | if (wl1271_rx_handle_data(wl, | 187 | /* |
174 | wl->aggr_buf + pkt_offset, | 188 | * the handle data call can only fail in memory-outage |
175 | pkt_length) < 0) | 189 | * conditions, in that case the received frame will just |
176 | break; | 190 | * be dropped. |
191 | */ | ||
192 | wl1271_rx_handle_data(wl, | ||
193 | wl->aggr_buf + pkt_offset, | ||
194 | pkt_length); | ||
177 | wl->rx_counter++; | 195 | wl->rx_counter++; |
178 | drv_rx_counter++; | 196 | drv_rx_counter++; |
179 | drv_rx_counter &= NUM_RX_PKT_DESC_MOD_MASK; | 197 | drv_rx_counter &= NUM_RX_PKT_DESC_MOD_MASK; |