/*SH1
*******************************************************************************
**                                                                           **
**         Copyright (c) 2010 Quantenna Communications Inc                   **
**                            All Rights Reserved                            **
**                                                                           **
**  Author      : Quantenna Communications Inc                               **
**  File        : shared_params.h                                            **
**  Description :                                                            **
**                                                                           **
*******************************************************************************
**                                                                           **
**  Redistribution and use in source and binary forms, with or without       **
**  modification, are permitted provided that the following conditions       **
**  are met:                                                                 **
**  1. Redistributions of source code must retain the above copyright        **
**     notice, this list of conditions and the following disclaimer.         **
**  2. Redistributions in binary form must reproduce the above copyright     **
**     notice, this list of conditions and the following disclaimer in the   **
**     documentation and/or other materials provided with the distribution.  **
**  3. The name of the author may not be used to endorse or promote products **
**     derived from this software without specific prior written permission. **
**                                                                           **
**  Alternatively, this software may be distributed under the terms of the   **
**  GNU General Public License ("GPL") version 2, or (at your option) any    **
**  later version as published by the Free Software Foundation.              **
**                                                                           **
**  In the case this software is distributed under the GPL license,          **
**  you should have received a copy of the GNU General Public License        **
**  along with this software; if not, write to the Free Software             **
**  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA  **
**                                                                           **
**  THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR       **
**  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES**
**  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  **
**  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,         **
**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT **
**  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,**
**  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY    **
**  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT      **
**  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF **
**  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.        **
**                                                                           **
*******************************************************************************
EH1*/

#ifndef _SHARED_DEFS_H_
#define _SHARED_DEFS_H_

#include "shared_defs_common.h"

#define QTN_SWITCH_CHANNEL_TIME_AVG	3750	/* microseconds */

#define IEEE80211_MAX_NAV	32767

/* SCS (ACI/CCI Detection and Mitigation) APIs */
enum qtn_vap_scs_cmds {
	IEEE80211_SCS_SET_ENABLE = 1,
	IEEE80211_SCS_SET_DEBUG_ENABLE,
	IEEE80211_SCS_SET_SAMPLE_ENABLE,
	IEEE80211_SCS_SET_SAMPLE_DWELL_TIME,
	IEEE80211_SCS_SET_SAMPLE_INTERVAL,
	IEEE80211_SCS_SET_THRSHLD_SMPL_PKTNUM,
	IEEE80211_SCS_SET_THRSHLD_PRI_CCA,
	IEEE80211_SCS_SET_THRSHLD_SEC_CCA,
	IEEE80211_SCS_SET_THRSHLD_SMPL_AIRTIME,
	IEEE80211_SCS_SET_WF_CCA,
	IEEE80211_SCS_SET_WF_RSSI,
	IEEE80211_SCS_SET_WF_CRC_ERR,
	IEEE80211_SCS_SET_WF_LPRE,
	IEEE80211_SCS_SET_WF_SPRE,
	IEEE80211_SCS_SET_WF_RETRIES,
	IEEE80211_SCS_SET_WF_DFS,
	IEEE80211_SCS_SET_WF_MAX_TX_PWR,
	IEEE80211_SCS_SET_REPORT_ONLY,
	IEEE80211_SCS_SET_CCA_INTF_RATIO,
	IEEE80211_SCS_SET_CCA_IDLE_THRSHLD,
	IEEE80211_SCS_SET_CCA_INTF_LO_THR,
	IEEE80211_SCS_SET_CCA_INTF_HI_THR,
	IEEE80211_SCS_SET_CCA_SMPL_DUR,
	IEEE80211_SCS_GET_REPORT,
	IEEE80211_SCS_GET_INTERNAL_STATS,
	IEEE80211_SCS_SET_CCA_INTF_SMTH_FCTR,
	IEEE80211_SCS_RESET_RANKING_TABLE,
	IEEE80211_SCS_SET_CHAN_MTRC_MRGN,
	IEEE80211_SCS_SET_RSSI_SMTH_FCTR,
	IEEE80211_SCS_SET_ATTEN_ADJUST,
	IEEE80211_SCS_SET_ATTEN_SWITCH_ENABLE,
	IEEE80211_SCS_SET_THRSHLD_ATTEN_INC,
	IEEE80211_SCS_SET_THRSHLD_DFS_REENTRY,
	IEEE80211_SCS_SET_THRSHLD_DFS_REENTRY_MINRATE,
	IEEE80211_SCS_SET_PMBL_ERR_SMTH_FCTR,
	IEEE80211_SCS_SET_PMBL_ERR_RANGE,
	IEEE80211_SCS_SET_PMBL_ERR_MAPPED_INTF_RANGE,
	IEEE80211_SCS_SET_THRSHLD_LOAD,
	IEEE80211_SCS_SET_PMBL_ERR_WF,
	IEEE80211_SCS_SET_THRSHLD_AGING_NOR,
	IEEE80211_SCS_SET_THRSHLD_AGING_DFSREENT,
	IEEE80211_SCS_SET_THRSHLD_DFS_REENTRY_INTF,
	IEEE80211_SCS_SET_PMP_RPT_CCA_SMTH_FCTR,
	IEEE80211_SCS_SET_PMP_RX_TIME_SMTH_FCTR,
	IEEE80211_SCS_SET_PMP_TX_TIME_SMTH_FCTR,
	IEEE80211_SCS_SET_PMP_STATS_STABLE_PERCENT,
	IEEE80211_SCS_SET_PMP_STATS_STABLE_RANGE,
	IEEE80211_SCS_SET_PMP_STATS_CLEAR_INTERVAL,
	IEEE80211_SCS_SET_PMP_TXTIME_COMPENSATION,
	IEEE80211_SCS_SET_PMP_RXTIME_COMPENSATION,
	IEEE80211_SCS_SET_PMP_TDLSTIME_COMPENSATION,
	IEEE80211_SCS_SET_SWITCH_CHANNEL_MANUALLY,
	IEEE80211_SCS_SET_AS_RX_TIME_SMTH_FCTR,
	IEEE80211_SCS_SET_AS_TX_TIME_SMTH_FCTR,
	IEEE80211_SCS_SET_STATS_START,
	IEEE80211_SCS_SET_CCA_IDLE_SMTH_FCTR,
	IEEE80211_SCS_SET_PMBL_ERR_THRSHLD,
	IEEE80211_SCS_SET_CCA_INTF_DFS_MARGIN,
	IEEE80211_SCS_SET_LEAVE_DFS_CHAN_MTRC_MRGN,
	IEEE80211_SCS_SET_MAX
};

#define IEEE80211_SCS_STATE_INIT			0
#define IEEE80211_SCS_STATE_RESET			1
#define IEEE80211_SCS_STATE_CHANNEL_SWITCHING		2
#define IEEE80211_SCS_STATE_MEASUREMENT_CHANGE_CLEAN	3    /* param change */
#define IEEE80211_SCS_STATE_PERIOD_CLEAN		4

#define IEEE80211_SCS_COMPARE_INIT_TIMER	5
#define IEEE80211_SCS_COMPARE_TIMER_INTVAL	2
#define IEEE80211_CCA_SAMPLE_DUR		IEEE80211_SCS_COMPARE_TIMER_INTVAL /* seconds */
#define IEEE80211_SCS_CHAN_CURRENT		0
#define IEEE80211_SCS_CHAN_ALL			0xFF
#define IEEE80211_SCS_THRSHLD_MAX		100	/* metric */
#define IEEE80211_SCS_THRSHLD_MIN		1	/* metric */
#define IEEE80211_SCS_SMPL_DWELL_TIME_MAX	24	/* milliseconds, limited by max NAV reservation */
#define IEEE80211_SCS_SMPL_DWELL_TIME_MIN	5	/* milliseconds */
#define IEEE80211_SCS_SMPL_DWELL_TIME_DEFAULT	10	/* milliseconds */
#define IEEE80211_SCS_SMPL_INTV_MAX		3600	/* seconds */
#define IEEE80211_SCS_SMPL_INTV_MIN		1	/* seconds */
#define IEEE80211_SCS_SMPL_INTV_DEFAULT		5	/* seconds */
#define IEEE80211_SCS_THRSHLD_SMPL_PKTNUM_DEFAULT	16	/* packet number */
#define IEEE80211_SCS_THRSHLD_SMPL_PKTNUM_MAX	1000	/* packet number */
#define IEEE80211_SCS_THRSHLD_SMPL_PKTNUM_MIN	1	/* packet number */
#define IEEE80211_SCS_THRSHLD_SMPL_AIRTIME_DEFAULT	200	/* ms */
#define IEEE80211_SCS_THRSHLD_SMPL_AIRTIME_MAX	1000	/* ms */
#define IEEE80211_SCS_THRSHLD_SMPL_AIRTIME_MIN	1	/* ms */
#define IEEE80211_SCS_THRSHLD_PMBL_ERR_MAX	10000	/* count */
#define IEEE80211_SCS_THRSHLD_PMBL_ERR_MIN	1	/* count */

/*
 * Packet rate threshold is determined by how many packets we can hold in buffer without drop
 * during off-channel period. It is limited by:
 * - sw queue length of each node/tid
 * - global resource shared by all node/tid, such as tqew descriptors and msdu headers.
 * Current value doesn't apply to the scenario when tqew descriptors are already used up by large
 * number of stations.
 */
#define IEEE80211_SCS_THRSHLD_SMPL_TX_PKTRATE	(1024 - 128)	/* margin = 128 + hw ring size */
#define IEEE80211_SCS_THRSHLD_SMPL_RX_PKTRATE	IEEE80211_SCS_THRSHLD_SMPL_TX_PKTRATE /* assume qtn peer */
#define IEEE80211_SCS_THRSHLD_ATTEN_INC_DFT	5	/* db */
#define IEEE80211_SCS_THRSHLD_ATTEN_INC_MIN     0       /* db */
#define IEEE80211_SCS_THRSHLD_ATTEN_INC_MAX     20      /* db */
#define IEEE80211_SCS_THRSHLD_DFS_REENTRY_DFT	60	/* seconds */
#define IEEE80211_SCS_THRSHLD_DFS_REENTRY_MIN   0       /* seconds */
#define IEEE80211_SCS_THRSHLD_DFS_REENTRY_MAX   0xffff  /* seconds */
#define IEEE80211_SCS_THRSHLD_DFS_REENTRY_INTF_MIN   0
#define IEEE80211_SCS_THRSHLD_DFS_REENTRY_INTF_MAX   100
#define IEEE80211_SCS_THRSHLD_DFS_REENTRY_INTF_DFT   40
#define IEEE80211_SCS_THRSHLD_DFS_REENTRY_MINRATE_UNIT	100	/* kbps */
#define IEEE80211_SCS_THRSHLD_DFS_REENTRY_MINRATE_DFT	5	/* unit: 100kbps */
#define IEEE80211_SCS_THRSHLD_DFS_REENTRY_MINRATE_MIN   0       /* unit: 100kbps */
#define IEEE80211_SCS_THRSHLD_DFS_REENTRY_MINRATE_MAX   0xffff  /* unit: 100kbps */
#define IEEE80211_SCS_THRSHLD_AGING_MIN         0
#define IEEE80211_SCS_THRSHLD_AGING_MAX         0xFFFF
#define IEEE80211_SCS_THRSHLD_AGING_NOR_DFT     (60 * 6)
#define IEEE80211_SCS_THRSHLD_AGING_DFSREENT_DFT  5
#define IEEE80211_SCS_CCA_DUR_MAX		10	/* seconds */
#define IEEE80211_SCS_CCA_DUR_MIN		2	/* seconds */
#define IEEE80211_SCS_CCA_INTF_SCALE		1000	/* milliseconds */
#define IEEE80211_SCS_SENDING_QOSNULL_TIME_AVG	1000	/* microseconds */
#define IEEE80211_SCS_SMPL_TIME_MARGIN		2000	/* microseconds */
#define IEEE80211_SCS_SMPL_TIME_OFFSET_SEND_QOSNULL	5000	/* microseconds */
#define IEEE80211_SCS_SMPL_TIME_SENDING_ALL_BEACONS	25000	/* microseconds, the time duration for transmitting all beacons */
#define IEEE80211_CCA_INTF_SMTH_FCTR_NOXP_DFT	75
#define IEEE80211_CCA_INTF_SMTH_FCTR_XPED_DFT	90
#define IEEE80211_CCA_INTF_SMTH_FCTR_MIN	0
#define IEEE80211_CCA_INTF_SMTH_FCTR_MAX	100
#define IEEE80211_SCS_CHAN_MTRC_MRGN_MAX	100
#define IEEE80211_SCS_CHAN_MTRC_MRGN_DFT	15
#define IEEE80211_SCS_LEAVE_DFS_CHAN_MTRC_MRGN_DFT	25
#define IEEE80211_SCS_RSSI_SMTH_FCTR_UP_DFT	75
#define IEEE80211_SCS_RSSI_SMTH_FCTR_DOWN_DFT	25
#define IEEE80211_SCS_RSSI_SMTH_FCTR_MAX	100
#define IEEE80211_SCS_ATTEN_ADJUST_MIN		-20
#define IEEE80211_SCS_ATTEN_ADJUST_MAX		20
#define IEEE80211_SCS_ATTEN_ADJUST_DFT		5
#define IEEE80211_SCS_BRCM_RXGLITCH_THRSHLD_SCALE_DFT    40
#define IEEE80211_SCS_PMBL_ERR_SMTH_FCTR_MIN    0
#define IEEE80211_SCS_PMBL_ERR_SMTH_FCTR_MAX    100
#define IEEE80211_SCS_PMBL_ERR_SMTH_FCTR_DFT    66
#define IEEE80211_SCS_CCA_IDLE_SMTH_FCTR_MIN    0
#define IEEE80211_SCS_CCA_IDLE_SMTH_FCTR_MAX    100
#define IEEE80211_SCS_CCA_IDLE_SMTH_FCTR_DFT    50
#define IEEE80211_SCS_PMP_RPT_CCA_SMTH_FCTR_MAX    100
#define IEEE80211_SCS_PMP_RPT_CCA_SMTH_FCTR_DFT    66
#define IEEE80211_SCS_PMP_RX_TIME_SMTH_FCTR_MAX    100
#define IEEE80211_SCS_PMP_RX_TIME_SMTH_FCTR_DFT    66
#define IEEE80211_SCS_PMP_TX_TIME_SMTH_FCTR_MAX    100
#define IEEE80211_SCS_PMP_TX_TIME_SMTH_FCTR_DFT    66
#define IEEE80211_SCS_PMP_STATS_STABLE_PERCENT_MAX  100
#define IEEE80211_SCS_PMP_STATS_STABLE_PERCENT_DFT  30
#define IEEE80211_SCS_PMP_STATS_STABLE_RANGE_MAX    1000
#define IEEE80211_SCS_PMP_STATS_STABLE_RANGE_DFT    50
#define IEEE80211_SCS_PMP_STATS_CLEAR_INTERVAL_MAX  3600 /* seconds */
#define IEEE80211_SCS_PMP_STATS_CLEAR_INTERVAL_DFT  60 /* seconds */
#define IEEE80211_SCS_AS_RX_TIME_SMTH_FCTR_MAX    100
#define IEEE80211_SCS_AS_RX_TIME_SMTH_FCTR_DFT    50
#define IEEE80211_SCS_AS_TX_TIME_SMTH_FCTR_MAX    100
#define IEEE80211_SCS_AS_TX_TIME_SMTH_FCTR_DFT    50

#define IEEE80211_SCS_SMTH_RBS_TIME			80

#define IEEE80211_SCS_PMBL_ERR_RANGE_MIN        1000
#define IEEE80211_SCS_PMBL_ERR_RANGE_MAX        0xFFFF
#define IEEE80211_SCS_PMBL_ERR_RANGE_DFT        5000
#define IEEE80211_SCS_PMBL_ERR_MAPPED_INTF_RANGE_MIN  0
#define IEEE80211_SCS_PMBL_ERR_MAPPED_INTF_RANGE_MAX  100
#define IEEE80211_SCS_PMBL_ERR_MAPPED_INTF_RANGE_DFT  40
#define IEEE80211_SCS_PMBL_ERR_WF_MIN           0
#define IEEE80211_SCS_PMBL_ERR_WF_MAX           100
#define IEEE80211_SCS_PMBL_SHORT_WF_DFT         0
#define IEEE80211_SCS_PMBL_LONG_WF_DFT          100
#define IEEE80211_SCS_THRSHLD_LOADED_MIN        0
#define IEEE80211_SCS_THRSHLD_LOADED_MAX        1000
#define IEEE80211_SCS_THRSHLD_LOADED_DFT        20

#define IEEE80211_SCS_CHAN_POWER_CUTPOINT       15
#define IEEE80211_SCS_NORMALIZE(_v, _duration)       (((_v) < (0xFFFFFFFF / IEEE80211_SCS_CCA_INTF_SCALE)) ?  \
							((_v) * IEEE80211_SCS_CCA_INTF_SCALE / (_duration)) : \
							((_v) / (_duration) * IEEE80211_SCS_CCA_INTF_SCALE))

#define IEEE80211_SCS_SMOOTH(_old, _new, _fctr)	(((_old) * (_fctr) + (_new) * (100 - (_fctr))) / 100)

#define IEEE80211_SCS_OFFCHAN_WHOLE_DUR(_dwell_us)	((_dwell_us) +					\
							(2 * QTN_SWITCH_CHANNEL_TIME_AVG) +		\
							IEEE80211_SCS_SENDING_QOSNULL_TIME_AVG +	\
							IEEE80211_SCS_SMPL_TIME_MARGIN)

#define IEEE80211_SCS_VALUE_S			0
#define IEEE80211_SCS_VALUE_M			0xffff
#define IEEE80211_SCS_WF_VALUE_M		0xff
#define IEEE80211_SCS_COMMAND_S			16
#define IEEE80211_SCS_COMMAND_M			0xffff

#define IEEE80211_SCS_NA_CC			0x0
#define IEEE80211_SCS_STA_CCA_REQ_CC		0x1
#define IEEE80211_SCS_SELF_CCA_CC               0x2
#define IEEE80211_SCS_ATTEN_INC_CC		0x4
#define IEEE80211_SCS_BRCM_STA_TRIGGER_CC	0x8
#define IEEE80211_SCS_CCA_INTF_CC               (IEEE80211_SCS_STA_CCA_REQ_CC | IEEE80211_SCS_SELF_CCA_CC)
#define IEEE80211_SCS_INTF_CC                   (IEEE80211_SCS_CCA_INTF_CC | IEEE80211_SCS_BRCM_STA_TRIGGER_CC)

#define	IEEE80211_REMAIN_CHAN_MIN_RSV_PERD	2

enum ieee80211_scs_update_mode {
	IEEE80211_SCS_OFFCHAN,		/* off-channel, use smoothing and omit current channel */
	IEEE80211_SCS_COCHAN,		/* co-channel mode */
	IEEE80211_SCS_INIT_SCAN,	/* like off-channel but include current channel */
};

#define SCSLOG_CRIT                             0
#define SCSLOG_NOTICE                           1
#define SCSLOG_INFO                             2
#define SCSLOG_VERBOSE                          3
#define SCSLOG_LEVEL_MAX                        3
#if !defined(MUC_BUILD) && !defined(DSP_BUILD) && !defined(AUC_BUILD)
#define SCSDBG(_level, _fmt, ...)            do {               \
		if (ic->ic_scs.scs_debug_enable >= (_level)) {  \
			DBGFN("SCS: " _fmt, ##__VA_ARGS__);     \
		}                                               \
	} while (0)
#endif


/* OCAC (Off-channel CAC) APIs */
enum qtn_ocac_cmds {
	IEEE80211_OCAC_SET_ENABLE = 1,
	IEEE80211_OCAC_SET_DISABLE,
	IEEE80211_OCAC_SET_DEBUG_LEVEL,
	IEEE80211_OCAC_SET_DWELL_TIME,
	IEEE80211_OCAC_SET_DURATION,
	IEEE80211_OCAC_SET_THRESHOLD_FAT,
	IEEE80211_OCAC_SET_DUMP_COUNTS,
	IEEE80211_OCAC_SET_CAC_TIME,
	IEEE80211_OCAC_SET_THRESHOLD_TRAFFIC,
	IEEE80211_OCAC_SET_TIMER_INTERVAL,
	IEEE80211_OCAC_SET_DUMP_TSFLOG,
	IEEE80211_OCAC_SET_DUMP_CFG,
	IEEE80211_OCAC_SET_TRAFFIC_CONTROL,
	IEEE80211_OCAC_SET_THRESHOLD_CCA_INTF,
	IEEE80211_OCAC_SET_REPORT_ONLY,
	IEEE80211_OCAC_SET_DUMP_CCA_COUNTS,
	IEEE80211_OCAC_SET_OFFSET_TXHALT,
	IEEE80211_OCAC_SET_OFFSET_OFFCHAN,
	IEEE80211_OCAC_SET_THRESHOLD_FAT_DEC,
	IEEE80211_OCAC_SET_TIMER_EXPIRE_INIT,
	IEEE80211_OCAC_SET_SECURE_DWELL_TIME,
	IEEE80211_OCAC_SET_BEACON_INTERVAL,
	IEEE80211_OCAC_SET_WEATHER_DURATION,
	IEEE80211_OCAC_SET_WEATHER_CAC_TIME,
	IEEE80211_OCAC_SET_WEATHER_DWELL_TIME,
	IEEE80211_OCAC_SET_MAX
};

enum qtn_ocac_get_cmds {
	IEEE80211_OCAC_GET_STATUS = 1,
	IEEE80211_OCAC_GET_AVAILABILITY,
};

#define IEEE80211_OCAC_CLEAN_STATS_STOP		0
#define IEEE80211_OCAC_CLEAN_STATS_START	1
#define IEEE80211_OCAC_CLEAN_STATS_RESET	2


#define IEEE80211_OCAC_DWELL_TIME_MIN		5	/* milliseconds */
#define IEEE80211_OCAC_DWELL_TIME_MAX		200	/* milliseconds */
#define IEEE80211_OCAC_DWELL_TIME_DEFAULT	40	/* milliseconds */
#define IEEE80211_OCAC_WEA_DWELL_TIME_DEFAULT	20	/* milliseconds */

#define IEEE80211_OCAC_SECURE_DWELL_TIME_MIN		5	/* milliseconds */
#define IEEE80211_OCAC_SECURE_DWELL_TIME_MAX		23	/* milliseconds */
#define IEEE80211_OCAC_SECURE_DWELL_TIME_DEFAULT	23	/* milliseconds */

#define IEEE80211_OCAC_DURATION_MIN		1	/* seconds */
#define IEEE80211_OCAC_DURATION_MAX		64800	/* seconds */
#define IEEE80211_OCAC_DURATION_DEFAULT		720	/* seconds */

#define IEEE80211_OCAC_CAC_TIME_MIN		1	/* seconds */
#define IEEE80211_OCAC_CAC_TIME_MAX		64800	/* seconds */
#define IEEE80211_OCAC_CAC_TIME_DEFAULT		240	/* seconds */

#define IEEE80211_OCAC_WEA_DURATION_MIN		60	/* seconds */
#define IEEE80211_OCAC_WEA_DURATION_MAX		86400	/* seconds */
#define IEEE80211_OCAC_WEA_DURATION_DEFAULT	11520	/* seconds */

#define IEEE80211_OCAC_WEA_CAC_TIME_MIN		1	/* seconds */
#define IEEE80211_OCAC_WEA_CAC_TIME_MAX		86400	/* seconds */
#define IEEE80211_OCAC_WEA_CAC_TIME_DEFAULT	1920	/* seconds */

#define IEEE80211_OCAC_THRESHOLD_FAT_MIN	1	/* percent */
#define IEEE80211_OCAC_THRESHOLD_FAT_MAX	100	/* percent */
#define IEEE80211_OCAC_THRESHOLD_FAT_DEFAULT	90	/* percent */

#define IEEE80211_OCAC_THRESHOLD_TRAFFIC_MIN		1	/* percent */
#define IEEE80211_OCAC_THRESHOLD_TRAFFIC_MAX		100	/* percent */
#define IEEE80211_OCAC_THRESHOLD_TRAFFIC_DEFAULT	30	/* percent */

#define IEEE80211_OCAC_OFFSET_TXHALT_MIN		2	/* milliseconds */
#define IEEE80211_OCAC_OFFSET_TXHALT_MAX		80	/* milliseconds */
#define IEEE80211_OCAC_OFFSET_TXHALT_DEFAULT		10	/* milliseconds */

#define IEEE80211_OCAC_OFFSET_OFFCHAN_MIN		2	/* milliseconds */
#define IEEE80211_OCAC_OFFSET_OFFCHAN_MAX		80	/* milliseconds */
#define IEEE80211_OCAC_OFFSET_OFFCHAN_DEFAULT		5	/* milliseconds */

#define IEEE80211_OCAC_TRAFFIC_CTRL_DEFAULT		1	/* on */

#define IEEE80211_OCAC_THRESHOLD_CCA_INTF_MIN		1	/* percent */
#define IEEE80211_OCAC_THRESHOLD_CCA_INTF_MAX		100	/* percent */
#define IEEE80211_OCAC_THRESHOLD_CCA_INTF_DEFAULT	20	/* percent */

#define IEEE80211_OCAC_THRESHOLD_FAT_DEC_MIN		1	/* percent */
#define IEEE80211_OCAC_THRESHOLD_FAT_DEC_MAX		100	/* percent */
#define IEEE80211_OCAC_THRESHOLD_FAT_DEC_DEFAULT	10	/* percent */

#define IEEE80211_OCAC_TIMER_INTERVAL_MIN		1	/* seconds */
#define IEEE80211_OCAC_TIMER_INTERVAL_MAX		100	/* seconds */
#define IEEE80211_OCAC_TIMER_INTERVAL_DEFAULT		2	/* seconds */

#define IEEE80211_OCAC_BEACON_INTERVAL_MIN		100	/* TUs */
#define IEEE80211_OCAC_BEACON_INTERVAL_MAX		1000	/* TUs */
#define IEEE80211_OCAC_BEACON_INTERVAL_DEFAULT		100	/* TUs */

#define IEEE80211_OCAC_TIMER_EXPIRE_INIT_MIN		1	/* seconds */
#define IEEE80211_OCAC_TIMER_EXPIRE_INIT_MAX		65000	/* seconds */
#define IEEE80211_OCAC_TIMER_EXPIRE_INIT_DEFAULT	2	/* seconds */

#define	IEEE80211_OBSS_PASSIVE_DWELL_DEFAULT		20
#define	IEEE80211_OBSS_ACTIVE_DWELL_DEFAULT		10
#define	IEEE80211_OBSS_TRIGGER_INTERVAL_DEFAULT		200
#define	IEEE80211_OBSS_PASSIVE_TOTAL_DEFAULT		200
#define	IEEE80211_OBSS_ACTIVE_TOTAL_DEFAULT		20
#define	IEEE80211_OBSS_CHANNEL_WIDTH_DELAY_DEFAULT	5
#define	IEEE80211_OBSS_ACTIVITY_THRESHOLD_DEFAULT	25

#define IEEE80211_OCAC_VALUE_S			0
#define IEEE80211_OCAC_VALUE_M			0xffff
#define IEEE80211_OCAC_COMMAND_S		16
#define IEEE80211_OCAC_COMMAND_M		0xffff
#define IEEE80211_OCAC_COMPRESS_VALUE_F		0x8000
#define IEEE80211_OCAC_COMPRESS_VALUE_M		0x7fff

#define IEEE80211_OCAC_TIME_MARGIN		2000	/* microseconds */

#define OCACLOG_CRIT				0
#define OCACLOG_WARNING				1
#define OCACLOG_NOTICE				2
#define OCACLOG_INFO				3
#define OCACLOG_VERBOSE				4
#define OCACLOG_LEVEL_MAX			4
#if !defined(MUC_BUILD) && !defined(DSP_BUILD) && !defined(AUC_BUILD)
#define OCACDBG(_level, _fmt, ...)            do {               \
		if (ic->ic_ocac.ocac_cfg.ocac_debug_level >= (_level)) {  \
			DBGFN("DFS_s_radio: " _fmt, ##__VA_ARGS__);     \
		}                                               \
        } while (0)
#endif

#define QTN_M2A_EVENT_TYPE_DTIM		1
#define	QTN_M2A_PS_EVENT_PM_ENABLE	2		/* enable power management */
#define	QTN_M2A_PS_EVENT_PM_DISABLE	3		/* disable power management */
#define	QTN_M2A_PS_EVENT_PS_POLL	4		/* ps poll */
#define	QTN_M2A_EVENT_TYPE_UAPSD_SP	5		/* U-APSD SP */
#define QTN_M2A_EVENT_PTID_FLAG_SET     6               /* Set per-TID flag(muc) */
#define QTN_M2A_EVENT_TYPE_TXBA_DISABLE	7		/* per VAP TX BA est control */

/* Common definitions for flags used to indicate ieee80211_node's states */
#define	IEEE80211_NODE_AUTH		0x0001	/* authorized for data */
#define	IEEE80211_NODE_QOS		0x0002	/* QoS enabled */
#define	IEEE80211_NODE_ERP		0x0004	/* ERP enabled */
#define	IEEE80211_NODE_HT		0x0008	/* HT enabled */
/* NB: this must have the same value as IEEE80211_FC1_PWR_MGT */
#define	IEEE80211_NODE_PWR_MGT		0x0010	/* power save mode enabled */
#define	IEEE80211_NODE_PS_DELIVERING	0x0040	/* STA out of PS, getting delivery */
#define	IEEE80211_NODE_PS_POLL		0x0080	/* power save ps poll mode */
#define	IEEE80211_NODE_AREF		0x0020	/* authentication ref held */
#define IEEE80211_NODE_2_TX_CHAINS      0x0400  /* this node needs to use 2 TX chain only, for IOT purpose */
#define IEEE80211_NODE_UAPSD		0x1000
#define IEEE80211_NODE_WDS_PEER		0x2000	/* this node is the wds peer in a wds vap */
#define IEEE80211_NODE_VHT		0x4000	/* VHT enabled */
#define IEEE80211_NODE_TPC		0x8000	/* indicate tpc capability */

/* Common definitions for ext_flags */
#define IEEE80211_NODE_TDLS_PTI_REQ	0x0001	/* Should sending PTI request to peer */
#define IEEE80211_NODE_TDLS_PTI_PENDING	0x0002	/* PTI request xmit to peer but not responsed */
#define IEEE80211_NODE_UAPSD_SP_IN_PROGRESS	0x0004	/* U-APSD SP in progress */
#define IEEE80211_NODE_TDLS_PTI_RESP	0x0008	/* PTI response frame received */

#define	IEEE80211_NODE_TDLS_MASK	0x000B	/* Mask for TDLS bits */

#define QTN_VAP_PRIORITY_RESERVED	2	/* reserve the low values for internal use */
#define QTN_VAP_PRIORITY_NUM		4
#define QTN_VAP_PRIORITY_MGMT		(QTN_VAP_PRIORITY_RESERVED + QTN_VAP_PRIORITY_NUM)
#define QTN_TACMAP_HW_PRI_NUM		8	/* hw limitation for 128 node mode */
#define QTN_TACMAP_PRI_PER_VAP		8	/* for maximum 8 TIDs */
#define QTN_TACMAP_SW_PRI_BASE		64	/* values below this are used for "bad apple" nodes */

/* Quantenna specific flags (ni_qtn_flags), do not modify in Auc */
#define QTN_IS_BCM_NODE			0x0000001
#define QTN_IS_INTEL_5100_NODE		0x0000002
#define QTN_IS_INTEL_5300_NODE		0x0000004
#define QTN_IS_GALAXY_NOTE_4_NODE	0x0000008
#define QTN_IS_NOT_4ADDR_CAPABLE_NODE	0x0000010
#define QTN_AC_BE_INHERITANCE_UPTO_VO	0x0000020
#define QTN_AC_BE_INHERITANCE_UPTO_VI	0x0000040
#define QTN_IS_INTEL_NODE		0x0000080
#define QTN_IS_REALTEK_NODE		0x0000100
#define	QTN_NODE_TX_RESTRICTED		0x0000200 /* restricted tx enabled */
#define	QTN_NODE_TX_RESTRICT_RTS	0x0000400 /* use RTS to confirm node is lost */
#define QTN_IS_NO_RXAMSDU_NO_BF_NODE	0x0000800
#define QTN_NODE_RXAMSDU_SUPPORT	0x0001000 /* node support TX amsdu */
#define QTN_NODE_11N_TXAMSDU_OFF	0x0002000
#define	QTN_NODE_TXOP_RESTRICTED	0x0004000
/*
 * Bits that can be updated again by Lhost after association creation. Explicit definition helps
 * avoid overwriting bits maintained by MuC itself.
 */
#define QTN_FLAGS_UPDATABLE_BITS	(QTN_IS_INTEL_NODE)

/* QTN bandwidth definition - make sure this is up-to-date with regards
 * to txbf_common.h
 */
#define QTN_BW_20M	0
#define QTN_BW_40M	1
#define QTN_BW_80M	2
#define QTN_BW_MAX	QTN_BW_80M

#define QTN_MAILBOX_INVALID	0xffffffff	/* Invalid value to indicate mailbox is disabled */

enum ni_tdls_status {
	IEEE80211_TDLS_NODE_STATUS_NONE = 0,
	IEEE80211_TDLS_NODE_STATUS_INACTIVE = 1,
	IEEE80211_TDLS_NODE_STATUS_STARTING = 2,
	IEEE80211_TDLS_NODE_STATUS_ACTIVE = 3,
	IEEE80211_TDLS_NODE_STATUS_IDLE = 4
};

/* WoWLAN APIs */
enum qtn_vap_wowlan_cmds {
	IEEE80211_WOWLAN_HOST_POWER_SAVE = 1,
	IEEE80211_WOWLAN_MATCH_TYPE,
	IEEE80211_WOWLAN_L2_ETHER_TYPE,
	IEEE80211_WOWLAN_L3_UDP_PORT,
	IEEE80211_WOWLAN_MAGIC_PATTERN,
	IEEE80211_WOWLAN_MAGIC_PATTERN_GET,
	IEEE80211_WOWLAN_SET_MAX
};
/*
 * Definitions relating to individual fields from phy_stats,
 * shared between the Q driver and the APIs.
 */

/*
 * Error Sum needs to be reported together with the corresponding Number of
 * Symbols; getting them in separate operations would introduce a race condition
 * where the Error Sum and the Number of Symbols came from different
 * PHY stat blocks.
 */

#define QTN_PHY_AVG_ERROR_SUM_NSYM_NAME			"avg_error_sum_nsym"

#define QTN_PHY_EVM_MANTISSA_SHIFT		5
#define QTN_PHY_EVM_EXPONENT_MASK		0x1f

enum qtn_phy_stat_field {
	QTN_PHY_NOSUCH_FIELD = -1,
	QTN_PHY_AVG_ERROR_SUM_NSYM_FIELD,
};

#define QTN_M2A_TX_SCALE_BITS	4
#define QTN_M2A_TX_SCALE_MASK	((1 << QTN_M2A_TX_SCALE_BITS) - 1)

/* only for little endian */
#if defined(AUC_BUILD)
#define U64_LOW32(_v)		((uint32_t)(_v))
#define U64_HIGH32(_v)		((uint32_t)((_v) >> 32))
#else
#define U64_LOW32(_v)		(((uint32_t*)&(_v))[0])
#define U64_HIGH32(_v)		(((uint32_t*)&(_v))[1])
#endif

#define U64_COMPARE_GE(_a, _b)	((U64_HIGH32(_a) > U64_HIGH32(_b)) ||	\
				((U64_HIGH32(_a) == U64_HIGH32(_b)) && (U64_LOW32(_a) >= U64_LOW32(_b))))

#define U64_COMPARE_GT(_a, _b)	((U64_HIGH32(_a) > U64_HIGH32(_b)) ||	\
				((U64_HIGH32(_a) == U64_HIGH32(_b)) && (U64_LOW32(_a) > U64_LOW32(_b))))

#define U64_COMPARE_LE(_a, _b)	((U64_HIGH32(_a) < U64_HIGH32(_b)) ||	\
				((U64_HIGH32(_a) == U64_HIGH32(_b)) && (U64_LOW32(_a) <= U64_LOW32(_b))))

#define U64_COMPARE_LT(_a, _b)	((U64_HIGH32(_a) < U64_HIGH32(_b)) ||	\
				((U64_HIGH32(_a) == U64_HIGH32(_b)) && (U64_LOW32(_a) < U64_LOW32(_b))))

#ifndef MAC2STR
#define MAC2STR(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
#define MACSTR "%02X:%02X:%02X:%02X:%02X:%02X"
#define MACSTRL "%02x:%02x:%02x:%02x:%02x:%02x"	/* for MuC and Auc which don't support "X" */
#endif

/*
 * VSP/QTM
 * Macro TOPAZ_QTM is used to help identify changes between original VSP and QTM.
 * In Lhost kernel driver, it must be used within CONFIG_QVSP(in kernel .config).
 * CONFIG_QVSP	TOPAZ_QTM	ruby		topaz
 * Y		1		invalid		*QTM works
 * Y		0		*VSP works	VSP alive but doesn't work for HDP
 * N		1		invalid		*no VSP/QTM
 * N		0		*no VSP		no VSP/QTM, and no QTM changes in MuC and AuC
 * So generally, sololy changing CONFIG_QVSP works for both ruby and topaz as indicated by *.
 * But to throughly clean QTM code in AuC and MuC, disable TOPAZ_QTM in topaz below.
 */
#define TOPAZ_QTM		1

#define COMPILE_TIME_ASSERT(constant_expr)	\
do {						\
	switch(0) {				\
		case 0:				\
		case constant_expr:		\
		;				\
	}					\
} while(0)

/**@addtogroup DFSAPIs
 *@{*/
/**
 * Reason for channel change
 */
enum ieee80211_csw_reason {
	/**
	 * Reason is unknown
	 */
	IEEE80211_CSW_REASON_UNKNOWN,
	/**
	 * Smart channel selection
	 */
	IEEE80211_CSW_REASON_SCS,
	/**
	 * Radar detection
	 */
	IEEE80211_CSW_REASON_DFS,
	/**
	 * Channel set by user
	 */
	IEEE80211_CSW_REASON_MANUAL,
	/**
	 * Configuration change
	 */
	IEEE80211_CSW_REASON_CONFIG,
	/**
	 * Scan initiated by user
	 */
	IEEE80211_CSW_REASON_SCAN,
	/**
	 * Off-channel CAC
	 */
	IEEE80211_CSW_REASON_OCAC,
	/**
	 * Channel switch announcement
	 */
	IEEE80211_CSW_REASON_CSA,
	/**
	 * TDLS Channel switch announcement
	 */
	IEEE80211_CSW_REASON_TDLS_CS,
	/**
	 * Number of values
	 */
	IEEE80211_CSW_REASON_MAX
};
/**@}*/

/*
 * Reasons for channel switches that are not recorded and therefore
 * should not be listed in QCSAPI documentation
 */
enum ieee80211_csw_reason_private {
	IEEE80211_CSW_REASON_SAMPLING = IEEE80211_CSW_REASON_MAX,
	IEEE80211_CSW_REASON_OCAC_RUN,
	IEEE80211_CSW_REASON_BGSCAN,
};

/* Keep this in sync with swfeat_desc */
enum swfeat {
	SWFEAT_ID_MODE_AP,
	SWFEAT_ID_MODE_STA,
	SWFEAT_ID_MODE_REPEATER,
	SWFEAT_ID_PCIE_RC,
	SWFEAT_ID_VHT,
	SWFEAT_ID_2X2,
	SWFEAT_ID_2X4,
	SWFEAT_ID_3X3,
	SWFEAT_ID_4X4,
	SWFEAT_ID_HS20,
	SWFEAT_ID_WPA2_ENT,
	SWFEAT_ID_MESH,
	SWFEAT_ID_TDLS,
	SWFEAT_ID_OCAC,
	SWFEAT_ID_QHOP,
	SWFEAT_ID_QSV,
	SWFEAT_ID_QSV_NEIGH,
	SWFEAT_ID_MU_MIMO,
	SWFEAT_ID_DUAL_CHAN_VIRT,
	SWFEAT_ID_DUAL_CHAN,
	SWFEAT_ID_DUAL_BAND_VIRT,
	SWFEAT_ID_DUAL_BAND,
	SWFEAT_ID_QTM_PRIO,
	SWFEAT_ID_QTM,
	SWFEAT_ID_SPEC_ANALYZER,
	SWFEAT_ID_MAX
};

#define SWFEAT_MAP_SIZE (SWFEAT_ID_MAX / 8 + 1)

/* Used to scale temperature measurements */
#define QDRV_TEMPSENS_COEFF    100000
#define QDRV_TEMPSENS_COEFF10  (10 * QDRV_TEMPSENS_COEFF)

/* Aligns the supplied size to the specified power_of_two */
#define QTN_ALIGN_TO(size_to_align, power_of_two) \
	(((size_to_align) + (power_of_two) - 1) & ~((power_of_two) - 1))

#define FIELD_ARRAY_SIZE(t, a)	(sizeof((((t*)0)->a))/sizeof(((((t*)0)->a))[0]))

#endif /* _SHARED_DEFS_H_ */
