|
@@ -764,6 +764,14 @@ out:
|
|
|
mutex_unlock(&wl->mutex);
|
|
|
}
|
|
|
|
|
|
+static u8 wl1271_tx_get_rate_flags(u8 rate_class_index)
|
|
|
+{
|
|
|
+ if (rate_class_index >= CONF_HW_RXTX_RATE_MCS_MIN &&
|
|
|
+ rate_class_index <= CONF_HW_RXTX_RATE_MCS_MAX)
|
|
|
+ return IEEE80211_TX_RC_MCS;
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static void wl1271_tx_complete_packet(struct wl1271 *wl,
|
|
|
struct wl1271_tx_hw_res_descr *result)
|
|
|
{
|
|
@@ -773,6 +781,7 @@ static void wl1271_tx_complete_packet(struct wl1271 *wl,
|
|
|
struct sk_buff *skb;
|
|
|
int id = result->id;
|
|
|
int rate = -1;
|
|
|
+ u8 rate_flags = 0;
|
|
|
u8 retries = 0;
|
|
|
|
|
|
/* check for id legality */
|
|
@@ -799,6 +808,7 @@ static void wl1271_tx_complete_packet(struct wl1271 *wl,
|
|
|
info->flags |= IEEE80211_TX_STAT_ACK;
|
|
|
rate = wl1271_rate_to_idx(result->rate_class_index,
|
|
|
wlvif->band);
|
|
|
+ rate_flags = wl1271_tx_get_rate_flags(result->rate_class_index);
|
|
|
retries = result->ack_failures;
|
|
|
} else if (result->status == TX_RETRY_EXCEEDED) {
|
|
|
wl->stats.excessive_retries++;
|
|
@@ -807,7 +817,7 @@ static void wl1271_tx_complete_packet(struct wl1271 *wl,
|
|
|
|
|
|
info->status.rates[0].idx = rate;
|
|
|
info->status.rates[0].count = retries;
|
|
|
- info->status.rates[0].flags = 0;
|
|
|
+ info->status.rates[0].flags = rate_flags;
|
|
|
info->status.ack_signal = -1;
|
|
|
|
|
|
wl->stats.retry_count += result->ack_failures;
|