Lines Matching +refs:param +refs:id +refs:attrs

3771 	if (!info->attrs[HWSIM_ATTR_ADDR_TRANSMITTER])  in hwsim_pmsr_report_nl()
3774 src = nla_data(info->attrs[HWSIM_ATTR_ADDR_TRANSMITTER]); in hwsim_pmsr_report_nl()
3785 reqattr = info->attrs[HWSIM_ATTR_PMSR_RESULT]; in hwsim_pmsr_report_nl()
3914 static int append_radio_msg(struct sk_buff *skb, int id, in append_radio_msg() argument
3915 struct hwsim_new_radio_params *param) in append_radio_msg() argument
3919 ret = nla_put_u32(skb, HWSIM_ATTR_RADIO_ID, id); in append_radio_msg()
3923 if (param->channels) { in append_radio_msg()
3924 ret = nla_put_u32(skb, HWSIM_ATTR_CHANNELS, param->channels); in append_radio_msg()
3929 if (param->reg_alpha2) { in append_radio_msg()
3931 param->reg_alpha2); in append_radio_msg()
3936 if (param->regd) { in append_radio_msg()
3940 if (hwsim_world_regdom_custom[i] != param->regd) in append_radio_msg()
3950 if (param->reg_strict) { in append_radio_msg()
3956 if (param->p2p_device) { in append_radio_msg()
3962 if (param->use_chanctx) { in append_radio_msg()
3968 if (param->hwname) { in append_radio_msg()
3970 strlen(param->hwname), param->hwname); in append_radio_msg()
3978 static void hwsim_mcast_new_radio(int id, struct genl_info *info, in hwsim_mcast_new_radio() argument
3979 struct hwsim_new_radio_params *param) in hwsim_mcast_new_radio() argument
3993 if (append_radio_msg(mcast_skb, id, param) < 0) in hwsim_mcast_new_radio()
4946 struct hwsim_new_radio_params *param) in mac80211_hwsim_new_radio() argument
4958 if (WARN_ON(param->channels > 1 && !param->use_chanctx)) in mac80211_hwsim_new_radio()
4965 if (param->mlo) in mac80211_hwsim_new_radio()
4967 else if (param->use_chanctx) in mac80211_hwsim_new_radio()
4969 hw = ieee80211_alloc_hw_nm(sizeof(*data), ops, param->hwname); in mac80211_hwsim_new_radio()
4977 param->hwname = wiphy_name(hw->wiphy); in mac80211_hwsim_new_radio()
5007 if (!param->perm_addr) { in mac80211_hwsim_new_radio()
5020 memcpy(data->addresses[0].addr, param->perm_addr, ETH_ALEN); in mac80211_hwsim_new_radio()
5022 memcpy(data->addresses[1].addr, param->perm_addr, ETH_ALEN); in mac80211_hwsim_new_radio()
5027 data->channels = param->channels; in mac80211_hwsim_new_radio()
5028 data->use_chanctx = param->use_chanctx; in mac80211_hwsim_new_radio()
5030 data->destroy_on_close = param->destroy_on_close; in mac80211_hwsim_new_radio()
5035 if (param->iftypes & BIT(NL80211_IFTYPE_ADHOC)) { in mac80211_hwsim_new_radio()
5041 if (param->iftypes & HWSIM_DEFAULT_IF_LIMIT) { in mac80211_hwsim_new_radio()
5049 HWSIM_DEFAULT_IF_LIMIT & param->iftypes; in mac80211_hwsim_new_radio()
5053 if (param->iftypes & BIT(NL80211_IFTYPE_P2P_DEVICE)) { in mac80211_hwsim_new_radio()
5101 if (param->ciphers) { in mac80211_hwsim_new_radio()
5102 memcpy(data->ciphers, param->ciphers, in mac80211_hwsim_new_radio()
5103 param->n_ciphers * sizeof(u32)); in mac80211_hwsim_new_radio()
5105 hw->wiphy->n_cipher_suites = param->n_ciphers; in mac80211_hwsim_new_radio()
5133 if (param->mlo) { in mac80211_hwsim_new_radio()
5168 hw->wiphy->interface_modes = param->iftypes; in mac80211_hwsim_new_radio()
5279 if (param->reg_strict) in mac80211_hwsim_new_radio()
5281 if (param->regd) { in mac80211_hwsim_new_radio()
5282 data->regd = param->regd; in mac80211_hwsim_new_radio()
5284 wiphy_apply_custom_regulatory(hw->wiphy, param->regd); in mac80211_hwsim_new_radio()
5289 if (param->no_vif) in mac80211_hwsim_new_radio()
5311 if (param->reg_alpha2) { in mac80211_hwsim_new_radio()
5312 data->alpha2[0] = param->reg_alpha2[0]; in mac80211_hwsim_new_radio()
5313 data->alpha2[1] = param->reg_alpha2[1]; in mac80211_hwsim_new_radio()
5314 regulatory_hint(hw->wiphy, param->reg_alpha2); in mac80211_hwsim_new_radio()
5328 if (param->pmsr_capa) { in mac80211_hwsim_new_radio()
5329 data->pmsr_capa = *param->pmsr_capa; in mac80211_hwsim_new_radio()
5340 info->attrs[HWSIM_ATTR_PERM_ADDR]); in mac80211_hwsim_new_radio()
5350 hwsim_mcast_new_radio(idx, info, param); in mac80211_hwsim_new_radio()
5367 static void hwsim_mcast_del_radio(int id, const char *hwname, in hwsim_mcast_del_radio() argument
5383 ret = nla_put_u32(skb, HWSIM_ATTR_RADIO_ID, id); in hwsim_mcast_del_radio()
5420 struct hwsim_new_radio_params param = { }; in mac80211_hwsim_get_radio() local
5432 param.reg_alpha2 = data->alpha2; in mac80211_hwsim_get_radio()
5434 param.reg_strict = !!(data->hw->wiphy->regulatory_flags & in mac80211_hwsim_get_radio()
5436 param.p2p_device = !!(data->hw->wiphy->interface_modes & in mac80211_hwsim_get_radio()
5438 param.use_chanctx = data->use_chanctx; in mac80211_hwsim_get_radio()
5439 param.regd = data->regd; in mac80211_hwsim_get_radio()
5440 param.channels = data->channels; in mac80211_hwsim_get_radio()
5441 param.hwname = wiphy_name(data->hw->wiphy); in mac80211_hwsim_get_radio()
5442 param.pmsr_capa = &data->pmsr_capa; in mac80211_hwsim_get_radio()
5444 res = append_radio_msg(skb, data->idx, &param); in mac80211_hwsim_get_radio()
5524 if (!info->attrs[HWSIM_ATTR_ADDR_TRANSMITTER] || in hwsim_tx_info_frame_received_nl()
5525 !info->attrs[HWSIM_ATTR_FLAGS] || in hwsim_tx_info_frame_received_nl()
5526 !info->attrs[HWSIM_ATTR_COOKIE] || in hwsim_tx_info_frame_received_nl()
5527 !info->attrs[HWSIM_ATTR_SIGNAL] || in hwsim_tx_info_frame_received_nl()
5528 !info->attrs[HWSIM_ATTR_TX_INFO]) in hwsim_tx_info_frame_received_nl()
5531 src = (void *)nla_data(info->attrs[HWSIM_ATTR_ADDR_TRANSMITTER]); in hwsim_tx_info_frame_received_nl()
5532 hwsim_flags = nla_get_u32(info->attrs[HWSIM_ATTR_FLAGS]); in hwsim_tx_info_frame_received_nl()
5533 ret_skb_cookie = nla_get_u64(info->attrs[HWSIM_ATTR_COOKIE]); in hwsim_tx_info_frame_received_nl()
5572 info->attrs[HWSIM_ATTR_TX_INFO]); in hwsim_tx_info_frame_received_nl()
5584 txi->status.ack_signal = nla_get_u32(info->attrs[HWSIM_ATTR_SIGNAL]); in hwsim_tx_info_frame_received_nl()
5618 if (!info->attrs[HWSIM_ATTR_ADDR_RECEIVER] || in hwsim_cloned_frame_received_nl()
5619 !info->attrs[HWSIM_ATTR_FRAME] || in hwsim_cloned_frame_received_nl()
5620 !info->attrs[HWSIM_ATTR_RX_RATE] || in hwsim_cloned_frame_received_nl()
5621 !info->attrs[HWSIM_ATTR_SIGNAL]) in hwsim_cloned_frame_received_nl()
5624 dst = (void *)nla_data(info->attrs[HWSIM_ATTR_ADDR_RECEIVER]); in hwsim_cloned_frame_received_nl()
5625 frame_data_len = nla_len(info->attrs[HWSIM_ATTR_FRAME]); in hwsim_cloned_frame_received_nl()
5626 frame_data = (void *)nla_data(info->attrs[HWSIM_ATTR_FRAME]); in hwsim_cloned_frame_received_nl()
5667 if (info->attrs[HWSIM_ATTR_FREQ]) { in hwsim_cloned_frame_received_nl()
5674 rx_status.freq = nla_get_u32(info->attrs[HWSIM_ATTR_FREQ]); in hwsim_cloned_frame_received_nl()
5700 rx_status.rate_idx = nla_get_u32(info->attrs[HWSIM_ATTR_RX_RATE]); in hwsim_cloned_frame_received_nl()
5703 rx_status.signal = nla_get_u32(info->attrs[HWSIM_ATTR_SIGNAL]); in hwsim_cloned_frame_received_nl()
5850 struct hwsim_new_radio_params param = { 0 }; in hwsim_new_radio_nl() local
5854 param.reg_strict = info->attrs[HWSIM_ATTR_REG_STRICT_REG]; in hwsim_new_radio_nl()
5855 param.p2p_device = info->attrs[HWSIM_ATTR_SUPPORT_P2P_DEVICE]; in hwsim_new_radio_nl()
5856 param.channels = channels; in hwsim_new_radio_nl()
5857 param.destroy_on_close = in hwsim_new_radio_nl()
5858 info->attrs[HWSIM_ATTR_DESTROY_RADIO_ON_CLOSE]; in hwsim_new_radio_nl()
5860 if (info->attrs[HWSIM_ATTR_CHANNELS]) in hwsim_new_radio_nl()
5861 param.channels = nla_get_u32(info->attrs[HWSIM_ATTR_CHANNELS]); in hwsim_new_radio_nl()
5863 if (param.channels < 1) { in hwsim_new_radio_nl()
5868 if (info->attrs[HWSIM_ATTR_NO_VIF]) in hwsim_new_radio_nl()
5869 param.no_vif = true; in hwsim_new_radio_nl()
5871 if (info->attrs[HWSIM_ATTR_USE_CHANCTX]) in hwsim_new_radio_nl()
5872 param.use_chanctx = true; in hwsim_new_radio_nl()
5874 param.use_chanctx = (param.channels > 1); in hwsim_new_radio_nl()
5876 if (info->attrs[HWSIM_ATTR_REG_HINT_ALPHA2]) in hwsim_new_radio_nl()
5877 param.reg_alpha2 = in hwsim_new_radio_nl()
5878 nla_data(info->attrs[HWSIM_ATTR_REG_HINT_ALPHA2]); in hwsim_new_radio_nl()
5880 if (info->attrs[HWSIM_ATTR_REG_CUSTOM_REG]) { in hwsim_new_radio_nl()
5881 u32 idx = nla_get_u32(info->attrs[HWSIM_ATTR_REG_CUSTOM_REG]); in hwsim_new_radio_nl()
5888 param.regd = hwsim_world_regdom_custom[idx]; in hwsim_new_radio_nl()
5891 if (info->attrs[HWSIM_ATTR_PERM_ADDR]) { in hwsim_new_radio_nl()
5893 nla_data(info->attrs[HWSIM_ATTR_PERM_ADDR]))) { in hwsim_new_radio_nl()
5896 info->attrs[HWSIM_ATTR_PERM_ADDR]); in hwsim_new_radio_nl()
5900 param.perm_addr = nla_data(info->attrs[HWSIM_ATTR_PERM_ADDR]); in hwsim_new_radio_nl()
5903 if (info->attrs[HWSIM_ATTR_IFTYPE_SUPPORT]) { in hwsim_new_radio_nl()
5904 param.iftypes = in hwsim_new_radio_nl()
5905 nla_get_u32(info->attrs[HWSIM_ATTR_IFTYPE_SUPPORT]); in hwsim_new_radio_nl()
5907 if (param.iftypes & ~HWSIM_IFTYPE_SUPPORT_MASK) { in hwsim_new_radio_nl()
5909 info->attrs[HWSIM_ATTR_IFTYPE_SUPPORT], in hwsim_new_radio_nl()
5914 param.iftypes = HWSIM_IFTYPE_SUPPORT_MASK; in hwsim_new_radio_nl()
5918 if (param.p2p_device || in hwsim_new_radio_nl()
5919 param.iftypes & BIT(NL80211_IFTYPE_P2P_DEVICE)) { in hwsim_new_radio_nl()
5920 param.iftypes |= BIT(NL80211_IFTYPE_P2P_DEVICE); in hwsim_new_radio_nl()
5921 param.p2p_device = true; in hwsim_new_radio_nl()
5924 if (info->attrs[HWSIM_ATTR_CIPHER_SUPPORT]) { in hwsim_new_radio_nl()
5925 u32 len = nla_len(info->attrs[HWSIM_ATTR_CIPHER_SUPPORT]); in hwsim_new_radio_nl()
5927 param.ciphers = in hwsim_new_radio_nl()
5928 nla_data(info->attrs[HWSIM_ATTR_CIPHER_SUPPORT]); in hwsim_new_radio_nl()
5932 info->attrs[HWSIM_ATTR_CIPHER_SUPPORT], in hwsim_new_radio_nl()
5937 param.n_ciphers = len / sizeof(u32); in hwsim_new_radio_nl()
5939 if (param.n_ciphers > ARRAY_SIZE(hwsim_ciphers)) { in hwsim_new_radio_nl()
5941 info->attrs[HWSIM_ATTR_CIPHER_SUPPORT], in hwsim_new_radio_nl()
5946 if (!hwsim_known_ciphers(param.ciphers, param.n_ciphers)) { in hwsim_new_radio_nl()
5948 info->attrs[HWSIM_ATTR_CIPHER_SUPPORT], in hwsim_new_radio_nl()
5954 param.mlo = info->attrs[HWSIM_ATTR_MLO_SUPPORT]; in hwsim_new_radio_nl()
5956 if (param.mlo) in hwsim_new_radio_nl()
5957 param.use_chanctx = true; in hwsim_new_radio_nl()
5959 if (info->attrs[HWSIM_ATTR_RADIO_NAME]) { in hwsim_new_radio_nl()
5960 hwname = kstrndup((char *)nla_data(info->attrs[HWSIM_ATTR_RADIO_NAME]), in hwsim_new_radio_nl()
5961 nla_len(info->attrs[HWSIM_ATTR_RADIO_NAME]), in hwsim_new_radio_nl()
5965 param.hwname = hwname; in hwsim_new_radio_nl()
5968 if (info->attrs[HWSIM_ATTR_PMSR_SUPPORT]) { in hwsim_new_radio_nl()
5976 param.pmsr_capa = pmsr_capa; in hwsim_new_radio_nl()
5978 ret = parse_pmsr_capa(info->attrs[HWSIM_ATTR_PMSR_SUPPORT], pmsr_capa, info); in hwsim_new_radio_nl()
5983 ret = mac80211_hwsim_new_radio(info, &param); in hwsim_new_radio_nl()
5987 kfree(param.pmsr_capa); in hwsim_new_radio_nl()
5997 if (info->attrs[HWSIM_ATTR_RADIO_ID]) { in hwsim_del_radio_nl()
5998 idx = nla_get_u32(info->attrs[HWSIM_ATTR_RADIO_ID]); in hwsim_del_radio_nl()
5999 } else if (info->attrs[HWSIM_ATTR_RADIO_NAME]) { in hwsim_del_radio_nl()
6000 hwname = kstrndup((char *)nla_data(info->attrs[HWSIM_ATTR_RADIO_NAME]), in hwsim_del_radio_nl()
6001 nla_len(info->attrs[HWSIM_ATTR_RADIO_NAME]), in hwsim_del_radio_nl()
6044 if (!info->attrs[HWSIM_ATTR_RADIO_ID]) in hwsim_get_radio_nl()
6046 idx = nla_get_u32(info->attrs[HWSIM_ATTR_RADIO_ID]); in hwsim_get_radio_nl()
6296 .id = &hwsim_net_id,
6342 info.attrs = tb; in hwsim_virtio_handle_cmd()
6578 struct hwsim_new_radio_params param = { 0 }; in init_mac80211_hwsim() local
6580 param.channels = channels; in init_mac80211_hwsim()
6585 param.reg_alpha2 = hwsim_alpha2s[i]; in init_mac80211_hwsim()
6589 param.reg_alpha2 = hwsim_alpha2s[0]; in init_mac80211_hwsim()
6592 param.reg_strict = true; in init_mac80211_hwsim()
6595 param.reg_alpha2 = hwsim_alpha2s[0]; in init_mac80211_hwsim()
6599 param.regd = &hwsim_world_regdom_custom_01; in init_mac80211_hwsim()
6602 param.regd = &hwsim_world_regdom_custom_01; in init_mac80211_hwsim()
6606 param.regd = &hwsim_world_regdom_custom_01; in init_mac80211_hwsim()
6608 param.regd = &hwsim_world_regdom_custom_02; in init_mac80211_hwsim()
6612 param.reg_strict = true; in init_mac80211_hwsim()
6613 param.reg_alpha2 = hwsim_alpha2s[0]; in init_mac80211_hwsim()
6618 param.reg_strict = true; in init_mac80211_hwsim()
6619 param.reg_alpha2 = hwsim_alpha2s[0]; in init_mac80211_hwsim()
6621 param.reg_alpha2 = hwsim_alpha2s[1]; in init_mac80211_hwsim()
6627 param.regd = &hwsim_world_regdom_custom_01; in init_mac80211_hwsim()
6630 param.regd = &hwsim_world_regdom_custom_02; in init_mac80211_hwsim()
6633 param.reg_alpha2 = hwsim_alpha2s[0]; in init_mac80211_hwsim()
6636 param.reg_alpha2 = hwsim_alpha2s[1]; in init_mac80211_hwsim()
6639 param.reg_strict = true; in init_mac80211_hwsim()
6640 param.reg_alpha2 = hwsim_alpha2s[2]; in init_mac80211_hwsim()
6648 param.p2p_device = support_p2p_device; in init_mac80211_hwsim()
6649 param.mlo = mlo; in init_mac80211_hwsim()
6650 param.use_chanctx = channels > 1 || mlo; in init_mac80211_hwsim()
6651 param.iftypes = HWSIM_IFTYPE_SUPPORT_MASK; in init_mac80211_hwsim()
6652 if (param.p2p_device) in init_mac80211_hwsim()
6653 param.iftypes |= BIT(NL80211_IFTYPE_P2P_DEVICE); in init_mac80211_hwsim()
6655 err = mac80211_hwsim_new_radio(NULL, &param); in init_mac80211_hwsim()