{
struct carl9170_tx_superframe *super = get_super(desc);
unsigned int qidx = super->s.queue;
- bool txfail, success;
+ bool txfail = false, success;
success = true;
unhide_super(desc);
-#ifdef CONFIG_CARL9170FW_HANDLE_BACK_REQ
if (unlikely(super == (void *) &dma_mem.reserved.ba)) {
fw.wlan.ba_desc = desc;
fw.wlan.ba_desc_available = 1;
return true;
}
-#endif /* CONFIG_CARL9170FW_HANDLE_BACK_REQ */
wlan_tx_complete(super, success);
wlan_trigger(BIT(super->s.queue));
}
-#ifdef CONFIG_CARL9170FW_HANDLE_BACK_REQ
static void wlan_send_buffered_ba(void)
{
struct carl9170_tx_ba_superframe *baf = &dma_mem.reserved.ba.ba;
if (!fw.wlan.ba_desc_available)
return;
+ fw.wlan.ba_desc_available = 0;
+
ctx = &fw.wlan.ba_cache[fw.wlan.ba_head_idx];
fw.wlan.ba_head_idx++;
fw.wlan.ba_head_idx %= CONFIG_CARL9170FW_BACK_REQS_NUM;
/* Format BlockAck */
- fw.wlan.ba_desc->status = 0;
+ fw.wlan.ba_desc->status = AR9170_OWN_BITS_SW;
fw.wlan.ba_desc->ctrl = AR9170_CTRL_FS_BIT | AR9170_CTRL_LS_BIT;
- fw.wlan.ba_desc_available = 0;
fw.wlan.ba_desc->nextAddr = fw.wlan.ba_desc->lastAddr =
fw.wlan.ba_desc;
ctx->phy = cpu_to_le32(0x2cc301);
}
}
-#endif /* CONFIG_CARL9170FW_HANDLE_BACK_REQ */
static void wlan_check_rx_overrun(void)
{
} else if (ieee80211_is_ctl(hdr->frame_control)) {
switch (le16_to_cpu(hdr->frame_control) & IEEE80211_FCTL_STYPE) {
case IEEE80211_STYPE_BACK_REQ:
-#ifdef CONFIG_CARL9170FW_HANDLE_BACK_REQ
handle_bar(desc, hdr, data_len, mac_err);
-#endif /* CONFIG_CARL9170FW_HANDLE_BACK_REQ */
/* fallthrough */
rx_filter |= CARL9170_RX_FILTER_CTL_BACKR;
break;
wlan_send_buffered_tx_status();
-#ifdef CONFIG_CARL9170FW_HANDLE_BACK_REQ
wlan_send_buffered_ba();
-#endif /* CONFIG_CARL9170FW_HANDLE_BACK_REQ */
}
void handle_wlan(void)