@@ -759,17 +759,6 @@ int wfx_add_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
759
759
return - EOPNOTSUPP ;
760
760
}
761
761
762
- for (i = 0 ; i < ARRAY_SIZE (wdev -> vif ); i ++ ) {
763
- if (!wdev -> vif [i ]) {
764
- wdev -> vif [i ] = vif ;
765
- wvif -> id = i ;
766
- break ;
767
- }
768
- }
769
- if (i == ARRAY_SIZE (wdev -> vif )) {
770
- mutex_unlock (& wdev -> conf_mutex );
771
- return - EOPNOTSUPP ;
772
- }
773
762
// FIXME: prefer use of container_of() to get vif
774
763
wvif -> vif = vif ;
775
764
wvif -> wdev = wdev ;
@@ -786,12 +775,22 @@ int wfx_add_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
786
775
init_completion (& wvif -> scan_complete );
787
776
INIT_WORK (& wvif -> scan_work , wfx_hw_scan_work );
788
777
789
- mutex_unlock (& wdev -> conf_mutex );
778
+ wfx_tx_queues_init (wvif );
779
+ wfx_tx_policy_init (wvif );
780
+
781
+ for (i = 0 ; i < ARRAY_SIZE (wdev -> vif ); i ++ ) {
782
+ if (!wdev -> vif [i ]) {
783
+ wdev -> vif [i ] = vif ;
784
+ wvif -> id = i ;
785
+ break ;
786
+ }
787
+ }
788
+ WARN (i == ARRAY_SIZE (wdev -> vif ), "try to instantiate more vif than supported" );
790
789
791
790
hif_set_macaddr (wvif , vif -> addr );
792
791
793
- wfx_tx_queues_init ( wvif );
794
- wfx_tx_policy_init ( wvif );
792
+ mutex_unlock ( & wdev -> conf_mutex );
793
+
795
794
wvif = NULL ;
796
795
while ((wvif = wvif_iterate (wdev , wvif )) != NULL ) {
797
796
// Combo mode does not support Block Acks. We can re-enable them
@@ -823,6 +822,7 @@ void wfx_remove_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
823
822
wvif -> vif = NULL ;
824
823
825
824
mutex_unlock (& wdev -> conf_mutex );
825
+
826
826
wvif = NULL ;
827
827
while ((wvif = wvif_iterate (wdev , wvif )) != NULL ) {
828
828
// Combo mode does not support Block Acks. We can re-enable them
0 commit comments