blob: eb7421812ed18b1de761e7c164e430514be2294a [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Masti, Narayanraddi6b61cf52016-04-19 19:34:10 +05302 * Copyright (c) 2012-2013, 2016 The Linux Foundation. All rights reserved.
Kiet Lam0fb93dd2014-02-19 00:32:59 -08003 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
Gopichand Nakkala92f07d82013-01-08 21:16:34 -080020 */
Kiet Lam0fb93dd2014-02-19 00:32:59 -080021
22/*
23 * This file was originally distributed by Qualcomm Atheros, Inc.
24 * under proprietary terms before Copyright ownership was assigned
25 * to the Linux Foundation.
26 */
27
Jeff Johnson295189b2012-06-20 16:38:30 -070028#if !defined( __SAP_CH_SELECT_H )
29#define __SAP_CH_SELECT_H
Srinivas Girigowdade697412013-02-14 16:31:48 -080030
Kiet Lamaa8e15a2014-02-11 23:30:06 -080031
Jeff Johnson295189b2012-06-20 16:38:30 -070032/*===========================================================================
33
34 s a p C h S e l e c t . h
35
36 OVERVIEW:
37
38 This software unit holds the implementation of the WLAN SAP modules
39 functions for channel selection.
40
41 DEPENDENCIES:
42
43
44 Are listed for each API below.
45
46
Jeff Johnson295189b2012-06-20 16:38:30 -070047===========================================================================*/
48
49/*===========================================================================
50
51 EDIT HISTORY FOR FILE
52
53
54 This section contains comments describing changes made to the module.
55 Notice that changes are listed in reverse chronological order.
56
57
58
59 when who what, where, why
60---------- ----- --------------------------------------------------------
612010-03-15 SoftAP Created module
62
63===========================================================================*/
64
65
66/*--------------------------------------------------------------------------
67 Include Files
68------------------------------------------------------------------------*/
69#include "aniGlobal.h"
70/*--------------------------------------------------------------------------
71 defines and enum
72--------------------------------------------------------------------------*/
73
74#define SPECT_24GHZ_CH_COUNT (11) // USA regulatory domain
75#define SAPDFS_NORMALISE_1000 (1000/9) // Case of spec20 with channel diff = 0
76/* Gen 5 values
77#define SOFTAP_MIN_RSSI (-85)
78#define SOFTAP_MAX_RSSI (-45)
79*/
80#define SOFTAP_MIN_RSSI (-100)
81#define SOFTAP_MAX_RSSI (0)
82#define SOFTAP_MIN_COUNT (0)
83#define SOFTAP_MAX_COUNT (60)
84#define SOFTAP_RSSI_WEIGHT (20)
85#define SOFTAP_COUNT_WEIGHT (20)
86
Masti, Narayanraddi6b61cf52016-04-19 19:34:10 +053087#define SAP_DEFAULT_24GHZ_CHANNEL (6)
88#define SAP_DEFAULT_LOW_5GHZ_CHANNEL (40)
89#define SAP_DEFAULT_MID_5GHZ_CHANNEL (100)
90#define SAP_DEFAULT_HIGH_5GHZ_CHANNEL (149)
Jeff Johnson295189b2012-06-20 16:38:30 -070091#define SAP_CHANNEL_NOT_SELECTED (0)
Madan Mohan Koyyalamudi527935a2012-12-04 16:41:16 -080092
93#define SOFTAP_HT20_CHANNELWIDTH 0
Venkata Prathyusha Kuntupallie2e72082013-01-30 17:37:50 -080094#define SAP_SUBBAND1_RSSI_EFFECT_PRIMARY (-20) // In HT40/VHT80, Effect of primary Channel RSSi on Subband1
95#define SAP_SUBBAND2_RSSI_EFFECT_PRIMARY (-30) // In VHT80, Effect of primary Channel RSSI on Subband2
96#define SAP_SUBBAND3_RSSI_EFFECT_PRIMARY (-40) // In VHT80, Effect of Primary Channel RSSI on Subband3
97
98#define SAP_24GHZ_FIRST_OVERLAP_CHAN_RSSI_EFFECT_PRIMARY (-10) // In 2.4GHZ, Effect of Primary Channel RSSI on First Overlapping Channel
99#define SAP_24GHZ_SEC_OVERLAP_CHAN_RSSI_EFFECT_PRIMARY (-20) // In 2.4GHZ, Effect of Primary Channel RSSI on Second Overlapping Channel
100#define SAP_24GHZ_THIRD_OVERLAP_CHAN_RSSI_EFFECT_PRIMARY (-30) // In 2.4GHZ, Effect of Primary Channel RSSI on Third Overlapping Channel
101#define SAP_24GHZ_FOURTH_OVERLAP_CHAN_RSSI_EFFECT_PRIMARY (-40) // In 2.4GHZ, Effect of Primary Channel RSSI on Fourth Overlapping Channel
102
103typedef enum
104{
105 CHANNEL_1 = 1,
106 CHANNEL_2,
107 CHANNEL_3,
108 CHANNEL_4,
109 CHANNEL_5,
110 CHANNEL_6,
111 CHANNEL_7,
112 CHANNEL_8,
113 CHANNEL_9,
114 CHANNEL_10,
115 CHANNEL_11
116} tSapChannel;
117
Jeff Johnson295189b2012-06-20 16:38:30 -0700118/**
119* Structure holding information of each channel in the spectrum,
120* it contains the channel number, the computed weight
121*/
Madan Mohan Koyyalamudi5aef2af2012-10-05 11:56:27 -0700122
Madan Mohan Koyyalamudi5aef2af2012-10-05 11:56:27 -0700123typedef struct sSapChannelListInfo{
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -0700124 v_U8_t numChannel;
125 v_U8_t *channelList;
Madan Mohan Koyyalamudi5aef2af2012-10-05 11:56:27 -0700126} tSapChannelListInfo;
127
Jeff Johnson295189b2012-06-20 16:38:30 -0700128typedef struct {
129 v_U16_t chNum; // Channel Number
Madan Mohan Koyyalamudi527935a2012-12-04 16:41:16 -0800130 v_U16_t channelWidth; // Channel Width
Jeff Johnson295189b2012-06-20 16:38:30 -0700131 v_U16_t bssCount; // bss found in scanresult for this channel
132 v_S31_t rssiAgr; // Max value of rssi among all BSS(es) from scanresult for this channel
133 v_U32_t weight; // Weightage of this channel
Abhishek Singh906b91f2015-07-02 12:25:52 +0530134 v_U32_t weight_copy; //copy of the orignal weight
Jeff Johnson295189b2012-06-20 16:38:30 -0700135 v_BOOL_t valid; // Is this a valid center frequency for regulatory domain
136} tSapSpectChInfo;//tDfsSpectChInfo;
137
138/**
139* Structure holding all the information required to make a
140* decision for the best operating channel based on dfs formula
141*/
Madan Mohan Koyyalamudi5aef2af2012-10-05 11:56:27 -0700142
Jeff Johnson295189b2012-06-20 16:38:30 -0700143typedef struct {
144 tSapSpectChInfo *pSpectCh;//tDfsSpectChInfo *pSpectCh; // Ptr to the channels in the entire spectrum band
145 v_U8_t numSpectChans; // Total num of channels in the spectrum
146} tSapChSelSpectInfo;//tDfsChSelParams;
147
148/**
149 * Structure for channel weight calculation parameters
150 */
151typedef struct sSapChSelParams {
152 void *pSpectInfoParams;//*pDfsParams; // Filled with tSapChSelSpectInfo
153 v_U16_t numChannels;
154} tSapChSelParams;
155
156#endif // if !defined __SAP_CH_SELECT_H
157