/****************************************************************************** * * This file is provided under a dual BSD/GPLv2 license. When using or * redistributing this file, you may do so under either license. * * GPL LICENSE SUMMARY * * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH * Copyright(c) 2016 - 2017 Intel Deutschland GmbH * * This program is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * The full GNU General Public License is included in this distribution * in the file called COPYING. * * Contact Information: * Intel Linux Wireless * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 * * BSD LICENSE * * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH * Copyright(c) 2016 - 2017 Intel Deutschland GmbH * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 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. * * Neither the name Intel Corporation nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "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 COPYRIGHT * OWNER OR CONTRIBUTORS 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. * *****************************************************************************/ #ifndef __iwl_fw_api_sf_h__ #define __iwl_fw_api_sf_h__ /* Smart Fifo state */ enum iwl_sf_state { SF_LONG_DELAY_ON = 0, /* should never be called by driver */ SF_FULL_ON, SF_UNINIT, SF_INIT_OFF, SF_HW_NUM_STATES }; /* Smart Fifo possible scenario */ enum iwl_sf_scenario { SF_SCENARIO_SINGLE_UNICAST, SF_SCENARIO_AGG_UNICAST, SF_SCENARIO_MULTICAST, SF_SCENARIO_BA_RESP, SF_SCENARIO_TX_RESP, SF_NUM_SCENARIO }; #define SF_TRANSIENT_STATES_NUMBER 2 /* SF_LONG_DELAY_ON and SF_FULL_ON */ #define SF_NUM_TIMEOUT_TYPES 2 /* Aging timer and Idle timer */ /* smart FIFO default values */ #define SF_W_MARK_SISO 6144 #define SF_W_MARK_MIMO2 8192 #define SF_W_MARK_MIMO3 6144 #define SF_W_MARK_LEGACY 4096 #define SF_W_MARK_SCAN 4096 /* SF Scenarios timers for default configuration (aligned to 32 uSec) */ #define SF_SINGLE_UNICAST_IDLE_TIMER_DEF 160 /* 150 uSec */ #define SF_SINGLE_UNICAST_AGING_TIMER_DEF 400 /* 0.4 mSec */ #define SF_AGG_UNICAST_IDLE_TIMER_DEF 160 /* 150 uSec */ #define SF_AGG_UNICAST_AGING_TIMER_DEF 400 /* 0.4 mSec */ #define SF_MCAST_IDLE_TIMER_DEF 160 /* 150 mSec */ #define SF_MCAST_AGING_TIMER_DEF 400 /* 0.4 mSec */ #define SF_BA_IDLE_TIMER_DEF 160 /* 150 uSec */ #define SF_BA_AGING_TIMER_DEF 400 /* 0.4 mSec */ #define SF_TX_RE_IDLE_TIMER_DEF 160 /* 150 uSec */ #define SF_TX_RE_AGING_TIMER_DEF 400 /* 0.4 mSec */ /* SF Scenarios timers for BSS MAC configuration (aligned to 32 uSec) */ #define SF_SINGLE_UNICAST_IDLE_TIMER 320 /* 300 uSec */ #define SF_SINGLE_UNICAST_AGING_TIMER 2016 /* 2 mSec */ #define SF_AGG_UNICAST_IDLE_TIMER 320 /* 300 uSec */ #define SF_AGG_UNICAST_AGING_TIMER 2016 /* 2 mSec */ #define SF_MCAST_IDLE_TIMER 2016 /* 2 mSec */ #define SF_MCAST_AGING_TIMER 10016 /* 10 mSec */ #define SF_BA_IDLE_TIMER 320 /* 300 uSec */ #define SF_BA_AGING_TIMER 2016 /* 2 mSec */ #define SF_TX_RE_IDLE_TIMER 320 /* 300 uSec */ #define SF_TX_RE_AGING_TIMER 2016 /* 2 mSec */ #define SF_LONG_DELAY_AGING_TIMER 1000000 /* 1 Sec */ #define SF_CFG_DUMMY_NOTIF_OFF BIT(16) /** * struct iwl_sf_cfg_cmd - Smart Fifo configuration command. * @state: smart fifo state, types listed in &enum iwl_sf_state. * @watermark: Minimum allowed available free space in RXF for transient state. * @long_delay_timeouts: aging and idle timer values for each scenario * in long delay state. * @full_on_timeouts: timer values for each scenario in full on state. */ struct iwl_sf_cfg_cmd { __le32 state; __le32 watermark[SF_TRANSIENT_STATES_NUMBER]; __le32 long_delay_timeouts[SF_NUM_SCENARIO][SF_NUM_TIMEOUT_TYPES]; __le32 full_on_timeouts[SF_NUM_SCENARIO][SF_NUM_TIMEOUT_TYPES]; } __packed; /* SF_CFG_API_S_VER_2 */ #endif /* __iwl_fw_api_sf_h__ */