Linux wireless drivers development
 help / color / mirror / Atom feed
* [PATCH 1/6] Add "wlan" and "ultrawideband" as aliases for "wifi" and "uwb".
@ 2010-01-22 23:35 Darren Salt
  2010-01-22 23:35 ` [PATCH 2/6] Rearrange the help text for block & unblock Darren Salt
  2010-01-23 12:52 ` [PATCH 1/6] Add "wlan" and "ultrawideband" as aliases for "wifi" and "uwb" Johannes Berg
  0 siblings, 2 replies; 7+ messages in thread
From: Darren Salt @ 2010-01-22 23:35 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linux-wireless

I tend to think "wlan" rather than "wifi"; also, it fits in nicely with "wwan".
Also, these aliases are what the kernel uses.
---
 rfkill.8 |    3 ++-
 rfkill.c |    4 +++-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/rfkill.8 b/rfkill.8
index da06b27..612e366 100644
--- a/rfkill.8
+++ b/rfkill.8
@@ -22,7 +22,8 @@ List the current state of all available rfkill-using devices.
 .TP
 .BI block " index|type"
 Disable the device corresponding to the given index.
-\fItype\fR is one of "all", "wifi", "bluetooth", "uwb", "wimax", "wwan" or "gps".
+\fItype\fR is one of "all", "wifi", "wlan", "bluetooth", "uwb",
+"ultrawideband", "wimax", "wwan" or "gps".
 .TP
 .BI unblock " index|type"
 Enable the device corresponding to the given index. If the device is
diff --git a/rfkill.c b/rfkill.c
index 3f71181..7b44b5a 100644
--- a/rfkill.c
+++ b/rfkill.c
@@ -200,8 +200,10 @@ struct rfkill_type_str {
 static struct rfkill_type_str rfkill_type_strings[] = {
 	{	.type = RFKILL_TYPE_ALL,		.name = "all"	},
 	{	.type = RFKILL_TYPE_WLAN,		.name = "wifi"	},
+	{	.type = RFKILL_TYPE_WLAN,		.name = "wlan"	}, /* alias */
 	{	.type = RFKILL_TYPE_BLUETOOTH,	.name = "bluetooth"	},
 	{	.type = RFKILL_TYPE_UWB,		.name = "uwb"	},
+	{	.type = RFKILL_TYPE_UWB,		.name = "ultrawideband"	}, /* alias */
 	{	.type = RFKILL_TYPE_WIMAX,		.name = "wimax"	},
 	{	.type = RFKILL_TYPE_WWAN,		.name = "wwan"	},
 	{	.type = RFKILL_TYPE_GPS,		.name = "gps"	},
@@ -222,7 +224,7 @@ static enum rfkill_type rfkill_str_to_type(char *s)
 
 static const char *argv0;
 
-#define BLOCK_PARAMS "{<idx>,all,wifi,bluetooth,uwb,wimax,wwan,gps}"
+#define BLOCK_PARAMS "{<idx>,all,wifi,wlan,bluetooth,uwb,ultrawideband,wimax,wwan,gps}"
 
 static void usage(void)
 {
-- 
1.6.5


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/6] Rearrange the help text for block & unblock.
  2010-01-22 23:35 [PATCH 1/6] Add "wlan" and "ultrawideband" as aliases for "wifi" and "uwb" Darren Salt
@ 2010-01-22 23:35 ` Darren Salt
  2010-01-22 23:35   ` [PATCH 3/6] Constification Darren Salt
  2010-01-23 12:52 ` [PATCH 1/6] Add "wlan" and "ultrawideband" as aliases for "wifi" and "uwb" Johannes Berg
  1 sibling, 1 reply; 7+ messages in thread
From: Darren Salt @ 2010-01-22 23:35 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linux-wireless

---
 rfkill.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/rfkill.c b/rfkill.c
index 7b44b5a..3cb2605 100644
--- a/rfkill.c
+++ b/rfkill.c
@@ -224,8 +224,6 @@ static enum rfkill_type rfkill_str_to_type(char *s)
 
 static const char *argv0;
 
-#define BLOCK_PARAMS "{<idx>,all,wifi,wlan,bluetooth,uwb,ultrawideband,wimax,wwan,gps}"
-
 static void usage(void)
 {
 	fprintf(stderr, "Usage:\t%s [options] command\n", argv0);
@@ -235,8 +233,10 @@ static void usage(void)
 	fprintf(stderr, "\thelp\n");
 	fprintf(stderr, "\tevent\n");
 	fprintf(stderr, "\tlist\n");
-	fprintf(stderr, "\tblock "BLOCK_PARAMS"\n");
-	fprintf(stderr, "\tunblock "BLOCK_PARAMS"\n");
+	fprintf(stderr, "\tblock IDENTIFIER\n");
+	fprintf(stderr, "\tunblock IDENTIFIER\n");
+	fprintf(stderr, "where IDENTIFIER is the index no. of an rfkill switch or one of:\n");
+	fprintf(stderr, "\t<idx> all wifi wlan bluetooth uwb ultrawideband wimax wwan gps\n");
 }
 
 static void version(void)
-- 
1.6.5


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/6] Constification.
  2010-01-22 23:35 ` [PATCH 2/6] Rearrange the help text for block & unblock Darren Salt
@ 2010-01-22 23:35   ` Darren Salt
  2010-01-22 23:35     ` [PATCH 4/6] Return error codes instead of exiting Darren Salt
  0 siblings, 1 reply; 7+ messages in thread
From: Darren Salt @ 2010-01-22 23:35 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linux-wireless

---
 rfkill.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/rfkill.c b/rfkill.c
index 3cb2605..8c0aea6 100644
--- a/rfkill.c
+++ b/rfkill.c
@@ -195,9 +195,9 @@ static void rfkill_block(bool all, __u32 idx, __u8 block, __u8 type)
 
 struct rfkill_type_str {
 	enum rfkill_type type;
-	char *name;
+	const char *name;
 };
-static struct rfkill_type_str rfkill_type_strings[] = {
+static const struct rfkill_type_str rfkill_type_strings[] = {
 	{	.type = RFKILL_TYPE_ALL,		.name = "all"	},
 	{	.type = RFKILL_TYPE_WLAN,		.name = "wifi"	},
 	{	.type = RFKILL_TYPE_WLAN,		.name = "wlan"	}, /* alias */
@@ -211,9 +211,9 @@ static struct rfkill_type_str rfkill_type_strings[] = {
 	{	.name = NULL }
 };
 
-static enum rfkill_type rfkill_str_to_type(char *s)
+static enum rfkill_type rfkill_str_to_type(const char *s)
 {
-	struct rfkill_type_str *p;
+	const struct rfkill_type_str *p;
 
 	for (p = rfkill_type_strings; p->name != NULL; p++) {
 		if ((strlen(s) == strlen(p->name)) && (!strcmp(s,p->name)))
@@ -244,7 +244,7 @@ static void version(void)
 	printf("rfkill %s\n", rfkill_version);
 }
 
-static void do_block_unblock(__u8 block, char *param)
+static void do_block_unblock(__u8 block, const char *param)
 {
 	enum rfkill_type t;
 	__u32 idx;
-- 
1.6.5


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 4/6] Return error codes instead of exiting.
  2010-01-22 23:35   ` [PATCH 3/6] Constification Darren Salt
@ 2010-01-22 23:35     ` Darren Salt
  2010-01-22 23:35       ` [PATCH 5/6] Refactor rfkill index/type lookup: move it below rfkill_block Darren Salt
  0 siblings, 1 reply; 7+ messages in thread
From: Darren Salt @ 2010-01-22 23:35 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linux-wireless

---
 rfkill.c |   32 ++++++++++++++++----------------
 1 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/rfkill.c b/rfkill.c
index 8c0aea6..4cf507a 100644
--- a/rfkill.c
+++ b/rfkill.c
@@ -118,7 +118,7 @@ static const char *type2string(enum rfkill_type type)
 	return NULL;
 }
 
-static void rfkill_list(void)
+static int rfkill_list(void)
 {
 	struct rfkill_event event;
 	const char *name;
@@ -128,12 +128,13 @@ static void rfkill_list(void)
 	fd = open("/dev/rfkill", O_RDONLY);
 	if (fd < 0) {
 		perror("Can't open RFKILL control device");
-		return;
+		return 1;
 	}
 
 	if (fcntl(fd, F_SETFL, O_NONBLOCK) < 0) {
 		perror("Can't set RFKILL control device to non-blocking");
 		close(fd);
+		return 1;
 	}
 
 	while (1) {
@@ -162,9 +163,10 @@ static void rfkill_list(void)
 	}
 
 	close(fd);
+	return 0;
 }
 
-static void rfkill_block(bool all, __u32 idx, __u8 block, __u8 type)
+static int rfkill_block(bool all, __u32 idx, __u8 block, __u8 type)
 {
 	struct rfkill_event event;
 	ssize_t len;
@@ -173,7 +175,7 @@ static void rfkill_block(bool all, __u32 idx, __u8 block, __u8 type)
 	fd = open("/dev/rfkill", O_RDWR);
 	if (fd < 0) {
 		perror("Can't open RFKILL control device");
-		return;
+		return 1;
 	}
 
 	memset(&event, 0, sizeof(event));
@@ -191,6 +193,7 @@ static void rfkill_block(bool all, __u32 idx, __u8 block, __u8 type)
 		perror("Failed to change RFKILL state");
 
 	close(fd);
+	return 0;
 }
 
 struct rfkill_type_str {
@@ -244,7 +247,7 @@ static void version(void)
 	printf("rfkill %s\n", rfkill_version);
 }
 
-static void do_block_unblock(__u8 block, const char *param)
+static int do_block_unblock(__u8 block, const char *param)
 {
 	enum rfkill_type t;
 	__u32 idx;
@@ -253,24 +256,21 @@ static void do_block_unblock(__u8 block, const char *param)
 		/* assume alphabetic characters imply a wireless type name */
 		t = rfkill_str_to_type(param);
 		if (t < NUM_RFKILL_TYPES)
-			rfkill_block(true, 0, block, t);
-		else
-			goto err;
+			return rfkill_block(true, 0, block, t);
 	} else if (isdigit(*param)) {
 		/* assume a numeric character implies an index. */
 		idx = atoi(param);
-		rfkill_block(false, idx, block, 0);
-	} else
-		goto err;
+		return rfkill_block(false, idx, block, 0);
+	}
 
-	return;
-err:
 	fprintf(stderr,"Bogus %sblock argument '%s'.\n",block?"":"un",param);
 	exit(1);
 }
 
 int main(int argc, char **argv)
 {
+	int ret = 0;
+
 	/* strip off self */
 	argc--;
 	argv0 = *argv++;
@@ -292,15 +292,15 @@ int main(int argc, char **argv)
 	} else if (strcmp(*argv, "block") == 0 && argc > 1) {
 		argc--;
 		argv++;
-		do_block_unblock(1,*argv);
+		ret = do_block_unblock(1,*argv);
 	} else if (strcmp(*argv, "unblock") == 0 && argc > 1) {
 		argc--;
 		argv++;
-		do_block_unblock(0,*argv);
+		ret = do_block_unblock(0,*argv);
 	} else {
 		usage();
 		return 1;
 	}
 
-	return 0;
+	return ret;
 }
-- 
1.6.5


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 5/6] Refactor rfkill index/type lookup: move it below rfkill_block.
  2010-01-22 23:35     ` [PATCH 4/6] Return error codes instead of exiting Darren Salt
@ 2010-01-22 23:35       ` Darren Salt
  2010-01-22 23:35         ` [PATCH 6/6] Add filtering to "rfkill list" Darren Salt
  0 siblings, 1 reply; 7+ messages in thread
From: Darren Salt @ 2010-01-22 23:35 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linux-wireless

---
 rfkill.c |  130 +++++++++++++++++++++++++++++++++++---------------------------
 1 files changed, 73 insertions(+), 57 deletions(-)

diff --git a/rfkill.c b/rfkill.c
index 4cf507a..998728e 100644
--- a/rfkill.c
+++ b/rfkill.c
@@ -118,6 +118,60 @@ static const char *type2string(enum rfkill_type type)
 	return NULL;
 }
 
+struct rfkill_type_str {
+	enum rfkill_type type;
+	const char *name;
+};
+static const struct rfkill_type_str rfkill_type_strings[] = {
+	{	.type = RFKILL_TYPE_ALL,		.name = "all"	},
+	{	.type = RFKILL_TYPE_WLAN,		.name = "wifi"	},
+	{	.type = RFKILL_TYPE_WLAN,		.name = "wlan"	}, /* alias */
+	{	.type = RFKILL_TYPE_BLUETOOTH,	.name = "bluetooth"	},
+	{	.type = RFKILL_TYPE_UWB,		.name = "uwb"	},
+	{	.type = RFKILL_TYPE_UWB,		.name = "ultrawideband"	}, /* alias */
+	{	.type = RFKILL_TYPE_WIMAX,		.name = "wimax"	},
+	{	.type = RFKILL_TYPE_WWAN,		.name = "wwan"	},
+	{	.type = RFKILL_TYPE_GPS,		.name = "gps"	},
+	{	.type = RFKILL_TYPE_FM,			.name = "fm"	},
+	{	.name = NULL }
+};
+
+struct rfkill_id {
+	union {
+		enum rfkill_type type;
+		__u32 index;
+	};
+	enum {
+		RFKILL_IS_INVALID,
+		RFKILL_IS_TYPE,
+		RFKILL_IS_INDEX,
+	} result;
+};
+
+static struct rfkill_id rfkill_id_to_type(const char *s)
+{
+	const struct rfkill_type_str *p;
+	struct rfkill_id ret;
+
+	if (islower(*s)) {
+		for (p = rfkill_type_strings; p->name != NULL; p++) {
+			if ((strlen(s) == strlen(p->name)) && (!strcmp(s,p->name))) {
+				ret.type = p->type;
+				ret.result = RFKILL_IS_TYPE;
+				return ret;
+			}
+		}
+	} else if (isdigit(*s)) {
+		/* assume a numeric character implies an index. */
+		ret.index = atoi(s);
+		ret.result = RFKILL_IS_INDEX;
+		return ret;
+	}
+
+	ret.result = RFKILL_IS_INVALID;
+	return ret;
+}
+
 static int rfkill_list(void)
 {
 	struct rfkill_event event;
@@ -166,12 +220,19 @@ static int rfkill_list(void)
 	return 0;
 }
 
-static int rfkill_block(bool all, __u32 idx, __u8 block, __u8 type)
+static int rfkill_block(__u8 block, const char *param)
 {
+	struct rfkill_id id;
 	struct rfkill_event event;
 	ssize_t len;
 	int fd;
 
+	id = rfkill_id_to_type(param);
+	if (id.result == RFKILL_IS_INVALID) {
+		fprintf(stderr, "Bogus %s argument '%s'.\n", block ? "block" : "unblock", param);
+		return 2;
+	}
+
 	fd = open("/dev/rfkill", O_RDWR);
 	if (fd < 0) {
 		perror("Can't open RFKILL control device");
@@ -179,12 +240,16 @@ static int rfkill_block(bool all, __u32 idx, __u8 block, __u8 type)
 	}
 
 	memset(&event, 0, sizeof(event));
-	if (!all) {
-		event.idx = idx;
-		event.op = RFKILL_OP_CHANGE;
-	} else {
+	switch (id.result) {
+	case RFKILL_IS_TYPE:
 		event.op = RFKILL_OP_CHANGE_ALL;
-		event.type = type;
+		event.type = id.type;
+		break;
+	case RFKILL_IS_INDEX:
+		event.op = RFKILL_OP_CHANGE;
+		event.idx = id.index;
+		break;
+	case RFKILL_IS_INVALID:; /* must be last */
 	}
 	event.soft = block;
 
@@ -196,35 +261,6 @@ static int rfkill_block(bool all, __u32 idx, __u8 block, __u8 type)
 	return 0;
 }
 
-struct rfkill_type_str {
-	enum rfkill_type type;
-	const char *name;
-};
-static const struct rfkill_type_str rfkill_type_strings[] = {
-	{	.type = RFKILL_TYPE_ALL,		.name = "all"	},
-	{	.type = RFKILL_TYPE_WLAN,		.name = "wifi"	},
-	{	.type = RFKILL_TYPE_WLAN,		.name = "wlan"	}, /* alias */
-	{	.type = RFKILL_TYPE_BLUETOOTH,	.name = "bluetooth"	},
-	{	.type = RFKILL_TYPE_UWB,		.name = "uwb"	},
-	{	.type = RFKILL_TYPE_UWB,		.name = "ultrawideband"	}, /* alias */
-	{	.type = RFKILL_TYPE_WIMAX,		.name = "wimax"	},
-	{	.type = RFKILL_TYPE_WWAN,		.name = "wwan"	},
-	{	.type = RFKILL_TYPE_GPS,		.name = "gps"	},
-	{	.type = RFKILL_TYPE_FM,			.name = "fm"	},
-	{	.name = NULL }
-};
-
-static enum rfkill_type rfkill_str_to_type(const char *s)
-{
-	const struct rfkill_type_str *p;
-
-	for (p = rfkill_type_strings; p->name != NULL; p++) {
-		if ((strlen(s) == strlen(p->name)) && (!strcmp(s,p->name)))
-			return p->type;
-	}
-	return NUM_RFKILL_TYPES;
-}
-
 static const char *argv0;
 
 static void usage(void)
@@ -247,26 +283,6 @@ static void version(void)
 	printf("rfkill %s\n", rfkill_version);
 }
 
-static int do_block_unblock(__u8 block, const char *param)
-{
-	enum rfkill_type t;
-	__u32 idx;
-
-	if (islower(*param)) {
-		/* assume alphabetic characters imply a wireless type name */
-		t = rfkill_str_to_type(param);
-		if (t < NUM_RFKILL_TYPES)
-			return rfkill_block(true, 0, block, t);
-	} else if (isdigit(*param)) {
-		/* assume a numeric character implies an index. */
-		idx = atoi(param);
-		return rfkill_block(false, idx, block, 0);
-	}
-
-	fprintf(stderr,"Bogus %sblock argument '%s'.\n",block?"":"un",param);
-	exit(1);
-}
-
 int main(int argc, char **argv)
 {
 	int ret = 0;
@@ -292,11 +308,11 @@ int main(int argc, char **argv)
 	} else if (strcmp(*argv, "block") == 0 && argc > 1) {
 		argc--;
 		argv++;
-		ret = do_block_unblock(1,*argv);
+		ret = rfkill_block(1,*argv);
 	} else if (strcmp(*argv, "unblock") == 0 && argc > 1) {
 		argc--;
 		argv++;
-		ret = do_block_unblock(0,*argv);
+		ret = rfkill_block(0,*argv);
 	} else {
 		usage();
 		return 1;
-- 
1.6.5


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 6/6] Add filtering to "rfkill list".
  2010-01-22 23:35       ` [PATCH 5/6] Refactor rfkill index/type lookup: move it below rfkill_block Darren Salt
@ 2010-01-22 23:35         ` Darren Salt
  0 siblings, 0 replies; 7+ messages in thread
From: Darren Salt @ 2010-01-22 23:35 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linux-wireless

---
 rfkill.c |   34 +++++++++++++++++++++++++++++++---
 1 files changed, 31 insertions(+), 3 deletions(-)

diff --git a/rfkill.c b/rfkill.c
index 998728e..8fa4c6a 100644
--- a/rfkill.c
+++ b/rfkill.c
@@ -172,13 +172,25 @@ static struct rfkill_id rfkill_id_to_type(const char *s)
 	return ret;
 }
 
-static int rfkill_list(void)
+static int rfkill_list(const char *param)
 {
+	struct rfkill_id id = { .result = RFKILL_IS_INVALID };
 	struct rfkill_event event;
 	const char *name;
 	ssize_t len;
 	int fd;
 
+	if (param) {
+		id = rfkill_id_to_type(param);
+		if (id.result == RFKILL_IS_INVALID) {
+			fprintf(stderr, "Bogus %s argument '%s'.\n", "list", param);
+			return 2;
+		}
+		/* don't filter "all" */
+		if (id.result == RFKILL_IS_TYPE && id.type == RFKILL_TYPE_ALL)
+			id.result = RFKILL_IS_INVALID;
+	}
+
 	fd = open("/dev/rfkill", O_RDONLY);
 	if (fd < 0) {
 		perror("Can't open RFKILL control device");
@@ -208,6 +220,20 @@ static int rfkill_list(void)
 		if (event.op != RFKILL_OP_ADD)
 			continue;
 
+		/* filter out unwanted results */
+		switch (id.result)
+		{
+		case RFKILL_IS_TYPE:
+			if (event.type != id.type)
+				continue;
+			break;
+		case RFKILL_IS_INDEX:
+			if (event.idx != id.index)
+				continue;
+			break;
+		case RFKILL_IS_INVALID:; /* must be last */
+		}
+
 		name = get_name(event.idx);
 
 		printf("%u: %s: %s\n", event.idx, name,
@@ -271,7 +297,7 @@ static void usage(void)
 	fprintf(stderr, "Commands:\n");
 	fprintf(stderr, "\thelp\n");
 	fprintf(stderr, "\tevent\n");
-	fprintf(stderr, "\tlist\n");
+	fprintf(stderr, "\tlist [IDENTIFIER]\n");
 	fprintf(stderr, "\tblock IDENTIFIER\n");
 	fprintf(stderr, "\tunblock IDENTIFIER\n");
 	fprintf(stderr, "where IDENTIFIER is the index no. of an rfkill switch or one of:\n");
@@ -304,7 +330,9 @@ int main(int argc, char **argv)
 	if (strcmp(*argv, "event") == 0) {
 		rfkill_event();
 	} else if (strcmp(*argv, "list") == 0) {
-		rfkill_list();
+		argc--;
+		argv++;
+		rfkill_list(*argv); /* NULL is acceptable */
 	} else if (strcmp(*argv, "block") == 0 && argc > 1) {
 		argc--;
 		argv++;
-- 
1.6.5


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/6] Add "wlan" and "ultrawideband" as aliases for "wifi" and "uwb".
  2010-01-22 23:35 [PATCH 1/6] Add "wlan" and "ultrawideband" as aliases for "wifi" and "uwb" Darren Salt
  2010-01-22 23:35 ` [PATCH 2/6] Rearrange the help text for block & unblock Darren Salt
@ 2010-01-23 12:52 ` Johannes Berg
  1 sibling, 0 replies; 7+ messages in thread
From: Johannes Berg @ 2010-01-23 12:52 UTC (permalink / raw)
  To: Darren Salt; +Cc: linux-wireless

[-- Attachment #1: Type: text/plain, Size: 34 bytes --]

All applied, thanks.

johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2010-01-23 12:52 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-22 23:35 [PATCH 1/6] Add "wlan" and "ultrawideband" as aliases for "wifi" and "uwb" Darren Salt
2010-01-22 23:35 ` [PATCH 2/6] Rearrange the help text for block & unblock Darren Salt
2010-01-22 23:35   ` [PATCH 3/6] Constification Darren Salt
2010-01-22 23:35     ` [PATCH 4/6] Return error codes instead of exiting Darren Salt
2010-01-22 23:35       ` [PATCH 5/6] Refactor rfkill index/type lookup: move it below rfkill_block Darren Salt
2010-01-22 23:35         ` [PATCH 6/6] Add filtering to "rfkill list" Darren Salt
2010-01-23 12:52 ` [PATCH 1/6] Add "wlan" and "ultrawideband" as aliases for "wifi" and "uwb" Johannes Berg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox