u16 __iomem *int_curr;
        dma_addr_t int_dma_addr;
        size_t int_size;
+       bool is_tsa_64rxtx;
        struct list_head chan_head;
        struct qmc_chan *chans[64];
 };
         * Setup one common 64 entries table or two 32 entries (one for Tx
         * and one for Tx) according to assigned TS numbers.
         */
-       if (info.nb_tx_ts > 32 || info.nb_rx_ts > 32)
+       if (chan->qmc->is_tsa_64rxtx)
                return qmc_chan_setup_tsa_64rxtx(chan, &info, enable);
 
        ret = qmc_chan_setup_tsa_32rx(chan, &info, enable);
         * Everything was previously checked, Tx and Rx related stuffs are
         * identical -> Used Rx related stuff to build the table
         */
+       qmc->is_tsa_64rxtx = true;
 
        /* Invalidate all entries */
        for (i = 0; i < 64; i++)
         * Use a Tx 32 entries table and a Rx 32 entries table.
         * Everything was previously checked.
         */
+       qmc->is_tsa_64rxtx = false;
 
        /* Invalidate all entries */
        for (i = 0; i < 32; i++) {