diff --git a/radio/1.6/IRadio.hal b/radio/1.6/IRadio.hal
index e2d35d0..a4e8811 100644
--- a/radio/1.6/IRadio.hal
+++ b/radio/1.6/IRadio.hal
@@ -145,6 +145,7 @@
      *
      * Response function is IRadioResponse.setupDataCallResponse_1_6()
      *
+     * Note this API is the same as the 1.5
      */
     oneway setupDataCall_1_6(int32_t serial, AccessNetwork accessNetwork,
             DataProfileInfo dataProfileInfo, bool roamingAllowed,
@@ -176,7 +177,7 @@
      * @param serial Serial number of request.
      * @param message GsmSmsMessage as defined in types.hal
      *
-     * Response function is IRadioResponse.sendSmsExpectMoreResponse_1_6()
+     * Response function is IRadioResponse.sendSMSExpectMoreResponse_1_6()
      *
      * Note this API is the same as the 1.0
      *
@@ -184,7 +185,7 @@
      * fails. RadioError:SMS_SEND_FAIL_RETRY means retry (i.e. error cause is 332)
      * and RadioError:GENERIC_FAILURE means no retry (i.e. error cause is 500)
      */
-    oneway sendSmsExpectMore_1_6(int32_t serial, GsmSmsMessage message);
+    oneway sendSMSExpectMore_1_6(int32_t serial, GsmSmsMessage message);
 
     /**
      * Send a CDMA SMS message
@@ -266,7 +267,7 @@
      * 2. Disable NR dual connectivity {NrDualConnectivityState:DISABLE}
      * 3. Disable NR dual connectivity and force secondary cell to be released
      * {NrDualConnectivityState:DISABLE_IMMEDIATE}
-     *
+
      * Response callback is IRadioResponse.setNRDualConnectivityStateResponse()
      */
     oneway setNrDualConnectivityState(int32_t serial,
@@ -371,7 +372,7 @@
      *
      * Response callback is IRadioResponse.getAllowedNetworkTypesBitmapResponse()
      */
-    oneway getAllowedNetworkTypesBitmap(int32_t serial);
+    oneway getAllowedNetworkTypesBitmap(uint32_t serial);
 
     /**
      * Control data throttling at modem.
diff --git a/radio/1.6/IRadioResponse.hal b/radio/1.6/IRadioResponse.hal
index d8614f7..33fe94f 100644
--- a/radio/1.6/IRadioResponse.hal
+++ b/radio/1.6/IRadioResponse.hal
@@ -139,7 +139,7 @@
      *   RadioError:ACCESS_BARRED
      *   RadioError:BLOCKED_DUE_TO_CALL
      */
-    oneway sendSmsExpectMoreResponse_1_6(RadioResponseInfo info, SendSmsResult sms);
+    oneway sendSMSExpectMoreResponse_1_6(RadioResponseInfo info, SendSmsResult sms);
 
     /**
      * @param info Response info struct containing response type, serial no. and error
diff --git a/radio/1.6/types.hal b/radio/1.6/types.hal
index d843fd8..3fd31cc 100644
--- a/radio/1.6/types.hal
+++ b/radio/1.6/types.hal
@@ -55,9 +55,9 @@
 
 struct QosBandwidth {
     /** Maximum bit rate possible on the bearer */
-    uint32_t maxBitrateKbps;
+    int32_t maxBitrateKbps;
     /** Minimum bit rate that is guaranteed to be provided by the network */
-    uint32_t guaranteedBitrateKbps;
+    int32_t guaranteedBitrateKbps;
 };
 
 /** LTE/EPS Quality of Service parameters as per 3gpp spec 24.301 sec 9.9.4.3. */
@@ -106,7 +106,7 @@
 /**
  * Next header protocol numbers defined by IANA, RFC 5237
  */
-enum QosProtocol : int8_t {
+enum QosProtocol : int32_t {
     /** No protocol specified */
     UNSPECIFIED = -1,
     /** Transmission Control Protocol */
@@ -119,14 +119,14 @@
     AH = 51,
 };
 
-enum QosFilterDirection : int8_t {
+enum QosFilterDirection : int32_t {
     DOWNLINK = 0,
     UPLINK = 1,
     BIDIRECTIONAL = 2,
 };
 
 /** Allowed port numbers */
-enum QosPortRange : uint16_t {
+enum QosPortRange : int32_t {
     MIN = 20,
     MAX = 65535
 };
@@ -248,7 +248,7 @@
 };
 
 /** The allowed failure modes on an IWLAN handover failure. */
-enum HandoverFailureMode : int8_t {
+enum HandoverFailureMode : int32_t {
     /**
      * On data handover failure, fallback to the source data transport when the
      * fail cause is due to a hand off preference change.
@@ -379,7 +379,7 @@
 /**
  * NR Dual connectivity state
  */
-enum NrDualConnectivityState: int8_t {
+enum NrDualConnectivityState: int32_t {
     /**
      * Enable NR dual connectivity. Enabled state does not mean dual connectivity
      * is active. It means device is allowed to connect to both primary and secondary.
@@ -443,7 +443,7 @@
    uint32_t secondaryUplinkCapacityKbps;
 };
 
-enum DataThrottlingAction : int8_t {
+enum DataThrottlingAction : int32_t {
     /* Clear all existing data throttling. */
     NO_DATA_THROTTLING = 0,
 
@@ -581,9 +581,9 @@
      *
      * Reference: 3GPP TS 138.214 section 5.2.2.1.
      *
-     * Range [0, 15], 0xFF means invalid/unreported.
+     * Range [0, 15], INT_MAX means invalid/unreported.
      */
-    vec<uint8_t> csiCqiReport;
+    vec<uint32_t> csiCqiReport;
 };
 
 /**
@@ -740,19 +740,22 @@
 
         EutranRegistrationInfo eutranInfo;
 
-        /**
-         * Network capabilities for voice over PS services. This info is valid only on NR
-         * network and must be present when the device is camped on NR. VopsInfo must be
-         * empty when the device is not camped on NR.
-         */
-        NrVopsInfo ngranNrVopsInfo;
+        struct NgranRegistrationInfo {
+            /**
+             * Network capabilities for voice over PS services. This info is valid only on NR
+             * network and must be present when the device is camped on NR. VopsInfo must be
+             * empty when the device is not camped on NR.
+             */
+            NrVopsInfo nrVopsInfo;
+        } ngranInfo;
 
-        /**
-         * True if the dual transfer mode is supported.
-         * Refer to 3GPP TS 44.108 section 3.4.25.3
-         */
-        bool geranDtmSupported;
-
+        struct GeranRegistrationInfo {
+            /**
+             * True if the dual transfer mode is supported.
+             * Refer to 3GPP TS 44.108 section 3.4.25.3
+             */
+            bool dtmSupported;
+        } geranInfo;
     } accessTechnologySpecificInfo;
 };
 
@@ -871,10 +874,10 @@
     int32_t uplinkChannelNumber;
 
     /** Downlink cell bandwidth, in kHz */
-    int32_t cellBandwidthDownlinkKhz;
+    int32_t cellBandwidthDownlink;
 
     /** Uplink cell bandwidth, in kHz */
-    int32_t cellBandwidthUplinkKhz;
+    int32_t cellBandwidthUplink;
 
     /**
      * A list of data calls mapped to this physical channel. The context id must match the cid of
@@ -1056,7 +1059,7 @@
     SscMode value;
 };
 
-enum SliceStatus : int8_t {
+enum SliceStatus : int32_t {
     UNKNOWN,
     CONFIGURED, // Configured but not allowed or rejected yet
     ALLOWED,    // Allowed to be used
@@ -1069,7 +1072,7 @@
  * Enum representing session and service continuity mode as defined in
  * 3GPP TS 23.501.
  */
-enum SscMode : int8_t {
+enum SscMode : int32_t {
     MODE_1 = 1,
     MODE_2 = 2,
     MODE_3 = 3,
@@ -1078,7 +1081,7 @@
 /**
  * Public key type from carrier certificate.
  */
-enum PublicKeyType : int8_t {
+enum PublicKeyType : int32_t {
     EPDG    = 1,                   // Key type to be used for ePDG
     WLAN    = 2,                   // Key type to be used for WLAN
 };
@@ -1187,7 +1190,7 @@
  *   chunk of phonebook data, means this is a last indication with the left
  *   data.
  */
-enum PbReceivedStatus : int8_t {
+enum PbReceivedStatus : int32_t {
     PB_RECEIVED_OK = 1,
     PB_RECEIVED_ERROR = 2,
     PB_RECEIVED_ABORT = 3,
diff --git a/radio/1.6/vts/functional/radio_hidl_hal_api.cpp b/radio/1.6/vts/functional/radio_hidl_hal_api.cpp
index be2be76..6cf4567 100644
--- a/radio/1.6/vts/functional/radio_hidl_hal_api.cpp
+++ b/radio/1.6/vts/functional/radio_hidl_hal_api.cpp
@@ -213,10 +213,10 @@
 }
 
 /*
- * Test IRadio_1_6.sendSmsExpectMore() for the response returned.
+ * Test IRadio_1_6.sendSMSExpectMore() for the response returned.
  */
-TEST_P(RadioHidlTest_v1_6, sendSmsExpectMore_1_6) {
-    LOG(DEBUG) << "sendSmsExpectMore";
+TEST_P(RadioHidlTest_v1_6, sendSMSExpectMore_1_6) {
+    LOG(DEBUG) << "sendSMSExpectMore";
     serial = GetRandomSerialNumber();
     GsmSmsMessage msg;
     msg.smscPdu = "";
@@ -236,7 +236,7 @@
              ::android::hardware::radio::V1_6::RadioError::SIM_ABSENT},
             CHECK_GENERAL_ERROR));
     }
-    LOG(DEBUG) << "sendSmsExpectMore finished";
+    LOG(DEBUG) << "sendSMSExpectMore finished";
 }
 
 /*
diff --git a/radio/1.6/vts/functional/radio_hidl_hal_utils_v1_6.h b/radio/1.6/vts/functional/radio_hidl_hal_utils_v1_6.h
index 0689e9b..4fc17e5 100644
--- a/radio/1.6/vts/functional/radio_hidl_hal_utils_v1_6.h
+++ b/radio/1.6/vts/functional/radio_hidl_hal_utils_v1_6.h
@@ -762,7 +762,7 @@
             const ::android::hardware::radio::V1_6::RadioResponseInfo& info,
             const SendSmsResult& sms);
 
-    Return<void> sendSmsExpectMoreResponse_1_6(
+    Return<void> sendSMSExpectMoreResponse_1_6(
             const ::android::hardware::radio::V1_6::RadioResponseInfo& info,
             const SendSmsResult& sms);
 
diff --git a/radio/1.6/vts/functional/radio_response.cpp b/radio/1.6/vts/functional/radio_response.cpp
index 942964b..2b6d1bb 100644
--- a/radio/1.6/vts/functional/radio_response.cpp
+++ b/radio/1.6/vts/functional/radio_response.cpp
@@ -1090,7 +1090,7 @@
     return Void();
 }
 
-Return<void> RadioResponse_v1_6::sendSmsExpectMoreResponse_1_6(
+Return<void> RadioResponse_v1_6::sendSMSExpectMoreResponse_1_6(
         const ::android::hardware::radio::V1_6::RadioResponseInfo& info,
         const SendSmsResult& sms) {
     rspInfo = info;
