u32 cookie)
 {
        struct ath12k_rx_desc_info **desc_addr_ptr;
-       u16 ppt_idx, spt_idx;
+       u16 start_ppt_idx, end_ppt_idx, ppt_idx, spt_idx;
 
        ppt_idx = u32_get_bits(cookie, ATH12K_DP_CC_COOKIE_PPT);
        spt_idx = u32_get_bits(cookie, ATH12K_DP_CC_COOKIE_SPT);
 
-       if (ppt_idx > ATH12K_NUM_RX_SPT_PAGES ||
+       start_ppt_idx = ATH12K_RX_SPT_PAGE_OFFSET;
+       end_ppt_idx = start_ppt_idx + ATH12K_NUM_RX_SPT_PAGES;
+
+       if (ppt_idx < start_ppt_idx ||
+           ppt_idx >= end_ppt_idx ||
            spt_idx > ATH12K_MAX_SPT_ENTRIES)
                return NULL;
 
                                                  u32 cookie)
 {
        struct ath12k_tx_desc_info **desc_addr_ptr;
-       u16 ppt_idx, spt_idx;
+       u16 start_ppt_idx, end_ppt_idx, ppt_idx, spt_idx;
 
        ppt_idx = u32_get_bits(cookie, ATH12K_DP_CC_COOKIE_PPT);
        spt_idx = u32_get_bits(cookie, ATH12K_DP_CC_COOKIE_SPT);
 
-       if (ppt_idx < ATH12K_NUM_RX_SPT_PAGES ||
-           ppt_idx > ab->dp.num_spt_pages ||
+       start_ppt_idx = ATH12K_TX_SPT_PAGE_OFFSET;
+       end_ppt_idx = start_ppt_idx +
+                     (ATH12K_TX_SPT_PAGES_PER_POOL * ATH12K_HW_MAX_QUEUES);
+
+       if (ppt_idx < start_ppt_idx ||
+           ppt_idx >= end_ppt_idx ||
            spt_idx > ATH12K_MAX_SPT_ENTRIES)
                return NULL;
 
                        return -ENOMEM;
                }
 
+               ppt_idx = ATH12K_RX_SPT_PAGE_OFFSET + i;
                dp->spt_info->rxbaddr[i] = &rx_descs[0];
 
                for (j = 0; j < ATH12K_MAX_SPT_ENTRIES; j++) {
-                       rx_descs[j].cookie = ath12k_dp_cc_cookie_gen(i, j);
+                       rx_descs[j].cookie = ath12k_dp_cc_cookie_gen(ppt_idx, j);
                        rx_descs[j].magic = ATH12K_DP_RX_DESC_MAGIC;
                        list_add_tail(&rx_descs[j].list, &dp->rx_desc_free_list);
 
                        /* Update descriptor VA in SPT */
-                       rx_desc_addr = ath12k_dp_cc_get_desc_addr_ptr(ab, i, j);
+                       rx_desc_addr = ath12k_dp_cc_get_desc_addr_ptr(ab, ppt_idx, j);
                        *rx_desc_addr = &rx_descs[j];
                }
        }
                        }
 
                        tx_spt_page = i + pool_id * ATH12K_TX_SPT_PAGES_PER_POOL;
-                       ppt_idx = ATH12K_NUM_RX_SPT_PAGES + tx_spt_page;
+                       ppt_idx = ATH12K_TX_SPT_PAGE_OFFSET + tx_spt_page;
 
                        dp->spt_info->txbaddr[tx_spt_page] = &tx_descs[0];