This patch modify d80211 to add nick wireless command
Signed-off-by: Mohamed Abbas <[EMAIL PROTECTED]> diff --git a/net/d80211/ieee80211_i.h b/net/d80211/ieee80211_i.h index 0d2d79d..02242c6 100644 --- a/net/d80211/ieee80211_i.h +++ b/net/d80211/ieee80211_i.h @@ -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; diff --git a/net/d80211/ieee80211_ioctl.c b/net/d80211/ieee80211_ioctl.c index 89a58e3..956eabb 100644 --- a/net/d80211/ieee80211_ioctl.c +++ b/net/d80211/ieee80211_ioctl.c @@ -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 */