linux/drivers/net/wireless/mwifiex/decl.h
<<
>>
Prefs
   1/*
   2 * Marvell Wireless LAN device driver: generic data structures and APIs
   3 *
   4 * Copyright (C) 2011, Marvell International Ltd.
   5 *
   6 * This software file (the "File") is distributed by Marvell International
   7 * Ltd. under the terms of the GNU General Public License Version 2, June 1991
   8 * (the "License").  You may use, redistribute and/or modify this File in
   9 * accordance with the terms and conditions of the License, a copy of which
  10 * is available by writing to the Free Software Foundation, Inc.,
  11 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the
  12 * worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
  13 *
  14 * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
  15 * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
  16 * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
  17 * this warranty disclaimer.
  18 */
  19
  20#ifndef _MWIFIEX_DECL_H_
  21#define _MWIFIEX_DECL_H_
  22
  23#undef pr_fmt
  24#define pr_fmt(fmt)     KBUILD_MODNAME ": " fmt
  25
  26#include <linux/wait.h>
  27#include <linux/timer.h>
  28#include <linux/ieee80211.h>
  29#include <uapi/linux/if_arp.h>
  30#include <net/mac80211.h>
  31
  32
  33#define MWIFIEX_MAX_BSS_NUM         (3)
  34
  35#define MWIFIEX_MIN_DATA_HEADER_LEN 36  /* sizeof(mwifiex_txpd)
  36                                         *   + 4 byte alignment
  37                                         */
  38#define MWIFIEX_MGMT_FRAME_HEADER_SIZE  8       /* sizeof(pkt_type)
  39                                                 *   + sizeof(tx_control)
  40                                                 */
  41
  42#define MWIFIEX_MAX_TX_BASTREAM_SUPPORTED       2
  43#define MWIFIEX_MAX_RX_BASTREAM_SUPPORTED       16
  44
  45#define MWIFIEX_STA_AMPDU_DEF_TXWINSIZE        16
  46#define MWIFIEX_STA_AMPDU_DEF_RXWINSIZE        32
  47#define MWIFIEX_UAP_AMPDU_DEF_TXWINSIZE        32
  48#define MWIFIEX_UAP_AMPDU_DEF_RXWINSIZE        16
  49#define MWIFIEX_11AC_STA_AMPDU_DEF_TXWINSIZE   32
  50#define MWIFIEX_11AC_STA_AMPDU_DEF_RXWINSIZE   48
  51#define MWIFIEX_11AC_UAP_AMPDU_DEF_TXWINSIZE   48
  52#define MWIFIEX_11AC_UAP_AMPDU_DEF_RXWINSIZE   32
  53
  54#define MWIFIEX_DEFAULT_BLOCK_ACK_TIMEOUT  0xffff
  55
  56#define MWIFIEX_RATE_BITMAP_MCS0   32
  57
  58#define MWIFIEX_RX_DATA_BUF_SIZE     (4 * 1024)
  59#define MWIFIEX_RX_CMD_BUF_SIZE      (2 * 1024)
  60
  61#define MAX_BEACON_PERIOD                  (4000)
  62#define MIN_BEACON_PERIOD                  (50)
  63#define MAX_DTIM_PERIOD                    (100)
  64#define MIN_DTIM_PERIOD                    (1)
  65
  66#define MWIFIEX_RTS_MIN_VALUE              (0)
  67#define MWIFIEX_RTS_MAX_VALUE              (2347)
  68#define MWIFIEX_FRAG_MIN_VALUE             (256)
  69#define MWIFIEX_FRAG_MAX_VALUE             (2346)
  70#define MWIFIEX_WMM_VERSION                0x01
  71#define MWIFIEX_WMM_SUBTYPE                0x01
  72
  73#define MWIFIEX_RETRY_LIMIT                14
  74#define MWIFIEX_SDIO_BLOCK_SIZE            256
  75
  76#define MWIFIEX_BUF_FLAG_REQUEUED_PKT      BIT(0)
  77#define MWIFIEX_BUF_FLAG_BRIDGED_PKT       BIT(1)
  78
  79#define MWIFIEX_BRIDGED_PKTS_THR_HIGH      1024
  80#define MWIFIEX_BRIDGED_PKTS_THR_LOW        128
  81
  82enum mwifiex_bss_type {
  83        MWIFIEX_BSS_TYPE_STA = 0,
  84        MWIFIEX_BSS_TYPE_UAP = 1,
  85        MWIFIEX_BSS_TYPE_P2P = 2,
  86        MWIFIEX_BSS_TYPE_ANY = 0xff,
  87};
  88
  89enum mwifiex_bss_role {
  90        MWIFIEX_BSS_ROLE_STA = 0,
  91        MWIFIEX_BSS_ROLE_UAP = 1,
  92        MWIFIEX_BSS_ROLE_ANY = 0xff,
  93};
  94
  95#define BSS_ROLE_BIT_MASK    BIT(0)
  96
  97#define GET_BSS_ROLE(priv)   ((priv)->bss_role & BSS_ROLE_BIT_MASK)
  98
  99enum mwifiex_data_frame_type {
 100        MWIFIEX_DATA_FRAME_TYPE_ETH_II = 0,
 101        MWIFIEX_DATA_FRAME_TYPE_802_11,
 102};
 103
 104struct mwifiex_fw_image {
 105        u8 *helper_buf;
 106        u32 helper_len;
 107        u8 *fw_buf;
 108        u32 fw_len;
 109};
 110
 111struct mwifiex_802_11_ssid {
 112        u32 ssid_len;
 113        u8 ssid[IEEE80211_MAX_SSID_LEN];
 114};
 115
 116struct mwifiex_wait_queue {
 117        wait_queue_head_t wait;
 118        int status;
 119};
 120
 121struct mwifiex_rxinfo {
 122        u8 bss_num;
 123        u8 bss_type;
 124        struct sk_buff *parent;
 125        u8 use_count;
 126};
 127
 128struct mwifiex_txinfo {
 129        u32 status_code;
 130        u8 flags;
 131        u8 bss_num;
 132        u8 bss_type;
 133};
 134
 135enum mwifiex_wmm_ac_e {
 136        WMM_AC_BK,
 137        WMM_AC_BE,
 138        WMM_AC_VI,
 139        WMM_AC_VO
 140} __packed;
 141
 142struct ieee_types_wmm_ac_parameters {
 143        u8 aci_aifsn_bitmap;
 144        u8 ecw_bitmap;
 145        __le16 tx_op_limit;
 146} __packed;
 147
 148struct mwifiex_types_wmm_info {
 149        u8 oui[4];
 150        u8 subtype;
 151        u8 version;
 152        u8 qos_info;
 153        u8 reserved;
 154        struct ieee_types_wmm_ac_parameters ac_params[IEEE80211_NUM_ACS];
 155} __packed;
 156
 157struct mwifiex_arp_eth_header {
 158        struct arphdr hdr;
 159        u8 ar_sha[ETH_ALEN];
 160        u8 ar_sip[4];
 161        u8 ar_tha[ETH_ALEN];
 162        u8 ar_tip[4];
 163} __packed;
 164#endif /* !_MWIFIEX_DECL_H_ */
 165