Lines Matching defs: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);
654 const struct ieee80211_sub_if_data *sdata, char *buf, int buflen)
656 struct ieee80211_local *local = sdata->local;
659 tsf = drv_get_tsf(local, (struct ieee80211_sub_if_data *)sdata);
665 struct ieee80211_sub_if_data *sdata, const char *buf, int buflen)
667 struct ieee80211_local *local = sdata->local;
674 drv_reset_tsf(local, sdata);
691 drv_offset_tsf(local, sdata, tsf_is_delta * tsf);
697 tsf = drv_get_tsf(local, sdata) +
699 drv_set_tsf(local, sdata, tsf);
705 ieee80211_recalc_dtim(sdata, drv_get_tsf(local, sdata));
710 static ssize_t ieee80211_if_fmt_valid_links(const struct ieee80211_sub_if_data *sdata,
713 return snprintf(buf, buflen, "0x%x\n", sdata->vif.valid_links);
717 static ssize_t ieee80211_if_fmt_active_links(const struct ieee80211_sub_if_data *sdata,
720 return snprintf(buf, buflen, "0x%x\n", sdata->vif.active_links);
723 static ssize_t ieee80211_if_parse_active_links(struct ieee80211_sub_if_data *sdata,
731 return ieee80211_set_active_links(&sdata->vif, active_links) ?: buflen;
802 debugfs_create_file(#name, mode, sdata->vif.debugfs_dir, \
803 sdata, &name##_ops)
806 debugfs_create_x##_bits(#_name, _mode, sdata->vif.debugfs_dir, \
807 &sdata->vif._name)
820 static void add_common_files(struct ieee80211_sub_if_data *sdata)
830 if (sdata->vif.type != NL80211_IFTYPE_P2P_DEVICE &&
831 sdata->vif.type != NL80211_IFTYPE_NAN)
835 static void add_sta_files(struct ieee80211_sub_if_data *sdata)
850 static void add_ap_files(struct ieee80211_sub_if_data *sdata)
860 static void add_vlan_files(struct ieee80211_sub_if_data *sdata)
863 debugfs_create_file("num_mcast_sta", 0400, sdata->vif.debugfs_dir,
864 sdata, &num_mcast_sta_vlan_ops);
867 static void add_ibss_files(struct ieee80211_sub_if_data *sdata)
874 static void add_mesh_files(struct ieee80211_sub_if_data *sdata)
880 static void add_mesh_stats(struct ieee80211_sub_if_data *sdata)
883 sdata->vif.debugfs_dir);
885 debugfs_create_file(#name, 0400, dir, sdata, &name##_ops)
895 static void add_mesh_config(struct ieee80211_sub_if_data *sdata)
898 sdata->vif.debugfs_dir);
901 debugfs_create_file(#name, 0600, dir, sdata, &name##_ops)
936 static void add_files(struct ieee80211_sub_if_data *sdata)
938 if (!sdata->vif.debugfs_dir)
944 if (sdata->vif.type != NL80211_IFTYPE_MONITOR)
945 add_common_files(sdata);
947 switch (sdata->vif.type) {
950 add_mesh_files(sdata);
951 add_mesh_stats(sdata);
952 add_mesh_config(sdata);
956 add_sta_files(sdata);
959 add_ibss_files(sdata);
962 add_ap_files(sdata);
965 add_vlan_files(sdata);
988 switch (link->sdata->vif.type) {
997 static void ieee80211_debugfs_add_netdev(struct ieee80211_sub_if_data *sdata,
1002 sprintf(buf, "netdev:%s", sdata->name);
1003 sdata->vif.debugfs_dir = debugfs_create_dir(buf,
1004 sdata->local->hw.wiphy->debugfsdir);
1006 sdata->deflink.debugfs_dir = sdata->vif.debugfs_dir;
1007 sdata->debugfs.subdir_stations = debugfs_create_dir("stations",
1008 sdata->vif.debugfs_dir);
1009 add_files(sdata);
1011 add_link_files(&sdata->deflink, sdata->vif.debugfs_dir);
1014 void ieee80211_debugfs_remove_netdev(struct ieee80211_sub_if_data *sdata)
1016 if (!sdata->vif.debugfs_dir)
1019 debugfs_remove_recursive(sdata->vif.debugfs_dir);
1020 sdata->vif.debugfs_dir = NULL;
1021 sdata->debugfs.subdir_stations = NULL;
1024 void ieee80211_debugfs_rename_netdev(struct ieee80211_sub_if_data *sdata)
1026 debugfs_change_name(sdata->vif.debugfs_dir, "netdev:%s", sdata->name);
1029 void ieee80211_debugfs_recreate_netdev(struct ieee80211_sub_if_data *sdata,
1032 ieee80211_debugfs_remove_netdev(sdata);
1033 ieee80211_debugfs_add_netdev(sdata, mld_vif);
1035 if (sdata->flags & IEEE80211_SDATA_IN_DRIVER) {
1036 drv_vif_add_debugfs(sdata->local, sdata);
1038 ieee80211_link_debugfs_drv_add(&sdata->deflink);
1046 if (WARN_ON(!link->sdata->vif.debugfs_dir || link->debugfs_dir))
1050 if (WARN_ON(!(link->sdata->local->hw.wiphy->flags & WIPHY_FLAG_SUPPORTS_MLO)))
1058 link->sdata->vif.debugfs_dir);
1066 if (!link->sdata->vif.debugfs_dir || !link->debugfs_dir) {
1071 if (link->debugfs_dir == link->sdata->vif.debugfs_dir) {
1072 WARN_ON(link != &link->sdata->deflink);
1083 if (link->sdata->vif.type == NL80211_IFTYPE_MONITOR ||
1087 drv_link_add_debugfs(link->sdata->local, link->sdata,
1096 if (WARN_ON(link->debugfs_dir == link->sdata->vif.debugfs_dir))