static bool length_check(struct dma_desc *desc)
{
- volatile struct carl9170_tx_superframe *super = DESC_PAYLOAD(desc);
+ volatile struct carl9170_tx_superframe *super = __get_super(desc);
if (unlikely(desc->totalLen < sizeof(struct carl9170_tx_superdesc)))
return false;
* is _SW ( handle_download_exception )
*/
- for_each_desc_bits(desc, &fw.pta.down_queue, AR9170_OWN_BITS_SE) {
+ for_each_desc_not_bits(desc, &fw.pta.down_queue, AR9170_OWN_BITS_HW) {
if (unlikely((length_check(desc) == false))) {
/*
* There is no easy way of telling what was lost.
* timeout mechanism.
*/
+ wlan_tx_complete(__get_super(desc), false);
dma_reclaim(&fw.pta.down_queue, desc);
down_trigger();
} else {
fw.usb.int_desc = desc;
fw.usb.int_desc_available = 1;
} else {
-#ifdef CONFIG_CARL9170FW_LOOPBACK
- dma_reclaim(&fw.pta.down_queue, desc);
- down_trigger();
-#else
dma_reclaim(&fw.wlan.rx_queue, desc);
wlan_trigger(AR9170_DMA_TRIGGER_RXQ);
-#endif /* CONFIG_CARL9170FW_LOOPBACK */
}
}
}
__for_each_desc_continue(desc, &fw.pta.down_queue) {
- if ((desc->status & AR9170_OWN_BITS) == AR9170_OWN_BITS_SW) {
+ if ((desc->status & AR9170_OWN_BITS) == AR9170_OWN_BITS_SW)
dma_fix_downqueue(desc);
- }
}