Every HSDPA subframe carries a 6 bit transport block size field on HS-SCCH, and a UE turns that field into a transport block size with a table in 25.321. On a test system you usually meet the same idea as a TFRI table. That table tells the Node B how many MAC-d PDUs to pack into each transport block. This page reads one such table line by line. Then it checks the result against the UE categories of 25.306, because the category decides which rows a UE can actually receive.
TFRI Table Example
How does a tester build the rows of a TFRI table, and where does each number come from? The spreadsheet below answers that with a real configuration. Every column is either an input, a value from a 3GPP table, or a simple product of the two.
The parameter block at the top left holds the inputs: InterTTI 1, NumOfH_ARQ 6, NumOfCh 5, ModScheme QPSK, Xtbs 43, NumOfTFRI 9 and PDUSize 336. The table under it has one row for each TFRI from 0 to 8. The callouts link the inputs to 25.306 Table 5.1a and to 25.211 Table 26, and they give the formula behind each derived column.

Every TFRI row uses the same 3319 bit transport block and differs only in the number of 336 bit PDUs it carries. The rule in the top callout keeps the PDU throughput at or below the TBS throughput.
InterTTI and NumOfCh : must be allowed by the UE category, which is why the callout points to 25.306 Table 5.1a. InterTTI 1 with 5 codes fits Categories 5, 6 and 12, and also the higher categories that allow 10 or 15 codes.Xms(bits) 960 : the number of physical channel bits in one subframe of one HS-PDSCH code. 25.211 Table 26 gives 320 bits per slot for slot format 0, QPSK, and a subframe has three slots, so 320 x 3 = 960.TBS 3319 : derived from Xtbs, the number of codes and the modulation, as the paragraph below the list shows.No of PDU and PDU Size : PDU Size is No of PDU x 336. TFRI 0 carries one PDU of 336 bits, and TFRI 8 carries nine PDUs, 3024 bits.Tput(PDU) and Tput(TBS) : each size in bits x 1000 / (InterTTI x 2). A subframe lasts 2 ms, so the result is in bits per second. With InterTTI 1, 3319 bits every 2 ms gives 1659500 bps.
The TBS column follows 25.321 clause 9.2.3.1. The HS-SCCH carries ki, which is Xtbs = 43 here. MAC adds k0,i from 25.321 Table 9.2.3.1-1, and for QPSK with 5 codes k0,i is 92. So kt = 43 + 92 = 135, and position 135 of the table in 25.321 Annex A is 3319 bits. Table 9.2.3.1-2 is the octet aligned alternative. It gives different sizes, and it can only be used with MAC-ehs.
Why does the table stop at TFRI 8? Nine PDUs take 9 x 336 = 3024 bits. A tenth PDU would make 3360 bits, which is more than the 3319 bit transport block. The 295 bits left in TFRI 8 hold the MAC-hs header and the padding. This is the rule in the top callout: Tput(PDU) must not exceed Tput(TBS).
The rows also show that the TFRI index here does not change the physical layer. All nine rows send the same 3319 bit block on 5 codes with QPSK, so the air interface load is identical. Only the amount of user data inside the block changes, from 168000 bps in TFRI 0 to 1512000 bps in TFRI 8.
The HS-SCCH value is only an index : the UE adds k0,i for the codes and modulation, then looks up the transport block size in 25.321 Annex A.The category limits the table : codes, inter-TTI interval, largest transport block and soft buffer all come from 25.306 Table 5.1a.PDUs must fit with their header : No of PDU x PDU size plus the MAC-hs header cannot exceed the TBS.Throughput is size over time : bits per transport block divided by 2 ms x InterTTI.
HS-DSCH Physical Layer Categories
Which TFRI rows can a UE actually receive? That depends on its HS-DSCH category, because the category sets the codes, the inter-TTI interval, the largest transport block and the soft buffer. The table below is the first place to check when a TFRI table does not work with a particular UE.
The table is split over the three images below. Categories 1 to 12 are the original single-cell categories without MIMO. Categories 13 and 14 add 64QAM, and categories 15 to 20 add MIMO. From category 21 onwards the categories add aggregated cells, up to 8 cells in categories 35 and 36, and categories 37 and 38 add MIMO with four transmit antennas.
< 25.306 - Table 5.1a: FDD HS-DSCH physical layer categories >



The table has grown to 38 categories. No category allows a transport block larger than 42192 bits, the value first reached in category 14, while the soft channel bits grow with the number of cells and MIMO streams.
Maximum number of HS-DSCH codes received : the upper limit for NumOfCh in a TFRI table: 5, 10 or 15.Minimum inter-TTI interval : 1 means the UE can receive in every subframe. Categories 1 to 4 and 11 need InterTTI 2 or 3.Maximum number of bits of an HS-DSCH transport block : the largest TBS in one TTI. NOTE 1 of the table says that this value does not have to match an entry of the transport block size table exactly.Total number of soft channel bits : the budget that the HARQ memory partitioning splits between the HARQ processes.Supported modulations : QPSK only for categories 11 and 12, QPSK and 16QAM for categories 1 to 10, and 64QAM from category 13.
Let's check the TFRI example against this table. Category 6 allows 5 codes, an inter-TTI interval of 1 and a transport block of up to 7298 bits, so the 3319 bit block fits. Its 67200 soft channel bits, split over 6 HARQ processes, give 11200 bits per process. That is more than the roughly 10000 bits that turbo coding at rate 1/3 makes from one 3319 bit block with its CRC.
Check the category before the TFRI table : a row that needs more codes or a larger block than the category allows fails on the UE side.The maximum block is a ceiling, the soft bits are a budget : the first limits one TTI, the second limits all HARQ processes together.Newer categories add cells and streams : the per block maximum never exceeds 42192 bits, and the peak rate grows through aggregation and MIMO.
Reference
[1] 3GPP TS 25.306 v19.0.0 - Table 5.1a, FDD HS-DSCH physical layer categories
[2] 3GPP TS 25.321 v19.0.0 - clause 9.2.3.1, Transport block size for FDD, and Annex A
[3] 3GPP TS 25.211 v19.0.0 - Table 26, HS-DSCH fields