Loading dp/inc/cdp_txrx_misc.h +21 −0 Original line number Original line Diff line number Diff line Loading @@ -566,6 +566,27 @@ static inline void cdp_pkt_log_con_service(ol_txrx_soc_handle soc, return; return; } } /** * cdp_pkt_log_exit() - API to cleanup packet log info * @soc: data path soc handle * @pdev_id: id of data path pdev handle * * Return: void */ static inline void cdp_pkt_log_exit(ol_txrx_soc_handle soc, uint8_t pdev_id) { if (!soc || !soc->ops || !soc->ops->misc_ops) { QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_FATAL, "%s invalid instance", __func__); return; } if (soc->ops->misc_ops->pkt_log_exit) return soc->ops->misc_ops->pkt_log_exit(soc, pdev_id); return; } /** /** * cdp_get_num_rx_contexts() - API to get the number of RX contexts * cdp_get_num_rx_contexts() - API to get the number of RX contexts * @soc: soc handle * @soc: soc handle Loading dp/inc/cdp_txrx_ops.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -1265,6 +1265,7 @@ struct cdp_misc_ops { void *scn); void *scn); void (*pkt_log_con_service)(struct cdp_soc_t *soc_hdl, void (*pkt_log_con_service)(struct cdp_soc_t *soc_hdl, uint8_t pdev_id, void *scn); uint8_t pdev_id, void *scn); void (*pkt_log_exit)(struct cdp_soc_t *soc_hdl, uint8_t pdev_id); int (*get_num_rx_contexts)(struct cdp_soc_t *soc_hdl); int (*get_num_rx_contexts)(struct cdp_soc_t *soc_hdl); void (*register_pktdump_cb)(struct cdp_soc_t *soc_hdl, uint8_t pdev_id, void (*register_pktdump_cb)(struct cdp_soc_t *soc_hdl, uint8_t pdev_id, ol_txrx_pktdump_cb tx_cb, ol_txrx_pktdump_cb tx_cb, Loading dp/wifi3.0/dp_main.c +27 −0 Original line number Original line Diff line number Diff line Loading @@ -543,6 +543,28 @@ static void dp_pktlogmod_exit(struct dp_pdev *pdev) pktlogmod_exit(scn); pktlogmod_exit(scn); pdev->pkt_log_init = false; pdev->pkt_log_init = false; } } /** * dp_pkt_log_exit() - Wrapper API to cleanup pktlog info * @soc_hdl: Datapath soc handle * @pdev_id: id of data path pdev handle * * Return: none */ static void dp_pkt_log_exit(struct cdp_soc_t *soc_hdl, uint8_t pdev_id) { struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl); struct dp_pdev *pdev = dp_get_pdev_from_soc_pdev_id_wifi3(soc, pdev_id); if (!pdev) { dp_err("pdev handle is NULL"); return; } dp_pktlogmod_exit(pdev); } #else #else static void dp_pkt_log_con_service(struct cdp_soc_t *soc_hdl, static void dp_pkt_log_con_service(struct cdp_soc_t *soc_hdl, uint8_t pdev_id, void *scn) uint8_t pdev_id, void *scn) Loading @@ -550,6 +572,10 @@ static void dp_pkt_log_con_service(struct cdp_soc_t *soc_hdl, } } static void dp_pktlogmod_exit(struct dp_pdev *handle) { } static void dp_pktlogmod_exit(struct dp_pdev *handle) { } static void dp_pkt_log_exit(struct cdp_soc_t *soc_hdl, uint8_t pdev_id) { } #endif #endif /** /** * dp_get_num_rx_contexts() - get number of RX contexts * dp_get_num_rx_contexts() - get number of RX contexts Loading Loading @@ -11945,6 +11971,7 @@ static struct cdp_misc_ops dp_ops_misc = { #endif /* FEATURE_RUNTIME_PM */ #endif /* FEATURE_RUNTIME_PM */ .pkt_log_init = dp_pkt_log_init, .pkt_log_init = dp_pkt_log_init, .pkt_log_con_service = dp_pkt_log_con_service, .pkt_log_con_service = dp_pkt_log_con_service, .pkt_log_exit = dp_pkt_log_exit, .get_num_rx_contexts = dp_get_num_rx_contexts, .get_num_rx_contexts = dp_get_num_rx_contexts, .get_tx_ack_stats = dp_tx_get_success_ack_stats, .get_tx_ack_stats = dp_tx_get_success_ack_stats, #ifdef WLAN_SUPPORT_DATA_STALL #ifdef WLAN_SUPPORT_DATA_STALL Loading dp/wifi3.0/dp_rx_defrag.c +8 −0 Original line number Original line Diff line number Diff line Loading @@ -1483,6 +1483,9 @@ static QDF_STATUS dp_rx_defrag(struct dp_peer *peer, unsigned tid, struct dp_soc *soc = vdev->pdev->soc; struct dp_soc *soc = vdev->pdev->soc; uint8_t status = 0; uint8_t status = 0; if (!cur) return QDF_STATUS_E_DEFRAG_ERROR; hdr_space = dp_rx_defrag_hdrsize(soc, cur); hdr_space = dp_rx_defrag_hdrsize(soc, cur); index = hal_rx_msdu_is_wlan_mcast(cur) ? index = hal_rx_msdu_is_wlan_mcast(cur) ? dp_sec_mcast : dp_sec_ucast; dp_sec_mcast : dp_sec_ucast; Loading Loading @@ -1853,9 +1856,11 @@ dp_rx_defrag_store_fragment(struct dp_soc *soc, * If the earlier sequence was dropped, this will be the fresh start. * If the earlier sequence was dropped, this will be the fresh start. * Else, continue with next fragment in a given sequence * Else, continue with next fragment in a given sequence */ */ qdf_spin_lock_bh(&rx_tid->tid_lock); status = dp_rx_defrag_fraglist_insert(peer, tid, &rx_reorder_array_elem->head, status = dp_rx_defrag_fraglist_insert(peer, tid, &rx_reorder_array_elem->head, &rx_reorder_array_elem->tail, frag, &rx_reorder_array_elem->tail, frag, &all_frag_present); &all_frag_present); qdf_spin_unlock_bh(&rx_tid->tid_lock); /* /* * Currently, we can have only 6 MSDUs per-MPDU, if the current * Currently, we can have only 6 MSDUs per-MPDU, if the current Loading Loading @@ -1909,6 +1914,7 @@ dp_rx_defrag_store_fragment(struct dp_soc *soc, "All fragments received for sequence: %d", rxseq); "All fragments received for sequence: %d", rxseq); /* Process the fragments */ /* Process the fragments */ qdf_spin_lock_bh(&rx_tid->tid_lock); status = dp_rx_defrag(peer, tid, rx_reorder_array_elem->head, status = dp_rx_defrag(peer, tid, rx_reorder_array_elem->head, rx_reorder_array_elem->tail); rx_reorder_array_elem->tail); if (QDF_IS_STATUS_ERROR(status)) { if (QDF_IS_STATUS_ERROR(status)) { Loading @@ -1927,12 +1933,14 @@ dp_rx_defrag_store_fragment(struct dp_soc *soc, "%s: Failed to return link desc", "%s: Failed to return link desc", __func__); __func__); dp_rx_defrag_cleanup(peer, tid); dp_rx_defrag_cleanup(peer, tid); qdf_spin_unlock_bh(&rx_tid->tid_lock); goto end; goto end; } } /* Re-inject the fragments back to REO for further processing */ /* Re-inject the fragments back to REO for further processing */ status = dp_rx_defrag_reo_reinject(peer, tid, status = dp_rx_defrag_reo_reinject(peer, tid, rx_reorder_array_elem->head); rx_reorder_array_elem->head); qdf_spin_unlock_bh(&rx_tid->tid_lock); if (QDF_IS_STATUS_SUCCESS(status)) { if (QDF_IS_STATUS_SUCCESS(status)) { rx_reorder_array_elem->head = NULL; rx_reorder_array_elem->head = NULL; rx_reorder_array_elem->tail = NULL; rx_reorder_array_elem->tail = NULL; Loading os_if/linux/qca_vendor.h +36 −0 Original line number Original line Diff line number Diff line Loading @@ -8640,6 +8640,34 @@ enum qca_wlan_twt_setup_state { * This parameter is used for * This parameter is used for * 1. TWT SET Request and Response * 1. TWT SET Request and Response * 2. TWT GET Response * 2. TWT GET Response * * @QCA_WLAN_VENDOR_ATTR_TWT_SETUP_BCAST_ID: Optional (u8) * This attribute is used to configure Broadcast TWT ID. * The Broadcast TWT ID indicates a specific Broadcast TWT for which the * transmitting STA is providing TWT parameters. The allowed values are 0 to 31. * This parameter is used for * 1. TWT SET Request * 2. TWT TERMINATE Request * * @QCA_WLAN_VENDOR_ATTR_TWT_SETUP_BCAST_RECOMMENDATION: Optional (u8) * This attribute is used to configure Broadcast TWT recommendation. * The Broadcast TWT Recommendation subfield contains a value that indicates * recommendations on the types of frames that are transmitted by TWT * scheduled STAs and scheduling AP during the broadcast TWT SP. * The allowed values are 0 - 3. * This parameter is used for * 1. TWT SET Request * * @QCA_WLAN_VENDOR_ATTR_TWT_SETUP_BCAST_PERSISTENCE: Optional (u8) * This attribute is used to configure Broadcast TWT Persistence. * The Broadcast TWT Persistence subfield indicates the number of * TBTTs during which the Broadcast TWT SPs corresponding to this * broadcast TWT Parameter set are present. The number of beacon intervals * during which the Broadcast TWT SPs are present is equal to the value in the * Broadcast TWT Persistence subfield plus 1 except that the value 255 * indicates that the Broadcast TWT SPs are present until explicitly terminated. * This parameter is used for * 1. TWT SET Request */ */ enum qca_wlan_vendor_attr_twt_setup { enum qca_wlan_vendor_attr_twt_setup { QCA_WLAN_VENDOR_ATTR_TWT_SETUP_INVALID = 0, QCA_WLAN_VENDOR_ATTR_TWT_SETUP_INVALID = 0, Loading Loading @@ -8669,6 +8697,10 @@ enum qca_wlan_vendor_attr_twt_setup { QCA_WLAN_VENDOR_ATTR_TWT_SETUP_STATE = 20, QCA_WLAN_VENDOR_ATTR_TWT_SETUP_STATE = 20, QCA_WLAN_VENDOR_ATTR_TWT_SETUP_WAKE_INTVL2_MANTISSA = 21, QCA_WLAN_VENDOR_ATTR_TWT_SETUP_WAKE_INTVL2_MANTISSA = 21, QCA_WLAN_VENDOR_ATTR_TWT_SETUP_BCAST_ID = 22, QCA_WLAN_VENDOR_ATTR_TWT_SETUP_BCAST_RECOMMENDATION = 23, QCA_WLAN_VENDOR_ATTR_TWT_SETUP_BCAST_PERSISTENCE = 24, /* keep last */ /* keep last */ QCA_WLAN_VENDOR_ATTR_TWT_SETUP_AFTER_LAST, QCA_WLAN_VENDOR_ATTR_TWT_SETUP_AFTER_LAST, QCA_WLAN_VENDOR_ATTR_TWT_SETUP_MAX = QCA_WLAN_VENDOR_ATTR_TWT_SETUP_MAX = Loading Loading @@ -8716,6 +8748,9 @@ enum qca_wlan_vendor_attr_twt_setup { * setup request due to channel switch in progress. * setup request due to channel switch in progress. * @QCA_WLAN_VENDOR_TWT_STATUS_SCAN_IN_PROGRESS: FW rejected the TWT setup * @QCA_WLAN_VENDOR_TWT_STATUS_SCAN_IN_PROGRESS: FW rejected the TWT setup * request due to scan in progress. * request due to scan in progress. * QCA_WLAN_VENDOR_TWT_STATUS_POWER_SAVE_EXIT_TERMINATE: The driver requested to * terminate an existing TWT session on power save exit request from userspace. * Used on the TWT_TERMINATE notification from the driver/firmware. */ */ enum qca_wlan_vendor_twt_status { enum qca_wlan_vendor_twt_status { QCA_WLAN_VENDOR_TWT_STATUS_OK = 0, QCA_WLAN_VENDOR_TWT_STATUS_OK = 0, Loading @@ -8740,6 +8775,7 @@ enum qca_wlan_vendor_twt_status { QCA_WLAN_VENDOR_TWT_STATUS_ROAMING_IN_PROGRESS = 19, QCA_WLAN_VENDOR_TWT_STATUS_ROAMING_IN_PROGRESS = 19, QCA_WLAN_VENDOR_TWT_STATUS_CHANNEL_SWITCH_IN_PROGRESS = 20, QCA_WLAN_VENDOR_TWT_STATUS_CHANNEL_SWITCH_IN_PROGRESS = 20, QCA_WLAN_VENDOR_TWT_STATUS_SCAN_IN_PROGRESS = 21, QCA_WLAN_VENDOR_TWT_STATUS_SCAN_IN_PROGRESS = 21, QCA_WLAN_VENDOR_TWT_STATUS_POWER_SAVE_EXIT_TERMINATE = 22, }; }; /** /** Loading Loading
dp/inc/cdp_txrx_misc.h +21 −0 Original line number Original line Diff line number Diff line Loading @@ -566,6 +566,27 @@ static inline void cdp_pkt_log_con_service(ol_txrx_soc_handle soc, return; return; } } /** * cdp_pkt_log_exit() - API to cleanup packet log info * @soc: data path soc handle * @pdev_id: id of data path pdev handle * * Return: void */ static inline void cdp_pkt_log_exit(ol_txrx_soc_handle soc, uint8_t pdev_id) { if (!soc || !soc->ops || !soc->ops->misc_ops) { QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_FATAL, "%s invalid instance", __func__); return; } if (soc->ops->misc_ops->pkt_log_exit) return soc->ops->misc_ops->pkt_log_exit(soc, pdev_id); return; } /** /** * cdp_get_num_rx_contexts() - API to get the number of RX contexts * cdp_get_num_rx_contexts() - API to get the number of RX contexts * @soc: soc handle * @soc: soc handle Loading
dp/inc/cdp_txrx_ops.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -1265,6 +1265,7 @@ struct cdp_misc_ops { void *scn); void *scn); void (*pkt_log_con_service)(struct cdp_soc_t *soc_hdl, void (*pkt_log_con_service)(struct cdp_soc_t *soc_hdl, uint8_t pdev_id, void *scn); uint8_t pdev_id, void *scn); void (*pkt_log_exit)(struct cdp_soc_t *soc_hdl, uint8_t pdev_id); int (*get_num_rx_contexts)(struct cdp_soc_t *soc_hdl); int (*get_num_rx_contexts)(struct cdp_soc_t *soc_hdl); void (*register_pktdump_cb)(struct cdp_soc_t *soc_hdl, uint8_t pdev_id, void (*register_pktdump_cb)(struct cdp_soc_t *soc_hdl, uint8_t pdev_id, ol_txrx_pktdump_cb tx_cb, ol_txrx_pktdump_cb tx_cb, Loading
dp/wifi3.0/dp_main.c +27 −0 Original line number Original line Diff line number Diff line Loading @@ -543,6 +543,28 @@ static void dp_pktlogmod_exit(struct dp_pdev *pdev) pktlogmod_exit(scn); pktlogmod_exit(scn); pdev->pkt_log_init = false; pdev->pkt_log_init = false; } } /** * dp_pkt_log_exit() - Wrapper API to cleanup pktlog info * @soc_hdl: Datapath soc handle * @pdev_id: id of data path pdev handle * * Return: none */ static void dp_pkt_log_exit(struct cdp_soc_t *soc_hdl, uint8_t pdev_id) { struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl); struct dp_pdev *pdev = dp_get_pdev_from_soc_pdev_id_wifi3(soc, pdev_id); if (!pdev) { dp_err("pdev handle is NULL"); return; } dp_pktlogmod_exit(pdev); } #else #else static void dp_pkt_log_con_service(struct cdp_soc_t *soc_hdl, static void dp_pkt_log_con_service(struct cdp_soc_t *soc_hdl, uint8_t pdev_id, void *scn) uint8_t pdev_id, void *scn) Loading @@ -550,6 +572,10 @@ static void dp_pkt_log_con_service(struct cdp_soc_t *soc_hdl, } } static void dp_pktlogmod_exit(struct dp_pdev *handle) { } static void dp_pktlogmod_exit(struct dp_pdev *handle) { } static void dp_pkt_log_exit(struct cdp_soc_t *soc_hdl, uint8_t pdev_id) { } #endif #endif /** /** * dp_get_num_rx_contexts() - get number of RX contexts * dp_get_num_rx_contexts() - get number of RX contexts Loading Loading @@ -11945,6 +11971,7 @@ static struct cdp_misc_ops dp_ops_misc = { #endif /* FEATURE_RUNTIME_PM */ #endif /* FEATURE_RUNTIME_PM */ .pkt_log_init = dp_pkt_log_init, .pkt_log_init = dp_pkt_log_init, .pkt_log_con_service = dp_pkt_log_con_service, .pkt_log_con_service = dp_pkt_log_con_service, .pkt_log_exit = dp_pkt_log_exit, .get_num_rx_contexts = dp_get_num_rx_contexts, .get_num_rx_contexts = dp_get_num_rx_contexts, .get_tx_ack_stats = dp_tx_get_success_ack_stats, .get_tx_ack_stats = dp_tx_get_success_ack_stats, #ifdef WLAN_SUPPORT_DATA_STALL #ifdef WLAN_SUPPORT_DATA_STALL Loading
dp/wifi3.0/dp_rx_defrag.c +8 −0 Original line number Original line Diff line number Diff line Loading @@ -1483,6 +1483,9 @@ static QDF_STATUS dp_rx_defrag(struct dp_peer *peer, unsigned tid, struct dp_soc *soc = vdev->pdev->soc; struct dp_soc *soc = vdev->pdev->soc; uint8_t status = 0; uint8_t status = 0; if (!cur) return QDF_STATUS_E_DEFRAG_ERROR; hdr_space = dp_rx_defrag_hdrsize(soc, cur); hdr_space = dp_rx_defrag_hdrsize(soc, cur); index = hal_rx_msdu_is_wlan_mcast(cur) ? index = hal_rx_msdu_is_wlan_mcast(cur) ? dp_sec_mcast : dp_sec_ucast; dp_sec_mcast : dp_sec_ucast; Loading Loading @@ -1853,9 +1856,11 @@ dp_rx_defrag_store_fragment(struct dp_soc *soc, * If the earlier sequence was dropped, this will be the fresh start. * If the earlier sequence was dropped, this will be the fresh start. * Else, continue with next fragment in a given sequence * Else, continue with next fragment in a given sequence */ */ qdf_spin_lock_bh(&rx_tid->tid_lock); status = dp_rx_defrag_fraglist_insert(peer, tid, &rx_reorder_array_elem->head, status = dp_rx_defrag_fraglist_insert(peer, tid, &rx_reorder_array_elem->head, &rx_reorder_array_elem->tail, frag, &rx_reorder_array_elem->tail, frag, &all_frag_present); &all_frag_present); qdf_spin_unlock_bh(&rx_tid->tid_lock); /* /* * Currently, we can have only 6 MSDUs per-MPDU, if the current * Currently, we can have only 6 MSDUs per-MPDU, if the current Loading Loading @@ -1909,6 +1914,7 @@ dp_rx_defrag_store_fragment(struct dp_soc *soc, "All fragments received for sequence: %d", rxseq); "All fragments received for sequence: %d", rxseq); /* Process the fragments */ /* Process the fragments */ qdf_spin_lock_bh(&rx_tid->tid_lock); status = dp_rx_defrag(peer, tid, rx_reorder_array_elem->head, status = dp_rx_defrag(peer, tid, rx_reorder_array_elem->head, rx_reorder_array_elem->tail); rx_reorder_array_elem->tail); if (QDF_IS_STATUS_ERROR(status)) { if (QDF_IS_STATUS_ERROR(status)) { Loading @@ -1927,12 +1933,14 @@ dp_rx_defrag_store_fragment(struct dp_soc *soc, "%s: Failed to return link desc", "%s: Failed to return link desc", __func__); __func__); dp_rx_defrag_cleanup(peer, tid); dp_rx_defrag_cleanup(peer, tid); qdf_spin_unlock_bh(&rx_tid->tid_lock); goto end; goto end; } } /* Re-inject the fragments back to REO for further processing */ /* Re-inject the fragments back to REO for further processing */ status = dp_rx_defrag_reo_reinject(peer, tid, status = dp_rx_defrag_reo_reinject(peer, tid, rx_reorder_array_elem->head); rx_reorder_array_elem->head); qdf_spin_unlock_bh(&rx_tid->tid_lock); if (QDF_IS_STATUS_SUCCESS(status)) { if (QDF_IS_STATUS_SUCCESS(status)) { rx_reorder_array_elem->head = NULL; rx_reorder_array_elem->head = NULL; rx_reorder_array_elem->tail = NULL; rx_reorder_array_elem->tail = NULL; Loading
os_if/linux/qca_vendor.h +36 −0 Original line number Original line Diff line number Diff line Loading @@ -8640,6 +8640,34 @@ enum qca_wlan_twt_setup_state { * This parameter is used for * This parameter is used for * 1. TWT SET Request and Response * 1. TWT SET Request and Response * 2. TWT GET Response * 2. TWT GET Response * * @QCA_WLAN_VENDOR_ATTR_TWT_SETUP_BCAST_ID: Optional (u8) * This attribute is used to configure Broadcast TWT ID. * The Broadcast TWT ID indicates a specific Broadcast TWT for which the * transmitting STA is providing TWT parameters. The allowed values are 0 to 31. * This parameter is used for * 1. TWT SET Request * 2. TWT TERMINATE Request * * @QCA_WLAN_VENDOR_ATTR_TWT_SETUP_BCAST_RECOMMENDATION: Optional (u8) * This attribute is used to configure Broadcast TWT recommendation. * The Broadcast TWT Recommendation subfield contains a value that indicates * recommendations on the types of frames that are transmitted by TWT * scheduled STAs and scheduling AP during the broadcast TWT SP. * The allowed values are 0 - 3. * This parameter is used for * 1. TWT SET Request * * @QCA_WLAN_VENDOR_ATTR_TWT_SETUP_BCAST_PERSISTENCE: Optional (u8) * This attribute is used to configure Broadcast TWT Persistence. * The Broadcast TWT Persistence subfield indicates the number of * TBTTs during which the Broadcast TWT SPs corresponding to this * broadcast TWT Parameter set are present. The number of beacon intervals * during which the Broadcast TWT SPs are present is equal to the value in the * Broadcast TWT Persistence subfield plus 1 except that the value 255 * indicates that the Broadcast TWT SPs are present until explicitly terminated. * This parameter is used for * 1. TWT SET Request */ */ enum qca_wlan_vendor_attr_twt_setup { enum qca_wlan_vendor_attr_twt_setup { QCA_WLAN_VENDOR_ATTR_TWT_SETUP_INVALID = 0, QCA_WLAN_VENDOR_ATTR_TWT_SETUP_INVALID = 0, Loading Loading @@ -8669,6 +8697,10 @@ enum qca_wlan_vendor_attr_twt_setup { QCA_WLAN_VENDOR_ATTR_TWT_SETUP_STATE = 20, QCA_WLAN_VENDOR_ATTR_TWT_SETUP_STATE = 20, QCA_WLAN_VENDOR_ATTR_TWT_SETUP_WAKE_INTVL2_MANTISSA = 21, QCA_WLAN_VENDOR_ATTR_TWT_SETUP_WAKE_INTVL2_MANTISSA = 21, QCA_WLAN_VENDOR_ATTR_TWT_SETUP_BCAST_ID = 22, QCA_WLAN_VENDOR_ATTR_TWT_SETUP_BCAST_RECOMMENDATION = 23, QCA_WLAN_VENDOR_ATTR_TWT_SETUP_BCAST_PERSISTENCE = 24, /* keep last */ /* keep last */ QCA_WLAN_VENDOR_ATTR_TWT_SETUP_AFTER_LAST, QCA_WLAN_VENDOR_ATTR_TWT_SETUP_AFTER_LAST, QCA_WLAN_VENDOR_ATTR_TWT_SETUP_MAX = QCA_WLAN_VENDOR_ATTR_TWT_SETUP_MAX = Loading Loading @@ -8716,6 +8748,9 @@ enum qca_wlan_vendor_attr_twt_setup { * setup request due to channel switch in progress. * setup request due to channel switch in progress. * @QCA_WLAN_VENDOR_TWT_STATUS_SCAN_IN_PROGRESS: FW rejected the TWT setup * @QCA_WLAN_VENDOR_TWT_STATUS_SCAN_IN_PROGRESS: FW rejected the TWT setup * request due to scan in progress. * request due to scan in progress. * QCA_WLAN_VENDOR_TWT_STATUS_POWER_SAVE_EXIT_TERMINATE: The driver requested to * terminate an existing TWT session on power save exit request from userspace. * Used on the TWT_TERMINATE notification from the driver/firmware. */ */ enum qca_wlan_vendor_twt_status { enum qca_wlan_vendor_twt_status { QCA_WLAN_VENDOR_TWT_STATUS_OK = 0, QCA_WLAN_VENDOR_TWT_STATUS_OK = 0, Loading @@ -8740,6 +8775,7 @@ enum qca_wlan_vendor_twt_status { QCA_WLAN_VENDOR_TWT_STATUS_ROAMING_IN_PROGRESS = 19, QCA_WLAN_VENDOR_TWT_STATUS_ROAMING_IN_PROGRESS = 19, QCA_WLAN_VENDOR_TWT_STATUS_CHANNEL_SWITCH_IN_PROGRESS = 20, QCA_WLAN_VENDOR_TWT_STATUS_CHANNEL_SWITCH_IN_PROGRESS = 20, QCA_WLAN_VENDOR_TWT_STATUS_SCAN_IN_PROGRESS = 21, QCA_WLAN_VENDOR_TWT_STATUS_SCAN_IN_PROGRESS = 21, QCA_WLAN_VENDOR_TWT_STATUS_POWER_SAVE_EXIT_TERMINATE = 22, }; }; /** /** Loading