IIUC, in our case T3192 is submitted to MS by osmo-bsc through osmo-bts on BCCH SI (osmo-bsc.git rest_octects.c:encode_t3192()).
In osmo-pcu we receive from BTS related T3191 and T3193. Specially related seems to be timer T3193, which by definition needs to be greater than T3192:
T3193:Wait for reuse of TFI after reception of the final PACKET DOWNLINK ACK/NACK from the mobile station for this TBF. This timer is used on the network side to define when timer T3192 on the mobile station side has surely expired so that the TFI can be reused. Its value is network dependent.
T3193 is currently started during tbf::release() (where tbf state is set to GPRS_RLCMAC_WAIT_RELEASE), and its callback is set to destroy it with tbf_timeout_free(). However, in gprs_rlcmac_dl_tbf::append_data() I see if tbf in state GPRS_RLCMAC_WAIT_RELEASE, then reuse it, but I don't see T3193 being stopped or restarted... that sounds like a bug. On the other hand, that looks like implementing what this ticket describes as missing, so I'm a bit confused.
Related field we send in osmo-pcu towards the MS is "CONTROL_ACK", which is controlled by this variable:
block->u.Packet_Downlink_Assignment.CONTROL_ACK = tbf->was_releasing; // NW establishes no new DL TBF for the MS with running timer T3192
which in turn is set by:
src/tbf_dl.cpp
509: old_tbf->was_releasing = old_tbf->state_is(GPRS_RLCMAC_WAIT_RELEASE);
519: was_releasing = state_is(GPRS_RLCMAC_WAIT_RELEASE);
src/tbf.cpp
1284: new_dl_tbf->was_releasing = was_releasing;