edge: Call update_window even if FINAL_ACK_INDICATION is set

The bitvec RBB is always valid, even when FINAL_ACK_INDICATION is
set. This is done by the ack/nack decoder function which fake a
bitmap starting with V(A) up to V(S)-1 in that case (see
Decoding::handle_final_ack).

Call gprs_rlcmac_dl_tbf::update_window unconditionally and only use
is_final for logging and TBF state changes in
gprs_rlcmac_dl_tbf::rcvd_dl_ack.

Sponsored-by: On-Waves ehf
diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp
index 80ea741..1827469 100644
--- a/src/tbf_dl.cpp
+++ b/src/tbf_dl.cpp
@@ -782,12 +782,6 @@
 		"X=Resend-Unacked I=Invalid\n",
 		m_window.v_a(), show_v_b,
 		m_window.v_s_mod(-1));
-
-	if (state_is(GPRS_RLCMAC_FINISHED) && m_window.window_empty()) {
-		LOGP(DRLCMACDL, LOGL_NOTICE, "Received acknowledge of "
-			"all blocks, but without final ack "
-			"inidcation (don't worry)\n");
-	}
 	return 0;
 }
 
@@ -901,13 +895,21 @@
 int gprs_rlcmac_dl_tbf::rcvd_dl_ack(uint8_t final_ack, unsigned first_bsn,
 	struct bitvec *rbb)
 {
+	int rc;
 	LOGP(DRLCMACDL, LOGL_DEBUG, "%s downlink acknowledge\n", tbf_name(this));
 
-	if (!final_ack)
-		return update_window(first_bsn, rbb);
+	rc = update_window(first_bsn, rbb);
 
-	LOGP(DRLCMACDL, LOGL_DEBUG, "- Final ACK received.\n");
-	return maybe_start_new_window();
+	if (final_ack) {
+		LOGP(DRLCMACDL, LOGL_DEBUG, "- Final ACK received.\n");
+		rc = maybe_start_new_window();
+	} else if (state_is(GPRS_RLCMAC_FINISHED) && m_window.window_empty()) {
+		LOGP(DRLCMACDL, LOGL_NOTICE, "Received acknowledge of "
+			"all blocks, but without final ack "
+			"indication (don't worry)\n");
+	}
+
+	return rc;
 }
 
 int gprs_rlcmac_dl_tbf::rcvd_dl_ack(uint8_t final_ack, uint8_t ssn, uint8_t *rbb)