Lines Matching defs:sta_id

17 static int iwl_sta_ucode_activate(struct iwl_priv *priv, u8 sta_id)
21 if (sta_id >= IWLAGN_STATION_COUNT) {
22 IWL_ERR(priv, "invalid sta_id %u\n", sta_id);
25 if (!(priv->stations[sta_id].used & IWL_STA_DRIVER_ACTIVE))
28 sta_id, priv->stations[sta_id].sta.sta.addr);
30 if (priv->stations[sta_id].used & IWL_STA_UCODE_ACTIVE) {
34 sta_id, priv->stations[sta_id].sta.sta.addr);
36 priv->stations[sta_id].used |= IWL_STA_UCODE_ACTIVE;
38 sta_id, priv->stations[sta_id].sta.sta.addr);
92 u8 sta_id __maybe_unused = sta->sta.sta_id;
97 sta_id, sta->sta.addr, flags & CMD_ASYNC ? "a" : "");
115 ret = iwl_sta_ucode_activate(priv, sta_id);
196 u8 sta_id = iwl_sta_id(sta);
200 if (WARN_ON_ONCE(sta_id == IWL_INVALID_STATION))
206 priv->stations[sta_id].sta.station_flags &= ~mask;
207 priv->stations[sta_id].sta.station_flags |= flags;
214 cmd.sta.sta_id = sta_id;
242 u8 sta_id = IWL_INVALID_STATION;
245 sta_id = ctx->ap_sta_id;
247 sta_id = ctx->bcast_sta_id;
252 sta_id = i;
257 sta_id == IWL_INVALID_STATION)
258 sta_id = i;
265 if (unlikely(sta_id == IWL_INVALID_STATION))
266 return sta_id;
273 if (priv->stations[sta_id].used & IWL_STA_UCODE_INPROGRESS) {
275 "added.\n", sta_id);
276 return sta_id;
279 if ((priv->stations[sta_id].used & IWL_STA_DRIVER_ACTIVE) &&
280 (priv->stations[sta_id].used & IWL_STA_UCODE_ACTIVE) &&
281 ether_addr_equal(priv->stations[sta_id].sta.sta.addr, addr)) {
283 "adding again.\n", sta_id, addr);
284 return sta_id;
287 station = &priv->stations[sta_id];
290 sta_id, addr);
297 station->sta.sta.sta_id = sta_id;
313 iwl_set_ht_add_station(priv, sta_id, sta, ctx);
315 return sta_id;
329 u8 sta_id;
334 sta_id = iwl_prep_station(priv, ctx, addr, is_ap, sta);
335 if (sta_id == IWL_INVALID_STATION) {
347 if (priv->stations[sta_id].used & IWL_STA_UCODE_INPROGRESS) {
349 "added.\n", sta_id);
354 if ((priv->stations[sta_id].used & IWL_STA_DRIVER_ACTIVE) &&
355 (priv->stations[sta_id].used & IWL_STA_UCODE_ACTIVE)) {
357 "adding again.\n", sta_id, addr);
362 priv->stations[sta_id].used |= IWL_STA_UCODE_INPROGRESS;
363 memcpy(&sta_cmd, &priv->stations[sta_id].sta,
372 priv->stations[sta_id].sta.sta.addr);
373 priv->stations[sta_id].used &= ~IWL_STA_DRIVER_ACTIVE;
374 priv->stations[sta_id].used &= ~IWL_STA_UCODE_INPROGRESS;
377 *sta_id_r = sta_id;
384 static void iwl_sta_ucode_deactivate(struct iwl_priv *priv, u8 sta_id)
389 if ((priv->stations[sta_id].used &
392 IWL_ERR(priv, "removed non active STA %u\n", sta_id);
394 priv->stations[sta_id].used &= ~IWL_STA_UCODE_ACTIVE;
396 memset(&priv->stations[sta_id], 0, sizeof(struct iwl_station_entry));
397 IWL_DEBUG_ASSOC(priv, "Removed STA %u\n", sta_id);
401 const u8 *addr, int sta_id,
433 iwl_sta_ucode_deactivate(priv, sta_id);
452 int iwl_remove_station(struct iwl_priv *priv, const u8 sta_id,
470 sta_id, addr);
472 if (WARN_ON(sta_id == IWL_INVALID_STATION))
477 if (!(priv->stations[sta_id].used & IWL_STA_DRIVER_ACTIVE)) {
483 if (!(priv->stations[sta_id].used & IWL_STA_UCODE_ACTIVE)) {
489 if (priv->stations[sta_id].used & IWL_STA_LOCAL) {
490 kfree(priv->stations[sta_id].lq);
491 priv->stations[sta_id].lq = NULL;
495 memset(&priv->tid_data[sta_id][tid], 0,
496 sizeof(priv->tid_data[sta_id][tid]));
498 priv->stations[sta_id].used &= ~IWL_STA_DRIVER_ACTIVE;
507 return iwl_send_remove_station(priv, addr, sta_id, false);
513 void iwl_deactivate_station(struct iwl_priv *priv, const u8 sta_id,
525 IWL_DEBUG_ASSOC(priv, "Deactivating STA: %pM (%d)\n", addr, sta_id);
527 if (WARN_ON_ONCE(sta_id == IWL_INVALID_STATION))
532 WARN_ON_ONCE(!(priv->stations[sta_id].used & IWL_STA_DRIVER_ACTIVE));
535 memset(&priv->tid_data[sta_id][tid], 0,
536 sizeof(priv->tid_data[sta_id][tid]));
538 priv->stations[sta_id].used &= ~IWL_STA_DRIVER_ACTIVE;
539 priv->stations[sta_id].used &= ~IWL_STA_UCODE_INPROGRESS;
550 u8 sta_id, struct iwl_link_quality_cmd *link_cmd)
596 link_cmd->sta_id = sta_id;
755 IWL_DEBUG_RATE(priv, "lq station id 0x%x\n", lq->sta_id);
826 if (WARN_ON(lq->sta_id == IWL_INVALID_STATION))
831 if (!(priv->stations[lq->sta_id].used & IWL_STA_DRIVER_ACTIVE)) {
852 lq->sta_id);
854 priv->stations[lq->sta_id].used &= ~IWL_STA_UCODE_INPROGRESS;
863 u8 sta_id)
873 iwl_sta_fill_lq(priv, ctx, sta_id, link_cmd);
888 u8 sta_id;
894 ret = iwl_add_station_common(priv, ctx, addr, 0, NULL, &sta_id);
901 *sta_id_r = sta_id;
904 priv->stations[sta_id].used |= IWL_STA_LOCAL;
908 link_cmd = iwl_sta_alloc_lq(priv, ctx, sta_id);
921 priv->stations[sta_id].lq = link_cmd;
1079 u8 sta_id, u32 tkip_iv32, u16 *tkip_p1k,
1088 memcpy(&sta_cmd, &priv->stations[sta_id].sta, sizeof(sta_cmd));
1138 u8 sta_id = iwlagn_key_sta_id(priv, vif, sta);
1140 if (sta_id == IWL_INVALID_STATION)
1149 iwlagn_send_sta_key(priv, keyconf, sta_id,
1159 u8 sta_id = iwlagn_key_sta_id(priv, ctx->vif, sta);
1163 if (sta_id == IWL_INVALID_STATION)
1167 memcpy(&sta_cmd, &priv->stations[sta_id].sta, sizeof(sta_cmd));
1168 if (!(priv->stations[sta_id].used & IWL_STA_UCODE_ACTIVE))
1169 sta_id = IWL_INVALID_STATION;
1172 if (sta_id == IWL_INVALID_STATION)
1180 keyconf->keyidx, sta_id);
1209 u8 sta_id = iwlagn_key_sta_id(priv, ctx->vif, sta);
1212 if (sta_id == IWL_INVALID_STATION)
1233 ret = iwlagn_send_sta_key(priv, keyconf, sta_id,
1239 ret = iwlagn_send_sta_key(priv, keyconf, sta_id,
1270 u8 sta_id;
1273 sta_id = iwl_prep_station(priv, ctx, iwl_bcast_addr, false, NULL);
1274 if (sta_id == IWL_INVALID_STATION) {
1281 priv->stations[sta_id].used |= IWL_STA_DRIVER_ACTIVE;
1282 priv->stations[sta_id].used |= IWL_STA_BCAST;
1285 link_cmd = iwl_sta_alloc_lq(priv, ctx, sta_id);
1293 priv->stations[sta_id].lq = link_cmd;
1309 u8 sta_id = ctx->bcast_sta_id;
1311 link_cmd = iwl_sta_alloc_lq(priv, ctx, sta_id);
1318 if (priv->stations[sta_id].lq)
1319 kfree(priv->stations[sta_id].lq);
1322 priv->stations[sta_id].lq = link_cmd;
1345 int iwl_sta_tx_modify_enable_tid(struct iwl_priv *priv, int sta_id, int tid)
1353 priv->stations[sta_id].sta.sta.modify_mask = STA_MODIFY_TID_DISABLE_TX;
1354 priv->stations[sta_id].sta.tid_disable_tx &= cpu_to_le16(~(1 << tid));
1355 priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK;
1356 memcpy(&sta_cmd, &priv->stations[sta_id].sta, sizeof(struct iwl_addsta_cmd));
1365 int sta_id;
1370 sta_id = iwl_sta_id(sta);
1371 if (sta_id == IWL_INVALID_STATION)
1375 priv->stations[sta_id].sta.station_flags_msk = 0;
1376 priv->stations[sta_id].sta.sta.modify_mask = STA_MODIFY_ADDBA_TID_MSK;
1377 priv->stations[sta_id].sta.add_immediate_ba_tid = (u8)tid;
1378 priv->stations[sta_id].sta.add_immediate_ba_ssn = cpu_to_le16(ssn);
1379 priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK;
1380 memcpy(&sta_cmd, &priv->stations[sta_id].sta, sizeof(struct iwl_addsta_cmd));
1389 int sta_id;
1394 sta_id = iwl_sta_id(sta);
1395 if (sta_id == IWL_INVALID_STATION) {
1401 priv->stations[sta_id].sta.station_flags_msk = 0;
1402 priv->stations[sta_id].sta.sta.modify_mask = STA_MODIFY_DELBA_TID_MSK;
1403 priv->stations[sta_id].sta.remove_immediate_ba_tid = (u8)tid;
1404 priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK;
1405 memcpy(&sta_cmd, &priv->stations[sta_id].sta, sizeof(struct iwl_addsta_cmd));
1413 void iwl_sta_modify_sleep_tx_count(struct iwl_priv *priv, int sta_id, int cnt)
1419 .sta.sta_id = sta_id,