Merge "sysctl: promote secondary ip addrs"
diff --git a/configs/gflt400_defconfig b/configs/gflt400_defconfig
index 855ad18..4c05307 100644
--- a/configs/gflt400_defconfig
+++ b/configs/gflt400_defconfig
@@ -77,6 +77,7 @@
 BR2_PACKAGE_CATAWAMPUS=y
 BR2_PACKAGE_MV_APP_PON_TYPE="GPON"
 BR2_PACKAGE_MV_APP=y
+BR2_PACKAGE_DEK_TOOLS=y
 BR2_TARGET_ROOTFS_INITRAMFS=y
 BR2_TARGET_ROOTFS_GINSTALL=y
 BR2_TARGET_ROOTFS_GINSTALL_LOADER_DIR="../loader-bin/marvell"
diff --git a/fs/skeleton/etc/init.d/network b/fs/skeleton/etc/init.d/network
index 3899412..b36a2da 100755
--- a/fs/skeleton/etc/init.d/network
+++ b/fs/skeleton/etc/init.d/network
@@ -229,6 +229,14 @@
   for x in "$@"; do
     [ -e "$x" ] || continue
 
+    # Wait for MAC address.
+    for i in $(seq 1 12); do
+      if [ "$(get_mac_address_for_interface "$x")" != 00:00:00:00:00:00 ]; then
+        break
+      fi
+      sleep 0.25
+    done
+
     local x="${x#/sys/class/net/}"
     echo "Adding interface $x..."
 
@@ -420,7 +428,7 @@
       i=0
       while true; do
         if ! interface_exists wlan"$i"; then
-          add_quantenna_interface "wlan$i" 3
+          echo "add wlan$i 3" >/sys/class/net/quantenna/vlan
           break
         fi
         i=$((i+1))
diff --git a/fs/skeleton/etc/utils.sh b/fs/skeleton/etc/utils.sh
index 17470b1..e4f4b9c 100644
--- a/fs/skeleton/etc/utils.sh
+++ b/fs/skeleton/etc/utils.sh
@@ -265,18 +265,6 @@
   [ -e "/sys/class/net/$1" ]
 }
 
-add_quantenna_interface() {
-  local interface=$1
-  local vlan=$2
-  echo "add $interface $vlan" >/sys/class/net/quantenna/vlan
-  for i in `seq 12`; do
-    if interface_exists "$interface"; then
-      break
-    fi
-    sleep 0.25
-  done
-}
-
 is_quantenna_interface() {
   # Check for "$1 " to prevent "wlanX" from matching "wlanX_portal".
   filecontains "$1 " /sys/class/net/quantenna/vlan >/dev/null 2>&1
diff --git a/fs/skeleton/sbin/hotplug b/fs/skeleton/sbin/hotplug
index 7cec68c..dbb0da8 100755
--- a/fs/skeleton/sbin/hotplug
+++ b/fs/skeleton/sbin/hotplug
@@ -18,7 +18,7 @@
   local client_interface=$(echo "$interface" | sed s/^wlan/wcli/)
   if ! interface_exists "$client_interface"; then
     if is_quantenna_interface "$interface"; then
-      add_quantenna_interface "$client_interface" 2
+      echo "add $client_interface 2" >/sys/class/net/quantenna/vlan
       mac=$(get_locally_administered_mac_addr "$mac")
     else
       local phy=$(find_phy_for_interface "$interface")
@@ -76,7 +76,7 @@
 
   if ! interface_exists "$secondary_interface"; then
     if is_quantenna_interface "$interface"; then
-      add_quantenna_interface "$secondary_interface" 4
+      echo "add $secondary_interface 4" >/sys/class/net/quantenna/vlan
       mac=$(get_locally_administered_mac_addr "$mac")
     else
       local phy=$(find_phy_for_interface "$interface")
diff --git a/package/Config.in b/package/Config.in
index 1cbc98b..95885db 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -704,6 +704,7 @@
 source "package/mv_physdk/Config.in"
 source "package/mv_app/Config.in"
 source "package/mv_cpss/Config.in"
+source "package/dek_tools/Config.in"
 endmenu
 
 menu "Quantenna custom build"
diff --git a/package/dek_tools/Config.in b/package/dek_tools/Config.in
new file mode 100644
index 0000000..cddc54a
--- /dev/null
+++ b/package/dek_tools/Config.in
@@ -0,0 +1,4 @@
+config BR2_PACKAGE_DEK_TOOLS
+	bool "dek_tools"
+	help
+	  Adds Marvell's Device Embedding Kit applications
diff --git a/package/dek_tools/dek_tools.mk b/package/dek_tools/dek_tools.mk
new file mode 100644
index 0000000..0b7674b
--- /dev/null
+++ b/package/dek_tools/dek_tools.mk
@@ -0,0 +1,17 @@
+DEK_TOOLS_SITE=repo://vendor/marvell/dek-tools
+
+define DEK_TOOLS_CLEAN_CMDS
+	$(TARGET_MAKE_ENV) $(MAKE) TARGET=buildroot CC=$(TARGET_CROSS)gcc \
+	AR=$(TARGET_CROSS)ar -C $(@D) clean
+endef
+
+define DEK_TOOLS_BUILD_CMDS
+	$(TARGET_MAKE_ENV) $(MAKE1) TARGET=buildroot CC=$(TARGET_CROSS)gcc \
+	AR=$(TARGET_CROSS)ar -C $(@D)
+endef
+
+define DEK_TOOLS_INSTALL_TARGET_CMDS
+	$(INSTALL) -m 0755 -D $(@D)/apps/* $(TARGET_DIR)/usr/bin/
+endef
+
+$(eval $(call GENTARGETS))
diff --git a/package/mv_app/mv_app.mk b/package/mv_app/mv_app.mk
index 1dca45f..551188a 100644
--- a/package/mv_app/mv_app.mk
+++ b/package/mv_app/mv_app.mk
@@ -20,7 +20,15 @@
 		cp -f  $(@D)/tools/omci_tool $(TARGET_DIR)/usr/bin/; \
 	fi
 	mkdir -p $(TARGET_DIR)/etc/xml_params
-	cp -fpP package/mv_app/xml_params/* $(TARGET_DIR)/etc/xml_params/
+
+	# Copy over shared XML files
+	cp -fpP package/mv_app/xml_params/*.xml $(TARGET_DIR)/etc/xml_params/
+
+	# Copy over platform specific XML files
+	cp -fpP package/mv_app/xml_params/onu_profile_xml_cfg_file.xml.$(BR2_TARGET_GENERIC_PLATFORM_NAME) $(TARGET_DIR)/etc/xml_params/onu_profile_xml_cfg_file.xml
+	cp -fpP package/mv_app/xml_params/tpm_xml_cfg_file_epon.xml.$(BR2_TARGET_GENERIC_PLATFORM_NAME) $(TARGET_DIR)/etc/xml_params/tpm_xml_cfg_file_epon.xml
+	cp -fpP package/mv_app/xml_params/tpm_xml_cfg_file_gpon.xml.$(BR2_TARGET_GENERIC_PLATFORM_NAME) $(TARGET_DIR)/etc/xml_params/tpm_xml_cfg_file_gpon.xml
+
 endef
 
 $(eval $(call GENTARGETS))
diff --git a/package/mv_app/xml_params/onu_profile_xml_cfg_file.xml b/package/mv_app/xml_params/onu_profile_xml_cfg_file.xml.gflt110
similarity index 100%
rename from package/mv_app/xml_params/onu_profile_xml_cfg_file.xml
rename to package/mv_app/xml_params/onu_profile_xml_cfg_file.xml.gflt110
diff --git a/package/mv_app/xml_params/onu_profile_xml_cfg_file.xml.gflt400 b/package/mv_app/xml_params/onu_profile_xml_cfg_file.xml.gflt400
new file mode 100644
index 0000000..b33d7ee
--- /dev/null
+++ b/package/mv_app/xml_params/onu_profile_xml_cfg_file.xml.gflt400
@@ -0,0 +1,214 @@
+<?xml version="1.0"?>
+<cnfg>
+    <Vendor>
+        <!--ONU vendor ID: STRING(4).     -->
+        <attrib name="ONU vendor ID" value="MRVL" />
+
+        <!--ONU vendor OUI: ARRAY(3).     -->
+        <attrib name="ONU vendor OUI" value="0x005043" />
+
+        <!--ONU vendor name: STRING(64).     -->
+        <attrib name="ONU vendor name" value="Marvell" />
+
+        <!--Model for eOAM: STRING(4).     -->
+        <attrib name="Model for eOAM" value="6601" />
+
+        <!--Model for OMCI: STRING(20).     -->
+        <attrib name="Model for OMCI" value="MRVL" />
+
+        <!--Model for TR-069: STRING(64).     -->
+        <attrib name="Model for TR-069" value="MRVL" />
+
+        <!--ONU product code: ARRAY(2).     -->
+        <attrib name="ONU product code" value="0x0201" />
+
+        <!--ONU product class: STRING(64).     -->
+        <attrib name="ONU product class" value="Marvell AVANTA 88F6500" />
+
+        <!--HW version: STRING(64).     -->
+        <attrib name="HW version" value="AVANTA A0" />
+
+        <!--SW version: STRING(64).     -->
+        <attrib name="SW version" value="2.7.25" />
+
+        <!--Addtional HW version: STRING(64).     -->
+        <attrib name="Addtional HW version" value="0" />
+
+        <!--Addtional SW version: STRING(64).     -->
+        <attrib name="Addtional SW version" value="16" />
+
+        <!--Device description: STRING(256).     -->
+        <attrib name="Device description" value="MARVELL AVANTA UPON device" />
+
+        <!--Firmware version: ARRAY(16).     -->
+        <attrib name="Firmware version" value="0x00000001" />
+
+        <!--Chip vendor ID: ARRAY(2).     -->
+        <attrib name="Chip vendor ID" value="0x03e9" />
+
+        <!--Chip model: ARRAY(2).     -->
+        <attrib name="Chip model" value="0x6601" />
+
+        <!--Chip revision: BYTE(1).     -->
+        <attrib name="Chip revision" value="0x02" />
+
+        <!--Chip version: ARRAY(3).     -->
+        <attrib name="Chip version" value="0x000001" />
+
+        <!--Operator ID: STRING(4).     -->
+        <attrib name="Operator ID" value="CTC" />
+    </Vendor>
+
+    <Capability>
+        <!--ONU type: UINT32.     -->
+        <!--0:SFU, 1:HGU, 2:SBU, 3:CBU, 4:MDU, 5:MTU, 6:1FE+1POTS SFU, 7:Mixed HGU -->
+        <attrib name="ONU type" value="0" />
+
+        <!--  1=MV_PON_WAN_DUAL_MAC_INT_SWITCH   2=MV_PON_WAN_G0_INT_SWITCH      3=MV_PON_WAN_G1_LAN_G0_INT_SWITCH  4=MV_G0_WAN_G1_INT_SWITCH
+              5=MV_G1_WAN_G0_INT_SWITCH          6=MV_PON_G1_WAN_G0_INT_SWITCH   7=MV_PON_G0_WAN_G1_INT_SWITCH      8=MV_PON_WAN_DUAL_MAC_EXT_SWITCH
+              9=MV_PON_WAN_G1_MNG_EXT_SWITCH     10=MV_PON_WAN_G0_SINGLE_PORT    11=MV_PON_WAN_G1_SINGLE_PORT       12=MV_PON_G1_WAN_G0_SINGLE_PORT
+              13=MV_PON_G0_WAN_G1_SINGLE_PORT    14=MV_PON_WAN_G0_G1_LPBK        15=MV_PON_WAN_G0_G1_DUAL_LAN 		16=MV_PON_WAN_G0_SINGLE_PORT_SGMII
+              17=MV_PON_G1_SGMII_WAN_G0_SINGLE_PORT -->
+        <attrib name="Complex profile" value="17" />
+
+        <!-- active_wan    0=GMAC0 1=GMAC1 2=PMAC -->
+        <attrib name="Active wan" value="1" />
+        
+        <!-- switch port to appliacation port(start from 1) mapping -->
+        <attrib name="Switch port 0" value="1" />
+        <attrib name="Switch port 1" value="2" />
+        <attrib name="Switch port 2" value="3" />
+        <attrib name="Switch port 3" value="4" />
+
+        <!--Voice management method: BYTE.     -->
+        <!--0:TR-069, 1:eOAM/OMCI, 2:Proprietary.     -->
+        <attrib name="Voice management method" value="1" />
+
+        <!--PON port number: BYTE.     -->
+        <attrib name="PON port number" value="1" />
+
+        <!--GE Ethernet port number: BYTE.     -->
+        <attrib name="GE Ethernet port number" value="1" />
+
+        <!--FE Ethernet port number: BYTE.     -->
+        <attrib name="FE Ethernet port number" value="0" />
+
+        <!--POTS port number: BYTE.     -->
+        <attrib name="POTS port number" value="2" />
+
+        <!--WIFI port number: BYTE.     -->
+        <attrib name="WIFI port number" value="0" />
+
+        <!--USB port number: BYTE.     -->
+        <attrib name="USB port number" value="0" />
+
+        <!--E1 port number: BYTE.     -->
+        <attrib name="E1 port number" value="0" />
+
+        <!--ADSL port number: BYTE.     -->
+        <attrib name="ADSL port number" value="0" />
+
+        <!--VDSL port number: BYTE.     -->
+        <attrib name="VDSL port number" value="0" />
+
+        <!--CATV port number: BYTE.     -->
+        <attrib name="CATV port number" value="0" />
+
+        <!--GE Ethernet port bitmap: UINT32.     -->
+        <attrib name="GE Ethernet port bitmap" value="0x01" />
+
+        <!--FE Ethernet port bitmap: UINT32.     -->
+        <attrib name="FE Ethernet port bitmap" value="0x00" />
+
+        <!--Maximum upstream queue per port: UINT32.     -->
+        <attrib name="Maximum upstream queue per port" value="4" />
+
+        <!--Maximum downstream queue per port: UINT32.     -->
+        <attrib name="Maximum downstream queue per port" value="4" />
+
+        <!--Maximum queue per T-CONT: UINT32.     -->
+        <attrib name="Maximum queue per T-CONT" value="4" />
+
+        <!--Maximum queue per GEM MAC port: UINT32.     -->
+        <attrib name="Maximum queue per GEM MAC port" value="4" />
+
+        <!--ONU pluggable capability: BYTE.     -->
+        <!--0: unpluggable, 1: pluggable        -->
+        <attrib name="ONU pluggable capability" value="0" />
+
+        <!--Total slot number: BYTE.     -->
+        <attrib name="Total slot number" value="1" />
+
+        <!--Total T-CONT number: BYTE.     -->
+        <attrib name="Total T-CONT number" value="8" />
+
+        <!--Total LLID number: BYTE.     -->
+        <attrib name="Total LLID number" value="1" />
+
+        <!--Total GEM port number: UINT32.     -->
+        <attrib name="Total GEM port number" value="256" />
+
+        <!--ONU protect type: BYTE.     -->
+        <!--0: no protection support, 1: support type C link protection, 2: support type D link protection -->
+        <attrib name="ONU protect type" value="1" />
+
+        <!--IPv6 support capability: BYTE.          -->
+        <!--0: do not support IPv6, 1: support IPv6 -->
+        <attrib name="IPv6 support capability" value="0" />
+
+        <!--Power control support capability: BYTE.       -->
+        <!--0��don't support ONU power supply control
+            1��Support ONU Tx power supply control only.
+            2��Support both Tx and Rx power supply control.-->
+        <attrib name="Power control support capability" value="2" />
+
+        <!--SLA support capability: BYTE.     -->
+        <!--1��don't support Service SLA��
+          2-8��Support Service SLA function��
+          The value indicates the number of services the ONU supported. -->
+        <attrib name="SLA support capability" value="4" />
+
+        <!--Sleep mode support capability: BYTE.            -->
+        <!--0:neither Tx nor Rx supported, 1:only Tx supported
+            2:only Rx supported, 3:both Tx and Rx supported -->
+        <attrib name="Sleep mode support capability" value="3" />
+
+        <!--Wakeup support capability: BYTE.                                -->
+        <!--0: early wake-up is supported, 1: early wake-up is not supported-->
+        <attrib name="Wakeup support capability" value="1" />
+
+        <!--Traffic management option: BYTE.     -->
+        <!--0:Priority controlled and flexibly scheduled upstream traffic.
+            1:Rate controlled upstream traffic. 
+            2:Priority and rate controlled       -->        
+        <attrib name="Traffic management option" value="2" />
+
+        <!--Battery backup support capability: BYTE.                    -->
+        <!--0: do not support battery backup, 1: support battery backup -->
+        <attrib name="Battery backup support capability" value="0" />
+
+        <!--Downstream multicast channel: UINT32.                    -->
+        <!--0: from multicast mac address channel, 1: from multicast gemport channel-->
+        <attrib name="Downstream multicast channel" value="1" />
+
+        <!--IGMPV1 messages discard: UINT32.                    -->
+        <!--0: forward igmpv1 messages, 1: discard igmpv1 messages-->
+        <attrib name="IGMPV1 messages discard" value="1" />
+    </Capability>
+
+    <Queue>
+        <!--  id           : GMAC number, 0:GMAC0, 2:T-CONT0, 3:T-CONT1, ...9:T-CONT7, currently does not support GMAC1  -->
+        <!--  v_q_num      : Total virtual queue number in each T-CONT  -->
+        <!--  hwf_q_map    : Virtual queue to real HWF queue mapping list, Example:0=7 means virtual 0 map to HWF queue 7,should be accordant with TPM XML -->
+        <!--  swf_q_map    : Virtual queue to real SWF queue mapping list, Example:0=7 means virtual 0 map to SWF queue 6,should be accordant with TPM XML -->
+        <gmac id="0" v_q_num="4" hwf_q_map="0=1,1=3,2=5,3=7", swf_q_map="0=0,1=2,2=4,3=6" />
+        <gmac id="2" v_q_num="4" hwf_q_map="0=1,1=3,2=5,3=7", swf_q_map="0=0,1=2,2=4,3=6" />
+        <gmac id="3" v_q_num="4" hwf_q_map="0=1,1=3,2=5,3=7", swf_q_map="0=0,1=2,2=4,3=6" />
+        <gmac id="4" v_q_num="4" hwf_q_map="0=1,1=3,2=5,3=7", swf_q_map="0=0,1=2,2=4,3=6" />
+        <gmac id="5" v_q_num="4" hwf_q_map="0=1,1=3,2=5,3=7", swf_q_map="0=0,1=2,2=4,3=6" />
+        <gmac id="6" v_q_num="4" hwf_q_map="0=1,1=3,2=5,3=7", swf_q_map="0=0,1=2,2=4,3=6" />
+        <gmac id="7" v_q_num="4" hwf_q_map="0=1,1=3,2=5,3=7", swf_q_map="0=0,1=2,2=4,3=6" />
+        <gmac id="8" v_q_num="4" hwf_q_map="0=1,1=3,2=5,3=7", swf_q_map="0=0,1=2,2=4,3=6" />
+        <gmac id="9" v_q_num="4" hwf_q_map="0=1,1=3,2=5,3=7", swf_q_map="0=0,1=2,2=4,3=6" />
+    </Queue Mapping>
+</cnfg>
diff --git a/package/mv_app/xml_params/tpm_xml_cfg_file_epon.xml b/package/mv_app/xml_params/tpm_xml_cfg_file_epon.xml.gflt110
similarity index 100%
rename from package/mv_app/xml_params/tpm_xml_cfg_file_epon.xml
rename to package/mv_app/xml_params/tpm_xml_cfg_file_epon.xml.gflt110
diff --git a/package/mv_app/xml_params/tpm_xml_cfg_file_epon.xml.gflt400 b/package/mv_app/xml_params/tpm_xml_cfg_file_epon.xml.gflt400
new file mode 100644
index 0000000..a5133b4
--- /dev/null
+++ b/package/mv_app/xml_params/tpm_xml_cfg_file_epon.xml.gflt400
@@ -0,0 +1,460 @@
+<?xml version="1.0"?>
+<cnfg>
+    <eth_complex_config>
+               <!--  1=TPM_PON_WAN_DUAL_MAC_INT_SWITCH   2=TPM_PON_WAN_G0_INT_SWITCH      3=TPM_PON_WAN_G1_LAN_G0_INT_SWITCH  4=TPM_G0_WAN_G1_INT_SWITCH
+                     5=TPM_G1_WAN_G0_INT_SWITCH          6=TPM_PON_G1_WAN_G0_INT_SWITCH   7=TPM_PON_G0_WAN_G1_INT_SWITCH      8=TPM_PON_WAN_DUAL_MAC_EXT_SWITCH
+                     9=TPM_PON_WAN_G1_MNG_EXT_SWITCH     10=TPM_PON_WAN_G0_SINGLE_PORT    11=TPM_PON_WAN_G1_SINGLE_PORT       12=TPM_PON_G1_WAN_G0_SINGLE_PORT
+                     13=TPM_PON_G0_WAN_G1_SINGLE_PORT    14=TPM_PON_WAN_G0_G1_LPBK        15=TPM_PON_WAN_G0_G1_DUAL_LAN 	  16=TPM_PON_WAN_G0_SINGLE_PORT_SGMII
+                     17=TPM_PON_G1_SGMII_WAN_G0_SINGLE_PORT
+               -->
+        <profile>17</profile>
+        <!-- src    0) TPM_SRC_PORT_UNI_0
+                    1) TPM_SRC_PORT_UNI_1
+                    ...
+                    7) TPM_SRC_PORT_UNI7            -->
+        <switch_ports>
+            <port id="0" src_port="0"/>
+            <port id="1" src_port="1"/>
+            <port id="2" src_port="2"/>
+            <port id="3" src_port="3"/>
+        </switch_ports>
+        <gmac_ports>
+            <port id="0" src_port="0"/>
+        </gmac_ports>
+        <!-- active_wan    0=TPM_ENUM_GMAC_0 1=TPM_ENUM_GMAC_1 2=TPM_ENUM_PMAC -->
+        <active_wan>1</active_wan>
+    </eth_complex_config>
+
+    <traffic_setting>
+        <!--  pppoe_add_enable: 0 = disable, 1 = enable
+              Indicates system can be required to insert pppoe_header in upstream for routed/napt traffic.-->
+        <pppoe_add_enable>1</pppoe_add_enable>
+
+        <!--  Maximum required number of Vlan Tags.
+              Influences the modification chain_size and the max. mru   -->
+        <num_vlan_tags>2</num_vlan_tags>
+        <!--  Action for packets with illegal TTL     -->
+        <!--  0 = no action, 1 = drop, 2 = trap to CPU    -->
+        <ttl_illegal_action>2</ttl_illegal_action>
+        <!--  Check TCP FIN & RES flags, to trap 5-tuples w/ these flags raised to CPU   -->
+        <!--  0 = do not check, 1 = check    -->
+        <tcp_flag_check>1</tcp_flag_check>
+        <!--  CPU Rx Queue for all trapped packets (trapped due to packet TTL , TCP flags, )   -->
+        <cpu_trap_rx_queue>0</cpu_trap_rx_queue>
+        <!--  Put Switch Port connected to packet Processor in EtherType_DSA_Tag mode   -->
+        <ety_dsa_enable>0</ety_dsa_enable>
+    </traffic_setting>
+
+    <mtu_setting>
+        <!--  mtu_setting_enabled: 0 = disable, 1 = enable
+        Indicates if Layer3 Hardware_forward packets that are (> MTU) must be trapped to CPU -->
+        <mtu_setting_enabled>0</mtu_setting_enabled>
+        <!--  In EPON US, the max packet size PON MAC can handle is 1593   -->
+        <!--  IPv4oE downstream mtu    -->
+        <ipv4_mtu_ds>1570</ipv4_mtu_ds>
+        <!--  IPv4oE upstream mtu
+              MTU=1593-DA(6)-SA(6)-2*VLAN(4)-ETY(2)    -->
+        <ipv4_mtu_us>1570</ipv4_mtu_us>
+        <!--  IPv4oPPPoE upstream mtu (for routed/napt traffic w/ pppoe_hdr insertion), also dependent on <pppoe_add_enable> -->
+        <!--  MTU=1593-DA(6)-SA(6)-2*VLAN(4)-ETY(2)-PPPoE HEADER(8)    -->
+        <ipv4_pppoe_mtu_us>1562</ipv4_pppoe_mtu_us>
+    </mtu_setting>
+
+
+    <igmp_snoop>
+        <!--  Snooping enabled: 0 = FALSE, 1 = TRUE
+              When set to TRUE, the igmp_range must be created, and the following params determine igmp behavior  -->
+        <enabled>1</enabled>
+        <!--  CPU rx queue for trapped IGMP packets: 0 -7   -->
+        <igmp_cpu_rx_queue>7</igmp_cpu_rx_queue>
+        <!--  Per UNI IGMP packet forwarding mode :
+              0 = drop, 1 = forward, 2= snoop   -->
+        <igmp_frwrd_mode_wan>2</igmp_frwrd_mode_wan>
+        <igmp_frwrd_mode_uni0>2</igmp_frwrd_mode_uni0>
+        <igmp_frwrd_mode_uni1>2</igmp_frwrd_mode_uni1>
+        <igmp_frwrd_mode_uni2>2</igmp_frwrd_mode_uni2>
+        <igmp_frwrd_mode_uni3>2</igmp_frwrd_mode_uni3>
+        <igmp_frwrd_mode_uni4>2</igmp_frwrd_mode_uni4>
+    </igmp_snoop>
+
+    <multicast>
+        <!--  Multicast over PPPoE allowed: (0 = FALSE, 1 = TRUE) -->
+        <mc_pppoe_enable>1</mc_pppoe_enable>
+        <!--  Per UNI Vlan translation: 0 = no_per_uni_translation, 1 = per_uni_translation
+         when this feature is enabled, range size of TPM_PNC_VIRT_UNI must be increased by 4   -->
+        <mc_per_uni_vlan_xlat>0</mc_per_uni_vlan_xlat>
+        <!-- Multicast per uni vlan xlat support for IPv4/6: 0 = no support, 1 = support -->
+        <ipv4_mc_support>1</ipv4_mc_support>
+        <ipv6_mc_support>1</ipv6_mc_support>
+        <!--  Multicast filtering mode  -->
+        <!--    0 = Forward all Multicast traffic to CPU
+                1 = Multicast traffic is forwarded to the Internal Switch, where it is filtered based on MAC_DA.
+                2 = Multicast traffic is filtered in packet processor according to (vid, dip, sip).
+                    The stream specific target uni_port(s) are determined in Internal Switch based on MAC_DA
+                3 = Multicast traffic is forwarded exclusively by (vid, dip, sip) including setting the target uni_ports     -->
+        <mc_filter_mode>3</mc_filter_mode>
+        <!-- Multicast hwf queue: Set to highest txq of GMAC0, whose owner is PMAC. -->
+        <mc_hwf_queue>7</mc_hwf_queue>
+        <!-- Multicast cpu queue: Set to highest PMAC rx queue -->
+        <mc_cpu_queue>7</mc_cpu_queue>
+    </multicast>
+
+    <port_init>
+        <gmac_config>
+            <pon_config>
+                <!--  Max. number of configured TCONTs(GPON), LLIDs(EPON)  -->
+                <num_tcont_llid>1</num_tcont_llid>
+            </pon_config>
+
+            <gmac_mh_en>
+                <!--  GMAC Marvell_Header configuration - GMAC adds 2B Marvell header at beginning of packet
+                      mh_enabled 0 = FALSE, 1 = TRUE, 2 = AUTO (enabled if connected to Switch)   -->
+                <gmac0_mh_en>0</gmac0_mh_en>
+                <gmac1_mh_en>0</gmac1_mh_en>
+            </gmac_mh_en>
+
+            <gmac_bm_buffers>
+                <!--  BM pool buffers per MAC  -->
+                <!--  id=0 (GMAC0), id=1(GMAC1), id=2(PON_MAC)   -->
+                <!--  Number of buffers for large packets must  be ( >= 128) -->
+                <!--  Number of buffers for small packets must each be ( >= 128) -->
+
+                <!--  Undefined BM Pools will receive kernel default values  -->
+                <!--  If interfaces are raised before TPM is initialized, the <gmac_bm_buffers> definitions will have no effect,
+                      kernel default values are used instead. -->
+                    <gmac id="0" large_pkt_pool_bufs="1024" small_pkt_pool_bufs="3072" />
+                    <gmac id="1" large_pkt_pool_bufs="512"  small_pkt_pool_bufs="2048" />
+                    <gmac id="2" large_pkt_pool_bufs="512"  small_pkt_pool_bufs="2048" />
+            </gmac_bm_buffers>
+
+            <gmac_rx_queues>
+                <!--  Rx queue sizes per MAC  -->
+                <!--  id=0 (GMAC0), id=1(GMAC1), id=2(PON_MAC)   -->
+                <!--  size must be >0 -->
+                <!--  Undefined queues will be set to size=0 in hardware -->
+
+                <!--  If interfaces are raised before TPM is initialized, the <gmac_rx_queues> definitions will have no effect,
+                      kernel default values are used instead. -->
+
+                    <gmac id="0">
+                        <queue id="0" size="128"/>
+                        <queue id="1" size="128"/>
+                        <queue id="2" size="128"/>
+                        <queue id="3" size="128"/>
+                        <queue id="4" size="128"/>
+                        <queue id="5" size="128"/>
+                        <queue id="6" size="128"/>
+                        <queue id="7" size="128"/>
+                    </gmac>
+                    <gmac id="1">
+                        <queue id="0" size="128"/>
+                        <queue id="1" size="128"/>
+                        <queue id="2" size="128"/>
+                        <queue id="3" size="128"/>
+                        <queue id="4" size="128"/>
+                        <queue id="5" size="128"/>
+                        <queue id="6" size="128"/>
+                        <queue id="7" size="128"/>
+                    </gmac>
+                    <gmac id="2">
+                        <queue id="0" size="128"/>
+                        <queue id="1" size="128"/>
+                        <queue id="2" size="128"/>
+                        <queue id="3" size="128"/>
+                        <queue id="4" size="128"/>
+                        <queue id="5" size="128"/>
+                        <queue id="6" size="128"/>
+                        <queue id="7" size="128"/>
+                    </gmac>
+            </gmac_rx_queues>
+
+        </gmac_config>
+
+        <tx_module_parameters>
+            <!-- id  : 0 = GMAC0, 1 = GMAC1, 2 = PMAC_0, 3 = PMAC_1, 4 = PMAC_2, 5 = PMAC_3,  -->
+            <!--     : 6 = PMAC_4, 7 = PMAC_5, 8 = PMAC_6, 9 = PMAC_7                         -->
+            <tx_mod id="0">
+                <!--  id          : queue number  -->
+                <!--  sched_method: 0 = STRICT, 1 = WRR   -->
+                <!--  owner       : 0 = CPU, 1 = GMAC0, 2 = GMAC1, 3 = PMAC  -->
+                <!--  owner_q_num : owner queue number   -->
+                <!--  size : queue size must be >0   -->
+                <!--  Undefined queues will not be created in hardware -->
+                <queue_map>
+                    <queue id="0" sched_method="0" owner="0" owner_q_num="0" size="0256" weight="0" />
+                    <queue id="1" sched_method="0" owner="3" owner_q_num="0" size="0256" weight="0" />
+                    <queue id="2" sched_method="0" owner="0" owner_q_num="1" size="0256" weight="0" />
+                    <queue id="3" sched_method="0" owner="3" owner_q_num="1" size="0256" weight="0" />
+                    <queue id="4" sched_method="0" owner="0" owner_q_num="2" size="0256" weight="0" />
+                    <queue id="5" sched_method="0" owner="3" owner_q_num="2" size="0256" weight="0" />
+                    <queue id="6" sched_method="0" owner="0" owner_q_num="3" size="0256" weight="0" />
+                    <queue id="7" sched_method="0" owner="3" owner_q_num="3" size="0256" weight="0" />
+                </queue_map>
+            </tx_mod>
+            <!-- id  : 0 = GMAC0, 1 = GMAC1, 2 = PMAC_0, 3 = PMAC_1, 4 = PMAC_2, 5 = PMAC_3,  -->
+            <!--     : 6 = PMAC_4, 7 = PMAC_5, 8 = PMAC_6, 9 = PMAC_7                         -->
+            <tx_mod id="1">
+                <!--  id          : queue number  -->
+                <!--  sched_method: 0 = STRICT, 1 = WRR   -->
+                <!--  owner       : 0 = CPU, 1 = GMAC0, 2 = GMAC1, 3 = PMAC  -->
+                <!--  owner_q_num : owner queue number   -->
+                <!--  size : queue size must be >0   -->
+                <!--  Undefined queues will not be created in hardware -->
+                <queue_map>
+                    <queue id="0" sched_method="0" owner="0" owner_q_num="0" size="0064" weight="0" />
+                    <queue id="1" sched_method="0" owner="1" owner_q_num="0" size="0256" weight="0" />
+                </queue_map>
+            </tx_mod>
+            <!-- id  : 0 = GMAC0, 1 = GMAC1, 2 = PMAC_0, 3 = PMAC_1, 4 = PMAC_2, 5 = PMAC_3,  -->
+            <!--     : 6 = PMAC_4, 7 = PMAC_5, 8 = PMAC_6, 9 = PMAC_7                         -->
+            <tx_mod id="2">
+                <!--  id          : queue number  -->
+                <!--  sched_method: 0 = STRICT, 1 = WRR   -->
+                <!--  owner       : 0 = CPU, 1 = GMAC0, 2 = GMAC1, 3 = PMAC  -->
+                <!--  owner_q_num : owner queue number   -->
+                <!--  size : queue size must be >0   -->
+                <!--  Undefined queues will not be created in hardware -->
+                <queue_map>
+                    <queue id="0" sched_method="0" owner="0" owner_q_num="0" size="3072" weight="0" />
+                    <queue id="1" sched_method="0" owner="1" owner_q_num="0" size="3072" weight="0" />
+                    <queue id="2" sched_method="0" owner="0" owner_q_num="1" size="3072" weight="0" />
+                    <queue id="3" sched_method="0" owner="1" owner_q_num="1" size="3072" weight="0" />
+                    <queue id="4" sched_method="0" owner="0" owner_q_num="2" size="3072" weight="0" />
+                    <queue id="5" sched_method="0" owner="1" owner_q_num="2" size="3072" weight="0" />
+                    <queue id="6" sched_method="0" owner="0" owner_q_num="3" size="3072" weight="0" />
+                    <queue id="7" sched_method="0" owner="1" owner_q_num="3" size="3072" weight="0" />
+                </queue_map>
+            </tx_mod>
+        </tx_module_parameters>
+
+    </port_init>
+
+    <flow_control>
+        <enabled>0</enabled>
+        <queue_sample_freq>1000</queue_sample_freq>
+        <thresh_high>560</thresh_high>
+        <thresh_low>300</thresh_low>
+        <port>1</port>
+        <tgt_port>0</tgt_port>
+        <tx_port>0</tx_port>
+        <tx_queue>1</tx_queue>
+    </flow_control>
+
+    <TPM>
+        <!--  Get TPM configuration mode: 0 = Application, 1 = Kernel -->
+        <GET_config_mode>1</GET_config_mode>
+        <!--  VALIDATION type: 0 = DISABLED, 1 = ENABLED -->
+        <validation_enable>1</validation_enable>
+
+        <!--  Support 2G DS with GMAC0/1: 0 = disable, 1 = enable -->
+        <ds_mac_based_trunking>0</ds_mac_based_trunking>
+
+        <!--  Init switch or not: 0 = do not Init, 1 = do Init -->
+        <switch_init>0</switch_init>
+
+        <!--  PNC_config:
+                0 = PNC is configured by the MV neta driver,
+                1 = PNC is configured by the TPM SW
+         -->
+        <pnc_config>1</pnc_config>
+
+        <ds_mh_set>0</ds_mh_set>
+
+        <!--  cpu_wan_egr_loopback:
+                0 = CPU WAN Egress Loopback - disabled
+                1 = CPU WAN Egress Loopback - enabled
+        -->
+        <cpu_wan_egr_loopback>0</cpu_wan_egr_loopback>
+
+        <!--  IPV6 5-tuple status :
+                0 = IPV6 is configured by normal API,
+                1 = ipv6 is configured by 5-tuple API
+         -->
+        <ipv6_5t_enable>1</ipv6_5t_enable>
+
+        <!--  GMAC1 acts as virtual UNI :
+                0 = virtual UNI via GMAC1 - disabled,
+                1 = virtual UNI via GMAC1 - enabled
+         -->
+        <gmac1_virt_uni>0</gmac1_virt_uni>
+
+        <vlan_filter_tpid>
+            <!--  id    : option id                 -->
+            <!--  comb  : tpid combination
+                  format - 0xAABB[,0xCCDD]          -->
+            <filter_tpid id="0" type="0x8100,0x8100" />
+            <filter_tpid id="1" type="0x9100,0x8100" />
+            <filter_tpid id="2" type="0x88A8,0x8100" />
+            <filter_tpid id="3" type="0x88A8,0x88A8" />
+            <filter_tpid id="4" type="0x8100,0x88A8" />
+            <filter_tpid id="5" type="0x8100"        />
+            <filter_tpid id="6" type="0x88A8"        />
+            <filter_tpid id="7" type="0x9100"        />
+        </vlan_filter_tpid>
+
+        <!--  trace_debug_info:
+                0xAAAABBBB = AAAA = trace levels
+                             BBBB = debug printouts
+                0x00000000 = trace & debug printouts are disabled,
+                0x80000000 = FATAL_TRACE_LEVEL       0x00000001 = TPM_DB_MOD
+                0xC0000000 = ERROR_TRACE_LEVEL       0x00000002 = TPM_PNCL_MOD
+                0xE0000000 = WARN_TRACE_LEVEL        0x00000004 = TPM_INIT_MOD
+                0xF0000000 = INFO_TRACE_LEVEL        0x00000008 = TPM_HWM_MOD
+                0xF8000000 = DEBUG_TRACE_LEVEL       0x00000010 = TPM_MODL_MOD
+                                                     0x00000020 = TPM_TPM_LOG_MOD
+                0xFFFF0000 = ALL_TRACE_LEVEL         0x00000040 = TPM_CLI_MOD
+                                                     0x00000080 = TPM_PNC_HM_MOD
+                                                     0x00000100 = TPM_MODZ1_HM_MOD
+                                                     0x00000200 = TPM_MODZ2_HM_MOD
+
+                                                     0x0000FFFF = TPM_ALL_MODULES
+                0xFFFFFFFF = trace & debug printouts are ALL ENABLED
+                0xE000FFFF = default value = (WARN + ERRORS ) for trace level
+                                            ALL for debug printouts
+         -->
+        <trace_debug_info>0xE000FFFF</trace_debug_info>
+
+        <!--  Values for VLAN ETY registers -->
+        <vlan_mod_tpid>
+            <!--  id   : type number                      -->
+            <!--  type : VLAN type (0xFFFF - NULL value)  -->
+            <mod_tpid id="0" type="0x8100" />
+            <mod_tpid id="1" type="0x88A8" />
+            <mod_tpid id="2" type="0x9100" />
+            <mod_tpid id="3" type="0xAABB" />
+        </vlan_mod_tpid>
+
+        <modification>
+            <!--  configuration of modification chains:         -->
+            <!--  id   : chain id                               -->
+            <!--  type : chain type
+                                     1 - MH_MOD_SUBR_CHAIN
+                                     2 - MAC_MOD_SUBR_CHAIN
+                                     3 - VLAN_MOD_SUBR_CHAIN
+                                     4 - PPPOE_MOD_SUBR_CHAIN
+                                     5 - IPV6_PPPOE_MOD_SUBR_CHAIN
+                                     6 - L2_MAIN_CHAIN
+                                     7 - IPV4_NAPT_MAIN_CHAIN
+                                     8 - IPV4_MULTICAST_MAIN_CHAIN
+                                     9 - IPV6_ROUTING_MAIN_CHAIN
+                                     10 - IPV6_MULTICAST_MAIN_CHAIN              -->
+            <!--  num  : number of modification chain entries
+                         4096 - "all remaining", fills up remaining part of the modification tables with this chain_type.
+                         Only "L2_MAIN_CHAIN" OR "IPV4_NAPT_MAIN_CHAIN" can be assigned "all remaining"  -->
+            <chain_parameters>
+                    <chain id="0" type="1" num="32" />
+                    <chain id="1" type="2" num="64" />
+                    <chain id="2" type="3" num="300" />
+                    <chain id="3" type="4" num="8" />
+                    <chain id="4" type="5" num="6" />
+                    <chain id="5" type="6" num="170" />
+                    <chain id="6" type="7" num="4096" />
+                    <chain id="7" type="8" num="16" />
+                    <chain id="8" type="9" num="64" />
+                    <chain id="9" type="10" num="16" />
+            </chain_parameters>
+            <udp_checksum_use_init>0</udp_checksum_use_init>
+            <udp_checksum_calc>0</udp_checksum_calc>
+            <split_mod>
+            <!-- enable/disable split pbit and vid modification, 1: enable, 0: disable -->
+            <enable>1</enable>
+            <!--p_bit that supported -->
+            <p_bits>0, 1, 2, 3, 4, 5, 6, 7</p_bits >
+            <!--vlan number that needs split pbit and vid modification, 0~16 -->
+            <vlan_num>16</vlan_num>
+            </split_mod>
+        </modification>
+        <!--  CTC CnM status :
+                0 = CTC CnM - disabled,
+                1 = CTC CnM - enabled
+         -->
+        <ctc_cnm_enable>1</ctc_cnm_enable>
+        <!--  PNC MAC learning status :
+                0 = PNC MAC learn - disabled,
+                1 = PNC MAC learn - enabled
+         -->
+        <split_mod_mode>0</split_mod_mode>
+        <!--  split modification work mode :
+                0 = CTC mode,
+                1 = TR156 mode
+         -->
+        <pnc_mac_learn_enable>0</pnc_mac_learn_enable>
+
+        <!--  CTC IPv6 CNM parsing window: 0 = first 24 bytes of IPv6 header, 1 = second 24 bytes -->
+        <ctc_cnm_ipv6_parsing_window>0</ctc_cnm_ipv6_parsing_window>
+
+        <PnC>
+            <!--  num            :   -->
+            <!--  type           :   0 = ACL,  1 = TABLE -->
+            <!--  cntr_grp       :   0 = GROUP_0(Default), 1-3 = GROUP_1/GROUP_2/GROUP_3/ -->
+            <!--  lu_mask_all    :   0 = DONT_MASK, 1 = MASK -->
+            <!--  min_reset_level:   0 = level_0(Default), 1 = level_1(hard_reset), 2 = Never -->
+            <range_parameters>
+                <!--  TPM_PNC_MNGMT_DS -->
+                <range num="00" type="0" size="01"  cntr_grp="0"  lu_mask="1" min_reset_level = "1" />
+                <!--  TPM_PNC_MAC_LEARN -->
+                <range num="01" type="0" size="00"  cntr_grp="3"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_CPU_WAN_LPBK_US -->
+                <range num="02" type="0" size="00"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_NUM_VLAN_TAGS -->
+                <range num="03" type="0" size="09"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_DS_LOAD_BALANCE -->
+                <range num="04" type="0" size="00"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_MULTI_LPBK -->
+                <range num="05" type="0" size="20"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_VIRT_UNI -->
+                <range num="06" type="0" size="13"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_LOOP_DET_US -->
+                <range num="07" type="0" size="03"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_DROP_PRECEDENCE -->
+                <range num="08" type="0" size="04"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_L2_MAIN -->
+                <range num="09" type="0" size="64"  cntr_grp="1"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_ETH_TYPE -->
+                <range num="10" type="0" size="16"  cntr_grp="2"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IGMP -->
+                <range num="11" type="0" size="06"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV4_MC_DS -->
+                <range num="12" type="1" size="16"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV4_MAIN -->
+                <range num="13" type="1" size="64"  cntr_grp="3"  lu_mask="0" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV4_TCP_FLAG -->
+                <range num="14" type="0" size="12"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_TTL -->
+                <range num="15" type="0" size="04"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV4_PROTO -->
+                <range num="16" type="0" size="03"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV4_FRAG -->
+                <range num="17" type="0" size="04"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV4_LEN -->
+                <range num="18" type="0" size="03"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV6_NH -->
+                <range num="19" type="1" size="16"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV6_L4_MC_DS -->
+                <range num="20" type="1" size="16"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV6_TCP_FLAG -->
+                <range num="21" type="1" size="02"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV6_L4 -->
+                <range num="22" type="1" size="17"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV6_HOPL -->
+                <range num="23" type="1" size="03"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV6_MC_SIP -->
+                <range num="24" type="1" size="08"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV6_GEN -->
+                <range num="25" type="1" size="32"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV6_MC_DS -->
+                <range num="26" type="1" size="32"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV6_DIP -->
+                <range num="27" type="1" size="32"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_CNM_IPV4_PRE -->
+                <range num="28" type="1" size="36"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_CNM_MAIN -->
+                <range num="29" type="0" size="43"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_CATCH_ALL -->
+                <range num="30" type="0" size="01"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+            </range_parameters>
+            <!--  0 = drop, 1 =  trap to CPU    -->
+            <catch_all_pkt_action>1</catch_all_pkt_action>
+        </PnC>
+    </TPM>
+</cnfg>
diff --git a/package/mv_app/xml_params/tpm_xml_cfg_file_gpon.xml b/package/mv_app/xml_params/tpm_xml_cfg_file_gpon.xml.gflt110
similarity index 100%
rename from package/mv_app/xml_params/tpm_xml_cfg_file_gpon.xml
rename to package/mv_app/xml_params/tpm_xml_cfg_file_gpon.xml.gflt110
diff --git a/package/mv_app/xml_params/tpm_xml_cfg_file_gpon.xml.gflt400 b/package/mv_app/xml_params/tpm_xml_cfg_file_gpon.xml.gflt400
new file mode 100644
index 0000000..620f8bc
--- /dev/null
+++ b/package/mv_app/xml_params/tpm_xml_cfg_file_gpon.xml.gflt400
@@ -0,0 +1,599 @@
+<?xml version="1.0"?>
+<cnfg>
+    <eth_complex_config>
+               <!--  1=TPM_PON_WAN_DUAL_MAC_INT_SWITCH   2=TPM_PON_WAN_G0_INT_SWITCH      3=TPM_PON_WAN_G1_LAN_G0_INT_SWITCH  4=TPM_G0_WAN_G1_INT_SWITCH
+                     5=TPM_G1_WAN_G0_INT_SWITCH          6=TPM_PON_G1_WAN_G0_INT_SWITCH   7=TPM_PON_G0_WAN_G1_INT_SWITCH      8=TPM_PON_WAN_DUAL_MAC_EXT_SWITCH
+                     9=TPM_PON_WAN_G1_MNG_EXT_SWITCH     10=TPM_PON_WAN_G0_SINGLE_PORT    11=TPM_PON_WAN_G1_SINGLE_PORT       12=TPM_PON_G1_WAN_G0_SINGLE_PORT
+                     13=TPM_PON_G0_WAN_G1_SINGLE_PORT    14=TPM_PON_WAN_G0_G1_LPBK        15=TPM_PON_WAN_G0_G1_DUAL_LAN 	  16=TPM_PON_WAN_G0_SINGLE_PORT_SGMII
+                     17=TPM_PON_G1_SGMII_WAN_G0_SINGLE_PORT
+               -->
+        <profile>17</profile>
+        <!-- src    0) TPM_SRC_PORT_UNI_0
+                    1) TPM_SRC_PORT_UNI_1
+                    ...
+                    7) TPM_SRC_PORT_UNI7            -->
+        <switch_ports>
+            <port id="0" src_port="0"/>
+            <port id="1" src_port="1"/>
+            <port id="2" src_port="2"/>
+            <port id="3" src_port="3"/>
+        </switch_ports>
+        <gmac_ports>
+            <port id="0" src_port="0"/>
+        </gmac_ports>
+        <!-- active_wan    0=TPM_ENUM_GMAC_0 1=TPM_ENUM_GMAC_1 2=TPM_ENUM_PMAC -->
+        <active_wan>1</active_wan>
+    </eth_complex_config>
+
+    <traffic_setting>
+        <!--  pppoe_add_enable: 0 = disable, 1 = enable
+              Indicates system can be required to insert pppoe_header in upstream for routed/napt traffic.-->
+        <pppoe_add_enable>1</pppoe_add_enable>
+
+        <!--  Maximum required number of Vlan Tags.
+              Influences the modification chain_size and the max. mru   -->
+        <num_vlan_tags>2</num_vlan_tags>
+        <!--  Action for packets with illegal TTL     -->
+        <!--  0 = no action, 1 = drop, 2 = trap to CPU    -->
+        <ttl_illegal_action>2</ttl_illegal_action>
+        <!--  Check TCP FIN & RES flags, to trap 5-tuples w/ these flags raised to CPU   -->
+        <!--  0 = do not check, 1 = check    -->
+        <tcp_flag_check>1</tcp_flag_check>
+        <!--  CPU Rx Queue for all trapped packets (trapped due to packet TTL , TCP flags, )   -->
+        <cpu_trap_rx_queue>0</cpu_trap_rx_queue>
+        <!--  Put Switch Port connected to packet Processor in EtherType_DSA_Tag mode   -->
+        <ety_dsa_enable>0</ety_dsa_enable>
+    </traffic_setting>
+
+    <mtu_setting>
+        <!--  mtu_setting_enabled: 0 = disable, 1 = enable
+        Indicates if Layer3 Hardware_forward packets that are (> MTU) must be trapped to CPU -->
+        <mtu_setting_enabled>0</mtu_setting_enabled>
+        <!--  In GPON US, the max packet size PON MAC can handle is 2000   -->
+        <!--  IPv4oE downstream mtu    -->
+        <ipv4_mtu_ds>1978 </ipv4_mtu_ds>
+        <!--  IPv4oE upstream mtu
+              MTU=2000-DA(6)-SA(6)-2*VLAN(4)-ETY(2)    -->
+        <ipv4_mtu_us>1978</ipv4_mtu_us>
+        <!--  IPv4oPPPoE upstream mtu (for routed/napt traffic w/ pppoe_hdr insertion), also dependent on <pppoe_add_enable> -->
+        <!--  MTU=2000-DA(6)-SA(6)-2*VLAN(4)-ETY(2)-PPPoE HEADER(8)    -->
+        <ipv4_pppoe_mtu_us>1970</ipv4_pppoe_mtu_us>
+    </mtu_setting>
+
+    <igmp_snoop>
+        <!--  Snooping enabled: 0 = FALSE, 1 = TRUE
+              When set to TRUE, the igmp_range must be created, and the following params determine igmp behavior  -->
+        <enabled>1</enabled>
+        <!--  CPU rx queue for trapped IGMP packets: 0 -7   -->
+        <igmp_cpu_rx_queue>7</igmp_cpu_rx_queue>
+        <!--  Per UNI IGMP packet forwarding mode :
+              0 = drop, 1 = forward, 2= snoop   -->
+        <igmp_frwrd_mode_wan>2</igmp_frwrd_mode_wan>
+        <igmp_frwrd_mode_uni0>2</igmp_frwrd_mode_uni0>
+        <igmp_frwrd_mode_uni1>2</igmp_frwrd_mode_uni1>
+        <igmp_frwrd_mode_uni2>2</igmp_frwrd_mode_uni2>
+        <igmp_frwrd_mode_uni3>2</igmp_frwrd_mode_uni3>
+        <igmp_frwrd_mode_uni4>2</igmp_frwrd_mode_uni4>
+    </igmp_snoop>
+
+    <multicast>
+        <!--  Multicast over PPPoE allowed: (0 = FALSE, 1 = TRUE) -->
+        <mc_pppoe_enable>1</mc_pppoe_enable>
+        <!--  Per UNI Vlan translation: 0 = no_per_uni_translation, 1 = per_uni_translation
+         when this feature is enabled, range size of TPM_PNC_VIRT_UNI must be increased by 4   -->
+        <mc_per_uni_vlan_xlat>0</mc_per_uni_vlan_xlat>
+        <!-- Multicast per uni vlan xlat support for IPv4/6: 0 = no support, 1 = support -->
+        <ipv4_mc_support>1</ipv4_mc_support>
+        <ipv6_mc_support>1</ipv6_mc_support>
+        <!--  Multicast filtering mode  -->
+        <!--      0 = Forward all Multicast traffic to CPU
+                1 = Multicast traffic is forwarded to the Internal Switch, where it is filtered based on MAC_DA.
+                2 = Multicast traffic is filtered in packet processor according to (vid, dip, sip).
+                    The stream specific target uni_port(s) are determined in Internal Switch based on MAC_DA
+                3 = Multicast traffic is forwarded exclusively by (vid, dip, sip) including setting the target uni_ports     -->
+        <mc_filter_mode>3</mc_filter_mode>
+        <!-- Multicast hwf queue: Set to highest txq of GMAC0, whose owner is PMAC. -->
+        <mc_hwf_queue>7</mc_hwf_queue>
+        <!-- Multicast cpu queue: Set to highest PMAC rx queue -->
+        <mc_cpu_queue>0</mc_cpu_queue>
+    </multicast>
+
+    <port_init>
+        <gmac_config>
+            <pon_config>
+                <!--  Max. number of configured TCONTs(GPON), LLIDs(EPON)  -->
+                <num_tcont_llid>8</num_tcont_llid>
+            </pon_config>
+
+            <gmac_mh_en>
+                <!--  GMAC Marvell_Header configuration - GMAC adds 2B Marvell header at beginning of packet
+                      mh_enabled 0 = FALSE, 1 = TRUE, 2 = AUTO (enabled if connected to Switch)   -->
+                <gmac0_mh_en>0</gmac0_mh_en>
+                <gmac1_mh_en>0</gmac1_mh_en>
+            </gmac_mh_en>
+
+            <gmac_bm_buffers>
+                <!--  BM pool buffers per MAC  -->
+                <!--  id=0 (GMAC0), id=1(GMAC1), id=2(PON_MAC)   -->
+                <!--  Number of buffers for large packets must  be ( >= 128) -->
+                <!--  Number of buffers for small packets must each be ( >= 128) -->
+
+                <!--  Undefined BM Pools will receive kernel default values  -->
+                <!--  If interfaces are raised before TPM is initialized, the <gmac_bm_buffers> definitions will have no effect,
+                      kernel default values are used instead. -->
+                    <gmac id="0" large_pkt_pool_bufs="2048"  small_pkt_pool_bufs="4096" />
+                    <gmac id="1" large_pkt_pool_bufs="2048"  small_pkt_pool_bufs="4096" />
+                    <gmac id="2" large_pkt_pool_bufs="128"   small_pkt_pool_bufs="512" />
+            </gmac_bm_buffers>
+
+            <gmac_rx_queues>
+                <!--  Rx queue sizes per MAC  -->
+                <!--  id=0 (GMAC0), id=1(GMAC1), id=2(PON_MAC)   -->
+                <!--  size must be >0 -->
+                <!--  Undefined queues will be set to size=0 in hardware -->
+
+                <!--  If interfaces are raised before TPM is initialized, the <gmac_rx_queues> definitions will have no effect,
+                      kernel default values are used instead. -->
+
+                    <gmac id="0">
+                        <queue id="0" size="128"/>
+                        <queue id="1" size="128"/>
+                        <queue id="2" size="128"/>
+                        <queue id="3" size="128"/>
+                        <queue id="4" size="128"/>
+                        <queue id="5" size="128"/>
+                        <queue id="6" size="128"/>
+                        <queue id="7" size="128"/>
+                    </gmac>
+                    <gmac id="1">
+                        <queue id="0" size="128"/>
+                        <queue id="1" size="128"/>
+                        <queue id="2" size="128"/>
+                        <queue id="3" size="128"/>
+                        <queue id="4" size="128"/>
+                        <queue id="5" size="128"/>
+                        <queue id="6" size="128"/>
+                        <queue id="7" size="128"/>
+                    </gmac>
+                    <gmac id="2">
+                        <queue id="0" size="128"/>
+                        <queue id="1" size="128"/>
+                        <queue id="2" size="128"/>
+                        <queue id="3" size="128"/>
+                        <queue id="4" size="128"/>
+                        <queue id="5" size="128"/>
+                        <queue id="6" size="128"/>
+                        <queue id="7" size="128"/>
+                    </gmac>
+            </gmac_rx_queues>
+
+        </gmac_config>
+
+        <tx_module_parameters>
+            <!-- id  : 0 = GMAC0, 1 = GMAC1, 2 = PMAC_0, 3 = PMAC_1, 4 = PMAC_2, 5 = PMAC_3,  -->
+            <!--     : 6 = PMAC_4, 7 = PMAC_5, 8 = PMAC_6, 9 = PMAC_7                         -->
+            <tx_mod id="0">
+                <!--  id          : queue number  -->
+                <!--  sched_method: 0 = STRICT, 1 = WRR   -->
+                <!--  owner       : 0 = CPU, 1 = GMAC0, 2 = GMAC1, 3 = PMAC  -->
+                <!--  owner_q_num : owner queue number   -->
+                <!--  size : queue size must be >0   -->
+                <!--  Undefined queues will not be created in hardware -->
+                <queue_map>
+                    <queue id="0" sched_method="0" owner="0" owner_q_num="0" size="0256" weight="0" />
+                    <queue id="1" sched_method="0" owner="3" owner_q_num="0" size="0256" weight="0" />
+                    <queue id="2" sched_method="0" owner="0" owner_q_num="1" size="0256" weight="0" />
+                    <queue id="3" sched_method="0" owner="3" owner_q_num="1" size="0256" weight="0" />
+                    <queue id="4" sched_method="0" owner="0" owner_q_num="2" size="0256" weight="0" />
+                    <queue id="5" sched_method="0" owner="3" owner_q_num="2" size="0256" weight="0" />
+                    <queue id="6" sched_method="0" owner="0" owner_q_num="3" size="0256" weight="0" />
+                    <queue id="7" sched_method="0" owner="3" owner_q_num="3" size="0256" weight="0" />
+                </queue_map>
+            </tx_mod>
+            <!-- id  : 0 = GMAC0, 1 = GMAC1, 2 = PMAC_0, 3 = PMAC_1, 4 = PMAC_2, 5 = PMAC_3,  -->
+            <!--     : 6 = PMAC_4, 7 = PMAC_5, 8 = PMAC_6, 9 = PMAC_7                         -->
+            <tx_mod id="1">
+                <!--  id          : queue number  -->
+                <!--  sched_method: 0 = STRICT, 1 = WRR   -->
+                <!--  owner       : 0 = CPU, 1 = GMAC0, 2 = GMAC1, 3 = PMAC  -->
+                <!--  owner_q_num : owner queue number   -->
+                <!--  size : queue size must be >0   -->
+                <!--  Undefined queues will not be created in hardware -->
+                <queue_map>
+                    <queue id="0" sched_method="0" owner="0" owner_q_num="0" size="1024" weight="0" />
+                    <queue id="1" sched_method="0" owner="1" owner_q_num="0" size="1024" weight="0" />
+                </queue_map>
+            </tx_mod>
+            <!-- id  : 0 = GMAC0, 1 = GMAC1, 2 = PMAC_0, 3 = PMAC_1, 4 = PMAC_2, 5 = PMAC_3,  -->
+            <!--     : 6 = PMAC_4, 7 = PMAC_5, 8 = PMAC_6, 9 = PMAC_7                         -->
+            <tx_mod id="2">
+                <!--  id          : queue number  -->
+                <!--  sched_method: 0 = STRICT, 1 = WRR   -->
+                <!--  owner       : 0 = CPU, 1 = GMAC0, 2 = GMAC1, 3 = PMAC  -->
+                <!--  owner_q_num : owner queue number   -->
+                <!--  size : queue size must be >0   -->
+                <!--  Undefined queues will not be created in hardware -->
+                <queue_map>
+                    <queue id="0" sched_method="0" owner="0" owner_q_num="0" size="1024" weight="0" />
+                    <queue id="1" sched_method="0" owner="1" owner_q_num="0" size="1024" weight="0" />
+                    <queue id="2" sched_method="0" owner="0" owner_q_num="1" size="1024" weight="0" />
+                    <queue id="3" sched_method="0" owner="1" owner_q_num="1" size="1024" weight="0" />
+                    <queue id="4" sched_method="0" owner="0" owner_q_num="2" size="1024" weight="0" />
+                    <queue id="5" sched_method="0" owner="1" owner_q_num="2" size="1024" weight="0" />
+                    <queue id="6" sched_method="0" owner="0" owner_q_num="3" size="1024" weight="0" />
+                    <queue id="7" sched_method="0" owner="1" owner_q_num="3" size="1024" weight="0" />
+                </queue_map>
+            </tx_mod>
+            <!-- id  : 0 = GMAC0, 1 = GMAC1, 2 = PMAC_0, 3 = PMAC_1, 4 = PMAC_2, 5 = PMAC_3,  -->
+            <!--     : 6 = PMAC_4, 7 = PMAC_5, 8 = PMAC_6, 9 = PMAC_7                         -->
+            <tx_mod id="3">
+                <!--  id          : queue number  -->
+                <!--  sched_method: 0 = STRICT, 1 = WRR   -->
+                <!--  owner       : 0 = CPU, 1 = GMAC0, 2 = GMAC1, 3 = PMAC  -->
+                <!--  owner_q_num : owner queue number   -->
+                <!--  size : queue size must be >0   -->
+                <!--  Undefined queues will not be created in hardware -->
+                <queue_map>
+                    <queue id="0" sched_method="0" owner="0" owner_q_num="0" size="1024" weight="0" />
+                    <queue id="1" sched_method="0" owner="1" owner_q_num="0" size="1024" weight="0" />
+                    <queue id="2" sched_method="0" owner="0" owner_q_num="1" size="1024" weight="0" />
+                    <queue id="3" sched_method="0" owner="1" owner_q_num="1" size="1024" weight="0" />
+                    <queue id="4" sched_method="0" owner="0" owner_q_num="2" size="1024" weight="0" />
+                    <queue id="5" sched_method="0" owner="1" owner_q_num="2" size="1024" weight="0" />
+                    <queue id="6" sched_method="0" owner="0" owner_q_num="3" size="1024" weight="0" />
+                    <queue id="7" sched_method="0" owner="1" owner_q_num="3" size="1024" weight="0" />
+                </queue_map>
+            </tx_mod>
+            <!-- id  : 0 = GMAC0, 1 = GMAC1, 2 = PMAC_0, 3 = PMAC_1, 4 = PMAC_2, 5 = PMAC_3,  -->
+            <!--     : 6 = PMAC_4, 7 = PMAC_5, 8 = PMAC_6, 9 = PMAC_7                         -->
+            <tx_mod id="4">
+                <!--  id          : queue number  -->
+                <!--  sched_method: 0 = STRICT, 1 = WRR   -->
+                <!--  owner       : 0 = CPU, 1 = GMAC0, 2 = GMAC1, 3 = PMAC  -->
+                <!--  owner_q_num : owner queue number   -->
+                <!--  size : queue size must be >0   -->
+                <!--  Undefined queues will not be created in hardware -->
+                <queue_map>
+                    <queue id="0" sched_method="0" owner="0" owner_q_num="0" size="1024" weight="0" />
+                    <queue id="1" sched_method="0" owner="1" owner_q_num="0" size="1024" weight="0" />
+                    <queue id="2" sched_method="0" owner="0" owner_q_num="1" size="1024" weight="0" />
+                    <queue id="3" sched_method="0" owner="1" owner_q_num="1" size="1024" weight="0" />
+                    <queue id="4" sched_method="0" owner="0" owner_q_num="2" size="1024" weight="0" />
+                    <queue id="5" sched_method="0" owner="1" owner_q_num="2" size="1024" weight="0" />
+                    <queue id="6" sched_method="0" owner="0" owner_q_num="3" size="1024" weight="0" />
+                    <queue id="7" sched_method="0" owner="1" owner_q_num="3" size="1024" weight="0" />
+                </queue_map>
+            </tx_mod>
+            <!-- id  : 0 = GMAC0, 1 = GMAC1, 2 = PMAC_0, 3 = PMAC_1, 4 = PMAC_2, 5 = PMAC_3,  -->
+            <!--     : 6 = PMAC_4, 7 = PMAC_5, 8 = PMAC_6, 9 = PMAC_7                         -->
+            <tx_mod id="5">
+                <!--  id          : queue number  -->
+                <!--  sched_method: 0 = STRICT, 1 = WRR   -->
+                <!--  owner       : 0 = CPU, 1 = GMAC0, 2 = GMAC1, 3 = PMAC  -->
+                <!--  owner_q_num : owner queue number   -->
+                <!--  size : queue size must be >0   -->
+                <!--  Undefined queues will not be created in hardware -->
+                <queue_map>
+                    <queue id="0" sched_method="0" owner="0" owner_q_num="0" size="1024" weight="0" />
+                    <queue id="1" sched_method="0" owner="1" owner_q_num="0" size="1024" weight="0" />
+                    <queue id="2" sched_method="0" owner="0" owner_q_num="1" size="1024" weight="0" />
+                    <queue id="3" sched_method="0" owner="1" owner_q_num="1" size="1024" weight="0" />
+                    <queue id="4" sched_method="0" owner="0" owner_q_num="2" size="1024" weight="0" />
+                    <queue id="5" sched_method="0" owner="1" owner_q_num="2" size="1024" weight="0" />
+                    <queue id="6" sched_method="0" owner="0" owner_q_num="3" size="1024" weight="0" />
+                    <queue id="7" sched_method="0" owner="1" owner_q_num="3" size="1024" weight="0" />
+                </queue_map>
+            </tx_mod>
+            <!-- id  : 0 = GMAC0, 1 = GMAC1, 2 = PMAC_0, 3 = PMAC_1, 4 = PMAC_2, 5 = PMAC_3,  -->
+            <!--     : 6 = PMAC_4, 7 = PMAC_5, 8 = PMAC_6, 9 = PMAC_7                         -->
+            <tx_mod id="6">
+                <!--  id          : queue number  -->
+                <!--  sched_method: 0 = STRICT, 1 = WRR   -->
+                <!--  owner       : 0 = CPU, 1 = GMAC0, 2 = GMAC1, 3 = PMAC  -->
+                <!--  owner_q_num : owner queue number   -->
+                <!--  size : queue size must be >0   -->
+                <!--  Undefined queues will not be created in hardware -->
+                <queue_map>
+                    <queue id="0" sched_method="0" owner="0" owner_q_num="0" size="1024" weight="0" />
+                    <queue id="1" sched_method="0" owner="1" owner_q_num="0" size="1024" weight="0" />
+                    <queue id="2" sched_method="0" owner="0" owner_q_num="1" size="1024" weight="0" />
+                    <queue id="3" sched_method="0" owner="1" owner_q_num="1" size="1024" weight="0" />
+                    <queue id="4" sched_method="0" owner="0" owner_q_num="2" size="1024" weight="0" />
+                    <queue id="5" sched_method="0" owner="1" owner_q_num="2" size="1024" weight="0" />
+                    <queue id="6" sched_method="0" owner="0" owner_q_num="3" size="1024" weight="0" />
+                    <queue id="7" sched_method="0" owner="1" owner_q_num="3" size="1024" weight="0" />
+                </queue_map>
+            </tx_mod>
+            <!-- id  : 0 = GMAC0, 1 = GMAC1, 2 = PMAC_0, 3 = PMAC_1, 4 = PMAC_2, 5 = PMAC_3,  -->
+            <!--     : 6 = PMAC_4, 7 = PMAC_5, 8 = PMAC_6, 9 = PMAC_7                         -->
+            <tx_mod id="7">
+                <!--  id          : queue number  -->
+                <!--  sched_method: 0 = STRICT, 1 = WRR   -->
+                <!--  owner       : 0 = CPU, 1 = GMAC0, 2 = GMAC1, 3 = PMAC  -->
+                <!--  owner_q_num : owner queue number   -->
+                <!--  size : queue size must be >0   -->
+                <!--  Undefined queues will not be created in hardware -->
+                <queue_map>
+                    <queue id="0" sched_method="0" owner="0" owner_q_num="0" size="1024" weight="0" />
+                    <queue id="1" sched_method="0" owner="1" owner_q_num="0" size="1024" weight="0" />
+                    <queue id="2" sched_method="0" owner="0" owner_q_num="1" size="1024" weight="0" />
+                    <queue id="3" sched_method="0" owner="1" owner_q_num="1" size="1024" weight="0" />
+                    <queue id="4" sched_method="0" owner="0" owner_q_num="2" size="1024" weight="0" />
+                    <queue id="5" sched_method="0" owner="1" owner_q_num="2" size="1024" weight="0" />
+                    <queue id="6" sched_method="0" owner="0" owner_q_num="3" size="1024" weight="0" />
+                    <queue id="7" sched_method="0" owner="1" owner_q_num="3" size="1024" weight="0" />
+                </queue_map>
+            </tx_mod>
+            <!-- id  : 0 = GMAC0, 1 = GMAC1, 2 = PMAC_0, 3 = PMAC_1, 4 = PMAC_2, 5 = PMAC_3,  -->
+            <!--     : 6 = PMAC_4, 7 = PMAC_5, 8 = PMAC_6, 9 = PMAC_7                         -->
+            <tx_mod id="8">
+                <!--  id          : queue number  -->
+                <!--  sched_method: 0 = STRICT, 1 = WRR   -->
+                <!--  owner       : 0 = CPU, 1 = GMAC0, 2 = GMAC1, 3 = PMAC  -->
+                <!--  owner_q_num : owner queue number   -->
+                <!--  size : queue size must be >0   -->
+                <!--  Undefined queues will not be created in hardware -->
+                <queue_map>
+                    <queue id="0" sched_method="0" owner="0" owner_q_num="0" size="1024" weight="0" />
+                    <queue id="1" sched_method="0" owner="1" owner_q_num="0" size="1024" weight="0" />
+                    <queue id="2" sched_method="0" owner="0" owner_q_num="1" size="1024" weight="0" />
+                    <queue id="3" sched_method="0" owner="1" owner_q_num="1" size="1024" weight="0" />
+                    <queue id="4" sched_method="0" owner="0" owner_q_num="2" size="1024" weight="0" />
+                    <queue id="5" sched_method="0" owner="1" owner_q_num="2" size="1024" weight="0" />
+                    <queue id="6" sched_method="0" owner="0" owner_q_num="3" size="1024" weight="0" />
+                    <queue id="7" sched_method="0" owner="1" owner_q_num="3" size="1024" weight="0" />
+                </queue_map>
+            </tx_mod>
+            <!-- id  : 0 = GMAC0, 1 = GMAC1, 2 = PMAC_0, 3 = PMAC_1, 4 = PMAC_2, 5 = PMAC_3,  -->
+            <!--     : 6 = PMAC_4, 7 = PMAC_5, 8 = PMAC_6, 9 = PMAC_7                         -->
+            <tx_mod id="9">
+                <!--  id          : queue number  -->
+                <!--  sched_method: 0 = STRICT, 1 = WRR   -->
+                <!--  owner       : 0 = CPU, 1 = GMAC0, 2 = GMAC1, 3 = PMAC  -->
+                <!--  owner_q_num : owner queue number   -->
+                <!--  size : queue size must be >0   -->
+                <!--  Undefined queues will not be created in hardware -->
+                <queue_map>
+                    <queue id="0" sched_method="0" owner="0" owner_q_num="0" size="1024" weight="0" />
+                    <queue id="1" sched_method="0" owner="1" owner_q_num="0" size="1024" weight="0" />
+                    <queue id="2" sched_method="0" owner="0" owner_q_num="1" size="1024" weight="0" />
+                    <queue id="3" sched_method="0" owner="1" owner_q_num="1" size="1024" weight="0" />
+                    <queue id="4" sched_method="0" owner="0" owner_q_num="2" size="1024" weight="0" />
+                    <queue id="5" sched_method="0" owner="1" owner_q_num="2" size="1024" weight="0" />
+                    <queue id="6" sched_method="0" owner="0" owner_q_num="3" size="1024" weight="0" />
+                    <queue id="7" sched_method="0" owner="1" owner_q_num="3" size="1024" weight="0" />
+                </queue_map>
+            </tx_mod>
+        </tx_module_parameters>
+
+    </port_init>
+
+    <flow_control>
+        <enabled>0</enabled>
+        <queue_sample_freq>1000</queue_sample_freq>
+        <thresh_high>560</thresh_high>
+        <thresh_low>300</thresh_low>
+        <port>1</port>
+        <tgt_port>0</tgt_port>
+        <tx_port>0</tx_port>
+        <tx_queue>1</tx_queue>
+    </flow_control>
+
+    <TPM>
+        <!--  Get TPM configuration mode: 0 = Application, 1 = Kernel -->
+        <GET_config_mode>1</GET_config_mode>
+        <!--  VALIDATION type: 0 = DISABLED, 1 = ENABLED -->
+        <validation_enable>1</validation_enable>
+
+        <!--  Support 2G DS with GMAC0/1: 0 = disable, 1 = enable -->
+        <ds_mac_based_trunking>0</ds_mac_based_trunking>
+
+        <!--  Init switch or not: 0 = do not Init, 1 = do Init -->
+        <switch_init>0</switch_init>
+
+        <!--  PNC_config:
+                0 = PNC is configured by the MV neta driver,
+                1 = PNC is configured by the TPM SW
+         -->
+        <pnc_config>1</pnc_config>
+
+        <ds_mh_set>0</ds_mh_set>
+
+        <!--  cpu_wan_egr_loopback:
+                0 = CPU WAN Egress Loopback - disabled
+                1 = CPU WAN Egress Loopback - enabled
+        -->
+        <cpu_wan_egr_loopback>0</cpu_wan_egr_loopback>
+
+        <!--  IPV6 5-tuple status :
+                0 = IPV6 is configured by normal API,
+                1 = ipv6 is configured by 5-tuple API
+         -->
+        <ipv6_5t_enable>1</ipv6_5t_enable>
+
+        <!--  GMAC1 acts as virtual UNI :
+                0 = virtual UNI via GMAC1 - disabled,
+                1 = virtual UNI via GMAC1 - enabled
+         -->
+        <gmac1_virt_uni>0</gmac1_virt_uni>
+
+        <vlan_filter_tpid>
+            <!--  id    : option id                 -->
+            <!--  comb  : tpid combination
+                  format - 0xAABB[,0xCCDD]          -->
+            <filter_tpid id="0" type="0x8100,0x8100" />
+            <filter_tpid id="1" type="0x9100,0x8100" />
+            <filter_tpid id="2" type="0x88A8,0x8100" />
+            <filter_tpid id="3" type="0x88A8,0x88A8" />
+            <filter_tpid id="4" type="0x8100,0x88A8" />
+            <filter_tpid id="5" type="0x8100"        />
+            <filter_tpid id="6" type="0x88A8"        />
+            <filter_tpid id="7" type="0x9100"        />
+        </vlan_filter_tpid>
+
+        <!--  trace_debug_info:
+                0xAAAABBBB = AAAA = trace levels
+                             BBBB = debug printouts
+                0x00000000 = trace & debug printouts are disabled,
+                0x80000000 = FATAL_TRACE_LEVEL       0x00000001 = TPM_DB_MOD
+                0xC0000000 = ERROR_TRACE_LEVEL       0x00000002 = TPM_PNCL_MOD
+                0xE0000000 = WARN_TRACE_LEVEL        0x00000004 = TPM_INIT_MOD
+                0xF0000000 = INFO_TRACE_LEVEL        0x00000008 = TPM_HWM_MOD
+                0xF8000000 = DEBUG_TRACE_LEVEL       0x00000010 = TPM_MODL_MOD
+                                                     0x00000020 = TPM_TPM_LOG_MOD
+                0xFFFF0000 = ALL_TRACE_LEVEL         0x00000040 = TPM_CLI_MOD
+                                                     0x00000080 = TPM_PNC_HM_MOD
+                                                     0x00000100 = TPM_MODZ1_HM_MOD
+                                                     0x00000200 = TPM_MODZ2_HM_MOD
+
+                                                     0x0000FFFF = TPM_ALL_MODULES
+                0xFFFFFFFF = trace & debug printouts are ALL ENABLED
+                0xE000FFFF = default value = (WARN + ERRORS ) for trace level
+                                            ALL for debug printouts
+         -->
+        <trace_debug_info>0xE000FFFF</trace_debug_info>
+
+        <!--  Values for VLAN ETY registers -->
+        <vlan_mod_tpid>
+            <!--  id   : type number                      -->
+            <!--  type : VLAN type (0xFFFF - NULL value)  -->
+            <mod_tpid id="0" type="0x8100" />
+            <mod_tpid id="1" type="0x88A8" />
+            <mod_tpid id="2" type="0x9100" />
+            <mod_tpid id="3" type="0xAABB" />
+        </vlan_mod_tpid>
+
+        <modification>
+            <!--  configuration of modification chains:         -->
+            <!--  id   : chain id                               -->
+            <!--  type : chain type
+                                     1 - MH_MOD_SUBR_CHAIN
+                                     2 - MAC_MOD_SUBR_CHAIN
+                                     3 - VLAN_MOD_SUBR_CHAIN
+                                     4 - PPPOE_MOD_SUBR_CHAIN
+                                     5 - IPV6_PPPOE_MOD_SUBR_CHAIN
+                                     6 - L2_MAIN_CHAIN
+                                     7 - IPV4_NAPT_MAIN_CHAIN
+                                     8 - IPV4_MULTICAST_MAIN_CHAIN
+                                     9 - IPV6_ROUTING_MAIN_CHAIN
+                                     10 - IPV6_MULTICAST_MAIN_CHAIN              -->
+            <!--  num  : number of modification chain entries
+                         4096 - "all remaining", fills up remaining part of the modification tables with this chain_type.
+                         Only "L2_MAIN_CHAIN" OR "IPV4_NAPT_MAIN_CHAIN" can be assigned "all remaining"  -->
+            <chain_parameters>
+                    <chain id="0" type="1" num="32" />
+                    <chain id="1" type="2" num="64" />
+                    <chain id="2" type="3" num="300" />
+                    <chain id="3" type="4" num="8" />
+                    <chain id="4" type="5" num="6" />
+                    <chain id="5" type="6" num="170" />
+                    <chain id="6" type="7" num="4096" />
+                    <chain id="7" type="8" num="24" />
+                    <chain id="8" type="9" num="64" />
+                    <chain id="9" type="10" num="24" />
+            </chain_parameters>
+            <udp_checksum_use_init>0</udp_checksum_use_init>
+            <udp_checksum_calc>0</udp_checksum_calc>
+            <split_mod>
+            <!-- enable/disable split pbit and vid modification, 1: enable, 0: disable -->
+            <enable>1</enable>
+            <!--p_bit that supported -->
+            <p_bits>0, 1, 2, 3, 4, 5, 6, 7</p_bits >
+            <!--vlan number that needs split pbit and vid modification, 0~16 -->
+            <vlan_num>16</vlan_num>
+            </split_mod>
+        </modification>
+        <!--  CTC CnM status :
+                0 = CTC CnM - disabled,
+                1 = CTC CnM - enabled
+         -->
+        <ctc_cnm_enable>0</ctc_cnm_enable>
+        <!--  PNC MAC learning status :
+                0 = PNC MAC learn - disabled,
+                1 = PNC MAC learn - enabled
+         -->
+        <split_mod_mode>1</split_mod_mode>
+        <!--  split modification work mode :
+                0 = CTC mode,
+                1 = TR156 mode
+         -->
+        <pnc_mac_learn_enable>0</pnc_mac_learn_enable>
+
+        <!--  CTC IPv6 CNM parsing window: 0 = first 24 bytes of IPv6 header, 1 = second 24 bytes -->
+        <ctc_cnm_ipv6_parsing_window>0</ctc_cnm_ipv6_parsing_window>
+
+        <PnC>
+            <!--  num            :   -->
+            <!--  type           :   0 = ACL,  1 = TABLE -->
+            <!--  cntr_grp       :   0 = GROUP_0(Default), 1-3 = GROUP_1/GROUP_2/GROUP_3/ -->
+            <!--  lu_mask_all    :   0 = DONT_MASK, 1 = MASK -->
+            <!--  min_reset_level:   0 = level_0(Default), 1 = level_1(hard_reset), 2 = Never -->
+            <range_parameters>
+                <!--  TPM_PNC_MNGMT_DS -->
+                <range num="00" type="0" size="01"  cntr_grp="0"  lu_mask="1" min_reset_level = "1" />
+                <!--  TPM_PNC_MAC_LEARN -->
+                <range num="01" type="0" size="0"   cntr_grp="3"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_CPU_WAN_LPBK_US -->
+                <range num="02" type="0" size="08"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_NUM_VLAN_TAGS -->
+                <range num="03" type="0" size="09"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_DS_LOAD_BALANCE -->
+                <range num="04" type="0" size="00"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_MULTI_LPBK -->
+                <range num="05" type="0" size="10"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_VIRT_UNI -->
+                <range num="06" type="0" size="03"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_LOOP_DET_US -->
+                <range num="07" type="0" size="03"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_DROP_PRECEDENCE -->
+                <range num="08" type="0" size="04"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_L2_MAIN -->
+                <range num="09" type="0" size="196" cntr_grp="1"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_ETH_TYPE -->
+                <range num="10" type="0" size="16"  cntr_grp="2"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IGMP -->
+                <range num="11" type="0" size="06"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV4_MC_DS -->
+                <range num="12" type="1" size="16"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV4_MAIN -->
+                <range num="13" type="1" size="64"  cntr_grp="3"  lu_mask="0" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV4_TCP_FLAG -->
+                <range num="14" type="0" size="12"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_TTL -->
+                <range num="15" type="0" size="04"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV4_PROTO -->
+                <range num="16" type="0" size="03"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV4_FRAG -->
+                <range num="17" type="0" size="04"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV4_LEN -->
+                <range num="18" type="0" size="03"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV6_NH -->
+                <range num="19" type="1" size="16"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV6_L4_MC_DS -->
+                <range num="20" type="1" size="16"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV6_TCP_FLAG -->
+                <range num="21" type="1" size="02"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV6_L4 -->
+                <range num="22" type="1" size="17"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV6_HOPL -->
+                <range num="23" type="1" size="03"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV6_MC_SIP -->
+                <range num="24" type="1" size="08"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV6_GEN -->
+                <range num="25" type="1" size="22"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV6_MC_DS -->
+                <range num="26" type="1" size="32"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_IPV6_DIP -->
+                <range num="27" type="1" size="22"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_CNM_IPV4_PRE -->
+                <range num="28" type="1" size="0"   cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_CNM_MAIN -->
+                <range num="29" type="0" size="0"   cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+                <!--  TPM_PNC_CATCH_ALL -->
+                <range num="30" type="0" size="01"  cntr_grp="0"  lu_mask="1" min_reset_level = "0" />
+            </range_parameters>
+            <!--  0 = drop, 1 =  trap to CPU    -->
+            <catch_all_pkt_action>1</catch_all_pkt_action>
+        </PnC>
+    </TPM>
+</cnfg>