linux/drivers/staging/winbond/mds_s.h
<<
>>
Prefs
   1#ifndef __WINBOND_MDS_H
   2#define __WINBOND_MDS_H
   3
   4#include <linux/timer.h>
   5#include <linux/types.h>
   6#include <linux/atomic.h>
   7
   8#include "localpara.h"
   9#include "mac_structures.h"
  10
  11/* Preamble_Type, see <SFS-802.11G-MIB-203> */
  12enum {
  13        WLAN_PREAMBLE_TYPE_SHORT,
  14        WLAN_PREAMBLE_TYPE_LONG,
  15};
  16
  17/*****************************************************************************/
  18#define MAX_USB_TX_DESCRIPTOR           15      /* IS89C35 ability */
  19#define MAX_USB_TX_BUFFER_NUMBER        4       /* Virtual pre-buffer number of MAX_USB_TX_BUFFER */
  20#define MAX_USB_TX_BUFFER               4096    /* IS89C35 ability 4n alignment is required for hardware */
  21
  22#define AUTH_REQUEST_PAIRWISE_ERROR     0       /* _F flag setting */
  23#define AUTH_REQUEST_GROUP_ERROR        1       /* _F flag setting */
  24
  25#define CURRENT_FRAGMENT_THRESHOLD      (adapter->Mds.TxFragmentThreshold & ~0x1)
  26#define CURRENT_PREAMBLE_MODE           (psLOCAL->boShortPreamble ? WLAN_PREAMBLE_TYPE_SHORT : WLAN_PREAMBLE_TYPE_LONG)
  27#define CURRENT_TX_RATE_FOR_MNG         (adapter->sLocalPara.CurrentTxRateForMng)
  28#define CURRENT_PROTECT_MECHANISM       (psLOCAL->boProtectMechanism)
  29#define CURRENT_RTS_THRESHOLD           (adapter->Mds.TxRTSThreshold)
  30
  31#define MIB_GS_XMIT_OK_INC              (adapter->sLocalPara.GS_XMIT_OK++)
  32#define MIB_GS_RCV_OK_INC               (adapter->sLocalPara.GS_RCV_OK++)
  33#define MIB_GS_XMIT_ERROR_INC           (adapter->sLocalPara.GS_XMIT_ERROR)
  34
  35/* ---------- TX ----------------------------------- */
  36#define ETHERNET_TX_DESCRIPTORS         MAX_USB_TX_BUFFER_NUMBER
  37
  38/* ---------- RX ----------------------------------- */
  39#define ETHERNET_RX_DESCRIPTORS         8       /* It's not necessary to allocate more than 2 in sync indicate */
  40
  41/*
  42 * ================================================================
  43 * Configuration default value
  44 * ================================================================
  45 */
  46#define DEFAULT_MULTICASTLISTMAX        32      /* standard */
  47#define DEFAULT_TX_BURSTLENGTH          3       /* 32 Longwords */
  48#define DEFAULT_RX_BURSTLENGTH          3       /* 32 Longwords */
  49#define DEFAULT_TX_THRESHOLD            0       /* Full Packet */
  50#define DEFAULT_RX_THRESHOLD            0       /* Full Packet */
  51#define DEFAULT_MAXTXRATE               6       /* 11 Mbps (Long) */
  52#define DEFAULT_CHANNEL                 3       /* Chennel 3 */
  53#define DEFAULT_RTSThreshold            2347    /* Disable RTS */
  54#define DEFAULT_PME                     0       /* Disable */
  55#define DEFAULT_SIFSTIME                10
  56#define DEFAULT_ACKTIME_1ML             304     /* 148 + 44 + 112 */
  57#define DEFAULT_ACKTIME_2ML             248     /* 148 + 44 + 56 */
  58#define DEFAULT_FRAGMENT_THRESHOLD      2346    /* No fragment */
  59#define DEFAULT_PREAMBLE_LENGTH         72
  60#define DEFAULT_PLCPHEADERTIME_LENGTH   24
  61
  62/*
  63 * ------------------------------------------------------------------------
  64 * 0.96 sec since time unit of the R03 for the current, W89C32 is about 60ns
  65 * instead of 960 ns. This shall be fixed in the future W89C32
  66 * -------------------------------------------------------------------------
  67 */
  68#define DEFAULT_MAX_RECEIVE_TIME        16440000
  69
  70#define RX_BUF_SIZE                     2352    /* 600 - For 301 must be multiple of 8 */
  71#define MAX_RX_DESCRIPTORS              18      /* Rx Layer 2 */
  72
  73/* For brand-new rx system */
  74#define MDS_ID_IGNORE                   ETHERNET_RX_DESCRIPTORS
  75
  76/* For Tx Packet status classify */
  77#define PACKET_FREE_TO_USE              0
  78#define PACKET_COME_FROM_NDIS           0x08
  79#define PACKET_COME_FROM_MLME           0x80
  80#define PACKET_SEND_COMPLETE            0xff
  81
  82struct wb35_mds {
  83        /* For Tx usage */
  84        u8      TxOwner[((MAX_USB_TX_BUFFER_NUMBER + 3) & ~0x03)];
  85        u8      *pTxBuffer;
  86        u16     TxBufferSize[((MAX_USB_TX_BUFFER_NUMBER + 1) & ~0x01)];
  87        u8      TxDesFrom[((MAX_USB_TX_DESCRIPTOR + 3) & ~0x03)];/* 1: MLME 2: NDIS control 3: NDIS data */
  88        u8      TxCountInBuffer[((MAX_USB_TX_DESCRIPTOR + 3) & ~0x03)];
  89
  90        u8      TxFillIndex;    /* the next index of TxBuffer can be used */
  91        u8      TxDesIndex;     /* The next index of TxDes can be used */
  92        u8      ScanTxPause;    /* data Tx pause because the scanning is progressing, but probe request Tx won't. */
  93        u8      TxPause;        /*For pause the Mds_Tx modult */
  94
  95        atomic_t        TxThreadCount;  /* For thread counting */
  96
  97        u16     TxResult[((MAX_USB_TX_DESCRIPTOR + 1) & ~0x01)];/* Collect the sending result of Mpdu */
  98
  99        u8      MicRedundant[8]; /* For tmp use */
 100        u8      *MicWriteAddress[2]; /* The start address to fill the Mic, use 2 point due to Mic maybe fragment */
 101
 102        u16     MicWriteSize[2];
 103
 104        u16     MicAdd; /* If want to add the Mic, this variable equal to 8 */
 105        u16     MicWriteIndex; /* The number of MicWriteAddress */
 106
 107        u8      TxRate[((MAX_USB_TX_DESCRIPTOR + 1) & ~0x01)][2]; /* [0] current tx rate, [1] fall back rate */
 108        u8      TxInfo[((MAX_USB_TX_DESCRIPTOR + 1) & ~0x01)]; /*Store information for callback function */
 109
 110        /* ---- for Tx Parameter */
 111        u16     TxFragmentThreshold;    /* For frame body only */
 112        u16     TxRTSThreshold;
 113
 114        u32     MaxReceiveTime;
 115
 116        /* depend on OS, */
 117        u32     MulticastListNo;
 118        u32     PacketFilter; /* Setting by NDIS, the current packet filter in use. */
 119        u8      MulticastAddressesArray[DEFAULT_MULTICASTLISTMAX][MAC_ADDR_LENGTH];
 120
 121        /* COUNTERMEASURE */
 122        u8      bMICfailCount;
 123        u8      boCounterMeasureBlock;
 124        u8      reserved_4[2];
 125
 126        u32     TxTsc;
 127        u32     TxTsc_2;
 128};
 129
 130#endif
 131