/* return: < 0 fatal error, 0 - non chained msdu, 1 chained msdu */
 static int ath10k_htt_rx_amsdu_pop(struct ath10k_htt *htt,
-                                  u8 **fw_desc, int *fw_desc_len,
                                   struct sk_buff_head *amsdu)
 {
        struct ath10k *ar = htt->ar;
                        return -EIO;
                }
 
-               /*
-                * Copy the FW rx descriptor for this MSDU from the rx
-                * indication message into the MSDU's netbuf. HL uses the
-                * same rx indication message definition as LL, and simply
-                * appends new info (fields from the HW rx desc, and the
-                * MSDU payload itself). So, the offset into the rx
-                * indication message only has to account for the standard
-                * offset of the per-MSDU FW rx desc info within the
-                * message, and how many bytes of the per-MSDU FW rx desc
-                * info have already been consumed. (And the endianness of
-                * the host, since for a big-endian host, the rx ind
-                * message contents, including the per-MSDU rx desc bytes,
-                * were byteswapped during upload.)
-                */
-               if (*fw_desc_len > 0) {
-                       rx_desc->fw_desc.info0 = **fw_desc;
-                       /*
-                        * The target is expected to only provide the basic
-                        * per-MSDU rx descriptors. Just to be sure, verify
-                        * that the target has not attached extension data
-                        * (e.g. LRO flow ID).
-                        */
-
-                       /* or more, if there's extension data */
-                       (*fw_desc)++;
-                       (*fw_desc_len)--;
-               } else {
-                       /*
-                        * When an oversized AMSDU happened, FW will lost
-                        * some of MSDU status - in this case, the FW
-                        * descriptors provided will be less than the
-                        * actual MSDUs inside this MPDU. Mark the FW
-                        * descriptors so that it will still deliver to
-                        * upper stack, if no CRC error for this MPDU.
-                        *
-                        * FIX THIS - the FW descriptors are actually for
-                        * MSDUs in the end of this A-MSDU instead of the
-                        * beginning.
-                        */
-                       rx_desc->fw_desc.info0 = 0;
-               }
-
                msdu_len_invalid = !!(__le32_to_cpu(rx_desc->attention.flags)
                                        & (RX_ATTENTION_FLAGS_MPDU_LENGTH_ERR |
                                           RX_ATTENTION_FLAGS_MSDU_LENGTH_ERR));
        struct htt_rx_indication_mpdu_range *mpdu_ranges;
        struct sk_buff_head amsdu;
        int num_mpdu_ranges;
-       int fw_desc_len;
-       u8 *fw_desc;
        int i, ret, mpdu_count = 0;
 
        lockdep_assert_held(&htt->rx_ring.lock);
        if (htt->rx_confused)
                return;
 
-       fw_desc_len = __le16_to_cpu(rx->prefix.fw_rx_desc_bytes);
-       fw_desc = (u8 *)&rx->fw_desc;
-
        num_mpdu_ranges = MS(__le32_to_cpu(rx->hdr.info1),
                             HTT_RX_INDICATION_INFO1_NUM_MPDU_RANGES);
        mpdu_ranges = htt_rx_ind_get_mpdu_ranges(rx);
 
        while (mpdu_count--) {
                __skb_queue_head_init(&amsdu);
-               ret = ath10k_htt_rx_amsdu_pop(htt, &fw_desc,
-                                             &fw_desc_len, &amsdu);
+               ret = ath10k_htt_rx_amsdu_pop(htt, &amsdu);
                if (ret < 0) {
                        ath10k_warn(ar, "rx ring became corrupted: %d\n", ret);
                        __skb_queue_purge(&amsdu);
        struct ieee80211_rx_status *rx_status = &htt->rx_status;
        struct sk_buff_head amsdu;
        int ret;
-       u8 *fw_desc;
-       int fw_desc_len;
-
-       fw_desc_len = __le16_to_cpu(frag->fw_rx_desc_bytes);
-       fw_desc = (u8 *)frag->fw_msdu_rx_desc;
 
        __skb_queue_head_init(&amsdu);
 
        spin_lock_bh(&htt->rx_ring.lock);
-       ret = ath10k_htt_rx_amsdu_pop(htt, &fw_desc, &fw_desc_len,
-                                     &amsdu);
+       ret = ath10k_htt_rx_amsdu_pop(htt, &amsdu);
        spin_unlock_bh(&htt->rx_ring.lock);
 
        tasklet_schedule(&htt->rx_replenish_task);
        ath10k_htt_rx_h_filter(ar, &amsdu, rx_status);
        ath10k_htt_rx_h_mpdu(ar, &amsdu, rx_status);
        ath10k_htt_rx_h_deliver(ar, &amsdu, rx_status);
-
-       if (fw_desc_len > 0) {
-               ath10k_dbg(ar, ATH10K_DBG_HTT,
-                          "expecting more fragmented rx in one indication %d\n",
-                          fw_desc_len);
-       }
 }
 
 static void ath10k_htt_rx_tx_compl_ind(struct ath10k *ar,