Lines Matching refs:sta_id

37 static int iwl_sta_ucode_activate(struct iwl_priv *priv, u8 sta_id)  in iwl_sta_ucode_activate()  argument
41 if (sta_id >= IWLAGN_STATION_COUNT) { in iwl_sta_ucode_activate()
42 IWL_ERR(priv, "invalid sta_id %u\n", sta_id); in iwl_sta_ucode_activate()
45 if (!(priv->stations[sta_id].used & IWL_STA_DRIVER_ACTIVE)) in iwl_sta_ucode_activate()
48 sta_id, priv->stations[sta_id].sta.sta.addr); in iwl_sta_ucode_activate()
50 if (priv->stations[sta_id].used & IWL_STA_UCODE_ACTIVE) { in iwl_sta_ucode_activate()
54 sta_id, priv->stations[sta_id].sta.sta.addr); in iwl_sta_ucode_activate()
56 priv->stations[sta_id].used |= IWL_STA_UCODE_ACTIVE; in iwl_sta_ucode_activate()
58 sta_id, priv->stations[sta_id].sta.sta.addr); in iwl_sta_ucode_activate()
112 u8 sta_id __maybe_unused = sta->sta.sta_id; in iwl_send_add_sta()
117 sta_id, sta->sta.addr, flags & CMD_ASYNC ? "a" : ""); in iwl_send_add_sta()
135 ret = iwl_sta_ucode_activate(priv, sta_id); in iwl_send_add_sta()
216 u8 sta_id = iwl_sta_id(sta); in iwl_sta_update_ht() local
220 if (WARN_ON_ONCE(sta_id == IWL_INVALID_STATION)) in iwl_sta_update_ht()
226 priv->stations[sta_id].sta.station_flags &= ~mask; in iwl_sta_update_ht()
227 priv->stations[sta_id].sta.station_flags |= flags; in iwl_sta_update_ht()
234 cmd.sta.sta_id = sta_id; in iwl_sta_update_ht()
262 u8 sta_id = IWL_INVALID_STATION; in iwl_prep_station() local
265 sta_id = ctx->ap_sta_id; in iwl_prep_station()
267 sta_id = ctx->bcast_sta_id; in iwl_prep_station()
272 sta_id = i; in iwl_prep_station()
277 sta_id == IWL_INVALID_STATION) in iwl_prep_station()
278 sta_id = i; in iwl_prep_station()
285 if (unlikely(sta_id == IWL_INVALID_STATION)) in iwl_prep_station()
286 return sta_id; in iwl_prep_station()
293 if (priv->stations[sta_id].used & IWL_STA_UCODE_INPROGRESS) { in iwl_prep_station()
295 "added.\n", sta_id); in iwl_prep_station()
296 return sta_id; in iwl_prep_station()
299 if ((priv->stations[sta_id].used & IWL_STA_DRIVER_ACTIVE) && in iwl_prep_station()
300 (priv->stations[sta_id].used & IWL_STA_UCODE_ACTIVE) && in iwl_prep_station()
301 ether_addr_equal(priv->stations[sta_id].sta.sta.addr, addr)) { in iwl_prep_station()
303 "adding again.\n", sta_id, addr); in iwl_prep_station()
304 return sta_id; in iwl_prep_station()
307 station = &priv->stations[sta_id]; in iwl_prep_station()
310 sta_id, addr); in iwl_prep_station()
317 station->sta.sta.sta_id = sta_id; in iwl_prep_station()
333 iwl_set_ht_add_station(priv, sta_id, sta, ctx); in iwl_prep_station()
335 return sta_id; in iwl_prep_station()
349 u8 sta_id; in iwl_add_station_common() local
354 sta_id = iwl_prep_station(priv, ctx, addr, is_ap, sta); in iwl_add_station_common()
355 if (sta_id == IWL_INVALID_STATION) { in iwl_add_station_common()
367 if (priv->stations[sta_id].used & IWL_STA_UCODE_INPROGRESS) { in iwl_add_station_common()
369 "added.\n", sta_id); in iwl_add_station_common()
374 if ((priv->stations[sta_id].used & IWL_STA_DRIVER_ACTIVE) && in iwl_add_station_common()
375 (priv->stations[sta_id].used & IWL_STA_UCODE_ACTIVE)) { in iwl_add_station_common()
377 "adding again.\n", sta_id, addr); in iwl_add_station_common()
382 priv->stations[sta_id].used |= IWL_STA_UCODE_INPROGRESS; in iwl_add_station_common()
383 memcpy(&sta_cmd, &priv->stations[sta_id].sta, in iwl_add_station_common()
392 priv->stations[sta_id].sta.sta.addr); in iwl_add_station_common()
393 priv->stations[sta_id].used &= ~IWL_STA_DRIVER_ACTIVE; in iwl_add_station_common()
394 priv->stations[sta_id].used &= ~IWL_STA_UCODE_INPROGRESS; in iwl_add_station_common()
397 *sta_id_r = sta_id; in iwl_add_station_common()
404 static void iwl_sta_ucode_deactivate(struct iwl_priv *priv, u8 sta_id) in iwl_sta_ucode_deactivate() argument
409 if ((priv->stations[sta_id].used & in iwl_sta_ucode_deactivate()
412 IWL_ERR(priv, "removed non active STA %u\n", sta_id); in iwl_sta_ucode_deactivate()
414 priv->stations[sta_id].used &= ~IWL_STA_UCODE_ACTIVE; in iwl_sta_ucode_deactivate()
416 memset(&priv->stations[sta_id], 0, sizeof(struct iwl_station_entry)); in iwl_sta_ucode_deactivate()
417 IWL_DEBUG_ASSOC(priv, "Removed STA %u\n", sta_id); in iwl_sta_ucode_deactivate()
421 const u8 *addr, int sta_id, in iwl_send_remove_station() argument
453 iwl_sta_ucode_deactivate(priv, sta_id); in iwl_send_remove_station()
472 int iwl_remove_station(struct iwl_priv *priv, const u8 sta_id, in iwl_remove_station() argument
490 sta_id, addr); in iwl_remove_station()
492 if (WARN_ON(sta_id == IWL_INVALID_STATION)) in iwl_remove_station()
497 if (!(priv->stations[sta_id].used & IWL_STA_DRIVER_ACTIVE)) { in iwl_remove_station()
503 if (!(priv->stations[sta_id].used & IWL_STA_UCODE_ACTIVE)) { in iwl_remove_station()
509 if (priv->stations[sta_id].used & IWL_STA_LOCAL) { in iwl_remove_station()
510 kfree(priv->stations[sta_id].lq); in iwl_remove_station()
511 priv->stations[sta_id].lq = NULL; in iwl_remove_station()
515 memset(&priv->tid_data[sta_id][tid], 0, in iwl_remove_station()
516 sizeof(priv->tid_data[sta_id][tid])); in iwl_remove_station()
518 priv->stations[sta_id].used &= ~IWL_STA_DRIVER_ACTIVE; in iwl_remove_station()
527 return iwl_send_remove_station(priv, addr, sta_id, false); in iwl_remove_station()
533 void iwl_deactivate_station(struct iwl_priv *priv, const u8 sta_id, in iwl_deactivate_station() argument
545 IWL_DEBUG_ASSOC(priv, "Deactivating STA: %pM (%d)\n", addr, sta_id); in iwl_deactivate_station()
547 if (WARN_ON_ONCE(sta_id == IWL_INVALID_STATION)) in iwl_deactivate_station()
552 WARN_ON_ONCE(!(priv->stations[sta_id].used & IWL_STA_DRIVER_ACTIVE)); in iwl_deactivate_station()
555 memset(&priv->tid_data[sta_id][tid], 0, in iwl_deactivate_station()
556 sizeof(priv->tid_data[sta_id][tid])); in iwl_deactivate_station()
558 priv->stations[sta_id].used &= ~IWL_STA_DRIVER_ACTIVE; in iwl_deactivate_station()
559 priv->stations[sta_id].used &= ~IWL_STA_UCODE_INPROGRESS; in iwl_deactivate_station()
570 u8 sta_id, struct iwl_link_quality_cmd *link_cmd) in iwl_sta_fill_lq() argument
616 link_cmd->sta_id = sta_id; in iwl_sta_fill_lq()
775 IWL_DEBUG_RATE(priv, "lq station id 0x%x\n", lq->sta_id); in iwl_dump_lq_cmd()
846 if (WARN_ON(lq->sta_id == IWL_INVALID_STATION)) in iwl_send_lq_cmd()
851 if (!(priv->stations[lq->sta_id].used & IWL_STA_DRIVER_ACTIVE)) { in iwl_send_lq_cmd()
872 lq->sta_id); in iwl_send_lq_cmd()
874 priv->stations[lq->sta_id].used &= ~IWL_STA_UCODE_INPROGRESS; in iwl_send_lq_cmd()
883 u8 sta_id) in iwl_sta_alloc_lq() argument
893 iwl_sta_fill_lq(priv, ctx, sta_id, link_cmd); in iwl_sta_alloc_lq()
908 u8 sta_id; in iwlagn_add_bssid_station() local
914 ret = iwl_add_station_common(priv, ctx, addr, 0, NULL, &sta_id); in iwlagn_add_bssid_station()
921 *sta_id_r = sta_id; in iwlagn_add_bssid_station()
924 priv->stations[sta_id].used |= IWL_STA_LOCAL; in iwlagn_add_bssid_station()
928 link_cmd = iwl_sta_alloc_lq(priv, ctx, sta_id); in iwlagn_add_bssid_station()
941 priv->stations[sta_id].lq = link_cmd; in iwlagn_add_bssid_station()
1099 u8 sta_id, u32 tkip_iv32, u16 *tkip_p1k, in iwlagn_send_sta_key() argument
1107 memcpy(&sta_cmd, &priv->stations[sta_id].sta, sizeof(sta_cmd)); in iwlagn_send_sta_key()
1155 u8 sta_id = iwlagn_key_sta_id(priv, vif, sta); in iwl_update_tkip_key() local
1157 if (sta_id == IWL_INVALID_STATION) in iwl_update_tkip_key()
1166 iwlagn_send_sta_key(priv, keyconf, sta_id, in iwl_update_tkip_key()
1176 u8 sta_id = iwlagn_key_sta_id(priv, ctx->vif, sta); in iwl_remove_dynamic_key() local
1180 if (sta_id == IWL_INVALID_STATION) in iwl_remove_dynamic_key()
1184 memcpy(&sta_cmd, &priv->stations[sta_id].sta, sizeof(sta_cmd)); in iwl_remove_dynamic_key()
1185 if (!(priv->stations[sta_id].used & IWL_STA_UCODE_ACTIVE)) in iwl_remove_dynamic_key()
1186 sta_id = IWL_INVALID_STATION; in iwl_remove_dynamic_key()
1189 if (sta_id == IWL_INVALID_STATION) in iwl_remove_dynamic_key()
1197 keyconf->keyidx, sta_id); in iwl_remove_dynamic_key()
1226 u8 sta_id = iwlagn_key_sta_id(priv, ctx->vif, sta); in iwl_set_dynamic_key() local
1229 if (sta_id == IWL_INVALID_STATION) in iwl_set_dynamic_key()
1250 ret = iwlagn_send_sta_key(priv, keyconf, sta_id, in iwl_set_dynamic_key()
1256 ret = iwlagn_send_sta_key(priv, keyconf, sta_id, in iwl_set_dynamic_key()
1287 u8 sta_id; in iwlagn_alloc_bcast_station() local
1290 sta_id = iwl_prep_station(priv, ctx, iwl_bcast_addr, false, NULL); in iwlagn_alloc_bcast_station()
1291 if (sta_id == IWL_INVALID_STATION) { in iwlagn_alloc_bcast_station()
1298 priv->stations[sta_id].used |= IWL_STA_DRIVER_ACTIVE; in iwlagn_alloc_bcast_station()
1299 priv->stations[sta_id].used |= IWL_STA_BCAST; in iwlagn_alloc_bcast_station()
1302 link_cmd = iwl_sta_alloc_lq(priv, ctx, sta_id); in iwlagn_alloc_bcast_station()
1310 priv->stations[sta_id].lq = link_cmd; in iwlagn_alloc_bcast_station()
1326 u8 sta_id = ctx->bcast_sta_id; in iwl_update_bcast_station() local
1328 link_cmd = iwl_sta_alloc_lq(priv, ctx, sta_id); in iwl_update_bcast_station()
1335 if (priv->stations[sta_id].lq) in iwl_update_bcast_station()
1336 kfree(priv->stations[sta_id].lq); in iwl_update_bcast_station()
1339 priv->stations[sta_id].lq = link_cmd; in iwl_update_bcast_station()
1362 int iwl_sta_tx_modify_enable_tid(struct iwl_priv *priv, int sta_id, int tid) in iwl_sta_tx_modify_enable_tid() argument
1370 priv->stations[sta_id].sta.sta.modify_mask = STA_MODIFY_TID_DISABLE_TX; in iwl_sta_tx_modify_enable_tid()
1371 priv->stations[sta_id].sta.tid_disable_tx &= cpu_to_le16(~(1 << tid)); in iwl_sta_tx_modify_enable_tid()
1372 priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK; in iwl_sta_tx_modify_enable_tid()
1373 memcpy(&sta_cmd, &priv->stations[sta_id].sta, sizeof(struct iwl_addsta_cmd)); in iwl_sta_tx_modify_enable_tid()
1382 int sta_id; in iwl_sta_rx_agg_start() local
1387 sta_id = iwl_sta_id(sta); in iwl_sta_rx_agg_start()
1388 if (sta_id == IWL_INVALID_STATION) in iwl_sta_rx_agg_start()
1392 priv->stations[sta_id].sta.station_flags_msk = 0; in iwl_sta_rx_agg_start()
1393 priv->stations[sta_id].sta.sta.modify_mask = STA_MODIFY_ADDBA_TID_MSK; in iwl_sta_rx_agg_start()
1394 priv->stations[sta_id].sta.add_immediate_ba_tid = (u8)tid; in iwl_sta_rx_agg_start()
1395 priv->stations[sta_id].sta.add_immediate_ba_ssn = cpu_to_le16(ssn); in iwl_sta_rx_agg_start()
1396 priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK; in iwl_sta_rx_agg_start()
1397 memcpy(&sta_cmd, &priv->stations[sta_id].sta, sizeof(struct iwl_addsta_cmd)); in iwl_sta_rx_agg_start()
1406 int sta_id; in iwl_sta_rx_agg_stop() local
1411 sta_id = iwl_sta_id(sta); in iwl_sta_rx_agg_stop()
1412 if (sta_id == IWL_INVALID_STATION) { in iwl_sta_rx_agg_stop()
1418 priv->stations[sta_id].sta.station_flags_msk = 0; in iwl_sta_rx_agg_stop()
1419 priv->stations[sta_id].sta.sta.modify_mask = STA_MODIFY_DELBA_TID_MSK; in iwl_sta_rx_agg_stop()
1420 priv->stations[sta_id].sta.remove_immediate_ba_tid = (u8)tid; in iwl_sta_rx_agg_stop()
1421 priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK; in iwl_sta_rx_agg_stop()
1422 memcpy(&sta_cmd, &priv->stations[sta_id].sta, sizeof(struct iwl_addsta_cmd)); in iwl_sta_rx_agg_stop()
1430 void iwl_sta_modify_sleep_tx_count(struct iwl_priv *priv, int sta_id, int cnt) in iwl_sta_modify_sleep_tx_count() argument
1436 .sta.sta_id = sta_id, in iwl_sta_modify_sleep_tx_count()