diff --git a/core/mac/inc/sir_api.h b/core/mac/inc/sir_api.h
index 870d58b..68a947b 100644
--- a/core/mac/inc/sir_api.h
+++ b/core/mac/inc/sir_api.h
@@ -1615,7 +1615,6 @@
 	uint16_t messageType;   /* eWNI_SME_ADDTS_RSP */
 	uint16_t length;
 	uint8_t sessionId;      /* sme sessionId  Added for BT-AMP support */
-	uint16_t transactionId; /* sme transaction Id - for BT-AMP Support */
 	uint32_t rc;            /* return code */
 	tSirAddtsRspInfo rsp;
 } tSirAddtsRsp, *tpSirAddtsRsp;
diff --git a/core/mac/src/pe/lim/lim_admit_control.c b/core/mac/src/pe/lim/lim_admit_control.c
index 223f202..8600a48 100644
--- a/core/mac/src/pe/lim/lim_admit_control.c
+++ b/core/mac/src/pe/lim/lim_admit_control.c
@@ -976,8 +976,7 @@
 			       pAddTsRspMsg->sessionId);
 		lim_send_sme_addts_rsp(mac, rspReqd, eSIR_SME_ADDTS_RSP_FAILED,
 				       pe_session, pAddTsRspMsg->tspec,
-				       mac->lim.gLimAddtsReq.sessionId,
-				       mac->lim.gLimAddtsReq.transactionId);
+				       mac->lim.gLimAddtsReq.sessionId);
 		goto end;
 	}
 
@@ -986,8 +985,7 @@
 		/* Use the smesessionId and smetransactionId from the PE session context */
 		lim_send_sme_addts_rsp(mac, rspReqd, eSIR_SME_SUCCESS,
 				       pe_session, pAddTsRspMsg->tspec,
-				       pe_session->smeSessionId,
-				       pe_session->transactionId);
+				       pe_session->smeSessionId);
 		goto end;
 	} else {
 		pe_debug("Received failure ADDTS response from HAL");
@@ -1015,8 +1013,7 @@
 		/* 090803: Use the smesessionId and smetransactionId from the PE session context */
 		lim_send_sme_addts_rsp(mac, rspReqd, eSIR_SME_ADDTS_RSP_FAILED,
 				       pe_session, pAddTsRspMsg->tspec,
-				       pe_session->smeSessionId,
-				       pe_session->transactionId);
+				       pe_session->smeSessionId);
 		goto end;
 	}
 
diff --git a/core/mac/src/pe/lim/lim_process_action_frame.c b/core/mac/src/pe/lim/lim_process_action_frame.c
index c3516df..b1d453e 100644
--- a/core/mac/src/pe/lim/lim_process_action_frame.c
+++ b/core/mac/src/pe/lim/lim_process_action_frame.c
@@ -745,8 +745,7 @@
 			addts.tspec.tsinfo.traffic.tsid,
 			addts.tspec.tsinfo.traffic.userPrio, addts.status);
 		lim_send_sme_addts_rsp(mac_ctx, true, addts.status, session,
-				       addts.tspec, session->smeSessionId,
-				       session->transactionId);
+				       addts.tspec, session->smeSessionId);
 
 		/* clear the addts flag */
 		mac_ctx->lim.gLimAddtsSent = false;
@@ -856,8 +855,7 @@
 					&addts.tspec, session);
 			lim_send_sme_addts_rsp(mac_ctx, true, retval,
 					session, addts.tspec,
-					session->smeSessionId,
-					session->transactionId);
+					session->smeSessionId);
 			mac_ctx->lim.gLimAddtsSent = false;
 			return;
 		}
@@ -869,13 +867,9 @@
 			addts.tspec.tsinfo.traffic.userPrio,
 			addts.tspec.tsinfo.traffic.tsid);
 		pe_debug("no ACM: Bypass sending WMA_ADD_TS_REQ to HAL");
-		/*
-		 * Use the smesessionId and smetransactionId from the PE
-		 * session context
-		 */
 		lim_send_sme_addts_rsp(mac_ctx, true, eSIR_SME_SUCCESS,
-			session, addts.tspec, session->smeSessionId,
-			session->transactionId);
+				       session, addts.tspec,
+				       session->smeSessionId);
 	}
 	/* clear the addts flag */
 	mac_ctx->lim.gLimAddtsSent = false;
diff --git a/core/mac/src/pe/lim/lim_process_sme_req_messages.c b/core/mac/src/pe/lim/lim_process_sme_req_messages.c
index a73e1cf..d361925 100644
--- a/core/mac/src/pe/lim/lim_process_sme_req_messages.c
+++ b/core/mac/src/pe/lim/lim_process_sme_req_messages.c
@@ -3177,9 +3177,10 @@
 						 &sessionId);
 	if (pe_session == NULL) {
 		pe_err("Session Does not exist for given bssId");
-		lim_send_sme_addts_rsp(mac, pSirAddts->rspReqd, QDF_STATUS_E_FAILURE,
+		lim_send_sme_addts_rsp(mac, pSirAddts->rspReqd,
+				       QDF_STATUS_E_FAILURE,
 				       NULL, pSirAddts->req.tspec,
-				       smesessionId, smetransactionId);
+				       smesessionId);
 		return;
 	}
 #ifdef FEATURE_WLAN_DIAG_SUPPORT_LIM    /* FEATURE_WLAN_DIAG_SUPPORT */
@@ -3296,7 +3297,7 @@
 send_failure_addts_rsp:
 	lim_send_sme_addts_rsp(mac, pSirAddts->rspReqd, QDF_STATUS_E_FAILURE,
 			       pe_session, pSirAddts->req.tspec,
-			       smesessionId, smetransactionId);
+			       smesessionId);
 }
 
 static void __lim_process_sme_delts_req(struct mac_context *mac, uint32_t *pMsgBuf)
@@ -3440,8 +3441,7 @@
 
 	lim_send_sme_addts_rsp(mac, true, eSIR_SME_ADDTS_RSP_TIMEOUT,
 			       pe_session, mac->lim.gLimAddtsReq.req.tspec,
-			       pe_session->smeSessionId,
-			       pe_session->transactionId);
+			       pe_session->smeSessionId);
 }
 
 #ifndef QCA_SUPPORT_CP_STATS
diff --git a/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c b/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c
index c1e3537..b3aab14 100644
--- a/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c
+++ b/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c
@@ -1263,21 +1263,11 @@
 	mac->lim.sme_msg_callback(mac, &mmhMsg);
 } /*** end lim_send_sme_set_context_rsp() ***/
 
-/** -----------------------------------------------------------------
-   \brief lim_send_sme_addts_rsp() - sends SME ADDTS RSP
- \      This function sends a eWNI_SME_ADDTS_RSP to SME.
- \      SME only looks at rc and tspec field.
-   \param mac - global mac structure
-   \param rspReqd - is SmeAddTsRsp required
-   \param status - status code of SME_ADD_TS_RSP
-   \return tspec
-   \sa
-   ----------------------------------------------------------------- */
-void
-lim_send_sme_addts_rsp(struct mac_context *mac, uint8_t rspReqd,
-		       uint32_t status,
-		       struct pe_session *pe_session, struct mac_tspec_ie tspec,
-		       uint8_t smesessionId, uint16_t smetransactionId)
+void lim_send_sme_addts_rsp(struct mac_context *mac,
+			    uint8_t rspReqd, uint32_t status,
+			    struct pe_session *pe_session,
+			    struct mac_tspec_ie tspec,
+			    uint8_t smesessionId)
 {
 	tpSirAddtsRsp rsp;
 	struct scheduler_msg mmhMsg = {0};
@@ -1293,9 +1283,7 @@
 	rsp->rc = status;
 	rsp->rsp.status = (enum eSirMacStatusCodes)status;
 	rsp->rsp.tspec = tspec;
-	/* Update SME session Id and transcation Id */
 	rsp->sessionId = smesessionId;
-	rsp->transactionId = smetransactionId;
 
 	mmhMsg.type = eWNI_SME_ADDTS_RSP;
 	mmhMsg.bodyptr = rsp;
diff --git a/core/mac/src/pe/lim/lim_send_sme_rsp_messages.h b/core/mac/src/pe/lim/lim_send_sme_rsp_messages.h
index 75e2881..f0491bb 100644
--- a/core/mac/src/pe/lim/lim_send_sme_rsp_messages.h
+++ b/core/mac/src/pe/lim/lim_send_sme_rsp_messages.h
@@ -154,11 +154,25 @@
 lim_send_sme_aggr_qos_rsp(struct mac_context *mac, tpSirAggrQosRsp aggrQosRsp,
 			  uint8_t smesessionId);
 
+/**
+ * lim_send_sme_addts_rsp() - sends SME ADDTS RSP
+ * @mac: global mac structure
+ * @rspReqd: is SmeAddTsRsp required
+ * @status: status code of SME_ADD_TS_RSP
+ * @pe_session: The PE session associated with the connection
+ * @tspec: The TSpec that was added
+ * @smesessionId: ID of the SME session associated with the connection
+ *
+ * This function sends a eWNI_SME_ADDTS_RSP to upper layer
+ *
+ * Return: None
+ */
 void lim_send_sme_addts_rsp(struct mac_context *mac,
 			    uint8_t rspReqd, uint32_t status,
 			    struct pe_session *pe_session,
 			    struct mac_tspec_ie tspec,
-			    uint8_t smesessionId, uint16_t smetransactionId);
+			    uint8_t smesessionId);
+
 void lim_send_sme_delts_rsp(struct mac_context *mac, tpSirDeltsReq delts,
 			    uint32_t status, struct pe_session *pe_session,
 			    uint8_t smesessionId, uint16_t smetransactionId);
