diff --git a/api-tests/CMakeLists.txt b/api-tests/CMakeLists.txt
index 40479fd..e0f1dbe 100644
--- a/api-tests/CMakeLists.txt
+++ b/api-tests/CMakeLists.txt
@@ -152,6 +152,17 @@
         1.0.1
         1.0.2
 )
+elseif("${SUITE}" STREQUAL "IPC")
+list(APPEND PSA_SPEC_VERSION
+        1.0
+        1.1
+)
+
+endif()
+
+#list of values available for connection based
+if(${SUITE} STREQUAL "IPC")
+list(APPEND PSA_STATELESS_ROT 0 1)
 endif()
 
 message(STATUS "[PSA] : ----------Process input arguments- start-------------")
@@ -272,7 +283,21 @@
                 if(${SPEC_VERSION} STREQUAL "1.0.2")
                         set(TESTSUITE_DB                        ${PSA_SUITE_DIR}/1.0.2_testsuite.db)
                 endif()
-        endif()
+        elseif(${SUITE} STREQUAL "IPC")
+                if(${SPEC_VERSION} STREQUAL "1.1")
+			if(DEFINED STATELESS_ROT_TESTS)
+				if(${STATELESS_ROT_TESTS} EQUAL 1)
+					set(TESTSUITE_DB                        ${PSA_SUITE_DIR}/stateless_rot_testsuite.db)
+				else()
+					set(TESTSUITE_DB                        ${PSA_SUITE_DIR}/testsuite.db)
+				endif()
+			else()
+                                        set(TESTSUITE_DB                        ${PSA_SUITE_DIR}/testsuite.db)
+			endif()
+		else()
+			set(TESTSUITE_DB                        ${PSA_SUITE_DIR}/testsuite.db)
+                endif()
+	endif()
 endif()
 set(PSA_TESTLIST_FILE			${CMAKE_CURRENT_BINARY_DIR}/${SUITE_LOWER}_testlist.txt)
 set(PSA_TEST_ENTRY_LIST_INC		${CMAKE_CURRENT_BINARY_DIR}/test_entry_list.inc)
@@ -419,6 +444,45 @@
 	endif()
 endif()
 
+if(DEFINED STATELESS_ROT_TESTS)
+	if(NOT ${STATELESS_ROT_TESTS} IN_LIST PSA_STATELESS_ROT)
+                 message(FATAL_ERROR "[PSA] : Error: Unsupported value for -DSTATELESS_ROT_TESTS=${STATELESS_ROT_TESTS}, supported values are : ${PSA_STATELESS_ROT}")
+        elseif(${STATELESS_ROT_TESTS} EQUAL 1)
+                 message(STATUS "[PSA] : Testing ${SUITE} for stateless rot")
+        elseif(${STATELESS_ROT_TESTS} EQUAL 0)
+                 message(STATUS "[PSA] : Testing ${SUITE} for connection based")
+        endif()
+
+	if(NOT DEFINED SPEC_VERSION)
+                message(FATAL_ERROR "[PSA] : Error: SPEC_VERSION is require for STATELESS_ROT_TESTS.")
+	elseif(${SUITE} STREQUAL "IPC")
+		if(${SPEC_VERSION} STREQUAL "1.0")
+			message(FATAL_ERROR "[PSA] : Error: STATELESS_ROT_TESTS is only valid for SPEC_VERSION=1.1.")
+		elseif(${SPEC_VERSION} STREQUAL "1.1")
+			add_definitions(-DSPEC_VERSION=11)
+			if(${STATELESS_ROT_TESTS} EQUAL 1)
+	                        add_definitions(-DSTATELESS_ROT=1)
+			elseif(${STATELESS_ROT_TESTS} EQUAL 0)
+	                        add_definitions(-DSTATELESS_ROT=0)
+			endif()
+		endif()
+	else()
+                message(FATAL_ERROR "[PSA] : Error: STATELESS_ROT_TESTS is only applicable to IPC Test Suite.")
+	endif()
+else()
+	add_definitions(-DSTATELESS_ROT=0)
+	if(DEFINED SPEC_VERSION)
+		if(${SUITE} STREQUAL "IPC")
+                	if(${SPEC_VERSION} STREQUAL "1.0")
+                        	add_definitions(-DSPEC_VERSION=10)
+	                endif()
+        	        if(${SPEC_VERSION} STREQUAL "1.1")
+        	                add_definitions(-DSPEC_VERSION=11)
+        	        endif()
+		endif()
+	endif()
+endif()
+
 message(STATUS "[PSA] : ----------Process input arguments- complete-------------")
 
 
