Re: [PATCH net-next 2/6] net: use core MTU range checking in wireless drivers

2016-10-19 Thread Johannes Berg
On Tue, 2016-10-18 at 22:33 -0400, Jarod Wilson wrote:
> - set max_mtu in wil6210 driver
> - set max_mtu in atmel driver
> - set min/max_mtu in cisco airo driver, remove airo_change_mtu
> - set min/max_mtu in ipw2100/ipw2200 drivers, remove
> libipw_change_mtu
> - set min/max_mtu in p80211netdev, remove wlan_change_mtu

I guess we should do the same in net/mac80211/iface.c?

johannes


Re: [PATCH net-next 2/6] net: use core MTU range checking in wireless drivers

2016-10-19 Thread Johannes Berg
On Tue, 2016-10-18 at 22:33 -0400, Jarod Wilson wrote:
> - set max_mtu in wil6210 driver
> - set max_mtu in atmel driver
> - set min/max_mtu in cisco airo driver, remove airo_change_mtu
> - set min/max_mtu in ipw2100/ipw2200 drivers, remove
> libipw_change_mtu
> - set min/max_mtu in p80211netdev, remove wlan_change_mtu

I guess we should do the same in net/mac80211/iface.c?

johannes


Re: [PATCH net-next 2/6] net: use core MTU range checking in wireless drivers

2016-10-19 Thread Johannes Berg

> > I guess we should do the same in net/mac80211/iface.c?
> 
> Yeah. I thought I'd located all places this needed to happen, but
> obviously not. I'll get this added and do another sweep for others I
> might have missed.

No worries. I can also do it if you prefer, just wanted to ask :)

johannes


Re: [PATCH net-next 2/6] net: use core MTU range checking in wireless drivers

2016-10-19 Thread Johannes Berg

> > I guess we should do the same in net/mac80211/iface.c?
> 
> Yeah. I thought I'd located all places this needed to happen, but
> obviously not. I'll get this added and do another sweep for others I
> might have missed.

No worries. I can also do it if you prefer, just wanted to ask :)

johannes


Re: [PATCH net-next 2/6] net: use core MTU range checking in wireless drivers

2016-10-19 Thread Jarod Wilson
On Wed, Oct 19, 2016 at 09:38:33AM +0200, Johannes Berg wrote:
> On Tue, 2016-10-18 at 22:33 -0400, Jarod Wilson wrote:
> > - set max_mtu in wil6210 driver
> > - set max_mtu in atmel driver
> > - set min/max_mtu in cisco airo driver, remove airo_change_mtu
> > - set min/max_mtu in ipw2100/ipw2200 drivers, remove
> > libipw_change_mtu
> > - set min/max_mtu in p80211netdev, remove wlan_change_mtu
> 
> I guess we should do the same in net/mac80211/iface.c?

Yeah. I thought I'd located all places this needed to happen, but
obviously not. I'll get this added and do another sweep for others I might
have missed.

-- 
Jarod Wilson
ja...@redhat.com



Re: [PATCH net-next 2/6] net: use core MTU range checking in wireless drivers

2016-10-19 Thread Jarod Wilson
On Wed, Oct 19, 2016 at 09:38:33AM +0200, Johannes Berg wrote:
> On Tue, 2016-10-18 at 22:33 -0400, Jarod Wilson wrote:
> > - set max_mtu in wil6210 driver
> > - set max_mtu in atmel driver
> > - set min/max_mtu in cisco airo driver, remove airo_change_mtu
> > - set min/max_mtu in ipw2100/ipw2200 drivers, remove
> > libipw_change_mtu
> > - set min/max_mtu in p80211netdev, remove wlan_change_mtu
> 
> I guess we should do the same in net/mac80211/iface.c?

Yeah. I thought I'd located all places this needed to happen, but
obviously not. I'll get this added and do another sweep for others I might
have missed.

-- 
Jarod Wilson
ja...@redhat.com



[PATCH net-next 2/6] net: use core MTU range checking in wireless drivers

2016-10-18 Thread Jarod Wilson
- set max_mtu in wil6210 driver
- set max_mtu in atmel driver
- set min/max_mtu in cisco airo driver, remove airo_change_mtu
- set min/max_mtu in ipw2100/ipw2200 drivers, remove libipw_change_mtu
- set min/max_mtu in p80211netdev, remove wlan_change_mtu

CC: net...@vger.kernel.org
CC: linux-wirel...@vger.kernel.org
CC: Maya Erez 
CC: Simon Kelley 
CC: Stanislav Yakovlev 
Signed-off-by: Jarod Wilson 
---
 drivers/net/wireless/ath/wil6210/netdev.c  | 17 +
 drivers/net/wireless/atmel/atmel.c | 13 -
 drivers/net/wireless/cisco/airo.c  | 14 +++---
 drivers/net/wireless/intel/ipw2x00/ipw2100.c   |  3 ++-
 drivers/net/wireless/intel/ipw2x00/ipw2200.c   |  8 ++--
 drivers/net/wireless/intel/ipw2x00/libipw.h|  1 -
 drivers/net/wireless/intel/ipw2x00/libipw_module.c |  9 -
 drivers/staging/wlan-ng/p80211netdev.c | 18 +-
 8 files changed, 21 insertions(+), 62 deletions(-)

diff --git a/drivers/net/wireless/ath/wil6210/netdev.c 
b/drivers/net/wireless/ath/wil6210/netdev.c
index 61de5e9..d18372c 100644
--- a/drivers/net/wireless/ath/wil6210/netdev.c
+++ b/drivers/net/wireless/ath/wil6210/netdev.c
@@ -41,21 +41,6 @@ static int wil_stop(struct net_device *ndev)
return wil_down(wil);
 }
 
-static int wil_change_mtu(struct net_device *ndev, int new_mtu)
-{
-   struct wil6210_priv *wil = ndev_to_wil(ndev);
-
-   if (new_mtu < 68 || new_mtu > mtu_max) {
-   wil_err(wil, "invalid MTU %d\n", new_mtu);
-   return -EINVAL;
-   }
-
-   wil_dbg_misc(wil, "change MTU %d -> %d\n", ndev->mtu, new_mtu);
-   ndev->mtu = new_mtu;
-
-   return 0;
-}
-
 static int wil_do_ioctl(struct net_device *ndev, struct ifreq *ifr, int cmd)
 {
struct wil6210_priv *wil = ndev_to_wil(ndev);
@@ -69,7 +54,6 @@ static const struct net_device_ops wil_netdev_ops = {
.ndo_start_xmit = wil_start_xmit,
.ndo_set_mac_address= eth_mac_addr,
.ndo_validate_addr  = eth_validate_addr,
-   .ndo_change_mtu = wil_change_mtu,
.ndo_do_ioctl   = wil_do_ioctl,
 };
 
@@ -126,6 +110,7 @@ static int wil6210_netdev_poll_tx(struct napi_struct *napi, 
int budget)
 static void wil_dev_setup(struct net_device *dev)
 {
ether_setup(dev);
+   dev->max_mtu = mtu_max;
dev->tx_queue_len = WIL_TX_Q_LEN_DEFAULT;
 }
 
diff --git a/drivers/net/wireless/atmel/atmel.c 
b/drivers/net/wireless/atmel/atmel.c
index bf2e9a0..eb92d5a 100644
--- a/drivers/net/wireless/atmel/atmel.c
+++ b/drivers/net/wireless/atmel/atmel.c
@@ -1295,14 +1295,6 @@ static struct iw_statistics 
*atmel_get_wireless_stats(struct net_device *dev)
return >wstats;
 }
 
-static int atmel_change_mtu(struct net_device *dev, int new_mtu)
-{
-   if ((new_mtu < 68) || (new_mtu > 2312))
-   return -EINVAL;
-   dev->mtu = new_mtu;
-   return 0;
-}
-
 static int atmel_set_mac_address(struct net_device *dev, void *p)
 {
struct sockaddr *addr = p;
@@ -1506,7 +1498,6 @@ static const struct file_operations atmel_proc_fops = {
 static const struct net_device_ops atmel_netdev_ops = {
.ndo_open   = atmel_open,
.ndo_stop   = atmel_close,
-   .ndo_change_mtu = atmel_change_mtu,
.ndo_set_mac_address= atmel_set_mac_address,
.ndo_start_xmit = start_tx,
.ndo_do_ioctl   = atmel_ioctl,
@@ -1600,6 +1591,10 @@ struct net_device *init_atmel_card(unsigned short irq, 
unsigned long port,
dev->irq = irq;
dev->base_addr = port;
 
+   /* MTU range: 68 - 2312 */
+   dev->min_mtu = 68;
+   dev->max_mtu = MAX_WIRELESS_BODY - ETH_FCS_LEN;
+
SET_NETDEV_DEV(dev, sys_dev);
 
if ((rc = request_irq(dev->irq, service_interrupt, IRQF_SHARED, 
dev->name, dev))) {
diff --git a/drivers/net/wireless/cisco/airo.c 
b/drivers/net/wireless/cisco/airo.c
index 69b826d..4b04045 100644
--- a/drivers/net/wireless/cisco/airo.c
+++ b/drivers/net/wireless/cisco/airo.c
@@ -2329,14 +2329,6 @@ static int airo_set_mac_address(struct net_device *dev, 
void *p)
return 0;
 }
 
-static int airo_change_mtu(struct net_device *dev, int new_mtu)
-{
-   if ((new_mtu < 68) || (new_mtu > 2400))
-   return -EINVAL;
-   dev->mtu = new_mtu;
-   return 0;
-}
-
 static LIST_HEAD(airo_devices);
 
 static void add_airo_dev(struct airo_info *ai)
@@ -2656,7 +2648,6 @@ static const struct net_device_ops airo11_netdev_ops = {
.ndo_get_stats  = airo_get_stats,
.ndo_set_mac_address= airo_set_mac_address,
.ndo_do_ioctl   = airo_ioctl,
-   .ndo_change_mtu = airo_change_mtu,
 };
 
 static void wifi_setup(struct net_device *dev)
@@ -2668,6 +2659,8 @@ static void wifi_setup(struct 

[PATCH net-next 2/6] net: use core MTU range checking in wireless drivers

2016-10-18 Thread Jarod Wilson
- set max_mtu in wil6210 driver
- set max_mtu in atmel driver
- set min/max_mtu in cisco airo driver, remove airo_change_mtu
- set min/max_mtu in ipw2100/ipw2200 drivers, remove libipw_change_mtu
- set min/max_mtu in p80211netdev, remove wlan_change_mtu

CC: net...@vger.kernel.org
CC: linux-wirel...@vger.kernel.org
CC: Maya Erez 
CC: Simon Kelley 
CC: Stanislav Yakovlev 
Signed-off-by: Jarod Wilson 
---
 drivers/net/wireless/ath/wil6210/netdev.c  | 17 +
 drivers/net/wireless/atmel/atmel.c | 13 -
 drivers/net/wireless/cisco/airo.c  | 14 +++---
 drivers/net/wireless/intel/ipw2x00/ipw2100.c   |  3 ++-
 drivers/net/wireless/intel/ipw2x00/ipw2200.c   |  8 ++--
 drivers/net/wireless/intel/ipw2x00/libipw.h|  1 -
 drivers/net/wireless/intel/ipw2x00/libipw_module.c |  9 -
 drivers/staging/wlan-ng/p80211netdev.c | 18 +-
 8 files changed, 21 insertions(+), 62 deletions(-)

diff --git a/drivers/net/wireless/ath/wil6210/netdev.c 
b/drivers/net/wireless/ath/wil6210/netdev.c
index 61de5e9..d18372c 100644
--- a/drivers/net/wireless/ath/wil6210/netdev.c
+++ b/drivers/net/wireless/ath/wil6210/netdev.c
@@ -41,21 +41,6 @@ static int wil_stop(struct net_device *ndev)
return wil_down(wil);
 }
 
-static int wil_change_mtu(struct net_device *ndev, int new_mtu)
-{
-   struct wil6210_priv *wil = ndev_to_wil(ndev);
-
-   if (new_mtu < 68 || new_mtu > mtu_max) {
-   wil_err(wil, "invalid MTU %d\n", new_mtu);
-   return -EINVAL;
-   }
-
-   wil_dbg_misc(wil, "change MTU %d -> %d\n", ndev->mtu, new_mtu);
-   ndev->mtu = new_mtu;
-
-   return 0;
-}
-
 static int wil_do_ioctl(struct net_device *ndev, struct ifreq *ifr, int cmd)
 {
struct wil6210_priv *wil = ndev_to_wil(ndev);
@@ -69,7 +54,6 @@ static const struct net_device_ops wil_netdev_ops = {
.ndo_start_xmit = wil_start_xmit,
.ndo_set_mac_address= eth_mac_addr,
.ndo_validate_addr  = eth_validate_addr,
-   .ndo_change_mtu = wil_change_mtu,
.ndo_do_ioctl   = wil_do_ioctl,
 };
 
@@ -126,6 +110,7 @@ static int wil6210_netdev_poll_tx(struct napi_struct *napi, 
int budget)
 static void wil_dev_setup(struct net_device *dev)
 {
ether_setup(dev);
+   dev->max_mtu = mtu_max;
dev->tx_queue_len = WIL_TX_Q_LEN_DEFAULT;
 }
 
diff --git a/drivers/net/wireless/atmel/atmel.c 
b/drivers/net/wireless/atmel/atmel.c
index bf2e9a0..eb92d5a 100644
--- a/drivers/net/wireless/atmel/atmel.c
+++ b/drivers/net/wireless/atmel/atmel.c
@@ -1295,14 +1295,6 @@ static struct iw_statistics 
*atmel_get_wireless_stats(struct net_device *dev)
return >wstats;
 }
 
-static int atmel_change_mtu(struct net_device *dev, int new_mtu)
-{
-   if ((new_mtu < 68) || (new_mtu > 2312))
-   return -EINVAL;
-   dev->mtu = new_mtu;
-   return 0;
-}
-
 static int atmel_set_mac_address(struct net_device *dev, void *p)
 {
struct sockaddr *addr = p;
@@ -1506,7 +1498,6 @@ static const struct file_operations atmel_proc_fops = {
 static const struct net_device_ops atmel_netdev_ops = {
.ndo_open   = atmel_open,
.ndo_stop   = atmel_close,
-   .ndo_change_mtu = atmel_change_mtu,
.ndo_set_mac_address= atmel_set_mac_address,
.ndo_start_xmit = start_tx,
.ndo_do_ioctl   = atmel_ioctl,
@@ -1600,6 +1591,10 @@ struct net_device *init_atmel_card(unsigned short irq, 
unsigned long port,
dev->irq = irq;
dev->base_addr = port;
 
+   /* MTU range: 68 - 2312 */
+   dev->min_mtu = 68;
+   dev->max_mtu = MAX_WIRELESS_BODY - ETH_FCS_LEN;
+
SET_NETDEV_DEV(dev, sys_dev);
 
if ((rc = request_irq(dev->irq, service_interrupt, IRQF_SHARED, 
dev->name, dev))) {
diff --git a/drivers/net/wireless/cisco/airo.c 
b/drivers/net/wireless/cisco/airo.c
index 69b826d..4b04045 100644
--- a/drivers/net/wireless/cisco/airo.c
+++ b/drivers/net/wireless/cisco/airo.c
@@ -2329,14 +2329,6 @@ static int airo_set_mac_address(struct net_device *dev, 
void *p)
return 0;
 }
 
-static int airo_change_mtu(struct net_device *dev, int new_mtu)
-{
-   if ((new_mtu < 68) || (new_mtu > 2400))
-   return -EINVAL;
-   dev->mtu = new_mtu;
-   return 0;
-}
-
 static LIST_HEAD(airo_devices);
 
 static void add_airo_dev(struct airo_info *ai)
@@ -2656,7 +2648,6 @@ static const struct net_device_ops airo11_netdev_ops = {
.ndo_get_stats  = airo_get_stats,
.ndo_set_mac_address= airo_set_mac_address,
.ndo_do_ioctl   = airo_ioctl,
-   .ndo_change_mtu = airo_change_mtu,
 };
 
 static void wifi_setup(struct net_device *dev)
@@ -2668,6 +2659,8 @@ static void wifi_setup(struct net_device *dev)
dev->type   = ARPHRD_IEEE80211;