diff --git a/rtt.cpp b/rtt.cpp
index 9e8a67f..2c9114d 100755
--- a/rtt.cpp
+++ b/rtt.cpp
@@ -132,7 +132,7 @@
 }*/
 class RttCommand : public WifiCommand
 {
-	int rtt_id;
+    int rtt_id;
     unsigned numTargetDevice;
     int mCompleted;
     int currentIdx;
@@ -416,11 +416,11 @@
                                   } else if (nl_nested_itr.get_type() == SLSI_RTT_EVENT_ATTR_SUCCESS_NUM) {
                                          rtt_result->success_number = (unsigned)nl_nested_itr.get_u8();
                                   } else if (nl_nested_itr.get_type() == SLSI_RTT_EVENT_ATTR_NUM_PER_BURST_PEER) {
-                                         rtt_result->number_per_burst_peer = (byte)nl_nested_itr.get_u8();
+                                         rtt_result->number_per_burst_peer = (unsigned char)nl_nested_itr.get_u8();
                                   } else if (nl_nested_itr.get_type() == SLSI_RTT_EVENT_ATTR_STATUS) {
                                          rtt_result->status = (wifi_rtt_status)nl_nested_itr.get_u16();
                                   } else if (nl_nested_itr.get_type() == SLSI_RTT_EVENT_ATTR_RETRY_AFTER_DURATION) {
-                                         rtt_result->retry_after_duration = (byte)nl_nested_itr.get_u8();
+                                         rtt_result->retry_after_duration = (unsigned char)nl_nested_itr.get_u8();
                                   } else if (nl_nested_itr.get_type() == SLSI_RTT_EVENT_ATTR_TYPE) {
                                          rtt_result->type = (wifi_rtt_type)nl_nested_itr.get_u16();
                                   } else if (nl_nested_itr.get_type() == SLSI_RTT_EVENT_ATTR_RSSI) {
diff --git a/wifi_logger.cpp b/wifi_logger.cpp
index 0d8eed2..4a30422 100755
--- a/wifi_logger.cpp
+++ b/wifi_logger.cpp
@@ -1124,6 +1124,7 @@
                            it.get_type(), it.get_len());
                      }
                  }
+		[[fallthrough]];
             case GET_DRIVER_DUMP :
                  for (nl_iterator it(vendor_data); it.has_next(); it.next()) {
                      if (it.get_type() == ENHANCE_LOGGER_ATTRIBUTE_DRIVER_DUMP_LEN) {
@@ -1172,6 +1173,7 @@
                            it.get_type(), it.get_len());
                      }
                  }
+		 [[fallthrough]];
 	    case GET_FW_VER:
             case GET_DRV_VER:
             case GET_RING_DATA:
diff --git a/wifi_nan.cpp b/wifi_nan.cpp
index e5a60d1..6910549 100755
--- a/wifi_nan.cpp
+++ b/wifi_nan.cpp
@@ -475,6 +475,7 @@
                         break;
                     }
                 }
+		[[fallthrough]];
             case NAN_EVT_ATTR_MATCH_CLUSTER_ATTRIBUTE_LEN:
                 ind.cluster_attribute_len = nl_itr.get_u8();
                 break;
