qcacld-3.0: replace raw cfg80211 vendor APIs with wrappers

Replace cfg80211_vendor_cmd_alloc_reply_skb()/
   cfg80211_vendor_cmd_reply()/
   cfg80211_vendor_event_alloc()/
   cfg80211_vendor_event()/
   kfree_skb()
with internal wrappers
   wlan_cfg80211_vendor_cmd_alloc_reply_skb()/
   wlan_cfg80211_vendor_cmd_reply()/
   wlan_cfg80211_vendor_event_alloc()/
   wlan_cfg80211_vendor_event()/
   wlan_cfg80211_vendor_free_skb().

Change-Id: Ic85e58b5add8d92337ae5f3b29b9fdd15419f570
CRs-Fixed: 3360189
Цей коміт міститься в:
Yu Wang
2022-12-01 17:00:50 +08:00
зафіксовано Madan Koyyalamudi
джерело 20b148d9b4
коміт 3911372c3b
32 змінених файлів з 626 додано та 609 видалено

Переглянути файл

@@ -123,10 +123,10 @@ hdd_post_get_apf_capabilities_rsp(struct hdd_context *hdd_ctx,
nl_buf_len +=
(sizeof(apf_get_offload->max_bytes_for_apf_inst) + NLA_HDRLEN) +
(sizeof(apf_get_offload->apf_version) + NLA_HDRLEN);
skb = cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy, nl_buf_len);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
nl_buf_len);
if (!skb) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
return -ENOMEM;
}
@@ -142,12 +142,12 @@ hdd_post_get_apf_capabilities_rsp(struct hdd_context *hdd_ctx,
goto nla_put_failure;
}
cfg80211_vendor_cmd_reply(skb);
wlan_cfg80211_vendor_cmd_reply(skb);
hdd_exit();
return 0;
nla_put_failure:
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}
@@ -557,10 +557,10 @@ static int hdd_apf_read_memory(struct hdd_adapter *adapter, struct nlattr **tb)
nl_buf_len += sizeof(uint32_t) + NLA_HDRLEN;
nl_buf_len += context->buf_len + NLA_HDRLEN;
skb = cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy, nl_buf_len);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
nl_buf_len);
if (!skb) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
ret = -ENOMEM;
goto fail;
}
@@ -568,12 +568,12 @@ static int hdd_apf_read_memory(struct hdd_adapter *adapter, struct nlattr **tb)
if (nla_put_u32(skb, APF_SUBCMD, QCA_WLAN_READ_PACKET_FILTER) ||
nla_put(skb, APF_PROGRAM, read_mem_params.length, context->buf)) {
hdd_err("put fail");
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
ret = -EINVAL;
goto fail;
}
cfg80211_vendor_cmd_reply(skb);
wlan_cfg80211_vendor_cmd_reply(skb);
hdd_debug("Reading APF work memory from offset 0x%X:",
read_mem_params.addr_offset);

Переглянути файл

@@ -131,6 +131,8 @@ static QDF_STATUS hdd_send_bcn_recv_info(hdd_handle_t hdd_handle,
uint32_t data_len;
int flags = cds_get_gfp_flags();
struct hdd_adapter *adapter;
enum qca_nl80211_vendor_subcmds_index index =
QCA_NL80211_VENDOR_SUBCMD_BEACON_REPORTING_INDEX;
if (wlan_hdd_validate_context(hdd_ctx))
return QDF_STATUS_E_FAILURE;
@@ -141,14 +143,12 @@ static QDF_STATUS hdd_send_bcn_recv_info(hdd_handle_t hdd_handle,
if (hdd_validate_adapter(adapter))
return QDF_STATUS_E_FAILURE;
vendor_event =
cfg80211_vendor_event_alloc(
hdd_ctx->wiphy, &(adapter->wdev),
data_len,
QCA_NL80211_VENDOR_SUBCMD_BEACON_REPORTING_INDEX,
flags);
vendor_event = wlan_cfg80211_vendor_event_alloc(hdd_ctx->wiphy,
&adapter->wdev,
data_len,
index, flags);
if (!vendor_event) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return QDF_STATUS_E_FAILURE;
}
@@ -171,11 +171,11 @@ static QDF_STATUS hdd_send_bcn_recv_info(hdd_handle_t hdd_handle,
wlan_cfg80211_nla_put_u64(vendor_event, BOOTTIME,
beacon_report->boot_time)) {
hdd_err("QCA_WLAN_VENDOR_ATTR put fail");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return QDF_STATUS_E_FAILURE;
}
cfg80211_vendor_event(vendor_event, flags);
wlan_cfg80211_vendor_event(vendor_event, flags);
return QDF_STATUS_SUCCESS;
}
@@ -453,13 +453,13 @@ void hdd_beacon_recv_pause_indication(hdd_handle_t hdd_handle,
flags = cds_get_gfp_flags();
vendor_event =
cfg80211_vendor_event_alloc(
wlan_cfg80211_vendor_event_alloc(
hdd_ctx->wiphy, &(adapter->wdev),
data_len,
QCA_NL80211_VENDOR_SUBCMD_BEACON_REPORTING_INDEX,
flags);
if (!vendor_event) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return;
}
@@ -509,7 +509,7 @@ void hdd_beacon_recv_pause_indication(hdd_handle_t hdd_handle,
QCA_WLAN_VENDOR_ATTR_BEACON_REPORTING_PAUSE_REASON,
abort_reason)) {
hdd_err("QCA_WLAN_VENDOR_ATTR put fail");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return;
}
@@ -527,11 +527,11 @@ void hdd_beacon_recv_pause_indication(hdd_handle_t hdd_handle,
if (nla_put_flag(vendor_event,
QCA_WLAN_VENDOR_ATTR_BEACON_REPORTING_AUTO_RESUMES)) {
hdd_err("QCA_WLAN_VENDOR_ATTR put fail");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return;
}
cfg80211_vendor_event(vendor_event, flags);
wlan_cfg80211_vendor_event(vendor_event, flags);
}
int wlan_hdd_cfg80211_bcn_rcv_op(struct wiphy *wiphy,

Переглянути файл

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -62,7 +63,7 @@ static int wlan_hdd_fill_btm_resp(struct sk_buff *reply_skb,
attr = nla_nest_start(reply_skb, index);
if (!attr) {
hdd_err("nla_nest_start failed");
kfree_skb(reply_skb);
wlan_cfg80211_vendor_free_skb(reply_skb);
return -EINVAL;
}
@@ -73,7 +74,7 @@ static int wlan_hdd_fill_btm_resp(struct sk_buff *reply_skb,
QCA_WLAN_VENDOR_ATTR_BTM_CANDIDATE_INFO_STATUS,
info->status)) {
hdd_err("nla_put failed");
kfree_skb(reply_skb);
wlan_cfg80211_vendor_free_skb(reply_skb);
return -EINVAL;
}
@@ -120,7 +121,7 @@ __wlan_hdd_cfg80211_fetch_bss_transition_status(struct wiphy *wiphy,
struct nlattr *tb_msg[QCA_WLAN_VENDOR_ATTR_BTM_CANDIDATE_INFO_MAX + 1];
uint8_t transition_reason;
struct nlattr *attr;
struct sk_buff *reply_skb;
struct sk_buff *skb;
int rem, j;
int ret;
bool is_bt_in_progress;
@@ -211,19 +212,21 @@ __wlan_hdd_cfg80211_fetch_bss_transition_status(struct wiphy *wiphy,
return -EINVAL;
/* Prepare the reply and send it to userspace */
reply_skb = cfg80211_vendor_cmd_alloc_reply_skb(wiphy,
((QDF_MAC_ADDR_SIZE + sizeof(uint32_t)) *
nof_candidates) + NLMSG_HDRLEN);
if (!reply_skb) {
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(wiphy,
(QDF_MAC_ADDR_SIZE +
sizeof(uint32_t)) *
nof_candidates +
NLMSG_HDRLEN);
if (!skb) {
hdd_err("reply buffer alloc failed");
return -ENOMEM;
}
attr = nla_nest_start(reply_skb,
attr = nla_nest_start(skb,
QCA_WLAN_VENDOR_ATTR_BTM_CANDIDATE_INFO);
if (!attr) {
hdd_err("nla_nest_start failed");
kfree_skb(reply_skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}
@@ -234,7 +237,7 @@ __wlan_hdd_cfg80211_fetch_bss_transition_status(struct wiphy *wiphy,
for (i = 0, j = 0; i < nof_candidates; i++) {
/* copy accepted candidate list */
if (candidate_info[i].status == QCA_STATUS_ACCEPT) {
if (wlan_hdd_fill_btm_resp(reply_skb,
if (wlan_hdd_fill_btm_resp(skb,
&candidate_info[i], j))
return -EINVAL;
j++;
@@ -243,17 +246,17 @@ __wlan_hdd_cfg80211_fetch_bss_transition_status(struct wiphy *wiphy,
for (i = 0; i < nof_candidates; i++) {
/* copy rejected candidate list */
if (candidate_info[i].status != QCA_STATUS_ACCEPT) {
if (wlan_hdd_fill_btm_resp(reply_skb,
if (wlan_hdd_fill_btm_resp(skb,
&candidate_info[i], j))
return -EINVAL;
j++;
}
}
nla_nest_end(reply_skb, attr);
nla_nest_end(skb, attr);
hdd_exit();
return cfg80211_vendor_cmd_reply(reply_skb);
return wlan_cfg80211_vendor_cmd_reply(skb);
}
int wlan_hdd_cfg80211_fetch_bss_transition_status(struct wiphy *wiphy,

Переглянути файл

@@ -994,10 +994,11 @@ static int __wlan_hdd_cfg80211_get_tdls_capabilities(struct wiphy *wiphy,
if (status)
return status;
skb = cfg80211_vendor_cmd_alloc_reply_skb(wiphy, (2 * sizeof(u32)) +
NLMSG_HDRLEN);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(wiphy,
(2 * sizeof(u32)) +
NLMSG_HDRLEN);
if (!skb) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
goto fail;
}
@@ -1033,10 +1034,9 @@ static int __wlan_hdd_cfg80211_get_tdls_capabilities(struct wiphy *wiphy,
goto fail;
}
}
return cfg80211_vendor_cmd_reply(skb);
return wlan_cfg80211_vendor_cmd_reply(skb);
fail:
if (skb)
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}
@@ -1156,7 +1156,9 @@ int wlan_hdd_merge_avoid_freqs(struct ch_avoid_ind_type *destFreqList,
int wlan_hdd_send_avoid_freq_event(struct hdd_context *hdd_ctx,
struct ch_avoid_ind_type *avoid_freq_list)
{
struct sk_buff *vendor_event;
struct sk_buff *skb;
enum qca_nl80211_vendor_subcmds_index index =
QCA_NL80211_VENDOR_SUBCMD_AVOID_FREQUENCY_INDEX;
hdd_enter();
@@ -1170,20 +1172,18 @@ int wlan_hdd_send_avoid_freq_event(struct hdd_context *hdd_ctx,
return -EINVAL;
}
vendor_event = cfg80211_vendor_event_alloc(hdd_ctx->wiphy,
NULL, sizeof(struct ch_avoid_ind_type),
QCA_NL80211_VENDOR_SUBCMD_AVOID_FREQUENCY_INDEX,
GFP_KERNEL);
if (!vendor_event) {
hdd_err("cfg80211_vendor_event_alloc failed");
skb = wlan_cfg80211_vendor_event_alloc(hdd_ctx->wiphy, NULL,
sizeof(struct ch_avoid_ind_type),
index, GFP_KERNEL);
if (!skb) {
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return -EINVAL;
}
memcpy(skb_put(vendor_event, sizeof(struct ch_avoid_ind_type)),
memcpy(skb_put(skb, sizeof(struct ch_avoid_ind_type)),
(void *)avoid_freq_list, sizeof(struct ch_avoid_ind_type));
cfg80211_vendor_event(vendor_event, GFP_KERNEL);
wlan_cfg80211_vendor_event(skb, GFP_KERNEL);
hdd_exit();
return 0;
@@ -1317,13 +1317,14 @@ int wlan_hdd_send_hang_reason_event(struct hdd_context *hdd_ctx,
if (sta_adapter)
wdev = &(sta_adapter->wdev);
vendor_event = cfg80211_vendor_event_alloc(hdd_ctx->wiphy,
wdev,
sizeof(uint32_t) + data_len,
HANG_REASON_INDEX,
GFP_KERNEL);
vendor_event = wlan_cfg80211_vendor_event_alloc(hdd_ctx->wiphy,
wdev,
sizeof(uint32_t) +
data_len,
HANG_REASON_INDEX,
GFP_KERNEL);
if (!vendor_event) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return -ENOMEM;
}
@@ -1334,11 +1335,11 @@ int wlan_hdd_send_hang_reason_event(struct hdd_context *hdd_ctx,
nla_put(vendor_event, QCA_WLAN_VENDOR_ATTR_HANG_REASON_DATA,
data_len, data)) {
hdd_err("QCA_WLAN_VENDOR_ATTR_HANG_REASON put fail");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return -EINVAL;
}
cfg80211_vendor_event(vendor_event, GFP_KERNEL);
wlan_cfg80211_vendor_event(vendor_event, GFP_KERNEL);
hdd_exit();
return 0;
@@ -1899,20 +1900,20 @@ static int __is_driver_dfs_capable(struct wiphy *wiphy,
dfs_capability = !!(wiphy->flags & WIPHY_FLAG_DFS_OFFLOAD);
#endif
temp_skbuff = cfg80211_vendor_cmd_alloc_reply_skb(wiphy, sizeof(u32) +
NLMSG_HDRLEN);
temp_skbuff = wlan_cfg80211_vendor_cmd_alloc_reply_skb(wiphy,
sizeof(u32) +
NLMSG_HDRLEN);
if (temp_skbuff) {
ret_val = nla_put_u32(temp_skbuff, QCA_WLAN_VENDOR_ATTR_DFS,
dfs_capability);
if (ret_val) {
hdd_err("QCA_WLAN_VENDOR_ATTR_DFS put fail");
kfree_skb(temp_skbuff);
wlan_cfg80211_vendor_free_skb(temp_skbuff);
return ret_val;
}
return cfg80211_vendor_cmd_reply(temp_skbuff);
return wlan_cfg80211_vendor_cmd_reply(temp_skbuff);
}
hdd_err("dfs capability: buffer alloc fail");
@@ -2836,10 +2837,10 @@ int hdd_cfg80211_update_acs_config(struct hdd_adapter *adapter,
len = hdd_get_external_acs_event_len(channel_count);
id = QCA_NL80211_VENDOR_SUBCMD_UPDATE_EXTERNAL_ACS_CONFIG;
skb = cfg80211_vendor_event_alloc(hdd_ctx->wiphy, &adapter->wdev,
len, id, GFP_KERNEL);
skb = wlan_cfg80211_vendor_event_alloc(hdd_ctx->wiphy, &adapter->wdev,
len, id, GFP_KERNEL);
if (!skb) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
status = -ENOMEM;
goto fail;
}
@@ -2919,7 +2920,7 @@ int hdd_cfg80211_update_acs_config(struct hdd_adapter *adapter,
if (status != 0)
goto fail;
cfg80211_vendor_event(skb, GFP_KERNEL);
wlan_cfg80211_vendor_event(skb, GFP_KERNEL);
qdf_mem_free(freq_list);
qdf_mem_free(sap_config->channel_info);
@@ -2928,8 +2929,7 @@ fail:
qdf_mem_free(freq_list);
if (sap_config->channel_info)
qdf_mem_free(sap_config->channel_info);
if (skb)
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return status;
}
@@ -3882,10 +3882,11 @@ static int __wlan_hdd_cfg80211_do_acs(struct wiphy *wiphy,
out:
if (ret == 0) {
temp_skbuff = cfg80211_vendor_cmd_alloc_reply_skb(wiphy,
NLMSG_HDRLEN);
temp_skbuff =
wlan_cfg80211_vendor_cmd_alloc_reply_skb(wiphy,
NLMSG_HDRLEN);
if (temp_skbuff)
return cfg80211_vendor_cmd_reply(temp_skbuff);
return wlan_cfg80211_vendor_cmd_reply(temp_skbuff);
}
qdf_atomic_set(&adapter->session.ap.acs_in_progress, 0);
@@ -4075,19 +4076,19 @@ void wlan_hdd_cfg80211_acs_ch_select_evt(struct hdd_adapter *adapter)
qdf_atomic_set(&adapter->session.ap.acs_in_progress, 0);
qdf_event_set(&adapter->acs_complete_event);
vendor_event = cfg80211_vendor_event_alloc(hdd_ctx->wiphy,
&adapter->wdev, len, id,
GFP_KERNEL);
vendor_event = wlan_cfg80211_vendor_event_alloc(hdd_ctx->wiphy,
&adapter->wdev, len, id,
GFP_KERNEL);
if (!vendor_event) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return;
}
ret_val = hdd_fill_acs_chan_freq(hdd_ctx, sap_cfg, vendor_event);
if (ret_val) {
hdd_err("failed to put frequencies");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return;
}
@@ -4102,7 +4103,7 @@ void wlan_hdd_cfg80211_acs_ch_select_evt(struct hdd_adapter *adapter)
pri_channel);
if (ret_val) {
hdd_err("QCA_WLAN_VENDOR_ATTR_ACS_PRIMARY_CHANNEL put fail");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return;
}
@@ -4111,7 +4112,7 @@ void wlan_hdd_cfg80211_acs_ch_select_evt(struct hdd_adapter *adapter)
ht_sec_channel);
if (ret_val) {
hdd_err("QCA_WLAN_VENDOR_ATTR_ACS_SECONDARY_CHANNEL put fail");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return;
}
vht_seg0_center_ch = wlan_reg_freq_to_chan(
@@ -4122,7 +4123,7 @@ void wlan_hdd_cfg80211_acs_ch_select_evt(struct hdd_adapter *adapter)
vht_seg0_center_ch);
if (ret_val) {
hdd_err("QCA_WLAN_VENDOR_ATTR_ACS_VHT_SEG0_CENTER_CHANNEL put fail");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return;
}
vht_seg1_center_ch = wlan_reg_freq_to_chan(
@@ -4133,7 +4134,7 @@ void wlan_hdd_cfg80211_acs_ch_select_evt(struct hdd_adapter *adapter)
vht_seg1_center_ch);
if (ret_val) {
hdd_err("QCA_WLAN_VENDOR_ATTR_ACS_VHT_SEG1_CENTER_CHANNEL put fail");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return;
}
@@ -4153,7 +4154,7 @@ void wlan_hdd_cfg80211_acs_ch_select_evt(struct hdd_adapter *adapter)
ch_width);
if (ret_val) {
hdd_err("QCA_WLAN_VENDOR_ATTR_ACS_CHWIDTH put fail");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return;
}
if (WLAN_REG_IS_24GHZ_CH_FREQ(sap_cfg->acs_cfg.pri_ch_freq))
@@ -4167,7 +4168,7 @@ void wlan_hdd_cfg80211_acs_ch_select_evt(struct hdd_adapter *adapter)
if (ret_val) {
hdd_err("QCA_WLAN_VENDOR_ATTR_ACS_HW_MODE put fail");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return;
}
@@ -4178,7 +4179,7 @@ void wlan_hdd_cfg80211_acs_ch_select_evt(struct hdd_adapter *adapter)
puncture_bitmap);
if (ret_val) {
hdd_err("QCA_WLAN_VENDOR_ATTR_ACS_PUNCTURE_BITMAP put fail");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return;
}
}
@@ -4191,7 +4192,7 @@ void wlan_hdd_cfg80211_acs_ch_select_evt(struct hdd_adapter *adapter)
sap_acs_is_puncture_applicable(&sap_cfg->acs_cfg),
puncture_bitmap);
cfg80211_vendor_event(vendor_event, GFP_KERNEL);
wlan_cfg80211_vendor_event(vendor_event, GFP_KERNEL);
}
/**
@@ -4327,10 +4328,10 @@ __wlan_hdd_cfg80211_get_supported_features(struct wiphy *wiphy,
if (hdd_dynamic_mac_addr_supported(hdd_ctx))
fset |= WIFI_FEATURE_DYNAMIC_SET_MAC;
skb = cfg80211_vendor_cmd_alloc_reply_skb(wiphy, sizeof(fset) +
NLMSG_HDRLEN);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(wiphy, sizeof(fset) +
NLMSG_HDRLEN);
if (!skb) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
return -EINVAL;
}
hdd_debug("Supported Features : 0x%x", fset);
@@ -4338,10 +4339,10 @@ __wlan_hdd_cfg80211_get_supported_features(struct wiphy *wiphy,
hdd_err("nla put fail");
goto nla_put_failure;
}
ret = cfg80211_vendor_cmd_reply(skb);
ret = wlan_cfg80211_vendor_cmd_reply(skb);
return ret;
nla_put_failure:
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}
@@ -4654,11 +4655,12 @@ __wlan_hdd_cfg80211_get_features(struct wiphy *wiphy,
wlan_hdd_set_ndi_feature(feature_flags);
wlan_wifi_pos_cfg80211_set_features(hdd_ctx->psoc, feature_flags);
skb = cfg80211_vendor_cmd_alloc_reply_skb(wiphy, sizeof(feature_flags) +
NLMSG_HDRLEN);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(wiphy,
sizeof(feature_flags) +
NLMSG_HDRLEN);
if (!skb) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
return -ENOMEM;
}
@@ -4700,10 +4702,10 @@ __wlan_hdd_cfg80211_get_features(struct wiphy *wiphy,
MAX_CONCURRENT_CHAN_ON_5G))
goto nla_put_failure;
return cfg80211_vendor_cmd_reply(skb);
return wlan_cfg80211_vendor_cmd_reply(skb);
nla_put_failure:
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}
@@ -6244,9 +6246,9 @@ hdd_send_roam_control_config(struct hdd_context *hdd_ctx,
}
skb_len += NLMSG_HDRLEN;
skb = cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy, skb_len);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy, skb_len);
if (!skb) {
hdd_info("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_info("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
return -ENOMEM;
}
@@ -6254,11 +6256,11 @@ hdd_send_roam_control_config(struct hdd_context *hdd_ctx,
if (status)
goto fail;
return cfg80211_vendor_cmd_reply(skb);
return wlan_cfg80211_vendor_cmd_reply(skb);
fail:
hdd_err("nla put fail");
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return status;
}
@@ -6779,14 +6781,13 @@ void hdd_chip_pwr_save_fail_detected_cb(hdd_handle_t hdd_handle,
return;
}
skb = cfg80211_vendor_event_alloc(hdd_ctx->wiphy,
NULL, NLMSG_HDRLEN +
sizeof(data->failure_reason_code) +
NLMSG_HDRLEN, PWR_SAVE_FAIL_CMD_INDEX,
flags);
skb = wlan_cfg80211_vendor_event_alloc(hdd_ctx->wiphy, NULL,
NLMSG_HDRLEN +
sizeof(uint32_t) +
NLMSG_HDRLEN,
PWR_SAVE_FAIL_CMD_INDEX, flags);
if (!skb) {
hdd_info("cfg80211_vendor_event_alloc failed");
hdd_info("wlan_cfg80211_vendor_event_alloc failed");
return;
}
@@ -6797,12 +6798,12 @@ void hdd_chip_pwr_save_fail_detected_cb(hdd_handle_t hdd_handle,
data->failure_reason_code))
goto fail;
cfg80211_vendor_event(skb, flags);
wlan_cfg80211_vendor_event(skb, flags);
hdd_exit();
return;
fail:
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
}
#undef PWR_SAVE_FAIL_CMD_INDEX
@@ -7397,7 +7398,7 @@ __wlan_hdd_cfg80211_get_wifi_info(struct wiphy *wiphy,
skb_len += NLMSG_HDRLEN;
reply_skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(wiphy, skb_len);
if (!reply_skb) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
qdf_mem_free(firmware_version);
return -ENOMEM;
}
@@ -7515,21 +7516,23 @@ __wlan_hdd_cfg80211_get_logger_supp_feature(struct wiphy *wiphy,
hdd_info("Ring buffer disable");
}
reply_skb = cfg80211_vendor_cmd_alloc_reply_skb(wiphy,
sizeof(uint32_t) + NLA_HDRLEN + NLMSG_HDRLEN);
reply_skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(wiphy,
sizeof(uint32_t) +
NLA_HDRLEN +
NLMSG_HDRLEN);
if (!reply_skb) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
return -ENOMEM;
}
if (nla_put_u32(reply_skb, QCA_WLAN_VENDOR_ATTR_LOGGER_SUPPORTED,
features)) {
hdd_err("nla put fail");
kfree_skb(reply_skb);
wlan_cfg80211_vendor_free_skb(reply_skb);
return -EINVAL;
}
return cfg80211_vendor_cmd_reply(reply_skb);
return wlan_cfg80211_vendor_cmd_reply(reply_skb);
}
/**
@@ -7646,13 +7649,13 @@ void hdd_cfr_data_send_nl_event(uint8_t vdev_id, uint32_t pid,
hdd_debug("vdev id %d pid %d data len %d", vdev_id, pid, data_len);
len = nla_total_size(data_len) + NLMSG_HDRLEN;
vendor_event = cfg80211_vendor_event_alloc(
vendor_event = wlan_cfg80211_vendor_event_alloc(
hdd_ctx->wiphy, &adapter->wdev, len,
QCA_NL80211_VENDOR_SUBCMD_PEER_CFR_CAPTURE_CFG_INDEX,
GFP_KERNEL);
if (!vendor_event) {
hdd_err("cfg80211_vendor_event_alloc failed vdev id %d, data len %d",
hdd_err("wlan_cfg80211_vendor_event_alloc failed vdev id %d, data len %d",
vdev_id, data_len);
return;
}
@@ -7662,7 +7665,7 @@ void hdd_cfr_data_send_nl_event(uint8_t vdev_id, uint32_t pid,
data_len, data);
if (ret) {
hdd_err("CFR event put fails status %d", ret);
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return;
}
@@ -7674,7 +7677,7 @@ void hdd_cfr_data_send_nl_event(uint8_t vdev_id, uint32_t pid,
hdd_err_rl("nlhdr is null");
}
cfg80211_vendor_event(vendor_event, GFP_ATOMIC);
wlan_cfg80211_vendor_event(vendor_event, GFP_ATOMIC);
}
#endif
@@ -7698,13 +7701,13 @@ void hdd_send_roam_scan_ch_list_event(struct hdd_context *hdd_ctx,
len = nla_total_size(buf_len) + NLMSG_HDRLEN;
vendor_event =
cfg80211_vendor_event_alloc(
wlan_cfg80211_vendor_event_alloc(
hdd_ctx->wiphy, &(adapter->wdev), len,
QCA_NL80211_VENDOR_SUBCMD_UPDATE_STA_INFO_INDEX,
GFP_KERNEL);
if (!vendor_event) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return;
}
@@ -7713,11 +7716,11 @@ void hdd_send_roam_scan_ch_list_event(struct hdd_context *hdd_ctx,
buf_len, buf);
if (ret) {
hdd_err("OEM event put fails status %d", ret);
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return;
}
cfg80211_vendor_event(vendor_event, GFP_KERNEL);
wlan_cfg80211_vendor_event(vendor_event, GFP_KERNEL);
}
#endif
@@ -11209,9 +11212,10 @@ static int hdd_get_configuration(struct hdd_adapter *adapter,
NLA_ALIGN(config_getters[i].max_attr_len);
}
skb = cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy, nl_buf_len);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
nl_buf_len);
if (!skb) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
return -ENOMEM;
}
@@ -11231,11 +11235,11 @@ static int hdd_get_configuration(struct hdd_adapter *adapter,
if (errno) {
hdd_err("Failed to get wifi configuration, errno = %d", errno);
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}
cfg80211_vendor_cmd_reply(skb);
wlan_cfg80211_vendor_cmd_reply(skb);
return errno;
}
@@ -13542,7 +13546,7 @@ static int __wlan_hdd_cfg80211_get_preferred_freq_list(struct wiphy *wiphy,
freq_list[i] = w_pcl[i].freq;
/* send the freq_list back to supplicant */
reply_skb = cfg80211_vendor_cmd_alloc_reply_skb(
reply_skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(
wiphy,
(sizeof(u32) + NLA_HDRLEN) +
(sizeof(u32) * pcl_len_legacy + NLA_HDRLEN) +
@@ -13564,7 +13568,7 @@ static int __wlan_hdd_cfg80211_get_preferred_freq_list(struct wiphy *wiphy,
sizeof(uint32_t) * pcl_len_legacy,
freq_list_legacy)) {
hdd_err("nla put fail");
kfree_skb(reply_skb);
wlan_cfg80211_vendor_free_skb(reply_skb);
qdf_mem_free(w_pcl);
return -EINVAL;
}
@@ -13574,7 +13578,7 @@ static int __wlan_hdd_cfg80211_get_preferred_freq_list(struct wiphy *wiphy,
if (!nla_attr) {
hdd_err("nla nest start fail");
kfree_skb(reply_skb);
wlan_cfg80211_vendor_free_skb(reply_skb);
qdf_mem_free(w_pcl);
return -EINVAL;
}
@@ -13583,7 +13587,7 @@ static int __wlan_hdd_cfg80211_get_preferred_freq_list(struct wiphy *wiphy,
channel = nla_nest_start(reply_skb, i);
if (!channel) {
hdd_err("updating pcl list failed");
kfree_skb(reply_skb);
wlan_cfg80211_vendor_free_skb(reply_skb);
qdf_mem_free(w_pcl);
return -EINVAL;
}
@@ -13594,7 +13598,7 @@ static int __wlan_hdd_cfg80211_get_preferred_freq_list(struct wiphy *wiphy,
nla_put_u32(reply_skb, QCA_WLAN_VENDOR_ATTR_PCL_FLAG,
w_pcl[i].flag)) {
hdd_err("nla put fail");
kfree_skb(reply_skb);
wlan_cfg80211_vendor_free_skb(reply_skb);
qdf_mem_free(w_pcl);
return -EINVAL;
}
@@ -13603,7 +13607,7 @@ static int __wlan_hdd_cfg80211_get_preferred_freq_list(struct wiphy *wiphy,
nla_nest_end(reply_skb, nla_attr);
qdf_mem_free(w_pcl);
return cfg80211_vendor_cmd_reply(reply_skb);
return wlan_cfg80211_vendor_cmd_reply(reply_skb);
}
/** wlan_hdd_cfg80211_get_preferred_freq_list () - get preferred frequency list
@@ -13901,9 +13905,11 @@ static int __wlan_hdd_cfg80211_get_link_properties(struct wiphy *wiphy,
}
}
reply_skb = cfg80211_vendor_cmd_alloc_reply_skb(wiphy,
sizeof(u8) + sizeof(u8) + sizeof(u32) + NLMSG_HDRLEN);
reply_skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(wiphy,
sizeof(u8) +
sizeof(u8) +
sizeof(u32) +
NLMSG_HDRLEN);
if (!reply_skb) {
hdd_err("getLinkProperties: skb alloc failed");
return -EINVAL;
@@ -13919,11 +13925,11 @@ static int __wlan_hdd_cfg80211_get_link_properties(struct wiphy *wiphy,
QCA_WLAN_VENDOR_ATTR_LINK_PROPERTIES_FREQ,
freq)) {
hdd_err("nla_put failed");
kfree_skb(reply_skb);
wlan_cfg80211_vendor_free_skb(reply_skb);
return -EINVAL;
}
return cfg80211_vendor_cmd_reply(reply_skb);
return wlan_cfg80211_vendor_cmd_reply(reply_skb);
}
/**
@@ -14885,10 +14891,10 @@ __wlan_hdd_cfg80211_get_bus_size(struct wiphy *wiphy,
nl_buf_len = NLMSG_HDRLEN;
nl_buf_len += (sizeof(hdd_ctx->wmi_max_len) + NLA_HDRLEN);
skb = cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy, nl_buf_len);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
nl_buf_len);
if (!skb) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
return -ENOMEM;
}
@@ -14898,14 +14904,14 @@ __wlan_hdd_cfg80211_get_bus_size(struct wiphy *wiphy,
goto nla_put_failure;
}
cfg80211_vendor_cmd_reply(skb);
wlan_cfg80211_vendor_cmd_reply(skb);
hdd_exit();
return 0;
nla_put_failure:
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}
@@ -14987,7 +14993,7 @@ __wlan_hdd_cfg80211_get_radio_combination_matrix(struct wiphy *wiphy,
skb_len = NLMSG_HDRLEN + skb_len;
reply_skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(wiphy, skb_len);
if (!reply_skb) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed, len %d",
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed, len %d",
skb_len);
return -EINVAL;
}
@@ -15811,12 +15817,12 @@ static int __wlan_hdd_cfg80211_getband(struct wiphy *wiphy,
if (ret)
return ret;
skb = cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
sizeof(uint32_t) +
NLA_HDRLEN);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
sizeof(uint32_t) +
NLA_HDRLEN);
if (!skb) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return -ENOMEM;
}
@@ -15835,14 +15841,14 @@ static int __wlan_hdd_cfg80211_getband(struct wiphy *wiphy,
goto failure;
}
cfg80211_vendor_cmd_reply(skb);
wlan_cfg80211_vendor_cmd_reply(skb);
hdd_exit();
return 0;
failure:
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}
@@ -16547,9 +16553,9 @@ static int hdd_post_chain_rssi_rsp(struct hdd_adapter *adapter,
len += update_ant_id ?
nla_total_size(sizeof(result->ant_id)) : 0;
skb = cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy, len);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy, len);
if (!skb) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
return -ENOMEM;
}
@@ -16574,12 +16580,12 @@ static int hdd_post_chain_rssi_rsp(struct hdd_adapter *adapter,
goto nla_put_failure;
}
cfg80211_vendor_cmd_reply(skb);
wlan_cfg80211_vendor_cmd_reply(skb);
return 0;
nla_put_failure:
hdd_err("nla put fail");
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}
@@ -16898,9 +16904,9 @@ hdd_send_usable_channel(struct hdd_context *hdd_ctx,
}
skb_len += NLMSG_HDRLEN;
skb = cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy, skb_len);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy, skb_len);
if (!skb) {
hdd_info("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_info("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
return -ENOMEM;
}
@@ -16908,11 +16914,11 @@ hdd_send_usable_channel(struct hdd_context *hdd_ctx,
if (status)
goto fail;
return cfg80211_vendor_cmd_reply(skb);
return wlan_cfg80211_vendor_cmd_reply(skb);
fail:
hdd_err("nla put fail");
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return status;
}
@@ -17544,6 +17550,8 @@ int wlan_hdd_send_mode_change_event(void)
struct nlattr *attr;
struct connection_info info[MAX_NUMBER_OF_CONC_CONNECTIONS];
uint32_t conn_count, mac_id;
enum qca_nl80211_vendor_subcmds_index index =
QCA_NL80211_VENDOR_SUBCMD_WLAN_MAC_INFO_INDEX;
hdd_enter();
hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD);
@@ -17558,33 +17566,33 @@ int wlan_hdd_send_mode_change_event(void)
if (!conn_count)
return -EINVAL;
skb = cfg80211_vendor_event_alloc(hdd_ctx->wiphy, NULL,
(sizeof(uint32_t) * 4) *
MAX_NUMBER_OF_CONC_CONNECTIONS + NLMSG_HDRLEN,
QCA_NL80211_VENDOR_SUBCMD_WLAN_MAC_INFO_INDEX,
GFP_KERNEL);
skb = wlan_cfg80211_vendor_event_alloc(hdd_ctx->wiphy, NULL,
(sizeof(uint32_t) * 4) *
MAX_NUMBER_OF_CONC_CONNECTIONS +
NLMSG_HDRLEN,
index, GFP_KERNEL);
if (!skb) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return -ENOMEM;
}
attr = nla_nest_start(skb, QCA_WLAN_VENDOR_ATTR_MAC_INFO);
if (!attr) {
hdd_err("nla_nest_start failed");
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}
for (mac_id = 0; mac_id < MAX_MAC; mac_id++) {
if (wlan_hdd_fill_mac_info(skb, info, mac_id, conn_count)) {
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}
}
nla_nest_end(skb, attr);
cfg80211_vendor_event(skb, GFP_KERNEL);
wlan_cfg80211_vendor_event(skb, GFP_KERNEL);
hdd_exit();
return err;
@@ -17741,10 +17749,11 @@ __wlan_hdd_cfg80211_extscan_get_valid_channels(struct wiphy *wiphy,
hdd_debug("Channels: %s", buf);
reply_skb = cfg80211_vendor_cmd_alloc_reply_skb(wiphy, sizeof(u32) +
sizeof(u32) *
num_channels +
NLMSG_HDRLEN);
reply_skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(wiphy,
sizeof(u32) +
sizeof(u32) *
num_channels +
NLMSG_HDRLEN);
if (reply_skb) {
if (nla_put_u32(
@@ -17756,10 +17765,10 @@ __wlan_hdd_cfg80211_extscan_get_valid_channels(struct wiphy *wiphy,
EXTSCAN_RESULTS_CHANNELS,
sizeof(u32) * num_channels, chan_list)) {
hdd_err("nla put fail");
kfree_skb(reply_skb);
wlan_cfg80211_vendor_free_skb(reply_skb);
return -EINVAL;
}
ret = cfg80211_vendor_cmd_reply(reply_skb);
ret = wlan_cfg80211_vendor_cmd_reply(reply_skb);
return ret;
}
@@ -17861,7 +17870,7 @@ __wlan_hdd_cfg80211_get_radar_history(struct wiphy *wiphy,
return -EINVAL;
len = get_radar_history_evt_len(hist_count);
reply_skb = cfg80211_vendor_cmd_alloc_reply_skb(wiphy, len);
reply_skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(wiphy, len);
if (!reply_skb) {
ret = -ENOMEM;
goto err;
@@ -17909,14 +17918,13 @@ __wlan_hdd_cfg80211_get_radar_history(struct wiphy *wiphy,
nla_nest_end(reply_skb, ch_array);
qdf_mem_free(radar_history);
ret = cfg80211_vendor_cmd_reply(reply_skb);
ret = wlan_cfg80211_vendor_cmd_reply(reply_skb);
hdd_debug("get radar history count %d, ret %d", hist_count, ret);
return ret;
err:
qdf_mem_free(radar_history);
if (reply_skb)
kfree_skb(reply_skb);
wlan_cfg80211_vendor_free_skb(reply_skb);
hdd_debug("get radar history error %d", ret);
return ret;
@@ -20311,13 +20319,13 @@ QDF_STATUS wlan_hdd_send_sta_authorized_event(
}
vendor_event =
cfg80211_vendor_event_alloc(
wlan_cfg80211_vendor_event_alloc(
hdd_ctx->wiphy, &adapter->wdev, sizeof(sta_flags) +
QDF_MAC_ADDR_SIZE + NLMSG_HDRLEN,
QCA_NL80211_VENDOR_SUBCMD_LINK_PROPERTIES_INDEX,
GFP_KERNEL);
if (!vendor_event) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return QDF_STATUS_E_FAILURE;
}
@@ -20332,7 +20340,7 @@ QDF_STATUS wlan_hdd_send_sta_authorized_event(
&sta_flags);
if (status) {
hdd_err("STA flag put fails");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return QDF_STATUS_E_FAILURE;
}
status = nla_put(vendor_event,
@@ -20340,11 +20348,11 @@ QDF_STATUS wlan_hdd_send_sta_authorized_event(
QDF_MAC_ADDR_SIZE, mac_addr->bytes);
if (status) {
hdd_err("STA MAC put fails");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return QDF_STATUS_E_FAILURE;
}
cfg80211_vendor_event(vendor_event, GFP_KERNEL);
wlan_cfg80211_vendor_event(vendor_event, GFP_KERNEL);
hdd_exit();
return QDF_STATUS_SUCCESS;

Переглянути файл

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2012-2020 The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -63,6 +64,7 @@ __wlan_hdd_cfg80211_get_concurrency_matrix(struct wiphy *wiphy,
uint8_t i, feature_sets, max_feature_sets;
struct nlattr *tb[MAX_CONCURRENT_MATRIX + 1];
struct sk_buff *reply_skb;
uint32_t skb_len = NLMSG_HDRLEN;
struct hdd_context *hdd_ctx = wiphy_priv(wiphy);
int ret;
@@ -105,8 +107,8 @@ __wlan_hdd_cfg80211_get_concurrency_matrix(struct wiphy *wiphy,
for (i = 0; i < feature_sets; i++)
hdd_debug("[%d] 0x%02X", i, feature_set_matrix[i]);
reply_skb = cfg80211_vendor_cmd_alloc_reply_skb(wiphy, sizeof(u32) +
sizeof(u32) * feature_sets + NLMSG_HDRLEN);
skb_len += sizeof(u32) + sizeof(u32) * feature_sets;
reply_skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(wiphy, skb_len);
if (!reply_skb) {
hdd_err("Feature set matrix: buffer alloc fail");
return -ENOMEM;
@@ -120,10 +122,10 @@ __wlan_hdd_cfg80211_get_concurrency_matrix(struct wiphy *wiphy,
sizeof(u32) * feature_sets,
feature_set_matrix)) {
hdd_err("nla put fail");
kfree_skb(reply_skb);
wlan_cfg80211_vendor_free_skb(reply_skb);
return -EINVAL;
}
return cfg80211_vendor_cmd_reply(reply_skb);
return wlan_cfg80211_vendor_cmd_reply(reply_skb);
}
#undef MAX_CONCURRENT_MATRIX

Переглянути файл

@@ -1245,12 +1245,12 @@ wlan_hdd_send_connectivity_log_to_user(struct wlan_log_record *rec,
len = wlan_hdd_get_connectivity_log_event_len(rec, num_records);
vendor_event = cfg80211_vendor_event_alloc(
vendor_event = wlan_cfg80211_vendor_event_alloc(
hdd_ctx->wiphy, NULL, len + NLMSG_HDRLEN,
QCA_NL80211_VENDOR_SUBCMD_DIAG_EVENT_INDEX,
GFP_ATOMIC);
if (!vendor_event) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return QDF_STATUS_E_NOMEM;
}
@@ -1276,14 +1276,14 @@ wlan_hdd_send_connectivity_log_to_user(struct wlan_log_record *rec,
}
nla_nest_end(vendor_event, attr);
cfg80211_vendor_event(vendor_event, GFP_ATOMIC);
wlan_cfg80211_vendor_event(vendor_event, GFP_ATOMIC);
hdd_exit();
return QDF_STATUS_SUCCESS;
failure:
hdd_err("NLA fill failed num_records:%d", num_records);
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return QDF_STATUS_E_FAILURE;
}

Переглянути файл

@@ -123,27 +123,27 @@ static int hdd_post_encrypt_decrypt_msg_rsp(struct hdd_context *hdd_ctx,
hdd_enter();
nl_buf_len = resp->data_len + NLA_HDRLEN;
skb = cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy, nl_buf_len);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
nl_buf_len);
if (!skb) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
return -ENOMEM;
}
if (resp->data_len) {
if (nla_put(skb, QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_DATA,
resp->data_len, resp->data)) {
resp->data_len, resp->data)) {
hdd_err("put fail");
goto nla_put_failure;
}
}
cfg80211_vendor_cmd_reply(skb);
wlan_cfg80211_vendor_cmd_reply(skb);
hdd_exit();
return 0;
nla_put_failure:
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}

Переглянути файл

@@ -228,16 +228,16 @@ static void hdd_send_driver_ready_to_user(void)
return;
}
nl_event = cfg80211_vendor_event_alloc(
nl_event = wlan_cfg80211_vendor_event_alloc(
hdd_ctx->wiphy, NULL, 0,
QCA_NL80211_VENDOR_SUBCMD_DRIVER_READY_INDEX,
flags);
if (!nl_event) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return;
}
cfg80211_vendor_event(nl_event, flags);
wlan_cfg80211_vendor_event(nl_event, flags);
}
/**

Переглянути файл

@@ -391,10 +391,10 @@ wlan_hdd_cfg80211_extscan_cached_results_ind(struct hdd_context *hdd_ctx,
}
}
skb = cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy, nl_buf_len);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
nl_buf_len);
if (!skb) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
goto fail;
}
hdd_debug("Req Id %u Num_scan_ids %u More Data %u",
@@ -499,7 +499,7 @@ wlan_hdd_cfg80211_extscan_cached_results_ind(struct hdd_context *hdd_ctx,
nla_nest_end(skb, nla_results);
}
cfg80211_vendor_cmd_reply(skb);
wlan_cfg80211_vendor_cmd_reply(skb);
if (!data->more_data) {
spin_lock(&context->context_lock);
@@ -510,9 +510,7 @@ wlan_hdd_cfg80211_extscan_cached_results_ind(struct hdd_context *hdd_ctx,
return;
fail:
if (skb)
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
spin_lock(&context->context_lock);
context->response_status = -EINVAL;
spin_unlock(&context->context_lock);
@@ -550,14 +548,14 @@ wlan_hdd_cfg80211_extscan_hotlist_match_ind(struct hdd_context *hdd_ctx,
else
index = QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_AP_LOST_INDEX;
skb = cfg80211_vendor_event_alloc(
skb = wlan_cfg80211_vendor_event_alloc(
hdd_ctx->wiphy,
NULL,
EXTSCAN_EVENT_BUF_SIZE + NLMSG_HDRLEN,
index, flags);
if (!skb) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return;
}
hdd_debug("Req Id: %u Num_APs: %u MoreData: %u ap_found: %u",
@@ -634,12 +632,12 @@ wlan_hdd_cfg80211_extscan_hotlist_match_ind(struct hdd_context *hdd_ctx,
goto fail;
}
cfg80211_vendor_event(skb, flags);
wlan_cfg80211_vendor_event(skb, flags);
hdd_exit();
return;
fail:
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
}
/**
@@ -673,7 +671,7 @@ wlan_hdd_cfg80211_extscan_signif_wifi_change_results_ind(
return;
}
skb = cfg80211_vendor_event_alloc(
skb = wlan_cfg80211_vendor_event_alloc(
hdd_ctx->wiphy,
NULL,
EXTSCAN_EVENT_BUF_SIZE + NLMSG_HDRLEN,
@@ -681,7 +679,7 @@ wlan_hdd_cfg80211_extscan_signif_wifi_change_results_ind(
flags);
if (!skb) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return;
}
hdd_debug("Req Id %u Num results %u More Data %u",
@@ -760,11 +758,11 @@ wlan_hdd_cfg80211_extscan_signif_wifi_change_results_ind(
goto fail;
}
cfg80211_vendor_event(skb, flags);
wlan_cfg80211_vendor_event(skb, flags);
return;
fail:
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return;
}
@@ -802,7 +800,7 @@ wlan_hdd_cfg80211_extscan_full_scan_result_event(struct hdd_context *hdd_ctx,
hdd_err("Frame exceeded NL size limitation, drop it!!");
return;
}
skb = cfg80211_vendor_event_alloc(
skb = wlan_cfg80211_vendor_event_alloc(
hdd_ctx->wiphy,
NULL,
EXTSCAN_EVENT_BUF_SIZE + NLMSG_HDRLEN,
@@ -810,7 +808,7 @@ wlan_hdd_cfg80211_extscan_full_scan_result_event(struct hdd_context *hdd_ctx,
flags);
if (!skb) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return;
}
@@ -890,11 +888,11 @@ wlan_hdd_cfg80211_extscan_full_scan_result_event(struct hdd_context *hdd_ctx,
}
spin_unlock(&context->context_lock);
cfg80211_vendor_event(skb, flags);
wlan_cfg80211_vendor_event(skb, flags);
return;
nla_put_failure:
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
}
/**
@@ -924,7 +922,7 @@ wlan_hdd_cfg80211_extscan_scan_res_available_event(
return;
}
skb = cfg80211_vendor_event_alloc(
skb = wlan_cfg80211_vendor_event_alloc(
hdd_ctx->wiphy,
NULL,
EXTSCAN_EVENT_BUF_SIZE + NLMSG_HDRLEN,
@@ -932,7 +930,7 @@ wlan_hdd_cfg80211_extscan_scan_res_available_event(
flags);
if (!skb) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return;
}
@@ -948,12 +946,12 @@ wlan_hdd_cfg80211_extscan_scan_res_available_event(
goto nla_put_failure;
}
cfg80211_vendor_event(skb, flags);
wlan_cfg80211_vendor_event(skb, flags);
hdd_exit();
return;
nla_put_failure:
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
}
/**
@@ -984,7 +982,7 @@ wlan_hdd_cfg80211_extscan_scan_progress_event(struct hdd_context *hdd_ctx,
return;
}
skb = cfg80211_vendor_event_alloc(
skb = wlan_cfg80211_vendor_event_alloc(
hdd_ctx->wiphy,
NULL,
EXTSCAN_EVENT_BUF_SIZE + NLMSG_HDRLEN,
@@ -992,7 +990,7 @@ wlan_hdd_cfg80211_extscan_scan_progress_event(struct hdd_context *hdd_ctx,
flags);
if (!skb) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return;
}
@@ -1024,11 +1022,11 @@ wlan_hdd_cfg80211_extscan_scan_progress_event(struct hdd_context *hdd_ctx,
goto nla_put_failure;
}
cfg80211_vendor_event(skb, flags);
wlan_cfg80211_vendor_event(skb, flags);
return;
nla_put_failure:
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
}
/**
@@ -1050,6 +1048,8 @@ wlan_hdd_cfg80211_extscan_epno_match_found(struct hdd_context *hdd_ctx,
struct sk_buff *skb;
uint32_t len, i;
int flags = cds_get_gfp_flags();
enum qca_nl80211_vendor_subcmds_index index =
QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_NETWORK_FOUND_INDEX;
hdd_enter();
@@ -1074,14 +1074,12 @@ wlan_hdd_cfg80211_extscan_epno_match_found(struct hdd_context *hdd_ctx,
return;
}
skb = cfg80211_vendor_event_alloc(hdd_ctx->wiphy,
NULL,
EXTSCAN_EVENT_BUF_SIZE + NLMSG_HDRLEN,
QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_NETWORK_FOUND_INDEX,
flags);
skb = wlan_cfg80211_vendor_event_alloc(hdd_ctx->wiphy, NULL,
EXTSCAN_EVENT_BUF_SIZE +
NLMSG_HDRLEN,
index, flags);
if (!skb) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return;
}
@@ -1126,11 +1124,11 @@ wlan_hdd_cfg80211_extscan_epno_match_found(struct hdd_context *hdd_ctx,
nla_nest_end(skb, nla_aps);
}
cfg80211_vendor_event(skb, flags);
wlan_cfg80211_vendor_event(skb, flags);
return;
fail:
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
}
/**
@@ -1154,6 +1152,8 @@ wlan_hdd_cfg80211_passpoint_match_found(void *ctx,
uint32_t len, i, num_matches = 1, more_data = 0;
struct nlattr *nla_aps, *nla_bss;
int flags = cds_get_gfp_flags();
enum qca_nl80211_vendor_subcmds_index index =
QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_PASSPOINT_NETWORK_FOUND_INDEX;
hdd_enter();
@@ -1170,14 +1170,12 @@ wlan_hdd_cfg80211_passpoint_match_found(void *ctx,
return;
}
skb = cfg80211_vendor_event_alloc(hdd_ctx->wiphy,
NULL,
EXTSCAN_EVENT_BUF_SIZE + NLMSG_HDRLEN,
QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_PASSPOINT_NETWORK_FOUND_INDEX,
flags);
skb = wlan_cfg80211_vendor_event_alloc(hdd_ctx->wiphy, NULL,
EXTSCAN_EVENT_BUF_SIZE +
NLMSG_HDRLEN,
index, flags);
if (!skb) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return;
}
@@ -1245,11 +1243,11 @@ wlan_hdd_cfg80211_passpoint_match_found(void *ctx,
}
nla_nest_end(skb, nla_aps);
cfg80211_vendor_event(skb, flags);
wlan_cfg80211_vendor_event(skb, flags);
return;
fail:
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
}
/**
@@ -1417,7 +1415,6 @@ static int wlan_hdd_send_ext_scan_capability(struct hdd_context *hdd_ctx)
return ret;
data = &(ext_scan_context.capability_response);
nl_buf_len = NLMSG_HDRLEN;
nl_buf_len += (sizeof(data->requestId) + NLA_HDRLEN) +
(sizeof(data->status) + NLA_HDRLEN) +
@@ -1434,11 +1431,10 @@ static int wlan_hdd_send_ext_scan_capability(struct hdd_context *hdd_ctx)
(sizeof(data->max_number_epno_networks_by_ssid) + NLA_HDRLEN) +
(sizeof(data->max_number_of_allow_listed_ssid) + NLA_HDRLEN) +
(sizeof(data->max_number_of_deny_listed_bssid) + NLA_HDRLEN);
skb = cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy, nl_buf_len);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
nl_buf_len);
if (!skb) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
return -ENOMEM;
}
@@ -1499,11 +1495,11 @@ static int wlan_hdd_send_ext_scan_capability(struct hdd_context *hdd_ctx)
goto nla_put_failure;
}
cfg80211_vendor_cmd_reply(skb);
wlan_cfg80211_vendor_cmd_reply(skb);
return 0;
nla_put_failure:
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}
/*
@@ -1653,7 +1649,7 @@ int wlan_hdd_cfg80211_extscan_get_capabilities(struct wiphy *wiphy,
* invokes the SME Api and blocks on a completion variable.
* Each WMI event with cached scan results data chunk results in
* function call wlan_hdd_cfg80211_extscan_cached_results_ind and each
* data chunk is sent up the layer in cfg80211_vendor_cmd_alloc_reply_skb.
* data chunk is sent up the layer in wlan_cfg80211_vendor_cmd_alloc_reply_skb.
*
* If timeout happens before receiving all of the data, this function sets
* a context variable @ignore_cached_results to %true, all of the next data
@@ -1758,7 +1754,7 @@ __wlan_hdd_cfg80211_extscan_get_cached_results(struct wiphy *wiphy,
* invokes the SME Api and blocks on a completion variable.
* Each WMI event with cached scan results data chunk results in
* function call wlan_hdd_cfg80211_extscan_cached_results_ind and each
* data chunk is sent up the layer in cfg80211_vendor_cmd_alloc_reply_skb.
* data chunk is sent up the layer in wlan_cfg80211_vendor_cmd_alloc_reply_skb.
*
* If timeout happens before receiving all of the data, this function sets
* a context variable @ignore_cached_results to %true, all of the next data

Переглянути файл

@@ -77,13 +77,12 @@ static int hdd_post_get_fw_state_rsp(struct hdd_context *hdd_ctx,
struct sk_buff *skb;
enum qca_wlan_vendor_attr_fw_state fw_state;
skb = cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
sizeof(uint8_t) +
NLA_HDRLEN +
NLMSG_HDRLEN);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
sizeof(uint8_t) +
NLA_HDRLEN +
NLMSG_HDRLEN);
if (!skb) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return -ENOMEM;
}
@@ -98,11 +97,11 @@ static int hdd_post_get_fw_state_rsp(struct hdd_context *hdd_ctx,
goto nla_put_failure;
}
cfg80211_vendor_cmd_reply(skb);
wlan_cfg80211_vendor_cmd_reply(skb);
return 0;
nla_put_failure:
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}

Переглянути файл

@@ -187,8 +187,7 @@ __wlan_hdd_cfg80211_get_he_cap(struct wiphy *wiphy,
hdd_info("11AX: he_supported: %d", he_supported);
reply_skb = cfg80211_vendor_cmd_alloc_reply_skb(wiphy, nl_buf_len);
reply_skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(wiphy, nl_buf_len);
if (!reply_skb) {
hdd_err("Allocate reply_skb failed");
return -EINVAL;
@@ -219,13 +218,13 @@ __wlan_hdd_cfg80211_get_he_cap(struct wiphy *wiphy,
he_cap.ppet.ppet16_ppet8_ru3_ru0))
goto nla_put_failure;
end:
ret = cfg80211_vendor_cmd_reply(reply_skb);
ret = wlan_cfg80211_vendor_cmd_reply(reply_skb);
hdd_exit();
return ret;
nla_put_failure:
hdd_err("nla put fail");
kfree_skb(reply_skb);
wlan_cfg80211_vendor_free_skb(reply_skb);
return -EINVAL;
}
@@ -433,7 +432,7 @@ static void hdd_sr_osif_events(struct wlan_objmgr_vdev *vdev,
len, idx,
GFP_KERNEL);
if (!skb) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return;
}
status = hdd_sr_pack_suspend_resume_event(
@@ -441,7 +440,7 @@ static void hdd_sr_osif_events(struct wlan_objmgr_vdev *vdev,
srg_max_pd_offset, srg_min_pd_offset,
non_srg_max_pd_offset);
if (QDF_IS_STATUS_ERROR(status)) {
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return;
}
@@ -830,7 +829,7 @@ static int __wlan_hdd_cfg80211_sr_operations(struct wiphy *wiphy,
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
nl_buf_len);
if (!skb) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
return -ENOMEM;
}
if (hdd_add_stats_info(skb, &stats)) {
@@ -886,7 +885,7 @@ static int __wlan_hdd_cfg80211_sr_operations(struct wiphy *wiphy,
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
nl_buf_len);
if (!skb) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
return -ENOMEM;
}
if (hdd_add_param_info(skb, srg_max_pd_offset,

Переглянути файл

@@ -1086,13 +1086,14 @@ static QDF_STATUS hdd_send_radar_event(struct hdd_context *hdd_context,
return QDF_STATUS_E_FAILURE;
}
vendor_event = cfg80211_vendor_event_alloc(hdd_context->wiphy,
wdev,
data_size + NLMSG_HDRLEN,
index,
GFP_KERNEL);
vendor_event = wlan_cfg80211_vendor_event_alloc(hdd_context->wiphy,
wdev,
data_size +
NLMSG_HDRLEN,
index, GFP_KERNEL);
if (!vendor_event) {
hdd_err("cfg80211_vendor_event_alloc failed for %d", index);
hdd_err("wlan_cfg80211_vendor_event_alloc failed for %d",
index);
return QDF_STATUS_E_FAILURE;
}
@@ -1100,11 +1101,11 @@ static QDF_STATUS hdd_send_radar_event(struct hdd_context *hdd_context,
if (ret) {
hdd_err("NL80211_ATTR_WIPHY_FREQ put fail");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return QDF_STATUS_E_FAILURE;
}
cfg80211_vendor_event(vendor_event, GFP_KERNEL);
wlan_cfg80211_vendor_event(vendor_event, GFP_KERNEL);
return QDF_STATUS_SUCCESS;
}

Переглянути файл

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2019 The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -78,16 +79,13 @@ static int hdd_post_isolation(struct hdd_context *hdd_ctx,
struct sir_isolation_resp *isolation)
{
struct sk_buff *skb;
uint32_t skb_len = NLMSG_HDRLEN;
skb = cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
(sizeof(u8) + NLA_HDRLEN) +
(sizeof(u8) + NLA_HDRLEN) +
(sizeof(u8) + NLA_HDRLEN) +
(sizeof(u8) + NLA_HDRLEN) +
NLMSG_HDRLEN);
skb_len += (sizeof(u8) + NLA_HDRLEN) + (sizeof(u8) + NLA_HDRLEN) +
(sizeof(u8) + NLA_HDRLEN) + (sizeof(u8) + NLA_HDRLEN);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy, skb_len);
if (!skb) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return -ENOMEM;
}
@@ -115,11 +113,11 @@ static int hdd_post_isolation(struct hdd_context *hdd_ctx,
goto nla_put_failure;
}
cfg80211_vendor_cmd_reply(skb);
wlan_cfg80211_vendor_cmd_reply(skb);
return 0;
nla_put_failure:
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}

Переглянути файл

@@ -14171,6 +14171,8 @@ static void wlan_hdd_p2p_lo_event_callback(void *context,
struct hdd_context *hdd_ctx = context;
struct sk_buff *vendor_event;
struct hdd_adapter *adapter;
enum qca_nl80211_vendor_subcmds_index index =
QCA_NL80211_VENDOR_SUBCMD_P2P_LO_EVENT_INDEX;
hdd_enter();
@@ -14187,13 +14189,13 @@ static void wlan_hdd_p2p_lo_event_callback(void *context,
}
vendor_event =
cfg80211_vendor_event_alloc(hdd_ctx->wiphy,
&(adapter->wdev), sizeof(uint32_t) + NLMSG_HDRLEN,
QCA_NL80211_VENDOR_SUBCMD_P2P_LO_EVENT_INDEX,
GFP_KERNEL);
wlan_cfg80211_vendor_event_alloc(hdd_ctx->wiphy,
&adapter->wdev,
sizeof(uint32_t) +
NLMSG_HDRLEN,
index, GFP_KERNEL);
if (!vendor_event) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return;
}
@@ -14201,11 +14203,11 @@ static void wlan_hdd_p2p_lo_event_callback(void *context,
QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_STOP_REASON,
evt->reason_code)) {
hdd_err("nla put failed");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return;
}
cfg80211_vendor_event(vendor_event, GFP_KERNEL);
wlan_cfg80211_vendor_event(vendor_event, GFP_KERNEL);
hdd_debug("Sent P2P_LISTEN_OFFLOAD_STOP event for vdev_id = %d",
evt->vdev_id);
}

Переглянути файл

@@ -315,7 +315,7 @@ wlan_cfg80211_indicate_mcc_quota(struct wlan_objmgr_psoc *psoc,
QCA_NL80211_VENDOR_SUBCMD_MCC_QUOTA_INDEX,
GFP_KERNEL);
if (!vendor_event) {
hdd_debug("cfg80211_vendor_event_alloc failed");
hdd_debug("wlan_cfg80211_vendor_event_alloc failed");
return QDF_STATUS_E_NOMEM;
}
if (nla_put_u32(vendor_event,

Переглянути файл

@@ -143,13 +143,13 @@ static void hdd_cca_notification_cb(uint8_t vdev_id,
return;
}
event = cfg80211_vendor_event_alloc(
event = wlan_cfg80211_vendor_event_alloc(
hdd_ctx->wiphy, &adapter->wdev,
get_cca_report_len(),
QCA_NL80211_VENDOR_SUBCMD_MEDIUM_ASSESS_INDEX,
GFP_KERNEL);
if (!event) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return;
}
@@ -164,11 +164,11 @@ static void hdd_cca_notification_cb(uint8_t vdev_id,
nla_put_u32(event, MAX_IBSS_RSSI, stats->max_rssi) ||
nla_put_u32(event, MIN_IBSS_RSSI, stats->min_rssi)) {
hdd_err("nla put failed");
kfree_skb(event);
wlan_cfg80211_vendor_free_skb(event);
return;
}
cfg80211_vendor_event(event, GFP_KERNEL);
wlan_cfg80211_vendor_event(event, GFP_KERNEL);
}
/**
@@ -340,6 +340,8 @@ static void hdd_congestion_notification_report(uint8_t vdev_id,
struct hdd_context *hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD);
struct hdd_adapter *adapter;
struct sk_buff *event;
enum qca_nl80211_vendor_subcmds_index index =
QCA_NL80211_VENDOR_SUBCMD_MEDIUM_ASSESS_INDEX;
if (wlan_hdd_validate_context(hdd_ctx))
return;
@@ -350,12 +352,12 @@ static void hdd_congestion_notification_report(uint8_t vdev_id,
return;
}
event = cfg80211_vendor_event_alloc(hdd_ctx->wiphy, &(adapter->wdev),
get_congestion_report_len(),
QCA_NL80211_VENDOR_SUBCMD_MEDIUM_ASSESS_INDEX,
GFP_KERNEL);
event = wlan_cfg80211_vendor_event_alloc(hdd_ctx->wiphy,
&adapter->wdev,
get_congestion_report_len(),
index, GFP_KERNEL);
if (!event) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return;
}
@@ -363,11 +365,11 @@ static void hdd_congestion_notification_report(uint8_t vdev_id,
QCA_WLAN_MEDIUM_ASSESS_CONGESTION_REPORT) ||
nla_put_u8(event, CONGESTION_PERCENTAGE, congestion)) {
hdd_err("nla put failed");
kfree_skb(event);
wlan_cfg80211_vendor_free_skb(event);
return;
}
cfg80211_vendor_event(event, GFP_KERNEL);
wlan_cfg80211_vendor_event(event, GFP_KERNEL);
}
void hdd_medium_assess_ssr_enable_flag(void)

Переглянути файл

@@ -1389,9 +1389,9 @@ hdd_ocb_get_tsf_timer_reply(struct wiphy *wiphy,
/* Allocate the buffer for the response. */
nl_buf_len = NLMSG_HDRLEN;
nl_buf_len += 2 * (NLA_HDRLEN + sizeof(uint32_t));
nl_resp = cfg80211_vendor_cmd_alloc_reply_skb(wiphy, nl_buf_len);
nl_resp = wlan_cfg80211_vendor_cmd_alloc_reply_skb(wiphy, nl_buf_len);
if (!nl_resp) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
return -ENOMEM;
}
@@ -1408,16 +1408,14 @@ hdd_ocb_get_tsf_timer_reply(struct wiphy *wiphy,
goto end;
/* Send the response. */
rc = cfg80211_vendor_cmd_reply(nl_resp);
rc = wlan_cfg80211_vendor_cmd_reply(nl_resp);
nl_resp = NULL;
if (rc) {
hdd_err("cfg80211_vendor_cmd_reply failed: %d", rc);
hdd_err("wlan_cfg80211_vendor_cmd_reply failed: %d", rc);
goto end;
}
end:
if (nl_resp)
kfree_skb(nl_resp);
wlan_cfg80211_vendor_free_skb(nl_resp);
return rc;
}
@@ -1624,9 +1622,9 @@ hdd_dcc_get_stats_send_reply(struct wiphy *wiphy,
nl_buf_len = NLMSG_HDRLEN;
nl_buf_len += NLA_HDRLEN + sizeof(uint32_t);
nl_buf_len += NLA_HDRLEN + response->channel_stats_array_len;
nl_resp = cfg80211_vendor_cmd_alloc_reply_skb(wiphy, nl_buf_len);
nl_resp = wlan_cfg80211_vendor_cmd_alloc_reply_skb(wiphy, nl_buf_len);
if (!nl_resp) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
return -ENOMEM;
}
@@ -1644,16 +1642,14 @@ hdd_dcc_get_stats_send_reply(struct wiphy *wiphy,
goto end;
/* Send the response. */
rc = cfg80211_vendor_cmd_reply(nl_resp);
rc = wlan_cfg80211_vendor_cmd_reply(nl_resp);
nl_resp = NULL;
if (rc) {
hdd_err("cfg80211_vendor_cmd_reply failed: %d", rc);
hdd_err("wlan_cfg80211_vendor_cmd_reply failed: %d", rc);
goto end;
}
end:
if (nl_resp)
kfree_skb(nl_resp);
wlan_cfg80211_vendor_free_skb(nl_resp);
return rc;
}
@@ -2135,18 +2131,20 @@ static void wlan_hdd_dcc_stats_event_callback(void *context_ptr,
struct hdd_context *hdd_ctx = (struct hdd_context *)context_ptr;
struct ocb_dcc_get_stats_response *resp = response_ptr;
struct sk_buff *vendor_event;
enum qca_nl80211_vendor_subcmds_index index =
QCA_NL80211_VENDOR_SUBCMD_DCC_STATS_EVENT_INDEX;
hdd_enter();
vendor_event =
cfg80211_vendor_event_alloc(hdd_ctx->wiphy,
NULL, sizeof(uint32_t) + resp->channel_stats_array_len +
NLMSG_HDRLEN,
QCA_NL80211_VENDOR_SUBCMD_DCC_STATS_EVENT_INDEX,
GFP_KERNEL);
wlan_cfg80211_vendor_event_alloc(hdd_ctx->wiphy, NULL,
sizeof(uint32_t) +
resp->channel_stats_array_len +
NLMSG_HDRLEN,
index, GFP_KERNEL);
if (!vendor_event) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return;
}
@@ -2158,11 +2156,11 @@ static void wlan_hdd_dcc_stats_event_callback(void *context_ptr,
resp->channel_stats_array_len,
resp->channel_stats_array)) {
hdd_err("nla put failed");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return;
}
cfg80211_vendor_event(vendor_event, GFP_KERNEL);
wlan_cfg80211_vendor_event(vendor_event, GFP_KERNEL);
}
/**

Переглянути файл

@@ -1194,13 +1194,13 @@ void hdd_oem_event_async_cb(const struct oem_data *oem_event_data)
wdev = &(adapter->wdev);
len = nla_total_size(oem_event_data->data_len) + NLMSG_HDRLEN;
vendor_event = cfg80211_vendor_event_alloc(
vendor_event = wlan_cfg80211_vendor_event_alloc(
hdd_ctx->wiphy, wdev, len,
QCA_NL80211_VENDOR_SUBCMD_OEM_DATA_INDEX,
GFP_KERNEL);
if (!vendor_event) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return;
}
@@ -1208,10 +1208,10 @@ void hdd_oem_event_async_cb(const struct oem_data *oem_event_data)
oem_event_data->data_len, oem_event_data->data);
if (ret) {
hdd_err("OEM event put fails status %d", ret);
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return;
}
cfg80211_vendor_event(vendor_event, GFP_KERNEL);
wlan_cfg80211_vendor_event(vendor_event, GFP_KERNEL);
hdd_exit();
}
@@ -1267,13 +1267,13 @@ void hdd_oem_event_handler_cb(const struct oem_data *oem_event_data,
len = nla_total_size(oem_event_data->data_len) + NLMSG_HDRLEN;
vendor_event =
cfg80211_vendor_event_alloc(
wlan_cfg80211_vendor_event_alloc(
hdd_ctx->wiphy, wdev, len,
QCA_NL80211_VENDOR_SUBCMD_OEM_DATA_INDEX,
GFP_KERNEL);
if (!vendor_event) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return;
}
@@ -1282,10 +1282,10 @@ void hdd_oem_event_handler_cb(const struct oem_data *oem_event_data,
oem_event_data->data_len, oem_event_data->data);
if (ret) {
hdd_err("OEM event put fails status %d", ret);
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return;
}
cfg80211_vendor_event(vendor_event, GFP_KERNEL);
wlan_cfg80211_vendor_event(vendor_event, GFP_KERNEL);
}
sme_oem_event_deinit(hdd_ctx->mac_handle);
@@ -1435,12 +1435,11 @@ __wlan_hdd_cfg80211_oem_data_handler(struct wiphy *wiphy,
goto err;
}
skb_len = NLMSG_HDRLEN + NLA_HDRLEN + get_oem_data->data_len;
skb_len = NLMSG_HDRLEN + nla_total_size(get_oem_data->data_len);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(wiphy,
skb_len);
if (!skb) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
ret = -ENOMEM;
goto err;
}

Переглянути файл

@@ -190,6 +190,8 @@ void hdd_rssi_threshold_breached(hdd_handle_t hdd_handle,
{
struct hdd_context *hdd_ctx = hdd_handle_to_context(hdd_handle);
struct sk_buff *skb;
enum qca_nl80211_vendor_subcmds_index index =
QCA_NL80211_VENDOR_SUBCMD_MONITOR_RSSI_INDEX;
hdd_enter();
@@ -200,11 +202,10 @@ void hdd_rssi_threshold_breached(hdd_handle_t hdd_handle,
return;
}
skb = cfg80211_vendor_event_alloc(hdd_ctx->wiphy,
NULL,
EXTSCAN_EVENT_BUF_SIZE + NLMSG_HDRLEN,
QCA_NL80211_VENDOR_SUBCMD_MONITOR_RSSI_INDEX,
GFP_KERNEL);
skb = wlan_cfg80211_vendor_event_alloc(hdd_ctx->wiphy, NULL,
EXTSCAN_EVENT_BUF_SIZE +
NLMSG_HDRLEN,
index, GFP_KERNEL);
if (!skb) {
hdd_err("mem alloc failed");
@@ -226,10 +227,10 @@ void hdd_rssi_threshold_breached(hdd_handle_t hdd_handle,
goto fail;
}
cfg80211_vendor_event(skb, GFP_KERNEL);
wlan_cfg80211_vendor_event(skb, GFP_KERNEL);
return;
fail:
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
}

Переглянути файл

@@ -223,19 +223,19 @@ static int hdd_sar_send_response(struct wiphy *wiphy,
int errno;
len = hdd_sar_get_response_len(event);
skb = cfg80211_vendor_cmd_alloc_reply_skb(wiphy, len);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(wiphy, len);
if (!skb) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
return -ENOMEM;
}
errno = hdd_sar_fill_response(skb, event);
if (errno) {
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return errno;
}
return cfg80211_vendor_cmd_reply(skb);
return wlan_cfg80211_vendor_cmd_reply(skb);
}
/**
@@ -372,23 +372,21 @@ static int hdd_sar_send_capability_response(struct wiphy *wiphy,
int errno;
len = NLMSG_HDRLEN;
/* QCA_WLAN_VENDOR_ATTR_SAR_CAPABILITY_VERSION */
len += NLA_HDRLEN + sizeof(u32);
skb = cfg80211_vendor_cmd_alloc_reply_skb(wiphy, len);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(wiphy, len);
if (!skb) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
return -ENOMEM;
}
errno = hdd_sar_fill_capability_response(skb, hdd_ctx);
if (errno) {
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return errno;
}
return cfg80211_vendor_cmd_reply(skb);
return wlan_cfg80211_vendor_cmd_reply(skb);
}
/**
@@ -1133,17 +1131,17 @@ static void hdd_send_sar_unsolicited_event(struct hdd_context *hdd_ctx)
len = NLMSG_HDRLEN;
vendor_event =
cfg80211_vendor_event_alloc(
wlan_cfg80211_vendor_event_alloc(
hdd_ctx->wiphy, NULL, len,
QCA_NL80211_VENDOR_SUBCMD_REQUEST_SAR_LIMITS_INDEX,
GFP_KERNEL);
if (!vendor_event) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return;
}
cfg80211_vendor_event(vendor_event, GFP_KERNEL);
wlan_cfg80211_vendor_event(vendor_event, GFP_KERNEL);
}
static void hdd_sar_unsolicited_work_cb(void *user_data)

Переглянути файл

@@ -72,6 +72,8 @@ static void hdd_vendor_scan_callback(struct hdd_adapter *adapter,
int i;
uint8_t scan_status;
uint64_t cookie;
enum qca_nl80211_vendor_subcmds_index index =
QCA_NL80211_VENDOR_SUBCMD_SCAN_DONE_INDEX;
hdd_enter();
@@ -80,11 +82,10 @@ static void hdd_vendor_scan_callback(struct hdd_adapter *adapter,
qdf_mem_free(req);
return;
}
skb = cfg80211_vendor_event_alloc(hddctx->wiphy, &(adapter->wdev),
SCAN_DONE_EVENT_BUF_SIZE + 4 + NLMSG_HDRLEN,
QCA_NL80211_VENDOR_SUBCMD_SCAN_DONE_INDEX,
GFP_KERNEL);
skb = wlan_cfg80211_vendor_event_alloc(hddctx->wiphy, &adapter->wdev,
SCAN_DONE_EVENT_BUF_SIZE +
4 + NLMSG_HDRLEN,
index, GFP_KERNEL);
if (!skb) {
hdd_err("skb alloc failed");
qdf_mem_free(req);
@@ -137,13 +138,13 @@ static void hdd_vendor_scan_callback(struct hdd_adapter *adapter,
hdd_err("Failed to add scan status");
goto nla_put_failure;
}
cfg80211_vendor_event(skb, GFP_KERNEL);
wlan_cfg80211_vendor_event(skb, GFP_KERNEL);
hdd_info("scan complete event sent to NL");
qdf_mem_free(req);
return;
nla_put_failure:
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
qdf_mem_free(req);
}
@@ -755,8 +756,10 @@ static int wlan_hdd_send_scan_start_event(struct wiphy *wiphy,
{
struct sk_buff *skb;
int ret;
enum qca_nl80211_vendor_subcmds_index index =
QCA_NL80211_VENDOR_SUBCMD_SCAN_INDEX;
skb = cfg80211_vendor_cmd_alloc_reply_skb(wiphy, sizeof(u64) +
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(wiphy, sizeof(u64) +
NLA_HDRLEN + NLMSG_HDRLEN);
if (!skb) {
hdd_err(" reply skb alloc failed");
@@ -766,16 +769,16 @@ static int wlan_hdd_send_scan_start_event(struct wiphy *wiphy,
if (hdd_wlan_nla_put_u64(skb, QCA_WLAN_VENDOR_ATTR_SCAN_COOKIE,
cookie)) {
hdd_err("nla put fail");
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}
ret = cfg80211_vendor_cmd_reply(skb);
ret = wlan_cfg80211_vendor_cmd_reply(skb);
/* Send a scan started event to supplicant */
skb = cfg80211_vendor_event_alloc(wiphy, wdev,
sizeof(u64) + 4 + NLMSG_HDRLEN,
QCA_NL80211_VENDOR_SUBCMD_SCAN_INDEX, GFP_KERNEL);
skb = wlan_cfg80211_vendor_event_alloc(wiphy, wdev,
sizeof(u64) + 4 + NLMSG_HDRLEN,
index, GFP_KERNEL);
if (!skb) {
hdd_err("skb alloc failed");
return -ENOMEM;
@@ -783,11 +786,11 @@ static int wlan_hdd_send_scan_start_event(struct wiphy *wiphy,
if (hdd_wlan_nla_put_u64(skb, QCA_WLAN_VENDOR_ATTR_SCAN_COOKIE,
cookie)) {
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}
cfg80211_vendor_event(skb, GFP_KERNEL);
wlan_cfg80211_vendor_event(skb, GFP_KERNEL);
return ret;
}

Переглянути файл

@@ -1529,11 +1529,9 @@ static int hdd_son_send_cfg_event(struct wlan_objmgr_vdev *vdev,
nla_total_size(event_len) +
NLMSG_HDRLEN;
idx = QCA_NL80211_VENDOR_SUBCMD_GET_WIFI_CONFIGURATION_INDEX;
skb = cfg80211_vendor_event_alloc(adapter->hdd_ctx->wiphy,
&adapter->wdev,
len,
idx,
GFP_KERNEL);
skb = wlan_cfg80211_vendor_event_alloc(adapter->hdd_ctx->wiphy,
&adapter->wdev,
len, idx, GFP_KERNEL);
if (!skb) {
hdd_err("failed to alloc cfg80211 vendor event");
return -EINVAL;
@@ -1543,7 +1541,7 @@ static int hdd_son_send_cfg_event(struct wlan_objmgr_vdev *vdev,
QCA_WLAN_VENDOR_ATTR_CONFIG_GENERIC_COMMAND,
event_id)) {
hdd_err("failed to put attr config generic command");
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}
@@ -1552,11 +1550,11 @@ static int hdd_son_send_cfg_event(struct wlan_objmgr_vdev *vdev,
event_len,
event_buf)) {
hdd_err("failed to put attr config generic data");
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}
cfg80211_vendor_event(skb, GFP_KERNEL);
wlan_cfg80211_vendor_event(skb, GFP_KERNEL);
return 0;
}

Переглянути файл

@@ -211,10 +211,10 @@ static int hdd_get_station_assoc_fail(struct hdd_context *hdd_ctx,
nl_buf_len = NLMSG_HDRLEN;
nl_buf_len += sizeof(uint32_t);
skb = cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy, nl_buf_len);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
nl_buf_len);
if (!skb) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
return -ENOMEM;
}
@@ -236,10 +236,9 @@ static int hdd_get_station_assoc_fail(struct hdd_context *hdd_ctx,
goto fail;
}
return cfg80211_vendor_cmd_reply(skb);
return wlan_cfg80211_vendor_cmd_reply(skb);
fail:
if (skb)
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}
@@ -718,10 +717,10 @@ static int hdd_get_station_info(struct hdd_context *hdd_ctx,
return -EINVAL;
}
skb = cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
WLAN_STATS_INFO_LEN);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
WLAN_STATS_INFO_LEN);
if (!skb) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
return -ENOMEM;
}
@@ -821,10 +820,9 @@ static int hdd_get_station_info(struct hdd_context *hdd_ctx,
hdd_convert_dot11mode(hdd_sta_ctx->cache_conn_info.dot11mode),
adapter->last_disconnect_reason);
return cfg80211_vendor_cmd_reply(skb);
return wlan_cfg80211_vendor_cmd_reply(skb);
fail:
if (skb)
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}
@@ -1180,20 +1178,18 @@ static int hdd_get_cached_station_remote(struct hdd_context *hdd_ctx,
(sizeof(stainfo->tx_rate) + NLA_HDRLEN) +
(sizeof(stainfo->rx_rate) + NLA_HDRLEN) +
(sizeof(stainfo->support_mode) + NLA_HDRLEN) +
(sizeof(stainfo->rx_mc_bc_cnt) +
NLA_HDRLEN) +
(sizeof(stainfo->rx_retry_cnt) +
NLA_HDRLEN);
(sizeof(stainfo->rx_mc_bc_cnt) + NLA_HDRLEN) +
(sizeof(stainfo->rx_retry_cnt) + NLA_HDRLEN);
if (stainfo->assoc_req_ies.len)
nl_buf_len += stainfo->assoc_req_ies.len + NLA_HDRLEN;
skb = cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy, nl_buf_len);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
nl_buf_len);
if (!skb) {
hdd_put_sta_info_ref(&adapter->cache_sta_info_list,
&stainfo, true,
STA_INFO_GET_CACHED_STATION_REMOTE);
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
return -ENOMEM;
}
@@ -1281,13 +1277,11 @@ static int hdd_get_cached_station_remote(struct hdd_context *hdd_ctx,
STA_INFO_GET_CACHED_STATION_REMOTE);
qdf_atomic_dec(&adapter->cache_sta_count);
return cfg80211_vendor_cmd_reply(skb);
return wlan_cfg80211_vendor_cmd_reply(skb);
fail:
hdd_put_sta_info_ref(&adapter->cache_sta_info_list, &stainfo, true,
STA_INFO_GET_CACHED_STATION_REMOTE);
if (skb)
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}
@@ -1361,10 +1355,10 @@ static int hdd_get_connected_station_info(struct hdd_context *hdd_ctx,
hdd_info("buflen %d hdrlen %d", nl_buf_len, NLMSG_HDRLEN);
skb = cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
nl_buf_len);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
nl_buf_len);
if (!skb) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
goto fail;
}
@@ -1418,12 +1412,10 @@ static int hdd_get_connected_station_info(struct hdd_context *hdd_ctx,
}
}
return cfg80211_vendor_cmd_reply(skb);
return wlan_cfg80211_vendor_cmd_reply(skb);
fail:
if (skb)
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}
@@ -2167,7 +2159,6 @@ static int hdd_get_connected_station_info_ex(struct hdd_context *hdd_ctx,
nl_buf_len = NLMSG_HDRLEN;
nl_buf_len += nla_attr_size(QDF_MAC_ADDR_SIZE);
status = ucfg_mlme_get_sap_get_peer_info(hdd_ctx->psoc,
&sap_get_peer_info);
if (status != QDF_STATUS_SUCCESS)
@@ -2180,9 +2171,10 @@ static int hdd_get_connected_station_info_ex(struct hdd_context *hdd_ctx,
nl_buf_len += nla_attr_size(sizeof(sta_flags)) +
nla_attr_size(sizeof(guard_interval));
skb = cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy, nl_buf_len);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
nl_buf_len);
if (!skb) {
hdd_err_rl("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err_rl("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
goto fail;
}
@@ -2242,12 +2234,10 @@ static int hdd_get_connected_station_info_ex(struct hdd_context *hdd_ctx,
}
}
return cfg80211_vendor_cmd_reply(skb);
return wlan_cfg80211_vendor_cmd_reply(skb);
fail:
if (skb)
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}
@@ -2335,50 +2325,48 @@ static int hdd_get_station_info_ex(struct hdd_context *hdd_ctx,
nl_buf_len += hdd_get_pmf_bcn_protect_stats_len(adapter);
connect_fail_rsn_len = hdd_get_connect_fail_reason_code_len(adapter);
nl_buf_len += connect_fail_rsn_len;
nl_buf_len += hdd_get_uplink_delay_len(adapter);
if (!nl_buf_len) {
hdd_err_rl("Failed to get bcn pmf stats");
return -EINVAL;
}
nl_buf_len += NLMSG_HDRLEN;
skb = cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy, nl_buf_len);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
nl_buf_len);
if (!skb) {
hdd_err_rl("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err_rl("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
return -ENOMEM;
}
if (hdd_add_pmf_bcn_protect_stats(skb, adapter)) {
hdd_err_rl("hdd_add_pmf_bcn_protect_stats fail");
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}
if (connect_fail_rsn_len) {
if (hdd_add_connect_fail_reason_code(skb, adapter)) {
hdd_err_rl("hdd_add_connect_fail_reason_code fail");
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -ENOMEM;
}
}
if (big_data_stats_req) {
if (hdd_big_data_pack_resp_nlmsg(skb, adapter, hdd_ctx)) {
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}
}
if (QDF_IS_STATUS_ERROR(hdd_add_uplink_delay(adapter, skb))) {
hdd_err_rl("hdd_add_uplink_delay fail");
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}
ret = cfg80211_vendor_cmd_reply(skb);
ret = wlan_cfg80211_vendor_cmd_reply(skb);
hdd_reset_roam_params(hdd_ctx->psoc, adapter->vdev_id);
return ret;
}

Переглянути файл

@@ -944,7 +944,7 @@ static void hdd_link_layer_process_peer_stats(struct hdd_adapter *adapter,
{
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
struct wifi_peer_info *peer_info;
struct sk_buff *vendor_event;
struct sk_buff *skb;
int status, i;
struct nlattr *peers;
int num_rate;
@@ -964,26 +964,26 @@ static void hdd_link_layer_process_peer_stats(struct hdd_adapter *adapter,
* that number of rates shall not exceed beyond 50 with
* the sizeof (struct wifi_rate_stat) being 32.
*/
vendor_event = cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
LL_STATS_EVENT_BUF_SIZE);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
LL_STATS_EVENT_BUF_SIZE);
if (!vendor_event) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
if (!skb) {
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
return;
}
if (nla_put_u32(vendor_event,
if (nla_put_u32(skb,
QCA_WLAN_VENDOR_ATTR_LL_STATS_TYPE,
QCA_WLAN_VENDOR_ATTR_LL_STATS_TYPE_PEER) ||
nla_put_u32(vendor_event,
nla_put_u32(skb,
QCA_WLAN_VENDOR_ATTR_LL_STATS_RESULTS_MORE_DATA,
more_data) ||
nla_put_u32(vendor_event,
nla_put_u32(skb,
QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_NUM_PEERS,
peer_stat->num_peers)) {
hdd_err("QCA_WLAN_VENDOR_ATTR put fail");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(skb);
return;
}
@@ -993,27 +993,27 @@ static void hdd_link_layer_process_peer_stats(struct hdd_adapter *adapter,
if (peer_stat->num_peers) {
struct nlattr *peer_nest;
peer_nest = nla_nest_start(vendor_event,
peer_nest = nla_nest_start(skb,
QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO);
if (!peer_nest) {
hdd_err("nla_nest_start failed");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(skb);
return;
}
for (i = 1; i <= peer_stat->num_peers; i++) {
peers = nla_nest_start(vendor_event, i);
peers = nla_nest_start(skb, i);
if (!peers) {
hdd_err("nla_nest_start failed");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(skb);
return;
}
num_rate = peer_info->num_rate;
if (!put_wifi_peer_info(peer_info, vendor_event)) {
if (!put_wifi_peer_info(peer_info, skb)) {
hdd_err("put_wifi_peer_info fail");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(skb);
return;
}
@@ -1021,12 +1021,12 @@ static void hdd_link_layer_process_peer_stats(struct hdd_adapter *adapter,
((uint8_t *)peer_stat->peer_info +
(i * sizeof(struct wifi_peer_info)) +
(num_rate * sizeof(struct wifi_rate_stat)));
nla_nest_end(vendor_event, peers);
nla_nest_end(skb, peers);
}
nla_nest_end(vendor_event, peer_nest);
nla_nest_end(skb, peer_nest);
}
cfg80211_vendor_cmd_reply(vendor_event);
wlan_cfg80211_vendor_cmd_reply(skb);
}
#if defined(WLAN_FEATURE_11BE_MLO) && defined(CFG80211_11BE_BASIC)
@@ -1086,7 +1086,7 @@ hdd_link_layer_process_iface_stats(struct hdd_adapter *adapter,
struct wifi_interface_stats *if_stat,
u32 num_peers)
{
struct sk_buff *vendor_event;
struct sk_buff *skb;
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
if (if_stat->vdev_id != adapter->vdev_id) {
@@ -1108,11 +1108,11 @@ hdd_link_layer_process_iface_stats(struct hdd_adapter *adapter,
* a call on the limit based on the data requirements on
* interface statistics.
*/
vendor_event = cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
LL_STATS_EVENT_BUF_SIZE);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(hdd_ctx->wiphy,
LL_STATS_EVENT_BUF_SIZE);
if (!vendor_event) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
if (!skb) {
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
return;
}
@@ -1120,17 +1120,17 @@ hdd_link_layer_process_iface_stats(struct hdd_adapter *adapter,
if (!hdd_get_interface_info(adapter, &if_stat->info)) {
hdd_err("hdd_get_interface_info get fail");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(skb);
return;
}
if (!put_wifi_iface_stats(if_stat, num_peers, vendor_event)) {
if (!put_wifi_iface_stats(if_stat, num_peers, skb)) {
hdd_err("put_wifi_iface_stats fail");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(skb);
return;
}
cfg80211_vendor_cmd_reply(vendor_event);
wlan_cfg80211_vendor_cmd_reply(skb);
}
/**
@@ -1296,12 +1296,12 @@ static void hdd_llstats_post_radio_stats(struct hdd_adapter *adapter,
* sizeof (struct wifi_channel_stats) being 24 bytes.
*/
vendor_event = cfg80211_vendor_cmd_alloc_reply_skb(
vendor_event = wlan_cfg80211_vendor_cmd_alloc_reply_skb(
hdd_ctx->wiphy,
LL_STATS_EVENT_BUF_SIZE);
if (!vendor_event) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_llstats_free_radio_stats(radiostat);
goto failure;
}
@@ -1377,12 +1377,12 @@ static void hdd_llstats_post_radio_stats(struct hdd_adapter *adapter,
goto failure;
}
cfg80211_vendor_cmd_reply(vendor_event);
wlan_cfg80211_vendor_cmd_reply(vendor_event);
hdd_llstats_free_radio_stats(radiostat);
return;
failure:
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
hdd_llstats_free_radio_stats(radiostat);
}
@@ -2615,9 +2615,9 @@ __wlan_hdd_cfg80211_ll_stats_clear(struct wiphy *wiphy,
return -EINVAL;
}
skb = cfg80211_vendor_cmd_alloc_reply_skb(wiphy,
2 * sizeof(u32) +
2 * NLMSG_HDRLEN);
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(wiphy,
2 * sizeof(u32) +
2 * NLMSG_HDRLEN);
if (!skb) {
hdd_err("skb allocation failed");
return -ENOMEM;
@@ -2630,7 +2630,7 @@ __wlan_hdd_cfg80211_ll_stats_clear(struct wiphy *wiphy,
QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_CONFIG_STOP_RSP,
stopReq)) {
hdd_err("LL_STATS_CLR put fail");
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
return -EINVAL;
}
@@ -2649,7 +2649,7 @@ __wlan_hdd_cfg80211_ll_stats_clear(struct wiphy *wiphy,
hdd_exit();
return cfg80211_vendor_cmd_reply(skb);
return wlan_cfg80211_vendor_cmd_reply(skb);
}
/**
@@ -3306,11 +3306,12 @@ void wlan_hdd_cfg80211_link_layer_stats_ext_callback(hdd_handle_t ctx,
}
index = QCA_NL80211_VENDOR_SUBCMD_LL_STATS_EXT_INDEX;
skb = cfg80211_vendor_event_alloc(hdd_ctx->wiphy,
NULL, LL_STATS_EVENT_BUF_SIZE + NLMSG_HDRLEN,
index, GFP_KERNEL);
skb = wlan_cfg80211_vendor_event_alloc(hdd_ctx->wiphy, NULL,
LL_STATS_EVENT_BUF_SIZE +
NLMSG_HDRLEN,
index, GFP_KERNEL);
if (!skb) {
hdd_err("cfg80211_vendor_event_alloc failed.");
hdd_err("wlan_cfg80211_vendor_event_alloc failed.");
return;
}
@@ -3337,9 +3338,9 @@ void wlan_hdd_cfg80211_link_layer_stats_ext_callback(hdd_handle_t ctx,
}
if (status == 0)
cfg80211_vendor_event(skb, GFP_KERNEL);
wlan_cfg80211_vendor_event(skb, GFP_KERNEL);
else
kfree_skb(skb);
wlan_cfg80211_vendor_free_skb(skb);
hdd_exit();
}
@@ -3996,6 +3997,8 @@ void wlan_hdd_cfg80211_stats_ext_callback(hdd_handle_t hdd_handle,
int status;
int ret_val;
struct hdd_adapter *adapter;
enum qca_nl80211_vendor_subcmds_index index =
QCA_NL80211_VENDOR_SUBCMD_STATS_EXT_INDEX;
status = wlan_hdd_validate_context(hdd_ctx);
if (status)
@@ -4007,16 +4010,14 @@ void wlan_hdd_cfg80211_stats_ext_callback(hdd_handle_t hdd_handle,
return;
}
vendor_event = cfg80211_vendor_event_alloc(hdd_ctx->wiphy,
NULL,
data->event_data_len +
sizeof(uint32_t) +
NLMSG_HDRLEN + NLMSG_HDRLEN,
QCA_NL80211_VENDOR_SUBCMD_STATS_EXT_INDEX,
GFP_KERNEL);
vendor_event = wlan_cfg80211_vendor_event_alloc(hdd_ctx->wiphy, NULL,
data->event_data_len +
sizeof(uint32_t) +
NLMSG_HDRLEN +
NLMSG_HDRLEN,
index, GFP_KERNEL);
if (!vendor_event) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return;
}
@@ -4024,7 +4025,7 @@ void wlan_hdd_cfg80211_stats_ext_callback(hdd_handle_t hdd_handle,
adapter->dev->ifindex);
if (ret_val) {
hdd_err("QCA_WLAN_VENDOR_ATTR_IFINDEX put fail");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return;
}
@@ -4034,12 +4035,12 @@ void wlan_hdd_cfg80211_stats_ext_callback(hdd_handle_t hdd_handle,
if (ret_val) {
hdd_err("QCA_WLAN_VENDOR_ATTR_STATS_EXT put fail");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return;
}
cfg80211_vendor_event(vendor_event, GFP_KERNEL);
wlan_cfg80211_vendor_event(vendor_event, GFP_KERNEL);
}
@@ -4051,6 +4052,8 @@ wlan_hdd_cfg80211_stats_ext2_callback(hdd_handle_t hdd_handle,
int status;
uint32_t data_size, hole_info_size;
struct sk_buff *vendor_event;
enum qca_nl80211_vendor_subcmds_index index =
QCA_NL80211_VENDOR_SUBCMD_STATS_EXT_INDEX;
status = wlan_hdd_validate_context(hdd_ctx);
if (0 != status)
@@ -4064,12 +4067,11 @@ wlan_hdd_cfg80211_stats_ext2_callback(hdd_handle_t hdd_handle,
hole_info_size = (pmsg->hole_cnt)*sizeof(pmsg->hole_info_array[0]);
data_size = sizeof(struct sir_sme_rx_aggr_hole_ind) + hole_info_size;
vendor_event = cfg80211_vendor_event_alloc(hdd_ctx->wiphy,
NULL,
data_size + NLMSG_HDRLEN + NLMSG_HDRLEN,
QCA_NL80211_VENDOR_SUBCMD_STATS_EXT_INDEX,
GFP_KERNEL);
vendor_event = wlan_cfg80211_vendor_event_alloc(hdd_ctx->wiphy, NULL,
data_size +
NLMSG_HDRLEN +
NLMSG_HDRLEN,
index, GFP_KERNEL);
if (!vendor_event) {
hdd_err("vendor_event_alloc failed for STATS_EXT2");
return;
@@ -4080,7 +4082,7 @@ wlan_hdd_cfg80211_stats_ext2_callback(hdd_handle_t hdd_handle,
pmsg->hole_cnt)) {
hdd_err("%s put fail",
"QCA_WLAN_VENDOR_ATTR_RX_AGGREGATION_STATS_HOLES_NUM");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return;
}
if (nla_put(vendor_event,
@@ -4089,11 +4091,11 @@ wlan_hdd_cfg80211_stats_ext2_callback(hdd_handle_t hdd_handle,
(void *)(pmsg->hole_info_array))) {
hdd_err("%s put fail",
"QCA_WLAN_VENDOR_ATTR_RX_AGGREGATION_STATS_HOLES_INFO");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return;
}
cfg80211_vendor_event(vendor_event, GFP_KERNEL);
wlan_cfg80211_vendor_event(vendor_event, GFP_KERNEL);
}
#else
@@ -4378,11 +4380,12 @@ wlan_hdd_cfg80211_roam_events_callback(hdd_handle_t hdd_handle, uint8_t idx,
}
data_size += NLMSG_HDRLEN;
vendor_event = cfg80211_vendor_event_alloc(hdd_ctx->wiphy,
&adapter->wdev,
data_size,
SUBCMD_ROAM_EVENTS_INDEX,
GFP_KERNEL);
vendor_event =
wlan_cfg80211_vendor_event_alloc(hdd_ctx->wiphy,
&adapter->wdev,
data_size,
SUBCMD_ROAM_EVENTS_INDEX,
GFP_KERNEL);
if (!vendor_event) {
hdd_err("vendor_event_alloc failed for ROAM_EVENTS_STATS");
@@ -4400,7 +4403,7 @@ wlan_hdd_cfg80211_roam_events_callback(hdd_handle_t hdd_handle, uint8_t idx,
roam_stats->roam_event_param.roam_scan_state)) {
hdd_err("%s put fail",
"VENDOR_ATTR_ROAM_EVENTS_ROAM_SCAN_STATE");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return;
}
roam_stats->roam_event_param.roam_scan_state =
@@ -4413,7 +4416,7 @@ wlan_hdd_cfg80211_roam_events_callback(hdd_handle_t hdd_handle, uint8_t idx,
roam_stats->trigger[idx].trigger_reason)) {
hdd_err("%s put fail",
"VENDOR_ATTR_ROAM_EVENTS_TRIGGER_REASON");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return;
}
}
@@ -4425,7 +4428,7 @@ wlan_hdd_cfg80211_roam_events_callback(hdd_handle_t hdd_handle, uint8_t idx,
roam_event_param.roam_invoke_fail_reason)) {
hdd_err("%s put fail",
"VENDOR_ATTR_ROAM_EVENTS_INVOKE_FAIL_REASON");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return;
}
roam_stats->roam_event_param.roam_invoke_fail_reason =
@@ -4438,11 +4441,11 @@ wlan_hdd_cfg80211_roam_events_callback(hdd_handle_t hdd_handle, uint8_t idx,
if (nla_put_u32(vendor_event, QCA_WLAN_VENDOR_ATTR_ROAM_EVENTS_TYPE,
roam_event_type)) {
hdd_err("%s put fail", "QCA_WLAN_VENDOR_ATTR_ROAM_EVENTS_TYPE");
kfree_skb(vendor_event);
wlan_cfg80211_vendor_free_skb(vendor_event);
return;
}
cfg80211_vendor_event(vendor_event, GFP_KERNEL);
wlan_cfg80211_vendor_event(vendor_event, GFP_KERNEL);
}
#undef SUBCMD_ROAM_EVENTS_INDEX

Переглянути файл

@@ -391,7 +391,7 @@ hdd_get_curr_thermal_stats_val(struct wiphy *wiphy,
skb = wlan_cfg80211_vendor_cmd_alloc_reply_skb(wiphy,
skb_len);
if (!skb) {
hdd_err_rl("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err_rl("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
ret = -ENOMEM;
goto completed;
}
@@ -756,7 +756,7 @@ hdd_notify_thermal_throttle_handler(struct wlan_objmgr_psoc *psoc,
QCA_NL80211_VENDOR_SUBCMD_THERMAL_INDEX,
GFP_KERNEL);
if (!vendor_event) {
hdd_err("cfg80211_vendor_event_alloc failed");
hdd_err("wlan_cfg80211_vendor_event_alloc failed");
return QDF_STATUS_E_NOMEM;
}
level = convert_level_to_vendor_thermal_level(info->level);

Переглянути файл

@@ -3223,6 +3223,8 @@ static int __wlan_hdd_cfg80211_handle_tsf_cmd(struct wiphy *wiphy,
QDF_STATUS ret;
struct sk_buff *reply_skb;
uint32_t tsf_cmd;
enum qca_nl80211_vendor_subcmds_index index =
QCA_NL80211_VENDOR_SUBCMD_TSF_INDEX;
hdd_enter_dev(wdev->netdev);
@@ -3302,12 +3304,13 @@ static int __wlan_hdd_cfg80211_handle_tsf_cmd(struct wiphy *wiphy,
if (status != 0)
goto end;
reply_skb = cfg80211_vendor_event_alloc(hdd_ctx->wiphy, NULL,
sizeof(uint64_t) * 2 + NLMSG_HDRLEN,
QCA_NL80211_VENDOR_SUBCMD_TSF_INDEX,
GFP_KERNEL);
reply_skb =
wlan_cfg80211_vendor_event_alloc(hdd_ctx->wiphy, NULL,
sizeof(uint64_t) * 2 +
NLMSG_HDRLEN,
index, GFP_KERNEL);
if (!reply_skb) {
hdd_err("cfg80211_vendor_cmd_alloc_reply_skb failed");
hdd_err("wlan_cfg80211_vendor_cmd_alloc_reply_skb failed");
status = -ENOMEM;
goto end;
}
@@ -3318,11 +3321,11 @@ static int __wlan_hdd_cfg80211_handle_tsf_cmd(struct wiphy *wiphy,
QCA_WLAN_VENDOR_ATTR_TSF_SOC_TIMER_VALUE,
tsf_op_resp.soc_time)) {
hdd_err("nla put fail");
kfree_skb(reply_skb);
wlan_cfg80211_vendor_free_skb(reply_skb);
status = -EINVAL;
goto end;
}
status = cfg80211_vendor_cmd_reply(reply_skb);
status = wlan_cfg80211_vendor_cmd_reply(reply_skb);
}
end: