diff options
Diffstat (limited to 'package/mac80211/patches/009-add-old-ioctl-skeleton.patch')
-rw-r--r-- | package/mac80211/patches/009-add-old-ioctl-skeleton.patch | 187 |
1 files changed, 0 insertions, 187 deletions
diff --git a/package/mac80211/patches/009-add-old-ioctl-skeleton.patch b/package/mac80211/patches/009-add-old-ioctl-skeleton.patch deleted file mode 100644 index fb9f25f..0000000 --- a/package/mac80211/patches/009-add-old-ioctl-skeleton.patch +++ /dev/null @@ -1,187 +0,0 @@ ---- - net/mac80211/ieee80211.c | 5 + - net/mac80211/ieee80211_ioctl.c | 121 +++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 126 insertions(+) - ---- everything.orig/net/mac80211/ieee80211_ioctl.c 2007-11-07 13:06:34.902124618 +0100 -+++ everything/net/mac80211/ieee80211_ioctl.c 2007-11-07 13:19:24.311521482 +0100 -@@ -21,6 +21,7 @@ - - #include <net/mac80211.h> - #include "ieee80211_i.h" -+#include "hostapd_ioctl.h" - #include "ieee80211_rate.h" - #include "wpa.h" - #include "aes_ccm.h" -@@ -124,6 +125,47 @@ static int ieee80211_ioctl_siwgenie(stru - return -EOPNOTSUPP; - } - -+ -+static int ieee80211_ioctl_priv_hostapd(struct net_device *dev, -+ struct iw_point *p) -+{ -+ struct prism2_hostapd_param *param; -+ int ret = 0; -+ -+ if (p->length < sizeof(struct prism2_hostapd_param) || -+ p->length > PRISM2_HOSTAPD_MAX_BUF_SIZE || !p->pointer) { -+ printk(KERN_DEBUG "%s: hostapd ioctl: ptr=%p len=%d min=%d " -+ "max=%d\n", dev->name, p->pointer, p->length, -+ (int)sizeof(struct prism2_hostapd_param), -+ PRISM2_HOSTAPD_MAX_BUF_SIZE); -+ return -EINVAL; -+ } -+ -+ param = kmalloc(p->length, GFP_KERNEL); -+ if (!param) -+ return -ENOMEM; -+ -+ if (copy_from_user(param, p->pointer, p->length)) { -+ ret = -EFAULT; -+ goto out; -+ } -+ -+ switch (param->cmd) { -+ default: -+ ret = -EOPNOTSUPP; -+ break; -+ } -+ -+ if (copy_to_user(p->pointer, param, p->length)) -+ ret = -EFAULT; -+ -+ out: -+ kfree(param); -+ -+ return ret; -+} -+ -+ - static int ieee80211_ioctl_giwname(struct net_device *dev, - struct iw_request_info *info, - char *name, char *extra) -@@ -819,6 +861,49 @@ static int ieee80211_ioctl_giwretry(stru - return 0; - } - -+static int ieee80211_ioctl_prism2_param(struct net_device *dev, -+ struct iw_request_info *info, -+ void *wrqu, char *extra) -+{ -+ struct ieee80211_sub_if_data *sdata; -+ int *i = (int *) extra; -+ int param = *i; -+ int ret = 0; -+ -+ if (!capable(CAP_NET_ADMIN)) -+ return -EPERM; -+ -+ sdata = IEEE80211_DEV_TO_SUB_IF(dev); -+ -+ switch (param) { -+ default: -+ ret = -EOPNOTSUPP; -+ break; -+ } -+ -+ return ret; -+} -+ -+ -+static int ieee80211_ioctl_get_prism2_param(struct net_device *dev, -+ struct iw_request_info *info, -+ void *wrqu, char *extra) -+{ -+ struct ieee80211_sub_if_data *sdata; -+ int *param = (int *) extra; -+ int ret = 0; -+ -+ sdata = IEEE80211_DEV_TO_SUB_IF(dev); -+ -+ switch (*param) { -+ default: -+ ret = -EOPNOTSUPP; -+ break; -+ } -+ -+ return ret; -+} -+ - static int ieee80211_ioctl_siwmlme(struct net_device *dev, - struct iw_request_info *info, - struct iw_point *data, char *extra) -@@ -1073,6 +1158,32 @@ static int ieee80211_ioctl_siwencodeext( - } - - -+static const struct iw_priv_args ieee80211_ioctl_priv[] = { -+ { PRISM2_IOCTL_PRISM2_PARAM, -+ IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 2, 0, "param" }, -+ { PRISM2_IOCTL_GET_PRISM2_PARAM, -+ IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, -+ IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_param" }, -+}; -+ -+ -+int ieee80211_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) -+{ -+ struct iwreq *wrq = (struct iwreq *) rq; -+ -+ switch (cmd) { -+ /* Private ioctls (iwpriv) that have not yet been converted -+ * into new wireless extensions API */ -+ case PRISM2_IOCTL_HOSTAPD: -+ if (!capable(CAP_NET_ADMIN)) -+ return -EPERM; -+ return ieee80211_ioctl_priv_hostapd(dev, &wrq->u.data); -+ default: -+ return -EOPNOTSUPP; -+ } -+} -+ -+ - /* Structures to export the Wireless Handlers */ - - static const iw_handler ieee80211_handler[] = -@@ -1135,9 +1246,19 @@ static const iw_handler ieee80211_handle - (iw_handler) NULL, /* -- hole -- */ - }; - -+static const iw_handler ieee80211_private_handler[] = -+{ /* SIOCIWFIRSTPRIV + */ -+ (iw_handler) ieee80211_ioctl_prism2_param, /* 0 */ -+ (iw_handler) ieee80211_ioctl_get_prism2_param, /* 1 */ -+}; -+ - const struct iw_handler_def ieee80211_iw_handler_def = - { - .num_standard = ARRAY_SIZE(ieee80211_handler), -+ .num_private = ARRAY_SIZE(ieee80211_private_handler), -+ .num_private_args = ARRAY_SIZE(ieee80211_ioctl_priv), - .standard = (iw_handler *) ieee80211_handler, -+ .private = (iw_handler *) ieee80211_private_handler, -+ .private_args = (struct iw_priv_args *) ieee80211_ioctl_priv, - .get_wireless_stats = ieee80211_get_wireless_stats, - }; ---- everything.orig/net/mac80211/ieee80211.c 2007-11-07 13:18:36.001511500 +0100 -+++ everything/net/mac80211/ieee80211.c 2007-11-07 13:19:24.311521482 +0100 -@@ -413,6 +413,9 @@ static const struct header_ops ieee80211 - .cache_update = eth_header_cache_update, - }; - -+/* HACK */ -+extern int ieee80211_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); -+ - /* Must not be called for mdev */ - void ieee80211_if_setup(struct net_device *dev) - { -@@ -425,6 +428,8 @@ void ieee80211_if_setup(struct net_devic - dev->open = ieee80211_open; - dev->stop = ieee80211_stop; - dev->destructor = ieee80211_if_free; -+ -+ dev->do_ioctl = ieee80211_ioctl; - } - - /* WDS specialties */ |