diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..a6268a8
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,124 @@
+#
+#    Copyright (c) 2010-2011 Nest, Inc.
+#    All rights reserved.
+#
+#    This document is the property of Nest. It is considered
+#    confidential and proprietary information.
+#
+#    This document may not be reproduced or transmitted in any form,
+#    in whole or in part, without the express written permission of
+#    Nest.
+#
+#    Description:
+#      This file is for iw, a library and set of utilities for
+#      manipulating Linux nl80211-based wireless network interfaces.
+#
+
+
+include pre.mak
+
+PackageRoot		:= ./$(IwPackageName)
+PackageExtension	:= tar.bz2
+PackageSeparator	:=
+PackageVersion		:=
+
+PackagePatchArgs	:= -p1
+
+PackageArchive		:= $(IwPackageName)/$(IwPackageName).$(PackageExtension)
+PackageSourceDir	:= $(IwPackageName)/$(IwPackageName)$(PackageSeparator)$(PackageVersion)
+PackagePatchDir	    := $(IwPackageName)/$(IwPackageName).patches
+
+PackageBuildMakefile	= $(call GenerateBuildPaths,Makefile)
+
+LicenseSourceFile	:= COPYING
+LicenseSourcePath	:= $(addprefix $(PackageSourceDir)/,$(LicenseSourceFile))
+
+CleanPaths		+= $(PackageLicenseFile)
+
+NetlinkDir		:= sw/tps/libnl
+NetlinkIncDir		:= $(call GenerateResultPaths,$(NetlinkDir),usr/include)
+NetlinkLibDir		:= $(call GenerateResultPaths,$(NetlinkDir),usr/lib)
+
+SOURCEDIRS                      = $(PackageSourceDir)
+$(PackageSourceDir)_RULE_TARGET = $(BuildDirectory)/configure
+
+all: $(PackageDefaultGoal)
+
+# Generate the package license contents.
+
+$(LicenseSourcePath): $(BuildDirectory)/source
+
+$(PackageLicenseFile): $(LicenseSourcePath)
+	$(copy-result)
+
+# Extract the source from the archive and apply patches, if any.
+
+$(PackageSourceDir): $(PackageArchive) $(PackagePatchPaths)
+	$(call expand-archive,$(PackageArchive),$(PackageRoot))
+	$(Verbose)touch $@
+	$(call patch-directory,$(PackageSourceDir),$(PackagePatchArgs),$(PackagePatchPaths))
+
+# Prepare the sources.
+
+$(BuildDirectory)/source: | $(PackageSourceDir)
+	$(Verbose)touch $@
+
+# Patch the sources, if necessary.
+
+$(BuildDirectory)/patch: $(BuildDirectory)/source
+	$(Verbose)touch $@
+
+# Generate the package build makefile.
+
+# Configure the source for building.
+
+$(BuildDirectory)/configure: $(BuildDirectory)/source | $(PackageSourceDir) $(BuildDirectory)
+	$(call create-links,$(CURDIR)/$(PackageSourceDir),$(BuildDirectory))
+	$(Verbose)touch $@
+
+# Build the source.
+#
+# We have to unset MAKEFLAGS since they confuse the package build otherwise.
+
+$(BuildDirectory)/build: $(BuildDirectory)/configure | $(BuildDirectory)
+	$(Verbose)unset MAKEFLAGS && \
+	$(MAKE) $(JOBSFLAG) -C $(BuildDirectory) \
+	CC="$(CC)" CXX="$(CXX)" AR=$(AR) NM=$(NM) RANLIB=$(RANLIB) STRIP=$(STRIP) \
+	INSTALL="$(INSTALL) $(INSTALLFLAGS)" \
+	NLLIBNAME="libnl-2.0" \
+	NLCFLAGS="$(call ToolGenerateIncludeArgument,$(NetlinkIncDir))" \
+	NLLDFLAGS="-L$(NetlinkLibDir)" \
+	all
+	$(Verbose)touch $@
+
+# Stage the build to a temporary installation area.
+#
+# We have to unset MAKEFLAGS since they confuse the package build otherwise.
+
+.PHONY: stage
+stage: $(BuildDirectory)/stage-default $(BuildDirectory)/stage-headers
+
+$(BuildDirectory)/stage-default: $(BuildDirectory)/build | $(ResultDirectory)
+	$(Verbose)unset MAKEFLAGS && \
+	$(MAKE) $(JOBSFLAG) -C $(BuildDirectory) \
+	NLLIBNAME="libnl-2.0" \
+	DESTDIR=$(ResultDirectory) \
+	install
+	$(Verbose)touch $@
+
+ResultHeaderDir			= $(ResultDirectory)/usr/include
+SourceHeaderPaths		= $(wildcard $(BuildDirectory)/*.h)
+
+$(ResultHeaderDir):
+	$(create-directory)
+
+$(BuildDirectory)/stage-headers: $(BuildDirectory)/build | $(ResultHeaderDir)
+	install --mode=0664 $(SourceHeaderPaths) $(ResultHeaderDir)
+	$(Verbose)touch $@
+
+clean:
+	$(Verbose)$(RM) $(RMFLAGS) -r $(PackageSourceDir)
+	$(Verbose)$(RM) $(RMFLAGS) -r $(BuildDirectory)
+	$(Verbose)$(RM) $(RMFLAGS) -r $(ResultDirectory)
+
+include post.mak
diff --git a/iw.url b/iw.url
new file mode 100644
index 0000000..a3891cc
--- /dev/null
+++ b/iw.url
@@ -0,0 +1 @@
+git://git.sipsolutions.net/iw.git
diff --git a/iw.version b/iw.version
new file mode 100644
index 0000000..ea3f0d7
--- /dev/null
+++ b/iw.version
@@ -0,0 +1 @@
+0.9.22
diff --git a/iw_0.9.22/iw_0.9.22.patches/iw-50.description b/iw_0.9.22/iw_0.9.22.patches/iw-50.description
new file mode 100644
index 0000000..ec9fb0f
--- /dev/null
+++ b/iw_0.9.22/iw_0.9.22.patches/iw-50.description
@@ -0,0 +1,3 @@
+This patch synchronizes the version script with the like script from the rfkill package and eliminates the GIT repository label version 
+checking because it will invariably fail when the package is included as a subtree or submodule of a larger GIT repository.
+
diff --git a/iw_0.9.22/iw_0.9.22.patches/iw-50.patch b/iw_0.9.22/iw_0.9.22.patches/iw-50.patch
new file mode 100644
index 0000000..fa623cc
--- /dev/null
+++ b/iw_0.9.22/iw_0.9.22.patches/iw-50.patch
@@ -0,0 +1,33 @@
+diff -aruN a/version.sh b/version.sh
+--- a/version.sh	2011-11-04 03:53:29.000000000 -0700
++++ b/version.sh	2011-12-15 14:17:51.000000000 -0800
+@@ -1,20 +1,17 @@
+ #!/bin/sh
+ 
+ VERSION="0.9.22"
+-OUT="$1"
+-
+-if head=`git rev-parse --verify HEAD 2>/dev/null`; then
+-	git update-index --refresh --unmerged > /dev/null
+-	descr=$(git describe)
+ 
+-	# on git builds check that the version number above
+-	# is correct...
+-	[ "${descr%%-*}" = "v$VERSION" ] || exit 2
++SUFFIX=
++if test "x$1" = x--suffix; then
++	shift
++	SUFFIX="-$1"
++	shift
++fi
++OUT="$1"
+ 
+-	v="${descr#v}"
+-	if git diff-index --name-only HEAD | read dummy ; then
+-		v="$v"-dirty
+-	fi
++if test "x$SUFFIX" != 'x'; then
++	v="$VERSION$SUFFIX"
+ else
+ 	v="$VERSION"
+ fi
diff --git a/iw_0.9.22/iw_0.9.22.patches/iw-51.description b/iw_0.9.22/iw_0.9.22.patches/iw-51.description
new file mode 100644
index 0000000..7edbcbe
--- /dev/null
+++ b/iw_0.9.22/iw_0.9.22.patches/iw-51.description
@@ -0,0 +1 @@
+This patch allows the package builder to specify the libnl version being built against externally to pkg-config.
diff --git a/iw_0.9.22/iw_0.9.22.patches/iw-51.patch b/iw_0.9.22/iw_0.9.22.patches/iw-51.patch
new file mode 100644
index 0000000..05d300f
--- /dev/null
+++ b/iw_0.9.22/iw_0.9.22.patches/iw-51.patch
@@ -0,0 +1,57 @@
+diff -aruN iw-0.9.22/Makefile iw-0.9.22.N/Makefile
+--- iw-0.9.22/Makefile	2013-06-07 18:36:50.000000000 -0700
++++ iw-0.9.22.N/Makefile	2013-06-10 12:09:36.006767045 -0700
+@@ -22,6 +22,31 @@
+ OBJS += sections.o
+ ALL = iw
+ 
++ifdef NLLIBNAME
++
++NLLIBS = -lnl
++
++ifeq ($(NLLIBNAME),libnl-1)
++NL1FOUND := Y
++endif
++
++ifeq ($(NLLIBNAME),libnl-2.0)
++NL2FOUND := Y
++endif
++
++ifdef NLCFLAGS
++CFLAGS += $(NLCFLAGS)
++endif
++
++ifdef NLLDFLAGS
++LDFLAGS += $(NLLDFLAGS)
++endif
++
++ifdef NLLIBS
++LIBS += $(NLLIBS)
++endif
++
++else
+ NL1FOUND := $(shell $(PKG_CONFIG) --atleast-version=1 libnl-1 && echo Y)
+ NL2FOUND := $(shell $(PKG_CONFIG) --atleast-version=2 libnl-2.0 && echo Y)
+ 
+@@ -30,8 +55,6 @@
+ endif
+ 
+ ifeq ($(NL2FOUND),Y)
+-CFLAGS += -DCONFIG_LIBNL20
+-LIBS += -lnl-genl
+ NLLIBNAME = libnl-2.0
+ endif
+ 
+@@ -41,6 +64,12 @@
+ 
+ LIBS += $(shell $(PKG_CONFIG) --libs $(NLLIBNAME))
+ CFLAGS += $(shell $(PKG_CONFIG) --cflags $(NLLIBNAME))
++endif
++
++ifeq ($(NL2FOUND),Y)
++CFLAGS += -DCONFIG_LIBNL20
++LIBS += -lnl-genl
++endif
+ 
+ ifeq ($(V),1)
+ Q=
diff --git a/iw_0.9.22/iw_0.9.22.patches/iw-52.description b/iw_0.9.22/iw_0.9.22.patches/iw-52.description
new file mode 100644
index 0000000..7157b47
--- /dev/null
+++ b/iw_0.9.22/iw_0.9.22.patches/iw-52.description
@@ -0,0 +1 @@
+This patch adds the ability to add/delete/start/stop device side tcp keep alives using iw
diff --git a/iw_0.9.22/iw_0.9.22.patches/iw-52.patch b/iw_0.9.22/iw_0.9.22.patches/iw-52.patch
new file mode 100644
index 0000000..6a4e7dd
--- /dev/null
+++ b/iw_0.9.22/iw_0.9.22.patches/iw-52.patch
@@ -0,0 +1,397 @@
+diff -aruN iw_0.9.22/keepalive.c iw_0.9.22.N/keepalive.c
+--- iw_0.9.22/keepalive.c	1969-12-31 16:00:00.000000000 -0800
++++ iw_0.9.22.N/keepalive.c	2015-03-27 17:02:09.738162006 -0700
+@@ -0,0 +1,287 @@
++#include <net/if.h>
++#include <errno.h>
++#include <string.h>
++#include <stdlib.h>
++
++#include <netlink/genl/genl.h>
++#include <netlink/genl/family.h>
++#include <netlink/genl/ctrl.h>
++#include <netlink/msg.h>
++#include <netlink/attr.h>
++
++#include "nl80211.h"
++#include "iw.h"
++
++typedef  uint8_t  u8;
++typedef  uint16_t u16;
++typedef  uint32_t u32;
++
++#define CFG80211_KEEP_ALIVE_PAYLOAD_MAX_LENGTH      64
++
++struct cfg80211_keepalive_request {
++	u32 interval;
++	u8  cmd;		/* 0: ADD; 1: DEL: 2: START; 3: STOP */
++	u8  index;
++	u8  trig;
++	u8  dst_macaddr[ETH_ALEN];
++	u8  payload_len;
++	u8  payload[CFG80211_KEEP_ALIVE_PAYLOAD_MAX_LENGTH];
++};
++
++struct cfg80211_keepalive_request  keepalive_req;
++
++SECTION(keepalive);
++
++static void keepalive_hex_dump(char *title, u8 *buf, size_t len)
++{
++	int i;
++
++    printf("%s - hexdump(len=%lu):", title, (unsigned long) len);
++
++    for (i = 0; i < len; i++)
++        printf(" %02x", buf[i]);
++    printf("\n");
++}
++
++static int nl80211_parse_klv_req(const char *s)
++{
++	long i;
++	char *endp;
++
++	i = strtol(s, &endp, 10);
++
++	if(endp == s)
++    	return -1;
++	return i;
++}
++
++static int nl80211_str2hex(u8 *src, u8 *dst, int src_len)
++{
++	int i, bytecount=0;
++
++	if (src_len & 0x01)
++		return -2;
++
++	for (i=0; i<src_len; i++, src++) {
++		if (i != 0 && i%2 == 0) {
++			dst++;
++			bytecount++;
++		} else {
++			*dst <<= 4;
++		}
++
++		if ((*src >= '0') && (*src <= '9'))
++			*dst += *src - '0';
++		else if ((*src >= 'A') && (*src <= 'F'))
++			*dst += *src - 'A' + 10;
++		else if ((*src >= 'a') && (*src <= 'f'))
++			*dst += *src - 'a' + 10;
++		else {
++			return -1;
++		}
++	}
++
++	bytecount++;
++
++	return bytecount;
++}
++
++static int build_klv_req(struct nl_msg *msg, int klv_cmd, u8 index, int interval, u8 trig, u8 *dst_macaddr, u8 payload_len, u8 *payload)
++{
++	int ret = -1;
++
++	if (!msg)
++		return -1;
++
++	NLA_PUT_U32(msg, NL80211_ATTR_KLV_TYPE, klv_cmd);
++	NLA_PUT_U32(msg, NL80211_ATTR_KLV_INDEX, index);
++
++	if (klv_cmd == 0 || klv_cmd == 1) {
++
++		NLA_PUT_U32(msg, NL80211_ATTR_KLV_INTVL, interval);
++		NLA_PUT_U32 (msg, NL80211_ATTR_KLV_TRIG, trig);
++
++		if (payload != NULL) {
++	    		if (dst_macaddr) {
++	        		keepalive_hex_dump("nl80211 klv_dstmac: ", dst_macaddr, ETH_ALEN);
++	    			NLA_PUT(msg, NL80211_ATTR_MAC, ETH_ALEN, dst_macaddr);
++	    		}
++
++       	    		keepalive_hex_dump("nl80211 klv_payload: ", payload, payload_len);
++	    		NLA_PUT(msg, NL80211_ATTR_KLV_PAYLOAD, payload_len, payload);
++		}
++	}
++
++	ret = 0;
++
++ nla_put_failure:
++    return ret;
++}
++
++static int nl80211_change_klv_req(char **cmdptr, int cmdtype, struct nl_msg *msg)
++{
++	u8   index = 1, trig_type = 1, payload_len = 0;
++	u8   dst_macaddr[ETH_ALEN];
++	u32  interval_ms = 10;
++        u8   *payload=NULL;
++	int  val;
++	u8   dst_payload[64];
++
++	switch(cmdtype) {
++		case 0:  	/* KLV-ADD   */
++			val = nl80211_parse_klv_req(*cmdptr++);
++			/* valid index # is [1, 3]. Index #0 is reserved for driver internal use */
++			if (val <= 0 || val > 3) {
++				printf("invalid index (%d)\n", val);
++				return -1;
++			}
++			index = val;
++
++			val = nl80211_parse_klv_req(*cmdptr++);
++			/* limit klv interval to [10 ms, 50000 ms] */
++			if (val < 1000 || val > 55000) {
++				printf("Keeplalive interval is out of range.\n");
++				return -1;
++			}
++			interval_ms = val;
++
++			val = nl80211_parse_klv_req(*cmdptr++);
++			/* valid trig type is limited to 0 or 1 */
++			if (val < 0 || val > 1) {
++				printf("Invalid keepalive trigger type.\n");
++				return -1;
++			}
++			trig_type = val;
++
++			memset(dst_macaddr, 0, ETH_ALEN);
++			if (nl80211_str2hex((u8 *)(*cmdptr++), dst_macaddr, 2*ETH_ALEN) <= 0) {
++				printf("Invalid mac address\n");
++				return -1;
++			}
++
++			val = strlen(*cmdptr);			/* klv payload length must be <= 64 bytes */
++			if (val > 128) {
++				printf("Payload is too long\n");
++				return -1;
++			}
++
++			memset(dst_payload, 0, 64);
++			if ((payload_len=nl80211_str2hex((u8 *)(*cmdptr), dst_payload, val)) < 0) {
++				printf("Keepalive payload is invalid\n");
++				return -1;
++			}
++
++		    	break;
++
++		case 1:  	/* KLV-DEL   */
++			index = nl80211_parse_klv_req(cmdptr[0]);
++			printf("index = %d\n", index);
++			/* index #0 is reserved for driver internal klv type */
++			if (index <= 0 || index > 3) {
++				return -1;
++			}
++
++			interval_ms = 10000;
++			break;
++
++		case 2:  	/* KLV-START */
++		case 3:  	/* KLV-STOP  */
++			break;
++
++		case 4:  	/* KLV-SHOW  */
++			printf("Not supported\n");
++			val = 0;
++			return val;
++
++		default:
++		    return -1;
++	}
++
++	val = build_klv_req(msg, cmdtype, index, interval_ms, trig_type, &dst_macaddr[0], payload_len, dst_payload);
++
++    return val;
++}
++
++static int handle_keepalive_add(struct nl80211_state *state, struct nl_cb *cb,
++				struct nl_msg *msg, int argc, char **argv)
++{
++	int ret;
++
++	if (argc != 5) {
++		printf("Command parameters incorrect.\n");
++		return -1;
++	}
++
++	ret = nl80211_change_klv_req(argv, 0, msg);
++    printf("ret is %d\n", ret);
++	return ret;
++}
++
++static int handle_keepalive_delete(struct nl80211_state *state, struct nl_cb *cb,
++				struct nl_msg *msg, int argc, char **argv)
++{
++	int ret;
++
++	if (argc != 1) {
++		printf("Command parameters incorrect.\n");
++		return -1;
++	}
++
++	ret = nl80211_change_klv_req(argv, 1, msg);
++	return ret;
++}
++
++static int handle_keepalive_start(struct nl80211_state *state, struct nl_cb *cb,
++				struct nl_msg *msg, int argc, char **argv)
++{
++	int ret;
++	ret = nl80211_change_klv_req(argv, 2, msg);
++	return ret;
++}
++
++static int handle_keepalive_stop(struct nl80211_state *state, struct nl_cb *cb,
++				struct nl_msg *msg, int argc, char **argv)
++{
++	int ret;
++	ret = nl80211_change_klv_req(argv, 3, msg);
++	return ret;
++}
++
++static int print_keepalive_handler(struct nl_msg *msg, void *arg)
++{
++	int *ret = arg;
++	if (arg != NULL)
++		*ret = 0;
++	return 0;
++}
++
++static int handle_keepalive_show(struct nl80211_state *state, struct nl_cb *cb,
++			      struct nl_msg *msg, int argc, char **argv)
++{
++	int ret;
++
++    printf("handle_keepalive_show\n");
++	nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM,
++		  print_keepalive_handler, &ret);
++
++	return 0;
++}
++
++COMMAND(keepalive, add, "<index> <interval> <trigger_type> <dst_macaddr> <payload>",
++	NL80211_CMD_SET_KEEPALIVE, 0, CIB_NETDEV, handle_keepalive_add,
++	"Configure keep alive feature");
++
++COMMAND(keepalive, del, "<index>",
++	NL80211_CMD_SET_KEEPALIVE, 0, CIB_NETDEV, handle_keepalive_delete,
++	"Configure keep alive feature");
++
++COMMAND(keepalive, start, "",
++	NL80211_CMD_SET_KEEPALIVE, 0, CIB_NETDEV, handle_keepalive_start,
++	"Configure keep alive feature");
++
++COMMAND(keepalive, stop, "",
++	NL80211_CMD_SET_KEEPALIVE, 0, CIB_NETDEV, handle_keepalive_stop,
++	"Configure keep alive feature");
++
++COMMAND(keepalive, show, "", NL80211_CMD_GET_KEEPALIVE, 0, CIB_NETDEV, handle_keepalive_show,
++	"Show keepalive status.");
+diff -aruN iw_0.9.22/Makefile iw_0.9.22.N/Makefile
+--- iw_0.9.22/Makefile	2015-03-27 17:09:36.094185681 -0700
++++ iw_0.9.22.N/Makefile	2015-03-27 17:02:09.738162006 -0700
+@@ -18,7 +18,7 @@
+ 	interface.o ibss.o station.o survey.o util.o \
+ 	mesh.o mpath.o scan.o reg.o version.o \
+ 	reason.o status.o connect.o link.o offch.o ps.o cqm.o \
+-	bitrate.o wowlan.o roc.o
++	bitrate.o wowlan.o roc.o keepalive.o
+ OBJS += sections.o
+ ALL = iw
+ 
+diff -aruN iw_0.9.22/nl80211.h iw_0.9.22.N/nl80211.h
+--- iw_0.9.22/nl80211.h	2013-06-07 18:36:50.000000000 -0700
++++ iw_0.9.22.N/nl80211.h	2015-03-27 17:06:38.766176275 -0700
+@@ -616,6 +616,8 @@
+ 
+ 	NL80211_CMD_SET_REKEY_OFFLOAD,
+ 
++	NL80211_CMD_GET_KEEPALIVE,
++	NL80211_CMD_SET_KEEPALIVE,
+ 	/* add new commands above here */
+ 
+ 	/* used to define NL80211_CMD_MAX below */
+@@ -1217,6 +1219,81 @@
+ 	NL80211_ATTR_MAX_NUM_SCHED_SCAN_SSIDS,
+ 	NL80211_ATTR_MAX_SCHED_SCAN_IE_LEN,
+ 
++	NL80211_ATTR_SCAN_SUPP_RATES,
++
++	NL80211_ATTR_HIDDEN_SSID,
++
++	NL80211_ATTR_IE_PROBE_RESP,
++	NL80211_ATTR_IE_ASSOC_RESP,
++
++	NL80211_ATTR_STA_WME,
++	NL80211_ATTR_SUPPORT_AP_UAPSD,
++
++	NL80211_ATTR_ROAM_SUPPORT,
++
++	NL80211_ATTR_SCHED_SCAN_MATCH,
++	NL80211_ATTR_MAX_MATCH_SETS,
++
++	NL80211_ATTR_PMKSA_CANDIDATE,
++
++	NL80211_ATTR_TX_NO_CCK_RATE,
++
++	NL80211_ATTR_TDLS_ACTION,
++	NL80211_ATTR_TDLS_DIALOG_TOKEN,
++	NL80211_ATTR_TDLS_OPERATION,
++	NL80211_ATTR_TDLS_SUPPORT,
++	NL80211_ATTR_TDLS_EXTERNAL_SETUP,
++
++	NL80211_ATTR_DEVICE_AP_SME,
++
++	NL80211_ATTR_DONT_WAIT_FOR_ACK,
++
++	NL80211_ATTR_FEATURE_FLAGS,
++
++	NL80211_ATTR_PROBE_RESP_OFFLOAD,
++
++	NL80211_ATTR_PROBE_RESP,
++
++	NL80211_ATTR_DFS_REGION,
++
++	NL80211_ATTR_DISABLE_HT,
++	NL80211_ATTR_HT_CAPABILITY_MASK,
++
++	NL80211_ATTR_NOACK_MAP,
++
++	NL80211_ATTR_INACTIVITY_TIMEOUT,
++
++	NL80211_ATTR_RX_SIGNAL_DBM,
++
++	NL80211_ATTR_BG_SCAN_PERIOD,
++
++	NL80211_ATTR_WDEV,
++
++	NL80211_ATTR_USER_REG_HINT_TYPE,
++
++	/* leave some room for new attributes in nl80211 updates */
++	NL80211_ATTR_IM_SCAN_RESULT = NL80211_ATTR_BG_SCAN_PERIOD + 10,
++	NL80211_ATTR_IM_SCAN_RESULT_MIN_RSSI,
++
++	NL80211_ATTR_SCAN_MIN_DWELL,
++	NL80211_ATTR_SCAN_MAX_DWELL,
++	NL80211_ATTR_SCAN_NUM_PROBE,
++
++	NL80211_ATTR_SCHED_SCAN_SHORT_INTERVAL,
++	NL80211_ATTR_SCHED_SCAN_NUM_SHORT_INTERVALS,
++
++	NL80211_ATTR_ROAMING_DISABLED,
++	NL80211_ATTR_CH_SWITCH_COUNT,
++	NL80211_ATTR_CH_SWITCH_BLOCK_TX,
++	NL80211_ATTR_CH_SWITCH_POST_BLOCK_TX,
++
++	NL80211_ATTR_KLVDATA,
++	NL80211_ATTR_KLV_TYPE,
++	NL80211_ATTR_KLV_INTVL,
++	NL80211_ATTR_KLV_INDEX,
++	NL80211_ATTR_KLV_TRIG,
++	NL80211_ATTR_KLV_PAYLOAD,
++
+ 	/* add attributes here, update the policy in nl80211.c */
+ 
+ 	__NL80211_ATTR_AFTER_LAST,
diff --git a/iw_0.9.22/iw_0.9.22.patches/iw-54.description b/iw_0.9.22/iw_0.9.22.patches/iw-54.description
new file mode 100644
index 0000000..3a401f0
--- /dev/null
+++ b/iw_0.9.22/iw_0.9.22.patches/iw-54.description
@@ -0,0 +1 @@
+Add the enums for drop action for wow filters. iw latest version still does not define these enumerations. These defines are taken from nl80211.h sitting in compat-wireless directory.
diff --git a/iw_0.9.22/iw_0.9.22.patches/iw-54.patch b/iw_0.9.22/iw_0.9.22.patches/iw-54.patch
new file mode 100644
index 0000000..451e280
--- /dev/null
+++ b/iw_0.9.22/iw_0.9.22.patches/iw-54.patch
@@ -0,0 +1,35 @@
+diff --git a/nl80211.h b/nl80211.h
+index 7ba71e4..3ef44f1 100644
+--- a/nl80211.h
++++ b/nl80211.h
+@@ -2222,12 +2222,30 @@ enum nl80211_wowlan_packet_pattern_attr {
+ 	__NL80211_WOWLAN_PKTPAT_INVALID,
+ 	NL80211_WOWLAN_PKTPAT_MASK,
+ 	NL80211_WOWLAN_PKTPAT_PATTERN,
++	NL80211_WOWLAN_PKTPAT_ACTION = NL80211_WOWLAN_PKTPAT_PATTERN + 10,
+ 
+ 	NUM_NL80211_WOWLAN_PKTPAT,
+ 	MAX_NL80211_WOWLAN_PKTPAT = NUM_NL80211_WOWLAN_PKTPAT - 1,
+ };
+ 
+ /**
++ * enum nl80211_wowlan_action - WoWLAN packet pattern action
++ * @NL80211_WOWLAN_ACTION_ALLOW: this pattern should wake up the host
++ * and the packet should be forwarded to the host unless this packet
++ * matches a DROP rule.
++ * @NL80211_WOWLAN_ACTION_DROP: a packet containing this pattern shouldn't
++ * wake up the host.
++ */
++enum nl80211_wowlan_action {
++        NL80211_WOWLAN_ACTION_ALLOW,
++        NL80211_WOWLAN_ACTION_DROP,
++
++        /* keep last */
++        NUM_NL80211_WOWLAN_ACTION,
++        MAX_NL80211_WOWLAN_ACTION = NUM_NL80211_WOWLAN_ACTION - 1,
++};
++
++/**
+  * struct nl80211_wowlan_pattern_support - pattern support information
+  * @max_patterns: maximum number of patterns supported
+  * @min_pattern_len: minimum length of each pattern
diff --git a/iw_0.9.22/iw_0.9.22.tar.bz2 b/iw_0.9.22/iw_0.9.22.tar.bz2
new file mode 100644
index 0000000..dcb1533
--- /dev/null
+++ b/iw_0.9.22/iw_0.9.22.tar.bz2
Binary files differ
diff --git a/iw_3.10/iw_3.10.patches/iw-50.description b/iw_3.10/iw_3.10.patches/iw-50.description
new file mode 100644
index 0000000..ec9fb0f
--- /dev/null
+++ b/iw_3.10/iw_3.10.patches/iw-50.description
@@ -0,0 +1,3 @@
+This patch synchronizes the version script with the like script from the rfkill package and eliminates the GIT repository label version 
+checking because it will invariably fail when the package is included as a subtree or submodule of a larger GIT repository.
+
diff --git a/iw_3.10/iw_3.10.patches/iw-50.patch b/iw_3.10/iw_3.10.patches/iw-50.patch
new file mode 100644
index 0000000..364439b
--- /dev/null
+++ b/iw_3.10/iw_3.10.patches/iw-50.patch
@@ -0,0 +1,33 @@
+diff -aruN iw-3.10/version.sh iw-3.10.n/version.sh
+--- iw-3.10/version.sh	2013-05-02 00:29:10.000000000 -0700
++++ iw-3.10.n/version.sh	2015-03-24 12:24:03.355548918 -0700
+@@ -1,20 +1,17 @@
+ #!/bin/sh
+ 
+ VERSION="3.10"
+-OUT="$1"
+-
+-if head=`git rev-parse --verify HEAD 2>/dev/null`; then
+-	git update-index --refresh --unmerged > /dev/null
+-	descr=$(git describe)
+ 
+-	# on git builds check that the version number above
+-	# is correct...
+-	[ "${descr%%-*}" = "v$VERSION" ] || exit 2
++SUFFIX=
++if test "x$1" = x--suffix; then
++	shift
++	SUFFIX="-$1"
++	shift
++fi
++OUT="$1"
+ 
+-	v="${descr#v}"
+-	if git diff-index --name-only HEAD | read dummy ; then
+-		v="$v"-dirty
+-	fi
++if test "x$SUFFIX" != 'x'; then
++	v="$VERSION$SUFFIX"
+ else
+ 	v="$VERSION"
+ fi
diff --git a/iw_3.10/iw_3.10.patches/iw-51.description b/iw_3.10/iw_3.10.patches/iw-51.description
new file mode 100644
index 0000000..7edbcbe
--- /dev/null
+++ b/iw_3.10/iw_3.10.patches/iw-51.description
@@ -0,0 +1 @@
+This patch allows the package builder to specify the libnl version being built against externally to pkg-config.
diff --git a/iw_3.10/iw_3.10.patches/iw-51.patch b/iw_3.10/iw_3.10.patches/iw-51.patch
new file mode 100644
index 0000000..471d120
--- /dev/null
+++ b/iw_3.10/iw_3.10.patches/iw-51.patch
@@ -0,0 +1,82 @@
+diff -aruN iw-3.10/Makefile iw-3.10.n/Makefile
+--- iw-3.10/Makefile	2013-05-02 00:29:10.000000000 -0700
++++ iw-3.10.n/Makefile	2015-03-24 12:35:45.731563338 -0700
+@@ -25,6 +25,31 @@
+ 
+ ALL = iw
+ 
++ifdef NLLIBNAME
++
++NLLIBS = -lnl
++
++ifeq ($(NLLIBNAME),libnl-1)
++NL1FOUND := Y
++endif
++
++ifeq ($(NLLIBNAME),libnl-2.0)
++NL2FOUND := Y
++endif
++
++ifdef NLCFLAGS
++CFLAGS += $(NLCFLAGS)
++endif
++
++ifdef NLLDFLAGS
++LDFLAGS += $(NLLDFLAGS)
++endif
++
++ifdef NLLIBS
++LIBS += $(NLLIBS)
++endif
++
++else
+ ifeq ($(NO_PKG_CONFIG),)
+ NL3xFOUND := $(shell $(PKG_CONFIG) --atleast-version=3.2 libnl-3.0 && echo Y)
+ ifneq ($(NL3xFOUND),Y)
+@@ -39,14 +64,13 @@
+ endif
+ endif
+ endif
++endif
+ 
+ ifeq ($(NL1FOUND),Y)
+ NLLIBNAME = libnl-1
+ endif
+ 
+ ifeq ($(NL2FOUND),Y)
+-CFLAGS += -DCONFIG_LIBNL20
+-LIBS += -lnl-genl
+ NLLIBNAME = libnl-2.0
+ endif
+ 
+@@ -80,6 +104,11 @@
+ CFLAGS += $(shell $(PKG_CONFIG) --cflags $(NLLIBNAME))
+ endif # NO_PKG_CONFIG
+ 
++ifeq ($(NL2FOUND),Y)
++CFLAGS += -DCONFIG_LIBNL20
++LIBS += -lnl-genl
++endif
++
+ ifeq ($(V),1)
+ Q=
+ NQ=true
+@@ -88,7 +117,17 @@
+ NQ=echo
+ endif
+ 
+-all: $(ALL)
++all: version_check $(ALL)
++
++version_check:
++ifeq ($(NL2FOUND),Y)
++else
++ifeq ($(NL1FOUND),Y)
++else
++	$(error No libnl found)
++endif
++endif
++
+ 
+ VERSION_OBJS := $(filter-out version.o, $(OBJS))
+ 
diff --git a/iw_3.10/iw_3.10.patches/iw-52.description b/iw_3.10/iw_3.10.patches/iw-52.description
new file mode 100644
index 0000000..7157b47
--- /dev/null
+++ b/iw_3.10/iw_3.10.patches/iw-52.description
@@ -0,0 +1 @@
+This patch adds the ability to add/delete/start/stop device side tcp keep alives using iw
diff --git a/iw_3.10/iw_3.10.patches/iw-52.patch b/iw_3.10/iw_3.10.patches/iw-52.patch
new file mode 100644
index 0000000..dc07013
--- /dev/null
+++ b/iw_3.10/iw_3.10.patches/iw-52.patch
@@ -0,0 +1,329 @@
+diff -aruN iw-3.10/keepalive.c iw-3.10.n/keepalive.c
+--- iw-3.10/keepalive.c	1969-12-31 16:00:00.000000000 -0800
++++ iw-3.10.n/keepalive.c	2015-03-24 12:39:02.019567368 -0700
+@@ -0,0 +1,286 @@
++#include <net/if.h>
++#include <errno.h>
++#include <string.h>
++#include <stdlib.h>
++
++#include <netlink/genl/genl.h>
++#include <netlink/genl/family.h>
++#include <netlink/genl/ctrl.h>
++#include <netlink/msg.h>
++#include <netlink/attr.h>
++
++#include "nl80211.h"
++#include "iw.h"
++
++typedef  uint8_t  u8;
++typedef  uint16_t u16;
++typedef  uint32_t u32;
++
++#define CFG80211_KEEP_ALIVE_PAYLOAD_MAX_LENGTH      64
++
++struct cfg80211_keepalive_request {
++	u32 interval;
++	u8  cmd;		/* 0: ADD; 1: DEL: 2: START; 3: STOP */
++	u8  index;
++	u8  trig;
++	u8  dst_macaddr[ETH_ALEN];
++	u8  payload_len;
++	u8  payload[CFG80211_KEEP_ALIVE_PAYLOAD_MAX_LENGTH];
++};
++
++struct cfg80211_keepalive_request  keepalive_req;
++
++SECTION(keepalive);
++
++static void keepalive_hex_dump(char *title, u8 *buf, size_t len)
++{
++	int i;
++
++    printf("%s - hexdump(len=%lu):", title, (unsigned long) len);
++
++    for (i = 0; i < len; i++)
++        printf(" %02x", buf[i]);
++    printf("\n");
++}
++
++static int nl80211_parse_klv_req(const char *s)
++{
++	long i;
++	char *endp;
++
++	i = strtol(s, &endp, 10);
++
++	if(endp == s)
++    	return -1;
++	return i;
++}
++
++static int nl80211_str2hex(u8 *src, u8 *dst, int src_len)
++{
++	int i, bytecount=0;
++
++	if (src_len & 0x01)
++		return -2;
++
++	for (i=0; i<src_len; i++, src++) {
++		if (i != 0 && i%2 == 0) {
++			dst++;
++			bytecount++;
++		} else {
++			*dst <<= 4;
++		}
++
++		if ((*src >= '0') && (*src <= '9'))
++			*dst += *src - '0';
++		else if ((*src >= 'A') && (*src <= 'F'))
++			*dst += *src - 'A' + 10;
++		else if ((*src >= 'a') && (*src <= 'f'))
++			*dst += *src - 'a' + 10;
++		else {
++			return -1;
++		}
++	}
++
++	bytecount++;
++
++	return bytecount;
++}
++
++static int build_klv_req(struct nl_msg *msg, int klv_cmd, u8 index, int interval, u8 trig, u8 *dst_macaddr, u8 payload_len, u8 *payload)
++{
++	int ret = -1;
++
++	if (!msg)
++		return -1;
++
++	NLA_PUT_U32(msg, NL80211_ATTR_KLV_TYPE, klv_cmd);
++	NLA_PUT_U32(msg, NL80211_ATTR_KLV_INDEX, index);
++
++	if (klv_cmd == 0 || klv_cmd == 1) {
++
++		NLA_PUT_U32(msg, NL80211_ATTR_KLV_INTVL, interval);
++		NLA_PUT_U32 (msg, NL80211_ATTR_KLV_TRIG, trig);
++
++		if (payload != NULL) {
++	    		if (dst_macaddr) {
++	        		keepalive_hex_dump("nl80211 klv_dstmac: ", dst_macaddr, ETH_ALEN);
++	    			NLA_PUT(msg, NL80211_ATTR_MAC, ETH_ALEN, dst_macaddr);
++	    		}
++
++       	    		keepalive_hex_dump("nl80211 klv_payload: ", payload, payload_len);
++	    		NLA_PUT(msg, NL80211_ATTR_KLV_PAYLOAD, payload_len, payload);
++		}
++	}
++
++	ret = 0;
++
++ nla_put_failure:
++    return ret;
++}
++
++static int nl80211_change_klv_req(char **cmdptr, int cmdtype, struct nl_msg *msg)
++{
++	u8   index = 1, trig_type = 1, payload_len = 0;
++	u8   dst_macaddr[ETH_ALEN];
++	u32  interval_ms = 10;
++	int  val;
++	u8   dst_payload[64];
++
++	switch(cmdtype) {
++		case 0:  	/* KLV-ADD   */
++			val = nl80211_parse_klv_req(*cmdptr++);
++			/* valid index # is [1, 3]. Index #0 is reserved for driver internal use */
++			if (val <= 0 || val > 3) {
++				printf("invalid index (%d)\n", val);
++				return -1;
++			}
++			index = val;
++
++			val = nl80211_parse_klv_req(*cmdptr++);
++			/* limit klv interval to [10 ms, 50000 ms] */
++			if (val < 1000 || val > 55000) {
++				printf("Keeplalive interval is out of range.\n");
++				return -1;
++			}
++			interval_ms = val;
++
++			val = nl80211_parse_klv_req(*cmdptr++);
++			/* valid trig type is limited to 0 or 1 */
++			if (val < 0 || val > 1) {
++				printf("Invalid keepalive trigger type.\n");
++				return -1;
++			}
++			trig_type = val;
++
++			memset(dst_macaddr, 0, ETH_ALEN);
++			if (nl80211_str2hex((u8 *)(*cmdptr++), dst_macaddr, 2*ETH_ALEN) <= 0) {
++				printf("Invalid mac address\n");
++				return -1;
++			}
++
++			val = strlen(*cmdptr);			/* klv payload length must be <= 64 bytes */
++			if (val > 128) {
++				printf("Payload is too long\n");
++				return -1;
++			}
++
++			memset(dst_payload, 0, 64);
++			if ((payload_len=nl80211_str2hex((u8 *)(*cmdptr), dst_payload, val)) < 0) {
++				printf("Keepalive payload is invalid\n");
++				return -1;
++			}
++
++		    	break;
++
++		case 1:  	/* KLV-DEL   */
++			index = nl80211_parse_klv_req(cmdptr[0]);
++			printf("index = %d\n", index);
++			/* index #0 is reserved for driver internal klv type */
++			if (index <= 0 || index > 3) {
++				return -1;
++			}
++
++			interval_ms = 10000;
++			break;
++
++		case 2:  	/* KLV-START */
++		case 3:  	/* KLV-STOP  */
++			break;
++
++		case 4:  	/* KLV-SHOW  */
++			printf("Not supported\n");
++			val = 0;
++			return val;
++
++		default:
++		    return -1;
++	}
++
++	val = build_klv_req(msg, cmdtype, index, interval_ms, trig_type, &dst_macaddr[0], payload_len, dst_payload);
++
++    return val;
++}
++
++static int handle_keepalive_add(struct nl80211_state *state, struct nl_cb *cb,
++				struct nl_msg *msg, int argc, char **argv, enum id_input id)
++{
++	int ret;
++
++	if (argc != 5) {
++		printf("Command parameters incorrect.\n");
++		return -1;
++	}
++
++	ret = nl80211_change_klv_req(argv, 0, msg);
++    printf("ret is %d\n", ret);
++	return ret;
++}
++
++static int handle_keepalive_delete(struct nl80211_state *state, struct nl_cb *cb,
++				struct nl_msg *msg, int argc, char **argv, enum id_input id)
++{
++	int ret;
++
++	if (argc != 1) {
++		printf("Command parameters incorrect.\n");
++		return -1;
++	}
++
++	ret = nl80211_change_klv_req(argv, 1, msg);
++	return ret;
++}
++
++static int handle_keepalive_start(struct nl80211_state *state, struct nl_cb *cb,
++				struct nl_msg *msg, int argc, char **argv, enum id_input id)
++{
++	int ret;
++	ret = nl80211_change_klv_req(argv, 2, msg);
++	return ret;
++}
++
++static int handle_keepalive_stop(struct nl80211_state *state, struct nl_cb *cb,
++				struct nl_msg *msg, int argc, char **argv, enum id_input id)
++{
++	int ret;
++	ret = nl80211_change_klv_req(argv, 3, msg);
++	return ret;
++}
++
++static int print_keepalive_handler(struct nl_msg *msg, void *arg)
++{
++	int *ret = arg;
++	if (arg != NULL)
++		*ret = 0;
++	return 0;
++}
++
++static int handle_keepalive_show(struct nl80211_state *state, struct nl_cb *cb,
++				struct nl_msg *msg, int argc, char **argv, enum id_input id)
++{
++	int ret;
++
++	printf("handle_keepalive_show\n");
++	nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM,
++		  print_keepalive_handler, &ret);
++
++	return 0;
++}
++
++COMMAND(keepalive, add, "<index> <interval> <trigger_type> <dst_macaddr> <payload>",
++	NL80211_CMD_SET_KEEPALIVE, 0, CIB_NETDEV, handle_keepalive_add,
++	"Configure keep alive feature");
++
++COMMAND(keepalive, del, "<index>",
++	NL80211_CMD_SET_KEEPALIVE, 0, CIB_NETDEV, handle_keepalive_delete,
++	"Configure keep alive feature");
++
++COMMAND(keepalive, start, "",
++	NL80211_CMD_SET_KEEPALIVE, 0, CIB_NETDEV, handle_keepalive_start,
++	"Configure keep alive feature");
++
++COMMAND(keepalive, stop, "",
++	NL80211_CMD_SET_KEEPALIVE, 0, CIB_NETDEV, handle_keepalive_stop,
++	"Configure keep alive feature");
++
++COMMAND(keepalive, show, "", NL80211_CMD_GET_KEEPALIVE, 0, CIB_NETDEV, handle_keepalive_show,
++	"Show keepalive status.");
+diff -aruN iw-3.10/Makefile iw-3.10.n/Makefile
+--- iw-3.10/Makefile	2015-03-24 12:38:14.411566390 -0700
++++ iw-3.10.n/Makefile	2015-03-24 12:39:23.491567809 -0700
+@@ -16,7 +16,7 @@
+ 	interface.o ibss.o station.o survey.o util.o \
+ 	mesh.o mpath.o scan.o reg.o version.o \
+ 	reason.o status.o connect.o link.o offch.o ps.o cqm.o \
+-	bitrate.o wowlan.o roc.o p2p.o
++	bitrate.o wowlan.o roc.o p2p.o keepalive.o
+ OBJS += sections.o
+ 
+ OBJS-$(HWSIM) += hwsim.o
+diff -aruN iw-3.10/nl80211.h iw-3.10.n/nl80211.h
+--- iw-3.10/nl80211.h	2013-05-02 00:29:10.000000000 -0700
++++ iw-3.10.n/nl80211.h	2015-03-24 12:43:33.115572934 -0700
+@@ -772,6 +772,9 @@
+ 
+ 	NL80211_CMD_SET_REKEY_OFFLOAD,
+ 
++	NL80211_CMD_GET_KEEPALIVE,
++	NL80211_CMD_SET_KEEPALIVE,
++
+ 	NL80211_CMD_PMKSA_CANDIDATE,
+ 
+ 	NL80211_CMD_TDLS_OPER,
+@@ -1727,6 +1730,13 @@
+ 	NL80211_ATTR_CRIT_PROT_ID,
+ 	NL80211_ATTR_MAX_CRIT_PROT_DURATION,
+ 
++	NL80211_ATTR_KLVDATA,
++	NL80211_ATTR_KLV_TYPE,
++	NL80211_ATTR_KLV_INTVL,
++	NL80211_ATTR_KLV_INDEX,
++	NL80211_ATTR_KLV_TRIG,
++	NL80211_ATTR_KLV_PAYLOAD,
++
+ 	/* add attributes here, update the policy in nl80211.c */
+ 
+ 	__NL80211_ATTR_AFTER_LAST,
diff --git a/iw_3.10/iw_3.10.patches/iw-53.description b/iw_3.10/iw_3.10.patches/iw-53.description
new file mode 100644
index 0000000..3a401f0
--- /dev/null
+++ b/iw_3.10/iw_3.10.patches/iw-53.description
@@ -0,0 +1 @@
+Add the enums for drop action for wow filters. iw latest version still does not define these enumerations. These defines are taken from nl80211.h sitting in compat-wireless directory.
diff --git a/iw_3.10/iw_3.10.patches/iw-53.patch b/iw_3.10/iw_3.10.patches/iw-53.patch
new file mode 100644
index 0000000..e327e90
--- /dev/null
+++ b/iw_3.10/iw_3.10.patches/iw-53.patch
@@ -0,0 +1,36 @@
+diff --git a/nl80211.h b/nl80211.h
+index 7ba71e4..3ef44f1 100644
+--- a/nl80211.h
++++ b/nl80211.h
+@@ -2222,12 +2222,30 @@ enum nl80211_wowlan_packet_pattern_attr {
+ 	__NL80211_WOWLAN_PKTPAT_INVALID,
+ 	NL80211_WOWLAN_PKTPAT_MASK,
+ 	NL80211_WOWLAN_PKTPAT_PATTERN,
+	NL80211_WOWLAN_PKTPAT_OFFSET,
++	NL80211_WOWLAN_PKTPAT_ACTION = NL80211_WOWLAN_PKTPAT_PATTERN + 10,
+ 
+ 	NUM_NL80211_WOWLAN_PKTPAT,
+ 	MAX_NL80211_WOWLAN_PKTPAT = NUM_NL80211_WOWLAN_PKTPAT - 1,
+ };
+ 
+ /**
++ * enum nl80211_wowlan_action - WoWLAN packet pattern action
++ * @NL80211_WOWLAN_ACTION_ALLOW: this pattern should wake up the host
++ * and the packet should be forwarded to the host unless this packet
++ * matches a DROP rule.
++ * @NL80211_WOWLAN_ACTION_DROP: a packet containing this pattern shouldn't
++ * wake up the host.
++ */
++enum nl80211_wowlan_action {
++        NL80211_WOWLAN_ACTION_ALLOW,
++        NL80211_WOWLAN_ACTION_DROP,
++
++        /* keep last */
++        NUM_NL80211_WOWLAN_ACTION,
++        MAX_NL80211_WOWLAN_ACTION = NUM_NL80211_WOWLAN_ACTION - 1,
++};
++
++/**
+  * struct nl80211_wowlan_pattern_support - pattern support information
+  * @max_patterns: maximum number of patterns supported
+  * @min_pattern_len: minimum length of each pattern
diff --git a/iw_3.10/iw_3.10.tar.bz2 b/iw_3.10/iw_3.10.tar.bz2
new file mode 100644
index 0000000..686eea5
--- /dev/null
+++ b/iw_3.10/iw_3.10.tar.bz2
Binary files differ
diff --git a/iw_3.10/iw_3.10.version b/iw_3.10/iw_3.10.version
new file mode 100644
index 0000000..14ab818
--- /dev/null
+++ b/iw_3.10/iw_3.10.version
@@ -0,0 +1 @@
+fe424b2465118eca166b2e901b5a378bf9582fb0
