qcacmn: Add Bandwidth Indication Element support

Adding Bandwidth Indication Element Sub IE structure and other support

Change-Id: Iae761582e8c5d2b12af231e58c6dcbb23421e9dd
CRs-Fixed: 3444254
Dieser Commit ist enthalten in:
Guru Pratap Sharma
2023-03-22 00:28:46 -07:00
committet von Madan Koyyalamudi
Ursprung 9a52f07701
Commit 08131c79a1
4 geänderte Dateien mit 55 neuen und 0 gelöschten Zeilen

Datei anzeigen

@@ -311,6 +311,11 @@ enum qcn_attribute_id {
*/
#define WLAN_TPE_IE_MAX_LEN 9
#ifdef WLAN_FEATURE_11BE
/* Bandwidth indication element IE minimum length */
#define WLAN_BW_IND_IE_MIN_LEN 3
#endif
/* Max channel switch time IE length */
#define WLAN_MAX_CHAN_SWITCH_TIME_IE_LEN 4
@@ -657,6 +662,7 @@ enum element_ie {
* @WLAN_EXTN_ELEMID_EHTCAP: EHT Capabilities IE
* @WLAN_EXTN_ELEMID_T2LM: TID-to-link mapping IE
* @WLAN_EXTN_ELEMID_MULTI_LINK_TRAFFIC_IND: Multi-link Traffic Indication IE
* @WLAN_EXTN_ELEMID_BW_IND: Bandwidth Indication Element Sub IE
*/
enum extn_element_ie {
WLAN_EXTN_ELEMID_ESP = 11,
@@ -680,6 +686,9 @@ enum extn_element_ie {
#endif
WLAN_EXTN_ELEMID_T2LM = 109,
WLAN_EXTN_ELEMID_MULTI_LINK_TRAFFIC_IND = 110,
#ifdef WLAN_FEATURE_11BE
WLAN_EXTN_ELEMID_BW_IND = 135,
#endif
};
/**
@@ -1931,6 +1940,29 @@ struct wlan_ie_ehtops {
uint8_t disabled_sub_chan_bitmap[2];
} qdf_packed;
/**
* struct wlan_ie_bw_ind - Bandwidth Indication Element
* @elem_id: Element ID
* @elem_len: Element length
* @elem_id_extn: Element ID extension
* @bw_ind_param: bw indication element parameters
* @control: Control field in bw_ind Operation Information
* @ccfs0: EHT Channel Centre Frequency Segment0 information
* @ccfs1: EHT Channel Centre Frequency Segment1 information
* @disabled_sub_chan_bitmap: Bitmap to indicate 20MHz subchannel
* is punctured or not
*/
struct wlan_ie_bw_ind {
uint8_t elem_id;
uint8_t elem_len;
uint8_t elem_id_extn;
uint8_t bw_ind_param;
uint8_t control;
uint8_t ccfs0;
uint8_t ccfs1;
uint8_t disabled_sub_chan_bitmap[2];
} qdf_packed;
#ifdef WLAN_FEATURE_11BE_MLO
#define WLAN_MLO_MAX_VDEVS 2

Datei anzeigen

@@ -209,6 +209,7 @@ struct channel_info {
* @rsnxe: Pointer to rsnxe IE
* @ehtcap: pointer to ehtcap ie
* @ehtop: pointer to eht op ie
* @bw_ind: pointer to bandwidth indication element sub ie
* @multi_link_bv: pointer to multi link basic variant IE
* @multi_link_rv: pointer to multi link reconfig IE
* @t2lm: array of pointers to t2lm op ie
@@ -276,6 +277,7 @@ struct ie_list {
#ifdef WLAN_FEATURE_11BE
uint8_t *ehtcap;
uint8_t *ehtop;
uint8_t *bw_ind;
#endif
#ifdef WLAN_FEATURE_11BE_MLO
uint8_t *multi_link_bv;

Datei anzeigen

@@ -741,6 +741,8 @@ util_scan_copy_beacon_data(struct scan_cache_entry *new_entry,
/* This macro will be removed once 11be is enabled */
ie_lst->ehtcap = conv_ptr(ie_lst->ehtcap, old_ptr, new_ptr);
ie_lst->ehtop = conv_ptr(ie_lst->ehtop, old_ptr, new_ptr);
ie_lst->bw_ind =
conv_ptr(ie_lst->bw_ind, old_ptr, new_ptr);
#endif
#ifdef WLAN_FEATURE_11BE_MLO
ie_lst->multi_link_bv =
@@ -1590,6 +1592,12 @@ util_scan_entry_ehtop(struct scan_cache_entry *scan_entry)
{
return scan_entry->ie_list.ehtop;
}
static inline uint8_t*
util_scan_entry_bw_ind(struct scan_cache_entry *scan_entry)
{
return scan_entry->ie_list.bw_ind;
}
#else
static inline uint8_t*
@@ -1597,6 +1605,12 @@ util_scan_entry_ehtcap(struct scan_cache_entry *scan_entry)
{
return NULL;
}
static inline uint8_t*
util_scan_entry_bw_ind(struct scan_cache_entry *scan_entry)
{
return NULL;
}
#endif
#ifdef WLAN_FEATURE_11BE_MLO

Datei anzeigen

@@ -953,6 +953,13 @@ util_scan_parse_chan_switch_wrapper_ie(struct scan_cache_entry *scan_params,
return QDF_STATUS_E_INVAL;
scan_params->ie_list.txpwrenvlp = (uint8_t *)sub_ie;
break;
#ifdef WLAN_FEATURE_11BE
case WLAN_EXTN_ELEMID_BW_IND:
if (sub_ie->ie_len < WLAN_BW_IND_IE_MIN_LEN)
return QDF_STATUS_E_INVAL;
scan_params->ie_list.bw_ind = (uint8_t *)sub_ie;
break;
#endif
}
/* Consume sub info element */
sub_ie_len -= sub_ie->ie_len;