+ /* kill the stuck frame */
+ if (!is_terminator(&fw.wlan.tx_queue[i], iter) &&
+ fw.wlan.last_super_num[i] >= CARL9170FW_TX_MAC_RESET &&
+ fw.wlan.last_super[i] == DESC_PAYLOAD(iter)) {
+ struct carl9170_tx_superframe *super = get_super(iter);
+
+ iter->status = AR9170_OWN_BITS_SW;
+ /*
+ * Mark the frame as failed.
+ * The BAFAIL flag allows the frame to sail through
+ * wlan_tx_status without much "unstuck" trouble.
+ */
+ iter->ctrl &= ~(AR9170_CTRL_FAIL);
+ iter->ctrl |= AR9170_CTRL_BAFAIL;
+
+ super->s.cnt = CARL9170_TX_MAX_RATE_TRIES;
+ super->s.rix = CARL9170_TX_MAX_RETRY_RATES;
+
+ fw.wlan.last_super_num[i] = 0;
+ fw.wlan.last_super[i] = NULL;
+ iter = iter->lastAddr->nextAddr;
+ }
+