Lines Matching refs:sdata
27 struct ieee80211_sub_if_data *sdata;
38 return d->format(d->sdata, buf, bufsize);
45 ssize_t (*format)(const struct ieee80211_sub_if_data *sdata, char *, int))
47 struct ieee80211_sub_if_data *sdata = file->private_data;
50 .sdata = sdata,
54 return wiphy_locked_debugfs_read(sdata->local->hw.wiphy,
63 struct ieee80211_sub_if_data *sdata;
74 return d->write(d->sdata, buf, count);
81 ssize_t (*write)(struct ieee80211_sub_if_data *sdata, const char *, int))
83 struct ieee80211_sub_if_data *sdata = file->private_data;
86 .sdata = sdata,
90 return wiphy_locked_debugfs_write(sdata->local->hw.wiphy,
126 return wiphy_locked_debugfs_read(link->sdata->local->hw.wiphy,
146 return d->write(d->sdata, buf, count);
162 return wiphy_locked_debugfs_write(link->sdata->local->hw.wiphy,
317 const struct ieee80211_sub_if_data *sdata,
321 const u16 *mask = sdata->rc_rateidx_vht_mcs_mask[NL80211_BAND_2GHZ];
333 const struct ieee80211_sub_if_data *sdata,
337 const u16 *mask = sdata->rc_rateidx_vht_mcs_mask[NL80211_BAND_5GHZ];
355 ieee80211_if_fmt_hw_queues(const struct ieee80211_sub_if_data *sdata,
361 sdata->vif.hw_queue[IEEE80211_AC_VO],
362 sdata->vif.hw_queue[IEEE80211_AC_VI],
363 sdata->vif.hw_queue[IEEE80211_AC_BE],
364 sdata->vif.hw_queue[IEEE80211_AC_BK]);
366 if (sdata->vif.type == NL80211_IFTYPE_AP)
368 sdata->vif.cab_queue);
382 struct ieee80211_sub_if_data *sdata = link->sdata;
383 struct ieee80211_local *local = sdata->local;
388 if (sdata->vif.driver_flags & IEEE80211_VIF_EML_ACTIVE)
401 if (sdata->vif.type != NL80211_IFTYPE_STATION)
404 return __ieee80211_request_smps_mgd(link->sdata, link, smps_mode);
417 if (link->sdata->vif.type == NL80211_IFTYPE_STATION)
443 struct ieee80211_sub_if_data *sdata, const char *buf, int buflen)
445 struct ieee80211_local *local = sdata->local;
454 if (!ieee80211_sdata_running(sdata))
465 switch (sdata->vif.type) {
470 memcpy(hdr->addr2, sdata->vif.addr, ETH_ALEN);
471 memcpy(hdr->addr3, sdata->vif.addr, ETH_ALEN);
476 if (!sdata->u.mgd.associated) {
480 memcpy(hdr->addr1, sdata->deflink.u.mgd.bssid, ETH_ALEN);
481 memcpy(hdr->addr2, sdata->vif.addr, ETH_ALEN);
499 ieee80211_tx_skb(sdata, skb);
506 struct ieee80211_sub_if_data *sdata, const char *buf, int buflen)
508 if (!ieee80211_sdata_running(sdata) || !sdata->vif.cfg.assoc)
511 ieee80211_beacon_loss(&sdata->vif);
518 const struct ieee80211_sub_if_data *sdata, char *buf, int buflen)
520 const struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
526 struct ieee80211_sub_if_data *sdata, const char *buf, int buflen)
528 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
546 const struct ieee80211_sub_if_data *sdata, char *buf, int buflen)
548 const struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
554 struct ieee80211_sub_if_data *sdata, const char *buf, int buflen)
556 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
574 const struct ieee80211_sub_if_data *sdata, char *buf, int buflen)
576 const struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
579 tdls_wider_bw = ieee80211_hw_check(&sdata->local->hw, TDLS_WIDER_BW) &&
586 struct ieee80211_sub_if_data *sdata, const char *buf, int buflen)
588 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
608 const struct ieee80211_sub_if_data *sdata, char *buf, int buflen)
611 skb_queue_len(&sdata->u.ap.ps.bc_buf));
616 const struct ieee80211_sub_if_data *sdata, char *buf, int buflen)
618 struct ieee80211_local *local = sdata->local;
622 if (!sdata->vif.txq)
625 txqi = to_txq_info(sdata->vif.txq);
656 const struct ieee80211_sub_if_data *sdata, char *buf, int buflen)
658 struct ieee80211_local *local = sdata->local;
661 tsf = drv_get_tsf(local, (struct ieee80211_sub_if_data *)sdata);
667 struct ieee80211_sub_if_data *sdata, const char *buf, int buflen)
669 struct ieee80211_local *local = sdata->local;
676 drv_reset_tsf(local, sdata);
693 drv_offset_tsf(local, sdata, tsf_is_delta * tsf);
699 tsf = drv_get_tsf(local, sdata) +
701 drv_set_tsf(local, sdata, tsf);
707 ieee80211_recalc_dtim(sdata, drv_get_tsf(local, sdata));
712 static ssize_t ieee80211_if_fmt_valid_links(const struct ieee80211_sub_if_data *sdata,
715 return snprintf(buf, buflen, "0x%x\n", sdata->vif.valid_links);
719 static ssize_t ieee80211_if_fmt_active_links(const struct ieee80211_sub_if_data *sdata,
722 return snprintf(buf, buflen, "0x%x\n", sdata->vif.active_links);
725 static ssize_t ieee80211_if_parse_active_links(struct ieee80211_sub_if_data *sdata,
733 return ieee80211_set_active_links(&sdata->vif, active_links) ?: buflen;
804 debugfs_create_file(#name, mode, sdata->vif.debugfs_dir, \
805 sdata, &name##_ops)
808 debugfs_create_x##_bits(#_name, _mode, sdata->vif.debugfs_dir, \
809 &sdata->vif._name)
822 static void add_common_files(struct ieee80211_sub_if_data *sdata)
832 if (sdata->vif.type != NL80211_IFTYPE_P2P_DEVICE &&
833 sdata->vif.type != NL80211_IFTYPE_NAN)
837 static void add_sta_files(struct ieee80211_sub_if_data *sdata)
852 static void add_ap_files(struct ieee80211_sub_if_data *sdata)
862 static void add_vlan_files(struct ieee80211_sub_if_data *sdata)
865 debugfs_create_file("num_mcast_sta", 0400, sdata->vif.debugfs_dir,
866 sdata, &num_mcast_sta_vlan_ops);
869 static void add_ibss_files(struct ieee80211_sub_if_data *sdata)
876 static void add_mesh_files(struct ieee80211_sub_if_data *sdata)
882 static void add_mesh_stats(struct ieee80211_sub_if_data *sdata)
885 sdata->vif.debugfs_dir);
887 debugfs_create_file(#name, 0400, dir, sdata, &name##_ops)
897 static void add_mesh_config(struct ieee80211_sub_if_data *sdata)
900 sdata->vif.debugfs_dir);
903 debugfs_create_file(#name, 0600, dir, sdata, &name##_ops)
938 static void add_files(struct ieee80211_sub_if_data *sdata)
940 if (!sdata->vif.debugfs_dir)
946 if (sdata->vif.type != NL80211_IFTYPE_MONITOR)
947 add_common_files(sdata);
949 switch (sdata->vif.type) {
952 add_mesh_files(sdata);
953 add_mesh_stats(sdata);
954 add_mesh_config(sdata);
958 add_sta_files(sdata);
961 add_ibss_files(sdata);
964 add_ap_files(sdata);
967 add_vlan_files(sdata);
990 switch (link->sdata->vif.type) {
999 static void ieee80211_debugfs_add_netdev(struct ieee80211_sub_if_data *sdata,
1004 sprintf(buf, "netdev:%s", sdata->name);
1005 sdata->vif.debugfs_dir = debugfs_create_dir(buf,
1006 sdata->local->hw.wiphy->debugfsdir);
1008 sdata->deflink.debugfs_dir = sdata->vif.debugfs_dir;
1009 sdata->debugfs.subdir_stations = debugfs_create_dir("stations",
1010 sdata->vif.debugfs_dir);
1011 add_files(sdata);
1013 add_link_files(&sdata->deflink, sdata->vif.debugfs_dir);
1016 void ieee80211_debugfs_remove_netdev(struct ieee80211_sub_if_data *sdata)
1018 if (!sdata->vif.debugfs_dir)
1021 debugfs_remove_recursive(sdata->vif.debugfs_dir);
1022 sdata->vif.debugfs_dir = NULL;
1023 sdata->debugfs.subdir_stations = NULL;
1026 void ieee80211_debugfs_rename_netdev(struct ieee80211_sub_if_data *sdata)
1028 debugfs_change_name(sdata->vif.debugfs_dir, "netdev:%s", sdata->name);
1031 void ieee80211_debugfs_recreate_netdev(struct ieee80211_sub_if_data *sdata,
1034 ieee80211_debugfs_remove_netdev(sdata);
1035 ieee80211_debugfs_add_netdev(sdata, mld_vif);
1037 if (sdata->flags & IEEE80211_SDATA_IN_DRIVER) {
1038 drv_vif_add_debugfs(sdata->local, sdata);
1040 ieee80211_link_debugfs_drv_add(&sdata->deflink);
1048 if (WARN_ON(!link->sdata->vif.debugfs_dir || link->debugfs_dir))
1052 if (WARN_ON(!(link->sdata->local->hw.wiphy->flags & WIPHY_FLAG_SUPPORTS_MLO)))
1060 link->sdata->vif.debugfs_dir);
1068 if (!link->sdata->vif.debugfs_dir || !link->debugfs_dir) {
1073 if (link->debugfs_dir == link->sdata->vif.debugfs_dir) {
1074 WARN_ON(link != &link->sdata->deflink);
1085 if (link->sdata->vif.type == NL80211_IFTYPE_MONITOR ||
1089 drv_link_add_debugfs(link->sdata->local, link->sdata,
1098 if (WARN_ON(link->debugfs_dir == link->sdata->vif.debugfs_dir))