Ticket #12952: b02-rt2x00-add-multiple-ap.patch

File b02-rt2x00-add-multiple-ap.patch, 2.3 KB (added by sagili.tsp@…, 5 years ago)

patches for rt2x00 multiple ssid issues

  • drivers/net/wireless/rt2x00/rt2x00.h

    a b enum rt2x00_capability_flags { 
    750750}; 
    751751 
    752752/* 
     753 * Interface combinations 
     754 */ 
     755enum { 
     756        IF_COMB_AP = 0, 
     757        NUM_IF_COMB, 
     758}; 
     759 
     760/* 
    753761 * rt2x00 device structure. 
    754762 */ 
    755763struct rt2x00_dev { 
    struct rt2x00_dev { 
    876884        unsigned int intf_beaconing; 
    877885 
    878886        /* 
     887         * Interface combinations 
     888         */ 
     889        struct ieee80211_iface_limit if_limits_ap; 
     890        struct ieee80211_iface_combination if_combinations[NUM_IF_COMB]; 
     891 
     892        /* 
    879893         * Link quality 
    880894         */ 
    881895        struct link link; 
  • drivers/net/wireless/rt2x00/rt2x00dev.c

    a b void rt2x00lib_stop(struct rt2x00_dev *r 
    11461146        rt2x00dev->intf_associated = 0; 
    11471147} 
    11481148 
     1149static inline void rt2x00lib_set_if_combinations(struct rt2x00_dev *rt2x00dev) 
     1150{ 
     1151        struct ieee80211_iface_limit *if_limit; 
     1152        struct ieee80211_iface_combination *if_combination; 
     1153 
     1154        /* 
     1155         * Build up AP interface limits structure. 
     1156         */ 
     1157        if_limit = &rt2x00dev->if_limits_ap; 
     1158        if_limit->max = rt2x00dev->ops->max_ap_intf; 
     1159        if_limit->types = BIT(NL80211_IFTYPE_AP); 
     1160 
     1161        /* 
     1162         * Build up AP interface combinations structure. 
     1163         */ 
     1164        if_combination = &rt2x00dev->if_combinations[IF_COMB_AP]; 
     1165        if_combination->limits = if_limit; 
     1166        if_combination->n_limits = 1; 
     1167        if_combination->max_interfaces = if_limit->max; 
     1168        if_combination->num_different_channels = 1; 
     1169 
     1170        /* 
     1171         * Finally, specify the possible combinations to mac80211. 
     1172         */ 
     1173        rt2x00dev->hw->wiphy->iface_combinations = rt2x00dev->if_combinations; 
     1174        rt2x00dev->hw->wiphy->n_iface_combinations = 1; 
     1175} 
     1176 
    11491177/* 
    11501178 * driver allocation handlers. 
    11511179 */ 
    int rt2x00lib_probe_dev(struct rt2x00_de 
    11651193                } 
    11661194        } 
    11671195 
     1196        /* 
     1197         * Set possible interface combinations. 
     1198         */ 
     1199        rt2x00lib_set_if_combinations(rt2x00dev); 
     1200 
    11681201        spin_lock_init(&rt2x00dev->irqmask_lock); 
    11691202        mutex_init(&rt2x00dev->csr_mutex); 
    11701203 
  • drivers/net/wireless/rt2x00/rt2x00mac.c

    a b int rt2x00mac_add_interface(struct ieee8 
    243243                        return -ENOBUFS; 
    244244 
    245245                /* 
    246                  * Check if we exceeded the maximum amount 
    247                  * of supported interfaces. 
     246                 * We don't support multiple STA interfaces. 
    248247                 */ 
    249                 if (rt2x00dev->intf_sta_count >= rt2x00dev->ops->max_sta_intf) 
     248                if (rt2x00dev->intf_sta_count) 
    250249                        return -ENOBUFS; 
    251250 
    252251                break;