source: trunk/package/mac80211/patches/560-mac80211_fix_ap_vlan_aggr.patch @ 29296

Last change on this file since 29296 was 29296, checked in by nbd, 4 years ago

mac80211: fix aggregation related kernel warnings when using wds

File size: 2.6 KB
  • net/mac80211/driver-ops.h

    a b static inline void check_sdata_in_driver 
    1010        WARN_ON(!(sdata->flags & IEEE80211_SDATA_IN_DRIVER)); 
    1111} 
    1212 
     13static inline struct ieee80211_sub_if_data * 
     14get_bss_sdata(struct ieee80211_sub_if_data *sdata) 
     15{ 
     16        if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) 
     17                sdata = container_of(sdata->bss, struct ieee80211_sub_if_data, 
     18                                     u.ap); 
     19 
     20        return sdata; 
     21} 
     22 
    1323static inline void drv_tx(struct ieee80211_local *local, struct sk_buff *skb) 
    1424{ 
    1525        local->ops->tx(&local->hw, skb); 
    static inline void drv_sta_notify(struct 
    427437                                  enum sta_notify_cmd cmd, 
    428438                                  struct ieee80211_sta *sta) 
    429439{ 
     440        sdata = get_bss_sdata(sdata); 
    430441        check_sdata_in_driver(sdata); 
    431442 
    432443        trace_drv_sta_notify(local, sdata, cmd, sta); 
    static inline int drv_sta_add(struct iee 
    443454 
    444455        might_sleep(); 
    445456 
     457        sdata = get_bss_sdata(sdata); 
    446458        check_sdata_in_driver(sdata); 
    447459 
    448460        trace_drv_sta_add(local, sdata, sta); 
    static inline void drv_sta_remove(struct 
    460472{ 
    461473        might_sleep(); 
    462474 
     475        sdata = get_bss_sdata(sdata); 
    463476        check_sdata_in_driver(sdata); 
    464477 
    465478        trace_drv_sta_remove(local, sdata, sta); 
    static inline int drv_ampdu_action(struc 
    553566 
    554567        might_sleep(); 
    555568 
     569        sdata = get_bss_sdata(sdata); 
    556570        check_sdata_in_driver(sdata); 
    557571 
    558572        trace_drv_ampdu_action(local, sdata, action, sta, tid, ssn, buf_size); 
  • net/mac80211/sta_info.c

    a b static int sta_info_finish_insert(struct 
    353353 
    354354        if (!sta->dummy || dummy_reinsert) { 
    355355                /* notify driver */ 
    356                 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) 
    357                         sdata = container_of(sdata->bss, 
    358                                              struct ieee80211_sub_if_data, 
    359                                              u.ap); 
    360356                err = drv_sta_add(local, sdata, &sta->sta); 
    361357                if (err) { 
    362358                        if (!async) 
  • net/mac80211/agg-tx.c

    a b void ieee80211_start_tx_ba_cb(struct iee 
    550550        } 
    551551 
    552552        mutex_lock(&local->sta_mtx); 
    553         sta = sta_info_get(sdata, ra); 
     553        sta = sta_info_get_bss(sdata, ra); 
    554554        if (!sta) { 
    555555                mutex_unlock(&local->sta_mtx); 
    556556#ifdef CONFIG_MAC80211_HT_DEBUG 
    void ieee80211_stop_tx_ba_cb(struct ieee 
    679679 
    680680        mutex_lock(&local->sta_mtx); 
    681681 
    682         sta = sta_info_get(sdata, ra); 
     682        sta = sta_info_get_bss(sdata, ra); 
    683683        if (!sta) { 
    684684#ifdef CONFIG_MAC80211_HT_DEBUG 
    685685                printk(KERN_DEBUG "Could not find station: %pM\n", ra); 
  • net/mac80211/agg-rx.c

    a b void ieee80211_stop_rx_ba_session(struct 
    109109        int i; 
    110110 
    111111        rcu_read_lock(); 
    112         sta = sta_info_get(sdata, addr); 
     112        sta = sta_info_get_bss(sdata, addr); 
    113113        if (!sta) { 
    114114                rcu_read_unlock(); 
    115115                return; 
Note: See TracBrowser for help on using the repository browser.