summaryrefslogtreecommitdiff
path: root/wl_cfgvendor.c
diff options
context:
space:
mode:
Diffstat (limited to 'wl_cfgvendor.c')
-rw-r--r--wl_cfgvendor.c939
1 files changed, 866 insertions, 73 deletions
diff --git a/wl_cfgvendor.c b/wl_cfgvendor.c
index 21cd379..5cb2a59 100644
--- a/wl_cfgvendor.c
+++ b/wl_cfgvendor.c
@@ -2059,7 +2059,7 @@ wl_cfgvendor_rtt_set_config(struct wiphy *wiphy, struct wireless_dev *wdev,
err = -EINVAL;
goto exit;
}
- WL_INFORM_MEM(("Target addr %s, Channel : %s for RTT \n",
+ WL_MEM(("Target addr %s, Channel : %s for RTT \n",
bcm_ether_ntoa((const struct ether_addr *)&rtt_target->addr,
eabuf),
wf_chspec_ntoa(rtt_target->chanspec, chanbuf)));
@@ -3713,7 +3713,7 @@ wl_cfgvendor_nan_parse_dp_sec_info_args(struct wiphy *wiphy,
}
break;
case NAN_ATTRIBUTE_PUBLISH_ID:
- cmd_data->pub_id = nla_get_u16(iter);
+ cmd_data->pub_id = nla_get_u32(iter);
break;
case NAN_ATTRIBUTE_NDP_ID:
cmd_data->ndp_instance_id = nla_get_u32(iter);
@@ -4089,11 +4089,11 @@ wl_cfgvendor_nan_parse_discover_args(struct wiphy *wiphy,
/* Nan Publish/Subscribe request Attributes */
case NAN_ATTRIBUTE_PUBLISH_ID:
- if (nla_len(iter) != sizeof(uint16)) {
+ if (nla_len(iter) != sizeof(uint32)) {
ret = -EINVAL;
goto exit;
}
- cmd_data->pub_id = nla_get_u16(iter);
+ cmd_data->pub_id = nla_get_u32(iter);
cmd_data->local_id = cmd_data->pub_id;
break;
case NAN_ATTRIBUTE_MAC_ADDR:
@@ -5360,7 +5360,7 @@ wl_cfgvendor_nan_dp_ind_event_data_filler(struct sk_buff *msg,
nan_event_data_t *event_data) {
int ret = BCME_OK;
- ret = nla_put_u16(msg, NAN_ATTRIBUTE_PUBLISH_ID,
+ ret = nla_put_u32(msg, NAN_ATTRIBUTE_PUBLISH_ID,
event_data->pub_id);
if (unlikely(ret)) {
WL_ERR(("Failed to put pub ID, ret=%d\n", ret));
@@ -5458,7 +5458,7 @@ wl_cfgvendor_nan_svc_terminate_event_filler(struct sk_buff *msg,
goto fail;
}
} else {
- ret = nla_put_u16(msg, NAN_ATTRIBUTE_PUBLISH_ID,
+ ret = nla_put_u32(msg, NAN_ATTRIBUTE_PUBLISH_ID,
event_data->local_inst_id);
if (unlikely(ret)) {
WL_ERR(("Failed to put local inst id, ret=%d\n", ret));
@@ -5609,7 +5609,7 @@ wl_cfgvendor_nan_sub_match_event_filler(struct sk_buff *msg,
WL_ERR(("Failed to put handle, ret=%d\n", ret));
goto fail;
}
- ret = nla_put_u16(msg, NAN_ATTRIBUTE_PUBLISH_ID, event_data->pub_id);
+ ret = nla_put_u32(msg, NAN_ATTRIBUTE_PUBLISH_ID, event_data->pub_id);
if (unlikely(ret)) {
WL_ERR(("Failed to put pub id, ret=%d\n", ret));
goto fail;
@@ -5882,7 +5882,7 @@ wl_cfgvendor_send_nan_event(struct wiphy *wiphy, struct net_device *dev,
switch (event_id) {
case GOOGLE_NAN_EVENT_DE_EVENT: {
- WL_INFORM_MEM(("[NAN] GOOGLE_NAN_DE_EVENT cluster id=" MACDBG "nmi= " MACDBG "\n",
+ WL_DBG(("[NAN] GOOGLE_NAN_DE_EVENT cluster id=" MACDBG "nmi= " MACDBG "\n",
MAC2STRDBG(event_data->clus_id.octet),
MAC2STRDBG(event_data->local_nmi.octet)));
ret = wl_cfgvendor_nan_de_event_filler(msg, event_data);
@@ -7542,6 +7542,12 @@ wl_cfgvendor_dbg_file_dump(struct wiphy *wiphy,
buf->data_buf[0], NULL, (uint32)buf->len,
DLD_BUF_TYPE_SPECIAL, &pos);
break;
+#ifdef DHD_SDTC_ETB_DUMP
+ case DUMP_BUF_ATTR_SDTC_ETB_DUMP:
+ ret = dhd_sdtc_etb_hal_file_dump(bcmcfg_to_prmry_ndev(cfg),
+ buf->data_buf[0], (uint32)buf->len);
+ break;
+#endif /* DHD_SDTC_ETB_DUMP */
#ifdef DHD_SSSR_DUMP
#ifdef DHD_SSSR_DUMP_BEFORE_SR
case DUMP_BUF_ATTR_SSSR_C0_D11_BEFORE :
@@ -8339,6 +8345,34 @@ static int wl_cfgvendor_nla_put_pktlogdump_data(struct sk_buff *skb,
}
#endif /* DHD_PKT_LOGGING */
+#ifdef DHD_SDTC_ETB_DUMP
+static int wl_cfgvendor_nla_put_sdtc_etb_dump_data(struct sk_buff *skb, struct net_device *ndev)
+{
+ char memdump_path[MEMDUMP_PATH_LEN];
+ int ret = BCME_OK;
+
+ dhd_get_memdump_filename(ndev, memdump_path, MEMDUMP_PATH_LEN, "sdtc_etb_dump");
+ ret = nla_put_string(skb, DUMP_FILENAME_ATTR_SDTC_ETB_DUMP, memdump_path);
+ if (unlikely(ret)) {
+ WL_ERR(("Failed to nla put stdc etb dump path, ret=%d\n", ret));
+ goto exit;
+ }
+ /* should we give exact length sdtc dump FW has reported dump ? */
+ ret = nla_put_u32(skb, DUMP_LEN_ATTR_SDTC_ETB_DUMP, DHD_SDTC_ETB_MEMPOOL_SIZE);
+ if (unlikely(ret)) {
+ WL_ERR(("Failed to nla put stdc etb length, ret=%d\n", ret));
+ goto exit;
+ }
+
+exit:
+ return ret;
+}
+#else
+static int wl_cfgvendor_nla_put_sdtc_etb_dump_data(struct sk_buff *skb, struct net_device *ndev)
+{
+ return BCME_OK;
+}
+#endif /* DHD_SDTC_ETB_DUMP */
static int wl_cfgvendor_nla_put_memdump_data(struct sk_buff *skb,
struct net_device *ndev, const uint32 fw_len)
{
@@ -8377,6 +8411,9 @@ static int wl_cfgvendor_nla_put_dump_data(dhd_pub_t *dhd_pub, struct sk_buff *sk
((ret = wl_cfgvendor_nla_put_sssr_dump_data(skb, ndev)) < 0)) {
goto done;
}
+ if ((ret = wl_cfgvendor_nla_put_sdtc_etb_dump_data(skb, ndev)) < 0) {
+ goto done;
+ }
#ifdef DHD_PKT_LOGGING
if ((ret = wl_cfgvendor_nla_put_pktlogdump_data(skb, ndev, FALSE)) < 0) {
goto done;
@@ -8617,12 +8654,12 @@ static int wl_cfgvendor_dbg_get_rx_pkt_fates(struct wiphy *wiphy,
#endif /* DBG_PKT_MON */
#ifdef KEEP_ALIVE
+/* max size of IP packet for keep alive */
+#define MKEEP_ALIVE_IP_PKT_MAX 256
+
static int wl_cfgvendor_start_mkeep_alive(struct wiphy *wiphy, struct wireless_dev *wdev,
const void *data, int len)
{
- /* max size of IP packet for keep alive */
- const int MKEEP_ALIVE_IP_PKT_MAX = 256;
-
int ret = BCME_OK, rem, type;
uint8 mkeep_alive_id = 0;
uint8 *ip_pkt = NULL;
@@ -8742,6 +8779,15 @@ static int wl_cfgvendor_stop_mkeep_alive(struct wiphy *wiphy, struct wireless_de
#endif /* KEEP_ALIVE */
#if defined(APF)
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+const struct nla_policy apf_atrribute_policy[APF_ATTRIBUTE_MAX] = {
+ [APF_ATTRIBUTE_VERSION] = { .type = NLA_U32 },
+ [APF_ATTRIBUTE_MAX_LEN] = { .type = NLA_U32 },
+ [APF_ATTRIBUTE_PROGRAM] = { .type = NLA_BINARY },
+ [APF_ATTRIBUTE_PROGRAM_LEN] = { .type = NLA_U32 },
+};
+#endif /* LINUX_VERSION >= 5.3 */
+
static int
wl_cfgvendor_apf_get_capabilities(struct wiphy *wiphy,
struct wireless_dev *wdev, const void *data, int len)
@@ -9355,6 +9401,482 @@ exit:
}
#endif /* WL_SAR_TX_POWER */
+#ifdef WL_CUSTOM_MAPPING_OF_DSCP
+#define UNUSED_PRIO 0xffu
+enum andr_user_ac {
+ BEST_EFFORT = 0,
+ BACKGROUND = 1,
+ VIDEO = 2,
+ VOICE = 3
+};
+const uint8 default_dscp_mapping_table[UP_TABLE_MAX] =
+{
+ PRIO_8021D_BE, UNUSED_PRIO, UNUSED_PRIO, UNUSED_PRIO, /* 00 ~ 03 */
+ UNUSED_PRIO, UNUSED_PRIO, UNUSED_PRIO, UNUSED_PRIO, /* 04 ~ 07 */
+ PRIO_8021D_BK, UNUSED_PRIO, PRIO_8021D_BE, UNUSED_PRIO, /* 08 ~ 11 */
+ PRIO_8021D_BE, UNUSED_PRIO, PRIO_8021D_BE, UNUSED_PRIO, /* 12 ~ 15 */
+ PRIO_8021D_BE, UNUSED_PRIO, PRIO_8021D_EE, UNUSED_PRIO, /* 16 ~ 19 */
+ PRIO_8021D_EE, UNUSED_PRIO, PRIO_8021D_EE, UNUSED_PRIO, /* 20 ~ 23 */
+ PRIO_8021D_CL, UNUSED_PRIO, PRIO_8021D_CL, UNUSED_PRIO, /* 24 ~ 27 */
+ PRIO_8021D_CL, UNUSED_PRIO, PRIO_8021D_CL, UNUSED_PRIO, /* 28 ~ 31 */
+ PRIO_8021D_CL, UNUSED_PRIO, PRIO_8021D_CL, UNUSED_PRIO, /* 32 ~ 35 */
+ PRIO_8021D_CL, UNUSED_PRIO, PRIO_8021D_CL, UNUSED_PRIO, /* 36 ~ 39 */
+ PRIO_8021D_VI, UNUSED_PRIO, UNUSED_PRIO, UNUSED_PRIO, /* 40 ~ 43 */
+ PRIO_8021D_VO, UNUSED_PRIO, PRIO_8021D_VO, UNUSED_PRIO, /* 44 ~ 47 */
+ PRIO_8021D_NC, UNUSED_PRIO, UNUSED_PRIO, UNUSED_PRIO, /* 48 ~ 51 */
+ UNUSED_PRIO, UNUSED_PRIO, UNUSED_PRIO, UNUSED_PRIO, /* 52 ~ 55 */
+ PRIO_8021D_NC, UNUSED_PRIO, UNUSED_PRIO, UNUSED_PRIO, /* 56 ~ 59 */
+ UNUSED_PRIO, UNUSED_PRIO, UNUSED_PRIO, UNUSED_PRIO /* 60 ~ 63 */
+};
+
+static uint8 custom_dscp2priomap[UP_TABLE_MAX];
+
+static int
+wl_set_dscp_deafult_priority(uint8* table)
+{
+ int err = BCME_ERROR;
+
+ err = memcpy_s(table, UP_TABLE_MAX, default_dscp_mapping_table,
+ sizeof(default_dscp_mapping_table));
+ if (unlikely(err)) {
+ WL_ERR(("Fail to set the defalut dscp.\n"));
+ }
+ return err;
+}
+
+static int
+wl_cfgvendor_custom_mapping_of_dscp(struct wiphy *wiphy,
+ struct wireless_dev *wdev, const void *data, int len)
+{
+ struct bcm_cfg80211 *cfg;
+ int err = BCME_OK, rem, type;
+ const struct nlattr *iter;
+ uint32 dscp_start = 0;
+ uint32 dscp_end = 0;
+ uint32 access_category = 0;
+ uint32 priority = 0;
+ uint32 dscp;
+ int32 def_dscp_pri;
+
+ cfg = wl_cfg80211_get_bcmcfg();
+ if (!cfg || !cfg->wdev) {
+ err = BCME_NOTUP;
+ goto exit;
+ }
+ if (!cfg->up_table) {
+ cfg->up_table = (uint8 *) custom_dscp2priomap;
+ }
+
+ nla_for_each_attr(iter, data, len, rem) {
+ type = nla_type(iter);
+ if (type == CUSTOM_SETTING_ATTRIBUTE_DSCP_START) {
+ dscp_start = nla_get_u32(iter);
+ WL_INFORM(("got to dscp_stat value [%d]\n", dscp_start));
+ if (dscp_start >= UP_TABLE_MAX) {
+ err = -EINVAL;
+ goto exit;
+ }
+ } else if (type == CUSTOM_SETTING_ATTRIBUTE_DSCP_END) {
+ dscp_end = nla_get_u32(iter);
+ WL_INFORM(("got to dscp_end value [%d]\n", dscp_end));
+ if (dscp_end >= UP_TABLE_MAX) {
+ err = -EINVAL;
+ goto exit;
+ }
+ } else if (type == CUSTOM_SETTING_ATTRIBUTE_ACCESS_CATEGORY) {
+ access_category = nla_get_u32(iter);
+ WL_INFORM(("got to access_category value [%d]\n", access_category));
+ switch (access_category) {
+ case BEST_EFFORT:
+ priority = PRIO_8021D_BE;
+ break;
+ case BACKGROUND:
+ priority = PRIO_8021D_BK;
+ break;
+ case VIDEO:
+ priority = PRIO_8021D_VI;
+ break;
+ case VOICE:
+ priority = PRIO_8021D_VO;
+ break;
+ default:
+ err = -EINVAL;
+ goto exit;
+ break;
+ }
+ } else {
+ WL_ERR(("Unknown attr type: %d\n", type));
+ err = -EINVAL;
+ goto exit;
+ }
+ }
+
+ if (dscp_end < dscp_start) {
+ WL_ERR(("dscp_end is lower than dscp_start.\n"));
+ return -EINVAL;
+ }
+
+ /* Verify to set DSCP of user priority. */
+ for (dscp = dscp_start; dscp <= dscp_end; dscp++) {
+ def_dscp_pri = default_dscp_mapping_table[dscp];
+ if ((def_dscp_pri != 0xff) && (def_dscp_pri != priority)) {
+ err = -EINVAL;
+ WL_ERR(("Request priority is %d from %d to %d.\n",
+ priority, dscp_start, dscp_end));
+ WL_ERR(("But conflict with defalut priority of DSCP %d and priority %d.\n",
+ dscp, def_dscp_pri));
+ goto exit;
+ }
+ }
+
+ /* Set the custom DSCP of user priority. */
+ err = memset_s(cfg->up_table + dscp_start, UP_TABLE_MAX - dscp_start, priority,
+ dscp_end - dscp_start + 1);
+ if (unlikely(err)) {
+ WL_ERR(("Fail to set table\n"));
+ }
+
+exit:
+ return err;
+
+}
+
+static int
+wl_cfgvendor_custom_mapping_of_dscp_reset(struct wiphy *wiphy,
+ struct wireless_dev *wdev, const void *data, int len)
+{
+ struct bcm_cfg80211 *cfg;
+
+ cfg = wl_cfg80211_get_bcmcfg();
+ if (!cfg || !cfg->wdev) {
+ return BCME_NOTUP;
+ }
+
+ if (!cfg->up_table) {
+ WL_INFORM(("Custom table not set yet.\n"));
+ return BCME_NOTREADY;
+ }
+
+ return wl_set_dscp_deafult_priority(cfg->up_table);
+}
+#endif /* WL_CUSTOM_MAPPING_OF_DSCP */
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+const struct nla_policy andr_wifi_attr_policy[ANDR_WIFI_ATTRIBUTE_MAX] = {
+ [ANDR_WIFI_ATTRIBUTE_NUM_FEATURE_SET] = { .type = NLA_U32 },
+ [ANDR_WIFI_ATTRIBUTE_FEATURE_SET] = { .type = NLA_U32 },
+ [ANDR_WIFI_ATTRIBUTE_RANDOM_MAC_OUI] = { .type = NLA_NUL_STRING, .len = 3 },
+ [ANDR_WIFI_ATTRIBUTE_NODFS_SET] = { .type = NLA_U32 },
+ [ANDR_WIFI_ATTRIBUTE_COUNTRY] = { .type = NLA_NUL_STRING, .len = 3 },
+ [ANDR_WIFI_ATTRIBUTE_ND_OFFLOAD_VALUE] = { .type = NLA_U8 },
+ [ANDR_WIFI_ATTRIBUTE_TCPACK_SUP_VALUE] = { .type = NLA_U32 },
+ [ANDR_WIFI_ATTRIBUTE_LATENCY_MODE] = { .type = NLA_U32 },
+ /* Dont see ANDR_WIFI_ATTRIBUTE_RANDOM_MAC being used currently */
+ [ANDR_WIFI_ATTRIBUTE_RANDOM_MAC] = { .type = NLA_U32 },
+ [ANDR_WIFI_ATTRIBUTE_TX_POWER_SCENARIO] = { .type = NLA_S8 },
+ [ANDR_WIFI_ATTRIBUTE_THERMAL_MITIGATION] = { .type = NLA_S8 },
+ [ANDR_WIFI_ATTRIBUTE_THERMAL_COMPLETION_WINDOW] = { .type = NLA_U32 },
+};
+
+const struct nla_policy dump_buf_policy[DUMP_BUF_ATTR_MAX] = {
+ [DUMP_BUF_ATTR_MEMDUMP] = { .type = NLA_BINARY },
+ [DUMP_BUF_ATTR_SSSR_C0_D11_BEFORE] = { .type = NLA_BINARY },
+ [DUMP_BUF_ATTR_SSSR_C0_D11_AFTER] = { .type = NLA_BINARY },
+ [DUMP_BUF_ATTR_SSSR_C1_D11_BEFORE] = { .type = NLA_BINARY },
+ [DUMP_BUF_ATTR_SSSR_C1_D11_AFTER] = { .type = NLA_BINARY },
+ [DUMP_BUF_ATTR_SSSR_C2_D11_BEFORE] = { .type = NLA_BINARY },
+ [DUMP_BUF_ATTR_SSSR_C2_D11_AFTER] = { .type = NLA_BINARY },
+ [DUMP_BUF_ATTR_SSSR_DIG_BEFORE] = { .type = NLA_BINARY },
+ [DUMP_BUF_ATTR_SSSR_DIG_AFTER] = { .type = NLA_BINARY },
+ [DUMP_BUF_ATTR_TIMESTAMP] = { .type = NLA_BINARY },
+ [DUMP_BUF_ATTR_GENERAL_LOG] = { .type = NLA_BINARY },
+ [DUMP_BUF_ATTR_ECNTRS] = { .type = NLA_BINARY },
+ [DUMP_BUF_ATTR_SPECIAL_LOG] = { .type = NLA_BINARY },
+ [DUMP_BUF_ATTR_DHD_DUMP] = { .type = NLA_BINARY },
+ [DUMP_BUF_ATTR_EXT_TRAP] = { .type = NLA_BINARY },
+ [DUMP_BUF_ATTR_HEALTH_CHK] = { .type = NLA_BINARY },
+ [DUMP_BUF_ATTR_PRESERVE_LOG] = { .type = NLA_BINARY },
+ [DUMP_BUF_ATTR_COOKIE] = { .type = NLA_BINARY },
+ [DUMP_BUF_ATTR_FLOWRING_DUMP] = { .type = NLA_BINARY },
+ [DUMP_BUF_ATTR_PKTLOG] = { .type = NLA_BINARY },
+ [DUMP_BUF_ATTR_PKTLOG_DEBUG] = { .type = NLA_BINARY },
+ [DUMP_BUF_ATTR_STATUS_LOG] = { .type = NLA_BINARY },
+ [DUMP_BUF_ATTR_AXI_ERROR] = { .type = NLA_BINARY },
+ [DUMP_BUF_ATTR_RTT_LOG] = { .type = NLA_BINARY },
+ [DUMP_BUF_ATTR_SDTC_ETB_DUMP] = { .type = NLA_BINARY },
+};
+
+const struct nla_policy andr_dbg_policy[DEBUG_ATTRIBUTE_MAX] = {
+ [DEBUG_ATTRIBUTE_GET_DRIVER] = { .type = NLA_BINARY },
+ [DEBUG_ATTRIBUTE_GET_FW] = { .type = NLA_BINARY },
+ [DEBUG_ATTRIBUTE_RING_ID] = { .type = NLA_U32 },
+ [DEBUG_ATTRIBUTE_RING_NAME] = { .type = NLA_NUL_STRING },
+ [DEBUG_ATTRIBUTE_RING_FLAGS] = { .type = NLA_U32 },
+ [DEBUG_ATTRIBUTE_LOG_LEVEL] = { .type = NLA_U32 },
+ [DEBUG_ATTRIBUTE_LOG_TIME_INTVAL] = { .type = NLA_U32 },
+ [DEBUG_ATTRIBUTE_LOG_MIN_DATA_SIZE] = { .type = NLA_U32 },
+ [DEBUG_ATTRIBUTE_FW_DUMP_LEN] = { .type = NLA_U32 },
+ [DEBUG_ATTRIBUTE_FW_DUMP_DATA] = { .type = NLA_U64 },
+ [DEBUG_ATTRIBUTE_FW_ERR_CODE] = { .type = NLA_U32 },
+ [DEBUG_ATTRIBUTE_RING_DATA] = { .type = NLA_BINARY },
+ [DEBUG_ATTRIBUTE_RING_STATUS] = { .type = NLA_BINARY },
+ [DEBUG_ATTRIBUTE_RING_NUM] = { .type = NLA_U32 },
+ [DEBUG_ATTRIBUTE_DRIVER_DUMP_LEN] = { .type = NLA_U32 },
+ [DEBUG_ATTRIBUTE_DRIVER_DUMP_DATA] = { .type = NLA_BINARY },
+ [DEBUG_ATTRIBUTE_PKT_FATE_NUM] = { .type = NLA_U32 },
+ [DEBUG_ATTRIBUTE_PKT_FATE_DATA] = { .type = NLA_U64 },
+ [DEBUG_ATTRIBUTE_HANG_REASON] = { .type = NLA_BINARY },
+};
+
+const struct nla_policy brcm_drv_attr_policy[BRCM_ATTR_DRIVER_MAX] = {
+ [BRCM_ATTR_DRIVER_CMD] = { .type = NLA_NUL_STRING },
+ [BRCM_ATTR_DRIVER_KEY_PMK] = { .type = NLA_BINARY, .len = WSEC_MAX_PASSPHRASE_LEN },
+ [BRCM_ATTR_DRIVER_FEATURE_FLAGS] = { .type = NLA_BINARY, .len =
+ ((BRCM_WLAN_VENDOR_FEATURES_MAX / 8) + 1) },
+ [BRCM_ATTR_DRIVER_RAND_MAC] = { .type = NLA_BINARY, .len = ETHER_ADDR_LEN },
+ [BRCM_ATTR_SAE_PWE] = { .type = NLA_U32 },
+};
+
+const struct nla_policy rtt_attr_policy[RTT_ATTRIBUTE_MAX] = {
+ [RTT_ATTRIBUTE_TARGET_CNT] = { .type = NLA_U8 },
+ [RTT_ATTRIBUTE_TARGET_INFO] = { .type = NLA_NESTED },
+ [RTT_ATTRIBUTE_TARGET_MAC] = { .type = NLA_BINARY, .len = ETHER_ADDR_LEN },
+ [RTT_ATTRIBUTE_TARGET_TYPE] = { .type = NLA_U8 },
+ [RTT_ATTRIBUTE_TARGET_PEER] = { .type = NLA_U8 },
+ [RTT_ATTRIBUTE_TARGET_CHAN] = { .type = NLA_BINARY },
+ [RTT_ATTRIBUTE_TARGET_PERIOD] = { .type = NLA_U32 },
+ [RTT_ATTRIBUTE_TARGET_NUM_BURST] = { .type = NLA_U32 },
+ [RTT_ATTRIBUTE_TARGET_NUM_FTM_BURST] = { .type = NLA_U32 },
+ [RTT_ATTRIBUTE_TARGET_NUM_RETRY_FTM] = { .type = NLA_U32 },
+ [RTT_ATTRIBUTE_TARGET_NUM_RETRY_FTMR] = { .type = NLA_U32 },
+ [RTT_ATTRIBUTE_TARGET_LCI] = { .type = NLA_U8 },
+ [RTT_ATTRIBUTE_TARGET_LCR] = { .type = NLA_U8 },
+ [RTT_ATTRIBUTE_TARGET_BURST_DURATION] = { .type = NLA_U32 },
+ [RTT_ATTRIBUTE_TARGET_PREAMBLE] = { .type = NLA_U8 },
+ [RTT_ATTRIBUTE_TARGET_BW] = { .type = NLA_U8 },
+ [RTT_ATTRIBUTE_RESULTS_COMPLETE] = { .type = NLA_U32 },
+ [RTT_ATTRIBUTE_RESULTS_PER_TARGET] = { .type = NLA_NESTED },
+ [RTT_ATTRIBUTE_RESULT_CNT] = { .type = NLA_U32 },
+ [RTT_ATTRIBUTE_RESULT] = { .type = NLA_BINARY, .len = sizeof(rtt_result_t) },
+ [RTT_ATTRIBUTE_RESULT_DETAIL] = { .type = NLA_BINARY,
+ .len = sizeof(struct rtt_result_detail) },
+};
+
+#ifdef RSSI_MONITOR_SUPPORT
+const struct nla_policy rssi_monitor_attr_policy[RSSI_MONITOR_ATTRIBUTE_MAX] = {
+ [RSSI_MONITOR_ATTRIBUTE_MAX_RSSI] = { .type = NLA_U32 },
+ [RSSI_MONITOR_ATTRIBUTE_MIN_RSSI] = { .type = NLA_U32 },
+ [RSSI_MONITOR_ATTRIBUTE_START] = { .type = NLA_U32 }
+};
+#endif /* RSSI_MONITOR_SUPPORT */
+
+#ifdef KEEP_ALIVE
+const struct nla_policy mkeep_alive_attr_policy[MKEEP_ALIVE_ATTRIBUTE_MAX] = {
+ [MKEEP_ALIVE_ATTRIBUTE_ID] = { .type = NLA_U8 },
+ [MKEEP_ALIVE_ATTRIBUTE_IP_PKT] = { .type = NLA_BINARY, .len = MKEEP_ALIVE_IP_PKT_MAX },
+ [MKEEP_ALIVE_ATTRIBUTE_IP_PKT_LEN] = { .type = NLA_U16 },
+ [MKEEP_ALIVE_ATTRIBUTE_SRC_MAC_ADDR] = { .type = NLA_BINARY, .len = ETHER_ADDR_LEN },
+ [MKEEP_ALIVE_ATTRIBUTE_DST_MAC_ADDR] = { .type = NLA_BINARY, .len = ETHER_ADDR_LEN },
+ [MKEEP_ALIVE_ATTRIBUTE_PERIOD_MSEC] = { .type = NLA_U32 },
+ [MKEEP_ALIVE_ATTRIBUTE_ETHER_TYPE] = { .type = NLA_U16 }
+};
+#endif /* KEEP_ALIVE */
+#ifdef WL_NAN
+const struct nla_policy nan_attr_policy[NAN_ATTRIBUTE_MAX] = {
+ [NAN_ATTRIBUTE_2G_SUPPORT] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_5G_SUPPORT] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_CLUSTER_LOW] = { .type = NLA_U16, .len = sizeof(uint16) },
+ [NAN_ATTRIBUTE_CLUSTER_HIGH] = { .type = NLA_U16, .len = sizeof(uint16) },
+ [NAN_ATTRIBUTE_SID_BEACON] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_SUB_SID_BEACON] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_SYNC_DISC_2G_BEACON] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_SYNC_DISC_5G_BEACON] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_SDF_2G_SUPPORT] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_SDF_5G_SUPPORT] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_HOP_COUNT_LIMIT] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_RANDOM_TIME] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_MASTER_PREF] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_OUI] = { .type = NLA_U32, .len = sizeof(uint32) },
+ [NAN_ATTRIBUTE_WARMUP_TIME] = { .type = NLA_U16, .len = sizeof(uint16) },
+ [NAN_ATTRIBUTE_CHANNEL] = { .type = NLA_U32, .len = sizeof(uint32) },
+ [NAN_ATTRIBUTE_24G_CHANNEL] = { .type = NLA_U32, .len = sizeof(uint32) },
+ [NAN_ATTRIBUTE_5G_CHANNEL] = { .type = NLA_U32, .len = sizeof(uint32) },
+ [NAN_ATTRIBUTE_CONF_CLUSTER_VAL] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_DWELL_TIME] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_SCAN_PERIOD] = { .type = NLA_U16, .len = sizeof(uint16) },
+ [NAN_ATTRIBUTE_DWELL_TIME_5G] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_SCAN_PERIOD_5G] = { .type = NLA_U16, .len = sizeof(uint16) },
+ [NAN_ATTRIBUTE_AVAIL_BIT_MAP] = { .type = NLA_U32, .len = sizeof(uint32) },
+ [NAN_ATTRIBUTE_ENTRY_CONTROL] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_RSSI_CLOSE] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_RSSI_MIDDLE] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_RSSI_PROXIMITY] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_RSSI_CLOSE_5G] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_RSSI_MIDDLE_5G] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_RSSI_PROXIMITY_5G] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_RSSI_WINDOW_SIZE] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_CIPHER_SUITE_TYPE] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_SCID_LEN] = { .type = NLA_U32, .len = sizeof(uint32) },
+ [NAN_ATTRIBUTE_SCID] = { .type = NLA_BINARY, .len = MAX_SCID_LEN },
+ [NAN_ATTRIBUTE_2G_AWAKE_DW] = { .type = NLA_U32, .len = sizeof(uint32) },
+ [NAN_ATTRIBUTE_5G_AWAKE_DW] = { .type = NLA_U32, .len = sizeof(uint32) },
+ [NAN_ATTRIBUTE_DISC_IND_CFG] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_MAC_ADDR] = { .type = NLA_BINARY, .len = ETHER_ADDR_LEN },
+ [NAN_ATTRIBUTE_RANDOMIZATION_INTERVAL] = { .type = NLA_U32, .len = sizeof(uint32) },
+ [NAN_ATTRIBUTE_CMD_USE_NDPE] = { .type = NLA_U32, .len = sizeof(uint32) },
+ [NAN_ATTRIBUTE_ENABLE_MERGE] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_DISCOVERY_BEACON_INTERVAL] = { .type = NLA_U32, .len = sizeof(uint32) },
+ [NAN_ATTRIBUTE_NSS] = { .type = NLA_U32, .len = sizeof(uint32) },
+ [NAN_ATTRIBUTE_ENABLE_RANGING] = { .type = NLA_U32, .len = sizeof(uint32) },
+ [NAN_ATTRIBUTE_DW_EARLY_TERM] = { .type = NLA_U32, .len = sizeof(uint32) },
+ [NAN_ATTRIBUTE_TRANSAC_ID] = { .type = NLA_U16, .len = sizeof(uint16) },
+ [NAN_ATTRIBUTE_PUBLISH_ID] = { .type = NLA_U32, .len = sizeof(uint32) },
+ [NAN_ATTRIBUTE_SERVICE_SPECIFIC_INFO_LEN] = { .type = NLA_U16, .len = sizeof(uint16) },
+ [NAN_ATTRIBUTE_SERVICE_SPECIFIC_INFO] = { .type = NLA_BINARY, .len =
+ NAN_MAX_SERVICE_SPECIFIC_INFO_LEN },
+ [NAN_ATTRIBUTE_SUBSCRIBE_ID] = { .type = NLA_U16, .len = sizeof(uint16) },
+ [NAN_ATTRIBUTE_SUBSCRIBE_TYPE] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_PUBLISH_COUNT] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_PUBLISH_TYPE] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_PERIOD] = { .type = NLA_U16, .len = sizeof(uint16) },
+ [NAN_ATTRIBUTE_TTL] = { .type = NLA_U16, .len = sizeof(uint16) },
+ [NAN_ATTRIBUTE_SERVICE_NAME_LEN] = { .type = NLA_U16, .len = sizeof(uint16) },
+ [NAN_ATTRIBUTE_SERVICE_NAME] = { .type = NLA_BINARY, .len = WL_NAN_SVC_HASH_LEN },
+ [NAN_ATTRIBUTE_PEER_ID] = { .type = NLA_U32, .len = sizeof(uint32) },
+ [NAN_ATTRIBUTE_INST_ID] = { .type = NLA_U16, .len = sizeof(uint16) },
+ [NAN_ATTRIBUTE_SUBSCRIBE_COUNT] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_SSIREQUIREDFORMATCHINDICATION] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_SUBSCRIBE_MATCH] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_PUBLISH_MATCH] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_SERVICERESPONSEFILTER] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_SERVICERESPONSEINCLUDE] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_USESERVICERESPONSEFILTER] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_RX_MATCH_FILTER_LEN] = { .type = NLA_U16, .len = sizeof(uint16) },
+ [NAN_ATTRIBUTE_RX_MATCH_FILTER] = { .type = NLA_BINARY, .len = MAX_MATCH_FILTER_LEN },
+ [NAN_ATTRIBUTE_TX_MATCH_FILTER_LEN] = { .type = NLA_U16, .len = sizeof(uint16) },
+ [NAN_ATTRIBUTE_TX_MATCH_FILTER] = { .type = NLA_BINARY, .len = MAX_MATCH_FILTER_LEN },
+ [NAN_ATTRIBUTE_MAC_ADDR_LIST_NUM_ENTRIES] = { .type = NLA_U16, .len = sizeof(uint16) },
+ [NAN_ATTRIBUTE_MAC_ADDR_LIST] = { .type = NLA_BINARY, .len =
+ (NAN_SRF_MAX_MAC*ETHER_ADDR_LEN) },
+ [NAN_ATTRIBUTE_TX_TYPE] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_SDE_CONTROL_CONFIG_DP] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_SDE_CONTROL_RANGE_SUPPORT] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_SDE_CONTROL_DP_TYPE] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_SDE_CONTROL_SECURITY] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_RECV_IND_CFG] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_KEY_TYPE] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_KEY_LEN] = { .type = NLA_U32, .len = sizeof(uint32) },
+ [NAN_ATTRIBUTE_KEY_DATA] = { .type = NLA_BINARY, .len = NAN_MAX_PMK_LEN },
+ [NAN_ATTRIBUTE_RSSI_THRESHOLD_FLAG] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_SDEA_SERVICE_SPECIFIC_INFO_LEN] = { .type = NLA_U16, .len =
+ sizeof(uint16) },
+ [NAN_ATTRIBUTE_SDEA_SERVICE_SPECIFIC_INFO] = { .type = NLA_BINARY, .len =
+ MAX_SDEA_SVC_INFO_LEN },
+ [NAN_ATTRIBUTE_SECURITY] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_RANGING_INTERVAL] = { .type = NLA_U32, .len = sizeof(uint32) },
+ [NAN_ATTRIBUTE_RANGING_INGRESS_LIMIT] = { .type = NLA_U32, .len = sizeof(uint32) },
+ [NAN_ATTRIBUTE_RANGING_EGRESS_LIMIT] = { .type = NLA_U32, .len = sizeof(uint32) },
+ [NAN_ATTRIBUTE_RANGING_INDICATION] = { .type = NLA_U32, .len = sizeof(uint32) },
+ [NAN_ATTRIBUTE_SVC_RESPONDER_POLICY] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_NDP_ID] = { .type = NLA_U32, .len = sizeof(uint32) },
+ [NAN_ATTRIBUTE_IFACE] = { .type = NLA_BINARY, .len = IFNAMSIZ+1 },
+ [NAN_ATTRIBUTE_QOS] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_RSP_CODE] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_INST_COUNT] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_PEER_DISC_MAC_ADDR] = { .type = NLA_BINARY, .len = ETHER_ADDR_LEN },
+ [NAN_ATTRIBUTE_PEER_NDI_MAC_ADDR] = { .type = NLA_BINARY, .len = ETHER_ADDR_LEN },
+ [NAN_ATTRIBUTE_IF_ADDR] = { .type = NLA_BINARY, .len = ETHER_ADDR_LEN },
+ [NAN_ATTRIBUTE_ENTRY_CONTROL] = { .type = NLA_U8, .len = sizeof(uint8) },
+ [NAN_ATTRIBUTE_AVAIL_BIT_MAP] = { .type = NLA_U32, .len = sizeof(uint32) },
+ [NAN_ATTRIBUTE_CHANNEL] = { .type = NLA_U32, .len = sizeof(uint32) },
+ [NAN_ATTRIBUTE_NO_CONFIG_AVAIL] = { .type = NLA_U8, .len = sizeof(uint8) },
+};
+#endif /* WL_NAN */
+
+const struct nla_policy gscan_attr_policy[GSCAN_ATTRIBUTE_MAX] = {
+ [GSCAN_ATTRIBUTE_BAND] = { .type = NLA_U32 },
+ [GSCAN_ATTRIBUTE_NUM_CHANNELS] = { .type = NLA_U32 },
+ [GSCAN_ATTRIBUTE_CHANNEL_LIST] = { .type = NLA_BINARY },
+ [GSCAN_ATTRIBUTE_WHITELIST_SSID] = { .type = NLA_BINARY, .len = IEEE80211_MAX_SSID_LEN },
+ [GSCAN_ATTRIBUTE_NUM_WL_SSID] = { .type = NLA_U32 },
+ [GSCAN_ATTRIBUTE_WL_SSID_LEN] = { .type = NLA_U32 },
+ [GSCAN_ATTRIBUTE_WL_SSID_FLUSH] = { .type = NLA_U32 },
+ [GSCAN_ATTRIBUTE_WHITELIST_SSID_ELEM] = { .type = NLA_NESTED },
+ /* length is sizeof(wl_ssid_whitelist_t) * MAX_SSID_WHITELIST_NUM */
+ [GSCAN_ATTRIBUTE_NUM_BSSID] = { .type = NLA_U32 },
+ [GSCAN_ATTRIBUTE_BSSID_PREF_LIST] = { .type = NLA_NESTED },
+ /* length is sizeof(wl_bssid_pref_list_t) * MAX_BSSID_PREF_LIST_NUM */
+ [GSCAN_ATTRIBUTE_BSSID_PREF_FLUSH] = { .type = NLA_U32 },
+ [GSCAN_ATTRIBUTE_BSSID_PREF] = { .type = NLA_BINARY, .len = ETH_ALEN },
+ [GSCAN_ATTRIBUTE_RSSI_MODIFIER] = { .type = NLA_U32 },
+ [GSCAN_ATTRIBUTE_BSSID_BLACKLIST_FLUSH] = { .type = NLA_U32 },
+ [GSCAN_ATTRIBUTE_BLACKLIST_BSSID] = { .type = NLA_BINARY, .len = ETH_ALEN },
+ [GSCAN_ATTRIBUTE_ROAM_STATE_SET] = { .type = NLA_U32 },
+};
+
+const struct nla_policy wake_stat_attr_policy[WAKE_STAT_ATTRIBUTE_MAX] = {
+ [WAKE_STAT_ATTRIBUTE_TOTAL_CMD_EVENT] = { .type = NLA_U32 },
+#ifdef CUSTOM_WAKE_REASON_STATS
+ [WAKE_STAT_ATTRIBUTE_CMD_EVENT_WAKE] = { .type = NLA_BINARY,
+ .len = (MAX_WAKE_REASON_STATS * sizeof(int))},
+#else
+ [WAKE_STAT_ATTRIBUTE_CMD_EVENT_WAKE] = { .type = NLA_BINARY,
+ .len = (WLC_E_LAST * sizeof(uint))},
+#endif /* CUSTOM_WAKE_REASON_STATS */
+ [WAKE_STAT_ATTRIBUTE_CMD_EVENT_COUNT] = { .type = NLA_U32 },
+ [WAKE_STAT_ATTRIBUTE_CMD_EVENT_COUNT_USED] = { .type = NLA_U32 },
+ [WAKE_STAT_ATTRIBUTE_TOTAL_DRIVER_FW] = { .type = NLA_U32 },
+ [WAKE_STAT_ATTRIBUTE_DRIVER_FW_WAKE] = { .type = NLA_U32 },
+ [WAKE_STAT_ATTRIBUTE_DRIVER_FW_COUNT] = { .type = NLA_U32 },
+ [WAKE_STAT_ATTRIBUTE_DRIVER_FW_COUNT_USED] = { .type = NLA_U32 },
+ [WAKE_STAT_ATTRIBUTE_TOTAL_RX_DATA_WAKE] = { .type = NLA_U32 },
+ [WAKE_STAT_ATTRIBUTE_RX_UNICAST_COUNT] = { .type = NLA_U32 },
+ [WAKE_STAT_ATTRIBUTE_RX_MULTICAST_COUNT] = { .type = NLA_U32 },
+ [WAKE_STAT_ATTRIBUTE_RX_BROADCAST_COUNT] = { .type = NLA_U32 },
+ [WAKE_STAT_ATTRIBUTE_RX_ICMP_PKT] = { .type = NLA_U32 },
+ [WAKE_STAT_ATTRIBUTE_RX_ICMP6_PKT] = { .type = NLA_U32 },
+ [WAKE_STAT_ATTRIBUTE_RX_ICMP6_RA] = { .type = NLA_U32 },
+ [WAKE_STAT_ATTRIBUTE_RX_ICMP6_NA] = { .type = NLA_U32 },
+ [WAKE_STAT_ATTRIBUTE_RX_ICMP6_NS] = { .type = NLA_U32 },
+ [WAKE_STAT_ATTRIBUTE_IPV4_RX_MULTICAST_ADD_CNT] = { .type = NLA_U32 },
+ [WAKE_STAT_ATTRIBUTE_IPV6_RX_MULTICAST_ADD_CNT] = { .type = NLA_U32 },
+ [WAKE_STAT_ATTRIBUTE_OTHER_RX_MULTICAST_ADD_CNT] = { .type = NLA_U32 },
+};
+
+#ifdef WL_SOFTAP_ACS
+const struct nla_policy acs_attr_policy[BRCM_VENDOR_ATTR_ACS_LAST] = {
+ [BRCM_VENDOR_ATTR_ACS_CHANNEL_INVALID] = { .type = NLA_U8 },
+ [BRCM_VENDOR_ATTR_ACS_PRIMARY_FREQ] = { .type = NLA_U32 },
+ [BRCM_VENDOR_ATTR_ACS_SECONDARY_FREQ] = { .type = NLA_U32 },
+ [BRCM_VENDOR_ATTR_ACS_VHT_SEG0_CENTER_CHANNEL] = { .type = NLA_U8 },
+ [BRCM_VENDOR_ATTR_ACS_VHT_SEG1_CENTER_CHANNEL] = { .type = NLA_U8 },
+ [BRCM_VENDOR_ATTR_ACS_HW_MODE] = { .type = NLA_U8 },
+ [BRCM_VENDOR_ATTR_ACS_HT_ENABLED] = { .type = NLA_U8 },
+ [BRCM_VENDOR_ATTR_ACS_HT40_ENABLED] = { .type = NLA_U8 },
+ [BRCM_VENDOR_ATTR_ACS_VHT_ENABLED] = { .type = NLA_U8 },
+ [BRCM_VENDOR_ATTR_ACS_CHWIDTH] = { .type = NLA_U16 },
+ [BRCM_VENDOR_ATTR_ACS_CH_LIST] = { .type = NLA_BINARY },
+ [BRCM_VENDOR_ATTR_ACS_FREQ_LIST] = { .type = NLA_BINARY },
+};
+#endif /* WL_SOFTAP_ACS */
+
+const struct nla_policy hal_start_attr_policy[SET_HAL_START_ATTRIBUTE_MAX] = {
+ [0] = { .strict_start_type = 0 },
+ [SET_HAL_START_ATTRIBUTE_DEINIT] = { .type = NLA_UNSPEC },
+ [SET_HAL_START_ATTRIBUTE_PRE_INIT] = { .type = NLA_NUL_STRING },
+ [SET_HAL_START_ATTRIBUTE_EVENT_SOCK_PID] = { .type = NLA_U32 },
+};
+
+#ifdef WL_CUSTOM_MAPPING_OF_DSCP
+const struct nla_policy custom_setting_attr_policy[CUSTOM_SETTING_ATTRIBUTE_MAX] = {
+ [CUSTOM_SETTING_ATTRIBUTE_DSCP_START] = { .type = NLA_U32 },
+ [CUSTOM_SETTING_ATTRIBUTE_DSCP_END] = { .type = NLA_U32 },
+ [CUSTOM_SETTING_ATTRIBUTE_ACCESS_CATEGORY] = { .type = NLA_U32 },
+};
+#endif /* WL_CUSTOM_MAPPING_OF_DSCP */
+
+#endif /* LINUX_VERSION >= 5.3 */
+
static struct wiphy_vendor_command wl_vendor_cmds [] = {
{
{
@@ -9362,7 +9884,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = BRCM_VENDOR_SCMD_PRIV_STR
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_priv_string_handler
+ .doit = wl_cfgvendor_priv_string_handler,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = brcm_drv_attr_policy,
+ .maxattr = BRCM_ATTR_DRIVER_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
#ifdef BCM_PRIV_CMD_SUPPORT
{
@@ -9371,7 +9897,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = BRCM_VENDOR_SCMD_BCM_STR
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_priv_bcm_handler
+ .doit = wl_cfgvendor_priv_bcm_handler,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = brcm_drv_attr_policy,
+ .maxattr = BRCM_ATTR_DRIVER_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
#endif /* BCM_PRIV_CMD_SUPPORT */
#if defined(WL_SAE) || defined(WL_CLIENT_SAE)
@@ -9390,7 +9920,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = BRCM_VENDOR_SCMD_SET_CONNECT_PARAMS
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_connect_params_handler
+ .doit = wl_cfgvendor_connect_params_handler,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = brcm_drv_attr_policy,
+ .maxattr = BRCM_ATTR_DRIVER_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9398,7 +9932,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = BRCM_VENDOR_SCMD_SET_START_AP_PARAMS
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_start_ap_params_handler
+ .doit = wl_cfgvendor_start_ap_params_handler,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = brcm_drv_attr_policy,
+ .maxattr = BRCM_ATTR_DRIVER_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
#ifdef GSCAN_SUPPORT
{
@@ -9465,7 +10003,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = GSCAN_SUBCMD_GET_CHANNEL_LIST
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_gscan_get_channel_list
+ .doit = wl_cfgvendor_gscan_get_channel_list,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = gscan_attr_policy,
+ .maxattr = GSCAN_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
#endif /* GSCAN_SUPPORT || DHD_GET_VALID_CHANNELS */
#ifdef RTT_SUPPORT
@@ -9475,7 +10017,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = RTT_SUBCMD_SET_CONFIG
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_rtt_set_config
+ .doit = wl_cfgvendor_rtt_set_config,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = rtt_attr_policy,
+ .maxattr = RTT_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9483,7 +10029,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = RTT_SUBCMD_CANCEL_CONFIG
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_rtt_cancel_config
+ .doit = wl_cfgvendor_rtt_cancel_config,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = rtt_attr_policy,
+ .maxattr = RTT_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9491,7 +10041,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = RTT_SUBCMD_GETCAPABILITY
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_rtt_get_capability
+ .doit = wl_cfgvendor_rtt_get_capability,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = rtt_attr_policy,
+ .maxattr = RTT_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9499,7 +10053,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = RTT_SUBCMD_GETAVAILCHANNEL
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_rtt_get_responder_info
+ .doit = wl_cfgvendor_rtt_get_responder_info,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = rtt_attr_policy,
+ .maxattr = RTT_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9507,7 +10065,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = RTT_SUBCMD_SET_RESPONDER
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_rtt_set_responder
+ .doit = wl_cfgvendor_rtt_set_responder,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = rtt_attr_policy,
+ .maxattr = RTT_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9515,7 +10077,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = RTT_SUBCMD_CANCEL_RESPONDER
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_rtt_cancel_responder
+ .doit = wl_cfgvendor_rtt_cancel_responder,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = rtt_attr_policy,
+ .maxattr = RTT_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
#endif /* RTT_SUPPORT */
{
@@ -9524,7 +10090,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = ANDR_WIFI_SUBCMD_GET_FEATURE_SET
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_get_feature_set
+ .doit = wl_cfgvendor_get_feature_set,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = andr_wifi_attr_policy,
+ .maxattr = ANDR_WIFI_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9532,7 +10102,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = ANDR_WIFI_SUBCMD_GET_FEATURE_SET_MATRIX
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_get_feature_set_matrix
+ .doit = wl_cfgvendor_get_feature_set_matrix,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = andr_wifi_attr_policy,
+ .maxattr = ANDR_WIFI_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9540,7 +10114,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = ANDR_WIFI_RANDOM_MAC_OUI
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_set_rand_mac_oui
+ .doit = wl_cfgvendor_set_rand_mac_oui,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = andr_wifi_attr_policy,
+ .maxattr = ANDR_WIFI_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
#ifdef CUSTOM_FORCE_NODFS_FLAG
{
@@ -9549,7 +10127,12 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = ANDR_WIFI_NODFS_CHANNELS
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_set_nodfs_flag
+ .doit = wl_cfgvendor_set_nodfs_flag,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = andr_wifi_attr_policy,
+ .maxattr = ANDR_WIFI_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
+
},
#endif /* CUSTOM_FORCE_NODFS_FLAG */
{
@@ -9558,7 +10141,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = ANDR_WIFI_SET_COUNTRY
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_set_country
+ .doit = wl_cfgvendor_set_country,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = andr_wifi_attr_policy,
+ .maxattr = ANDR_WIFI_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
#ifdef LINKSTAT_SUPPORT
{
@@ -9616,7 +10203,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = WIFI_SUBCMD_SET_SSID_WHITELIST
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_set_ssid_whitelist
+ .doit = wl_cfgvendor_set_ssid_whitelist,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = gscan_attr_policy,
+ .maxattr = GSCAN_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
@@ -9625,7 +10216,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = WIFI_SUBCMD_SET_BSSID_BLACKLIST
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_set_bssid_blacklist
+ .doit = wl_cfgvendor_set_bssid_blacklist,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = gscan_attr_policy,
+ .maxattr = GSCAN_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
#endif /* GSCAN_SUPPORT || ROAMEXP_SUPPORT */
#ifdef ROAMEXP_SUPPORT
@@ -9635,7 +10230,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = WIFI_SUBCMD_FW_ROAM_POLICY
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_set_fw_roaming_state
+ .doit = wl_cfgvendor_set_fw_roaming_state,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = gscan_attr_policy,
+ .maxattr = GSCAN_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9652,7 +10251,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = DEBUG_GET_VER
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_dbg_get_version
+ .doit = wl_cfgvendor_dbg_get_version,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = andr_dbg_policy,
+ .maxattr = DEBUG_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
#ifdef DHD_LOG_DUMP
{
@@ -9661,7 +10264,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = DEBUG_GET_FILE_DUMP_BUF
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_dbg_file_dump
+ .doit = wl_cfgvendor_dbg_file_dump,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = dump_buf_policy,
+ .maxattr = DUMP_BUF_ATTR_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
#endif /* DHD_LOG_DUMP */
@@ -9680,7 +10287,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = DEBUG_GET_MEM_DUMP
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_dbg_get_mem_dump
+ .doit = wl_cfgvendor_dbg_get_mem_dump,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = andr_dbg_policy,
+ .maxattr = DEBUG_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9688,7 +10299,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = DEBUG_START_LOGGING
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_dbg_start_logging
+ .doit = wl_cfgvendor_dbg_start_logging,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = andr_dbg_policy,
+ .maxattr = DEBUG_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9704,7 +10319,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = DEBUG_GET_RING_STATUS
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_dbg_get_ring_status
+ .doit = wl_cfgvendor_dbg_get_ring_status,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = andr_dbg_policy,
+ .maxattr = DEBUG_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9712,7 +10331,12 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = DEBUG_GET_RING_DATA
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_dbg_get_ring_data
+ .doit = wl_cfgvendor_dbg_get_ring_data,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = andr_dbg_policy,
+ .maxattr = DEBUG_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
+
},
#endif /* DEBUGABILITY */
{
@@ -9738,7 +10362,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = DEBUG_GET_TX_PKT_FATES
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_dbg_get_tx_pkt_fates
+ .doit = wl_cfgvendor_dbg_get_tx_pkt_fates,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = andr_dbg_policy,
+ .maxattr = DEBUG_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9746,7 +10374,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = DEBUG_GET_RX_PKT_FATES
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_dbg_get_rx_pkt_fates
+ .doit = wl_cfgvendor_dbg_get_rx_pkt_fates,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = andr_dbg_policy,
+ .maxattr = DEBUG_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
#endif /* DBG_PKT_MON */
#ifdef KEEP_ALIVE
@@ -9756,7 +10388,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = WIFI_OFFLOAD_SUBCMD_START_MKEEP_ALIVE
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_start_mkeep_alive
+ .doit = wl_cfgvendor_start_mkeep_alive,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = mkeep_alive_attr_policy,
+ .maxattr = MKEEP_ALIVE_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9764,7 +10400,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = WIFI_OFFLOAD_SUBCMD_STOP_MKEEP_ALIVE
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_stop_mkeep_alive
+ .doit = wl_cfgvendor_stop_mkeep_alive,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = mkeep_alive_attr_policy,
+ .maxattr = MKEEP_ALIVE_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
#endif /* KEEP_ALIVE */
#ifdef WL_NAN
@@ -9774,7 +10414,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = NAN_WIFI_SUBCMD_ENABLE
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_nan_start_handler
+ .doit = wl_cfgvendor_nan_start_handler,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = nan_attr_policy,
+ .maxattr = NAN_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9782,7 +10426,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = NAN_WIFI_SUBCMD_DISABLE
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_nan_stop_handler
+ .doit = wl_cfgvendor_nan_stop_handler,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = nan_attr_policy,
+ .maxattr = NAN_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9790,7 +10438,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = NAN_WIFI_SUBCMD_CONFIG
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_nan_config_handler
+ .doit = wl_cfgvendor_nan_config_handler,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = nan_attr_policy,
+ .maxattr = NAN_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9798,7 +10450,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = NAN_WIFI_SUBCMD_REQUEST_PUBLISH
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_nan_req_publish
+ .doit = wl_cfgvendor_nan_req_publish,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = nan_attr_policy,
+ .maxattr = NAN_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9806,7 +10462,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = NAN_WIFI_SUBCMD_REQUEST_SUBSCRIBE
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_nan_req_subscribe
+ .doit = wl_cfgvendor_nan_req_subscribe,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = nan_attr_policy,
+ .maxattr = NAN_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9814,7 +10474,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = NAN_WIFI_SUBCMD_CANCEL_PUBLISH
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_nan_cancel_publish
+ .doit = wl_cfgvendor_nan_cancel_publish,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = nan_attr_policy,
+ .maxattr = NAN_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9822,7 +10486,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = NAN_WIFI_SUBCMD_CANCEL_SUBSCRIBE
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_nan_cancel_subscribe
+ .doit = wl_cfgvendor_nan_cancel_subscribe,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = nan_attr_policy,
+ .maxattr = NAN_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9830,7 +10498,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = NAN_WIFI_SUBCMD_TRANSMIT
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_nan_transmit
+ .doit = wl_cfgvendor_nan_transmit,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = nan_attr_policy,
+ .maxattr = NAN_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9847,7 +10519,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = NAN_WIFI_SUBCMD_DATA_PATH_IFACE_CREATE
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_nan_data_path_iface_create
+ .doit = wl_cfgvendor_nan_data_path_iface_create,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = nan_attr_policy,
+ .maxattr = NAN_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9855,7 +10531,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = NAN_WIFI_SUBCMD_DATA_PATH_IFACE_DELETE
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_nan_data_path_iface_delete
+ .doit = wl_cfgvendor_nan_data_path_iface_delete,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = nan_attr_policy,
+ .maxattr = NAN_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9863,7 +10543,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = NAN_WIFI_SUBCMD_DATA_PATH_REQUEST
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_nan_data_path_request
+ .doit = wl_cfgvendor_nan_data_path_request,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = nan_attr_policy,
+ .maxattr = NAN_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9871,7 +10555,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = NAN_WIFI_SUBCMD_DATA_PATH_RESPONSE
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_nan_data_path_response
+ .doit = wl_cfgvendor_nan_data_path_response,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = nan_attr_policy,
+ .maxattr = NAN_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9879,7 +10567,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = NAN_WIFI_SUBCMD_DATA_PATH_END
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_nan_data_path_end
+ .doit = wl_cfgvendor_nan_data_path_end,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = nan_attr_policy,
+ .maxattr = NAN_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
#ifdef WL_NAN_DISC_CACHE
{
@@ -9888,7 +10580,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = NAN_WIFI_SUBCMD_DATA_PATH_SEC_INFO
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_nan_data_path_sec_info
+ .doit = wl_cfgvendor_nan_data_path_sec_info,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = nan_attr_policy,
+ .maxattr = NAN_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
#endif /* WL_NAN_DISC_CACHE */
{
@@ -9905,7 +10601,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = NAN_WIFI_SUBCMD_ENABLE_MERGE
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_nan_enable_merge
+ .doit = wl_cfgvendor_nan_enable_merge,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = nan_attr_policy,
+ .maxattr = NAN_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
#endif /* WL_NAN */
#if defined(APF)
@@ -9915,16 +10615,23 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = APF_SUBCMD_GET_CAPABILITIES
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_apf_get_capabilities
+ .doit = wl_cfgvendor_apf_get_capabilities,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = apf_atrribute_policy,
+ .maxattr = APF_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
-
{
{
.vendor_id = OUI_GOOGLE,
.subcmd = APF_SUBCMD_SET_FILTER
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_apf_set_filter
+ .doit = wl_cfgvendor_apf_set_filter,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = apf_atrribute_policy,
+ .maxattr = APF_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -9932,7 +10639,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = APF_SUBCMD_READ_FILTER_DATA
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_apf_read_filter_data
+ .doit = wl_cfgvendor_apf_read_filter_data,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = apf_atrribute_policy,
+ .maxattr = APF_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
#endif /* APF */
#ifdef NDO_CONFIG_SUPPORT
@@ -9942,7 +10653,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = WIFI_SUBCMD_CONFIG_ND_OFFLOAD
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_configure_nd_offload
+ .doit = wl_cfgvendor_configure_nd_offload,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = andr_wifi_attr_policy,
+ .maxattr = ANDR_WIFI_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
#endif /* NDO_CONFIG_SUPPORT */
#ifdef RSSI_MONITOR_SUPPORT
@@ -9952,7 +10667,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = WIFI_SUBCMD_SET_RSSI_MONITOR
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_set_rssi_monitor
+ .doit = wl_cfgvendor_set_rssi_monitor,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = rssi_monitor_attr_policy,
+ .maxattr = RSSI_MONITOR_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
#endif /* RSSI_MONITOR_SUPPORT */
#ifdef DHD_WAKE_STATUS
@@ -9962,7 +10681,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = DEBUG_GET_WAKE_REASON_STATS
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_get_wake_reason_stats
+ .doit = wl_cfgvendor_get_wake_reason_stats,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = wake_stat_attr_policy,
+ .maxattr = WAKE_STAT_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
#endif /* DHD_WAKE_STATUS */
#ifdef DHDTCPACK_SUPPRESS
@@ -9972,7 +10695,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = WIFI_SUBCMD_CONFIG_TCPACK_SUP
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_set_tcpack_sup_mode
+ .doit = wl_cfgvendor_set_tcpack_sup_mode,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = andr_wifi_attr_policy,
+ .maxattr = ANDR_WIFI_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
#endif /* DHDTCPACK_SUPPRESS */
#if !defined(BCMSUP_4WAY_HANDSHAKE) || (LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0))
@@ -9982,7 +10709,12 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = BRCM_VENDOR_SCMD_SET_PMK
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_set_pmk
+ .doit = wl_cfgvendor_set_pmk,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = brcm_drv_attr_policy,
+ .maxattr = BRCM_ATTR_DRIVER_MAX
+#endif /* LINUX_VERSION >= 5.3 */
+
},
#endif /* !BCMSUP_4WAY_HANDSHAKE || LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0) */
{
@@ -9991,7 +10723,12 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = BRCM_VENDOR_SCMD_GET_FEATURES
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_get_driver_feature
+ .doit = wl_cfgvendor_get_driver_feature,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = brcm_drv_attr_policy,
+ .maxattr = BRCM_ATTR_DRIVER_MAX
+#endif /* LINUX_VERSION >= 5.3 */
+
},
#if defined(WL_CFG80211) && defined(DHD_FILE_DUMP_EVENT)
{
@@ -10010,7 +10747,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = DEBUG_SET_HAL_START
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_set_hal_started
+ .doit = wl_cfgvendor_set_hal_started,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = hal_start_attr_policy,
+ .maxattr = SET_HAL_START_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
{
{
@@ -10026,7 +10767,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = DEBUG_SET_HAL_PID
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_set_hal_pid
+ .doit = wl_cfgvendor_set_hal_pid,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = hal_start_attr_policy,
+ .maxattr = SET_HAL_START_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
#endif /* WL_CFG80211 */
#ifdef WL_P2P_RAND
@@ -10036,7 +10781,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = BRCM_VENDOR_SCMD_SET_MAC
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV,
- .doit = wl_cfgvendor_set_p2p_rand_mac
+ .doit = wl_cfgvendor_set_p2p_rand_mac,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = brcm_drv_attr_policy,
+ .maxattr = BRCM_ATTR_DRIVER_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
#endif /* WL_P2P_RAND */
#ifdef WL_THERMAL_MITIGATION
@@ -10046,7 +10795,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = WIFI_SUBCMD_THERMAL_MITIGATION
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgvendor_thermal_mitigation
+ .doit = wl_cfgvendor_thermal_mitigation,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = andr_wifi_attr_policy,
+ .maxattr = ANDR_WIFI_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
#endif /* WL_THERMAL_MITIGATION */
#ifdef WL_SAR_TX_POWER
@@ -10056,7 +10809,11 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = WIFI_SUBCMD_TX_POWER_SCENARIO
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV,
- .doit = wl_cfgvendor_tx_power_scenario
+ .doit = wl_cfgvendor_tx_power_scenario,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = andr_wifi_attr_policy,
+ .maxattr = ANDR_WIFI_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
},
#endif /* WL_SAR_TX_POWER */
#ifdef WL_SOFTAP_ACS
@@ -10066,9 +10823,39 @@ static struct wiphy_vendor_command wl_vendor_cmds [] = {
.subcmd = BRCM_VENDOR_SCMD_ACS
},
.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
- .doit = wl_cfgscan_acs
+ .doit = wl_cfgscan_acs,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = acs_attr_policy,
+ .maxattr = BRCM_VENDOR_ATTR_ACS_LAST
+#endif /* LINUX_VERSION >= 5.3 */
},
#endif /* WL_SOFTAP_ACS */
+#ifdef WL_CUSTOM_MAPPING_OF_DSCP
+ {
+ {
+ .vendor_id = OUI_GOOGLE,
+ .subcmd = WIFI_SUBCMD_CUSTOM_MAPPING_OF_DSCP
+ },
+ .flags = WIPHY_VENDOR_CMD_NEED_WDEV,
+ .doit = wl_cfgvendor_custom_mapping_of_dscp,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = custom_setting_attr_policy,
+ .maxattr = CUSTOM_SETTING_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
+ },
+ {
+ {
+ .vendor_id = OUI_GOOGLE,
+ .subcmd = WIFI_SUBCMD_CUSTOM_MAPPING_OF_DSCP_RESET
+ },
+ .flags = WIPHY_VENDOR_CMD_NEED_WDEV,
+ .doit = wl_cfgvendor_custom_mapping_of_dscp_reset,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
+ .policy = custom_setting_attr_policy,
+ .maxattr = CUSTOM_SETTING_ATTRIBUTE_MAX
+#endif /* LINUX_VERSION >= 5.3 */
+ },
+#endif /* WL_CUSTOM_MAPPING_OF_DSCP */
};
static const struct nl80211_vendor_cmd_info wl_vendor_events [] = {
@@ -10114,7 +10901,8 @@ static const struct nl80211_vendor_cmd_info wl_vendor_events [] = {
{ OUI_BRCM, BRCM_VENDOR_EVENT_WIPS},
{ OUI_GOOGLE, NAN_ASYNC_RESPONSE_DISABLED},
{ OUI_BRCM, BRCM_VENDOR_EVENT_RCC_INFO},
- { OUI_BRCM, BRCM_VENDOR_EVENT_ACS}
+ { OUI_BRCM, BRCM_VENDOR_EVENT_ACS},
+ { OUI_BRCM, BRCM_VENDOR_EVENT_TWT}
};
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0))
@@ -10126,7 +10914,9 @@ wl_cfgvendor_apply_cmd_policy(struct wiphy *wiphy)
WL_INFORM(("Apply CMD_RAW_DATA policy\n"));
for (i = 0; i < n_cmds; i++) {
- wl_vendor_cmds[i].policy = VENDOR_CMD_RAW_DATA;
+ if (wl_vendor_cmds[i].policy == NULL) {
+ wl_vendor_cmds[i].policy = VENDOR_CMD_RAW_DATA;
+ }
}
}
#endif /* LINUX VER >= 5.3 */
@@ -10158,6 +10948,9 @@ int wl_cfgvendor_attach(struct wiphy *wiphy, dhd_pub_t *dhd)
#ifdef DHD_LOG_DUMP
dhd_os_dbg_register_urgent_notifier(dhd, wl_cfgvendor_dbg_send_file_dump_evt);
#endif /* DHD_LOG_DUMP */
+#ifdef WL_CUSTOM_MAPPING_OF_DSCP
+ (void)wl_set_dscp_deafult_priority(custom_dscp2priomap);
+#endif
return 0;
}