Merge "Marvell: Update SDK_2.7.25 from RC32 to thunderbolt_v1"
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/ginstall/gftv/ginstall.mk b/fs/ginstall/gftv/ginstall.mk
index 189ae73..67d095c 100644
--- a/fs/ginstall/gftv/ginstall.mk
+++ b/fs/ginstall/gftv/ginstall.mk
@@ -84,7 +84,7 @@
 ifneq ($(findstring $(PLAT_NAME),gftv254),)
 BOLT_DIR = $(call qstrip,$(BR2_TARGET_ROOTFS_GINSTALL_LOADER_DIR))
 ifeq ($(BR2_PACKAGE_GOOGLE_PROD),y)
-_BRUNO_LOADER = android_bolt_signed_release
+_BRUNO_LOADER = bolt_signed_release
 ifeq ($(BR2_PACKAGE_GOOGLE_UNSIGNED),y)
 ROOTFS_GINSTALL_TYPE=prod_unsigned
 else
@@ -94,7 +94,7 @@
 _BRUNO_LOADER = bolt_signed_openbox
 ROOTFS_GINSTALL_TYPE=openbox
 else
-_BRUNO_LOADER = android_bolt_signed_unlocked
+_BRUNO_LOADER = bolt_signed_unlocked
 ROOTFS_GINSTALL_TYPE=unlocked
 endif
 
diff --git a/fs/skeleton/bin/ipapply b/fs/skeleton/bin/ipapply
index e11d4ef..d2117cf 100755
--- a/fs/skeleton/bin/ipapply
+++ b/fs/skeleton/bin/ipapply
@@ -23,6 +23,8 @@
 import struct
 import subprocess
 import sys
+import time
+
 import options
 
 optspec = """
@@ -38,6 +40,7 @@
 STATIC_IP_CONFIGS_DIR = base_path + '/config/ip/static'
 DYNAMIC_IP_CONFIGS_DIR = base_path + '/tmp/ip/dynamic'
 TMP_CONMAN_DIR = base_path + '/tmp/conman'
+DISABLED_FILE = base_path + '/tmp/ipapply_disabled'
 
 
 def AtomicWrite(filename, data):
@@ -270,7 +273,21 @@
   return ''.join((ApplyNetmask(ip, netmask), '/', netmask))
 
 
+def Disabled():
+  """Returns whether /tmp/ipapply_disabled has been written in the last hour."""
+  if os.path.exists(DISABLED_FILE):
+    disabled_s = (os.stat(DISABLED_FILE).st_mtime + 60 * 60) - time.time()
+    if disabled_s > 0:
+      Log('Disabled for the next %d seconds', disabled_s)
+      return True
+
+  return False
+
+
 def main():
+  if Disabled():
+    return
+
   o = options.Options(optspec)
   (_, _, extra) = o.parse(sys.argv[1:])
   if not extra:
diff --git a/fs/skeleton/bin/ipapply.test b/fs/skeleton/bin/ipapply.test
index c167122..87ea074 100755
--- a/fs/skeleton/bin/ipapply.test
+++ b/fs/skeleton/bin/ipapply.test
@@ -10,6 +10,7 @@
 STATIC_PATH=/config/ip/static
 DYNAMIC_PATH=/tmp/ip/dynamic
 TMP_CONMAN=/tmp/conman
+DISABLED_FILE=/tmp/ipapply_disabled
 
 runnable mktemp &&
 tmpdir=$(mktemp -d ipapplyXXXXXXXXXX) ||
@@ -56,6 +57,8 @@
   rm -rf $tmpdir/$STATIC_PATH
   rm -rf $tmpdir/$DYNAMIC_PATH
   rm -rf $tmpdir/$TMP_CONMAN
+  rm -f $tmpdir/$DISABLED_FILE
+
 
   mkdir -p $tmpdir/$STATIC_PATH
   mkdir -p $tmpdir/$DYNAMIC_PATH
@@ -82,7 +85,7 @@
 WVPASSEQ $? 0
 
 echo
-echo "TEST static config"
+echo "TEST static config and disable"
 export IIU_TEST_UP_INTERFACES="iface0"
 mkdir -p $tmpdir/$STATIC_PATH
 cat >$tmpdir/$STATIC_PATH/iface0 <<-EOF
@@ -93,6 +96,14 @@
 
 
 echo "1.1.1.0/24 dev br0  proto kernel  scope link  src 1.1.1.1" >"$tmpdir/ip_route_show"
+
+touch $tmpdir/$DISABLED_FILE
+output=$(ipapply iface0 2>&1 1>/dev/null)
+WVPASSEQ $? 0
+echo "${output}" | grep "Disabled for the next" >/dev/null
+WVPASSEQ $? 0
+
+rm $tmpdir/$DISABLED_FILE
 output=$(ipapply iface0 2>&1 1>/dev/null)
 WVPASSEQ $? 0
 echo "${output}" | grep "ip addr add 1.1.1.1/24 dev iface0" >/dev/null
diff --git a/fs/skeleton/bin/wifi.test.platform_gfibertv b/fs/skeleton/bin/wifi.test.platform_gfibertv
index d4352b7..b7fa368 100755
--- a/fs/skeleton/bin/wifi.test.platform_gfibertv
+++ b/fs/skeleton/bin/wifi.test.platform_gfibertv
@@ -28,7 +28,7 @@
 WVPASS wifi restore
 WVFAIL hostapd_running
 
-rm -f /tmp/*.wlan[0-9] /tmp/*.wlan[0-9] /tmp/*.wcli[0-9] /tmp/*.opts.2.4 /tmp/*.opts.5
+rm -f /tmp/*.wlan* /tmp/*.wcli* /tmp/*.opts.2.4 /tmp/*.opts.5
 
 WVPASS wifi set -b2.4 -e NONE
 WVPASS hostapd_running
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/bcm_common/bcm_common.mk b/package/bcm_common/bcm_common.mk
index eb4e02a..c7108fa 100644
--- a/package/bcm_common/bcm_common.mk
+++ b/package/bcm_common/bcm_common.mk
@@ -69,7 +69,8 @@
 URSR_TOP=${BCM_NEXUS_DIR}/.. \
 COMMON_DRM_TOP=${BCM_BSEAV_DIR}/lib/security/common_drm \
 SAGE_SUPPORT=${GOOG_SAGE_SUPPORT} \
-SAGE_SECURE_MODE=6
+SAGE_SECURE_MODE=6 \
+WITH_DEFRAG=1
 
 ifeq ($(findstring $(PLAT_NOQUOTES), 97425 97428), $(PLAT_NOQUOTES))
 BCM_MAKE_ENV += WVCDM_VERSION=2.1
diff --git a/package/bcm_rockford/bcm_rockford.mk b/package/bcm_rockford/bcm_rockford.mk
index fa0454a..d7c6601 100644
--- a/package/bcm_rockford/bcm_rockford.mk
+++ b/package/bcm_rockford/bcm_rockford.mk
@@ -48,7 +48,7 @@
 endif
 
 define BCM_ROCKFORD_BUILD_CMDS
-	$(BCM_MAKE_ENV) $(BCM_ROCKFORD_DEBUG) NEXUS_CLIENT_SUPPORT=y WITH_DEFRAG=1 $(MAKE) $(BCM_MAKEFLAGS) -C $(@D)/middleware/v3d/driver -f V3DDriver.mk 
+	$(BCM_MAKE_ENV) $(BCM_ROCKFORD_DEBUG) NEXUS_CLIENT_SUPPORT=y $(MAKE) $(BCM_MAKEFLAGS) -C $(@D)/middleware/v3d/driver -f V3DDriver.mk 
 	$(BCM_MAKE_ENV) $(BCM_ROCKFORD_DEBUG) NEXUS_CLIENT_SUPPORT=y $(MAKE) $(BCM_MAKEFLAGS) -C $(@D)/middleware/v3d/platform/nexus -f platform_nexus.mk
 	$(BCM_MAKE_ENV) $(BCM_ROCKFORD_DEBUG) NEXUS_CLIENT_SUPPORT=y NEXUS_MODE=client $(MAKE) $(BCM_MAKEFLAGS) -C $(@D)/applications/khronos/v3d/nexus/cube
 	$(BCM_MAKE_ENV) $(MAKE) $(BCM_MAKEFLAGS) -C $(@D)/lib/psip
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/ifplugd/ifplugd.action b/package/ifplugd/ifplugd.action
index 60a9aeb..d3eae86 100755
--- a/package/ifplugd/ifplugd.action
+++ b/package/ifplugd/ifplugd.action
@@ -9,6 +9,8 @@
 
 CONMAN_STATUS_DIR=/tmp/conman/interfaces
 
+echo "ifplugd: $iface is $action"
+
 case "$action" in
   up)
     # Clear any existing dynamic IP config.
diff --git a/package/tcpdump/tcpdump.mk b/package/tcpdump/tcpdump.mk
index e928206..4e781ac 100644
--- a/package/tcpdump/tcpdump.mk
+++ b/package/tcpdump/tcpdump.mk
@@ -11,7 +11,8 @@
 TCPDUMP_SOURCE = tcpdump-$(TCPDUMP_VERSION).tar.gz
 TCPDUMP_CONF_ENV = ac_cv_linux_vers=2 cross_compiling=y td_cv_buggygetaddrinfo=cross
 TCPDUMP_CONF_OPT = --without-crypto \
-		$(if $(BR2_PACKAGE_TCPDUMP_SMB),--enable-smb,--disable-smb)
+		   --enable-ipv6 \
+		   $(if $(BR2_PACKAGE_TCPDUMP_SMB),--enable-smb,--disable-smb)
 
 TCPDUMP_DEPENDENCIES = zlib libpcap