diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2016-06-14 09:38:35 -0600 |
|---|---|---|
| committer | Linux Build Service Account <lnxbuild@localhost> | 2016-06-14 09:38:35 -0600 |
| commit | bfb603a7328941c8f2242ee4227a14e96c4e2bc1 (patch) | |
| tree | 969ecfaf0f4bfba7dbefd0de0d797097588232c8 | |
| parent | d6b021b5825fd8bd97c75ac6aa0bf7a0e7bc24e7 (diff) | |
| parent | a6ec2567d2b7464f301f9d864fad990888798db4 (diff) | |
Promotion of wlan-cld2.driver.lnx.1.0-00032.
CRs Change ID Subject
--------------------------------------------------------------------------------------------------------------
1021382 I3d41f5425e3a170c046941a439d17e06df0c6bef qcacld-2.0: Add capability based logic to mark first pac
688141 Ide2dddc5fcf8c569e9c5bdef69bfa0794bf80419 Release 4.0.11.99
688141 I80149b24fffa19113d6cbd6805974f48e8e525e0 Release 4.0.11.98
1022311 Id016a65b58255b25b973c1904a9715c995f7d34a qcacld-2.0: Avoid dereferencing of NULL pointer
1020078 I9d05cd7b8e051c4e9e4912cf866206ae32ec293d qcacld-2.0: Define data structures for new AP requiremen
1028035 Ib3c023e0a8abc5a43ddd2f757deec563592bd5d6 qcacld-2.0: Fix compilation error in TXTX
962367 I4fab1af6d9b8e34396bb3679f112c7f29bbe9f93 qcacld-2.0: Change NDP_SERVICE_INSTANCE_ID from 16 bits
Change-Id: I0dbac20dee915c003d57a412c5d279e0bb49c356
CRs-Fixed: 1028035, 1022311, 688141, 1020078, 1021382, 962367
| -rw-r--r-- | CORE/CLD_TXRX/HTT/htt.c | 22 | ||||
| -rw-r--r-- | CORE/CLD_TXRX/HTT/htt_rx.c | 16 | ||||
| -rw-r--r-- | CORE/CLD_TXRX/HTT/htt_types.h | 3 | ||||
| -rw-r--r-- | CORE/CLD_TXRX/TXRX/ol_tx_classify.c | 12 | ||||
| -rw-r--r-- | CORE/CLD_TXRX/TXRX/ol_txrx.c | 22 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_nan_datapath.c | 15 | ||||
| -rw-r--r-- | CORE/MAC/inc/qwlan_version.h | 4 | ||||
| -rw-r--r-- | CORE/MAC/inc/sirApi.h | 2 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/include/limSession.h | 3 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/lim/limTypes.h | 1 | ||||
| -rw-r--r-- | CORE/SAP/inc/sapApi.h | 25 | ||||
| -rw-r--r-- | CORE/SAP/src/sapInternal.h | 5 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/ol_htt_api.h | 1 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/ol_txrx_ctrl_api.h | 1 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 4 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.h | 1 | ||||
| -rw-r--r-- | CORE/SME/inc/csrApi.h | 3 | ||||
| -rw-r--r-- | CORE/SME/inc/csrInternal.h | 1 | ||||
| -rw-r--r-- | CORE/WDA/inc/legacy/halMsgApi.h | 1 |
19 files changed, 121 insertions, 21 deletions
diff --git a/CORE/CLD_TXRX/HTT/htt.c b/CORE/CLD_TXRX/HTT/htt.c index f88cbca62c05..40fadc4e91d3 100644 --- a/CORE/CLD_TXRX/HTT/htt.c +++ b/CORE/CLD_TXRX/HTT/htt.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014-2015 The Linux Foundation. All rights reserved. + * Copyright (c) 2011, 2014-2016 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -658,3 +658,23 @@ void htt_clear_bundle_stats(htt_pdev_handle pdev) } #endif +/** + * htt_mark_first_wakeup_packet() - set flag to indicate that + * fw is compatible for marking first packet after wow wakeup + * @pdev: pointer to htt pdev + * @value: 1 for enabled/ 0 for disabled + * + * Return: None + */ +void htt_mark_first_wakeup_packet(htt_pdev_handle pdev, + uint8_t value) +{ + if (!pdev) { + adf_os_print("%s: htt pdev is NULL", __func__); + return; + } + + pdev->cfg.is_first_wakeup_packet = value; +} + + diff --git a/CORE/CLD_TXRX/HTT/htt_rx.c b/CORE/CLD_TXRX/HTT/htt_rx.c index ba34bce3caca..c22edc615ce4 100644 --- a/CORE/CLD_TXRX/HTT/htt_rx.c +++ b/CORE/CLD_TXRX/HTT/htt_rx.c @@ -1368,6 +1368,15 @@ htt_rx_offload_paddr_msdu_pop_ll( #else adf_nbuf_unmap(pdev->osdev, buf, ADF_OS_DMA_FROM_DEVICE); #endif + + if (pdev->cfg.is_first_wakeup_packet) { + if (HTT_RX_IN_ORD_PADDR_IND_MSDU_INFO_GET(*(curr_msdu + 1)) & + FW_MSDU_INFO_FIRST_WAKEUP_M) { + adf_nbuf_update_skb_mark(buf, HTT_MARK_FIRST_WAKEUP_PACKET); + adf_os_print("%s: First packet after WOW Wakeup rcvd\n", __func__); + } + } + msdu_hdr = (u_int32_t *)adf_nbuf_data(buf); /* First dword */ @@ -1917,13 +1926,6 @@ htt_rx_amsdu_rx_in_order_pop_ll( *((u_int8_t *) &rx_desc->fw_desc.u.val) = HTT_RX_IN_ORD_PADDR_IND_FW_DESC_GET(*(msg_word + 1)); -#ifdef FEATURE_MARK_FIRST_WOW_WAKEUP - if (HTT_RX_IN_ORD_PADDR_IND_MSDU_INFO_GET(*(msg_word + 1)) & - FW_MSDU_INFO_FIRST_WAKEUP_M) { - adf_nbuf_update_skb_mark(msdu, HTT_MARK_FIRST_WAKEUP_PACKET); - } -#endif - msdu_count--; /* calling callback function for packet logging */ diff --git a/CORE/CLD_TXRX/HTT/htt_types.h b/CORE/CLD_TXRX/HTT/htt_types.h index 8d7b099ccb75..b5c064991517 100644 --- a/CORE/CLD_TXRX/HTT/htt_types.h +++ b/CORE/CLD_TXRX/HTT/htt_types.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014 The Linux Foundation. All rights reserved. + * Copyright (c) 2011, 2014, 2016 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -242,6 +242,7 @@ struct htt_pdev_t { int is_high_latency; int is_full_reorder_offload; int default_tx_comp_req; + uint8_t is_first_wakeup_packet; } cfg; struct { u_int8_t major; diff --git a/CORE/CLD_TXRX/TXRX/ol_tx_classify.c b/CORE/CLD_TXRX/TXRX/ol_tx_classify.c index 271d670fd4f1..7ae70b9a173d 100644 --- a/CORE/CLD_TXRX/TXRX/ol_tx_classify.c +++ b/CORE/CLD_TXRX/TXRX/ol_tx_classify.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2015 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -347,6 +347,11 @@ ol_tx_classify( TX_SCHED_DEBUG_PRINT("Enter %s\n", __func__); dest_addr = ol_tx_dest_addr_find(pdev, tx_nbuf); + if (!dest_addr) { + VOS_TRACE(VOS_MODULE_ID_TXRX, VOS_TRACE_LEVEL_ERROR, + "%s: Invalid dest_addr", __func__); + return NULL; + } if ((IEEE80211_IS_MULTICAST(dest_addr)) || (vdev->opmode == wlan_op_mode_ocb)) { txq = &vdev->txqs[OL_TX_VDEV_MCAST_BCAST]; @@ -582,6 +587,11 @@ ol_tx_classify_mgmt( TX_SCHED_DEBUG_PRINT("Enter %s\n", __func__); dest_addr = ol_tx_dest_addr_find(pdev, tx_nbuf); + if (!dest_addr) { + VOS_TRACE(VOS_MODULE_ID_TXRX, VOS_TRACE_LEVEL_ERROR, + "%s: Invalid dest_addr", __func__); + return NULL; + } if (IEEE80211_IS_MULTICAST(dest_addr)) { /* * AP: beacons are broadcast, diff --git a/CORE/CLD_TXRX/TXRX/ol_txrx.c b/CORE/CLD_TXRX/TXRX/ol_txrx.c index 7add94714be6..76ba63191d15 100644 --- a/CORE/CLD_TXRX/TXRX/ol_txrx.c +++ b/CORE/CLD_TXRX/TXRX/ol_txrx.c @@ -72,6 +72,28 @@ /*=== function definitions ===*/ +/** + * ol_tx_mark_first_wakeup_packet() - set flag to indicate that + * fw is compatible for marking first packet after wow wakeup + * @value: 1 for enabled/ 0 for disabled + * + * Return: None + */ +void ol_tx_mark_first_wakeup_packet(uint8_t value) +{ + void *vos_context = vos_get_global_context(VOS_MODULE_ID_TXRX, NULL); + struct ol_txrx_pdev_t *pdev = vos_get_context(VOS_MODULE_ID_TXRX, + vos_context); + + if (!pdev) { + TXRX_PRINT(TXRX_PRINT_LEVEL_ERR, + "%s: pdev is NULL\n", __func__); + return; + } + + htt_mark_first_wakeup_packet(pdev->htt_pdev, value); +} + u_int16_t ol_tx_desc_pool_size_hl(ol_pdev_handle ctrl_pdev) { diff --git a/CORE/HDD/src/wlan_hdd_nan_datapath.c b/CORE/HDD/src/wlan_hdd_nan_datapath.c index 449ad944f750..fc1d45d82f7c 100644 --- a/CORE/HDD/src/wlan_hdd_nan_datapath.c +++ b/CORE/HDD/src/wlan_hdd_nan_datapath.c @@ -42,7 +42,7 @@ qca_wlan_vendor_ndp_policy[QCA_WLAN_VENDOR_ATTR_NDP_PARAMS_MAX + 1] = { [QCA_WLAN_VENDOR_ATTR_NDP_TRANSACTION_ID] = { .type = NLA_U16 }, [QCA_WLAN_VENDOR_ATTR_NDP_IFACE_STR] = { .type = NLA_STRING, .len = IFNAMSIZ }, - [QCA_WLAN_VENDOR_ATTR_NDP_SERVICE_INSTANCE_ID] = { .type = NLA_U16 }, + [QCA_WLAN_VENDOR_ATTR_NDP_SERVICE_INSTANCE_ID] = { .type = NLA_U32 }, [QCA_WLAN_VENDOR_ATTR_NDP_CHANNEL] = { .type = NLA_U32 }, [QCA_WLAN_VENDOR_ATTR_NDP_PEER_DISCOVERY_MAC_ADDR] = { .type = NLA_BINARY, @@ -518,7 +518,7 @@ static int hdd_ndp_initiator_req_handler(hdd_context_t *hdd_ctx, return -EINVAL; } req.service_instance_id = - nla_get_u16(tb[QCA_WLAN_VENDOR_ATTR_NDP_SERVICE_INSTANCE_ID]); + nla_get_u32(tb[QCA_WLAN_VENDOR_ATTR_NDP_SERVICE_INSTANCE_ID]); vos_mem_copy(req.self_ndi_mac_addr.bytes, adapter->macAddressCurrent.bytes, VOS_MAC_ADDR_SIZE); @@ -1305,7 +1305,7 @@ ndp_confirm_nla_failed: * QCA_WLAN_VENDOR_ATTR_NDP_SUBCMD = * QCA_WLAN_VENDOR_ATTR_NDP_REQUEST_IND (4 bytes) * QCA_WLAN_VENDOR_ATTR_NDP_IFACE_STR (IFNAMSIZ) - * QCA_WLAN_VENDOR_ATTR_NDP_SERVICE_INSTANCE_ID (2 bytes) + * QCA_WLAN_VENDOR_ATTR_NDP_SERVICE_INSTANCE_ID (4 bytes) * QCA_WLAN_VENDOR_ATTR_NDP_NDI_MAC_ADDR (6 bytes) * QCA_WLAN_VENDOR_ATTR_NDP_PEER_DISCOVERY_MAC_ADDR (6 bytes) * QCA_WLAN_VENDOR_ATTR_NDP_INSTANCE_ID (4 bytes) @@ -1366,10 +1366,9 @@ static void hdd_ndp_indication_handler(hdd_adapter_t *adapter, return; } - data_len = 3 * sizeof(uint32_t) + sizeof(uint16_t) + - 2 * VOS_MAC_ADDR_SIZE + IFNAMSIZ + - event->ndp_info.ndp_app_info_len + 8 * NLA_HDRLEN + - NLMSG_HDRLEN; + data_len = (4 * sizeof(uint32_t)) + (2 * VOS_MAC_ADDR_SIZE) + IFNAMSIZ + + event->ndp_info.ndp_app_info_len + (8 * NLA_HDRLEN) + + NLMSG_HDRLEN; /* notify response to the upper layer */ vendor_event = cfg80211_vendor_event_alloc(hdd_ctx->wiphy, @@ -1389,7 +1388,7 @@ static void hdd_ndp_indication_handler(hdd_adapter_t *adapter, IFNAMSIZ, adapter->dev->name)) goto ndp_indication_nla_failed; - if (nla_put_u16(vendor_event, + if (nla_put_u32(vendor_event, QCA_WLAN_VENDOR_ATTR_NDP_SERVICE_INSTANCE_ID, event->service_instance_id)) goto ndp_indication_nla_failed; diff --git a/CORE/MAC/inc/qwlan_version.h b/CORE/MAC/inc/qwlan_version.h index 35d07b75f0ee..edff320a77ac 100644 --- a/CORE/MAC/inc/qwlan_version.h +++ b/CORE/MAC/inc/qwlan_version.h @@ -42,9 +42,9 @@ BRIEF DESCRIPTION: #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 11 #define QWLAN_VERSION_EXTRA "" -#define QWLAN_VERSION_BUILD 97 +#define QWLAN_VERSION_BUILD 99 -#define QWLAN_VERSIONSTR "4.0.11.97" +#define QWLAN_VERSIONSTR "4.0.11.99" #define AR6320_REV1_VERSION 0x5000000 diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h index a268e2d0efbb..c4b2bfcd456d 100644 --- a/CORE/MAC/inc/sirApi.h +++ b/CORE/MAC/inc/sirApi.h @@ -694,7 +694,7 @@ typedef struct sSirSmeStartBssReq tANI_BOOLEAN obssEnabled; uint8_t sap_dot11mc; bool vendor_vht_for_24ghz_sap; - + uint8_t beacon_tx_rate; } tSirSmeStartBssReq, *tpSirSmeStartBssReq; #define GET_IE_LEN_IN_BSS(lenInBss) ( lenInBss + sizeof(lenInBss) - \ diff --git a/CORE/MAC/src/pe/include/limSession.h b/CORE/MAC/src/pe/include/limSession.h index 5d7e390b5036..73b5eebbf7bf 100644 --- a/CORE/MAC/src/pe/include/limSession.h +++ b/CORE/MAC/src/pe/include/limSession.h @@ -505,6 +505,9 @@ typedef struct sPESession // Added to Support BT-AMP uint8_t vendor_specific_vht_ie_type; uint8_t vendor_specific_vht_ie_sub_type; bool vendor_vht_for_24ghz_sap; + uint8_t beacon_tx_rate; + uint8_t *vendor_ie; + uint8_t access_policy; } tPESession, *tpPESession; diff --git a/CORE/MAC/src/pe/lim/limTypes.h b/CORE/MAC/src/pe/lim/limTypes.h index 7db111bea32c..fd2d640a95e9 100644 --- a/CORE/MAC/src/pe/lim/limTypes.h +++ b/CORE/MAC/src/pe/lim/limTypes.h @@ -193,6 +193,7 @@ typedef struct sLimMlmStartReq tANI_U8 ssidHidden; tANI_U8 wps_state; tANI_U8 obssProtEnabled; + uint8_t beacon_tx_rate; } tLimMlmStartReq, *tpLimMlmStartReq; typedef struct sLimMlmStartCnf diff --git a/CORE/SAP/inc/sapApi.h b/CORE/SAP/inc/sapApi.h index c3ce85ac3791..52229f1e71af 100644 --- a/CORE/SAP/inc/sapApi.h +++ b/CORE/SAP/inc/sapApi.h @@ -471,6 +471,20 @@ enum sap_acs_dfs_mode { ACS_DFS_MODE_DEPRIORITIZE }; +/* + * enum vendor_ie_access_policy- access policy + * @ACCESS_POLICY_NONE: access policy attribute is not valid + * @ACCESS_POLICY_RESPOND_IF_IE_IS_PRESENT: respond to probe req/assoc req + * only if ie is present + * @ACCESS_POLICY_DONOT_RESPOND_IF_IE_IS_PRESENT: do not respond to probe req/ + * assoc req if ie is present + */ +enum vendor_ie_access_policy { + ACCESS_POLICY_NONE, + ACCESS_POLICY_RESPOND_IF_IE_IS_PRESENT, + ACCESS_POLICY_DONOT_RESPOND_IF_IE_IS_PRESENT, +}; + typedef struct sap_Config { tSap_SSIDInfo_t SSIDinfo; eCsrPhyMode SapHw_mode; /* Wireless Mode */ @@ -533,6 +547,17 @@ typedef struct sap_Config { v_PVOID_t pProbeRespBcnIEsBuffer; /* buffer for addn ies comes from hostapd*/ uint8_t sap_dot11mc; /* Specify if 11MC is enabled or disabled*/ enum sap_acs_dfs_mode acs_dfs_mode; + + uint8_t beacon_tx_rate; + uint8_t *vendor_ie; + enum vendor_ie_access_policy vendor_ie_access_policy; + uint16_t sta_inactivity_timeout; + uint16_t tx_pkt_fail_cnt_threshold; + uint8_t short_retry_limit; + uint8_t long_retry_limit; + uint8_t ampdu_size; + tSirMacRateSet supp_rate_set; + tSirMacRateSet extended_rate_set; } tsap_Config_t; #ifdef FEATURE_WLAN_AP_AP_ACS_OPTIMIZE diff --git a/CORE/SAP/src/sapInternal.h b/CORE/SAP/src/sapInternal.h index ce77ba6dc07e..d2342d150d84 100644 --- a/CORE/SAP/src/sapInternal.h +++ b/CORE/SAP/src/sapInternal.h @@ -302,6 +302,11 @@ typedef struct sSapContext { struct sap_avoid_channels_info sap_detected_avoid_ch_ie; #endif /* FEATURE_AP_MCC_CH_AVOIDANCE */ enum sap_acs_dfs_mode dfs_mode; + + uint8_t beacon_tx_rate; + tSirMacRateSet supp_rate_set; + tSirMacRateSet extended_rate_set; + } *ptSapContext; diff --git a/CORE/SERVICES/COMMON/ol_htt_api.h b/CORE/SERVICES/COMMON/ol_htt_api.h index 8d9262fae713..068624c77f22 100644 --- a/CORE/SERVICES/COMMON/ol_htt_api.h +++ b/CORE/SERVICES/COMMON/ol_htt_api.h @@ -332,5 +332,6 @@ void htt_register_rx_pkt_dump_callback(struct htt_pdev_t *pdev, tp_rx_pkt_dump_cb ol_rx_pkt_dump_call); void htt_deregister_rx_pkt_dump_callback(struct htt_pdev_t *pdev); void ol_rx_pkt_dump_call(adf_nbuf_t msdu, uint16_t peer_id, uint8_t status); +void htt_mark_first_wakeup_packet(htt_pdev_handle pdev, uint8_t value); #endif /* _OL_HTT_API__H_ */ diff --git a/CORE/SERVICES/COMMON/ol_txrx_ctrl_api.h b/CORE/SERVICES/COMMON/ol_txrx_ctrl_api.h index cd2e7fed0ecd..cc18608858fa 100644 --- a/CORE/SERVICES/COMMON/ol_txrx_ctrl_api.h +++ b/CORE/SERVICES/COMMON/ol_txrx_ctrl_api.h @@ -1479,5 +1479,6 @@ void ol_txrx_clear_stats(struct ol_txrx_pdev_t *pdev, uint16_t bitmap); void ol_rx_reset_pn_replay_counter(struct ol_txrx_pdev_t *pdev); uint32_t ol_rx_get_tkip_replay_counter(struct ol_txrx_pdev_t *pdev); uint32_t ol_rx_get_ccmp_replay_counter(struct ol_txrx_pdev_t *pdev); +void ol_tx_mark_first_wakeup_packet(uint8_t value); #endif /* _OL_TXRX_CTRL_API__H_ */ diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c index d05dd39224ca..f3a14e7ddbb4 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -33704,6 +33704,10 @@ v_VOID_t wma_rx_service_ready_event(WMA_HANDLE handle, void *cmd_param_info) return; } + ol_tx_mark_first_wakeup_packet( + WMI_SERVICE_IS_ENABLED(wma_handle->wmi_service_bitmap, + WMI_SERVICE_MARK_FIRST_WAKEUP_PACKET)); + wma_handle->nan_datapath_enabled = WMI_SERVICE_IS_ENABLED(wma_handle->wmi_service_bitmap, WMI_SERVICE_NAN_DATA); diff --git a/CORE/SERVICES/WMA/wma.h b/CORE/SERVICES/WMA/wma.h index 4c2790cdbe01..07029837234a 100644 --- a/CORE/SERVICES/WMA/wma.h +++ b/CORE/SERVICES/WMA/wma.h @@ -1339,6 +1339,7 @@ struct wma_vdev_start_req { u_int8_t dot11_mode; bool is_half_rate; bool is_quarter_rate; + u_int8_t beacon_tx_rate; }; struct wma_set_key_params { diff --git a/CORE/SME/inc/csrApi.h b/CORE/SME/inc/csrApi.h index 53c403aa32b7..06965b4b713c 100644 --- a/CORE/SME/inc/csrApi.h +++ b/CORE/SME/inc/csrApi.h @@ -1015,6 +1015,9 @@ typedef struct tagCsrRoamProfile tSirAddIeParams addIeParams; uint8_t sap_dot11mc; bool do_not_roam; + uint8_t beacon_tx_rate; + tSirMacRateSet supp_rate_set; + tSirMacRateSet extended_rate_set; }tCsrRoamProfile; diff --git a/CORE/SME/inc/csrInternal.h b/CORE/SME/inc/csrInternal.h index 06d30b57e5dd..57a960ab838d 100644 --- a/CORE/SME/inc/csrInternal.h +++ b/CORE/SME/inc/csrInternal.h @@ -387,6 +387,7 @@ typedef struct tagCsrRoamStartBssParams tSirAddIeParams addIeParams; uint8_t sap_dot11mc; + uint8_t beacon_tx_rate; }tCsrRoamStartBssParams; diff --git a/CORE/WDA/inc/legacy/halMsgApi.h b/CORE/WDA/inc/legacy/halMsgApi.h index 68f2bf5e84e7..6b3bea85fdb4 100644 --- a/CORE/WDA/inc/legacy/halMsgApi.h +++ b/CORE/WDA/inc/legacy/halMsgApi.h @@ -544,6 +544,7 @@ typedef struct uint8_t nss_5g; uint32_t tx_aggregation_size; uint32_t rx_aggregation_size; + uint8_t beacon_tx_rate; } tAddBssParams, * tpAddBssParams; typedef struct |
