diff --git a/core/mac/inc/sir_api.h b/core/mac/inc/sir_api.h
index 422bb35..7e42d23 100644
--- a/core/mac/inc/sir_api.h
+++ b/core/mac/inc/sir_api.h
@@ -705,7 +705,7 @@
 /* / Definition for response message to previously */
 /* / issued start BSS request */
 /* / MAC ---> */
-typedef struct sSirSmeStartBssRsp {
+struct start_bss_rsp {
 	uint16_t messageType;   /* eWNI_SME_START_BSS_RSP */
 	uint16_t length;
 	uint8_t sessionId;
@@ -718,7 +718,7 @@
 	struct ht_profile ht_profile;
 #endif
 	tSirBssDescription bssDescription;      /* Peer BSS description */
-} tSirSmeStartBssRsp, *tpSirSmeStartBssRsp;
+};
 
 typedef struct sSirChannelList {
 	uint8_t numChannels;
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 14726fa..afe0cfb 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
@@ -562,14 +562,14 @@
 
 	uint16_t size = 0;
 	struct scheduler_msg mmhMsg = {0};
-	tSirSmeStartBssRsp *pSirSmeRsp;
+	struct start_bss_rsp *pSirSmeRsp;
 	uint16_t ieLen;
 	uint16_t ieOffset, curLen;
 
 	pe_debug("Sending message: %s with reasonCode: %s",
 		       lim_msg_str(msgType), lim_result_code_str(resultCode));
 
-	size = sizeof(tSirSmeStartBssRsp);
+	size = sizeof(struct start_bss_rsp);
 
 	if (pe_session == NULL) {
 		pSirSmeRsp = qdf_mem_malloc(size);
@@ -586,7 +586,7 @@
 		pSirSmeRsp = qdf_mem_malloc(size);
 		if (!pSirSmeRsp)
 			return;
-		size = sizeof(tSirSmeStartBssRsp);
+		size = sizeof(struct start_bss_rsp);
 		if (resultCode == eSIR_SME_SUCCESS) {
 
 			sir_copy_mac_addr(pSirSmeRsp->bssDescription.bssId,
diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c
index 316f3ea..4d0d674 100644
--- a/core/sme/src/csr/csr_api_roam.c
+++ b/core/sme/src/csr/csr_api_roam.c
@@ -6355,7 +6355,7 @@
 	struct csr_roam_session *session;
 	tSirBssDescription *bss_desc = NULL;
 	struct csr_roam_info roam_info;
-	tSirSmeStartBssRsp *start_bss_rsp = NULL;
+	struct start_bss_rsp *start_bss_rsp = NULL;
 	eRoamCmdStatus roam_status;
 	eCsrRoamResult roam_result;
 	tDot11fBeaconIEs *ies_ptr = NULL;
@@ -6384,7 +6384,7 @@
 	 */
 	sme_debug("receives start BSS ok indication");
 	status = QDF_STATUS_E_FAILURE;
-	start_bss_rsp = (tSirSmeStartBssRsp *) context;
+	start_bss_rsp = (struct start_bss_rsp *) context;
 	qdf_mem_zero(&roam_info, sizeof(struct csr_roam_info));
 	if (CSR_IS_IBSS(profile))
 		session->connectState = eCSR_ASSOC_STATE_TYPE_IBSS_DISCONNECTED;
@@ -7135,7 +7135,7 @@
 	eRoamCmdStatus roam_status;
 	eCsrRoamResult roam_result;
 	host_log_ibss_pkt_type *ibss_log;
-	tSirSmeStartBssRsp  *start_bss_rsp = NULL;
+	struct start_bss_rsp  *start_bss_rsp = NULL;
 
 	if (!session) {
 		sme_err("session %d not found ", session_id);
@@ -7161,7 +7161,7 @@
 		}
 #endif
 		ibss_log = NULL;
-		start_bss_rsp = (tSirSmeStartBssRsp *)context;
+		start_bss_rsp = (struct start_bss_rsp *)context;
 		qdf_mem_zero(&roam_info, sizeof(roam_info));
 		roam_status = eCSR_ROAM_IBSS_IND;
 		roam_result = eCSR_ROAM_RESULT_IBSS_STARTED;
@@ -9405,9 +9405,9 @@
 	}
 }
 
-static void csr_roam_roaming_state_start_bss_rsp_processor(struct mac_context *mac,
-							   tSirSmeStartBssRsp *
-							   pSmeStartBssRsp)
+static void
+csr_roam_roaming_state_start_bss_rsp_processor(struct mac_context *mac,
+					struct start_bss_rsp *pSmeStartBssRsp)
 {
 	enum csr_roamcomplete_result result;
 
@@ -9504,7 +9504,7 @@
 		if (CSR_IS_ROAM_SUBSTATE_START_BSS_REQ(mac,
 						       pSmeRsp->sessionId))
 			csr_roam_roaming_state_start_bss_rsp_processor(mac,
-						(tSirSmeStartBssRsp *) pSmeRsp);
+					(struct start_bss_rsp *)pSmeRsp);
 		break;
 	/* In case CSR issues STOP_BSS, we need to tell HDD about peer departed
 	 * because PE is removing them
diff --git a/core/sme/src/nan/nan_datapath_api.c b/core/sme/src/nan/nan_datapath_api.c
index 9312549..28042f1 100644
--- a/core/sme/src/nan/nan_datapath_api.c
+++ b/core/sme/src/nan/nan_datapath_api.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2016-2019 The Linux Foundation. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
@@ -69,7 +69,7 @@
  * @mac_ctx: Global MAC context
  * @session_id: Session ID
  * @roam_profile: Profile given for starting BSS
- * @bssdesc: BSS description from tSirSmeStartBssRsp response
+ * @bssdesc: BSS description from start BSS response
  *
  * Saves NDI profile parameters into session's connected profile.
  *
