root/drivers/net/wireless/intel/iwlwifi/fw/api/binding.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /******************************************************************************
   2  *
   3  * This file is provided under a dual BSD/GPLv2 license.  When using or
   4  * redistributing this file, you may do so under either license.
   5  *
   6  * GPL LICENSE SUMMARY
   7  *
   8  * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved.
   9  * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
  10  * Copyright(c) 2016 - 2017 Intel Deutschland GmbH
  11  *
  12  * This program is free software; you can redistribute it and/or modify
  13  * it under the terms of version 2 of the GNU General Public License as
  14  * published by the Free Software Foundation.
  15  *
  16  * This program is distributed in the hope that it will be useful, but
  17  * WITHOUT ANY WARRANTY; without even the implied warranty of
  18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  19  * General Public License for more details.
  20  *
  21  * The full GNU General Public License is included in this distribution
  22  * in the file called COPYING.
  23  *
  24  * Contact Information:
  25  *  Intel Linux Wireless <linuxwifi@intel.com>
  26  * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
  27  *
  28  * BSD LICENSE
  29  *
  30  * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved.
  31  * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
  32  * Copyright(c) 2016 - 2017 Intel Deutschland GmbH
  33  * All rights reserved.
  34  *
  35  * Redistribution and use in source and binary forms, with or without
  36  * modification, are permitted provided that the following conditions
  37  * are met:
  38  *
  39  *  * Redistributions of source code must retain the above copyright
  40  *    notice, this list of conditions and the following disclaimer.
  41  *  * Redistributions in binary form must reproduce the above copyright
  42  *    notice, this list of conditions and the following disclaimer in
  43  *    the documentation and/or other materials provided with the
  44  *    distribution.
  45  *  * Neither the name Intel Corporation nor the names of its
  46  *    contributors may be used to endorse or promote products derived
  47  *    from this software without specific prior written permission.
  48  *
  49  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  50  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  51  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  52  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  53  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  54  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  55  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  56  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  57  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  58  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  59  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  60  *
  61  *****************************************************************************/
  62 
  63 #ifndef __iwl_fw_api_binding_h__
  64 #define __iwl_fw_api_binding_h__
  65 
  66 #define MAX_MACS_IN_BINDING     (3)
  67 #define MAX_BINDINGS            (4)
  68 
  69 /**
  70  * struct iwl_binding_cmd_v1 - configuring bindings
  71  * ( BINDING_CONTEXT_CMD = 0x2b )
  72  * @id_and_color: ID and color of the relevant Binding,
  73  *      &enum iwl_ctxt_id_and_color
  74  * @action: action to perform, one of FW_CTXT_ACTION_*
  75  * @macs: array of MAC id and colors which belong to the binding,
  76  *      &enum iwl_ctxt_id_and_color
  77  * @phy: PHY id and color which belongs to the binding,
  78  *      &enum iwl_ctxt_id_and_color
  79  */
  80 struct iwl_binding_cmd_v1 {
  81         /* COMMON_INDEX_HDR_API_S_VER_1 */
  82         __le32 id_and_color;
  83         __le32 action;
  84         /* BINDING_DATA_API_S_VER_1 */
  85         __le32 macs[MAX_MACS_IN_BINDING];
  86         __le32 phy;
  87 } __packed; /* BINDING_CMD_API_S_VER_1 */
  88 
  89 /**
  90  * struct iwl_binding_cmd - configuring bindings
  91  * ( BINDING_CONTEXT_CMD = 0x2b )
  92  * @id_and_color: ID and color of the relevant Binding,
  93  *      &enum iwl_ctxt_id_and_color
  94  * @action: action to perform, one of FW_CTXT_ACTION_*
  95  * @macs: array of MAC id and colors which belong to the binding
  96  *      &enum iwl_ctxt_id_and_color
  97  * @phy: PHY id and color which belongs to the binding
  98  *      &enum iwl_ctxt_id_and_color
  99  * @lmac_id: the lmac id the binding belongs to
 100  */
 101 struct iwl_binding_cmd {
 102         /* COMMON_INDEX_HDR_API_S_VER_1 */
 103         __le32 id_and_color;
 104         __le32 action;
 105         /* BINDING_DATA_API_S_VER_1 */
 106         __le32 macs[MAX_MACS_IN_BINDING];
 107         __le32 phy;
 108         __le32 lmac_id;
 109 } __packed; /* BINDING_CMD_API_S_VER_2 */
 110 
 111 #define IWL_BINDING_CMD_SIZE_V1 sizeof(struct iwl_binding_cmd_v1)
 112 #define IWL_LMAC_24G_INDEX              0
 113 #define IWL_LMAC_5G_INDEX               1
 114 
 115 /* The maximal number of fragments in the FW's schedule session */
 116 #define IWL_MVM_MAX_QUOTA 128
 117 
 118 /**
 119  * struct iwl_time_quota_data_v1 - configuration of time quota per binding
 120  * @id_and_color: ID and color of the relevant Binding,
 121  *      &enum iwl_ctxt_id_and_color
 122  * @quota: absolute time quota in TU. The scheduler will try to divide the
 123  *      remainig quota (after Time Events) according to this quota.
 124  * @max_duration: max uninterrupted context duration in TU
 125  */
 126 struct iwl_time_quota_data_v1 {
 127         __le32 id_and_color;
 128         __le32 quota;
 129         __le32 max_duration;
 130 } __packed; /* TIME_QUOTA_DATA_API_S_VER_1 */
 131 
 132 /**
 133  * struct iwl_time_quota_cmd - configuration of time quota between bindings
 134  * ( TIME_QUOTA_CMD = 0x2c )
 135  * @quotas: allocations per binding
 136  * Note: on non-CDB the fourth one is the auxilary mac and is
 137  *      essentially zero.
 138  *      On CDB the fourth one is a regular binding.
 139  */
 140 struct iwl_time_quota_cmd_v1 {
 141         struct iwl_time_quota_data_v1 quotas[MAX_BINDINGS];
 142 } __packed; /* TIME_QUOTA_ALLOCATION_CMD_API_S_VER_1 */
 143 
 144 enum iwl_quota_low_latency {
 145         IWL_QUOTA_LOW_LATENCY_NONE = 0,
 146         IWL_QUOTA_LOW_LATENCY_TX = BIT(0),
 147         IWL_QUOTA_LOW_LATENCY_RX = BIT(1),
 148         IWL_QUOTA_LOW_LATENCY_TX_RX =
 149                 IWL_QUOTA_LOW_LATENCY_TX | IWL_QUOTA_LOW_LATENCY_RX,
 150 };
 151 
 152 /**
 153  * struct iwl_time_quota_data - configuration of time quota per binding
 154  * @id_and_color: ID and color of the relevant Binding.
 155  * @quota: absolute time quota in TU. The scheduler will try to divide the
 156  *      remainig quota (after Time Events) according to this quota.
 157  * @max_duration: max uninterrupted context duration in TU
 158  * @low_latency: low latency status, &enum iwl_quota_low_latency
 159  */
 160 struct iwl_time_quota_data {
 161         __le32 id_and_color;
 162         __le32 quota;
 163         __le32 max_duration;
 164         __le32 low_latency;
 165 } __packed; /* TIME_QUOTA_DATA_API_S_VER_2 */
 166 
 167 /**
 168  * struct iwl_time_quota_cmd - configuration of time quota between bindings
 169  * ( TIME_QUOTA_CMD = 0x2c )
 170  * Note: on non-CDB the fourth one is the auxilary mac and is essentially zero.
 171  * On CDB the fourth one is a regular binding.
 172  *
 173  * @quotas: allocations per binding
 174  */
 175 struct iwl_time_quota_cmd {
 176         struct iwl_time_quota_data quotas[MAX_BINDINGS];
 177 } __packed; /* TIME_QUOTA_ALLOCATION_CMD_API_S_VER_2 */
 178 
 179 #endif /* __iwl_fw_api_binding_h__ */

/* [<][>][^][v][top][bottom][index][help] */