Lines Matching defs:link

30 	struct ieee80211_link_data *link;
44 link = sdata_dereference(sdata->link[link_id], sdata);
45 if (!link)
47 return link;
470 struct ieee80211_link_data *link =
480 if (IS_ERR(link))
481 return PTR_ERR(link);
568 err = ieee80211_key_link(key, link, sta);
584 struct ieee80211_link_data *link = &sdata->deflink;
588 link = rcu_dereference_check(sdata->link[link_id],
590 if (!link)
603 link_sta = rcu_dereference_check(sta->link[link_id],
629 key = rcu_dereference_check_key_mtx(local, link->gtk[key_idx]);
779 struct ieee80211_link_data *link =
782 if (IS_ERR(link))
783 return PTR_ERR(link);
785 ieee80211_set_default_key(link, key_idx, uni, multi);
795 struct ieee80211_link_data *link =
798 if (IS_ERR(link))
799 return PTR_ERR(link);
801 ieee80211_set_default_mgmt_key(link, key_idx);
811 struct ieee80211_link_data *link =
814 if (IS_ERR(link))
815 return PTR_ERR(link);
817 ieee80211_set_default_beacon_key(link, key_idx);
952 struct ieee80211_link_data *link)
959 old = sdata_dereference(link->u.ap.probe_resp, sdata);
975 rcu_assign_pointer(link->u.ap.probe_resp, new);
984 struct ieee80211_link_data *link,
997 old = sdata_dereference(link->u.ap.fils_discovery, sdata);
1003 rcu_assign_pointer(link->u.ap.fils_discovery, new);
1014 struct ieee80211_link_data *link,
1022 old = sdata_dereference(link->u.ap.unsol_bcast_probe_resp, sdata);
1028 rcu_assign_pointer(link->u.ap.unsol_bcast_probe_resp, new);
1115 struct ieee80211_link_data *link,
1127 struct ieee80211_bss_conf *link_conf = link->conf;
1129 old = sdata_dereference(link->u.ap.beacon, sdata);
1227 params->probe_resp_len, csa, cca, link);
1252 rcu_assign_pointer(link->u.ap.beacon, new);
1278 struct ieee80211_link_data *link;
1281 link = sdata_dereference(sdata->link[link_id], sdata);
1282 if (!link)
1285 link_conf = link->conf;
1287 old = sdata_dereference(link->u.ap.beacon, sdata);
1294 link->smps_mode = IEEE80211_SMPS_OFF;
1296 link->needed_rx_chains = sdata->local->rx_chains;
1391 err = ieee80211_link_use_channel(link, &params->chandef,
1394 ieee80211_link_copy_chanctx_to_vlans(link, false);
1461 err = ieee80211_assign_beacon(sdata, link, &params->beacon, NULL, NULL,
1469 link, link_conf);
1478 link, link_conf);
1486 old = sdata_dereference(link->u.ap.beacon, sdata);
1490 RCU_INIT_POINTER(link->u.ap.beacon, NULL);
1497 ieee80211_link_info_change_notify(sdata, link, changed);
1507 ieee80211_link_release_channel(link);
1517 struct ieee80211_link_data *link;
1525 link = sdata_dereference(sdata->link[params->link_id], sdata);
1526 if (!link)
1529 link_conf = link->conf;
1537 old = sdata_dereference(link->u.ap.beacon, sdata);
1541 err = ieee80211_assign_beacon(sdata, link, params, NULL, NULL,
1552 ieee80211_link_info_change_notify(sdata, link, changed);
1556 static void ieee80211_free_next_beacon(struct ieee80211_link_data *link)
1558 if (!link->u.ap.next_beacon)
1561 kfree(link->u.ap.next_beacon->mbssid_ies);
1562 kfree(link->u.ap.next_beacon->rnr_ies);
1563 kfree(link->u.ap.next_beacon);
1564 link->u.ap.next_beacon = NULL;
1578 struct ieee80211_link_data *link =
1579 sdata_dereference(sdata->link[link_id], sdata);
1580 struct ieee80211_bss_conf *link_conf = link->conf;
1584 old_beacon = sdata_dereference(link->u.ap.beacon, sdata);
1587 old_probe_resp = sdata_dereference(link->u.ap.probe_resp,
1589 old_fils_discovery = sdata_dereference(link->u.ap.fils_discovery,
1592 sdata_dereference(link->u.ap.unsol_bcast_probe_resp,
1599 if (link->csa_block_tx) {
1602 link->csa_block_tx = false;
1607 ieee80211_free_next_beacon(link);
1616 RCU_INIT_POINTER(link->u.ap.beacon, NULL);
1617 RCU_INIT_POINTER(link->u.ap.probe_resp, NULL);
1618 RCU_INIT_POINTER(link->u.ap.fils_discovery, NULL);
1619 RCU_INIT_POINTER(link->u.ap.unsol_bcast_probe_resp, NULL);
1644 ieee80211_link_info_change_notify(sdata, link,
1649 cancel_delayed_work_sync(&link->dfs_cac_timer_work);
1662 ieee80211_link_copy_chanctx_to_vlans(link, true);
1663 ieee80211_link_release_channel(link);
1802 struct ieee80211_link_data *link =
1803 sdata_dereference(sdata->link[link_id], sdata);
1805 rcu_dereference_protected(sta->link[link_id],
1809 * If there are no changes, then accept a link that exist,
1810 * unless it's a new link.
1820 if (!link || !link_sta)
1823 sband = ieee80211_get_link_sband(link);
1850 ieee80211_parse_bitrates(link->conf->chandef.width,
2064 * If we have a link ID, it can be a non-MLO station on an AP MLD,
2683 struct ieee80211_link_data *link;
2687 link = ieee80211_link_or_deflink(sdata, params->link_id, true);
2688 if (IS_ERR(link))
2689 return PTR_ERR(link);
2691 if (!sdata_dereference(link->u.ap.beacon, sdata))
2694 sband = ieee80211_get_link_sband(link);
2699 if (!ieee80211_parse_bitrates(link->conf->chandef.width,
2703 &link->conf->basic_rates))
2706 ieee80211_check_rate_mask(link);
2710 link->conf->use_cts_prot = params->use_cts_prot;
2714 link->conf->use_short_preamble = params->use_short_preamble;
2718 if (!link->conf->use_short_slot &&
2721 link->conf->use_short_slot = true;
2726 link->conf->use_short_slot = params->use_short_slot_time;
2739 link->conf->ht_operation_mode = (u16)params->ht_opmode;
2744 link->conf->p2p_noa_attr.oppps_ctwindow &=
2746 link->conf->p2p_noa_attr.oppps_ctwindow |=
2752 link->conf->p2p_noa_attr.oppps_ctwindow |=
2756 link->conf->p2p_noa_attr.oppps_ctwindow &=
2761 ieee80211_link_info_change_notify(sdata, link, changed);
2772 struct ieee80211_link_data *link =
2782 if (IS_ERR(link))
2783 return PTR_ERR(link);
2799 link->tx_conf[params->ac] = p;
2800 if (drv_conf_tx(local, link, params->ac, &p)) {
2807 ieee80211_link_info_change_notify(sdata, link,
3177 struct ieee80211_link_data *link,
3191 old_req = link->u.mgd.req_smps;
3192 link->u.mgd.req_smps = smps_mode;
3204 link->conf->chandef.width == NL80211_CHAN_WIDTH_20_NOHT)
3207 ap = link->u.mgd.bssid;
3231 link->u.mgd.req_smps = old_req;
3260 for (link_id = 0; link_id < ARRAY_SIZE(sdata->link); link_id++) {
3261 struct ieee80211_link_data *link;
3263 link = sdata_dereference(sdata->link[link_id], sdata);
3265 if (!link)
3267 __ieee80211_request_smps_mgd(sdata, link,
3268 link->u.mgd.req_smps);
4227 struct ieee80211_link_data *link;
4231 link = rcu_dereference(sdata->link[link_id]);
4232 if (!link) {
4237 chanctx_conf = rcu_dereference(link->conf->chanctx_conf);
4239 *chandef = link->conf->chandef;
4294 struct ieee80211_link_data *link;
4298 link = sdata_dereference(sdata->link[link_id], sdata);
4300 ret = ieee80211_link_change_bandwidth(link, chandef, &changed);
4302 ieee80211_link_info_change_notify(sdata, link, changed);
4778 struct ieee80211_link_data *link =
4781 struct ieee80211_sub_if_data *sdata = link->sdata;
4784 cfg80211_obss_color_collision_notify(sdata->dev, link->color_bitmap);
4802 struct ieee80211_link_data *link = &sdata->deflink;
4807 if (delayed_work_pending(&link->color_collision_detect_work))
4810 link->color_bitmap = color_bitmap;
4815 &link->color_collision_detect_work,
4932 /* ieee80211_sta_activate_link frees the link upon failure */