@@ -1110,197 +1110,7 @@ int mt7921_mcu_get_eeprom(struct mt7921_dev *dev, u32 offset)
1110
1110
return 0 ;
1111
1111
}
1112
1112
1113
- #define MT7921_SCAN_CHANNEL_TIME 60
1114
- int mt7921_mcu_hw_scan (struct mt7921_phy * phy , struct ieee80211_vif * vif ,
1115
- struct ieee80211_scan_request * scan_req )
1116
- {
1117
- struct mt7921_vif * mvif = (struct mt7921_vif * )vif -> drv_priv ;
1118
- struct cfg80211_scan_request * sreq = & scan_req -> req ;
1119
- int n_ssids = 0 , err , i , duration = MT7921_SCAN_CHANNEL_TIME ;
1120
- int ext_channels_num = max_t (int , sreq -> n_channels - 32 , 0 );
1121
- struct ieee80211_channel * * scan_list = sreq -> channels ;
1122
- struct mt7921_dev * dev = phy -> dev ;
1123
- struct mt7921_mcu_scan_channel * chan ;
1124
- struct mt7921_hw_scan_req * req ;
1125
- struct sk_buff * skb ;
1126
-
1127
- skb = mt76_mcu_msg_alloc (& dev -> mt76 , NULL , sizeof (* req ));
1128
- if (!skb )
1129
- return - ENOMEM ;
1130
-
1131
- set_bit (MT76_HW_SCANNING , & phy -> mt76 -> state );
1132
- mvif -> mt76 .scan_seq_num = (mvif -> mt76 .scan_seq_num + 1 ) & 0x7f ;
1133
-
1134
- req = (struct mt7921_hw_scan_req * )skb_put (skb , sizeof (* req ));
1135
-
1136
- req -> seq_num = mvif -> mt76 .scan_seq_num ;
1137
- req -> bss_idx = mvif -> mt76 .idx ;
1138
- req -> scan_type = sreq -> n_ssids ? 1 : 0 ;
1139
- req -> probe_req_num = sreq -> n_ssids ? 2 : 0 ;
1140
- req -> version = 1 ;
1141
-
1142
- for (i = 0 ; i < sreq -> n_ssids ; i ++ ) {
1143
- if (!sreq -> ssids [i ].ssid_len )
1144
- continue ;
1145
-
1146
- req -> ssids [i ].ssid_len = cpu_to_le32 (sreq -> ssids [i ].ssid_len );
1147
- memcpy (req -> ssids [i ].ssid , sreq -> ssids [i ].ssid ,
1148
- sreq -> ssids [i ].ssid_len );
1149
- n_ssids ++ ;
1150
- }
1151
- req -> ssid_type = n_ssids ? BIT (2 ) : BIT (0 );
1152
- req -> ssid_type_ext = n_ssids ? BIT (0 ) : 0 ;
1153
- req -> ssids_num = n_ssids ;
1154
-
1155
- /* increase channel time for passive scan */
1156
- if (!sreq -> n_ssids )
1157
- duration *= 2 ;
1158
- req -> timeout_value = cpu_to_le16 (sreq -> n_channels * duration );
1159
- req -> channel_min_dwell_time = cpu_to_le16 (duration );
1160
- req -> channel_dwell_time = cpu_to_le16 (duration );
1161
-
1162
- req -> channels_num = min_t (u8 , sreq -> n_channels , 32 );
1163
- req -> ext_channels_num = min_t (u8 , ext_channels_num , 32 );
1164
- for (i = 0 ; i < req -> channels_num + req -> ext_channels_num ; i ++ ) {
1165
- if (i >= 32 )
1166
- chan = & req -> ext_channels [i - 32 ];
1167
- else
1168
- chan = & req -> channels [i ];
1169
-
1170
- chan -> band = scan_list [i ]-> band == NL80211_BAND_2GHZ ? 1 : 2 ;
1171
- chan -> channel_num = scan_list [i ]-> hw_value ;
1172
- }
1173
- req -> channel_type = sreq -> n_channels ? 4 : 0 ;
1174
-
1175
- if (sreq -> ie_len > 0 ) {
1176
- memcpy (req -> ies , sreq -> ie , sreq -> ie_len );
1177
- req -> ies_len = cpu_to_le16 (sreq -> ie_len );
1178
- }
1179
-
1180
- memcpy (req -> bssid , sreq -> bssid , ETH_ALEN );
1181
- if (sreq -> flags & NL80211_SCAN_FLAG_RANDOM_ADDR ) {
1182
- get_random_mask_addr (req -> random_mac , sreq -> mac_addr ,
1183
- sreq -> mac_addr_mask );
1184
- req -> scan_func = 1 ;
1185
- }
1186
-
1187
- err = mt76_mcu_skb_send_msg (& dev -> mt76 , skb , MCU_CMD_START_HW_SCAN ,
1188
- false);
1189
- if (err < 0 )
1190
- clear_bit (MT76_HW_SCANNING , & phy -> mt76 -> state );
1191
-
1192
- return err ;
1193
- }
1194
-
1195
- int mt7921_mcu_cancel_hw_scan (struct mt7921_phy * phy ,
1196
- struct ieee80211_vif * vif )
1197
- {
1198
- struct mt7921_vif * mvif = (struct mt7921_vif * )vif -> drv_priv ;
1199
- struct mt7921_dev * dev = phy -> dev ;
1200
- struct {
1201
- u8 seq_num ;
1202
- u8 is_ext_channel ;
1203
- u8 rsv [2 ];
1204
- } __packed req = {
1205
- .seq_num = mvif -> mt76 .scan_seq_num ,
1206
- };
1207
-
1208
- if (test_and_clear_bit (MT76_HW_SCANNING , & phy -> mt76 -> state )) {
1209
- struct cfg80211_scan_info info = {
1210
- .aborted = true,
1211
- };
1212
-
1213
- ieee80211_scan_completed (phy -> mt76 -> hw , & info );
1214
- }
1215
-
1216
- return mt76_mcu_send_msg (& dev -> mt76 , MCU_CMD_CANCEL_HW_SCAN , & req ,
1217
- sizeof (req ), false);
1218
- }
1219
-
1220
- int mt7921_mcu_sched_scan_req (struct mt7921_phy * phy ,
1221
- struct ieee80211_vif * vif ,
1222
- struct cfg80211_sched_scan_request * sreq )
1223
- {
1224
- struct mt7921_vif * mvif = (struct mt7921_vif * )vif -> drv_priv ;
1225
- struct ieee80211_channel * * scan_list = sreq -> channels ;
1226
- struct mt7921_dev * dev = phy -> dev ;
1227
- struct mt7921_mcu_scan_channel * chan ;
1228
- struct mt7921_sched_scan_req * req ;
1229
- struct cfg80211_match_set * match ;
1230
- struct cfg80211_ssid * ssid ;
1231
- struct sk_buff * skb ;
1232
- int i ;
1233
-
1234
- skb = mt76_mcu_msg_alloc (& dev -> mt76 , NULL ,
1235
- sizeof (* req ) + sreq -> ie_len );
1236
- if (!skb )
1237
- return - ENOMEM ;
1238
-
1239
- mvif -> mt76 .scan_seq_num = (mvif -> mt76 .scan_seq_num + 1 ) & 0x7f ;
1240
-
1241
- req = (struct mt7921_sched_scan_req * )skb_put (skb , sizeof (* req ));
1242
- req -> version = 1 ;
1243
- req -> seq_num = mvif -> mt76 .scan_seq_num ;
1244
-
1245
- req -> ssids_num = sreq -> n_ssids ;
1246
- for (i = 0 ; i < req -> ssids_num ; i ++ ) {
1247
- ssid = & sreq -> ssids [i ];
1248
- memcpy (req -> ssids [i ].ssid , ssid -> ssid , ssid -> ssid_len );
1249
- req -> ssids [i ].ssid_len = cpu_to_le32 (ssid -> ssid_len );
1250
- }
1251
-
1252
- req -> match_num = sreq -> n_match_sets ;
1253
- for (i = 0 ; i < req -> match_num ; i ++ ) {
1254
- match = & sreq -> match_sets [i ];
1255
- memcpy (req -> match [i ].ssid , match -> ssid .ssid ,
1256
- match -> ssid .ssid_len );
1257
- req -> match [i ].rssi_th = cpu_to_le32 (match -> rssi_thold );
1258
- req -> match [i ].ssid_len = match -> ssid .ssid_len ;
1259
- }
1260
-
1261
- req -> channel_type = sreq -> n_channels ? 4 : 0 ;
1262
- req -> channels_num = min_t (u8 , sreq -> n_channels , 64 );
1263
- for (i = 0 ; i < req -> channels_num ; i ++ ) {
1264
- chan = & req -> channels [i ];
1265
- chan -> band = scan_list [i ]-> band == NL80211_BAND_2GHZ ? 1 : 2 ;
1266
- chan -> channel_num = scan_list [i ]-> hw_value ;
1267
- }
1268
-
1269
- req -> intervals_num = sreq -> n_scan_plans ;
1270
- for (i = 0 ; i < req -> intervals_num ; i ++ )
1271
- req -> intervals [i ] = cpu_to_le16 (sreq -> scan_plans [i ].interval );
1272
-
1273
- if (sreq -> ie_len > 0 ) {
1274
- req -> ie_len = cpu_to_le16 (sreq -> ie_len );
1275
- memcpy (skb_put (skb , sreq -> ie_len ), sreq -> ie , sreq -> ie_len );
1276
- }
1277
-
1278
- return mt76_mcu_skb_send_msg (& dev -> mt76 , skb , MCU_CMD_SCHED_SCAN_REQ ,
1279
- false);
1280
- }
1281
-
1282
- int mt7921_mcu_sched_scan_enable (struct mt7921_phy * phy ,
1283
- struct ieee80211_vif * vif ,
1284
- bool enable )
1285
- {
1286
- struct mt7921_dev * dev = phy -> dev ;
1287
- struct {
1288
- u8 active ; /* 0: enabled 1: disabled */
1289
- u8 rsv [3 ];
1290
- } __packed req = {
1291
- .active = !enable ,
1292
- };
1293
-
1294
- if (enable )
1295
- set_bit (MT76_HW_SCHED_SCANNING , & phy -> mt76 -> state );
1296
- else
1297
- clear_bit (MT76_HW_SCHED_SCANNING , & phy -> mt76 -> state );
1298
-
1299
- return mt76_mcu_send_msg (& dev -> mt76 , MCU_CMD_SCHED_SCAN_ENABLE , & req ,
1300
- sizeof (req ), false);
1301
- }
1302
-
1303
- u32 mt7921_get_wtbl_info (struct mt7921_dev * dev , u16 wlan_idx )
1113
+ u32 mt7921_get_wtbl_info (struct mt7921_dev * dev , u32 wlan_idx )
1304
1114
{
1305
1115
struct mt7921_mcu_wlan_info wtbl_info = {
1306
1116
.wlan_idx = cpu_to_le32 (wlan_idx ),
@@ -1502,9 +1312,10 @@ mt7921_mcu_set_wow_ctrl(struct mt7921_phy *phy, struct ieee80211_vif *vif,
1502
1312
if (wowlan -> disconnect )
1503
1313
req .wow_ctrl_tlv .trigger |= BIT (2 );
1504
1314
if (wowlan -> nd_config ) {
1505
- mt7921_mcu_sched_scan_req (phy , vif , wowlan -> nd_config );
1315
+ mt76_connac_mcu_sched_scan_req (& dev -> mphy , vif ,
1316
+ wowlan -> nd_config );
1506
1317
req .wow_ctrl_tlv .trigger |= BIT (5 );
1507
- mt7921_mcu_sched_scan_enable ( phy , vif , suspend );
1318
+ mt76_connac_mcu_sched_scan_enable ( & dev -> mphy , vif , suspend );
1508
1319
}
1509
1320
1510
1321
if (mt76_is_mmio (& dev -> mt76 ))
0 commit comments