qcacmn: Define channel structure per vdev
Save BSS and desired channel information per vdev to access it across all the modules. Change-Id: I7729e0ae902643d0a2c61184b9ddc2babd07179e CRs-Fixed: 2166359
This commit is contained in:

committed by
snandini

parent
7dd49fec17
commit
3373194c4e
@@ -310,6 +310,17 @@ typedef enum {
|
||||
* @WLAN_PHYMODE_11AC_VHT80: 5Ghz, VHT80
|
||||
* @WLAN_PHYMODE_11AC_VHT160: 5Ghz, VHT160
|
||||
* @WLAN_PHYMODE_11AC_VHT80_80: 5Ghz, VHT80_80
|
||||
* @WLAN_PHYMODE_11AXA_HE20: 5GHz, HE20
|
||||
* @WLAN_PHYMODE_11AXG_HE20: 2GHz, HE20
|
||||
* @WLAN_PHYMODE_11AXA_HE40PLUS: 5GHz, HE40 (ext ch +1)
|
||||
* @WLAN_PHYMODE_11AXA_HE40MINUS:5GHz, HE40 (ext ch -1)
|
||||
* @WLAN_PHYMODE_11AXG_HE40PLUS: 2GHz, HE40 (ext ch +1)
|
||||
* @WLAN_PHYMODE_11AXG_HE40MINUS:2GHz, HE40 (ext ch -1)
|
||||
* @WLAN_PHYMODE_11AXA_HE40: 5GHz, HE40
|
||||
* @WLAN_PHYMODE_11AXG_HE40: 2GHz, HE40
|
||||
* @WLAN_PHYMODE_11AXA_HE80: 5GHz, HE80
|
||||
* @WLAN_PHYMODE_11AXA_HE160: 5GHz, HE160
|
||||
* @WLAN_PHYMODE_11AXA_HE80_80: 5GHz, HE80_80
|
||||
*/
|
||||
enum wlan_phymode {
|
||||
WLAN_PHYMODE_AUTO = 0,
|
||||
@@ -331,9 +342,44 @@ enum wlan_phymode {
|
||||
WLAN_PHYMODE_11AC_VHT80 = 16,
|
||||
WLAN_PHYMODE_11AC_VHT160 = 17,
|
||||
WLAN_PHYMODE_11AC_VHT80_80 = 18,
|
||||
WLAN_PHYMODE_11AXA_HE20 = 19,
|
||||
WLAN_PHYMODE_11AXG_HE20 = 20,
|
||||
WLAN_PHYMODE_11AXA_HE40PLUS = 21,
|
||||
WLAN_PHYMODE_11AXA_HE40MINUS = 22,
|
||||
WLAN_PHYMODE_11AXG_HE40PLUS = 23,
|
||||
WLAN_PHYMODE_11AXG_HE40MINUS = 24,
|
||||
WLAN_PHYMODE_11AXA_HE40 = 25,
|
||||
WLAN_PHYMODE_11AXG_HE40 = 26,
|
||||
WLAN_PHYMODE_11AXA_HE80 = 27,
|
||||
WLAN_PHYMODE_11AXA_HE160 = 28,
|
||||
WLAN_PHYMODE_11AXA_HE80_80 = 29,
|
||||
};
|
||||
|
||||
#define WLAN_PHYMODE_MAX (WLAN_PHYMODE_11AC_VHT80_80 + 1)
|
||||
#define WLAN_PHYMODE_MAX (WLAN_PHYMODE_11AXA_HE80_80 + 1)
|
||||
|
||||
/**
|
||||
* enum wlan_phy_ch_width - channel width
|
||||
* @WLAN_CH_WIDTH_20MHZ: 20 mhz width
|
||||
* @WLAN_CH_WIDTH_40MHZ: 40 mhz width
|
||||
* @WLAN_CH_WIDTH_80MHZ: 80 mhz width
|
||||
* @WLAN_CH_WIDTH_160MHZ: 160 mhz width
|
||||
* @WLAN_CH_WIDTH_80P80HZ: 80+80 mhz width
|
||||
* @WLAN_CH_WIDTH_5MHZ: 5 mhz width
|
||||
* @WLAN_CH_WIDTH_10MHZ: 10 mhz width
|
||||
* @WLAN_CH_WIDTH_INVALID: invalid width
|
||||
* @WLAN_CH_WIDTH_MAX: max possible width
|
||||
*/
|
||||
enum wlan_phy_ch_width {
|
||||
WLAN_CH_WIDTH_20MHZ = 0,
|
||||
WLAN_CH_WIDTH_40MHZ,
|
||||
WLAN_CH_WIDTH_80MHZ,
|
||||
WLAN_CH_WIDTH_160MHZ,
|
||||
WLAN_CH_WIDTH_80P80MHZ,
|
||||
WLAN_CH_WIDTH_5MHZ,
|
||||
WLAN_CH_WIDTH_10MHZ,
|
||||
WLAN_CH_WIDTH_INVALID,
|
||||
WLAN_CH_WIDTH_MAX
|
||||
};
|
||||
|
||||
/**
|
||||
* enum wifi_traffic_ac - access category type
|
||||
|
@@ -259,9 +259,26 @@ struct wlan_vdev_create_params {
|
||||
|
||||
/**
|
||||
* struct wlan_channel - channel structure
|
||||
* @ch_freq: Channel in Mhz.
|
||||
* @ch_ieee: IEEE channel number.
|
||||
* @ch_flags: Channel flags.
|
||||
* @ch_flagext: Channel extension flags.
|
||||
* @ch_maxpower: Maximum tx power in dBm.
|
||||
* @ch_freq_seg1: Channel Center frequeny for VHT80/160 and HE80/160.
|
||||
* @ch_freq_seg2: Second channel Center frequency applicable for 80+80MHz mode.
|
||||
* @ch_width: Channel width.
|
||||
* @ch_phymode: Channel phymode.
|
||||
*/
|
||||
struct wlan_channel {
|
||||
|
||||
uint16_t ch_freq;
|
||||
uint8_t ch_ieee;
|
||||
uint64_t ch_flags;
|
||||
uint16_t ch_flagext;
|
||||
int8_t ch_maxpower;
|
||||
uint8_t ch_freq_seg1;
|
||||
uint8_t ch_freq_seg2;
|
||||
enum wlan_phy_ch_width ch_width;
|
||||
enum wlan_phymode ch_phymode;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -104,6 +104,9 @@ static QDF_STATUS wlan_objmgr_vdev_obj_free(struct wlan_objmgr_vdev *vdev)
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
|
||||
qdf_spinlock_destroy(&vdev->vdev_lock);
|
||||
|
||||
qdf_mem_free(vdev->vdev_mlme.bss_chan);
|
||||
qdf_mem_free(vdev->vdev_mlme.des_chan);
|
||||
qdf_mem_free(vdev);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
@@ -140,11 +143,33 @@ struct wlan_objmgr_vdev *wlan_objmgr_vdev_obj_create(
|
||||
return NULL;
|
||||
}
|
||||
vdev->obj_state = WLAN_OBJ_STATE_ALLOCATED;
|
||||
|
||||
vdev->vdev_mlme.bss_chan = (struct wlan_channel *)qdf_mem_malloc(
|
||||
sizeof(struct wlan_channel));
|
||||
if (vdev->vdev_mlme.bss_chan == NULL) {
|
||||
QDF_TRACE(QDF_MODULE_ID_MLME, QDF_TRACE_LEVEL_ERROR,
|
||||
"%s:bss_chan is NULL", __func__);
|
||||
qdf_mem_free(vdev);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
vdev->vdev_mlme.des_chan = (struct wlan_channel *)qdf_mem_malloc(
|
||||
sizeof(struct wlan_channel));
|
||||
if (vdev->vdev_mlme.des_chan == NULL) {
|
||||
QDF_TRACE(QDF_MODULE_ID_MLME, QDF_TRACE_LEVEL_ERROR,
|
||||
"%s:des_chan is NULL", __func__);
|
||||
qdf_mem_free(vdev->vdev_mlme.bss_chan);
|
||||
qdf_mem_free(vdev);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Attach VDEV to PSOC VDEV's list */
|
||||
if (wlan_objmgr_psoc_vdev_attach(psoc, vdev) !=
|
||||
QDF_STATUS_SUCCESS) {
|
||||
obj_mgr_err("psoc vdev attach failed for vdev-id:%d",
|
||||
vdev->vdev_objmgr.vdev_id);
|
||||
qdf_mem_free(vdev->vdev_mlme.bss_chan);
|
||||
qdf_mem_free(vdev->vdev_mlme.des_chan);
|
||||
qdf_mem_free(vdev);
|
||||
return NULL;
|
||||
}
|
||||
@@ -156,6 +181,8 @@ struct wlan_objmgr_vdev *wlan_objmgr_vdev_obj_create(
|
||||
obj_mgr_err("pdev vdev attach failed for vdev-id:%d",
|
||||
vdev->vdev_objmgr.vdev_id);
|
||||
wlan_objmgr_psoc_vdev_detach(psoc, vdev);
|
||||
qdf_mem_free(vdev->vdev_mlme.bss_chan);
|
||||
qdf_mem_free(vdev->vdev_mlme.des_chan);
|
||||
qdf_mem_free(vdev);
|
||||
return NULL;
|
||||
}
|
||||
@@ -257,7 +284,7 @@ static QDF_STATUS wlan_objmgr_vdev_obj_destroy(struct wlan_objmgr_vdev *vdev)
|
||||
WLAN_OBJMGR_BUG(0);
|
||||
}
|
||||
|
||||
/* Invoke registered create handlers */
|
||||
/* Invoke registered destroy handlers */
|
||||
for (id = 0; id < WLAN_UMAC_MAX_COMPONENTS; id++) {
|
||||
handler = g_umac_glb_obj->vdev_destroy_handler[id];
|
||||
arg = g_umac_glb_obj->vdev_destroy_handler_arg[id];
|
||||
|
Reference in New Issue
Block a user