Avoid using N3101 in DL TBFs

TS 44.060 13.4 "N3101" clearly states this counter relates to UL TBFs,
since it only applies to TBFs for which USFs are set:
"When the network after setting USF for a given TBF, receives a valid data block of this TBF from
the mobile station in a block assigned for this USF, it will reset
counter N3101.  If PS Handover is not ongoing, the network will increment counter N3101 for each
USF for which no data is received for this TBF."

Furthermore, N3101 must only be reset for data blocks, so drop all rx
CTRL block patches on UL TBF resetting the counter.

Change-Id: I207f3906d13fc6feea2282e261f468a09db37d86
diff --git a/src/pdch.cpp b/src/pdch.cpp
index 9ceb944..2cee011 100644
--- a/src/pdch.cpp
+++ b/src/pdch.cpp
@@ -356,9 +356,6 @@
 	tbf = poll->tbf_poll.poll_tbf;
 	reason = poll->tbf_poll.reason;
 
-	/* Reset N3101 counter: */
-	tbf->n_reset(N3101);
-
 	ms_update_announced_tlli(tbf->ms(), tlli);
 	/* Gather MS from TBF again, since it may be NULL or may have been merged during ms_update_announced_tlli */
 	ms = tbf->ms();
@@ -499,9 +496,6 @@
 		return;
 	}
 
-	/* Reset N3101 counter: */
-	tbf->n_reset(N3101);
-
 	pdch_ulc_release_fn(ulc, fn);
 
 	LOGPTBF(tbf, LOGL_DEBUG, "RX: [PCU <- BTS] Packet Downlink Ack/Nack\n");
@@ -569,8 +563,6 @@
 		return;
 	}
 
-	/* Reset N3101 counter: */
-	tbf->n_reset(N3101);
 	pdch_ulc_release_fn(ulc, fn);
 
 	LOGPTBF(tbf, LOGL_DEBUG,
@@ -670,8 +662,6 @@
 			LOGP(DRLCMAC, LOGL_NOTICE, "PACKET RESOURCE REQ unknown downlink TFI=%d\n", tfi);
 			return;
 		}
-		/* Reset N3101 counter: */
-		dl_tbf->n_reset(N3101);
 		ms = tbf_ms(dl_tbf_as_tbf(dl_tbf));
 		dl_tbf = NULL;
 	} else { /* ID_TYPE = UL_TFI */
@@ -681,8 +671,6 @@
 			LOGP(DRLCMAC, LOGL_NOTICE, "PACKET RESOURCE REQ unknown uplink TFI=%d\n", tfi);
 			return;
 		}
-		/* Reset N3101 counter: */
-		ul_tbf->n_reset(N3101);
 		ms = tbf_ms(ul_tbf_as_tbf(ul_tbf));
 		ul_tbf = NULL;
 	}
diff --git a/src/tbf.cpp b/src/tbf.cpp
index 83b3b86..bc5411a 100644
--- a/src/tbf.cpp
+++ b/src/tbf.cpp
@@ -307,10 +307,14 @@
 
 void gprs_rlcmac_tbf::n_reset(enum tbf_counters n)
 {
-	if (n >= N_MAX) {
-		LOGPTBF(this, LOGL_ERROR, "attempting to reset unknown counter %s\n",
-			get_value_string(tbf_counters_names, n));
-		return;
+	OSMO_ASSERT(n < N_MAX);
+
+	switch(n) {
+	case N3101:
+		OSMO_ASSERT(direction == GPRS_RLCMAC_UL_TBF);
+		break;
+	default:
+		break;
 	}
 
 	Narr[n] = 0;
@@ -321,16 +325,13 @@
 {
 	uint8_t chk;
 
-	if (n >= N_MAX) {
-		LOGPTBF(this, LOGL_ERROR, "attempting to increment unknown counter %s\n",
-			get_value_string(tbf_counters_names, n));
-		return true;
-	}
+	OSMO_ASSERT(n < N_MAX);
 
 	Narr[n]++;
 
 	switch(n) {
 	case N3101:
+		OSMO_ASSERT(direction == GPRS_RLCMAC_UL_TBF);
 		chk = bts->n3101;
 		break;
 	case N3103: