Implementation notes on 'msg3 pusch' and 'pusch scheduled by dci 0_1' tbs calculation procedures:
2018-12-25 update: 根据RAN#82会议CR更正‘actual number of ptrs ports'算法及对nrOfSRS-Ports的理解。
(1) PUSCH differs with PDSCH on following aspects:
*pusch may support 'transform precoding' and 'intra-slot frequency hopping'
*pusch supports both 'codebook' and 'non-codebook' transmission, while pdsch only supports non-codebook precoding(together with dmrs).
Note: 'cb'/'CB' refers to 'codebook', and 'noncb'/'nonCB' refers to 'non-codebook' in following text.
*tri(transmission rank indication, or rank) of pusch is determined by 'precoding info and number of layers' of dci 0_1 for cb-based pusch, and by 'sri' of dci 0_1 for noncb-based pusch; while tri of pdsch(aka, number of indicated 'dmrs ports') is solely determined by 'antenna port(s)' of dci 1_1
*'antenna port(s)' of dci 0_1 need to be used together with tri (or rank), which determine 'cdm groups without data', 'dmrs ports' and 'number of front-load symbols'
*For cb-pusch, high layers configures maxRank(1~4) explicitly; while for noncb-pusch, there is a implicit parameter--Lmax, which apprears in 38.212 Table 7.3.1.1.2-28~Table 7.3.1.1.2-31, which is the max supported layers per UE. so basically, Lmax is a UE capability. Problem is that I can't find any clue in 38.306 vf30(UE Capability).