diff --git a/openbsc/src/libmsc/gsm_04_08.c b/openbsc/src/libmsc/gsm_04_08.c
index c910d71..31392f3 100644
--- a/openbsc/src/libmsc/gsm_04_08.c
+++ b/openbsc/src/libmsc/gsm_04_08.c
@@ -295,7 +295,7 @@
 	}
 }
 
-static void release_loc_updating_req(struct gsm_subscriber_connection *conn, int release)
+static void _release_loc_updating_req(struct gsm_subscriber_connection *conn, int release)
 {
 	if (!conn->loc_operation)
 		return;
@@ -310,11 +310,31 @@
 		msc_release_connection(conn);
 }
 
+static void loc_updating_failure(struct gsm_subscriber_connection *conn, int release)
+{
+	if (!conn->loc_operation)
+		return;
+	LOGP(DMM, LOGL_ERROR, "Location Updating failed for %s\n",
+	     subscr_name(conn->subscr));
+	rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_FAILED]);
+	_release_loc_updating_req(conn, release);
+}
+
+static void loc_updating_success(struct gsm_subscriber_connection *conn, int release)
+{
+	if (!conn->loc_operation)
+		return;
+	LOGP(DMM, LOGL_INFO, "Location Updating completed for %s\n",
+	     subscr_name(conn->subscr));
+	rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_COMPLETED]);
+	_release_loc_updating_req(conn, release);
+}
+
 static void allocate_loc_updating_req(struct gsm_subscriber_connection *conn)
 {
 	if (conn->loc_operation)
 		LOGP(DMM, LOGL_ERROR, "Connection already had operation.\n");
-	release_loc_updating_req(conn, 0);
+	loc_updating_failure(conn, 0);
 
 	conn->loc_operation = talloc_zero(tall_locop_ctx,
 					   struct gsm_loc_updating_operation);
@@ -349,9 +369,11 @@
 	 * The gsm0408_loc_upd_acc sends a MI with the TMSI. The
 	 * MS needs to respond with a TMSI REALLOCATION COMPLETE
 	 * (even if the TMSI is the same).
+	 * If avoid_tmsi == true, we don't send a TMSI, we don't
+	 * expect a reply and Location Updating is done.
 	 */
 	if (avoid_tmsi)
-		release_loc_updating_req(conn, 1);
+		loc_updating_success(conn, 1);
 
 	return rc;
 }
@@ -364,7 +386,7 @@
 
 	switch (event) {
 		case GSM_SECURITY_AUTH_FAILED:
-			release_loc_updating_req(conn, 1);
+			loc_updating_failure(conn, 1);
 			break;
 
 		case GSM_SECURITY_ALREADY:
@@ -407,7 +429,7 @@
 	 * Cancel any outstanding location updating request
 	 * operation taking place on the subscriber connection.
 	 */
-	release_loc_updating_req(conn, 0);
+	loc_updating_failure(conn, 0);
 
 	/* We might need to cancel the paging response or such. */
 	if (conn->sec_operation && conn->sec_operation->cb) {
@@ -459,8 +481,6 @@
 	struct gsm_bts *bts = conn->bts;
 	struct msgb *msg;
 
-	rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_RESP_REJECT]);
-
 	msg = gsm48_create_loc_upd_rej(cause);
 	if (!msg) {
 		LOGP(DMM, LOGL_ERROR, "Failed to create msg for LOCATION UPDATING REJECT.\n");
@@ -508,8 +528,6 @@
 
 	DEBUGP(DMM, "-> LOCATION UPDATE ACCEPT\n");
 
-	rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_RESP_ACCEPT]);
-
 	return gsm48_conn_sendmsg(msg, conn, NULL);
 }
 
@@ -566,7 +584,7 @@
 		}
 		if (!conn->subscr && conn->loc_operation) {
 			gsm0408_loc_upd_rej(conn, net->reject_cause);
-			release_loc_updating_req(conn, 1);
+			loc_updating_failure(conn, 1);
 			return 0;
 		}
 		if (conn->loc_operation)
@@ -595,7 +613,7 @@
 
 	LOGP(DMM, LOGL_DEBUG, "Location Updating Request procedure timedout.\n");
 	gsm0408_loc_upd_rej(conn, conn->network->reject_cause);
-	release_loc_updating_req(conn, 1);
+	loc_updating_failure(conn, 1);
 }
 
 static void schedule_reject(struct gsm_subscriber_connection *conn)
@@ -672,7 +690,7 @@
 			subscr = subscr_create(conn->network, mi_string);
 		if (!subscr) {
 			gsm0408_loc_upd_rej(conn, conn->network->reject_cause);
-			release_loc_updating_req(conn, 0);
+			loc_updating_failure(conn, 0); /* FIXME: set release == true? */
 			return 0;
 		}
 		break;
@@ -1401,7 +1419,7 @@
 	case GSM48_MT_MM_TMSI_REALL_COMPL:
 		DEBUGP(DMM, "TMSI Reallocation Completed. Subscriber: %s\n",
 		       subscr_name(conn->subscr));
-		release_loc_updating_req(conn, 1);
+		loc_updating_success(conn, 1);
 		break;
 	case GSM48_MT_MM_IMSI_DETACH_IND:
 		rc = gsm48_rx_mm_imsi_detach_ind(conn, msg);
