diff options
| -rw-r--r-- | net/wireless/core.c | 2 | ||||
| -rw-r--r-- | net/wireless/wext-core.c | 25 |
2 files changed, 23 insertions, 4 deletions
diff --git a/net/wireless/core.c b/net/wireless/core.c index d25c82bc1bbe..ecca3896b9f7 100644 --- a/net/wireless/core.c +++ b/net/wireless/core.c | |||
| @@ -363,8 +363,6 @@ struct wiphy *wiphy_new_nm(const struct cfg80211_ops *ops, int sizeof_priv, | |||
| 363 | WARN_ON(ops->remain_on_channel && !ops->cancel_remain_on_channel); | 363 | WARN_ON(ops->remain_on_channel && !ops->cancel_remain_on_channel); |
| 364 | WARN_ON(ops->tdls_channel_switch && !ops->tdls_cancel_channel_switch); | 364 | WARN_ON(ops->tdls_channel_switch && !ops->tdls_cancel_channel_switch); |
| 365 | WARN_ON(ops->add_tx_ts && !ops->del_tx_ts); | 365 | WARN_ON(ops->add_tx_ts && !ops->del_tx_ts); |
| 366 | WARN_ON(ops->set_tx_power && !ops->get_tx_power); | ||
| 367 | WARN_ON(ops->set_antenna && !ops->get_antenna); | ||
| 368 | 366 | ||
| 369 | alloc_size = sizeof(*rdev) + sizeof_priv; | 367 | alloc_size = sizeof(*rdev) + sizeof_priv; |
| 370 | 368 | ||
diff --git a/net/wireless/wext-core.c b/net/wireless/wext-core.c index 6250b1cfcde5..dbb2738e356a 100644 --- a/net/wireless/wext-core.c +++ b/net/wireless/wext-core.c | |||
| @@ -958,8 +958,29 @@ static int wireless_process_ioctl(struct net *net, struct ifreq *ifr, | |||
| 958 | return private(dev, iwr, cmd, info, handler); | 958 | return private(dev, iwr, cmd, info, handler); |
| 959 | } | 959 | } |
| 960 | /* Old driver API : call driver ioctl handler */ | 960 | /* Old driver API : call driver ioctl handler */ |
| 961 | if (dev->netdev_ops->ndo_do_ioctl) | 961 | if (dev->netdev_ops->ndo_do_ioctl) { |
| 962 | return dev->netdev_ops->ndo_do_ioctl(dev, ifr, cmd); | 962 | #ifdef CONFIG_COMPAT |
| 963 | if (info->flags & IW_REQUEST_FLAG_COMPAT) { | ||
| 964 | int ret = 0; | ||
| 965 | struct iwreq iwr_lcl; | ||
| 966 | struct compat_iw_point *iwp_compat = (void *) &iwr->u.data; | ||
| 967 | |||
| 968 | memcpy(&iwr_lcl, iwr, sizeof(struct iwreq)); | ||
| 969 | iwr_lcl.u.data.pointer = compat_ptr(iwp_compat->pointer); | ||
| 970 | iwr_lcl.u.data.length = iwp_compat->length; | ||
| 971 | iwr_lcl.u.data.flags = iwp_compat->flags; | ||
| 972 | |||
| 973 | ret = dev->netdev_ops->ndo_do_ioctl(dev, (void *) &iwr_lcl, cmd); | ||
| 974 | |||
| 975 | iwp_compat->pointer = ptr_to_compat(iwr_lcl.u.data.pointer); | ||
| 976 | iwp_compat->length = iwr_lcl.u.data.length; | ||
| 977 | iwp_compat->flags = iwr_lcl.u.data.flags; | ||
| 978 | |||
| 979 | return ret; | ||
| 980 | } else | ||
| 981 | #endif | ||
| 982 | return dev->netdev_ops->ndo_do_ioctl(dev, ifr, cmd); | ||
| 983 | } | ||
| 963 | return -EOPNOTSUPP; | 984 | return -EOPNOTSUPP; |
| 964 | } | 985 | } |
| 965 | 986 | ||
