Fix MS ending up with assigned imsi 000

The whole paging path and data structre is cleaned up.
New MS helpers ms_imsi_is_valid() and ms_paging_group() are introduced
to help in the process and keep implementation details inside GprsMs
class.

Related: OS#5303
Change-Id: I4c0838b26ede58e4b711410eee2a8e4f71e9414b
diff --git a/src/tbf_fsm.c b/src/tbf_fsm.c
index af2b34e..39f2080 100644
--- a/src/tbf_fsm.c
+++ b/src/tbf_fsm.c
@@ -214,15 +214,11 @@
 		if ((ctx->state_flags & (1 << GPRS_RLCMAC_FLAG_CCCH))
 		     && !(ctx->state_flags & (1 << GPRS_RLCMAC_FLAG_DL_ACK))) {
 			struct GprsMs *ms = tbf_ms(ctx->tbf);
-			const char *imsi = ms_imsi(ms);
-			uint16_t pgroup;
 			LOGPTBF(ctx->tbf, LOGL_DEBUG, "Re-send downlink assignment on PCH (IMSI=%s)\n",
-				imsi);
+				ms_imsi_is_valid(ms) ? ms_imsi(ms) : "");
 			tbf_fsm_state_chg(fi, TBF_ST_ASSIGN);
 			/* send immediate assignment */
-			if ((pgroup = imsi2paging_group(imsi)) > 999)
-				LOGPTBF(ctx->tbf, LOGL_ERROR, "IMSI to paging group failed! (%s)\n", imsi);
-			bts_snd_dl_ass(ms->bts, ctx->tbf, pgroup);
+			bts_snd_dl_ass(ms->bts, ctx->tbf);
 		}
 		break;
 	case TBF_EV_LAST_DL_DATA_SENT: