qcacmn: Add out of band advertisement in 6Ghz
Add WMI and objmgr support for maintaining RNR buffer cache and receive tbtt events for all vdevs using existing tbtt offset WMI. Change-Id: Idfed63e104e629fbe455d1cf6202cd9b332f5cf9
Esse commit está contido em:
@@ -1868,6 +1868,8 @@ enum _ol_ath_param_t {
|
|||||||
OL_ATH_PARAM_MBSS_EN = 426,
|
OL_ATH_PARAM_MBSS_EN = 426,
|
||||||
/* UNII-1 and UNII-2A channel coexistance */
|
/* UNII-1 and UNII-2A channel coexistance */
|
||||||
OL_ATH_PARAM_CHAN_COEX = 427,
|
OL_ATH_PARAM_CHAN_COEX = 427,
|
||||||
|
/* Out of Band Advertisement feature */
|
||||||
|
OL_ATH_PARAM_OOB_ENABLE = 428,
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
/* Bitmasks for stats that can block */
|
/* Bitmasks for stats that can block */
|
||||||
|
@@ -24,12 +24,28 @@
|
|||||||
#include <wlan_vdev_mgr_tgt_if_rx_defs.h>
|
#include <wlan_vdev_mgr_tgt_if_rx_defs.h>
|
||||||
#include <qdf_timer.h>
|
#include <qdf_timer.h>
|
||||||
|
|
||||||
|
/* Max RNR size given max vaps are 16 */
|
||||||
|
#define MAX_RNR_SIZE 256
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct wlan_rnr_global_cache - RNR cache buffer per soc
|
||||||
|
* @rnr_buf: RNR cache buffer
|
||||||
|
* @rnr_cnt: Count of APs in cache
|
||||||
|
* @rnr_size: Size of RNR cache (RNR IE)
|
||||||
|
*/
|
||||||
|
struct wlan_6ghz_rnr_global_cache {
|
||||||
|
char rnr_buf[MAX_RNR_SIZE];
|
||||||
|
int rnr_cnt;
|
||||||
|
uint16_t rnr_size;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct psoc_mlme_obj - PSoC MLME component object
|
* struct psoc_mlme_obj - PSoC MLME component object
|
||||||
* @psoc: PSoC object
|
* @psoc: PSoC object
|
||||||
* @ext_psoc_ptr: PSoC legacy pointer
|
* @ext_psoc_ptr: PSoC legacy pointer
|
||||||
* @psoc_vdev_rt: PSoC Vdev response timer
|
* @psoc_vdev_rt: PSoC Vdev response timer
|
||||||
* @psoc_mlme_wakelock: Wakelock to prevent system going to suspend
|
* @psoc_mlme_wakelock: Wakelock to prevent system going to suspend
|
||||||
|
* @rnr_6ghz_cache: Cache of 6Ghz vap in RNR ie format
|
||||||
*/
|
*/
|
||||||
struct psoc_mlme_obj {
|
struct psoc_mlme_obj {
|
||||||
struct wlan_objmgr_psoc *psoc;
|
struct wlan_objmgr_psoc *psoc;
|
||||||
@@ -38,6 +54,7 @@ struct psoc_mlme_obj {
|
|||||||
#ifdef FEATURE_VDEV_RSP_WAKELOCK
|
#ifdef FEATURE_VDEV_RSP_WAKELOCK
|
||||||
struct psoc_mlme_wakelock psoc_mlme_wakelock;
|
struct psoc_mlme_wakelock psoc_mlme_wakelock;
|
||||||
#endif
|
#endif
|
||||||
|
struct wlan_6ghz_rnr_global_cache rnr_6ghz_cache;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -123,10 +123,14 @@ struct sta_ps_params {
|
|||||||
* struct tbttoffset_params - Tbttoffset event params
|
* struct tbttoffset_params - Tbttoffset event params
|
||||||
* @vdev_id: Virtual AP device identifier
|
* @vdev_id: Virtual AP device identifier
|
||||||
* @tbttoffset : Tbttoffset for the virtual AP device
|
* @tbttoffset : Tbttoffset for the virtual AP device
|
||||||
|
* @vdev_tbtt_qtime_lo: Tbtt qtime low value
|
||||||
|
* @vdev_tbtt_qtime_hi: Tbtt qtime high value
|
||||||
*/
|
*/
|
||||||
struct tbttoffset_params {
|
struct tbttoffset_params {
|
||||||
uint32_t vdev_id;
|
uint32_t vdev_id;
|
||||||
uint32_t tbttoffset;
|
uint32_t tbttoffset;
|
||||||
|
uint32_t vdev_tbtt_qtime_lo;
|
||||||
|
uint32_t vdev_tbtt_qtime_hi;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -317,6 +317,10 @@ static QDF_STATUS extract_tbttoffset_update_params_tlv(
|
|||||||
return QDF_STATUS_E_INVAL;
|
return QDF_STATUS_E_INVAL;
|
||||||
tbtt_param->tbttoffset =
|
tbtt_param->tbttoffset =
|
||||||
param_buf->tbttoffset_list[tbtt_param->vdev_id];
|
param_buf->tbttoffset_list[tbtt_param->vdev_id];
|
||||||
|
tbtt_param->vdev_tbtt_qtime_lo =
|
||||||
|
param_buf->tbtt_qtime_low_us_list[tbtt_param->vdev_id];
|
||||||
|
tbtt_param->vdev_tbtt_qtime_hi =
|
||||||
|
param_buf->tbtt_qtime_high_us_list[tbtt_param->vdev_id];
|
||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
@@ -338,6 +342,8 @@ static QDF_STATUS extract_ext_tbttoffset_update_params_tlv(
|
|||||||
|
|
||||||
tbtt_param->vdev_id = tbtt_offset_info->vdev_id;
|
tbtt_param->vdev_id = tbtt_offset_info->vdev_id;
|
||||||
tbtt_param->tbttoffset = tbtt_offset_info->tbttoffset;
|
tbtt_param->tbttoffset = tbtt_offset_info->tbttoffset;
|
||||||
|
tbtt_param->vdev_tbtt_qtime_lo = tbtt_offset_info->tbtt_qtime_low_us;
|
||||||
|
tbtt_param->vdev_tbtt_qtime_hi = tbtt_offset_info->tbtt_qtime_high_us;
|
||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
Referência em uma nova issue
Block a user