[pkg-wpa-devel] r1779 - in /iw/trunk: ./ debian/ debian/patches/

slh-guest at users.alioth.debian.org slh-guest at users.alioth.debian.org
Sat Aug 4 14:47:47 UTC 2012


Author: slh-guest
Date: Sat Aug  4 14:47:47 2012
New Revision: 1779

URL: http://svn.debian.org/wsvn/pkg-wpa/?sc=1&rev=1779
Log:
update to v3.6

Added:
    iw/trunk/hwsim.c
      - copied unchanged from r1778, iw/branches/upstream/current/hwsim.c
Modified:
    iw/trunk/Makefile
    iw/trunk/bitrate.c
    iw/trunk/connect.c
    iw/trunk/cqm.c
    iw/trunk/debian/changelog
    iw/trunk/debian/patches/dont-use-git-on-the-buildd.patch
    iw/trunk/event.c
    iw/trunk/ibss.c
    iw/trunk/info.c
    iw/trunk/interface.c
    iw/trunk/iw.c
    iw/trunk/iw.h
    iw/trunk/link.c
    iw/trunk/mesh.c
    iw/trunk/mpath.c
    iw/trunk/nl80211.h
    iw/trunk/offch.c
    iw/trunk/phy.c
    iw/trunk/ps.c
    iw/trunk/reg.c
    iw/trunk/roc.c
    iw/trunk/scan.c
    iw/trunk/station.c
    iw/trunk/survey.c
    iw/trunk/util.c
    iw/trunk/version.sh
    iw/trunk/wowlan.c

Modified: iw/trunk/Makefile
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/Makefile?rev=1779&op=diff
==============================================================================
--- iw/trunk/Makefile (original)
+++ iw/trunk/Makefile Sat Aug  4 14:47:47 2012
@@ -20,6 +20,9 @@
 	reason.o status.o connect.o link.o offch.o ps.o cqm.o \
 	bitrate.o wowlan.o roc.o
 OBJS += sections.o
+
+OBJS-$(HWSIM) += hwsim.o
+
 ALL = iw
 
 NL3xFOUND := $(shell $(PKG_CONFIG) --atleast-version=3.2 libnl-3.0 && echo Y)
@@ -85,7 +88,7 @@
 
 all: $(ALL)
 
-VERSION_OBJS := $(filter-out version.o, $(OBJS))
+VERSION_OBJS := $(filter-out version.o, $(OBJS) $(OBJS-y))
 
 version.c: version.sh $(patsubst %.o,%.c,$(VERSION_OBJS)) nl80211.h iw.h Makefile \
 		$(wildcard .git/index .git/refs/tags)
@@ -96,9 +99,9 @@
 	@$(NQ) ' CC  ' $@
 	$(Q)$(CC) $(CFLAGS) -c -o $@ $<
 
-iw:	$(OBJS)
+iw:	$(OBJS) $(OBJS-y)
 	@$(NQ) ' CC  ' iw
-	$(Q)$(CC) $(LDFLAGS) $(OBJS) $(LIBS) -o iw
+	$(Q)$(CC) $(LDFLAGS) $(OBJS) $(OBJS-y) $(LIBS) -o iw
 
 check:
 	$(Q)$(MAKE) all CC="REAL_CC=$(CC) CHECK=\"sparse -Wall\" cgcc"

Modified: iw/trunk/bitrate.c
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/bitrate.c?rev=1779&op=diff
==============================================================================
--- iw/trunk/bitrate.c (original)
+++ iw/trunk/bitrate.c Sat Aug  4 14:47:47 2012
@@ -7,7 +7,8 @@
 static int handle_bitrates(struct nl80211_state *state,
 			   struct nl_cb *cb,
 			   struct nl_msg *msg,
-			   int argc, char **argv)
+			   int argc, char **argv,
+			   enum id_input id)
 {
 	struct nlattr *nl_rates, *nl_band;
 	int i;

Modified: iw/trunk/connect.c
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/connect.c?rev=1779&op=diff
==============================================================================
--- iw/trunk/connect.c (original)
+++ iw/trunk/connect.c Sat Aug  4 14:47:47 2012
@@ -10,7 +10,8 @@
 #include "iw.h"
 
 static int iw_conn(struct nl80211_state *state, struct nl_cb *cb,
-		   struct nl_msg *msg, int argc, char **argv)
+		   struct nl_msg *msg, int argc, char **argv,
+		   enum id_input id)
 {
 	char *end;
 	unsigned char bssid[6];
@@ -60,7 +61,8 @@
 static int disconnect(struct nl80211_state *state,
 		      struct nl_cb *cb,
 		      struct nl_msg *msg,
-		      int argc, char **argv)
+		      int argc, char **argv,
+		      enum id_input id)
 {
 	return 0;
 }
@@ -69,7 +71,8 @@
 	"Disconnect from the current network.");
 
 static int iw_connect(struct nl80211_state *state, struct nl_cb *cb,
-		      struct nl_msg *msg, int argc, char **argv)
+		      struct nl_msg *msg, int argc, char **argv,
+		      enum id_input id)
 {
 	char **conn_argv, *dev = argv[0];
 	static const __u32 cmds[] = {
@@ -105,7 +108,7 @@
 	conn_argv[2] = "establish";
 	for (i = 0; i < argc; i++)
 		conn_argv[i + 3] = argv[i];
-	err = handle_cmd(state, II_NETDEV, conn_argc, conn_argv);
+	err = handle_cmd(state, id, conn_argc, conn_argv);
 	free(conn_argv);
 	if (err)
 		return err;

Modified: iw/trunk/cqm.c
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/cqm.c?rev=1779&op=diff
==============================================================================
--- iw/trunk/cqm.c (original)
+++ iw/trunk/cqm.c Sat Aug  4 14:47:47 2012
@@ -10,7 +10,8 @@
 #include "iw.h"
 
 static int iw_cqm_rssi(struct nl80211_state *state, struct nl_cb *cb,
-		       struct nl_msg *msg, int argc, char **argv)
+		       struct nl_msg *msg, int argc, char **argv,
+		       enum id_input id)
 {
 	struct nl_msg *cqm = NULL;
 	int thold = 0;

Modified: iw/trunk/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/debian/changelog?rev=1779&op=diff
==============================================================================
--- iw/trunk/debian/changelog (original)
+++ iw/trunk/debian/changelog Sat Aug  4 14:47:47 2012
@@ -1,11 +1,11 @@
-iw (3.5-1) UNRELEASED; urgency=low
+iw (3.6-1) UNRELEASED; urgency=low
 
   * NOT RELEASED YET
   * New upstream release.
   * drop obsolete forecasts about iw integration from README.Debian
     (Closes: #683281).
 
- -- Stefan Lippers-Hollmann <s.l-h at gmx.de>  Tue, 26 Jun 2012 14:21:52 +0200
+ -- Stefan Lippers-Hollmann <s.l-h at gmx.de>  Sat, 04 Aug 2012 16:46:20 +0200
 
 iw (3.4-1) unstable; urgency=low
 

Modified: iw/trunk/debian/patches/dont-use-git-on-the-buildd.patch
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/debian/patches/dont-use-git-on-the-buildd.patch?rev=1779&op=diff
==============================================================================
--- iw/trunk/debian/patches/dont-use-git-on-the-buildd.patch (original)
+++ iw/trunk/debian/patches/dont-use-git-on-the-buildd.patch Sat Aug  4 14:47:47 2012
@@ -34,7 +34,7 @@
 --- a/version.sh
 +++ b/version.sh
 @@ -3,21 +3,7 @@
- VERSION="3.5"
+ VERSION="3.6"
  OUT="$1"
  
 -if head=`git rev-parse --verify HEAD 2>/dev/null`; then

Modified: iw/trunk/event.c
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/event.c?rev=1779&op=diff
==============================================================================
--- iw/trunk/event.c (original)
+++ iw/trunk/event.c Sat Aug  4 14:47:47 2012
@@ -218,9 +218,15 @@
 	if (tb[NL80211_ATTR_IFINDEX] && tb[NL80211_ATTR_WIPHY]) {
 		if_indextoname(nla_get_u32(tb[NL80211_ATTR_IFINDEX]), ifname);
 		printf("%s (phy #%d): ", ifname, nla_get_u32(tb[NL80211_ATTR_WIPHY]));
+	} else if (tb[NL80211_ATTR_WDEV] && tb[NL80211_ATTR_WIPHY]) {
+		printf("wdev 0x%llx (phy #%d): ",
+			(unsigned long long)nla_get_u64(tb[NL80211_ATTR_WDEV]),
+			nla_get_u32(tb[NL80211_ATTR_WIPHY]));
 	} else if (tb[NL80211_ATTR_IFINDEX]) {
 		if_indextoname(nla_get_u32(tb[NL80211_ATTR_IFINDEX]), ifname);
 		printf("%s: ", ifname);
+	} else if (tb[NL80211_ATTR_WDEV]) {
+		printf("wdev 0x%llx: ", (unsigned long long)nla_get_u64(tb[NL80211_ATTR_WDEV]));
 	} else if (tb[NL80211_ATTR_WIPHY]) {
 		printf("phy #%d: ", nla_get_u32(tb[NL80211_ATTR_WIPHY]));
 	}
@@ -552,7 +558,8 @@
 static int print_events(struct nl80211_state *state,
 			struct nl_cb *cb,
 			struct nl_msg *msg,
-			int argc, char **argv)
+			int argc, char **argv,
+			enum id_input id)
 {
 	struct print_event_args args;
 	int ret;

Modified: iw/trunk/ibss.c
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/ibss.c?rev=1779&op=diff
==============================================================================
--- iw/trunk/ibss.c (original)
+++ iw/trunk/ibss.c Sat Aug  4 14:47:47 2012
@@ -19,7 +19,8 @@
 static int join_ibss(struct nl80211_state *state,
 		     struct nl_cb *cb,
 		     struct nl_msg *msg,
-		     int argc, char **argv)
+		     int argc, char **argv,
+		     enum id_input id)
 {
 	char *end;
 	unsigned char abssid[6];
@@ -154,7 +155,8 @@
 static int leave_ibss(struct nl80211_state *state,
 		      struct nl_cb *cb,
 		      struct nl_msg *msg,
-		      int argc, char **argv)
+		      int argc, char **argv,
+		      enum id_input id)
 {
 	return 0;
 }

Modified: iw/trunk/info.c
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/info.c?rev=1779&op=diff
==============================================================================
--- iw/trunk/info.c (original)
+++ iw/trunk/info.c Sat Aug  4 14:47:47 2012
@@ -36,6 +36,8 @@
 		return "CCMP (00-0f-ac:4)";
 	case 0x000fac06:
 		return "CMAC (00-0f-ac:6)";
+	case 0x000fac08:
+		return "GCMP (00-0f-ac:8)";
 	case 0x00147201:
 		return "WPI-SMS4 (00-14-72:1)";
 	default:
@@ -444,7 +446,8 @@
 static int handle_info(struct nl80211_state *state,
 		       struct nl_cb *cb,
 		       struct nl_msg *msg,
-		       int argc, char **argv)
+		       int argc, char **argv,
+		       enum id_input id)
 {
 	nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, print_phy_handler, NULL);
 

Modified: iw/trunk/interface.c
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/interface.c?rev=1779&op=diff
==============================================================================
--- iw/trunk/interface.c (original)
+++ iw/trunk/interface.c Sat Aug  4 14:47:47 2012
@@ -159,7 +159,8 @@
 static int handle_interface_add(struct nl80211_state *state,
 				struct nl_cb *cb,
 				struct nl_msg *msg,
-				int argc, char **argv)
+				int argc, char **argv,
+				enum id_input id)
 {
 	char *name;
 	char *mesh_id = NULL;
@@ -233,7 +234,8 @@
 static int handle_interface_del(struct nl80211_state *state,
 				struct nl_cb *cb,
 				struct nl_msg *msg,
-				int argc, char **argv)
+				int argc, char **argv,
+				enum id_input id)
 {
 	return 0;
 }
@@ -277,8 +279,18 @@
 
 	if (tb_msg[NL80211_ATTR_IFNAME])
 		printf("%sInterface %s\n", indent, nla_get_string(tb_msg[NL80211_ATTR_IFNAME]));
+	else
+		printf("%sUnnamed/non-netdev interface\n", indent);
 	if (tb_msg[NL80211_ATTR_IFINDEX])
 		printf("%s\tifindex %d\n", indent, nla_get_u32(tb_msg[NL80211_ATTR_IFINDEX]));
+	if (tb_msg[NL80211_ATTR_WDEV])
+		printf("%s\twdev 0x%llx\n", indent,
+		       (unsigned long long)nla_get_u64(tb_msg[NL80211_ATTR_WDEV]));
+	if (tb_msg[NL80211_ATTR_MAC]) {
+		char mac_addr[20];
+		mac_addr_n2a(mac_addr, nla_data(tb_msg[NL80211_ATTR_MAC]));
+		printf("%s\taddr %s\n", indent, mac_addr);
+	}
 	if (tb_msg[NL80211_ATTR_IFTYPE])
 		printf("%s\ttype %s\n", indent, iftype_name(nla_get_u32(tb_msg[NL80211_ATTR_IFTYPE])));
 	if (!wiphy && tb_msg[NL80211_ATTR_WIPHY])
@@ -301,7 +313,8 @@
 static int handle_interface_info(struct nl80211_state *state,
 				 struct nl_cb *cb,
 				 struct nl_msg *msg,
-				 int argc, char **argv)
+				 int argc, char **argv,
+				 enum id_input id)
 {
 	nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, print_iface_handler, NULL);
 	return 0;
@@ -312,7 +325,8 @@
 static int handle_interface_set(struct nl80211_state *state,
 				struct nl_cb *cb,
 				struct nl_msg *msg,
-				int argc, char **argv)
+				int argc, char **argv,
+				enum id_input id)
 {
 	if (!argc)
 		return 1;
@@ -342,7 +356,8 @@
 static int handle_interface_meshid(struct nl80211_state *state,
 				   struct nl_cb *cb,
 				   struct nl_msg *msg,
-				   int argc, char **argv)
+				   int argc, char **argv,
+				   enum id_input id)
 {
 	char *mesh_id = NULL;
 
@@ -365,7 +380,8 @@
 static int handle_dev_dump(struct nl80211_state *state,
 			   struct nl_cb *cb,
 			   struct nl_msg *msg,
-			   int argc, char **argv)
+			   int argc, char **argv,
+			   enum id_input id)
 {
 	dev_dump_wiphy = -1;
 	nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, print_iface_handler, &dev_dump_wiphy);
@@ -377,7 +393,8 @@
 static int handle_interface_type(struct nl80211_state *state,
 				 struct nl_cb *cb,
 				 struct nl_msg *msg,
-				 int argc, char **argv)
+				 int argc, char **argv,
+				 enum id_input id)
 {
 	enum nl80211_iftype type;
 	int tpset;
@@ -401,9 +418,10 @@
 	IFACE_TYPES);
 
 static int handle_interface_4addr(struct nl80211_state *state,
-				 struct nl_cb *cb,
-				 struct nl_msg *msg,
-				 int argc, char **argv)
+				  struct nl_cb *cb,
+				  struct nl_msg *msg,
+				  int argc, char **argv,
+				  enum id_input id)
 {
 	if (argc != 1)
 		return 1;
@@ -416,7 +434,8 @@
 static int handle_interface_noack_map(struct nl80211_state *state,
 				      struct nl_cb *cb,
 				      struct nl_msg *msg,
-				      int argc, char **argv)
+				      int argc, char **argv,
+				      enum id_input id)
 {
 	uint16_t noack_map;
 	char *end;
@@ -443,7 +462,8 @@
 static int handle_interface_wds_peer(struct nl80211_state *state,
 				     struct nl_cb *cb,
 				     struct nl_msg *msg,
-				     int argc, char **argv)
+				     int argc, char **argv,
+				     enum id_input id)
 {
 	unsigned char mac_addr[ETH_ALEN];
 

Modified: iw/trunk/iw.c
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/iw.c?rev=1779&op=diff
==============================================================================
--- iw/trunk/iw.c (original)
+++ iw/trunk/iw.c Sat Aug  4 14:47:47 2012
@@ -97,6 +97,9 @@
 		break;
 	case CIB_NETDEV:
 		printf("dev <devname> ");
+		break;
+	case CIB_WDEV:
+		printf("wdev <idx> ");
 		break;
 	}
 	if (cmd->parent && cmd->parent->name)
@@ -175,6 +178,8 @@
 			__usage_cmd(cmd, "\t", full);
 		}
 	}
+	printf("\nCommands that use the netdev ('dev') can also be given the\n"
+	       "'wdev' instead to identify the device.\n");
 	printf("\nYou can omit the 'phy' or 'dev' if "
 			"the identification is unique,\n"
 			"e.g. \"iw wlan0 info\" or \"iw phy0 info\". "
@@ -186,7 +191,8 @@
 static int print_help(struct nl80211_state *state,
 		      struct nl_cb *cb,
 		      struct nl_msg *msg,
-		      int argc, char **argv)
+		      int argc, char **argv,
+		      enum id_input id)
 {
 	exit(3);
 }
@@ -255,7 +261,7 @@
 	struct nl_cb *cb;
 	struct nl_cb *s_cb;
 	struct nl_msg *msg;
-	int devidx = 0;
+	signed long long devidx = 0;
 	int err, o_argc;
 	const char *command, *section;
 	char *tmp, **o_argv;
@@ -290,6 +296,13 @@
 		argc--;
 		argv++;
 		break;
+	case II_WDEV:
+		command_idby = CIB_WDEV;
+		devidx = strtoll(*argv, &tmp, 0);
+		if (*tmp != '\0')
+			return 1;
+		argc--;
+		argv++;
 	default:
 		break;
 	}
@@ -324,7 +337,13 @@
 				continue;
 			if (cmd->parent != sectcmd)
 				continue;
-			if (cmd->idby != command_idby)
+			/*
+			 * ignore mismatch id by, but allow WDEV
+			 * in place of NETDEV
+			 */
+			if (cmd->idby != command_idby &&
+			    !(cmd->idby == CIB_NETDEV &&
+			      command_idby == CIB_WDEV))
 				continue;
 			if (strcmp(cmd->name, command))
 				continue;
@@ -347,7 +366,8 @@
 		cmd = sectcmd;
 		if (argc && !cmd->args)
 			return 1;
-		if (cmd->idby != command_idby)
+		if (cmd->idby != command_idby &&
+		    !(cmd->idby == CIB_NETDEV && command_idby == CIB_WDEV))
 			return 1;
 		if (!cmd->handler)
 			return 1;
@@ -365,7 +385,7 @@
 	if (!cmd->cmd) {
 		argc = o_argc;
 		argv = o_argv;
-		return cmd->handler(state, NULL, NULL, argc, argv);
+		return cmd->handler(state, NULL, NULL, argc, argv, idby);
 	}
 
 	msg = nlmsg_alloc();
@@ -392,11 +412,14 @@
 	case CIB_NETDEV:
 		NLA_PUT_U32(msg, NL80211_ATTR_IFINDEX, devidx);
 		break;
+	case CIB_WDEV:
+		NLA_PUT_U64(msg, NL80211_ATTR_WDEV, devidx);
+		break;
 	default:
 		break;
 	}
 
-	err = cmd->handler(state, cb, msg, argc, argv);
+	err = cmd->handler(state, cb, msg, argc, argv, idby);
 	if (err)
 		goto out;
 
@@ -476,6 +499,10 @@
 			err = __handle_cmd(&nlstate, II_PHY_IDX, argc, argv, &cmd);
 		else
 			goto detect;
+	} else if (strcmp(*argv, "wdev") == 0 && argc > 1) {
+		argc--;
+		argv++;
+		err = __handle_cmd(&nlstate, II_WDEV, argc, argv, &cmd);
 	} else {
 		int idx;
 		enum id_input idby = II_NONE;

Modified: iw/trunk/iw.h
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/iw.h?rev=1779&op=diff
==============================================================================
--- iw/trunk/iw.h (original)
+++ iw/trunk/iw.h Sat Aug  4 14:47:47 2012
@@ -27,6 +27,7 @@
 	CIB_NONE,
 	CIB_PHY,
 	CIB_NETDEV,
+	CIB_WDEV,
 };
 
 enum id_input {
@@ -34,6 +35,7 @@
 	II_NETDEV,
 	II_PHY_NAME,
 	II_PHY_IDX,
+	II_WDEV,
 };
 
 struct cmd {
@@ -52,7 +54,8 @@
 	int (*handler)(struct nl80211_state *state,
 		       struct nl_cb *cb,
 		       struct nl_msg *msg,
-		       int argc, char **argv);
+		       int argc, char **argv,
+		       enum id_input id);
 	const struct cmd *(*selector)(int argc, char **argv);
 	const struct cmd *parent;
 };

Modified: iw/trunk/link.c
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/link.c?rev=1779&op=diff
==============================================================================
--- iw/trunk/link.c (original)
+++ iw/trunk/link.c Sat Aug  4 14:47:47 2012
@@ -100,7 +100,8 @@
 static int handle_scan_for_link(struct nl80211_state *state,
 				struct nl_cb *cb,
 				struct nl_msg *msg,
-				int argc, char **argv)
+				int argc, char **argv,
+				enum id_input id)
 {
 	if (argc > 0)
 		return 1;
@@ -131,6 +132,7 @@
 
 	static struct nla_policy rate_policy[NL80211_RATE_INFO_MAX + 1] = {
 		[NL80211_RATE_INFO_BITRATE] = { .type = NLA_U16 },
+		[NL80211_RATE_INFO_BITRATE32] = { .type = NLA_U32 },
 		[NL80211_RATE_INFO_MCS] = { .type = NLA_U8 },
 		[NL80211_RATE_INFO_40_MHZ_WIDTH] = { .type = NLA_FLAG },
 		[NL80211_RATE_INFO_SHORT_GI] = { .type = NLA_FLAG },
@@ -174,11 +176,14 @@
 				     sinfo[NL80211_STA_INFO_TX_BITRATE], rate_policy)) {
 			fprintf(stderr, "failed to parse nested rate attributes!\n");
 		} else {
+			int rate = 0;
 			printf("\ttx bitrate: ");
-			if (rinfo[NL80211_RATE_INFO_BITRATE]) {
-				int rate = nla_get_u16(rinfo[NL80211_RATE_INFO_BITRATE]);
+			if (rinfo[NL80211_RATE_INFO_BITRATE32])
+				rate = nla_get_u32(rinfo[NL80211_RATE_INFO_BITRATE32]);
+			else if (rinfo[NL80211_RATE_INFO_BITRATE])
+				rate = nla_get_u16(rinfo[NL80211_RATE_INFO_BITRATE]);
+			if (rate > 0)
 				printf("%d.%d MBit/s", rate / 10, rate % 10);
-			}
 
 			if (rinfo[NL80211_RATE_INFO_MCS])
 				printf(" MCS %d", nla_get_u8(rinfo[NL80211_RATE_INFO_MCS]));
@@ -222,7 +227,8 @@
 static int handle_link_sta(struct nl80211_state *state,
 			   struct nl_cb *cb,
 			   struct nl_msg *msg,
-			   int argc, char **argv)
+			   int argc, char **argv,
+			   enum id_input id)
 {
 	unsigned char mac_addr[ETH_ALEN];
 
@@ -250,7 +256,8 @@
 }
 
 static int handle_link(struct nl80211_state *state, struct nl_cb *cb,
-		       struct nl_msg *msg, int argc, char **argv)
+		       struct nl_msg *msg, int argc, char **argv,
+		       enum id_input id)
 {
 	char *link_argv[] = {
 		NULL,
@@ -269,7 +276,7 @@
 	int err;
 
 	link_argv[0] = argv[0];
-	err = handle_cmd(state, II_NETDEV, 3, link_argv);
+	err = handle_cmd(state, id, 3, link_argv);
 	if (err)
 		return err;
 
@@ -284,7 +291,7 @@
 
 	station_argv[0] = argv[0];
 	station_argv[3] = bssid_buf;
-	return handle_cmd(state, II_NETDEV, 4, station_argv);
+	return handle_cmd(state, id, 4, station_argv);
 }
 TOPLEVEL(link, NULL, 0, 0, CIB_NETDEV, handle_link,
 	 "Print information about the current link, if any.");

Modified: iw/trunk/mesh.c
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/mesh.c?rev=1779&op=diff
==============================================================================
--- iw/trunk/mesh.c (original)
+++ iw/trunk/mesh.c Sat Aug  4 14:47:47 2012
@@ -199,7 +199,7 @@
 	{"mesh_hwmp_rootmode", NL80211_MESHCONF_HWMP_ROOTMODE,
 	_my_nla_put_u8, _parse_u8, _print_u8},
 	{"mesh_hwmp_rann_interval", NL80211_MESHCONF_HWMP_RANN_INTERVAL,
-	_my_nla_put_u16, _parse_u16, _print_u16},
+	_my_nla_put_u16, _parse_u16, _print_u16_in_TUs},
 	{"mesh_gate_announcements", NL80211_MESHCONF_GATE_ANNOUNCEMENTS,
 	_my_nla_put_u8, _parse_u8, _print_u8},
 	{"mesh_fwding", NL80211_MESHCONF_FORWARDING,
@@ -209,6 +209,14 @@
 	_my_nla_put_u32, _parse_u32, _print_u32},
 	{"mesh_rssi_threshold", NL80211_MESHCONF_RSSI_THRESHOLD,
 	_my_nla_put_u32, _parse_s32, _print_s32_in_dBm},
+	{"mesh_hwmp_active_path_to_root_timeout",
+	NL80211_MESHCONF_HWMP_PATH_TO_ROOT_TIMEOUT,
+	_my_nla_put_u32, _parse_u32, _print_u32_in_TUs},
+	{"mesh_hwmp_root_interval", NL80211_MESHCONF_HWMP_ROOT_INTERVAL,
+	_my_nla_put_u16, _parse_u16, _print_u16_in_TUs},
+	{"mesh_hwmp_confirmation_interval",
+	NL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL,
+	_my_nla_put_u16, _parse_u16, _print_u16_in_TUs},
 };
 
 static void print_all_mesh_param_descr(void)
@@ -243,7 +251,8 @@
 static int set_interface_meshparam(struct nl80211_state *state,
 				   struct nl_cb *cb,
 				   struct nl_msg *msg,
-				   int argc, char **argv)
+				   int argc, char **argv,
+				   enum id_input id)
 {
 	const struct mesh_param_descr *mdescr;
 	struct nlattr *container;
@@ -349,7 +358,8 @@
 static int get_interface_meshparam(struct nl80211_state *state,
 				   struct nl_cb *cb,
 				   struct nl_msg *msg,
-				   int argc, char **argv)
+				   int argc, char **argv,
+				   enum id_input id)
 {
 	const struct mesh_param_descr *mdescr = NULL;
 
@@ -372,7 +382,8 @@
 	"Retrieve mesh parameter (run command without any to see available ones).");
 
 static int join_mesh(struct nl80211_state *state, struct nl_cb *cb,
-		     struct nl_msg *msg, int argc, char **argv)
+		     struct nl_msg *msg, int argc, char **argv,
+		     enum id_input id)
 {
 	struct nlattr *container;
 	float rate;
@@ -420,7 +431,7 @@
 
 	if (!argc)
 		return 0;
-	return set_interface_meshparam(state, cb, msg, argc, argv);
+	return set_interface_meshparam(state, cb, msg, argc, argv, id);
  nla_put_failure:
 	return -ENOBUFS;
 }
@@ -430,7 +441,8 @@
 	"Join a mesh with the given mesh ID with mcast-rate and mesh parameters.");
 
 static int leave_mesh(struct nl80211_state *state, struct nl_cb *cb,
-		      struct nl_msg *msg, int argc, char **argv)
+		      struct nl_msg *msg, int argc, char **argv,
+		      enum id_input id)
 {
 	if (argc)
 		return 1;

Modified: iw/trunk/mpath.c
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/mpath.c?rev=1779&op=diff
==============================================================================
--- iw/trunk/mpath.c (original)
+++ iw/trunk/mpath.c Sat Aug  4 14:47:47 2012
@@ -99,7 +99,8 @@
 static int handle_mpath_get(struct nl80211_state *state,
 			    struct nl_cb *cb,
 			    struct nl_msg *msg,
-			    int argc, char **argv)
+			    int argc, char **argv,
+			    enum id_input id)
 {
 	unsigned char dst[ETH_ALEN];
 
@@ -134,7 +135,8 @@
 static int handle_mpath_set(struct nl80211_state *state,
 			    struct nl_cb *cb,
 			    struct nl_msg *msg,
-			    int argc, char **argv)
+			    int argc, char **argv,
+			    enum id_input id)
 {
 	unsigned char dst[ETH_ALEN];
 	unsigned char next_hop[ETH_ALEN];
@@ -182,7 +184,8 @@
 static int handle_mpath_dump(struct nl80211_state *state,
 			     struct nl_cb *cb,
 			     struct nl_msg *msg,
-			     int argc, char **argv)
+			     int argc, char **argv,
+			     enum id_input id)
 {
 	printf("DEST ADDR         NEXT HOP          IFACE\tSN\tMETRIC\tQLEN\t"
 	       "EXPTIME\t\tDTIM\tDRET\tFLAGS\n");

Modified: iw/trunk/nl80211.h
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/nl80211.h?rev=1779&op=diff
==============================================================================
--- iw/trunk/nl80211.h (original)
+++ iw/trunk/nl80211.h Sat Aug  4 14:47:47 2012
@@ -170,6 +170,8 @@
  *	%NL80211_ATTR_CIPHER_GROUP, %NL80211_ATTR_WPA_VERSIONS,
  *	%NL80211_ATTR_AKM_SUITES, %NL80211_ATTR_PRIVACY,
  *	%NL80211_ATTR_AUTH_TYPE and %NL80211_ATTR_INACTIVITY_TIMEOUT.
+ *	The channel to use can be set on the interface or be given using the
+ *	%NL80211_ATTR_WIPHY_FREQ and %NL80211_ATTR_WIPHY_CHANNEL_TYPE attrs.
  * @NL80211_CMD_NEW_BEACON: old alias for %NL80211_CMD_START_AP
  * @NL80211_CMD_STOP_AP: Stop AP operation on the given interface
  * @NL80211_CMD_DEL_BEACON: old alias for %NL80211_CMD_STOP_AP
@@ -274,6 +276,12 @@
  *      or noise level
  * @NL80211_CMD_NEW_SURVEY_RESULTS: survey data notification (as a reply to
  *	NL80211_CMD_GET_SURVEY and on the "scan" multicast group)
+ *
+ * @NL80211_CMD_SET_PMKSA: Add a PMKSA cache entry, using %NL80211_ATTR_MAC
+ *	(for the BSSID) and %NL80211_ATTR_PMKID.
+ * @NL80211_CMD_DEL_PMKSA: Delete a PMKSA cache entry, using %NL80211_ATTR_MAC
+ *	(for the BSSID) and %NL80211_ATTR_PMKID.
+ * @NL80211_CMD_FLUSH_PMKSA: Flush all PMKSA cache entries.
  *
  * @NL80211_CMD_REG_CHANGE: indicates to userspace the regulatory domain
  * 	has been changed and provides details of the request information
@@ -454,6 +462,10 @@
  *	the frame.
  * @NL80211_CMD_ACTION_TX_STATUS: Alias for @NL80211_CMD_FRAME_TX_STATUS for
  *	backward compatibility.
+ *
+ * @NL80211_CMD_SET_POWER_SAVE: Set powersave, using %NL80211_ATTR_PS_STATE
+ * @NL80211_CMD_GET_POWER_SAVE: Get powersave status in %NL80211_ATTR_PS_STATE
+ *
  * @NL80211_CMD_SET_CQM: Connection quality monitor configuration. This command
  *	is used to configure connection quality monitoring notification trigger
  *	levels.
@@ -759,6 +771,9 @@
  * @NL80211_ATTR_IFNAME: network interface name
  * @NL80211_ATTR_IFTYPE: type of virtual interface, see &enum nl80211_iftype
  *
+ * @NL80211_ATTR_WDEV: wireless device identifier, used for pseudo-devices
+ *	that don't have a netdev (u64)
+ *
  * @NL80211_ATTR_MAC: MAC address (various uses)
  *
  * @NL80211_ATTR_KEY_DATA: (temporal) key data; for TKIP this consists of
@@ -769,6 +784,13 @@
  *	section 7.3.2.25.1, e.g. 0x000FAC04)
  * @NL80211_ATTR_KEY_SEQ: transmit key sequence number (IV/PN) for TKIP and
  *	CCMP keys, each six bytes in little endian
+ * @NL80211_ATTR_KEY_DEFAULT: Flag attribute indicating the key is default key
+ * @NL80211_ATTR_KEY_DEFAULT_MGMT: Flag attribute indicating the key is the
+ *	default management key
+ * @NL80211_ATTR_CIPHER_SUITES_PAIRWISE: For crypto settings for connect or
+ *	other commands, indicates which pairwise cipher suites are used
+ * @NL80211_ATTR_CIPHER_SUITE_GROUP: For crypto settings for connect or
+ *	other commands, indicates which group cipher suite is used
  *
  * @NL80211_ATTR_BEACON_INTERVAL: beacon interval in TU
  * @NL80211_ATTR_DTIM_PERIOD: DTIM period for beaconing
@@ -1004,6 +1026,8 @@
  * @NL80211_ATTR_ACK: Flag attribute indicating that the frame was
  *	acknowledged by the recipient.
  *
+ * @NL80211_ATTR_PS_STATE: powersave state, using &enum nl80211_ps_state values.
+ *
  * @NL80211_ATTR_CQM: connection quality monitor configuration in a
  *	nested attribute with %NL80211_ATTR_CQM_* sub-attributes.
  *
@@ -1061,7 +1085,7 @@
  *	flag isn't set, the frame will be rejected. This is also used as an
  *	nl80211 capability flag.
  *
- * @NL80211_ATTR_BSS_HTOPMODE: HT operation mode (u16)
+ * @NL80211_ATTR_BSS_HT_OPMODE: HT operation mode (u16)
  *
  * @NL80211_ATTR_KEY_DEFAULT_TYPES: A nested attribute containing flags
  *	attributes, specifying what a key should be set as default as.
@@ -1085,10 +1109,10 @@
  *	indicate which WoW triggers should be enabled. This is also
  *	used by %NL80211_CMD_GET_WOWLAN to get the currently enabled WoWLAN
  *	triggers.
-
+ *
  * @NL80211_ATTR_SCHED_SCAN_INTERVAL: Interval between scheduled scan
  *	cycles, in msecs.
-
+ *
  * @NL80211_ATTR_SCHED_SCAN_MATCH: Nested attribute with one or more
  *	sets of attributes to match during scheduled scans.  Only BSSs
  *	that match any of the sets will be reported.  These are
@@ -1115,7 +1139,7 @@
  *	are managed in software: interfaces of these types aren't subject to
  *	any restrictions in their number or combinations.
  *
- * @%NL80211_ATTR_REKEY_DATA: nested attribute containing the information
+ * @NL80211_ATTR_REKEY_DATA: nested attribute containing the information
  *	necessary for GTK rekeying in the device, see &enum nl80211_rekey_data.
  *
  * @NL80211_ATTR_SCAN_SUPP_RATES: rates per to be advertised as supported in scan,
@@ -1182,7 +1206,6 @@
  * @NL80211_ATTR_FEATURE_FLAGS: This u32 attribute contains flags from
  *	&enum nl80211_feature_flags and is advertised in wiphy information.
  * @NL80211_ATTR_PROBE_RESP_OFFLOAD: Indicates that the HW responds to probe
- *
  *	requests while operating in AP-mode.
  *	This attribute holds a bitmap of the supported protocols for
  *	offloading (see &enum nl80211_probe_resp_offload_support_attr).
@@ -1222,6 +1245,12 @@
  * @NL80211_ATTR_BG_SCAN_PERIOD: Background scan period in seconds
  *      or 0 to disable background scan.
  *
+ * @NL80211_ATTR_USER_REG_HINT_TYPE: type of regulatory hint passed from
+ *	userspace. If unset it is assumed the hint comes directly from
+ *	a user. If set code could specify exactly what type of source
+ *	was used to provide the hint. For the different types of
+ *	allowed user regulatory hints see nl80211_user_reg_hint_type.
+ *
  * @NL80211_ATTR_MAX: highest attribute number currently defined
  * @__NL80211_ATTR_AFTER_LAST: internal use
  */
@@ -1472,6 +1501,10 @@
 	NL80211_ATTR_RX_SIGNAL_DBM,
 
 	NL80211_ATTR_BG_SCAN_PERIOD,
+
+	NL80211_ATTR_WDEV,
+
+	NL80211_ATTR_USER_REG_HINT_TYPE,
 
 	/* add attributes here, update the policy in nl80211.c */
 
@@ -1520,6 +1553,13 @@
 #define NL80211_MAX_NR_CIPHER_SUITES		5
 #define NL80211_MAX_NR_AKM_SUITES		2
 
+#define NL80211_MIN_REMAIN_ON_CHANNEL_TIME	10
+
+/* default RSSI threshold for scan results if none specified. */
+#define NL80211_SCAN_RSSI_THOLD_OFF		-300
+
+#define NL80211_CQM_TXE_MAX_INTVL		1800
+
 /**
  * enum nl80211_iftype - (virtual) interface types
  *
@@ -1613,12 +1653,20 @@
  *
  * These attribute types are used with %NL80211_STA_INFO_TXRATE
  * when getting information about the bitrate of a station.
+ * There are 2 attributes for bitrate, a legacy one that represents
+ * a 16-bit value, and new one that represents a 32-bit value.
+ * If the rate value fits into 16 bit, both attributes are reported
+ * with the same value. If the rate is too high to fit into 16 bits
+ * (>6.5535Gbps) only 32-bit attribute is included.
+ * User space tools encouraged to use the 32-bit attribute and fall
+ * back to the 16-bit one for compatibility with older kernels.
  *
  * @__NL80211_RATE_INFO_INVALID: attribute number 0 is reserved
  * @NL80211_RATE_INFO_BITRATE: total bitrate (u16, 100kbit/s)
  * @NL80211_RATE_INFO_MCS: mcs index for 802.11n (u8)
  * @NL80211_RATE_INFO_40_MHZ_WIDTH: 40 Mhz dualchannel bitrate
  * @NL80211_RATE_INFO_SHORT_GI: 400ns guard interval
+ * @NL80211_RATE_INFO_BITRATE32: total bitrate (u32, 100kbit/s)
  * @NL80211_RATE_INFO_MAX: highest rate_info number currently defined
  * @__NL80211_RATE_INFO_AFTER_LAST: internal use
  */
@@ -1628,6 +1676,7 @@
 	NL80211_RATE_INFO_MCS,
 	NL80211_RATE_INFO_40_MHZ_WIDTH,
 	NL80211_RATE_INFO_SHORT_GI,
+	NL80211_RATE_INFO_BITRATE32,
 
 	/* keep last */
 	__NL80211_RATE_INFO_AFTER_LAST,
@@ -1788,6 +1837,9 @@
  * @NL80211_BAND_ATTR_HT_CAPA: HT capabilities, as in the HT information IE
  * @NL80211_BAND_ATTR_HT_AMPDU_FACTOR: A-MPDU factor, as in 11n
  * @NL80211_BAND_ATTR_HT_AMPDU_DENSITY: A-MPDU density, as in 11n
+ * @NL80211_BAND_ATTR_VHT_MCS_SET: 32-byte attribute containing the MCS set as
+ *	defined in 802.11ac
+ * @NL80211_BAND_ATTR_VHT_CAPA: VHT capabilities, as in the HT information IE
  * @NL80211_BAND_ATTR_MAX: highest band attribute currently defined
  * @__NL80211_BAND_ATTR_AFTER_LAST: internal use
  */
@@ -1800,6 +1852,9 @@
 	NL80211_BAND_ATTR_HT_CAPA,
 	NL80211_BAND_ATTR_HT_AMPDU_FACTOR,
 	NL80211_BAND_ATTR_HT_AMPDU_DENSITY,
+
+	NL80211_BAND_ATTR_VHT_MCS_SET,
+	NL80211_BAND_ATTR_VHT_CAPA,
 
 	/* keep last */
 	__NL80211_BAND_ATTR_AFTER_LAST,
@@ -1952,6 +2007,8 @@
  * @__NL80211_SCHED_SCAN_MATCH_ATTR_INVALID: attribute number 0 is reserved
  * @NL80211_SCHED_SCAN_MATCH_ATTR_SSID: SSID to be used for matching,
  * only report BSS with matching SSID.
+ * @NL80211_SCHED_SCAN_MATCH_ATTR_RSSI: RSSI threshold (in dBm) for reporting a
+ *	BSS in scan results. Filtering is turned off if not specified.
  * @NL80211_SCHED_SCAN_MATCH_ATTR_MAX: highest scheduled scan filter
  *	attribute number currently defined
  * @__NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST: internal use
@@ -1959,13 +2016,17 @@
 enum nl80211_sched_scan_match_attr {
 	__NL80211_SCHED_SCAN_MATCH_ATTR_INVALID,
 
-	NL80211_ATTR_SCHED_SCAN_MATCH_SSID,
+	NL80211_SCHED_SCAN_MATCH_ATTR_SSID,
+	NL80211_SCHED_SCAN_MATCH_ATTR_RSSI,
 
 	/* keep last */
 	__NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST,
 	NL80211_SCHED_SCAN_MATCH_ATTR_MAX =
 		__NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST - 1
 };
+
+/* only for backward compatibility */
+#define NL80211_ATTR_SCHED_SCAN_MATCH_SSID NL80211_SCHED_SCAN_MATCH_ATTR_SSID
 
 /**
  * enum nl80211_reg_rule_flags - regulatory rule flags
@@ -2005,6 +2066,26 @@
 	NL80211_DFS_FCC		= 1,
 	NL80211_DFS_ETSI	= 2,
 	NL80211_DFS_JP		= 3,
+};
+
+/**
+ * enum nl80211_user_reg_hint_type - type of user regulatory hint
+ *
+ * @NL80211_USER_REG_HINT_USER: a user sent the hint. This is always
+ *	assumed if the attribute is not set.
+ * @NL80211_USER_REG_HINT_CELL_BASE: the hint comes from a cellular
+ *	base station. Device drivers that have been tested to work
+ *	properly to support this type of hint can enable these hints
+ *	by setting the NL80211_FEATURE_CELL_BASE_REG_HINTS feature
+ *	capability on the struct wiphy. The wireless core will
+ *	ignore all cell base station hints until at least one device
+ *	present has been registered with the wireless core that
+ *	has listed NL80211_FEATURE_CELL_BASE_REG_HINTS as a
+ *	supported feature.
+ */
+enum nl80211_user_reg_hint_type {
+	NL80211_USER_REG_HINT_USER	= 0,
+	NL80211_USER_REG_HINT_CELL_BASE = 1,
 };
 
 /**
@@ -2086,77 +2167,90 @@
  * @__NL80211_MESHCONF_INVALID: internal use
  *
  * @NL80211_MESHCONF_RETRY_TIMEOUT: specifies the initial retry timeout in
- * millisecond units, used by the Peer Link Open message
+ *	millisecond units, used by the Peer Link Open message
  *
  * @NL80211_MESHCONF_CONFIRM_TIMEOUT: specifies the initial confirm timeout, in
- * millisecond units, used by the peer link management to close a peer link
+ *	millisecond units, used by the peer link management to close a peer link
  *
  * @NL80211_MESHCONF_HOLDING_TIMEOUT: specifies the holding timeout, in
- * millisecond units
+ *	millisecond units
  *
  * @NL80211_MESHCONF_MAX_PEER_LINKS: maximum number of peer links allowed
- * on this mesh interface
+ *	on this mesh interface
  *
  * @NL80211_MESHCONF_MAX_RETRIES: specifies the maximum number of peer link
- * open retries that can be sent to establish a new peer link instance in a
- * mesh
+ *	open retries that can be sent to establish a new peer link instance in a
+ *	mesh
  *
  * @NL80211_MESHCONF_TTL: specifies the value of TTL field set at a source mesh
- * point.
+ *	point.
  *
  * @NL80211_MESHCONF_AUTO_OPEN_PLINKS: whether we should automatically
- * open peer links when we detect compatible mesh peers.
+ *	open peer links when we detect compatible mesh peers.
  *
  * @NL80211_MESHCONF_HWMP_MAX_PREQ_RETRIES: the number of action frames
- * containing a PREQ that an MP can send to a particular destination (path
- * target)
+ *	containing a PREQ that an MP can send to a particular destination (path
+ *	target)
  *
  * @NL80211_MESHCONF_PATH_REFRESH_TIME: how frequently to refresh mesh paths
- * (in milliseconds)
+ *	(in milliseconds)
  *
  * @NL80211_MESHCONF_MIN_DISCOVERY_TIMEOUT: minimum length of time to wait
- * until giving up on a path discovery (in milliseconds)
+ *	until giving up on a path discovery (in milliseconds)
  *
  * @NL80211_MESHCONF_HWMP_ACTIVE_PATH_TIMEOUT: The time (in TUs) for which mesh
- * points receiving a PREQ shall consider the forwarding information from the
- * root to be valid. (TU = time unit)
+ *	points receiving a PREQ shall consider the forwarding information from
+ *	the root to be valid. (TU = time unit)
  *
  * @NL80211_MESHCONF_HWMP_PREQ_MIN_INTERVAL: The minimum interval of time (in
- * TUs) during which an MP can send only one action frame containing a PREQ
- * reference element
+ *	TUs) during which an MP can send only one action frame containing a PREQ
+ *	reference element
  *
  * @NL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME: The interval of time (in TUs)
- * that it takes for an HWMP information element to propagate across the mesh
+ *	that it takes for an HWMP information element to propagate across the
+ *	mesh
  *
  * @NL80211_MESHCONF_HWMP_ROOTMODE: whether root mode is enabled or not
  *
  * @NL80211_MESHCONF_ELEMENT_TTL: specifies the value of TTL field set at a
- * source mesh point for path selection elements.
+ *	source mesh point for path selection elements.
  *
  * @NL80211_MESHCONF_HWMP_RANN_INTERVAL:  The interval of time (in TUs) between
- * root announcements are transmitted.
+ *	root announcements are transmitted.
  *
  * @NL80211_MESHCONF_GATE_ANNOUNCEMENTS: Advertise that this mesh station has
- * access to a broader network beyond the MBSS.  This is done via Root
- * Announcement frames.
+ *	access to a broader network beyond the MBSS.  This is done via Root
+ *	Announcement frames.
  *
  * @NL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL: The minimum interval of time (in
- * TUs) during which a mesh STA can send only one Action frame containing a
- * PERR element.
+ *	TUs) during which a mesh STA can send only one Action frame containing a
+ *	PERR element.
  *
  * @NL80211_MESHCONF_FORWARDING: set Mesh STA as forwarding or non-forwarding
- * or forwarding entity (default is TRUE - forwarding entity)
+ *	or forwarding entity (default is TRUE - forwarding entity)
  *
  * @NL80211_MESHCONF_RSSI_THRESHOLD: RSSI threshold in dBm. This specifies the
- * threshold for average signal strength of candidate station to establish
- * a peer link.
+ *	threshold for average signal strength of candidate station to establish
+ *	a peer link.
+ *
+ * @NL80211_MESHCONF_SYNC_OFFSET_MAX_NEIGHBOR: maximum number of neighbors
+ *	to synchronize to for 11s default synchronization method
+ *	(see 11C.12.2.2)
+ *
+ * @NL80211_MESHCONF_HT_OPMODE: set mesh HT protection mode.
  *
  * @NL80211_MESHCONF_ATTR_MAX: highest possible mesh configuration attribute
  *
- * @NL80211_MESHCONF_SYNC_OFFSET_MAX_NEIGHBOR: maximum number of neighbors
- * to synchronize to for 11s default synchronization method (see 11C.12.2.2)
- *
- * @NL80211_MESHCONF_HT_OPMODE: set mesh HT protection mode.
+ * @NL80211_MESHCONF_HWMP_PATH_TO_ROOT_TIMEOUT: The time (in TUs) for
+ *	which mesh STAs receiving a proactive PREQ shall consider the forwarding
+ *	information to the root mesh STA to be valid.
+ *
+ * @NL80211_MESHCONF_HWMP_ROOT_INTERVAL: The interval of time (in TUs) between
+ *	proactive PREQs are transmitted.
+ *
+ * @NL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL: The minimum interval of time
+ *	(in TUs) during which a mesh STA can send only one Action frame
+ *	containing a PREQ element for root path confirmation.
  *
  * @__NL80211_MESHCONF_ATTR_AFTER_LAST: internal use
  */
@@ -2184,6 +2278,9 @@
 	NL80211_MESHCONF_RSSI_THRESHOLD,
 	NL80211_MESHCONF_SYNC_OFFSET_MAX_NEIGHBOR,
 	NL80211_MESHCONF_HT_OPMODE,
+	NL80211_MESHCONF_HWMP_PATH_TO_ROOT_TIMEOUT,
+	NL80211_MESHCONF_HWMP_ROOT_INTERVAL,
+	NL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL,
 
 	/* keep last */
 	__NL80211_MESHCONF_ATTR_AFTER_LAST,
@@ -2199,34 +2296,36 @@
  * @__NL80211_MESH_SETUP_INVALID: Internal use
  *
  * @NL80211_MESH_SETUP_ENABLE_VENDOR_PATH_SEL: Enable this option to use a
- * vendor specific path selection algorithm or disable it to use the default
- * HWMP.
+ *	vendor specific path selection algorithm or disable it to use the
+ *	default HWMP.
  *
  * @NL80211_MESH_SETUP_ENABLE_VENDOR_METRIC: Enable this option to use a
- * vendor specific path metric or disable it to use the default Airtime
- * metric.
+ *	vendor specific path metric or disable it to use the default Airtime
+ *	metric.
  *
  * @NL80211_MESH_SETUP_IE: Information elements for this mesh, for instance, a
- * robust security network ie, or a vendor specific information element that
- * vendors will use to identify the path selection methods and metrics in use.
+ *	robust security network ie, or a vendor specific information element
+ *	that vendors will use to identify the path selection methods and
+ *	metrics in use.
  *
  * @NL80211_MESH_SETUP_USERSPACE_AUTH: Enable this option if an authentication
- * daemon will be authenticating mesh candidates.
+ *	daemon will be authenticating mesh candidates.
  *
  * @NL80211_MESH_SETUP_USERSPACE_AMPE: Enable this option if an authentication
- * daemon will be securing peer link frames.  AMPE is a secured version of Mesh
- * Peering Management (MPM) and is implemented with the assistance of a
- * userspace daemon.  When this flag is set, the kernel will send peer
- * management frames to a userspace daemon that will implement AMPE
- * functionality (security capabilities selection, key confirmation, and key
- * management).  When the flag is unset (default), the kernel can autonomously
- * complete (unsecured) mesh peering without the need of a userspace daemon.
+ *	daemon will be securing peer link frames.  AMPE is a secured version of
+ *	Mesh Peering Management (MPM) and is implemented with the assistance of
+ *	a userspace daemon.  When this flag is set, the kernel will send peer
+ *	management frames to a userspace daemon that will implement AMPE
+ *	functionality (security capabilities selection, key confirmation, and
+ *	key management).  When the flag is unset (default), the kernel can
+ *	autonomously complete (unsecured) mesh peering without the need of a
+ *	userspace daemon.
+ *
+ * @NL80211_MESH_SETUP_ENABLE_VENDOR_SYNC: Enable this option to use a
+ *	vendor specific synchronization method or disable it to use the default
+ *	neighbor offset synchronization
  *
  * @NL80211_MESH_SETUP_ATTR_MAX: highest possible mesh setup attribute number
- *
- * @NL80211_MESH_SETUP_ENABLE_VENDOR_SYNC: Enable this option to use a
- * vendor specific synchronization method or disable it to use the default
- * neighbor offset synchronization
  *
  * @__NL80211_MESH_SETUP_ATTR_AFTER_LAST: Internal use
  */
@@ -2490,12 +2589,19 @@
  * enum nl80211_band - Frequency band
  * @NL80211_BAND_2GHZ: 2.4 GHz ISM band
  * @NL80211_BAND_5GHZ: around 5 GHz band (4.9 - 5.7 GHz)
+ * @NL80211_BAND_60GHZ: around 60 GHz band (58.32 - 64.80 GHz)
  */
 enum nl80211_band {
 	NL80211_BAND_2GHZ,
 	NL80211_BAND_5GHZ,
-};
-
+	NL80211_BAND_60GHZ,
+};
+
+/**
+ * enum nl80211_ps_state - powersave state
+ * @NL80211_PS_DISABLED: powersave is disabled
+ * @NL80211_PS_ENABLED: powersave is enabled
+ */
 enum nl80211_ps_state {
 	NL80211_PS_DISABLED,
 	NL80211_PS_ENABLED,
@@ -2513,6 +2619,17 @@
  * @NL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT: RSSI threshold event
  * @NL80211_ATTR_CQM_PKT_LOSS_EVENT: a u32 value indicating that this many
  *	consecutive packets were not acknowledged by the peer
+ * @NL80211_ATTR_CQM_TXE_RATE: TX error rate in %. Minimum % of TX failures
+ *	during the given %NL80211_ATTR_CQM_TXE_INTVL before an
+ *	%NL80211_CMD_NOTIFY_CQM with reported %NL80211_ATTR_CQM_TXE_RATE and
+ *	%NL80211_ATTR_CQM_TXE_PKTS is generated.
+ * @NL80211_ATTR_CQM_TXE_PKTS: number of attempted packets in a given
+ *	%NL80211_ATTR_CQM_TXE_INTVL before %NL80211_ATTR_CQM_TXE_RATE is
+ *	checked.
+ * @NL80211_ATTR_CQM_TXE_INTVL: interval in seconds. Specifies the periodic
+ *	interval in which %NL80211_ATTR_CQM_TXE_PKTS and
+ *	%NL80211_ATTR_CQM_TXE_RATE must be satisfied before generating an
+ *	%NL80211_CMD_NOTIFY_CQM. Set to 0 to turn off TX error reporting.
  * @__NL80211_ATTR_CQM_AFTER_LAST: internal
  * @NL80211_ATTR_CQM_MAX: highest key attribute
  */
@@ -2522,6 +2639,9 @@
 	NL80211_ATTR_CQM_RSSI_HYST,
 	NL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT,
 	NL80211_ATTR_CQM_PKT_LOSS_EVENT,
+	NL80211_ATTR_CQM_TXE_RATE,
+	NL80211_ATTR_CQM_TXE_PKTS,
+	NL80211_ATTR_CQM_TXE_INTVL,
 
 	/* keep last */
 	__NL80211_ATTR_CQM_AFTER_LAST,
@@ -2534,10 +2654,14 @@
  *      configured threshold
  * @NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH: The RSSI is higher than the
  *      configured threshold
+ * @NL80211_CQM_RSSI_BEACON_LOSS_EVENT: The device experienced beacon loss.
+ *	(Note that deauth/disassoc will still follow if the AP is not
+ *	available. This event might get used as roaming event, etc.)
  */
 enum nl80211_cqm_rssi_threshold_event {
 	NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW,
 	NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH,
+	NL80211_CQM_RSSI_BEACON_LOSS_EVENT,
 };
 
 
@@ -2867,11 +2991,15 @@
  * @NL80211_FEATURE_HT_IBSS: This driver supports IBSS with HT datarates.
  * @NL80211_FEATURE_INACTIVITY_TIMER: This driver takes care of freeing up
  *	the connected inactive stations in AP mode.
+ * @NL80211_FEATURE_CELL_BASE_REG_HINTS: This driver has been tested
+ *	to work properly to suppport receiving regulatory hints from
+ *	cellular base stations.
  */
 enum nl80211_feature_flags {
 	NL80211_FEATURE_SK_TX_STATUS	= 1 << 0,
 	NL80211_FEATURE_HT_IBSS		= 1 << 1,
 	NL80211_FEATURE_INACTIVITY_TIMER = 1 << 2,
+	NL80211_FEATURE_CELL_BASE_REG_HINTS = 1 << 3,
 };
 
 /**

Modified: iw/trunk/offch.c
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/offch.c?rev=1779&op=diff
==============================================================================
--- iw/trunk/offch.c (original)
+++ iw/trunk/offch.c Sat Aug  4 14:47:47 2012
@@ -10,7 +10,8 @@
 #include "iw.h"
 
 static int offchannel(struct nl80211_state *state, struct nl_cb *cb,
-		      struct nl_msg *msg, int argc, char **argv)
+		      struct nl_msg *msg, int argc, char **argv,
+		      enum id_input id)
 {
 	char *end;
 

Modified: iw/trunk/phy.c
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/phy.c?rev=1779&op=diff
==============================================================================
--- iw/trunk/phy.c (original)
+++ iw/trunk/phy.c Sat Aug  4 14:47:47 2012
@@ -15,7 +15,8 @@
 static int handle_name(struct nl80211_state *state,
 		       struct nl_cb *cb,
 		       struct nl_msg *msg,
-		       int argc, char **argv)
+		       int argc, char **argv,
+		       enum id_input id)
 {
 	if (argc != 1)
 		return 1;
@@ -78,7 +79,8 @@
 
 static int handle_freq(struct nl80211_state *state,
 		       struct nl_cb *cb, struct nl_msg *msg,
-		       int argc, char **argv)
+		       int argc, char **argv,
+		       enum id_input id)
 {
 	return handle_freqchan(msg, false, argc, argv);
 }
@@ -91,7 +93,8 @@
 
 static int handle_chan(struct nl80211_state *state,
 		       struct nl_cb *cb, struct nl_msg *msg,
-		       int argc, char **argv)
+		       int argc, char **argv,
+		       enum id_input id)
 {
 	return handle_freqchan(msg, true, argc, argv);
 }
@@ -102,7 +105,8 @@
 
 static int handle_fragmentation(struct nl80211_state *state,
 				struct nl_cb *cb, struct nl_msg *msg,
-				int argc, char **argv)
+				int argc, char **argv,
+				enum id_input id)
 {
 	unsigned int frag;
 
@@ -133,7 +137,8 @@
 
 static int handle_rts(struct nl80211_state *state,
 		      struct nl_cb *cb, struct nl_msg *msg,
-		      int argc, char **argv)
+		      int argc, char **argv,
+		      enum id_input id)
 {
 	unsigned int rts;
 
@@ -165,7 +170,8 @@
 static int handle_netns(struct nl80211_state *state,
 			struct nl_cb *cb,
 			struct nl_msg *msg,
-			int argc, char **argv)
+			int argc, char **argv,
+			enum id_input id)
 {
 	char *end;
 
@@ -192,7 +198,8 @@
 static int handle_coverage(struct nl80211_state *state,
 			struct nl_cb *cb,
 			struct nl_msg *msg,
-			int argc, char **argv)
+			int argc, char **argv,
+			enum id_input id)
 {
 	char *end;
 	unsigned int coverage;
@@ -223,7 +230,8 @@
 static int handle_distance(struct nl80211_state *state,
 			struct nl_cb *cb,
 			struct nl_msg *msg,
-			int argc, char **argv)
+			int argc, char **argv,
+			enum id_input id)
 {
 	char *end;
 	unsigned int distance, coverage;
@@ -263,7 +271,8 @@
 static int handle_txpower(struct nl80211_state *state,
 			  struct nl_cb *cb,
 			  struct nl_msg *msg,
-			  int argc, char **argv)
+			  int argc, char **argv,
+			  enum id_input id)
 {
 	enum nl80211_tx_power_setting type;
 	int mbm;
@@ -314,7 +323,8 @@
 static int handle_antenna(struct nl80211_state *state,
 			  struct nl_cb *cb,
 			  struct nl_msg *msg,
-			  int argc, char **argv)
+			  int argc, char **argv,
+			  enum id_input id)
 {
 	char *end;
 	uint32_t tx_ant = 0, rx_ant = 0;

Modified: iw/trunk/ps.c
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/ps.c?rev=1779&op=diff
==============================================================================
--- iw/trunk/ps.c (original)
+++ iw/trunk/ps.c Sat Aug  4 14:47:47 2012
@@ -11,7 +11,8 @@
 static int set_power_save(struct nl80211_state *state,
 			  struct nl_cb *cb,
 			  struct nl_msg *msg,
-			  int argc, char **argv)
+			  int argc, char **argv,
+			  enum id_input id)
 {
 	enum nl80211_ps_state ps_state;
 
@@ -71,7 +72,8 @@
 static int get_power_save(struct nl80211_state *state,
 				   struct nl_cb *cb,
 				   struct nl_msg *msg,
-				   int argc, char **argv)
+				   int argc, char **argv,
+				   enum id_input id)
 {
 	nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM,
 		  print_power_save_handler, NULL);

Modified: iw/trunk/reg.c
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/reg.c?rev=1779&op=diff
==============================================================================
--- iw/trunk/reg.c (original)
+++ iw/trunk/reg.c Sat Aug  4 14:47:47 2012
@@ -62,7 +62,8 @@
 static int handle_reg_set(struct nl80211_state *state,
 			  struct nl_cb *cb,
 			  struct nl_msg *msg,
-			  int argc, char **argv)
+			  int argc, char **argv,
+			  enum id_input id)
 {
 	char alpha2[3];
 
@@ -182,7 +183,8 @@
 static int handle_reg_get(struct nl80211_state *state,
 			  struct nl_cb *cb,
 			  struct nl_msg *msg,
-			  int argc, char **argv)
+			  int argc, char **argv,
+			  enum id_input id)
 {
 	nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, print_reg_handler, NULL);
 	return 0;

Modified: iw/trunk/roc.c
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/roc.c?rev=1779&op=diff
==============================================================================
--- iw/trunk/roc.c (original)
+++ iw/trunk/roc.c Sat Aug  4 14:47:47 2012
@@ -14,7 +14,8 @@
 SECTION(roc);
 
 static int handle_roc_start(struct nl80211_state *state, struct nl_cb *cb,
-			    struct nl_msg *msg, int argc, char **argv)
+			    struct nl_msg *msg, int argc, char **argv,
+			    enum id_input id)
 {
 	char *end;
 	int freq, time;

Modified: iw/trunk/scan.c
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/scan.c?rev=1779&op=diff
==============================================================================
--- iw/trunk/scan.c (original)
+++ iw/trunk/scan.c Sat Aug  4 14:47:47 2012
@@ -55,7 +55,8 @@
 static int handle_scan(struct nl80211_state *state,
 		       struct nl_cb *cb,
 		       struct nl_msg *msg,
-		       int argc, char **argv)
+		       int argc, char **argv,
+		       enum id_input id)
 {
 	struct nl_msg *ssids = NULL, *freqs = NULL;
 	char *eptr;
@@ -304,6 +305,9 @@
 			break;
 		case 6:
 			printf("AES-128-CMAC");
+			break;
+		case 8:
+			printf("GCMP");
 			break;
 		default:
 			printf("%.02x-%.02x-%.02x:%d",
@@ -1244,7 +1248,8 @@
 static int handle_scan_dump(struct nl80211_state *state,
 			    struct nl_cb *cb,
 			    struct nl_msg *msg,
-			    int argc, char **argv)
+			    int argc, char **argv,
+			    enum id_input id)
 {
 	if (argc > 1)
 		return 1;
@@ -1266,7 +1271,8 @@
 static int handle_scan_combined(struct nl80211_state *state,
 				struct nl_cb *cb,
 				struct nl_msg *msg,
-				int argc, char **argv)
+				int argc, char **argv,
+				enum id_input id)
 {
 	char **trig_argv;
 	static char *dump_argv[] = {
@@ -1300,7 +1306,7 @@
 	int i;
 	for (i = 0; i < argc - 2 - (dump_argc - 3); i++)
 		trig_argv[i + 3] = argv[i + 2 + (dump_argc - 3)];
-	err = handle_cmd(state, II_NETDEV, trig_argc, trig_argv);
+	err = handle_cmd(state, id, trig_argc, trig_argv);
 	free(trig_argv);
 	if (err)
 		return err;
@@ -1336,7 +1342,7 @@
 	}
 
 	dump_argv[0] = argv[0];
-	return handle_cmd(state, II_NETDEV, dump_argc, dump_argv);
+	return handle_cmd(state, id, dump_argc, dump_argv);
 }
 TOPLEVEL(scan, "[-u] [freq <freq>*] [ies <hex as 00:11:..>] [ssid <ssid>*|passive]", 0, 0,
 	 CIB_NETDEV, handle_scan_combined,

Modified: iw/trunk/station.c
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/station.c?rev=1779&op=diff
==============================================================================
--- iw/trunk/station.c (original)
+++ iw/trunk/station.c Sat Aug  4 14:47:47 2012
@@ -58,6 +58,7 @@
 
 	static struct nla_policy rate_policy[NL80211_RATE_INFO_MAX + 1] = {
 		[NL80211_RATE_INFO_BITRATE] = { .type = NLA_U16 },
+		[NL80211_RATE_INFO_BITRATE32] = { .type = NLA_U32 },
 		[NL80211_RATE_INFO_MCS] = { .type = NLA_U8 },
 		[NL80211_RATE_INFO_40_MHZ_WIDTH] = { .type = NLA_FLAG },
 		[NL80211_RATE_INFO_SHORT_GI] = { .type = NLA_FLAG },
@@ -123,11 +124,14 @@
 				     sinfo[NL80211_STA_INFO_TX_BITRATE], rate_policy)) {
 			fprintf(stderr, "failed to parse nested rate attributes!\n");
 		} else {
+			int rate = 0;
 			printf("\n\ttx bitrate:\t");
-			if (rinfo[NL80211_RATE_INFO_BITRATE]) {
-				int rate = nla_get_u16(rinfo[NL80211_RATE_INFO_BITRATE]);
+			if (rinfo[NL80211_RATE_INFO_BITRATE32])
+				rate = nla_get_u32(rinfo[NL80211_RATE_INFO_BITRATE32]);
+			else if (rinfo[NL80211_RATE_INFO_BITRATE])
+				rate = nla_get_u16(rinfo[NL80211_RATE_INFO_BITRATE]);
+			if (rate > 0)
 				printf("%d.%d MBit/s", rate / 10, rate % 10);
-			}
 
 			if (rinfo[NL80211_RATE_INFO_MCS])
 				printf(" MCS %d", nla_get_u8(rinfo[NL80211_RATE_INFO_MCS]));
@@ -234,7 +238,8 @@
 static int handle_station_get(struct nl80211_state *state,
 			      struct nl_cb *cb,
 			      struct nl_msg *msg,
-			      int argc, char **argv)
+			      int argc, char **argv,
+			      enum id_input id)
 {
 	unsigned char mac_addr[ETH_ALEN];
 
@@ -284,7 +289,8 @@
 static int handle_station_set_plink(struct nl80211_state *state,
 			      struct nl_cb *cb,
 			      struct nl_msg *msg,
-			      int argc, char **argv)
+			      int argc, char **argv,
+			      enum id_input id)
 {
 	unsigned char plink_action;
 	unsigned char mac_addr[ETH_ALEN];
@@ -331,9 +337,10 @@
 	select_station_cmd, station_set_plink);
 
 static int handle_station_set_vlan(struct nl80211_state *state,
-			      struct nl_cb *cb,
-			      struct nl_msg *msg,
-			      int argc, char **argv)
+				   struct nl_cb *cb,
+				   struct nl_msg *msg,
+				   int argc, char **argv,
+				   enum id_input id)
 {
 	unsigned char mac_addr[ETH_ALEN];
 	unsigned long sta_vlan = 0;
@@ -381,7 +388,8 @@
 static int handle_station_dump(struct nl80211_state *state,
 			       struct nl_cb *cb,
 			       struct nl_msg *msg,
-			       int argc, char **argv)
+			       int argc, char **argv,
+			       enum id_input id)
 {
 	nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, print_sta_handler, NULL);
 	return 0;

Modified: iw/trunk/survey.c
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/survey.c?rev=1779&op=diff
==============================================================================
--- iw/trunk/survey.c (original)
+++ iw/trunk/survey.c Sat Aug  4 14:47:47 2012
@@ -69,9 +69,10 @@
 }
 
 static int handle_survey_dump(struct nl80211_state *state,
-			       struct nl_cb *cb,
-			       struct nl_msg *msg,
-			       int argc, char **argv)
+			      struct nl_cb *cb,
+			      struct nl_msg *msg,
+			      int argc, char **argv,
+			      enum id_input id)
 {
 	nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, print_survey_handler, NULL);
 	return 0;

Modified: iw/trunk/util.c
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/util.c?rev=1779&op=diff
==============================================================================
--- iw/trunk/util.c (original)
+++ iw/trunk/util.c Sat Aug  4 14:47:47 2012
@@ -269,7 +269,13 @@
 		return (freq - 2407) / 5;
 
 	/* FIXME: dot11ChannelStartingFactor (802.11-2007 17.3.8.3.2) */
-	return freq/5 - 1000;
+	if (freq < 45000)
+		return freq/5 - 1000;
+
+	if (freq >= 58320 && freq <= 64800)
+		return (freq - 56160) / 2160;
+
+	return 0;
 }
 
 void print_ssid_escaped(const uint8_t len, const uint8_t *data)

Modified: iw/trunk/version.sh
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/version.sh?rev=1779&op=diff
==============================================================================
--- iw/trunk/version.sh (original)
+++ iw/trunk/version.sh Sat Aug  4 14:47:47 2012
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-VERSION="3.5"
+VERSION="3.6"
 OUT="$1"
 
 if head=`git rev-parse --verify HEAD 2>/dev/null`; then

Modified: iw/trunk/wowlan.c
URL: http://svn.debian.org/wsvn/pkg-wpa/iw/trunk/wowlan.c?rev=1779&op=diff
==============================================================================
--- iw/trunk/wowlan.c (original)
+++ iw/trunk/wowlan.c Sat Aug  4 14:47:47 2012
@@ -14,7 +14,8 @@
 SECTION(wowlan);
 
 static int handle_wowlan_enable(struct nl80211_state *state, struct nl_cb *cb,
-				struct nl_msg *msg, int argc, char **argv)
+				struct nl_msg *msg, int argc, char **argv,
+				enum id_input id)
 {
 	struct nlattr *wowlan, *pattern;
 	struct nl_msg *patterns = NULL;
@@ -99,7 +100,8 @@
 
 
 static int handle_wowlan_disable(struct nl80211_state *state, struct nl_cb *cb,
-				 struct nl_msg *msg, int argc, char **argv)
+				 struct nl_msg *msg, int argc, char **argv,
+				 enum id_input id)
 {
 	/* just a set w/o wowlan attribute */
 	return 0;
@@ -185,7 +187,8 @@
 }
 
 static int handle_wowlan_show(struct nl80211_state *state, struct nl_cb *cb,
-			      struct nl_msg *msg, int argc, char **argv)
+			      struct nl_msg *msg, int argc, char **argv,
+			      enum id_input id)
 {
 	nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM,
 		  print_wowlan_handler, NULL);




More information about the Pkg-wpa-devel mailing list