Skip to contentSkip to conversation

d80211: add support for SIOCSIWNICKN SIOCGIWNICKN

PATCH Applied mabbas 8 participants 8 messages Aug 28, 2006 – Sep 21, 2006

Subsystems (2)
lore
Share & tools
lore

mabbas

author
#0 lore raw

PATCH 4/7 d80211: add support for SIOCSIWNICKN SIOCGIWNICKN

This patch modify d80211 to add nick wireless command

net/d80211/ieee80211_i.h +1 -0
index 0d2d79d..02242c6 100644
@@ -241,6 +241,7 @@ struct ieee80211_if_sta {
 		IEEE80211_IBSS_SEARCH, IEEE80211_IBSS_JOINED
 	} state;
 	struct timer_list timer;
+	u8 nick[IW_ESSID_MAX_SIZE];
 	u8 bssid[ETH_ALEN], prev_bssid[ETH_ALEN];
 	u8 ssid[IEEE80211_MAX_SSID_LEN];
 	size_t ssid_len;
net/d80211/ieee80211_ioctl.c +35 -2
index 89a58e3..956eabb 100644
@@ -2153,6 +2153,39 @@ static void ieee80211_ioctl_unmask_chann
 }
 
 
+static int ieee80211_ioctl_siwnick(struct net_device *dev,
+				   struct iw_request_info *info,
+				   union iwreq_data *wrqu, char *extra)
+{
+	struct ieee80211_sub_if_data *sdata;
+	struct ieee80211_if_sta *ifsta;
+
+	sdata = IEEE80211_DEV_TO_SUB_IF(dev);
+	ifsta = &sdata->u.sta;
+	if (wrqu->data.length >= IW_ESSID_MAX_SIZE)
+		return -E2BIG;
+
+	memset(ifsta->nick, 0, sizeof(ifsta->nick));
+	memcpy(ifsta->nick, extra, wrqu->data.length);
+	return 0;
+}
+
+static int ieee80211_ioctl_giwnick(struct net_device *dev,
+				   struct iw_request_info *info,
+				   union iwreq_data *wrqu, char *extra)
+{
+	struct ieee80211_sub_if_data *sdata;
+	struct ieee80211_if_sta *ifsta;
+
+	sdata = IEEE80211_DEV_TO_SUB_IF(dev);
+	ifsta = &sdata->u.sta;
+
+	wrqu->data.length = strlen(ifsta->nick) + 1;
+	memcpy(extra, ifsta->nick, wrqu->data.length);
+	wrqu->data.flags = 1;   /* active */
+	return 0;
+}
+
 static int ieee80211_ioctl_test_mode(struct net_device *dev, int mode)
 {
 	struct ieee80211_local *local = dev->ieee80211_ptr;
@@ -3138,8 +3171,8 @@ static const iw_handler ieee80211_handle
 	(iw_handler) ieee80211_ioctl_giwscan,		/* SIOCGIWSCAN */
 	(iw_handler) ieee80211_ioctl_siwessid,		/* SIOCSIWESSID */
 	(iw_handler) ieee80211_ioctl_giwessid,		/* SIOCGIWESSID */
-	(iw_handler) NULL,				/* SIOCSIWNICKN */
-	(iw_handler) NULL,				/* SIOCGIWNICKN */
+	(iw_handler) ieee80211_ioctl_siwnick,		/* SIOCSIWNICKN */
+	(iw_handler) ieee80211_ioctl_giwnick,		/* SIOCGIWNICKN */
 	(iw_handler) NULL,				/* -- hole -- */
 	(iw_handler) NULL,				/* -- hole -- */
 	(iw_handler) NULL,				/* SIOCSIWRATE */
#1 lore raw

I intend to kill the nick command with nl80211 since it seems to be useless. Any objections?

johannes

#2 lore raw
Quoted 2 lines · Johannes Berg

I intend to kill the nick command with nl80211 since it seems to be useless. Any objections?

I can't defend it myself, but I have heard of people using it. I think some of the distro's init scripts might set it as well?

Can anyone defend the practice of setting a nickname for a wireless device?

John

Signature · 2 lines
John W. Linville
[email protected]
#3 lore raw
Quoted 9 lines · John W. Linville
Quoted 2 lines · Johannes Berg

I intend to kill the nick command with nl80211 since it seems to be useless. Any objections?

I can't defend it myself, but I have heard of people using it. I think some of the distro's init scripts might set it as well?

Can anyone defend the practice of setting a nickname for a wireless device?

I think that this was added either based on a non-802.11 protocol or based on a specific hardware/firmware design that had possibility of configuring a name for the client (to be exchanged with some proprietary network management protocol as the device name).

After that, this ioctl seems to be just used for binding some arbitrary data to an interface to help scripts etc. In other words, I don't see any real use for this from the view point of IEEE 802.11 networks and it is confusing at best. This may be useful for some setup scripts, but I would rather hope they would use something else instead.

The only reason for adding nick command would be to maintain backwards compatibility with some scripts. I do not use any distro configuration mechanisms for setting up wireless, so I do not know what is currently being used. I would not add these ioctls into d80211 unless someone can point out an existing (and widely used) mechanism that depends on these ioctls being available.

Signature · 1 line
Jouni Malinen                                            PGP id EFC895FA
#4 lore raw
Quoted 6 lines · On 06-08-29 10:45 Jouni Malinen wrote:

The only reason for adding nick command would be to maintain backwards compatibility with some scripts. I do not use any distro configuration mechanisms for setting up wireless, so I do not know what is currently being used. I would not add these ioctls into d80211 unless someone can point out an existing (and widely used) mechanism that depends on these ioctls being available.

The softmac-broadcom and the zd1211 driver are using it to give some information about the driver bound to the interface. I found it quite useful to know which driver is bound to which WLAN interface. A readonly driver text info field would get my support.

Signature · 1 line
Uli Kunitz
#5 lore raw
Quoted 4 lines · Ulrich Kunitz

The softmac-broadcom and the zd1211 driver are using it to give some information about the driver bound to the interface. I found it quite useful to know which driver is bound to which WLAN interface. A readonly driver text info field would get my support.

Sounds like a job for sysfs.

-Michael Wu

#6 lore raw
In reply to Ulrich Kunitz
Quoted 9 lines · Ulrich Kunitz
Quoted 6 lines · On 06-08-29 10:45 Jouni Malinen wrote:

The only reason for adding nick command would be to maintain backwards compatibility with some scripts. I do not use any distro configuration mechanisms for setting up wireless, so I do not know what is currently being used. I would not add these ioctls into d80211 unless someone can point out an existing (and widely used) mechanism that depends on these ioctls being available.

Quoted 4 lines

The softmac-broadcom and the zd1211 driver are using it to give some information about the driver bound to the interface. I found it quite useful to know which driver is bound to which WLAN interface. A readonly driver text info field would get my support.

That's what the 'driver' link is for in sysfs.

[dcbw@localhost devel]$ ls -al /sys/class/net/eth1/device/
lrwxrwxrwx 1 root root 0 Aug 30 09:18 driver -> ../../../../bus/pci/drivers/ipw2200

Dan

#7 lore raw
In reply to mabbas
Quoted 1 line · mabbas

This patch modify d80211 to add nick wireless command

The nick command is useless as was pointed by several other developers. Therefore NAK.

Thanks,

Jiri

Signature · 2 lines
Jiri Benc
SUSE Labs