diff --git a/src/fal/fal_vlan.c b/src/fal/fal_vlan.c
index 6ff2184..e745fd6 100755
--- a/src/fal/fal_vlan.c
+++ b/src/fal/fal_vlan.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -334,7 +334,7 @@
                         fal_pbmp_t member, fal_pbmp_t u_member)
 {
     sw_error_t rv;
-    fal_vlan_t vlan_entry;
+    fal_vlan_t vlan_entry = {0};
     hsl_api_t *p_api;
     hsl_dev_t *p_dev = NULL;
 
diff --git a/src/hsl/dess/dess_fdb.c b/src/hsl/dess/dess_fdb.c
index 5316904..d88e3e0 100755
--- a/src/hsl/dess/dess_fdb.c
+++ b/src/hsl/dess/dess_fdb.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2015, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014-2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -29,7 +29,7 @@
 _dess_wl_feature_check(a_uint32_t dev_id)
 {
     sw_error_t rv;
-    a_uint32_t entry;
+    a_uint32_t entry = 0;
 
     HSL_REG_FIELD_GET(rv, dev_id, MASK_CTL, 0, DEVICE_ID,
                       (a_uint8_t *) (&entry), sizeof (a_uint32_t));
@@ -367,7 +367,7 @@
     a_uint32_t busy = 1;
     a_uint32_t full_vio;
     a_uint32_t i = 2000;
-    a_uint32_t entry;
+    a_uint32_t entry = 0;
     a_uint32_t hwop = op;
 
     while (busy && --i)
@@ -784,7 +784,7 @@
 _dess_fdb_port_learn_get(a_uint32_t dev_id, fal_port_t port_id,
                          a_bool_t * enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -854,7 +854,7 @@
 static sw_error_t
 _dess_fdb_vlan_ivl_svl_get(a_uint32_t dev_id, fal_fdb_smode* smode)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -872,7 +872,7 @@
 static sw_error_t
 _dess_fdb_age_ctrl_get(a_uint32_t dev_id, a_bool_t * enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -915,7 +915,7 @@
 static sw_error_t
 _dess_fdb_age_time_get(a_uint32_t dev_id, a_uint32_t * time)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -933,7 +933,7 @@
                                a_bool_t enable, a_uint32_t cnt)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -975,7 +975,7 @@
                                a_bool_t * enable, a_uint32_t * cnt)
 {
     sw_error_t rv;
-    a_uint32_t data, reg;
+    a_uint32_t data, reg = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1072,7 +1072,7 @@
 _dess_fdb_learn_limit_set(a_uint32_t dev_id, a_bool_t enable, a_uint32_t cnt)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     HSL_REG_ENTRY_GET(rv, dev_id, GLOBAL_LEARN_LIMIT_CTL, 0,
                       (a_uint8_t *) (&reg), sizeof (a_uint32_t));
@@ -1109,7 +1109,7 @@
                           a_uint32_t * cnt)
 {
     sw_error_t rv;
-    a_uint32_t data, reg;
+    a_uint32_t data, reg = 0;
 
     HSL_REG_ENTRY_GET(rv, dev_id, GLOBAL_LEARN_LIMIT_CTL, 0,
                       (a_uint8_t *) (&reg), sizeof (a_uint32_t));
@@ -1556,7 +1556,7 @@
 _dess_fdb_port_learn_static_get(a_uint32_t dev_id, fal_port_t port_id,
                                 a_bool_t * enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
diff --git a/src/hsl/dess/dess_igmp.c b/src/hsl/dess/dess_igmp.c
index 8554d31..5ca8a6f 100755
--- a/src/hsl/dess/dess_igmp.c
+++ b/src/hsl/dess/dess_igmp.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -47,7 +47,7 @@
                              a_bool_t enable, a_uint32_t item)
 {
     sw_error_t rv;
-    a_uint32_t reg, val;
+    a_uint32_t reg = 0, val;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -101,7 +101,7 @@
                              a_bool_t * enable, a_uint32_t item)
 {
     sw_error_t rv;
-    a_uint32_t reg, val;
+    a_uint32_t reg = 0, val;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -169,7 +169,7 @@
 _dess_igmp_mld_cmd_get(a_uint32_t dev_id, fal_fwd_cmd_t * cmd)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -211,7 +211,7 @@
 _dess_igmp_mld_rp_get(a_uint32_t dev_id, fal_pbmp_t * pts)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -253,7 +253,7 @@
 _dess_igmp_mld_entry_creat_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -303,7 +303,7 @@
 _dess_igmp_mld_entry_static_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -353,7 +353,7 @@
 _dess_igmp_mld_entry_leaky_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -403,7 +403,7 @@
 _dess_igmp_mld_entry_v3_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -428,7 +428,7 @@
                                a_uint32_t queue)
 {
     sw_error_t rv;
-    a_uint32_t entry;
+    a_uint32_t entry = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -461,7 +461,7 @@
                                a_uint32_t * queue)
 {
     sw_error_t rv;
-    a_uint32_t entry, data;
+    a_uint32_t entry = 0, data;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -490,7 +490,7 @@
                                     a_bool_t enable, a_uint32_t cnt)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -532,7 +532,7 @@
                                     a_bool_t * enable, a_uint32_t * cnt)
 {
     sw_error_t rv;
-    a_uint32_t data, reg;
+    a_uint32_t data, reg = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/dess/dess_interface_ctrl.c b/src/hsl/dess/dess_interface_ctrl.c
index baa322d..d9aac95 100755
--- a/src/hsl/dess/dess_interface_ctrl.c
+++ b/src/hsl/dess/dess_interface_ctrl.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -35,8 +35,8 @@
 static sw_error_t
 _dess_port_3az_status_set(a_uint32_t dev_id, fal_port_t port_id, a_bool_t enable)
 {
-    sw_error_t rv;
-    a_uint32_t reg, field, offset, device_id, rev_id, reverse = 0;
+    sw_error_t rv = SW_OK;
+    a_uint32_t reg = 0, field, offset, device_id, rev_id, reverse = 0;
 
     HSL_REG_ENTRY_GET(rv, dev_id, MASK_CTL, 0,
                       (a_uint8_t *) (&reg), sizeof (a_uint32_t));
@@ -106,8 +106,8 @@
 static sw_error_t
 _dess_port_3az_status_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
-    sw_error_t rv;
-    a_uint32_t reg, field, offset, device_id, rev_id, reverse = 0;
+    sw_error_t rv = SW_OK;
+    a_uint32_t reg = 0, field, offset, device_id, rev_id, reverse = 0;
 
     HSL_REG_ENTRY_GET(rv, dev_id, MASK_CTL, 0,
                       (a_uint8_t *) (&reg), sizeof (a_uint32_t));
@@ -171,7 +171,7 @@
 _dess_interface_mac_mode_set(a_uint32_t dev_id, fal_port_t port_id, fal_mac_config_t * config)
 {
 	sw_error_t rv = SW_OK;
-	a_uint32_t reg, field;
+	a_uint32_t reg = 0, field;
 
 	HSL_DEV_ID_CHECK(dev_id);
 
@@ -211,7 +211,7 @@
 _dess_interface_mac_mode_get(a_uint32_t dev_id, fal_port_t port_id, fal_mac_config_t * config)
 {
 	sw_error_t rv = SW_OK;
-	a_uint32_t reg, field;
+	a_uint32_t reg = 0, field;
 
 	HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/dess/dess_leaky.c b/src/hsl/dess/dess_leaky.c
index 10e8d4c..6aef5d5 100755
--- a/src/hsl/dess/dess_leaky.c
+++ b/src/hsl/dess/dess_leaky.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -55,7 +55,7 @@
 _dess_uc_leaky_mode_get(a_uint32_t dev_id,
                         fal_leaky_ctrl_mode_t *ctrl_mode)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -107,7 +107,7 @@
 _dess_mc_leaky_mode_get(a_uint32_t dev_id,
                         fal_leaky_ctrl_mode_t *ctrl_mode)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -164,7 +164,7 @@
 _dess_port_arp_leaky_get(a_uint32_t dev_id, fal_port_t port_id,
                          a_bool_t *enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -226,7 +226,7 @@
 _dess_port_uc_leaky_get(a_uint32_t dev_id, fal_port_t port_id,
                         a_bool_t *enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -288,7 +288,7 @@
 _dess_port_mc_leaky_get(a_uint32_t dev_id, fal_port_t port_id,
                         a_bool_t *enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
diff --git a/src/hsl/dess/dess_led.c b/src/hsl/dess/dess_led.c
index 08f218f..6f2b2ac 100755
--- a/src/hsl/dess/dess_led.c
+++ b/src/hsl/dess/dess_led.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -30,7 +30,7 @@
 _dess_led_ctrl_pattern_set(a_uint32_t dev_id, led_pattern_group_t group,
                            led_pattern_id_t id, led_ctrl_pattern_t * pattern)
 {
-    a_uint32_t data = 0, reg, mode;
+    a_uint32_t data = 0, reg = 0, mode;
     a_uint32_t addr;
     sw_error_t rv;
 
@@ -208,7 +208,7 @@
 _dess_led_ctrl_pattern_get(a_uint32_t dev_id, led_pattern_group_t group,
                            led_pattern_id_t id, led_ctrl_pattern_t * pattern)
 {
-    a_uint32_t data = 0, reg, tmp;
+    a_uint32_t data = 0, reg = 0, tmp;
     a_uint32_t addr;
     sw_error_t rv;
 
diff --git a/src/hsl/dess/dess_mib.c b/src/hsl/dess/dess_mib.c
index fb3412e..4cc6ed7 100755
--- a/src/hsl/dess/dess_mib.c
+++ b/src/hsl/dess/dess_mib.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -76,7 +76,7 @@
 _dess_get_mib_info(a_uint32_t dev_id, fal_port_t port_id,
                    fal_mib_info_t * mib_info)
 {
-    a_uint32_t val;
+    a_uint32_t val = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -315,7 +315,7 @@
 _dess_get_rx_mib_info(a_uint32_t dev_id, fal_port_t port_id,
                    fal_mib_info_t * mib_info)
 {
-    a_uint32_t val;
+    a_uint32_t val = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -443,7 +443,7 @@
 _dess_get_tx_mib_info(a_uint32_t dev_id, fal_port_t port_id,
                    fal_mib_info_t * mib_info)
 {
-    a_uint32_t val;
+    a_uint32_t val = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -597,7 +597,7 @@
 _dess_mib_status_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -649,7 +649,7 @@
 _dess_mib_cpukeep_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/dess/dess_mirror.c b/src/hsl/dess/dess_mirror.c
index ef5a1ed..9edb85f 100755
--- a/src/hsl/dess/dess_mirror.c
+++ b/src/hsl/dess/dess_mirror.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -47,7 +47,7 @@
 _dess_mirr_analysis_port_get(a_uint32_t dev_id, fal_port_t * port_id)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -94,7 +94,7 @@
 _dess_mirr_port_in_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -154,7 +154,7 @@
 _dess_mirr_port_eg_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/dess/dess_misc.c b/src/hsl/dess/dess_misc.c
index 76b2916..614a8cd 100755
--- a/src/hsl/dess/dess_misc.c
+++ b/src/hsl/dess/dess_misc.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -40,7 +40,7 @@
                              a_bool_t enable, a_uint32_t item)
 {
     sw_error_t rv;
-    a_uint32_t reg, val;
+    a_uint32_t reg = 0, val;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -94,7 +94,7 @@
                              a_bool_t * enable, a_uint32_t item)
 {
     sw_error_t rv;
-    a_uint32_t reg, val;
+    a_uint32_t reg = 0, val;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -154,7 +154,7 @@
 static sw_error_t
 _dess_frame_max_size_get(a_uint32_t dev_id, a_uint32_t * size)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -172,7 +172,7 @@
                              a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -208,7 +208,7 @@
                              a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -239,7 +239,7 @@
                              a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -275,7 +275,7 @@
                              a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -305,7 +305,7 @@
 _dess_port_bc_filter_set(a_uint32_t dev_id, fal_port_t port_id, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -341,7 +341,7 @@
                          a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -397,7 +397,7 @@
 _dess_cpu_port_status_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -447,7 +447,7 @@
 _dess_cpu_vid_en_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -497,7 +497,7 @@
 _dess_rtd_pppoe_en_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -548,7 +548,7 @@
 _dess_pppoe_cmd_get(a_uint32_t dev_id, fal_fwd_cmd_t * cmd)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -598,7 +598,7 @@
 _dess_pppoe_status_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -652,7 +652,7 @@
 _dess_arp_cmd_get(a_uint32_t dev_id, fal_fwd_cmd_t * cmd)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -706,7 +706,7 @@
 _dess_eapol_cmd_get(a_uint32_t dev_id, fal_fwd_cmd_t * cmd)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -733,7 +733,7 @@
 _dess_pppoe_session_add(a_uint32_t dev_id, fal_pppoe_session_t * session_tbl)
 {
     sw_error_t rv;
-    a_uint32_t reg, i, valid, id, entry_idx = DESS_MAX_PPPOE_SESSION;
+    a_uint32_t reg = 0, i, valid, id, entry_idx = DESS_MAX_PPPOE_SESSION;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -809,7 +809,7 @@
 _dess_pppoe_session_del(a_uint32_t dev_id, fal_pppoe_session_t * session_tbl)
 {
     sw_error_t rv;
-    a_uint32_t reg, i, valid, id;
+    a_uint32_t reg = 0, i, valid, id;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -845,7 +845,7 @@
 _dess_pppoe_session_get(a_uint32_t dev_id, fal_pppoe_session_t * session_tbl)
 {
     sw_error_t rv;
-    a_uint32_t reg, i, valid, id, vrf_id;
+    a_uint32_t reg = 0, i, valid, id, vrf_id;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -916,7 +916,7 @@
                            a_uint32_t * id)
 {
     sw_error_t rv;
-    a_uint32_t reg, tmp;
+    a_uint32_t reg = 0, tmp;
 
     if (DESS_MAX_PPPOE_SESSION <= index)
     {
@@ -967,7 +967,7 @@
 static sw_error_t
 _dess_ripv1_status_get(a_uint32_t dev_id, a_bool_t * enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -997,7 +997,7 @@
 _dess_intr_mask_set(a_uint32_t dev_id, a_uint32_t intr_mask)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     HSL_REG_ENTRY_GET(rv, dev_id, GBL_INT_MASK1, 0, (a_uint8_t *) (&reg),
                       sizeof (a_uint32_t));
@@ -1021,7 +1021,7 @@
 _dess_intr_mask_get(a_uint32_t dev_id, a_uint32_t * intr_mask)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     *intr_mask = 0;
     HSL_REG_ENTRY_GET(rv, dev_id, GBL_INT_MASK1, 0, (a_uint8_t *) (&reg),
@@ -1040,7 +1040,7 @@
 _dess_intr_status_get(a_uint32_t dev_id, a_uint32_t * intr_status)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     *intr_status = 0;
     HSL_REG_ENTRY_GET(rv, dev_id, GBL_INT_STATUS1, 0, (a_uint8_t *) (&reg),
@@ -1155,7 +1155,7 @@
 _dess_intr_mask_mac_linkchg_set(a_uint32_t dev_id, a_uint32_t port_id, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1192,7 +1192,7 @@
 _dess_intr_mask_mac_linkchg_get(a_uint32_t dev_id, a_uint32_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1223,7 +1223,7 @@
 _dess_intr_status_mac_linkchg_get(a_uint32_t dev_id, fal_pbmp_t* port_bitmap)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1320,7 +1320,7 @@
 _dess_lldp_status_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1370,7 +1370,7 @@
 _dess_frame_crc_reserve_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/dess/dess_port_ctrl.c b/src/hsl/dess/dess_port_ctrl.c
index 12ac9d8..6f35ccd 100755
--- a/src/hsl/dess/dess_port_ctrl.c
+++ b/src/hsl/dess/dess_port_ctrl.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014-2015, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014-2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -478,7 +478,7 @@
 			 a_bool_t enable)
 {
   sw_error_t rv;
-  a_uint32_t val, force, reg, tmp;
+  a_uint32_t val, force, reg = 0, tmp;
 
   if (A_TRUE != hsl_port_prop_check (dev_id, port_id, HSL_PP_INCL_CPU))
     {
@@ -526,7 +526,7 @@
 			 a_uint8_t on, a_uint8_t off)
 {
 	sw_error_t rv;
-	a_uint32_t reg;
+	a_uint32_t reg = 0;
 
 	reg = (on << 16) | off;
 	HSL_REG_ENTRY_SET (rv, dev_id, PORT_FLOC_CTRL_THRESH, port_id,
@@ -539,7 +539,7 @@
 			 a_bool_t * enable)
 {
   sw_error_t rv;
-  a_uint32_t rx, reg;
+  a_uint32_t rx, reg = 0;
 
   if (A_TRUE != hsl_port_prop_check (dev_id, port_id, HSL_PP_INCL_CPU))
     {
@@ -569,7 +569,7 @@
 				   a_bool_t enable)
 {
   sw_error_t rv;
-  a_uint32_t reg, tmp;
+  a_uint32_t reg = 0, tmp;
 
   if (A_TRUE != hsl_port_prop_check (dev_id, port_id, HSL_PP_INCL_CPU))
     {
@@ -777,7 +777,7 @@
 			   fal_port_header_mode_t mode)
 {
   sw_error_t rv;
-  a_uint32_t val;
+  a_uint32_t val = 0;
 
   HSL_DEV_ID_CHECK (dev_id);
 
@@ -847,7 +847,7 @@
 			   fal_port_header_mode_t mode)
 {
   sw_error_t rv;
-  a_uint32_t val;
+  a_uint32_t val = 0;
 
   HSL_DEV_ID_CHECK (dev_id);
 
@@ -883,7 +883,7 @@
 			   fal_port_header_mode_t * mode)
 {
   sw_error_t rv;
-  a_uint32_t val;
+  a_uint32_t val = 0;
 
   HSL_DEV_ID_CHECK (dev_id);
 
@@ -915,7 +915,7 @@
 static sw_error_t
 _dess_header_type_set (a_uint32_t dev_id, a_bool_t enable, a_uint32_t type)
 {
-  a_uint32_t reg;
+  a_uint32_t reg = 0;
   sw_error_t rv;
 
   HSL_DEV_ID_CHECK (dev_id);
@@ -952,7 +952,7 @@
 _dess_header_type_get (a_uint32_t dev_id, a_bool_t * enable,
 		       a_uint32_t * type)
 {
-  a_uint32_t data, reg;
+  a_uint32_t data, reg = 0;
   sw_error_t rv;
 
   HSL_DEV_ID_CHECK (dev_id);
@@ -982,7 +982,7 @@
 			     a_bool_t enable)
 {
   sw_error_t rv;
-  a_uint32_t reg, force, val, tmp;
+  a_uint32_t reg, force, val = 0, tmp;
 
   HSL_DEV_ID_CHECK (dev_id);
 
@@ -1040,7 +1040,7 @@
 			     a_bool_t * enable)
 {
   sw_error_t rv;
-  a_uint32_t val;
+  a_uint32_t val = 0;
 
   HSL_DEV_ID_CHECK (dev_id);
 
@@ -1070,7 +1070,7 @@
 			     a_bool_t enable)
 {
   sw_error_t rv;
-  a_uint32_t reg, force, val, tmp;
+  a_uint32_t reg = 0, force, val = 0, tmp = 0;
 
   HSL_DEV_ID_CHECK (dev_id);
 
@@ -1128,7 +1128,7 @@
 			     a_bool_t * enable)
 {
   sw_error_t rv;
-  a_uint32_t val;
+  a_uint32_t val = 0;
 
   HSL_DEV_ID_CHECK (dev_id);
 
@@ -1158,7 +1158,7 @@
 			    a_bool_t enable)
 {
   sw_error_t rv;
-  a_uint32_t val, reg, force, tmp;
+  a_uint32_t val = 0, reg = 0, force, tmp;
 
   HSL_DEV_ID_CHECK (dev_id);
 
@@ -1246,7 +1246,7 @@
 			    a_bool_t enable)
 {
   sw_error_t rv;
-  a_uint32_t val, reg, force, tmp;
+  a_uint32_t val = 0, reg, force, tmp;
 
   HSL_DEV_ID_CHECK (dev_id);
 
@@ -1334,7 +1334,7 @@
 			  a_bool_t enable)
 {
   sw_error_t rv;
-  a_uint32_t val, tmp;
+  a_uint32_t val = 0, tmp = 0;
 
   HSL_DEV_ID_CHECK (dev_id);
 
@@ -1370,7 +1370,7 @@
 			  a_bool_t * enable)
 {
   sw_error_t rv;
-  a_uint32_t val;
+  a_uint32_t val = 0;
 
   HSL_DEV_ID_CHECK (dev_id);
 
@@ -1400,7 +1400,7 @@
 			       a_bool_t enable)
 {
   sw_error_t rv;
-  a_uint32_t reg, tmp;
+  a_uint32_t reg = 0, tmp = 0;
 
   HSL_DEV_ID_CHECK (dev_id);
 
@@ -1446,7 +1446,7 @@
 			       a_bool_t * enable)
 {
   sw_error_t rv;
-  a_uint32_t val;
+  a_uint32_t val = 0;
 
   HSL_DEV_ID_CHECK (dev_id);
 
@@ -1562,7 +1562,7 @@
 			     a_bool_t enable)
 {
   sw_error_t rv = SW_OK;
-  a_uint32_t val;
+  a_uint32_t val = 0;
 
   HSL_DEV_ID_CHECK (dev_id);
 
@@ -1594,7 +1594,7 @@
 			     a_bool_t * enable)
 {
   sw_error_t rv;
-  a_uint32_t val;
+  a_uint32_t val = 0;
 
   HSL_DEV_ID_CHECK (dev_id);
 
@@ -1625,7 +1625,7 @@
 				a_uint32_t queue_id, a_bool_t enable)
 {
   sw_error_t rv = SW_OK;
-  a_uint32_t val, offset = 0, field = 0;
+  a_uint32_t val = 0, offset = 0, field = 0;
 
   HSL_DEV_ID_CHECK (dev_id);
 
diff --git a/src/hsl/dess/dess_portvlan.c b/src/hsl/dess/dess_portvlan.c
old mode 100644
new mode 100755
index 06a4a06..bc27a38
--- a/src/hsl/dess/dess_portvlan.c
+++ b/src/hsl/dess/dess_portvlan.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -33,7 +33,7 @@
 _dess_port_route_defv_set(a_uint32_t dev_id, fal_port_t port_id)
 {
     sw_error_t rv;
-    a_uint32_t data, reg;
+    a_uint32_t data = 0, reg = 0;
 
     HSL_REG_FIELD_GET(rv, dev_id, PORT_VLAN1, port_id,
                       COREP_EN, (a_uint8_t *) (&data), sizeof (a_uint32_t));
@@ -143,7 +143,7 @@
                           fal_pt_1q_egmode_t port_egvlanmode)
 {
     sw_error_t rv;
-    a_uint32_t data, regval[FAL_EG_MODE_BUTT] = { 0, 1, 2, 3, 3 };
+    a_uint32_t data = 0, regval[FAL_EG_MODE_BUTT] = { 0, 1, 2, 3, 3 };
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -358,7 +358,7 @@
                                  a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -420,7 +420,7 @@
                               a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -463,7 +463,7 @@
 _dess_nestvlan_tpid_get(a_uint32_t dev_id, a_uint32_t * tpid)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -567,7 +567,7 @@
 _dess_port_tls_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -630,7 +630,7 @@
                                a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -690,7 +690,7 @@
                             a_uint32_t * vid)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -740,7 +740,7 @@
                             a_uint32_t * vid)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -761,7 +761,7 @@
                                 fal_vlan_propagation_mode_t mode)
 {
     sw_error_t rv;
-    a_uint32_t reg, p, c;
+    a_uint32_t reg = 0, p, c;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -807,7 +807,7 @@
                                 fal_vlan_propagation_mode_t * mode)
 {
     sw_error_t rv;
-    a_uint32_t reg, p, c;
+    a_uint32_t reg = 0, p, c;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -847,7 +847,7 @@
                       fal_pbmp_t * pbmp, fal_vlan_trans_entry_t * entry)
 {
     sw_error_t rv;
-    a_uint32_t i, addr, dir, table[2];
+    a_uint32_t i, addr, dir, table[2] = {0};
 
     *pbmp = 0;
     aos_mem_zero(entry, sizeof (fal_vlan_trans_entry_t));
@@ -1347,7 +1347,7 @@
                             a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1390,7 +1390,7 @@
 _dess_netisolate_get(a_uint32_t dev_id, a_uint32_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1420,7 +1420,7 @@
 _dess_eg_trans_filter_bypass_en_get(a_uint32_t dev_id, a_uint32_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/dess/dess_psgmii.c b/src/hsl/dess/dess_psgmii.c
index f5c3b60..aab36d2 100755
--- a/src/hsl/dess/dess_psgmii.c
+++ b/src/hsl/dess/dess_psgmii.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2015-2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -77,7 +77,7 @@
                    a_uint32_t bit_offset, a_uint32_t field_len,
                    const a_uint8_t value[], a_uint32_t value_len)
 {
-    a_uint32_t reg_val;
+    a_uint32_t reg_val = 0;
     a_uint32_t field_val = *((a_uint32_t *) value);
 
     if ((bit_offset >= 32 || (field_len > 32)) || (field_len == 0))
@@ -113,7 +113,7 @@
 dess_psgmii_set_lpi(a_uint32_t dev_id, a_uint32_t phy_id, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     if (phy_id == 0)
     {
@@ -165,7 +165,7 @@
 dess_psgmii_get_lpi(a_uint32_t dev_id, a_uint32_t phy_id, a_bool_t *enable)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     if (phy_id == 0)
     {
@@ -203,7 +203,7 @@
 								psgmii_interface_mac_mode_t mode)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     rv = dess_psgmii_reg_get(dev_id, PSGMIIPHY_MODE_CONTROL,
 						(a_uint8_t *) (&data), sizeof (a_uint32_t));
@@ -311,7 +311,7 @@
 dess_psgmii_autoneg_done(a_uint32_t dev_id, a_uint32_t phy_id)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     rv = dess_psgmii_reg_get(dev_id, PSGMIIPHY_CHANNEL_0_INPUT_OUTPUT_1 + phy_id * 0x18,
 						(a_uint8_t *) (&data), sizeof (a_uint32_t));
@@ -335,7 +335,7 @@
 dess_psgmii_reset(a_uint32_t dev_id, a_uint32_t phy_id)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     rv = dess_psgmii_reg_get(dev_id, PSGMIIPHY_CHANNEL_0_INPUT_OUTPUT_4 + phy_id * 0x18,
 						(a_uint8_t *) (&data), sizeof (a_uint32_t));
@@ -360,7 +360,7 @@
 dess_psgmii_poweroff(a_uint32_t dev_id, a_uint32_t phy_id)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     rv = dess_psgmii_reg_get(dev_id, PSGMIIPHY_CHANNEL_0_INPUT_OUTPUT_4 + phy_id * 0x18,
 						(a_uint8_t *) (&data), sizeof (a_uint32_t));
@@ -385,7 +385,7 @@
 dess_psgmii_poweron(a_uint32_t dev_id, a_uint32_t phy_id)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     rv = dess_psgmii_reg_get(dev_id, PSGMIIPHY_CHANNEL_0_INPUT_OUTPUT_4 + phy_id * 0x18,
 						(a_uint8_t *) (&data), sizeof (a_uint32_t));
@@ -412,7 +412,7 @@
 dess_psgmii_get_link_status(a_uint32_t dev_id, a_uint32_t phy_id)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     rv = dess_psgmii_reg_get(dev_id, PSGMIIPHY_CHANNEL_0_INPUT_OUTPUT_5 + phy_id * 0x18,
 						(a_uint8_t *) (&data), sizeof (a_uint32_t));
@@ -436,7 +436,7 @@
                        a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     rv = dess_psgmii_reg_get(dev_id, PSGMIIPHY_CHANNEL_0_INPUT_OUTPUT_4 + phy_id * 0x18,
 						(a_uint8_t *) (&data), sizeof (a_uint32_t));
@@ -464,7 +464,7 @@
                        a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     rv = dess_psgmii_reg_get(dev_id, PSGMIIPHY_CHANNEL_0_INPUT_OUTPUT_4 + phy_id * 0x18,
 						(a_uint8_t *) (&data), sizeof (a_uint32_t));
@@ -500,7 +500,7 @@
 dess_psgmii_restart_autoneg(a_uint32_t dev_id, a_uint32_t phy_id)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     rv = dess_psgmii_reg_get(dev_id, PSGMIIPHY_CHANNEL_0_INPUT_OUTPUT_4 + phy_id * 0x18,
 						(a_uint8_t *) (&data), sizeof (a_uint32_t));
@@ -525,7 +525,7 @@
 dess_psgmii_enable_autoneg(a_uint32_t dev_id, a_uint32_t phy_id)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     rv = dess_psgmii_reg_get(dev_id, PSGMIIPHY_CHANNEL_0_INPUT_OUTPUT_4 + phy_id * 0x18,
 						(a_uint8_t *) (&data), sizeof (a_uint32_t));
@@ -552,7 +552,7 @@
                  fal_port_speed_t * speed)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     rv = dess_psgmii_reg_get(dev_id, PSGMIIPHY_CHANNEL_0_INPUT_OUTPUT_4 + phy_id * 0x18,
 						(a_uint8_t *) (&data), sizeof (a_uint32_t));
@@ -610,7 +610,7 @@
                  fal_port_speed_t speed)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     rv = dess_psgmii_reg_get(dev_id, PSGMIIPHY_CHANNEL_0_INPUT_OUTPUT_4 + phy_id * 0x18,
 						(a_uint8_t *) (&data), sizeof (a_uint32_t));
@@ -654,7 +654,7 @@
                   fal_port_duplex_t * duplex)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     rv = dess_psgmii_reg_get(dev_id, PSGMIIPHY_CHANNEL_0_INPUT_OUTPUT_5 + phy_id * 0x18,
 						(a_uint8_t *) (&data), sizeof (a_uint32_t));
@@ -684,7 +684,7 @@
                   fal_port_duplex_t duplex)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     rv = dess_psgmii_reg_get(dev_id, PSGMIIPHY_CHANNEL_0_INPUT_OUTPUT_5 + phy_id * 0x18,
 						(a_uint8_t *) (&data), sizeof (a_uint32_t));
diff --git a/src/hsl/dess/dess_rate.c b/src/hsl/dess/dess_rate.c
index 588cab2..44cd36a 100755
--- a/src/hsl/dess/dess_rate.c
+++ b/src/hsl/dess/dess_rate.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014,2016 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
  * above copyright notice and this permission notice appear in all copies.
@@ -408,7 +408,7 @@
                             fal_port_policer_t * policer)
 {
     sw_error_t rv;
-    a_uint32_t unit, ts, cir, eir, cbs, ebs, data[3];
+    a_uint32_t unit, ts, cir, eir, cbs, ebs, data[3] = {0};
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -587,7 +587,7 @@
                            a_bool_t * enable, fal_egress_shaper_t * shaper)
 {
     sw_error_t rv;
-    a_uint32_t data, cir, eir, cbs = 0, ebs = 0;
+    a_uint32_t data = 0, cir = 0, eir = 0, cbs = 0, ebs = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -868,7 +868,7 @@
                             fal_egress_shaper_t * shaper)
 {
     sw_error_t rv;
-    a_uint32_t data, cir, eir, cbs = 0, ebs = 0;
+    a_uint32_t data = 0, cir = 0, eir = 0, cbs = 0, ebs = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1180,7 +1180,7 @@
                            fal_acl_policer_t * policer)
 {
     sw_error_t rv;
-    a_uint32_t unit, ts, cir, eir, cbs, ebs, addr, data[2];
+    a_uint32_t unit, ts, cir, eir, cbs, ebs, addr, data[2] = {0};
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1318,7 +1318,7 @@
 _dess_rate_port_gol_flow_en_set(a_uint32_t dev_id, fal_port_t port_id,
                                 a_bool_t  enable)
 {
-    a_uint32_t val;
+    a_uint32_t val = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -1357,7 +1357,7 @@
 _dess_rate_port_gol_flow_en_get(a_uint32_t dev_id, fal_port_t port_id,
                                 a_bool_t*  enable)
 {
-    a_uint32_t val;
+    a_uint32_t val = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
diff --git a/src/hsl/dess/dess_sec.c b/src/hsl/dess/dess_sec.c
index 5c532ba..61c7588 100755
--- a/src/hsl/dess/dess_sec.c
+++ b/src/hsl/dess/dess_sec.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -35,7 +35,7 @@
     sw_error_t rv;
     fal_fwd_cmd_t cmd;
     a_bool_t enable;
-    a_uint32_t addr, offset, len, reg, val;
+    a_uint32_t addr, offset, len, reg = 0, val;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -383,7 +383,7 @@
 _dess_sec_norm_item_get(a_uint32_t dev_id, fal_norm_item_t item, void *value)
 {
     sw_error_t rv;
-    a_uint32_t addr, offset, len, reg, val;
+    a_uint32_t addr, offset, len, reg = 0, val;
     a_uint32_t status_chk = 0, val_chk = 0, scmd_chk = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
diff --git a/src/hsl/dess/dess_stp.c b/src/hsl/dess/dess_stp.c
index ac52c06..6537241 100755
--- a/src/hsl/dess/dess_stp.c
+++ b/src/hsl/dess/dess_stp.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -80,7 +80,7 @@
                          fal_port_t port_id, fal_stp_state_t * state)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/dess/dess_trunk.c b/src/hsl/dess/dess_trunk.c
index b2b480e..e57eb0d 100755
--- a/src/hsl/dess/dess_trunk.c
+++ b/src/hsl/dess/dess_trunk.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -46,7 +46,7 @@
                       a_bool_t enable, fal_pbmp_t member)
 {
     sw_error_t rv;
-    a_uint32_t i, reg, cnt = 0, data0 = 0, data1 = 0;
+    a_uint32_t i, reg = 0, cnt = 0, data0 = 0, data1 = 0;
 
     if (DESS_MAX_TRUNK_ID < trunk_id)
     {
@@ -122,7 +122,7 @@
                       a_bool_t * enable, fal_pbmp_t * member)
 {
     sw_error_t rv;
-    a_uint32_t data, reg;
+    a_uint32_t data, reg = 0;
 
     if (DESS_MAX_TRUNK_ID < trunk_id)
     {
@@ -187,7 +187,7 @@
 _dess_trunk_hash_mode_get(a_uint32_t dev_id, a_uint32_t * hash_mode)
 {
     sw_error_t rv;
-    a_uint32_t reg, data = 0;
+    a_uint32_t reg = 0, data = 0;
 
     HSL_REG_ENTRY_GET(rv, dev_id, TRUNK_HASH_MODE, 0,
                       (a_uint8_t *) (&reg), sizeof (a_uint32_t));
diff --git a/src/hsl/isis/isis_fdb.c b/src/hsl/isis/isis_fdb.c
index ae8dfec..da21f22 100755
--- a/src/hsl/isis/isis_fdb.c
+++ b/src/hsl/isis/isis_fdb.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -45,7 +45,7 @@
 _isis_wl_feature_check(a_uint32_t dev_id)
 {
     sw_error_t rv;
-    a_uint32_t entry;
+    a_uint32_t entry = 0;
 
     HSL_REG_FIELD_GET(rv, dev_id, MASK_CTL, 0, DEVICE_ID,
                       (a_uint8_t *) (&entry), sizeof (a_uint32_t));
@@ -362,7 +362,7 @@
     a_uint32_t busy = 1;
     a_uint32_t full_vio;
     a_uint32_t i = 2000;
-    a_uint32_t entry;
+    a_uint32_t entry = 0;
     a_uint32_t hwop = op;
 
     while (busy && --i)
@@ -781,7 +781,7 @@
 _isis_fdb_port_learn_get(a_uint32_t dev_id, fal_port_t port_id,
                          a_bool_t * enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -836,7 +836,7 @@
 static sw_error_t
 _isis_fdb_age_ctrl_get(a_uint32_t dev_id, a_bool_t * enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -879,7 +879,7 @@
 static sw_error_t
 _isis_fdb_age_time_get(a_uint32_t dev_id, a_uint32_t * time)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -897,7 +897,7 @@
                                a_bool_t enable, a_uint32_t cnt)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -939,7 +939,7 @@
                                a_bool_t * enable, a_uint32_t * cnt)
 {
     sw_error_t rv;
-    a_uint32_t data, reg;
+    a_uint32_t data, reg = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1036,7 +1036,7 @@
 _isis_fdb_learn_limit_set(a_uint32_t dev_id, a_bool_t enable, a_uint32_t cnt)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     HSL_REG_ENTRY_GET(rv, dev_id, GLOBAL_LEARN_LIMIT_CTL, 0,
                       (a_uint8_t *) (&reg), sizeof (a_uint32_t));
@@ -1073,7 +1073,7 @@
                           a_uint32_t * cnt)
 {
     sw_error_t rv;
-    a_uint32_t data, reg;
+    a_uint32_t data, reg = 0;
 
     HSL_REG_ENTRY_GET(rv, dev_id, GLOBAL_LEARN_LIMIT_CTL, 0,
                       (a_uint8_t *) (&reg), sizeof (a_uint32_t));
@@ -1520,7 +1520,7 @@
 _isis_fdb_port_learn_static_get(a_uint32_t dev_id, fal_port_t port_id,
                                 a_bool_t * enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
diff --git a/src/hsl/isis/isis_igmp.c b/src/hsl/isis/isis_igmp.c
index 4c3cce2..300dd04 100755
--- a/src/hsl/isis/isis_igmp.c
+++ b/src/hsl/isis/isis_igmp.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -44,7 +44,7 @@
                              a_bool_t enable, a_uint32_t item)
 {
     sw_error_t rv;
-    a_uint32_t reg, val;
+    a_uint32_t reg = 0, val;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -98,7 +98,7 @@
                              a_bool_t * enable, a_uint32_t item)
 {
     sw_error_t rv;
-    a_uint32_t reg, val;
+    a_uint32_t reg = 0, val;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -166,7 +166,7 @@
 _isis_igmp_mld_cmd_get(a_uint32_t dev_id, fal_fwd_cmd_t * cmd)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -208,7 +208,7 @@
 _isis_igmp_mld_rp_get(a_uint32_t dev_id, fal_pbmp_t * pts)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -250,7 +250,7 @@
 _isis_igmp_mld_entry_creat_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -300,7 +300,7 @@
 _isis_igmp_mld_entry_static_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -350,7 +350,7 @@
 _isis_igmp_mld_entry_leaky_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -400,7 +400,7 @@
 _isis_igmp_mld_entry_v3_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -425,7 +425,7 @@
                                a_uint32_t queue)
 {
     sw_error_t rv;
-    a_uint32_t entry;
+    a_uint32_t entry = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -458,7 +458,7 @@
                                a_uint32_t * queue)
 {
     sw_error_t rv;
-    a_uint32_t entry, data;
+    a_uint32_t entry = 0, data;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -487,7 +487,7 @@
                                     a_bool_t enable, a_uint32_t cnt)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -529,7 +529,7 @@
                                     a_bool_t * enable, a_uint32_t * cnt)
 {
     sw_error_t rv;
-    a_uint32_t data, reg;
+    a_uint32_t data, reg = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/isis/isis_interface_ctrl.c b/src/hsl/isis/isis_interface_ctrl.c
index 1cee7a2..4118c72 100755
--- a/src/hsl/isis/isis_interface_ctrl.c
+++ b/src/hsl/isis/isis_interface_ctrl.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2015, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2015-2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -95,7 +95,7 @@
 _isis_port_3az_status_set(a_uint32_t dev_id, fal_port_t port_id, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, field, offset, device_id, rev_id, reverse = 0;
+    a_uint32_t reg = 0, field, offset, device_id, rev_id, reverse = 0;
 
     HSL_REG_ENTRY_GET(rv, dev_id, MASK_CTL, 0,
                       (a_uint8_t *) (&reg), sizeof (a_uint32_t));
@@ -157,7 +157,7 @@
 _isis_port_3az_status_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, field, offset, device_id, rev_id, reverse = 0;
+    a_uint32_t reg = 0, field, offset, device_id, rev_id, reverse = 0;
 
     HSL_REG_ENTRY_GET(rv, dev_id, MASK_CTL, 0,
                       (a_uint8_t *) (&reg), sizeof (a_uint32_t));
@@ -212,7 +212,7 @@
 _isis_port_rgmii_mode_set(a_uint32_t dev_id, fal_port_t port_id, fal_mac_rgmii_config_t * config)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     if (ISIS_MAC_0 == port_id)
     {
@@ -313,7 +313,7 @@
 _isis_port_rgmii_mode_get(a_uint32_t dev_id, fal_port_t port_id, fal_mac_rgmii_config_t * config)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     if (ISIS_MAC_0 == port_id)
     {
@@ -369,7 +369,7 @@
 _isis_port_gmii_mode_set(a_uint32_t dev_id, fal_port_t port_id, fal_mac_gmii_config_t * config)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     if (ISIS_MAC_0 == port_id)
     {
@@ -461,7 +461,7 @@
 _isis_port_gmii_mode_get(a_uint32_t dev_id, fal_port_t port_id, fal_mac_gmii_config_t * config)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     if (ISIS_MAC_0 == port_id)
     {
@@ -505,7 +505,7 @@
 _isis_port_mii_mode_set(a_uint32_t dev_id, fal_port_t port_id, fal_mac_mii_config_t * config)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     if (ISIS_MAC_0 == port_id)
     {
@@ -605,7 +605,7 @@
 _isis_port_mii_mode_get(a_uint32_t dev_id, fal_port_t port_id, fal_mac_mii_config_t * config)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     if (ISIS_MAC_0 == port_id)
     {
@@ -653,7 +653,7 @@
 _isis_port_sgmii_mode_set(a_uint32_t dev_id, fal_port_t port_id, fal_mac_sgmii_config_t * config)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     if (ISIS_MAC_0 == port_id)
     {
@@ -782,7 +782,7 @@
 _isis_port_sgmii_mode_get(a_uint32_t dev_id, fal_port_t port_id, fal_mac_sgmii_config_t * config)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     if (ISIS_MAC_0 == port_id)
     {
@@ -831,7 +831,7 @@
 _isis_port_fiber_mode_set(a_uint32_t dev_id, fal_port_t port_id, fal_mac_fiber_config_t * config)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     if (ISIS_MAC_0 == port_id)
     {
@@ -970,7 +970,7 @@
 _isis_port_fiber_mode_get(a_uint32_t dev_id, fal_port_t port_id, fal_mac_fiber_config_t * config)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     if (ISIS_MAC_0 == port_id)
     {
@@ -1006,7 +1006,7 @@
 _isis_port_default_mode_set(a_uint32_t dev_id, fal_port_t port_id)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     if (ISIS_MAC_0 == port_id)
     {
@@ -1112,7 +1112,7 @@
 _isis_interface_mac_mode_get(a_uint32_t dev_id, fal_port_t port_id, fal_mac_config_t * config)
 {
     sw_error_t rv;
-    a_uint32_t reg, field, field2;
+    a_uint32_t reg = 0, field, field2;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1337,7 +1337,7 @@
 {
     sw_error_t rv;
     a_uint16_t data;
-    a_uint32_t reg, rgmii, gmii, mii;
+    a_uint32_t reg = 0, rgmii, gmii, mii;
     hsl_phy_ops_t *phy_drv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -1421,7 +1421,7 @@
 _isis_interface_mac_sgmii_get(a_uint32_t dev_id, a_uint32_t *value)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     HSL_REG_ENTRY_GET(rv, dev_id, SGMII_CTRL, 0,
                       (a_uint8_t *) (&reg), sizeof (a_uint32_t));
@@ -1466,7 +1466,7 @@
 _isis_interface_mac_pad_get(a_uint32_t dev_id,a_uint32_t port_num, a_uint32_t *value)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     switch (port_num)
     {
diff --git a/src/hsl/isis/isis_leaky.c b/src/hsl/isis/isis_leaky.c
index 021577b..0d720be 100755
--- a/src/hsl/isis/isis_leaky.c
+++ b/src/hsl/isis/isis_leaky.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016 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
  * above copyright notice and this permission notice appear in all copies.
@@ -55,7 +55,7 @@
 _isis_uc_leaky_mode_get(a_uint32_t dev_id,
                         fal_leaky_ctrl_mode_t *ctrl_mode)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -107,7 +107,7 @@
 _isis_mc_leaky_mode_get(a_uint32_t dev_id,
                         fal_leaky_ctrl_mode_t *ctrl_mode)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -164,7 +164,7 @@
 _isis_port_arp_leaky_get(a_uint32_t dev_id, fal_port_t port_id,
                          a_bool_t *enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -226,7 +226,7 @@
 _isis_port_uc_leaky_get(a_uint32_t dev_id, fal_port_t port_id,
                         a_bool_t *enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -288,7 +288,7 @@
 _isis_port_mc_leaky_get(a_uint32_t dev_id, fal_port_t port_id,
                         a_bool_t *enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
diff --git a/src/hsl/isis/isis_led.c b/src/hsl/isis/isis_led.c
index fadccca..1f52c67 100755
--- a/src/hsl/isis/isis_led.c
+++ b/src/hsl/isis/isis_led.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016 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
  * above copyright notice and this permission notice appear in all copies.
@@ -30,7 +30,7 @@
 _isis_led_ctrl_pattern_set(a_uint32_t dev_id, led_pattern_group_t group,
                            led_pattern_id_t id, led_ctrl_pattern_t * pattern)
 {
-    a_uint32_t data = 0, reg, mode;
+    a_uint32_t data = 0, reg = 0, mode;
     a_uint32_t addr;
     sw_error_t rv;
 
@@ -208,7 +208,7 @@
 _isis_led_ctrl_pattern_get(a_uint32_t dev_id, led_pattern_group_t group,
                            led_pattern_id_t id, led_ctrl_pattern_t * pattern)
 {
-    a_uint32_t data = 0, reg, tmp;
+    a_uint32_t data = 0, reg = 0, tmp;
     a_uint32_t addr;
     sw_error_t rv;
 
diff --git a/src/hsl/isis/isis_mib.c b/src/hsl/isis/isis_mib.c
index d5abb0b..d2f9d3c 100755
--- a/src/hsl/isis/isis_mib.c
+++ b/src/hsl/isis/isis_mib.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016 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
  * above copyright notice and this permission notice appear in all copies.
@@ -28,7 +28,7 @@
 _isis_get_mib_info(a_uint32_t dev_id, fal_port_t port_id,
                    fal_mib_info_t * mib_info)
 {
-    a_uint32_t val;
+    a_uint32_t val = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -255,7 +255,7 @@
 _isis_get_rx_mib_info(a_uint32_t dev_id, fal_port_t port_id,
                    fal_mib_info_t * mib_info)
 {
-    a_uint32_t val;
+    a_uint32_t val = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -377,7 +377,7 @@
 _isis_get_tx_mib_info(a_uint32_t dev_id, fal_port_t port_id,
                    fal_mib_info_t * mib_info)
 {
-    a_uint32_t val;
+    a_uint32_t val = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -525,7 +525,7 @@
 _isis_mib_status_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/isis/isis_mirror.c b/src/hsl/isis/isis_mirror.c
index 59b218f..16a7d21 100755
--- a/src/hsl/isis/isis_mirror.c
+++ b/src/hsl/isis/isis_mirror.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -46,7 +46,7 @@
 _isis_mirr_analysis_port_get(a_uint32_t dev_id, fal_port_t * port_id)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -93,7 +93,7 @@
 _isis_mirr_port_in_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -153,7 +153,7 @@
 _isis_mirr_port_eg_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/isis/isis_misc.c b/src/hsl/isis/isis_misc.c
index 5a539e9..1f19793 100755
--- a/src/hsl/isis/isis_misc.c
+++ b/src/hsl/isis/isis_misc.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2015, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2015-2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -40,7 +40,7 @@
                              a_bool_t enable, a_uint32_t item)
 {
     sw_error_t rv;
-    a_uint32_t reg, val;
+    a_uint32_t reg = 0, val;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -94,7 +94,7 @@
                              a_bool_t * enable, a_uint32_t item)
 {
     sw_error_t rv;
-    a_uint32_t reg, val;
+    a_uint32_t reg = 0, val;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -154,7 +154,7 @@
 static sw_error_t
 _isis_frame_max_size_get(a_uint32_t dev_id, a_uint32_t * size)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -172,7 +172,7 @@
                              a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -208,7 +208,7 @@
                              a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -239,7 +239,7 @@
                              a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -275,7 +275,7 @@
                              a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -305,7 +305,7 @@
 _isis_port_bc_filter_set(a_uint32_t dev_id, fal_port_t port_id, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -341,7 +341,7 @@
                          a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -397,7 +397,7 @@
 _isis_cpu_port_status_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -447,7 +447,7 @@
 _isis_pppoe_cmd_get(a_uint32_t dev_id, fal_fwd_cmd_t * cmd)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -497,7 +497,7 @@
 _isis_pppoe_status_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -551,7 +551,7 @@
 _isis_arp_cmd_get(a_uint32_t dev_id, fal_fwd_cmd_t * cmd)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -605,7 +605,7 @@
 _isis_eapol_cmd_get(a_uint32_t dev_id, fal_fwd_cmd_t * cmd)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -632,7 +632,7 @@
 _isis_pppoe_session_add(a_uint32_t dev_id, fal_pppoe_session_t * session_tbl)
 {
     sw_error_t rv;
-    a_uint32_t reg, i, valid, id, entry_idx = ISIS_MAX_PPPOE_SESSION;
+    a_uint32_t reg = 0, i, valid, id, entry_idx = ISIS_MAX_PPPOE_SESSION;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -700,7 +700,7 @@
 _isis_pppoe_session_del(a_uint32_t dev_id, fal_pppoe_session_t * session_tbl)
 {
     sw_error_t rv;
-    a_uint32_t reg, i, valid, id;
+    a_uint32_t reg = 0, i, valid, id;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -735,7 +735,7 @@
 _isis_pppoe_session_get(a_uint32_t dev_id, fal_pppoe_session_t * session_tbl)
 {
     sw_error_t rv;
-    a_uint32_t reg, i, valid, id;
+    a_uint32_t reg = 0, i, valid, id;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -804,7 +804,7 @@
                            a_uint32_t * id)
 {
     sw_error_t rv;
-    a_uint32_t reg, tmp;
+    a_uint32_t reg = 0, tmp;
 
     if (ISIS_MAX_PPPOE_SESSION <= index)
     {
@@ -855,7 +855,7 @@
 static sw_error_t
 _isis_ripv1_status_get(a_uint32_t dev_id, a_bool_t * enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -885,7 +885,7 @@
 _isis_intr_mask_set(a_uint32_t dev_id, a_uint32_t intr_mask)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     HSL_REG_ENTRY_GET(rv, dev_id, GBL_INT_MASK1, 0, (a_uint8_t *) (&reg),
                       sizeof (a_uint32_t));
@@ -909,7 +909,7 @@
 _isis_intr_mask_get(a_uint32_t dev_id, a_uint32_t * intr_mask)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     *intr_mask = 0;
     HSL_REG_ENTRY_GET(rv, dev_id, GBL_INT_MASK1, 0, (a_uint8_t *) (&reg),
@@ -928,7 +928,7 @@
 _isis_intr_status_get(a_uint32_t dev_id, a_uint32_t * intr_status)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     *intr_status = 0;
     HSL_REG_ENTRY_GET(rv, dev_id, GBL_INT_STATUS1, 0, (a_uint8_t *) (&reg),
diff --git a/src/hsl/isis/isis_port_ctrl.c b/src/hsl/isis/isis_port_ctrl.c
index 1823818..aa3b30c 100755
--- a/src/hsl/isis/isis_port_ctrl.c
+++ b/src/hsl/isis/isis_port_ctrl.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2015, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2015-2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -43,7 +43,7 @@
                       fal_port_duplex_t duplex)
 {
     sw_error_t rv;
-    a_uint32_t phy_id, reg_save, reg_val, force, tmp;
+    a_uint32_t phy_id, reg_save, reg_val = 0, force, tmp;
     hsl_phy_ops_t *phy_drv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -131,7 +131,7 @@
                       fal_port_duplex_t * pduplex)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
     HSL_DEV_ID_CHECK(dev_id);
 
     if (A_TRUE != hsl_port_prop_check(dev_id, port_id, HSL_PP_INCL_CPU))
@@ -158,7 +158,7 @@
                      fal_port_speed_t speed)
 {
     sw_error_t rv;
-    a_uint32_t phy_id, reg_save, reg_val, force, tmp;
+    a_uint32_t phy_id, reg_save, reg_val = 0, force, tmp;
     hsl_phy_ops_t *phy_drv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -256,7 +256,7 @@
                      fal_port_speed_t * pspeed)
 {
     sw_error_t rv = SW_OK;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -429,7 +429,7 @@
 _isis_port_flowctrl_set(a_uint32_t dev_id, fal_port_t port_id, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t val, force, reg, tmp;
+    a_uint32_t val, force, reg = 0, tmp;
 
     if (A_TRUE != hsl_port_prop_check(dev_id, port_id, HSL_PP_INCL_CPU))
     {
@@ -477,7 +477,7 @@
                         a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t rx, reg;
+    a_uint32_t rx, reg = 0;
 
     if (A_TRUE != hsl_port_prop_check(dev_id, port_id, HSL_PP_INCL_CPU))
     {
@@ -507,7 +507,7 @@
                                   a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, tmp;
+    a_uint32_t reg = 0, tmp;
 
     if (A_TRUE != hsl_port_prop_check(dev_id, port_id, HSL_PP_INCL_CPU))
     {
@@ -551,7 +551,7 @@
                                   a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t force, reg;
+    a_uint32_t force, reg = 0;
 
     if (A_TRUE != hsl_port_prop_check(dev_id, port_id, HSL_PP_INCL_CPU))
     {
@@ -749,7 +749,7 @@
                           fal_port_header_mode_t * mode)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -819,7 +819,7 @@
                           fal_port_header_mode_t * mode)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -851,7 +851,7 @@
 static sw_error_t
 _isis_header_type_set(a_uint32_t dev_id, a_bool_t enable, a_uint32_t type)
 {
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -887,7 +887,7 @@
 static sw_error_t
 _isis_header_type_get(a_uint32_t dev_id, a_bool_t * enable, a_uint32_t * type)
 {
-    a_uint32_t data, reg;
+    a_uint32_t data, reg = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -916,7 +916,7 @@
 _isis_port_txmac_status_set(a_uint32_t dev_id, fal_port_t port_id, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, force, val, tmp;
+    a_uint32_t reg = 0, force, val, tmp;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -973,7 +973,7 @@
 _isis_port_txmac_status_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1002,7 +1002,7 @@
 _isis_port_rxmac_status_set(a_uint32_t dev_id, fal_port_t port_id, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, force, val, tmp;
+    a_uint32_t reg = 0, force, val, tmp;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1059,7 +1059,7 @@
 _isis_port_rxmac_status_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1088,7 +1088,7 @@
 _isis_port_txfc_status_set(a_uint32_t dev_id, fal_port_t port_id, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t val, reg, force, tmp;
+    a_uint32_t val, reg = 0, force, tmp;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1145,7 +1145,7 @@
 _isis_port_txfc_status_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1174,7 +1174,7 @@
 _isis_port_rxfc_status_set(a_uint32_t dev_id, fal_port_t port_id, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t val, reg, force, tmp;
+    a_uint32_t val, reg = 0, force, tmp;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1231,7 +1231,7 @@
 _isis_port_rxfc_status_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1260,7 +1260,7 @@
 _isis_port_bp_status_set(a_uint32_t dev_id, fal_port_t port_id, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t val, tmp;
+    a_uint32_t val, tmp = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1294,7 +1294,7 @@
 _isis_port_bp_status_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1323,7 +1323,7 @@
 _isis_port_link_forcemode_set(a_uint32_t dev_id, fal_port_t port_id, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, tmp;
+    a_uint32_t reg = 0, tmp;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1368,7 +1368,7 @@
 _isis_port_link_forcemode_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1469,7 +1469,7 @@
 _isis_port_mac_loopback_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t *enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/isis/isis_portvlan.c b/src/hsl/isis/isis_portvlan.c
index b97323a..596bc46 100755
--- a/src/hsl/isis/isis_portvlan.c
+++ b/src/hsl/isis/isis_portvlan.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -33,7 +33,7 @@
 _isis_port_route_defv_set(a_uint32_t dev_id, fal_port_t port_id)
 {
     sw_error_t rv;
-    a_uint32_t data, reg;
+    a_uint32_t data = 0, reg = 0;
 
     HSL_REG_FIELD_GET(rv, dev_id, PORT_VLAN1, port_id,
                       COREP_EN, (a_uint8_t *) (&data), sizeof (a_uint32_t));
@@ -143,7 +143,7 @@
                           fal_pt_1q_egmode_t port_egvlanmode)
 {
     sw_error_t rv;
-    a_uint32_t data, regval[FAL_EG_MODE_BUTT] = { 0, 1, 2, 3, 3 };
+    a_uint32_t data = 0, regval[FAL_EG_MODE_BUTT] = { 0, 1, 2, 3, 3 };
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -358,7 +358,7 @@
                                  a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -420,7 +420,7 @@
                               a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -463,7 +463,7 @@
 _isis_nestvlan_tpid_get(a_uint32_t dev_id, a_uint32_t * tpid)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -567,7 +567,7 @@
 _isis_port_tls_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -630,7 +630,7 @@
                                a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -690,7 +690,7 @@
                             a_uint32_t * vid)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -740,7 +740,7 @@
                             a_uint32_t * vid)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -761,7 +761,7 @@
                                 fal_vlan_propagation_mode_t mode)
 {
     sw_error_t rv;
-    a_uint32_t reg, p, c;
+    a_uint32_t reg = 0, p, c;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -807,7 +807,7 @@
                                 fal_vlan_propagation_mode_t * mode)
 {
     sw_error_t rv;
-    a_uint32_t reg, p, c;
+    a_uint32_t reg = 0, p, c;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -847,7 +847,7 @@
                       fal_pbmp_t * pbmp, fal_vlan_trans_entry_t * entry)
 {
     sw_error_t rv;
-    a_uint32_t i, addr, dir, table[2];
+    a_uint32_t i, addr, dir, table[2] = {0};
 
     *pbmp = 0;
     aos_mem_zero(entry, sizeof (fal_vlan_trans_entry_t));
@@ -1347,7 +1347,7 @@
                             a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/isis/isis_rate.c b/src/hsl/isis/isis_rate.c
index 1fd4c25..8e516ed 100755
--- a/src/hsl/isis/isis_rate.c
+++ b/src/hsl/isis/isis_rate.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016 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
  * above copyright notice and this permission notice appear in all copies.
@@ -408,7 +408,7 @@
                             fal_port_policer_t * policer)
 {
     sw_error_t rv;
-    a_uint32_t unit, ts, cir, eir, cbs, ebs, data[3];
+    a_uint32_t unit, ts, cir, eir, cbs, ebs, data[3] = {0};
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -582,7 +582,7 @@
                            a_bool_t * enable, fal_egress_shaper_t * shaper)
 {
     sw_error_t rv;
-    a_uint32_t data, cir, eir, cbs = 0, ebs = 0;
+    a_uint32_t data = 0, cir = 0, eir = 0, cbs = 0, ebs = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -858,7 +858,7 @@
                             fal_egress_shaper_t * shaper)
 {
     sw_error_t rv;
-    a_uint32_t data, cir, eir, cbs = 0, ebs = 0;
+    a_uint32_t data = 0, cir = 0, eir = 0, cbs = 0, ebs = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1170,7 +1170,7 @@
                            fal_acl_policer_t * policer)
 {
     sw_error_t rv;
-    a_uint32_t unit, ts, cir, eir, cbs, ebs, addr, data[2];
+    a_uint32_t unit, ts, cir, eir, cbs, ebs, addr, data[2] = {0};
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/isis/isis_sec.c b/src/hsl/isis/isis_sec.c
index b6ee68e..912d09c 100755
--- a/src/hsl/isis/isis_sec.c
+++ b/src/hsl/isis/isis_sec.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -35,7 +35,7 @@
     sw_error_t rv;
     fal_fwd_cmd_t cmd;
     a_bool_t enable;
-    a_uint32_t addr, offset, len, reg, val;
+    a_uint32_t addr, offset, len, reg = 0, val;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -383,7 +383,7 @@
 _isis_sec_norm_item_get(a_uint32_t dev_id, fal_norm_item_t item, void *value)
 {
     sw_error_t rv;
-    a_uint32_t addr, offset, len, reg, val;
+    a_uint32_t addr, offset, len, reg = 0, val;
     a_uint32_t status_chk = 0, val_chk = 0, scmd_chk = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
diff --git a/src/hsl/isis/isis_stp.c b/src/hsl/isis/isis_stp.c
index f4ab8ec..3d0581b 100755
--- a/src/hsl/isis/isis_stp.c
+++ b/src/hsl/isis/isis_stp.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -80,7 +80,7 @@
                          fal_port_t port_id, fal_stp_state_t * state)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/isis/isis_trunk.c b/src/hsl/isis/isis_trunk.c
index ac0e983..d0767d2 100755
--- a/src/hsl/isis/isis_trunk.c
+++ b/src/hsl/isis/isis_trunk.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -60,7 +60,7 @@
                       a_bool_t enable, fal_pbmp_t member)
 {
     sw_error_t rv;
-    a_uint32_t i, reg, cnt = 0, data0 = 0, data1 = 0;
+    a_uint32_t i, reg = 0, cnt = 0, data0 = 0, data1 = 0;
 
     if (ISIS_MAX_TRUNK_ID < trunk_id)
     {
@@ -136,7 +136,7 @@
                       a_bool_t * enable, fal_pbmp_t * member)
 {
     sw_error_t rv;
-    a_uint32_t data, reg;
+    a_uint32_t data, reg = 0;
 
     if (ISIS_MAX_TRUNK_ID < trunk_id)
     {
@@ -231,7 +231,7 @@
 _isis_trunk_hash_mode_get(a_uint32_t dev_id, a_uint32_t * hash_mode)
 {
     sw_error_t rv;
-    a_uint32_t reg, data = 0;
+    a_uint32_t reg = 0, data = 0;
 
     HSL_REG_ENTRY_GET(rv, dev_id, TRUNK_HASH_MODE, 0,
                       (a_uint8_t *) (&reg), sizeof (a_uint32_t));
diff --git a/src/hsl/isisc/isisc_fdb.c b/src/hsl/isisc/isisc_fdb.c
index 82155da..6a47bee 100755
--- a/src/hsl/isisc/isisc_fdb.c
+++ b/src/hsl/isisc/isisc_fdb.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -30,7 +30,7 @@
 _isisc_wl_feature_check(a_uint32_t dev_id)
 {
     sw_error_t rv;
-    a_uint32_t entry;
+    a_uint32_t entry = 0;
 
     HSL_REG_FIELD_GET(rv, dev_id, MASK_CTL, 0, DEVICE_ID,
                       (a_uint8_t *) (&entry), sizeof (a_uint32_t));
@@ -350,7 +350,7 @@
     a_uint32_t busy = 1;
     a_uint32_t full_vio;
     a_uint32_t i = 2000;
-    a_uint32_t entry;
+    a_uint32_t entry = 0;
     a_uint32_t hwop = op;
 
     while (busy && --i)
@@ -769,7 +769,7 @@
 _isisc_fdb_port_learn_get(a_uint32_t dev_id, fal_port_t port_id,
                          a_bool_t * enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -839,7 +839,7 @@
 static sw_error_t
 _isisc_fdb_vlan_ivl_svl_get(a_uint32_t dev_id, fal_fdb_smode* smode)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -857,7 +857,7 @@
 static sw_error_t
 _isisc_fdb_age_ctrl_get(a_uint32_t dev_id, a_bool_t * enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -900,7 +900,7 @@
 static sw_error_t
 _isisc_fdb_age_time_get(a_uint32_t dev_id, a_uint32_t * time)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -918,7 +918,7 @@
                                a_bool_t enable, a_uint32_t cnt)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -960,7 +960,7 @@
                                a_bool_t * enable, a_uint32_t * cnt)
 {
     sw_error_t rv;
-    a_uint32_t data, reg;
+    a_uint32_t data, reg = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1057,7 +1057,7 @@
 _isisc_fdb_learn_limit_set(a_uint32_t dev_id, a_bool_t enable, a_uint32_t cnt)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     HSL_REG_ENTRY_GET(rv, dev_id, GLOBAL_LEARN_LIMIT_CTL, 0,
                       (a_uint8_t *) (&reg), sizeof (a_uint32_t));
@@ -1094,7 +1094,7 @@
                           a_uint32_t * cnt)
 {
     sw_error_t rv;
-    a_uint32_t data, reg;
+    a_uint32_t data, reg = 0;
 
     HSL_REG_ENTRY_GET(rv, dev_id, GLOBAL_LEARN_LIMIT_CTL, 0,
                       (a_uint8_t *) (&reg), sizeof (a_uint32_t));
@@ -1541,7 +1541,7 @@
 _isisc_fdb_port_learn_static_get(a_uint32_t dev_id, fal_port_t port_id,
                                 a_bool_t * enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
diff --git a/src/hsl/isisc/isisc_igmp.c b/src/hsl/isisc/isisc_igmp.c
index d1fbe21..83a3df4 100755
--- a/src/hsl/isisc/isisc_igmp.c
+++ b/src/hsl/isisc/isisc_igmp.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016 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
  * above copyright notice and this permission notice appear in all copies.
@@ -47,7 +47,7 @@
                              a_bool_t enable, a_uint32_t item)
 {
     sw_error_t rv;
-    a_uint32_t reg, val;
+    a_uint32_t reg = 0, val;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -101,7 +101,7 @@
                              a_bool_t * enable, a_uint32_t item)
 {
     sw_error_t rv;
-    a_uint32_t reg, val;
+    a_uint32_t reg = 0, val;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -169,7 +169,7 @@
 _isisc_igmp_mld_cmd_get(a_uint32_t dev_id, fal_fwd_cmd_t * cmd)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -211,7 +211,7 @@
 _isisc_igmp_mld_rp_get(a_uint32_t dev_id, fal_pbmp_t * pts)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -253,7 +253,7 @@
 _isisc_igmp_mld_entry_creat_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -303,7 +303,7 @@
 _isisc_igmp_mld_entry_static_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -353,7 +353,7 @@
 _isisc_igmp_mld_entry_leaky_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -403,7 +403,7 @@
 _isisc_igmp_mld_entry_v3_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -428,7 +428,7 @@
                                a_uint32_t queue)
 {
     sw_error_t rv;
-    a_uint32_t entry;
+    a_uint32_t entry = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -461,7 +461,7 @@
                                a_uint32_t * queue)
 {
     sw_error_t rv;
-    a_uint32_t entry, data;
+    a_uint32_t entry = 0, data;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -490,7 +490,7 @@
                                     a_bool_t enable, a_uint32_t cnt)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -532,7 +532,7 @@
                                     a_bool_t * enable, a_uint32_t * cnt)
 {
     sw_error_t rv;
-    a_uint32_t data, reg;
+    a_uint32_t data, reg = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/isisc/isisc_interface_ctrl.c b/src/hsl/isisc/isisc_interface_ctrl.c
index 55d44d8..bd8da9a 100755
--- a/src/hsl/isisc/isisc_interface_ctrl.c
+++ b/src/hsl/isisc/isisc_interface_ctrl.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2015, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2015-2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -95,7 +95,7 @@
 _isisc_port_3az_status_set(a_uint32_t dev_id, fal_port_t port_id, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, field, offset, device_id, rev_id, reverse = 0;
+    a_uint32_t reg = 0, field, offset, device_id, rev_id, reverse = 0;
 
     HSL_REG_ENTRY_GET(rv, dev_id, MASK_CTL, 0,
                       (a_uint8_t *) (&reg), sizeof (a_uint32_t));
@@ -166,7 +166,7 @@
 _isisc_port_3az_status_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, field, offset, device_id, rev_id, reverse = 0;
+    a_uint32_t reg = 0, field, offset, device_id, rev_id, reverse = 0;
 
     HSL_REG_ENTRY_GET(rv, dev_id, MASK_CTL, 0,
                       (a_uint8_t *) (&reg), sizeof (a_uint32_t));
@@ -230,7 +230,7 @@
 _isisc_port_rgmii_mode_set(a_uint32_t dev_id, fal_port_t port_id, fal_mac_rgmii_config_t * config)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     if (ISISC_MAC_0 == port_id)
     {
@@ -333,7 +333,7 @@
 _isisc_port_rgmii_mode_get(a_uint32_t dev_id, fal_port_t port_id, fal_mac_rgmii_config_t * config)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     if (ISISC_MAC_0 == port_id)
     {
@@ -389,7 +389,7 @@
 _isisc_interface_mac06_exch_set(a_uint32_t dev_id, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
 
     HSL_REG_ENTRY_GET(rv, dev_id, PORT0_PAD_CTRL, 0,
@@ -416,7 +416,7 @@
 _isisc_interface_mac06_exch_get(a_uint32_t dev_id, a_bool_t* enable)
 {
     sw_error_t rv;
-    a_uint32_t reg,field;
+    a_uint32_t reg = 0,field;
 
 
     HSL_REG_ENTRY_GET(rv, dev_id, PORT0_PAD_CTRL, 0,
@@ -455,7 +455,7 @@
 _isisc_interface_mac_sgmii_get(a_uint32_t dev_id, a_uint32_t *value)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     HSL_REG_ENTRY_GET(rv, dev_id, SGMII_CTRL, 0,
                       (a_uint8_t *) (&reg), sizeof (a_uint32_t));
@@ -500,7 +500,7 @@
 _isisc_interface_mac_pad_get(a_uint32_t dev_id,a_uint32_t port_num, a_uint32_t *value)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     switch (port_num)
     {
@@ -532,7 +532,7 @@
 _isisc_port_rmii_mode_set(a_uint32_t dev_id, fal_port_t port_id, fal_mac_rmii_config_t * config)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     if (ISISC_MAC_0 == port_id)
     {
@@ -626,7 +626,7 @@
 _isisc_port_rmii_mode_get(a_uint32_t dev_id, fal_port_t port_id, fal_mac_rmii_config_t * config)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     if (ISISC_MAC_0 == port_id)
     {
@@ -687,7 +687,7 @@
 _isisc_port_gmii_mode_set(a_uint32_t dev_id, fal_port_t port_id, fal_mac_gmii_config_t * config)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     if (ISISC_MAC_0 == port_id)
     {
@@ -776,7 +776,7 @@
 _isisc_port_gmii_mode_get(a_uint32_t dev_id, fal_port_t port_id, fal_mac_gmii_config_t * config)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     if (ISISC_MAC_0 == port_id)
     {
@@ -820,7 +820,7 @@
 _isisc_port_mii_mode_set(a_uint32_t dev_id, fal_port_t port_id, fal_mac_mii_config_t * config)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     if (ISISC_MAC_0 == port_id)
     {
@@ -922,7 +922,7 @@
 _isisc_port_mii_mode_get(a_uint32_t dev_id, fal_port_t port_id, fal_mac_mii_config_t * config)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     if (ISISC_MAC_0 == port_id)
     {
@@ -970,7 +970,7 @@
 _isisc_port_sgmii_mode_set(a_uint32_t dev_id, fal_port_t port_id, fal_mac_sgmii_config_t * config)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     if (ISISC_MAC_0 == port_id)
     {
@@ -1129,7 +1129,7 @@
 _isisc_port_sgmii_mode_get(a_uint32_t dev_id, fal_port_t port_id, fal_mac_sgmii_config_t * config)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     if (ISISC_MAC_0 == port_id)
     {
@@ -1200,7 +1200,7 @@
 _isisc_port_fiber_mode_set(a_uint32_t dev_id, fal_port_t port_id, fal_mac_fiber_config_t * config)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     if (ISISC_MAC_0 == port_id)
     {
@@ -1350,7 +1350,7 @@
 _isisc_port_fiber_mode_get(a_uint32_t dev_id, fal_port_t port_id, fal_mac_fiber_config_t * config)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     if (ISISC_MAC_0 == port_id)
     {
@@ -1400,7 +1400,7 @@
 _isisc_port_default_mode_set(a_uint32_t dev_id, fal_port_t port_id)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     if (ISISC_MAC_0 == port_id)
     {
@@ -1512,7 +1512,7 @@
 _isisc_interface_mac_mode_get(a_uint32_t dev_id, fal_port_t port_id, fal_mac_config_t * config)
 {
     sw_error_t rv;
-    a_uint32_t reg, field, field2;
+    a_uint32_t reg = 0, field, field2;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1729,7 +1729,7 @@
 {
     sw_error_t rv;
     a_uint16_t data;
-    a_uint32_t reg, rgmii;
+    a_uint32_t reg = 0, rgmii;
     hsl_phy_ops_t *phy_drv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -1789,7 +1789,7 @@
 _isisc_interface_fx100_ctrl_set(a_uint32_t dev_id, fal_fx100_ctrl_config_t* config)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1900,7 +1900,7 @@
 _isisc_interface_fx100_ctrl_get(a_uint32_t dev_id, fal_fx100_ctrl_config_t* config)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -2001,7 +2001,7 @@
 _isisc_interface_fx100_status_get(a_uint32_t dev_id, a_uint32_t* status)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/isisc/isisc_leaky.c b/src/hsl/isisc/isisc_leaky.c
index be99878..14a3dda 100755
--- a/src/hsl/isisc/isisc_leaky.c
+++ b/src/hsl/isisc/isisc_leaky.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016 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
  * above copyright notice and this permission notice appear in all copies.
@@ -55,7 +55,7 @@
 _isisc_uc_leaky_mode_get(a_uint32_t dev_id,
                         fal_leaky_ctrl_mode_t *ctrl_mode)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -107,7 +107,7 @@
 _isisc_mc_leaky_mode_get(a_uint32_t dev_id,
                         fal_leaky_ctrl_mode_t *ctrl_mode)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -164,7 +164,7 @@
 _isisc_port_arp_leaky_get(a_uint32_t dev_id, fal_port_t port_id,
                          a_bool_t *enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -226,7 +226,7 @@
 _isisc_port_uc_leaky_get(a_uint32_t dev_id, fal_port_t port_id,
                         a_bool_t *enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -288,7 +288,7 @@
 _isisc_port_mc_leaky_get(a_uint32_t dev_id, fal_port_t port_id,
                         a_bool_t *enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
diff --git a/src/hsl/isisc/isisc_led.c b/src/hsl/isisc/isisc_led.c
index 5468dfc..fd3aebc 100755
--- a/src/hsl/isisc/isisc_led.c
+++ b/src/hsl/isisc/isisc_led.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -208,7 +208,7 @@
 _isisc_led_ctrl_pattern_get(a_uint32_t dev_id, led_pattern_group_t group,
                            led_pattern_id_t id, led_ctrl_pattern_t * pattern)
 {
-    a_uint32_t data = 0, reg, tmp;
+    a_uint32_t data = 0, reg = 0, tmp;
     a_uint32_t addr;
     sw_error_t rv;
 
diff --git a/src/hsl/isisc/isisc_mib.c b/src/hsl/isisc/isisc_mib.c
index 5a640ce..5ca5def 100755
--- a/src/hsl/isisc/isisc_mib.c
+++ b/src/hsl/isisc/isisc_mib.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016 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
  * above copyright notice and this permission notice appear in all copies.
@@ -76,7 +76,7 @@
 _isisc_get_mib_info(a_uint32_t dev_id, fal_port_t port_id,
                    fal_mib_info_t * mib_info)
 {
-    a_uint32_t val;
+    a_uint32_t val = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -315,7 +315,7 @@
 _isisc_get_rx_mib_info(a_uint32_t dev_id, fal_port_t port_id,
                    fal_mib_info_t * mib_info)
 {
-    a_uint32_t val;
+    a_uint32_t val = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -443,7 +443,7 @@
 _isisc_get_tx_mib_info(a_uint32_t dev_id, fal_port_t port_id,
                    fal_mib_info_t * mib_info)
 {
-    a_uint32_t val;
+    a_uint32_t val = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -597,7 +597,7 @@
 _isisc_mib_status_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -649,7 +649,7 @@
 _isisc_mib_cpukeep_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/isisc/isisc_mirror.c b/src/hsl/isisc/isisc_mirror.c
index 34dfcca..12441dc 100755
--- a/src/hsl/isisc/isisc_mirror.c
+++ b/src/hsl/isisc/isisc_mirror.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -46,7 +46,7 @@
 _isisc_mirr_analysis_port_get(a_uint32_t dev_id, fal_port_t * port_id)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -93,7 +93,7 @@
 _isisc_mirr_port_in_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -153,7 +153,7 @@
 _isisc_mirr_port_eg_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/isisc/isisc_misc.c b/src/hsl/isisc/isisc_misc.c
index 7b5c0fd..a33189b 100755
--- a/src/hsl/isisc/isisc_misc.c
+++ b/src/hsl/isisc/isisc_misc.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2015, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2015-2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -41,7 +41,7 @@
                              a_bool_t enable, a_uint32_t item)
 {
     sw_error_t rv;
-    a_uint32_t reg, val;
+    a_uint32_t reg = 0, val;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -96,7 +96,7 @@
                              a_bool_t * enable, a_uint32_t item)
 {
     sw_error_t rv;
-    a_uint32_t reg, val;
+    a_uint32_t reg = 0, val;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -157,7 +157,7 @@
 static sw_error_t
 _isisc_frame_max_size_get(a_uint32_t dev_id, a_uint32_t * size)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -175,7 +175,7 @@
                              a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -212,7 +212,7 @@
                              a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -248,7 +248,7 @@
 _isisc_port_bc_filter_set(a_uint32_t dev_id, fal_port_t port_id, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -311,7 +311,7 @@
                          a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -342,7 +342,7 @@
                              a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -373,7 +373,7 @@
                              a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -403,7 +403,7 @@
 _isisc_cpu_port_status_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -453,7 +453,7 @@
 _isisc_cpu_vid_en_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -503,7 +503,7 @@
 _isisc_rtd_pppoe_en_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -554,7 +554,7 @@
 _isisc_pppoe_cmd_get(a_uint32_t dev_id, fal_fwd_cmd_t * cmd)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -604,7 +604,7 @@
 _isisc_pppoe_status_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -658,7 +658,7 @@
 _isisc_arp_cmd_get(a_uint32_t dev_id, fal_fwd_cmd_t * cmd)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -714,7 +714,7 @@
 _isisc_eapol_cmd_get(a_uint32_t dev_id, fal_fwd_cmd_t * cmd)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -741,7 +741,7 @@
 _isisc_pppoe_session_add(a_uint32_t dev_id, fal_pppoe_session_t * session_tbl)
 {
     sw_error_t rv;
-    a_uint32_t reg, i, valid, id, entry_idx = ISISC_MAX_PPPOE_SESSION;
+    a_uint32_t reg = 0, i, valid, id, entry_idx = ISISC_MAX_PPPOE_SESSION;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -811,7 +811,7 @@
 _isisc_pppoe_session_del(a_uint32_t dev_id, fal_pppoe_session_t * session_tbl)
 {
     sw_error_t rv;
-    a_uint32_t reg, i, valid, id;
+    a_uint32_t reg = 0, i, valid, id;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -846,7 +846,7 @@
 _isisc_pppoe_session_get(a_uint32_t dev_id, fal_pppoe_session_t * session_tbl)
 {
     sw_error_t rv;
-    a_uint32_t reg, i, valid, id;
+    a_uint32_t reg = 0, i, valid, id;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -915,7 +915,7 @@
                            a_uint32_t * id)
 {
     sw_error_t rv;
-    a_uint32_t reg, tmp;
+    a_uint32_t reg = 0, tmp;
 
     if (ISISC_MAX_PPPOE_SESSION <= index)
     {
@@ -966,7 +966,7 @@
 static sw_error_t
 _isisc_ripv1_status_get(a_uint32_t dev_id, a_bool_t * enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -996,7 +996,7 @@
 _isisc_intr_mask_set(a_uint32_t dev_id, a_uint32_t intr_mask)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     HSL_REG_ENTRY_GET(rv, dev_id, GBL_INT_MASK1, 0, (a_uint8_t *) (&reg),
                       sizeof (a_uint32_t));
@@ -1020,7 +1020,7 @@
 _isisc_intr_mask_get(a_uint32_t dev_id, a_uint32_t * intr_mask)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     *intr_mask = 0;
     HSL_REG_ENTRY_GET(rv, dev_id, GBL_INT_MASK1, 0, (a_uint8_t *) (&reg),
@@ -1039,7 +1039,7 @@
 _isisc_intr_status_get(a_uint32_t dev_id, a_uint32_t * intr_status)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     *intr_status = 0;
     HSL_REG_ENTRY_GET(rv, dev_id, GBL_INT_STATUS1, 0, (a_uint8_t *) (&reg),
@@ -1150,7 +1150,7 @@
 _isisc_intr_mask_mac_linkchg_set(a_uint32_t dev_id, a_uint32_t port_id, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1187,7 +1187,7 @@
 _isisc_intr_mask_mac_linkchg_get(a_uint32_t dev_id, a_uint32_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1218,7 +1218,7 @@
 _isisc_intr_status_mac_linkchg_get(a_uint32_t dev_id, fal_pbmp_t* port_bitmap)
 {
     sw_error_t rv;
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/isisc/isisc_port_ctrl.c b/src/hsl/isisc/isisc_port_ctrl.c
index d252d67..bc61810 100755
--- a/src/hsl/isisc/isisc_port_ctrl.c
+++ b/src/hsl/isisc/isisc_port_ctrl.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2015, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2015-2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -43,7 +43,7 @@
                       fal_port_duplex_t duplex)
 {
     sw_error_t rv;
-    a_uint32_t phy_id, reg_save, reg_val, force, tmp;
+    a_uint32_t phy_id, reg_save, reg_val = 0, force, tmp;
     hsl_phy_ops_t *phy_drv;
     a_bool_t status;
 
@@ -132,7 +132,7 @@
                      fal_port_speed_t speed)
 {
     sw_error_t rv;
-    a_uint32_t phy_id, reg_save, reg_val, force, tmp;
+    a_uint32_t phy_id, reg_save, reg_val = 0, force, tmp;
     hsl_phy_ops_t *phy_drv;
     a_bool_t status;
 
@@ -232,7 +232,7 @@
 _isisc_port_flowctrl_set(a_uint32_t dev_id, fal_port_t port_id, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t val, force, reg, tmp;
+    a_uint32_t val, force, reg = 0, tmp;
 
     if (A_TRUE != hsl_port_prop_check(dev_id, port_id, HSL_PP_INCL_CPU))
     {
@@ -280,7 +280,7 @@
                                   a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, tmp;
+    a_uint32_t reg = 0, tmp;
 
     if (A_TRUE != hsl_port_prop_check(dev_id, port_id, HSL_PP_INCL_CPU))
     {
@@ -566,7 +566,7 @@
                         a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t rx, reg;
+    a_uint32_t rx, reg = 0;
 
     if (A_TRUE != hsl_port_prop_check(dev_id, port_id, HSL_PP_INCL_CPU))
     {
@@ -759,7 +759,7 @@
                           fal_port_header_mode_t mode)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -829,7 +829,7 @@
                           fal_port_header_mode_t mode)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -897,7 +897,7 @@
 static sw_error_t
 _isisc_header_type_set(a_uint32_t dev_id, a_bool_t enable, a_uint32_t type)
 {
-    a_uint32_t reg;
+    a_uint32_t reg = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -933,7 +933,7 @@
 static sw_error_t
 _isisc_header_type_get(a_uint32_t dev_id, a_bool_t * enable, a_uint32_t * type)
 {
-    a_uint32_t data, reg;
+    a_uint32_t data, reg = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -962,7 +962,7 @@
 _isisc_port_txmac_status_set(a_uint32_t dev_id, fal_port_t port_id, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, force, val, tmp;
+    a_uint32_t reg, force, val = 0, tmp;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1019,7 +1019,7 @@
 _isisc_port_txmac_status_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1048,7 +1048,7 @@
 _isisc_port_rxmac_status_set(a_uint32_t dev_id, fal_port_t port_id, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, force, val, tmp;
+    a_uint32_t reg = 0, force, val = 0, tmp;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1134,7 +1134,7 @@
 _isisc_port_txfc_status_set(a_uint32_t dev_id, fal_port_t port_id, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t val, reg, force, tmp;
+    a_uint32_t val, reg = 0, force, tmp;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1220,7 +1220,7 @@
 _isisc_port_rxfc_status_set(a_uint32_t dev_id, fal_port_t port_id, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t val, reg, force, tmp;
+    a_uint32_t val = 0, reg, force, tmp;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1398,7 +1398,7 @@
 _isisc_port_link_forcemode_set(a_uint32_t dev_id, fal_port_t port_id, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, tmp;
+    a_uint32_t reg = 0, tmp = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1446,7 +1446,7 @@
 _isisc_port_link_forcemode_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1476,7 +1476,7 @@
 _isisc_port_bp_status_set(a_uint32_t dev_id, fal_port_t port_id, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t val, tmp;
+    a_uint32_t val = 0, tmp;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1585,7 +1585,7 @@
 _isisc_port_mac_loopback_set(a_uint32_t dev_id, fal_port_t port_id, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/isisc/isisc_portvlan.c b/src/hsl/isisc/isisc_portvlan.c
index 40259db..bac24ac 100755
--- a/src/hsl/isisc/isisc_portvlan.c
+++ b/src/hsl/isisc/isisc_portvlan.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -33,7 +33,7 @@
 _isisc_port_route_defv_set(a_uint32_t dev_id, fal_port_t port_id)
 {
     sw_error_t rv;
-    a_uint32_t data, reg;
+    a_uint32_t data = 0, reg = 0;
 
     HSL_REG_FIELD_GET(rv, dev_id, PORT_VLAN1, port_id,
                       COREP_EN, (a_uint8_t *) (&data), sizeof (a_uint32_t));
@@ -143,7 +143,7 @@
                           fal_pt_1q_egmode_t port_egvlanmode)
 {
     sw_error_t rv;
-    a_uint32_t data, regval[FAL_EG_MODE_BUTT] = { 0, 1, 2, 3, 3 };
+    a_uint32_t data = 0, regval[FAL_EG_MODE_BUTT] = { 0, 1, 2, 3, 3 };
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -358,7 +358,7 @@
                                  a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -420,7 +420,7 @@
                               a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -463,7 +463,7 @@
 _isisc_nestvlan_tpid_get(a_uint32_t dev_id, a_uint32_t * tpid)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -568,7 +568,7 @@
 _isisc_port_tls_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -631,7 +631,7 @@
                                a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -691,7 +691,7 @@
                             a_uint32_t * vid)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -741,7 +741,7 @@
                             a_uint32_t * vid)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -762,7 +762,7 @@
                                 fal_vlan_propagation_mode_t mode)
 {
     sw_error_t rv;
-    a_uint32_t reg, p, c;
+    a_uint32_t reg = 0, p, c;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -857,7 +857,7 @@
                                 fal_vlan_propagation_mode_t * mode)
 {
     sw_error_t rv;
-    a_uint32_t reg, p, c;
+    a_uint32_t reg = 0, p, c;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -897,7 +897,7 @@
                       fal_pbmp_t * pbmp, fal_vlan_trans_entry_t * entry)
 {
     sw_error_t rv;
-    a_uint32_t i, addr, dir, table[2];
+    a_uint32_t i, addr, dir, table[2] = {0};
 
     *pbmp = 0;
     aos_mem_zero(entry, sizeof (fal_vlan_trans_entry_t));
@@ -1350,7 +1350,7 @@
                             a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1393,7 +1393,7 @@
 _isisc_netisolate_get(a_uint32_t dev_id, a_uint32_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1423,7 +1423,7 @@
 _isisc_eg_trans_filter_bypass_en_get(a_uint32_t dev_id, a_uint32_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/isisc/isisc_rate.c b/src/hsl/isisc/isisc_rate.c
index a724d7e..0cbe6b0 100755
--- a/src/hsl/isisc/isisc_rate.c
+++ b/src/hsl/isisc/isisc_rate.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016 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
  * above copyright notice and this permission notice appear in all copies.
@@ -408,7 +408,7 @@
                             fal_port_policer_t * policer)
 {
     sw_error_t rv;
-    a_uint32_t unit, ts, cir, eir, cbs, ebs, data[3];
+    a_uint32_t unit, ts, cir, eir, cbs, ebs, data[3] = {0};
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -582,7 +582,7 @@
                            a_bool_t * enable, fal_egress_shaper_t * shaper)
 {
     sw_error_t rv;
-    a_uint32_t data, cir, eir, cbs = 0, ebs = 0;
+    a_uint32_t data = 0, cir = 0, eir = 0, cbs = 0, ebs = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -858,7 +858,7 @@
                             fal_egress_shaper_t * shaper)
 {
     sw_error_t rv;
-    a_uint32_t data, cir, eir, cbs = 0, ebs = 0;
+    a_uint32_t data = 0, cir = 0, eir = 0, cbs = 0, ebs = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1170,7 +1170,7 @@
                            fal_acl_policer_t * policer)
 {
     sw_error_t rv;
-    a_uint32_t unit, ts, cir, eir, cbs, ebs, addr, data[2];
+    a_uint32_t unit, ts, cir, eir, cbs, ebs, addr, data[2] = {0};
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1308,7 +1308,7 @@
 _isisc_rate_port_gol_flow_en_set(a_uint32_t dev_id, fal_port_t port_id,
                                 a_bool_t  enable)
 {
-    a_uint32_t val;
+    a_uint32_t val = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -1347,7 +1347,7 @@
 _isisc_rate_port_gol_flow_en_get(a_uint32_t dev_id, fal_port_t port_id,
                                 a_bool_t*  enable)
 {
-    a_uint32_t val;
+    a_uint32_t val = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
diff --git a/src/hsl/isisc/isisc_sec.c b/src/hsl/isisc/isisc_sec.c
index 5cba438..579868f 100755
--- a/src/hsl/isisc/isisc_sec.c
+++ b/src/hsl/isisc/isisc_sec.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -35,7 +35,7 @@
     sw_error_t rv;
     fal_fwd_cmd_t cmd;
     a_bool_t enable;
-    a_uint32_t addr, offset, len, reg, val;
+    a_uint32_t addr, offset, len, reg = 0, val;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -383,7 +383,7 @@
 _isisc_sec_norm_item_get(a_uint32_t dev_id, fal_norm_item_t item, void *value)
 {
     sw_error_t rv;
-    a_uint32_t addr, offset, len, reg, val;
+    a_uint32_t addr, offset, len, reg = 0, val;
     a_uint32_t status_chk = 0, val_chk = 0, scmd_chk = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
diff --git a/src/hsl/isisc/isisc_stp.c b/src/hsl/isisc/isisc_stp.c
index 4e3f8d7..dc17162 100755
--- a/src/hsl/isisc/isisc_stp.c
+++ b/src/hsl/isisc/isisc_stp.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -80,7 +80,7 @@
                          fal_port_t port_id, fal_stp_state_t * state)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/isisc/isisc_trunk.c b/src/hsl/isisc/isisc_trunk.c
index 595bbf8..2ed7936 100755
--- a/src/hsl/isisc/isisc_trunk.c
+++ b/src/hsl/isisc/isisc_trunk.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -60,7 +60,7 @@
                       a_bool_t enable, fal_pbmp_t member)
 {
     sw_error_t rv;
-    a_uint32_t i, reg, cnt = 0, data0 = 0, data1 = 0;
+    a_uint32_t i, reg = 0, cnt = 0, data0 = 0, data1 = 0;
 
     if (ISISC_MAX_TRUNK_ID < trunk_id)
     {
@@ -136,7 +136,7 @@
                       a_bool_t * enable, fal_pbmp_t * member)
 {
     sw_error_t rv;
-    a_uint32_t data, reg;
+    a_uint32_t data, reg = 0;
 
     if (ISISC_MAX_TRUNK_ID < trunk_id)
     {
@@ -231,7 +231,7 @@
 _isisc_trunk_hash_mode_get(a_uint32_t dev_id, a_uint32_t * hash_mode)
 {
     sw_error_t rv;
-    a_uint32_t reg, data = 0;
+    a_uint32_t reg = 0, data = 0;
 
     HSL_REG_ENTRY_GET(rv, dev_id, TRUNK_HASH_MODE, 0,
                       (a_uint8_t *) (&reg), sizeof (a_uint32_t));
diff --git a/src/hsl/phy/f1_phy.c b/src/hsl/phy/f1_phy.c
index 29968cd..5e22d9d 100755
--- a/src/hsl/phy/f1_phy.c
+++ b/src/hsl/phy/f1_phy.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2015, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2015-2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -30,7 +30,7 @@
 _phy_reg_read(a_uint32_t dev_id, a_uint32_t phy_addr, a_uint32_t reg)
 {
     sw_error_t rv;
-    a_uint16_t val;
+    a_uint16_t val = 0;
 
     HSL_PHY_GET(rv, dev_id, phy_addr, reg, &val);
     if (SW_OK != rv)
@@ -1073,7 +1073,7 @@
     a_uint16_t phy_data = 0;
     a_uint16_t phy_status = 0;
 
-    fal_port_speed_t old_speed;
+    fal_port_speed_t old_speed = FAL_SPEED_10;
     a_uint32_t oldneg, autoneg;
 
     if (A_TRUE == f1_phy_autoneg_status(dev_id, phy_id))
diff --git a/src/hsl/phy/f2_phy.c b/src/hsl/phy/f2_phy.c
index a18b90f..36070f8 100755
--- a/src/hsl/phy/f2_phy.c
+++ b/src/hsl/phy/f2_phy.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2015, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2015-2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -31,7 +31,7 @@
 _phy_reg_read(a_uint32_t dev_id, a_uint32_t phy_addr, a_uint8_t reg)
 {
     sw_error_t rv;
-    a_uint16_t val;
+    a_uint16_t val = 0;
 
     HSL_PHY_GET(rv, dev_id, phy_addr, reg, &val);
     if (SW_OK != rv)
@@ -790,7 +790,7 @@
     a_uint16_t phy_data = 0;
     a_uint16_t phy_status = 0;
 
-    fal_port_speed_t old_speed;
+    fal_port_speed_t old_speed = FAL_SPEED_10;
     a_uint32_t autoneg, oldneg;
 
     if (f2_phy_autoneg_status(dev_id, phy_id))
diff --git a/src/hsl/phy/malibu_phy.c b/src/hsl/phy/malibu_phy.c
index 0ce2316..9861c9c 100755
--- a/src/hsl/phy/malibu_phy.c
+++ b/src/hsl/phy/malibu_phy.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2015-2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -28,7 +28,7 @@
 _phy_reg_read(a_uint32_t dev_id, a_uint32_t phy_addr, a_uint32_t reg)
 {
 	sw_error_t rv;
-	a_uint16_t phy_data;
+	a_uint16_t phy_data = 0;
 
 	HSL_PHY_GET(rv, dev_id, phy_addr, reg, &phy_data);
 	if (SW_OK != rv)
diff --git a/src/hsl/shiva/shiva_fdb.c b/src/hsl/shiva/shiva_fdb.c
index 2e044e3..5bc43b0 100755
--- a/src/hsl/shiva/shiva_fdb.c
+++ b/src/hsl/shiva/shiva_fdb.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -592,7 +592,7 @@
 _shiva_fdb_port_learn_get(a_uint32_t dev_id, fal_port_t port_id,
                           a_bool_t *enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -647,7 +647,7 @@
 static sw_error_t
 _shiva_fdb_age_ctrl_get(a_uint32_t dev_id, a_bool_t *enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -690,7 +690,7 @@
 static sw_error_t
 _shiva_fdb_age_time_get(a_uint32_t dev_id, a_uint32_t *time)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
diff --git a/src/hsl/shiva/shiva_igmp.c b/src/hsl/shiva/shiva_igmp.c
index 8ce7fa9..2427d78 100755
--- a/src/hsl/shiva/shiva_igmp.c
+++ b/src/hsl/shiva/shiva_igmp.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016 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
  * above copyright notice and this permission notice appear in all copies.
@@ -59,7 +59,7 @@
 _shiva_port_igmps_status_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t *enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -114,7 +114,7 @@
 _shiva_igmp_mld_cmd_get(a_uint32_t dev_id, fal_fwd_cmd_t * cmd)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -169,7 +169,7 @@
 _shiva_port_igmp_mld_join_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -229,7 +229,7 @@
 _shiva_port_igmp_mld_leave_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -276,7 +276,7 @@
 _shiva_igmp_mld_rp_get(a_uint32_t dev_id, fal_pbmp_t * pts)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -318,7 +318,7 @@
 _shiva_igmp_mld_entry_creat_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -368,7 +368,7 @@
 _shiva_igmp_mld_entry_static_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -418,7 +418,7 @@
 _shiva_igmp_mld_entry_leaky_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -468,7 +468,7 @@
 _shiva_igmp_mld_entry_v3_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -492,7 +492,7 @@
 _shiva_igmp_mld_entry_queue_set(a_uint32_t dev_id, a_bool_t enable, a_uint32_t queue)
 {
     sw_error_t rv;
-    a_uint32_t entry;
+    a_uint32_t entry = 0;
     hsl_dev_t *p_dev;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -530,7 +530,7 @@
 _shiva_igmp_mld_entry_queue_get(a_uint32_t dev_id, a_bool_t * enable, a_uint32_t * queue)
 {
     sw_error_t rv;
-    a_uint32_t entry, data;
+    a_uint32_t entry = 0, data;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/shiva/shiva_leaky.c b/src/hsl/shiva/shiva_leaky.c
index da4afc3..c68e66f 100755
--- a/src/hsl/shiva/shiva_leaky.c
+++ b/src/hsl/shiva/shiva_leaky.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016 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
  * above copyright notice and this permission notice appear in all copies.
@@ -55,7 +55,7 @@
 _shiva_uc_leaky_mode_get(a_uint32_t dev_id,
                          fal_leaky_ctrl_mode_t *ctrl_mode)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -107,7 +107,7 @@
 _shiva_mc_leaky_mode_get(a_uint32_t dev_id,
                          fal_leaky_ctrl_mode_t *ctrl_mode)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -164,7 +164,7 @@
 _shiva_port_arp_leaky_get(a_uint32_t dev_id, fal_port_t port_id,
                           a_bool_t *enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -226,7 +226,7 @@
 _shiva_port_uc_leaky_get(a_uint32_t dev_id, fal_port_t port_id,
                          a_bool_t *enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -288,7 +288,7 @@
 _shiva_port_mc_leaky_get(a_uint32_t dev_id, fal_port_t port_id,
                          a_bool_t *enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
diff --git a/src/hsl/shiva/shiva_led.c b/src/hsl/shiva/shiva_led.c
index 2918bf3..06bcd31 100755
--- a/src/hsl/shiva/shiva_led.c
+++ b/src/hsl/shiva/shiva_led.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016 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
  * above copyright notice and this permission notice appear in all copies.
@@ -30,7 +30,7 @@
 _shiva_led_ctrl_pattern_set(a_uint32_t dev_id, led_pattern_group_t group,
                             led_pattern_id_t id, led_ctrl_pattern_t * pattern)
 {
-    a_uint32_t data = 0, reg, mode;
+    a_uint32_t data = 0, reg = 0, mode;
     a_uint32_t addr;
     sw_error_t rv;
 
@@ -219,7 +219,7 @@
 _shiva_led_ctrl_pattern_get(a_uint32_t dev_id, led_pattern_group_t group,
                             led_pattern_id_t id, led_ctrl_pattern_t * pattern)
 {
-    a_uint32_t data = 0, reg, tmp;
+    a_uint32_t data = 0, reg = 0, tmp;
     a_uint32_t addr;
     sw_error_t rv;
 
diff --git a/src/hsl/shiva/shiva_mib.c b/src/hsl/shiva/shiva_mib.c
index 82cda69..0122e56 100755
--- a/src/hsl/shiva/shiva_mib.c
+++ b/src/hsl/shiva/shiva_mib.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016 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
  * above copyright notice and this permission notice appear in all copies.
@@ -28,7 +28,7 @@
 _shiva_get_mib_info(a_uint32_t dev_id, fal_port_t port_id,
                     fal_mib_info_t * mib_info)
 {
-    a_uint32_t val;
+    a_uint32_t val = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -255,7 +255,7 @@
 _shiva_get_rx_mib_info(a_uint32_t dev_id, fal_port_t port_id,
                     fal_mib_info_t * mib_info)
 {
-    a_uint32_t val;
+    a_uint32_t val = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -377,7 +377,7 @@
 _shiva_get_tx_mib_info(a_uint32_t dev_id, fal_port_t port_id,
                     fal_mib_info_t * mib_info)
 {
-    a_uint32_t val;
+    a_uint32_t val = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -525,7 +525,7 @@
 _shiva_mib_status_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/shiva/shiva_mirror.c b/src/hsl/shiva/shiva_mirror.c
index b5074ad..07e05ec 100755
--- a/src/hsl/shiva/shiva_mirror.c
+++ b/src/hsl/shiva/shiva_mirror.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -46,7 +46,7 @@
 _shiva_mirr_analysis_port_get(a_uint32_t dev_id, fal_port_t * port_id)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -94,7 +94,7 @@
                         a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -154,7 +154,7 @@
 _shiva_mirr_port_eg_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/shiva/shiva_misc.c b/src/hsl/shiva/shiva_misc.c
index d13e0fe..f5793a2 100755
--- a/src/hsl/shiva/shiva_misc.c
+++ b/src/hsl/shiva/shiva_misc.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -55,7 +55,7 @@
 static sw_error_t
 _shiva_arp_status_get(a_uint32_t dev_id, a_bool_t *enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -98,7 +98,7 @@
 static sw_error_t
 _shiva_frame_max_size_get(a_uint32_t dev_id, a_uint32_t *size)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -116,7 +116,7 @@
                            fal_fwd_cmd_t cmd)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -158,7 +158,7 @@
                            fal_fwd_cmd_t * action)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
     a_uint32_t port_lock_en, port_drop_en;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -199,7 +199,7 @@
                               a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -235,7 +235,7 @@
                               a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -266,7 +266,7 @@
                               a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -302,7 +302,7 @@
                               a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -333,7 +333,7 @@
                           a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -369,7 +369,7 @@
                           a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t reg, field;
+    a_uint32_t reg = 0, field;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -425,7 +425,7 @@
 _shiva_cpu_port_status_get(a_uint32_t dev_id, a_bool_t *enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -475,7 +475,7 @@
 _shiva_pppoe_cmd_get(a_uint32_t dev_id, fal_fwd_cmd_t * cmd)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -525,7 +525,7 @@
 _shiva_pppoe_status_get(a_uint32_t dev_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -580,7 +580,7 @@
 _shiva_port_dhcp_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -635,7 +635,7 @@
 _shiva_arp_cmd_get(a_uint32_t dev_id, fal_fwd_cmd_t * cmd)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -685,7 +685,7 @@
 _shiva_eapol_cmd_get(a_uint32_t dev_id, fal_fwd_cmd_t * cmd)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -712,7 +712,7 @@
 _shiva_pppoe_session_add(a_uint32_t dev_id, a_uint32_t session_id, a_bool_t strip_hdr)
 {
     sw_error_t rv;
-    a_uint32_t reg, i, valid, cmd, id, entry_idx = 0xffff;
+    a_uint32_t reg = 0, i, valid, cmd, id, entry_idx = 0xffff;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -770,7 +770,7 @@
 _shiva_pppoe_session_del(a_uint32_t dev_id, a_uint32_t session_id)
 {
     sw_error_t rv;
-    a_uint32_t reg, i, valid, id;
+    a_uint32_t reg = 0, i, valid, id;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -806,7 +806,7 @@
 _shiva_pppoe_session_get(a_uint32_t dev_id, a_uint32_t session_id, a_bool_t * strip_hdr)
 {
     sw_error_t rv;
-    a_uint32_t reg, i, valid, cmd, id;
+    a_uint32_t reg = 0, i, valid, cmd, id;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -876,7 +876,7 @@
 static sw_error_t
 _shiva_eapol_status_get(a_uint32_t dev_id, a_uint32_t port_id, a_bool_t *enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -936,7 +936,7 @@
 static sw_error_t
 _shiva_ripv1_status_get(a_uint32_t dev_id, a_bool_t *enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -1015,7 +1015,7 @@
 _shiva_loop_check_status_get(a_uint32_t dev_id, fal_loop_check_time_t * time, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t data;
+    a_uint32_t data = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -1049,7 +1049,7 @@
 _shiva_loop_check_info_get(a_uint32_t dev_id, a_uint32_t * old_port_id, a_uint32_t * new_port_id)
 {
     sw_error_t rv;
-    a_uint32_t reg, data;
+    a_uint32_t reg = 0, data;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/shiva/shiva_port_ctrl.c b/src/hsl/shiva/shiva_port_ctrl.c
index 3d06111..c0551ae 100755
--- a/src/hsl/shiva/shiva_port_ctrl.c
+++ b/src/hsl/shiva/shiva_port_ctrl.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2015, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2015-2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -338,7 +338,7 @@
                            a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -367,7 +367,7 @@
 _shiva_port_flowctrl_set(a_uint32_t dev_id, fal_port_t port_id, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t val, force, reg, tmp;
+    a_uint32_t val, force, reg = 0, tmp;
 
     if (A_TRUE != hsl_port_prop_check(dev_id, port_id, HSL_PP_INCL_CPU))
     {
@@ -415,7 +415,7 @@
                          a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t rx, reg;
+    a_uint32_t rx, reg = 0;
 
     if (A_TRUE != hsl_port_prop_check(dev_id, port_id, HSL_PP_INCL_CPU))
     {
diff --git a/src/hsl/shiva/shiva_portvlan.c b/src/hsl/shiva/shiva_portvlan.c
index 387461c..b9292b0 100755
--- a/src/hsl/shiva/shiva_portvlan.c
+++ b/src/hsl/shiva/shiva_portvlan.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -297,7 +297,7 @@
 _shiva_port_force_default_vid_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -359,7 +359,7 @@
 _shiva_port_force_portvlan_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -404,7 +404,7 @@
 _shiva_nestvlan_tpid_get(a_uint32_t dev_id, a_uint32_t *tpid)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -515,7 +515,7 @@
                     a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -579,7 +579,7 @@
                                 a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -637,7 +637,7 @@
                              a_uint32_t * vid)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -686,7 +686,7 @@
                              a_uint32_t * vid)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -708,7 +708,7 @@
                                  fal_vlan_propagation_mode_t mode)
 {
     sw_error_t rv;
-    a_uint32_t reg, p, c;
+    a_uint32_t reg = 0, p, c;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -754,7 +754,7 @@
                                  fal_vlan_propagation_mode_t * mode)
 {
     sw_error_t rv;
-    a_uint32_t reg, p, c;
+    a_uint32_t reg = 0, p, c;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -793,7 +793,7 @@
 _shiva_vlan_trans_read(a_uint32_t dev_id, a_uint32_t entry_idx, fal_pbmp_t * pbmp, fal_vlan_trans_entry_t *entry)
 {
     sw_error_t rv;
-    a_uint32_t i, addr, table[2];
+    a_uint32_t i, addr, table[2] = {0};
 
     addr = SHIVA_VLAN_TRANS_ADDR + (entry_idx << 3);
 
@@ -999,7 +999,7 @@
     a_uint32_t index;
     sw_error_t rv;
     fal_vlan_trans_entry_t entry_t;
-    fal_pbmp_t             pbmp_t;
+    fal_pbmp_t pbmp_t = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/hsl/shiva/shiva_rate.c b/src/hsl/shiva/shiva_rate.c
index e02ea9f..e6c64c0 100755
--- a/src/hsl/shiva/shiva_rate.c
+++ b/src/hsl/shiva/shiva_rate.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -78,7 +78,7 @@
 {
     sw_error_t rv;
     a_uint32_t val;
-    a_uint32_t portrl;
+    a_uint32_t portrl = 0;
 
     if (A_TRUE != hsl_port_prop_check(dev_id, port_id, HSL_PP_INCL_CPU))
     {
@@ -154,7 +154,7 @@
                            a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     if (A_TRUE != hsl_port_prop_check(dev_id, port_id, HSL_PP_INCL_CPU))
     {
@@ -219,8 +219,8 @@
                           a_uint32_t * speed, a_bool_t enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
-    a_uint32_t portrl;
+    a_uint32_t val = 0;
+    a_uint32_t portrl = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -327,7 +327,7 @@
                           a_uint32_t * speed, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -399,7 +399,7 @@
                           a_uint32_t * speed, a_bool_t * enable)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
@@ -498,7 +498,7 @@
 _shiva_storm_ctrl_frame_get(a_uint32_t dev_id, fal_port_t port_id,
                             fal_storm_type_t storm_type, a_bool_t * enable)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
@@ -574,7 +574,7 @@
 _shiva_storm_ctrl_rate_get(a_uint32_t dev_id, fal_port_t port_id,
                            a_uint32_t * rate_in_pps)
 {
-    a_uint32_t data;
+    a_uint32_t data = 0;
     sw_error_t rv;
 
     HSL_DEV_ID_CHECK(dev_id);
diff --git a/src/hsl/shiva/shiva_stp.c b/src/hsl/shiva/shiva_stp.c
index 0317e5a..62c588c 100755
--- a/src/hsl/shiva/shiva_stp.c
+++ b/src/hsl/shiva/shiva_stp.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016, 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
  * above copyright notice and this permission notice appear in all copies.
@@ -80,7 +80,7 @@
                           fal_port_t port_id, fal_stp_state_t * state)
 {
     sw_error_t rv;
-    a_uint32_t val;
+    a_uint32_t val = 0;
 
     HSL_DEV_ID_CHECK(dev_id);
 
diff --git a/src/ref/ref_port_ctrl.c b/src/ref/ref_port_ctrl.c
index 1019901..56525aa 100755
--- a/src/ref/ref_port_ctrl.c
+++ b/src/ref/ref_port_ctrl.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012, 2016,  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
  * above copyright notice and this permission notice appear in all copies.
@@ -61,11 +61,11 @@
 {
 	struct qca_phy_priv *priv = qca_phy_priv_get(dev);
 
-	fal_port_speed_t speed;
-	fal_port_duplex_t duplex;
-	a_bool_t status;
-	a_bool_t tx_fc;
-	a_bool_t rx_fc;
+	fal_port_speed_t speed = FAL_SPEED_10;
+	fal_port_duplex_t duplex = FAL_FULL_DUPLEX;
+	a_bool_t status = 0;
+	a_bool_t tx_fc = 0;
+	a_bool_t rx_fc = 0;
 	a_uint32_t ret;
 
 	mutex_lock(&priv->reg_mutex);
@@ -195,7 +195,7 @@
 
 static int qca_switch_force_mac_status(struct switch_dev *dev, a_uint32_t port_id,a_uint32_t speed,a_uint32_t duplex)
 {
-	a_uint32_t reg, value;
+	a_uint32_t reg, value = 0;
 	struct qca_phy_priv *priv = qca_phy_priv_get(dev);
 
 	if (port_id < 1 || port_id > 5)
