blob: eb7421812ed18b1de761e7c164e430514be2294a [file] [log] [blame]
/*
* Copyright (c) 2012-2013, 2016 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all
* copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
/*
* This file was originally distributed by Qualcomm Atheros, Inc.
* under proprietary terms before Copyright ownership was assigned
* to the Linux Foundation.
*/
#if !defined( __SAP_CH_SELECT_H )
#define __SAP_CH_SELECT_H
/*===========================================================================
s a p C h S e l e c t . h
OVERVIEW:
This software unit holds the implementation of the WLAN SAP modules
functions for channel selection.
DEPENDENCIES:
Are listed for each API below.
===========================================================================*/
/*===========================================================================
EDIT HISTORY FOR FILE
This section contains comments describing changes made to the module.
Notice that changes are listed in reverse chronological order.
when who what, where, why
---------- ----- --------------------------------------------------------
2010-03-15 SoftAP Created module
===========================================================================*/
/*--------------------------------------------------------------------------
Include Files
------------------------------------------------------------------------*/
#include "aniGlobal.h"
/*--------------------------------------------------------------------------
defines and enum
--------------------------------------------------------------------------*/
#define SPECT_24GHZ_CH_COUNT (11) // USA regulatory domain
#define SAPDFS_NORMALISE_1000 (1000/9) // Case of spec20 with channel diff = 0
/* Gen 5 values
#define SOFTAP_MIN_RSSI (-85)
#define SOFTAP_MAX_RSSI (-45)
*/
#define SOFTAP_MIN_RSSI (-100)
#define SOFTAP_MAX_RSSI (0)
#define SOFTAP_MIN_COUNT (0)
#define SOFTAP_MAX_COUNT (60)
#define SOFTAP_RSSI_WEIGHT (20)
#define SOFTAP_COUNT_WEIGHT (20)
#define SAP_DEFAULT_24GHZ_CHANNEL (6)
#define SAP_DEFAULT_LOW_5GHZ_CHANNEL (40)
#define SAP_DEFAULT_MID_5GHZ_CHANNEL (100)
#define SAP_DEFAULT_HIGH_5GHZ_CHANNEL (149)
#define SAP_CHANNEL_NOT_SELECTED (0)
#define SOFTAP_HT20_CHANNELWIDTH 0
#define SAP_SUBBAND1_RSSI_EFFECT_PRIMARY (-20) // In HT40/VHT80, Effect of primary Channel RSSi on Subband1
#define SAP_SUBBAND2_RSSI_EFFECT_PRIMARY (-30) // In VHT80, Effect of primary Channel RSSI on Subband2
#define SAP_SUBBAND3_RSSI_EFFECT_PRIMARY (-40) // In VHT80, Effect of Primary Channel RSSI on Subband3
#define SAP_24GHZ_FIRST_OVERLAP_CHAN_RSSI_EFFECT_PRIMARY (-10) // In 2.4GHZ, Effect of Primary Channel RSSI on First Overlapping Channel
#define SAP_24GHZ_SEC_OVERLAP_CHAN_RSSI_EFFECT_PRIMARY (-20) // In 2.4GHZ, Effect of Primary Channel RSSI on Second Overlapping Channel
#define SAP_24GHZ_THIRD_OVERLAP_CHAN_RSSI_EFFECT_PRIMARY (-30) // In 2.4GHZ, Effect of Primary Channel RSSI on Third Overlapping Channel
#define SAP_24GHZ_FOURTH_OVERLAP_CHAN_RSSI_EFFECT_PRIMARY (-40) // In 2.4GHZ, Effect of Primary Channel RSSI on Fourth Overlapping Channel
typedef enum
{
CHANNEL_1 = 1,
CHANNEL_2,
CHANNEL_3,
CHANNEL_4,
CHANNEL_5,
CHANNEL_6,
CHANNEL_7,
CHANNEL_8,
CHANNEL_9,
CHANNEL_10,
CHANNEL_11
} tSapChannel;
/**
* Structure holding information of each channel in the spectrum,
* it contains the channel number, the computed weight
*/
typedef struct sSapChannelListInfo{
v_U8_t numChannel;
v_U8_t *channelList;
} tSapChannelListInfo;
typedef struct {
v_U16_t chNum; // Channel Number
v_U16_t channelWidth; // Channel Width
v_U16_t bssCount; // bss found in scanresult for this channel
v_S31_t rssiAgr; // Max value of rssi among all BSS(es) from scanresult for this channel
v_U32_t weight; // Weightage of this channel
v_U32_t weight_copy; //copy of the orignal weight
v_BOOL_t valid; // Is this a valid center frequency for regulatory domain
} tSapSpectChInfo;//tDfsSpectChInfo;
/**
* Structure holding all the information required to make a
* decision for the best operating channel based on dfs formula
*/
typedef struct {
tSapSpectChInfo *pSpectCh;//tDfsSpectChInfo *pSpectCh; // Ptr to the channels in the entire spectrum band
v_U8_t numSpectChans; // Total num of channels in the spectrum
} tSapChSelSpectInfo;//tDfsChSelParams;
/**
* Structure for channel weight calculation parameters
*/
typedef struct sSapChSelParams {
void *pSpectInfoParams;//*pDfsParams; // Filled with tSapChSelSpectInfo
v_U16_t numChannels;
} tSapChSelParams;
#endif // if !defined __SAP_CH_SELECT_H