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