diff --git a/include/osmocom/bsc/bsc_msc_data.h b/include/osmocom/bsc/bsc_msc_data.h
index dc9628b..7db0625 100644
--- a/include/osmocom/bsc/bsc_msc_data.h
+++ b/include/osmocom/bsc/bsc_msc_data.h
@@ -58,6 +58,7 @@
 
 /* Constants for the MSC rate counters */
 enum {
+	/* Rx message counters */
 	MSC_CTR_BSSMAP_RX_UDT_RESET_ACKNOWLEDGE,
 	MSC_CTR_BSSMAP_RX_UDT_RESET,
 	MSC_CTR_BSSMAP_RX_UDT_PAGING,
@@ -71,6 +72,35 @@
 	MSC_CTR_BSSMAP_RX_DT1_UNKNOWN,
 	MSC_CTR_BSSMAP_RX_DTAP_MSG,
 	MSC_CTR_BSSMAP_RX_DTAP_ERROR,
+
+	/* Tx message counters (per connection type) */
+	MSC_CTR_BSSMAP_TX_BSS_MANAGEMENT,
+	MSC_CTR_BSSMAP_TX_DTAP,
+	MSC_CTR_BSSMAP_TX_UNKNOWN,
+	MSC_CTR_BSSMAP_TX_SHORT,
+	MSC_CTR_BSSMAP_TX_ERR_CONN_NOT_READY,
+	MSC_CTR_BSSMAP_TX_ERR_SEND,
+	MSC_CTR_BSSMAP_TX_SUCCESS,
+
+	/* Tx message counters (per message type) */
+	MSC_CTR_BSSMAP_TX_UDT_RESET,
+	MSC_CTR_BSSMAP_TX_UDT_RESET_ACK,
+	MSC_CTR_BSSMAP_TX_DT1_CLEAR_RQST,
+	MSC_CTR_BSSMAP_TX_DT1_CLEAR_COMPLETE,
+	MSC_CTR_BSSMAP_TX_DT1_ASSIGMENT_FAILURE,
+	MSC_CTR_BSSMAP_TX_DT1_ASSIGMENT_COMPLETE,
+	MSC_CTR_BSSMAP_TX_DT1_SAPI_N_REJECT,
+	MSC_CTR_BSSMAP_TX_DT1_CIPHER_COMPLETE,
+	MSC_CTR_BSSMAP_TX_DT1_CIPHER_REJECT,
+	MSC_CTR_BSSMAP_TX_DT1_CLASSMARK_UPDATE,
+	MSC_CTR_BSSMAP_TX_DT1_LCLS_CONNECT_CTRL_ACK,
+	MSC_CTR_BSSMAP_TX_DT1_HANDOVER_REQUIRED,
+	MSC_CTR_BSSMAP_TX_DT1_HANDOVER_PERFORMED,
+	MSC_CTR_BSSMAP_TX_DT1_HANDOVER_RQST_ACKNOWLEDGE,
+	MSC_CTR_BSSMAP_TX_DT1_HANDOVER_DETECT,
+	MSC_CTR_BSSMAP_TX_DT1_HANDOVER_COMPLETE,
+	MSC_CTR_BSSMAP_TX_DT1_HANDOVER_FAILURE,
+	MSC_CTR_BSSMAP_TX_DT1_DTAP,
 };
 
 /* Constants for the MSC stats */
diff --git a/src/osmo-bsc/assignment_fsm.c b/src/osmo-bsc/assignment_fsm.c
index 16e04cd..674dcbc 100644
--- a/src/osmo-bsc/assignment_fsm.c
+++ b/src/osmo-bsc/assignment_fsm.c
@@ -116,10 +116,12 @@
 {
 	struct msgb *resp = gsm0808_create_assignment_failure(conn->assignment.failure_cause, NULL);
 
-	if (!resp)
+	if (!resp) {
 		LOG_ASSIGNMENT(conn, LOGL_ERROR, "Unable to compose BSSMAP Assignment Failure message\n");
-	else
+	} else {
+		rate_ctr_inc(&conn->sccp.msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_DT1_ASSIGMENT_FAILURE]);
 		gscon_sigtran_send(conn, resp);
+	}
 
 	/* If assignment failed as early as in assignment_fsm_start(), there may not be an fi yet. */
 	if (conn->assignment.fi) {
@@ -206,6 +208,7 @@
 	    conn->assignment.req.use_osmux)
 		_gsm0808_ass_compl_extend_osmux(resp, osmux_cid);
 
+	rate_ctr_inc(&conn->sccp.msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_DT1_ASSIGMENT_COMPLETE]);
 	rc = gscon_sigtran_send(conn, resp);
 	if (rc) {
 		assignment_fail(GSM0808_CAUSE_EQUIPMENT_FAILURE,
diff --git a/src/osmo-bsc/bsc_subscr_conn_fsm.c b/src/osmo-bsc/bsc_subscr_conn_fsm.c
index 77d5d1a..0b475ff 100644
--- a/src/osmo-bsc/bsc_subscr_conn_fsm.c
+++ b/src/osmo-bsc/bsc_subscr_conn_fsm.c
@@ -143,6 +143,7 @@
 		LOGPFSML(conn->fi, LOGL_ERROR, "Unable to compose BSSMAP Clear Request message\n");
 		return;
 	}
+	rate_ctr_inc(&conn->sccp.msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_DT1_CLEAR_RQST]);
 	rc = osmo_bsc_sigtran_send(conn, resp);
 	if (rc < 0)
 		LOGPFSML(conn->fi, LOGL_ERROR, "Unable to deliver BSSMAP Clear Request message\n");
@@ -157,6 +158,7 @@
 	OSMO_ASSERT(conn);
 
 	resp = gsm0808_create_dtap(msg, OBSC_LINKID_CB(msg));
+	rate_ctr_inc(&conn->sccp.msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_DT1_DTAP]);
 	gscon_sigtran_send(conn, resp);
 }
 
@@ -761,6 +763,7 @@
 		/* Close MGCP connections */
 		osmo_mgcpc_ep_clear(conn->user_plane.mgw_endpoint);
 
+		rate_ctr_inc(&conn->sccp.msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_DT1_CLEAR_COMPLETE]);
 		gscon_sigtran_send(conn, gsm0808_create_clear_complete());
 		break;
 	case GSCON_EV_A_DISC_IND:
diff --git a/src/osmo-bsc/gsm_08_08.c b/src/osmo-bsc/gsm_08_08.c
index 3efc665..4f9c69e 100644
--- a/src/osmo-bsc/gsm_08_08.c
+++ b/src/osmo-bsc/gsm_08_08.c
@@ -133,6 +133,7 @@
 
 	LOGP(DMSC, LOGL_NOTICE, "Tx MSC SAPI N REJECT DLCI=0x%02x\n", dlci);
 	resp = gsm0808_create_sapi_reject(dlci);
+	rate_ctr_inc(&conn->sccp.msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_DT1_SAPI_N_REJECT]);
 	rc = osmo_fsm_inst_dispatch(conn->fi, GSCON_EV_TX_SCCP, resp);
 	if (rc != 0)
 		msgb_free(resp);
@@ -149,6 +150,7 @@
 
 	LOGP(DMSC, LOGL_DEBUG, "CIPHER MODE COMPLETE from MS, forwarding to MSC\n");
 	resp = gsm0808_create_cipher_complete(msg, chosen_encr);
+	rate_ctr_inc(&conn->sccp.msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_DT1_CIPHER_COMPLETE]);
 	rc = osmo_fsm_inst_dispatch(conn->fi, GSCON_EV_TX_SCCP, resp);
 	if (rc != 0)
 		msgb_free(resp);
@@ -712,6 +714,7 @@
 		return 1;
 	}
 
+	rate_ctr_inc(&conn->sccp.msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_DT1_CLEAR_RQST]);
 	rc = osmo_fsm_inst_dispatch(conn->fi, GSCON_EV_TX_SCCP, resp);
 	if (rc != 0)
 		msgb_free(resp);
@@ -742,6 +745,7 @@
 	if (!msc_connected(conn))
 		return;
 
+	rate_ctr_inc(&conn->sccp.msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_DT1_CLASSMARK_UPDATE]);
 	resp = gsm0808_create_classmark_update(cm2, cm2_len, cm3, cm3_len);
 	rc = osmo_fsm_inst_dispatch(conn->fi, GSCON_EV_TX_SCCP, resp);
 	if (rc != 0)
diff --git a/src/osmo-bsc/handover_fsm.c b/src/osmo-bsc/handover_fsm.c
index e36aaae..0b88b27 100644
--- a/src/osmo-bsc/handover_fsm.c
+++ b/src/osmo-bsc/handover_fsm.c
@@ -773,6 +773,7 @@
 		return;
 	}
 
+	rate_ctr_inc(&conn->sccp.msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_DT1_HANDOVER_PERFORMED]);
 	rc = gscon_sigtran_send(conn, msg);
 	if (rc < 0) {
 		LOG_HO(conn, LOGL_ERROR, "message sending failed, can't send HANDOVER PERFORMED!\n");
diff --git a/src/osmo-bsc/osmo_bsc_bssap.c b/src/osmo-bsc/osmo_bsc_bssap.c
index b92e39a..276657f 100644
--- a/src/osmo-bsc/osmo_bsc_bssap.c
+++ b/src/osmo-bsc/osmo_bsc_bssap.c
@@ -560,6 +560,7 @@
 		return -1;
 	}
 
+	rate_ctr_inc(&conn->sccp.msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_DT1_CIPHER_REJECT]);
 	osmo_fsm_inst_dispatch(conn->fi, GSCON_EV_TX_SCCP, resp);
 	return -1;
 }
@@ -640,6 +641,7 @@
 	LOGPFSM(conn->fi, "Tx LCLS CONNECT CTRL ACK (%s)\n",
 		gsm0808_lcls_status_name(lcls_get_status(conn)));
 	resp = gsm0808_create_lcls_conn_ctrl_ack(lcls_get_status(conn));
+	rate_ctr_inc(&conn->sccp.msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_DT1_LCLS_CONNECT_CTRL_ACK]);
 	osmo_fsm_inst_dispatch(conn->fi, GSCON_EV_TX_SCCP, resp);
 
 	return 0;
@@ -954,6 +956,7 @@
 	resp = gsm0808_create_assignment_failure(cause, NULL);
 	OSMO_ASSERT(resp);
 
+	rate_ctr_inc(&conn->sccp.msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_DT1_ASSIGMENT_FAILURE]);
 	osmo_fsm_inst_dispatch(conn->fi, GSCON_EV_TX_SCCP, resp);
 	return -1;
 }
@@ -1273,6 +1276,7 @@
 		return -EINVAL;
 	}
 
+	rate_ctr_inc(&lchan->conn->sccp.msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_DT1_HANDOVER_REQUIRED]);
 	rc = gscon_sigtran_send(lchan->conn, msg);
 	if (rc) {
 		LOG_HO(lchan->conn, LOGL_ERROR, "Cannot send BSSMAP Handover Required message\n");
@@ -1318,6 +1322,7 @@
 		params.aoip_transport_layer = &ss;
 	}
 
+	rate_ctr_inc(&conn->sccp.msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_DT1_HANDOVER_RQST_ACKNOWLEDGE]);
 	LOG_HO(conn, LOGL_DEBUG, "Sending BSSMAP Handover Request Acknowledge\n");
 	msg = gsm0808_create_handover_request_ack2(&params);
 	msgb_free(rr_ho_command);
@@ -1333,6 +1338,7 @@
 	if (!msg)
 		return -ENOMEM;
 
+	rate_ctr_inc(&conn->sccp.msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_DT1_HANDOVER_DETECT]);
 	return osmo_bsc_sigtran_send(conn, msg);
 }
 
@@ -1372,6 +1378,7 @@
 		return HO_RESULT_ERROR;
 	}
 
+	rate_ctr_inc(&conn->sccp.msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_DT1_HANDOVER_COMPLETE]);
 	rc = osmo_bsc_sigtran_send(conn, msg);
 	if (rc) {
 		LOG_HO(conn, LOGL_ERROR, "Cannot send BSSMAP Handover Complete message\n");
@@ -1393,6 +1400,7 @@
 		return;
 	}
 
+	rate_ctr_inc(&conn->sccp.msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_DT1_HANDOVER_FAILURE]);
 	rc = osmo_bsc_sigtran_send(conn, msg);
 	if (rc)
 		LOG_HO(conn, LOGL_ERROR, "Cannot send BSSMAP Handover Failure message (rc=%d %s)\n",
diff --git a/src/osmo-bsc/osmo_bsc_msc.c b/src/osmo-bsc/osmo_bsc_msc.c
index 544341b..0dbe9d4 100644
--- a/src/osmo-bsc/osmo_bsc_msc.c
+++ b/src/osmo-bsc/osmo_bsc_msc.c
@@ -44,6 +44,7 @@
 #include <unistd.h>
 
 static const struct rate_ctr_desc msc_ctr_description[] = {
+	/* Rx message counters */
 	[MSC_CTR_BSSMAP_RX_UDT_RESET_ACKNOWLEDGE] = {"bssmap:rx_udt_reset_acknowledge", "Number of received BSSMAP UDT RESET ACKNOWLEDGE messages"},
 	[MSC_CTR_BSSMAP_RX_UDT_RESET] = {"bssmap:rx_udt_reset", "Number of received BSSMAP UDT RESET messages"},
 	[MSC_CTR_BSSMAP_RX_UDT_PAGING] = {"bssmap:rx_udt_paging", "Number of received BSSMAP UDT PAGING messages"},
@@ -57,6 +58,46 @@
 	[MSC_CTR_BSSMAP_RX_DT1_UNKNOWN] = {"bssmap:rx_dt1_unknown", "Number of received BSSMAP unknown DT1 messages"},
 	[MSC_CTR_BSSMAP_RX_DTAP_MSG] = {"bssmap:rx_dtap_msg", "Number of received BSSMAP DTAP messages"},
 	[MSC_CTR_BSSMAP_RX_DTAP_ERROR] = {"bssmap:rx_dtap_error", "Number of received BSSMAP DTAP messages with errors"},
+
+	/* Tx message counters (per message type)
+	 *
+	 * The counters here follow the logic of the osmo_bsc_sigtran_send() function
+	 * which receives DT1 messages from the upper layers and actually sends them to the MSC.
+	 * These counters cover all messages passed to the function by the upper layers: */
+	[MSC_CTR_BSSMAP_TX_BSS_MANAGEMENT] =     {"bssmap:tx:type:bss_management", "Number of transmitted BSS MANAGEMENT messages"},
+	[MSC_CTR_BSSMAP_TX_DTAP] =               {"bssmap:tx:type:dtap", "Number of transmitted DTAP messages"},
+	[MSC_CTR_BSSMAP_TX_UNKNOWN] =            {"bssmap:tx:type:err_unknown", "Number of transmitted messages with unknown type (an error in our code?)"},
+	[MSC_CTR_BSSMAP_TX_SHORT] =              {"bssmap:tx:type:err_short", "Number of transmitted messages which are too short (an error in our code?)"},
+	/* The next counters are also counted in the osmo_bsc_sigtran_send() function and
+	 * sum up to the exactly same number as the counters above but instead of message
+	 * classes they split by the result of the sending attempt: */
+	[MSC_CTR_BSSMAP_TX_ERR_CONN_NOT_READY] = {"bssmap:tx:result:err_conn_not_ready", "Number of BSSMAP messages we tried to send when the connection was not ready yet"},
+	[MSC_CTR_BSSMAP_TX_ERR_SEND] =           {"bssmap:tx:result:err_send", "Number of socket errors while sending BSSMAP messages"},
+	[MSC_CTR_BSSMAP_TX_SUCCESS] =            {"bssmap:tx:result:success", "Number of successfully sent BSSMAP messages"},
+
+	/* Tx message counters (per specific message)
+	 *
+	 * Theoretically, the DT1 counters should sum up to the same number as the Tx counters
+	 * above but since these counters are coming from the upper layers, there might be
+	 * some difference if we forget some code path. */
+	[MSC_CTR_BSSMAP_TX_UDT_RESET] =                     {"bssmap:tx:udt:reset:request", "Number of transmitted BSSMAP UDT RESET messages"},
+	[MSC_CTR_BSSMAP_TX_UDT_RESET_ACK] =                 {"bssmap:tx:udt:reset:ack", "Number of transmitted BSSMAP UDT RESET ACK messages"},
+	[MSC_CTR_BSSMAP_TX_DT1_CLEAR_RQST] =                {"bssmap:tx:dt1:clear:rqst", "Number of transmitted BSSMAP DT1 CLEAR RQSTtx  messages"},
+	[MSC_CTR_BSSMAP_TX_DT1_CLEAR_COMPLETE] =            {"bssmap:tx:dt1:clear:complete", "Number of transmitted BSSMAP DT1 CLEAR COMPLETE messages"},
+	[MSC_CTR_BSSMAP_TX_DT1_ASSIGMENT_FAILURE] =         {"bssmap:tx:dt1:assigment:failure", "Number of transmitted BSSMAP DT1 ASSIGMENT FAILURE messages"},
+	[MSC_CTR_BSSMAP_TX_DT1_ASSIGMENT_COMPLETE] =        {"bssmap:tx:dt1:assigment:complete", "Number of transmitted BSSMAP DT1 ASSIGMENT COMPLETE messages"},
+	[MSC_CTR_BSSMAP_TX_DT1_SAPI_N_REJECT] =             {"bssmap:tx:dt1:sapi_n:reject", "Number of transmitted BSSMAP DT1 SAPI N REJECT messages"},
+	[MSC_CTR_BSSMAP_TX_DT1_CIPHER_COMPLETE] =           {"bssmap:tx:dt1:cipher_mode:complete", "Number of transmitted BSSMAP DT1 CIPHER COMPLETE messages"},
+	[MSC_CTR_BSSMAP_TX_DT1_CIPHER_REJECT] =             {"bssmap:tx:dt1:cipher_mode:reject", "Number of transmitted BSSMAP DT1 CIPHER REJECT messages"},
+	[MSC_CTR_BSSMAP_TX_DT1_CLASSMARK_UPDATE] =          {"bssmap:tx:dt1:classmark:update", "Number of transmitted BSSMAP DT1 CLASSMARK UPDATE messages"},
+	[MSC_CTR_BSSMAP_TX_DT1_LCLS_CONNECT_CTRL_ACK] =     {"bssmap:tx:dt1:lcls_connect_ctrl:ack", "Number of transmitted BSSMAP DT1 LCLS CONNECT CTRL ACK messages"},
+	[MSC_CTR_BSSMAP_TX_DT1_HANDOVER_REQUIRED] =         {"bssmap:tx:dt1:handover:required", "Number of transmitted BSSMAP DT1 HANDOVER REQUIRED messages"},
+	[MSC_CTR_BSSMAP_TX_DT1_HANDOVER_PERFORMED] =        {"bssmap:tx:dt1:handover:performed", "Number of transmitted BSSMAP DT1 HANDOVER PERFORMED messages"},
+	[MSC_CTR_BSSMAP_TX_DT1_HANDOVER_RQST_ACKNOWLEDGE] = {"bssmap:tx:dt1:handover:rqst_acknowledge", "Number of transmitted BSSMAP DT1 HANDOVER RQST ACKNOWLEDGE messages"},
+	[MSC_CTR_BSSMAP_TX_DT1_HANDOVER_DETECT] =           {"bssmap:tx:dt1:handover:detect", "Number of transmitted BSSMAP DT1 HANDOVER DETECT messages"},
+	[MSC_CTR_BSSMAP_TX_DT1_HANDOVER_COMPLETE] =         {"bssmap:tx:dt1:handover:complete", "Number of transmitted BSSMAP DT1 HANDOVER COMPLETE messages"},
+	[MSC_CTR_BSSMAP_TX_DT1_HANDOVER_FAILURE] =          {"bssmap:tx:dt1:handover:failure", "Number of transmitted BSSMAP DT1 HANDOVER FAILURE messages"},
+	[MSC_CTR_BSSMAP_TX_DT1_DTAP] =                      {"bssmap:tx:dt1:dtap", "Number of transmitted BSSMAP DT1 DTAP messages"},
 };
 
 static const struct rate_ctr_group_desc msc_ctrg_desc = {
diff --git a/src/osmo-bsc/osmo_bsc_sigtran.c b/src/osmo-bsc/osmo_bsc_sigtran.c
index e4530bf..3871682 100644
--- a/src/osmo-bsc/osmo_bsc_sigtran.c
+++ b/src/osmo-bsc/osmo_bsc_sigtran.c
@@ -105,6 +105,7 @@
 	if (msc_is_aoip(msc) && msc->use_osmux != OSMUX_USAGE_OFF)
 		_gsm0808_extend_announce_osmux(msg);
 
+	rate_ctr_inc(&msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_UDT_RESET]);
 	osmo_sccp_tx_unitdata_msg(msc->a.sccp_user, &msc->a.bsc_addr,
 				  &msc->a.msc_addr, msg);
 }
@@ -124,6 +125,7 @@
 	if (msc_is_aoip(msc) && msc->use_osmux != OSMUX_USAGE_OFF)
 		_gsm0808_extend_announce_osmux(msg);
 
+	rate_ctr_inc(&msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_UDT_RESET_ACK]);
 	osmo_sccp_tx_unitdata_msg(msc->a.sccp_user, &msc->a.bsc_addr,
 				  &msc->a.msc_addr, msg);
 }
@@ -383,20 +385,26 @@
 	if (msg->len >= 3) {
 		switch (msg->data[0]) {
 		case BSSAP_MSG_BSS_MANAGEMENT:
+			rate_ctr_inc(&msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_BSS_MANAGEMENT]);
 			LOGP(DMSC, LOGL_INFO, "Tx MSC: BSSMAP: %s\n",
 			     gsm0808_bssmap_name(msg->data[2]));
 			break;
 		case BSSAP_MSG_DTAP:
+			rate_ctr_inc(&msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_DTAP]);
 			LOGP(DMSC, LOGL_INFO, "Tx MSC: DTAP\n");
 			break;
 		default:
+			rate_ctr_inc(&msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_UNKNOWN]);
 			LOGP(DMSC, LOGL_ERROR, "Tx MSC: unknown message type: 0x%x\n",
 			     msg->data[0]);
 		}
-	} else
+	} else {
+		rate_ctr_inc(&msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_SHORT]);
 		LOGP(DMSC, LOGL_ERROR, "Tx MSC: message too short: %u\n", msg->len);
+	}
 
 	if (a_reset_conn_ready(msc) == false) {
+		rate_ctr_inc(&msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_ERR_CONN_NOT_READY]);
 		LOGP(DMSC, LOGL_ERROR, "MSC is not connected. Dropping.\n");
 		msgb_free(msg);
 		return -EINVAL;
@@ -410,6 +418,10 @@
 	     conn_id, osmo_sccp_addr_name(ss7, &msc->a.msc_addr), osmo_hexdump(msg->data, msg->len));
 
 	rc = osmo_sccp_tx_data_msg(msc->a.sccp_user, conn_id, msg);
+	if (rc >= 0)
+		rate_ctr_inc(&msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_SUCCESS]);
+	else
+		rate_ctr_inc(&msc->msc_ctrs->ctr[MSC_CTR_BSSMAP_TX_ERR_SEND]);
 
 	return rc;
 }
