pdch: Silently ignore DATA.ind with len=0

Since recently (see Depends below), BTS side submits DATA.ind with len=0
to announce nothing was received on that UL block FN. This will allow
osmo-pcu track time more accurately, and use this information to quickly
find out if a UL block was expected as requested by RRBP or USF poll and
increment counters such as N3101 (finally being able to properly
implement timers such as T3619).

Depends: osmo-bts.git Change-Id I343c7a721dab72411edbca816c8864926bc329fb
Related: OS#5020
Change-Id: I17c28abf63b153448b533971ac5cf2e48daadea8
diff --git a/src/pdch.cpp b/src/pdch.cpp
index 46d1cae..26fd6a9 100644
--- a/src/pdch.cpp
+++ b/src/pdch.cpp
@@ -794,6 +794,15 @@
 int gprs_rlcmac_pdch::rcv_block(uint8_t *data, uint8_t len, uint32_t fn,
 	struct pcu_l1_meas *meas)
 {
+	/* No successfully decoded UL block was received during this FN: */
+	if (len == 0) {
+		/* TODO: Here, in the future, it can be checked whether a UL block was expected for:
+		 * - UL/DL TBFs: RRBP poll pending (bts->pollController->expireTimedout)
+		 * - UL TBFs: USF poll pending (we don't store this info in ul_tbf yet) -> inc N3101 (OS#5033)
+		 */
+		return 0;
+	}
+
 	enum CodingScheme cs = mcs_get_by_size_ul(len);
 	if (!cs) {
 		bts_do_rate_ctr_inc(bts(), CTR_DECODE_ERRORS);