]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - net/mac80211/iface.c
net: bcm63xx_enet: Utilize phy_ethtool_nway_reset
[linux.git] / net / mac80211 / iface.c
index 638ec0759078c18ec6816bb9de5abe6f6cb40487..41497b670e2bde0e55a2a35f5fbbdb60148ddd54 100644 (file)
@@ -150,15 +150,6 @@ void ieee80211_recalc_idle(struct ieee80211_local *local)
                ieee80211_hw_config(local, change);
 }
 
-static int ieee80211_change_mtu(struct net_device *dev, int new_mtu)
-{
-       if (new_mtu < 256 || new_mtu > IEEE80211_MAX_DATA_LEN)
-               return -EINVAL;
-
-       dev->mtu = new_mtu;
-       return 0;
-}
-
 static int ieee80211_verify_mac(struct ieee80211_sub_if_data *sdata, u8 *addr,
                                bool check_dup)
 {
@@ -1166,7 +1157,6 @@ static const struct net_device_ops ieee80211_dataif_ops = {
        .ndo_uninit             = ieee80211_uninit,
        .ndo_start_xmit         = ieee80211_subif_start_xmit,
        .ndo_set_rx_mode        = ieee80211_set_multicast_list,
-       .ndo_change_mtu         = ieee80211_change_mtu,
        .ndo_set_mac_address    = ieee80211_change_mac,
        .ndo_select_queue       = ieee80211_netdev_select_queue,
        .ndo_get_stats64        = ieee80211_get_stats64,
@@ -1200,7 +1190,6 @@ static const struct net_device_ops ieee80211_monitorif_ops = {
        .ndo_uninit             = ieee80211_uninit,
        .ndo_start_xmit         = ieee80211_monitor_start_xmit,
        .ndo_set_rx_mode        = ieee80211_set_multicast_list,
-       .ndo_change_mtu         = ieee80211_change_mtu,
        .ndo_set_mac_address    = ieee80211_change_mac,
        .ndo_select_queue       = ieee80211_monitor_select_queue,
        .ndo_get_stats64        = ieee80211_get_stats64,
@@ -1884,6 +1873,10 @@ int ieee80211_if_add(struct ieee80211_local *local, const char *name,
 
                netdev_set_default_ethtool_ops(ndev, &ieee80211_ethtool_ops);
 
+               /* MTU range: 256 - 2304 */
+               ndev->min_mtu = 256;
+               ndev->max_mtu = IEEE80211_MAX_DATA_LEN;
+
                ret = register_netdevice(ndev);
                if (ret) {
                        ieee80211_if_free(ndev);
@@ -2005,3 +1998,19 @@ void ieee80211_iface_exit(void)
 {
        unregister_netdevice_notifier(&mac80211_netdev_notifier);
 }
+
+void ieee80211_vif_inc_num_mcast(struct ieee80211_sub_if_data *sdata)
+{
+       if (sdata->vif.type == NL80211_IFTYPE_AP)
+               atomic_inc(&sdata->u.ap.num_mcast_sta);
+       else if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
+               atomic_inc(&sdata->u.vlan.num_mcast_sta);
+}
+
+void ieee80211_vif_dec_num_mcast(struct ieee80211_sub_if_data *sdata)
+{
+       if (sdata->vif.type == NL80211_IFTYPE_AP)
+               atomic_dec(&sdata->u.ap.num_mcast_sta);
+       else if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
+               atomic_dec(&sdata->u.vlan.num_mcast_sta);
+}