wil6210: limit MTU
authorVladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Tue, 27 May 2014 11:45:44 +0000 (14:45 +0300)
committerJohn W. Linville <linville@tuxdriver.com>
Thu, 29 May 2014 17:10:28 +0000 (13:10 -0400)
Obey 802.11 spec that defines max. data size 7920 bytes

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/wil6210/netdev.c

index fdcaeb820e75857469ab4d0a6d854cdb4d6aa373..106b6dcb773a35fe3e57eba85423f4e2135ae24c 100644 (file)
@@ -32,12 +32,26 @@ 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 > IEEE80211_MAX_DATA_LEN_DMG)
+               return -EINVAL;
+
+       wil_dbg_misc(wil, "change MTU %d -> %d\n", ndev->mtu, new_mtu);
+       ndev->mtu = new_mtu;
+
+       return 0;
+}
+
 static const struct net_device_ops wil_netdev_ops = {
        .ndo_open               = wil_open,
        .ndo_stop               = wil_stop,
        .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,
 };
 
 static int wil6210_netdev_poll_rx(struct napi_struct *napi, int budget)