Changeset 31429


Ignore:
Timestamp:
2012-04-21T22:34:38+02:00 (6 years ago)
Author:
nbd
Message:

mac80211: suppress 3-address multicast frames on WDS APs without non-WDS stations

Location:
trunk/package/mac80211/patches
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/mac80211/patches/300-pending_work.patch

    r31428 r31429  
    813813                (ATH9K_RXERR_DECRYPT | ATH9K_RXERR_CRC | ATH9K_RXERR_MIC | 
    814814                 ATH9K_RXERR_KEYMISS)); 
     815--- a/net/mac80211/cfg.c 
     816+++ b/net/mac80211/cfg.c 
     817@@ -1023,6 +1023,10 @@ static int ieee80211_change_station(stru 
     818                } 
     819  
     820                sta->sdata = vlansdata; 
     821+ 
     822+               if (sta->sta_state == IEEE80211_STA_AUTHORIZED) 
     823+                       atomic_dec(&sta->sdata->u.ap.num_mcast_sta); 
     824+ 
     825                ieee80211_send_layer2_update(sta); 
     826        } 
     827  
     828--- a/net/mac80211/debugfs_netdev.c 
     829+++ b/net/mac80211/debugfs_netdev.c 
     830@@ -394,7 +394,7 @@ static ssize_t ieee80211_if_parse_uapsd_ 
     831 __IEEE80211_IF_FILE_W(uapsd_max_sp_len); 
     832  
     833 /* AP attributes */ 
     834-IEEE80211_IF_FILE(num_sta_authorized, u.ap.num_sta_authorized, ATOMIC); 
     835+IEEE80211_IF_FILE(num_mcast_sta, u.ap.num_mcast_sta, ATOMIC); 
     836 IEEE80211_IF_FILE(num_sta_ps, u.ap.num_sta_ps, ATOMIC); 
     837 IEEE80211_IF_FILE(dtim_count, u.ap.dtim_count, DEC); 
     838  
     839@@ -540,7 +540,7 @@ static void add_sta_files(struct ieee802 
     840  
     841 static void add_ap_files(struct ieee80211_sub_if_data *sdata) 
     842 { 
     843-       DEBUGFS_ADD(num_sta_authorized); 
     844+       DEBUGFS_ADD(num_mcast_sta); 
     845        DEBUGFS_ADD(num_sta_ps); 
     846        DEBUGFS_ADD(dtim_count); 
     847        DEBUGFS_ADD(num_buffered_multicast); 
     848--- a/net/mac80211/ieee80211_i.h 
     849+++ b/net/mac80211/ieee80211_i.h 
     850@@ -282,7 +282,7 @@ struct ieee80211_if_ap { 
     851        u8 tim[sizeof(unsigned long) * BITS_TO_LONGS(IEEE80211_MAX_AID + 1)]; 
     852        struct sk_buff_head ps_bc_buf; 
     853        atomic_t num_sta_ps; /* number of stations in PS mode */ 
     854-       atomic_t num_sta_authorized; /* number of authorized stations */ 
     855+       atomic_t num_mcast_sta; /* number of stations receiving multicast */ 
     856        int dtim_count; 
     857        bool dtim_bc_mc; 
     858 }; 
     859--- a/net/mac80211/sta_info.c 
     860+++ b/net/mac80211/sta_info.c 
     861@@ -1418,14 +1418,14 @@ int sta_info_move_state(struct sta_info  
     862                        set_bit(WLAN_STA_ASSOC, &sta->_flags); 
     863                } else if (sta->sta_state == IEEE80211_STA_AUTHORIZED) { 
     864                        if (sta->sdata->vif.type == NL80211_IFTYPE_AP) 
     865-                               atomic_dec(&sta->sdata->u.ap.num_sta_authorized); 
     866+                               atomic_dec(&sta->sdata->u.ap.num_mcast_sta); 
     867                        clear_bit(WLAN_STA_AUTHORIZED, &sta->_flags); 
     868                } 
     869                break; 
     870        case IEEE80211_STA_AUTHORIZED: 
     871                if (sta->sta_state == IEEE80211_STA_ASSOC) { 
     872                        if (sta->sdata->vif.type == NL80211_IFTYPE_AP) 
     873-                               atomic_inc(&sta->sdata->u.ap.num_sta_authorized); 
     874+                               atomic_inc(&sta->sdata->u.ap.num_mcast_sta); 
     875                        set_bit(WLAN_STA_AUTHORIZED, &sta->_flags); 
     876                } 
     877                break; 
     878--- a/net/mac80211/tx.c 
     879+++ b/net/mac80211/tx.c 
     880@@ -306,7 +306,7 @@ ieee80211_tx_h_check_assoc(struct ieee80 
     881                } 
     882        } else if (unlikely(tx->sdata->vif.type == NL80211_IFTYPE_AP && 
     883                            ieee80211_is_data(hdr->frame_control) && 
     884-                           !atomic_read(&tx->sdata->u.ap.num_sta_authorized))) { 
     885+                           !atomic_read(&tx->sdata->u.ap.num_mcast_sta))) { 
     886                /* 
     887                 * No associated STAs - no need to send multicast 
     888                 * frames. 
  • trunk/package/mac80211/patches/520-mac80211_cur_txpower.patch

    r31322 r31429  
    1212--- a/net/mac80211/cfg.c 
    1313+++ b/net/mac80211/cfg.c 
    14 @@ -1738,7 +1738,7 @@ static int ieee80211_get_tx_power(struct 
     14@@ -1742,7 +1742,7 @@ static int ieee80211_get_tx_power(struct 
    1515 { 
    1616        struct ieee80211_local *local = wiphy_priv(wiphy); 
  • trunk/package/mac80211/patches/550-mac80211_optimize_mcs_rate_mask.patch

    r31322 r31429  
    1212--- a/net/mac80211/cfg.c 
    1313+++ b/net/mac80211/cfg.c 
    14 @@ -1914,9 +1914,20 @@ static int ieee80211_set_bitrate_mask(st 
     14@@ -1918,9 +1918,20 @@ static int ieee80211_set_bitrate_mask(st 
    1515        } 
    1616  
Note: See TracChangeset for help on using the changeset viewer.