Staging: add otus Atheros wireless network driver
Initial dump of the otus USB wireless network driver. It builds properly, but a lot of work needs to be done cleaning it up before it can be merged into the wireless driver tree. Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
e543c24141
commit
4bd43f507c
79 changed files with 70415 additions and 0 deletions
|
@ -65,5 +65,7 @@ source "drivers/staging/poch/Kconfig"
|
|||
|
||||
source "drivers/staging/agnx/Kconfig"
|
||||
|
||||
source "drivers/staging/otus/Kconfig"
|
||||
|
||||
endif # !STAGING_EXCLUDE_BUILD
|
||||
endif # STAGING
|
||||
|
|
|
@ -15,3 +15,4 @@ obj-$(CONFIG_ECHO) += echo/
|
|||
obj-$(CONFIG_USB_ATMEL) += at76_usb/
|
||||
obj-$(CONFIG_POCH) += poch/
|
||||
obj-$(CONFIG_AGNX) += agnx/
|
||||
obj-$(CONFIG_OTUS) += otus/
|
||||
|
|
134
drivers/staging/otus/80211core/amsdu.c
Normal file
134
drivers/staging/otus/80211core/amsdu.c
Normal file
|
@ -0,0 +1,134 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "cprecomp.h"
|
||||
|
||||
|
||||
/************************************************************************/
|
||||
/* */
|
||||
/* FUNCTION DESCRIPTION zfGetAmsduSubFrame */
|
||||
/* Get a subframe from a-MSDU. */
|
||||
/* */
|
||||
/* INPUTS */
|
||||
/* dev : device pointer */
|
||||
/* buf : A-MSDU frame buffer */
|
||||
/* offset : offset of subframe in the A-MSDU */
|
||||
/* */
|
||||
/* OUTPUTS */
|
||||
/* NULL or subframe */
|
||||
/* */
|
||||
/* AUTHOR */
|
||||
/* Stephen Chen Atheros Communications, INC. 2007.2 */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
zbuf_t* zfGetAmsduSubFrame(zdev_t* dev, zbuf_t* buf, u16_t* offset)
|
||||
{
|
||||
u16_t subframeLen;
|
||||
u16_t amsduLen = zfwBufGetSize(dev, buf);
|
||||
zbuf_t* newBuf;
|
||||
|
||||
ZM_PERFORMANCE_RX_AMSDU(dev, buf, amsduLen);
|
||||
|
||||
/* Verify A-MSDU length */
|
||||
if (amsduLen < (*offset + 14))
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Locate A-MSDU subframe by offset and verify subframe length */
|
||||
subframeLen = (zmw_buf_readb(dev, buf, *offset + 12) << 8) +
|
||||
zmw_buf_readb(dev, buf, *offset + 13);
|
||||
if (subframeLen == 0)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Verify A-MSDU subframe length */
|
||||
if ((*offset+14+subframeLen) <= amsduLen)
|
||||
{
|
||||
/* Allocate a new buffer */
|
||||
if ((newBuf = zfwBufAllocate(dev, 24+2+subframeLen)) != NULL)
|
||||
{
|
||||
#ifdef ZM_ENABLE_NATIVE_WIFI
|
||||
/* Copy and convert subframe to wlan frame format */
|
||||
/* SHALL NOT INCLUDE QOS and AMSDU header. Ray 20070807 For Vista */
|
||||
zfRxBufferCopy(dev, newBuf, buf, 0, 0, 24);
|
||||
zfRxBufferCopy(dev, newBuf, buf, 24, *offset+14, subframeLen);
|
||||
zfwBufSetSize(dev, newBuf, 24+subframeLen);
|
||||
#else
|
||||
/* Copy subframe to new buffer */
|
||||
zfRxBufferCopy(dev, newBuf, buf, 0, *offset, 14+subframeLen);
|
||||
zfwBufSetSize(dev, newBuf, 14+subframeLen);
|
||||
#endif
|
||||
/* Update offset */
|
||||
*offset += (((14+subframeLen)+3) & 0xfffc);
|
||||
|
||||
/* Return buffer pointer */
|
||||
return newBuf;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************/
|
||||
/* */
|
||||
/* FUNCTION DESCRIPTION zfDeAmsdu */
|
||||
/* De-AMSDU. */
|
||||
/* */
|
||||
/* INPUTS */
|
||||
/* dev : device pointer */
|
||||
/* buf : A-MSDU frame buffer */
|
||||
/* vap : VAP port */
|
||||
/* */
|
||||
/* OUTPUTS */
|
||||
/* None */
|
||||
/* */
|
||||
/* AUTHOR */
|
||||
/* Stephen Chen Atheros Communications, INC. 2007.2 */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
void zfDeAmsdu(zdev_t* dev, zbuf_t* buf, u16_t vap, u8_t encryMode)
|
||||
{
|
||||
u16_t offset = ZM_SIZE_OF_WLAN_DATA_HEADER+ZM_SIZE_OF_QOS_CTRL;
|
||||
zbuf_t* subframeBuf;
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
ZM_BUFFER_TRACE(dev, buf)
|
||||
|
||||
if (encryMode == ZM_AES || encryMode == ZM_TKIP)
|
||||
{
|
||||
offset += (ZM_SIZE_OF_IV + ZM_SIZE_OF_EXT_IV);
|
||||
}
|
||||
else if (encryMode == ZM_WEP64 || encryMode == ZM_WEP128)
|
||||
{
|
||||
offset += ZM_SIZE_OF_IV;
|
||||
}
|
||||
|
||||
/* Repeatly calling zfGetAmsduSubFrame() until NULL returned */
|
||||
while ((subframeBuf = zfGetAmsduSubFrame(dev, buf, &offset)) != NULL)
|
||||
{
|
||||
wd->commTally.NotifyNDISRxFrmCnt++;
|
||||
if (wd->zfcbRecvEth != NULL)
|
||||
{
|
||||
wd->zfcbRecvEth(dev, subframeBuf, (u8_t)vap);
|
||||
ZM_PERFORMANCE_RX_MSDU(dev, wd->tick);
|
||||
}
|
||||
}
|
||||
zfwBufFree(dev, buf, 0);
|
||||
|
||||
return;
|
||||
}
|
3611
drivers/staging/otus/80211core/cagg.c
Normal file
3611
drivers/staging/otus/80211core/cagg.c
Normal file
File diff suppressed because it is too large
Load diff
435
drivers/staging/otus/80211core/cagg.h
Normal file
435
drivers/staging/otus/80211core/cagg.h
Normal file
|
@ -0,0 +1,435 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* */
|
||||
/* Module Name : cagg.h */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module contains A-MPDU aggregation relatived functions. */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* None */
|
||||
/* */
|
||||
/****************************************************************************/
|
||||
/*Revision History: */
|
||||
/* Who When What */
|
||||
/* -------- -------- ----------------------------------------------*/
|
||||
/* */
|
||||
/* Honda 12-4-06 created */
|
||||
/* */
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _CAGG_H
|
||||
#define _CAGG_H
|
||||
|
||||
|
||||
/*
|
||||
* the aggregation functions flag, 0 if don't do aggregate
|
||||
*/
|
||||
|
||||
#define ZM_AGG_FPGA_DEBUG 1
|
||||
#define ZM_AGG_FPGA_REORDERING 1
|
||||
|
||||
#ifndef ZM_AGG_TALLY
|
||||
//#define ZM_AGG_TALLY
|
||||
#endif
|
||||
/*
|
||||
* Aggregate control
|
||||
*/
|
||||
|
||||
|
||||
#define ZM_AGG_POOL_SIZE 20
|
||||
#define ZM_BAW_POOL_SIZE 32
|
||||
#define ZM_AGGQ_SIZE 64
|
||||
#define ZM_AGGQ_SIZE_MASK (ZM_AGGQ_SIZE-1)
|
||||
#define ZM_AGG_LOW_THRESHOLD 1
|
||||
#define ZM_AGG_HIGH_THRESHOLD 5
|
||||
|
||||
/*
|
||||
* number of access categories (ac)
|
||||
*/
|
||||
#define ZM_AC 4
|
||||
/*
|
||||
* the timer to clear aggregation queue, unit: 1 tick
|
||||
* if the packet is too old (current time - arrival time)
|
||||
* the packet and the aggregate queue will be cleared
|
||||
*/
|
||||
#define ZM_AGG_CLEAR_TIME 10
|
||||
/*
|
||||
* delete the queue if idle for ZM_DELETE_TIME
|
||||
* unit: 10ms
|
||||
*/
|
||||
#define ZM_AGG_DELETE_TIME 10000
|
||||
|
||||
/*
|
||||
* block ack window size
|
||||
*/
|
||||
#define ZM_AGG_BAW_SIZE 64
|
||||
#define ZM_AGG_BAW_MASK (ZM_AGG_BAW_SIZE-1)
|
||||
/*
|
||||
* originator ADDBA Resquest receiver
|
||||
* |----------------------------->|
|
||||
* 1| ACK |1
|
||||
* |<-----------------------------|
|
||||
* 2| ADDBA Response |2
|
||||
* |<-----------------------------|
|
||||
* 3| ACK |3
|
||||
* |----------------------------->|
|
||||
* 4 4
|
||||
*/
|
||||
#define ZM_AGG_ADDBA_REQUEST 1
|
||||
#define ZM_AGG_ADDBA_REQUEST_ACK 2
|
||||
#define ZM_AGG_ADDBA_RESPONSE 3
|
||||
#define ZM_AGG_ADDBA_RESPONSE_ACK 4
|
||||
|
||||
#define ZM_AGG_SINGLE_MPDU 00
|
||||
#define ZM_AGG_FIRST_MPDU 01
|
||||
#define ZM_AGG_MIDDLE_MPDU 11
|
||||
#define ZM_AGG_LAST_MPDU 10
|
||||
/*
|
||||
* end of Aggregate control
|
||||
*/
|
||||
|
||||
#define TID_TX struct aggQueue*
|
||||
#define TID_BAW struct baw_q*
|
||||
#define BAW wd->baw_enabler
|
||||
#define DESTQ wd->destQ
|
||||
|
||||
/*
|
||||
* Queue access
|
||||
*/
|
||||
#define zm_agg_qlen(dev, head, tail) ((head - tail) & ZM_AGGQ_SIZE_MASK)
|
||||
#define zm_agg_inQ(tid_tx, pt) ((((pt - tid_tx->aggTail) & ZM_AGGQ_SIZE_MASK) < \
|
||||
((tid_tx->aggHead - tid_tx->aggTail) & ZM_AGGQ_SIZE_MASK))? TRUE:FALSE)
|
||||
#define zm_agg_plus(pt) pt = (pt + 1) & ZM_AGGQ_SIZE_MASK
|
||||
#define zm_agg_min(A, B) ((A>B)? B:A)
|
||||
#define zm_agg_GetTime() wd->tick
|
||||
#define TXQL (zfHpGetMaxTxdCount(dev) - zfHpGetFreeTxdCount(dev))
|
||||
|
||||
/* don't change AGG_MIN_TXQL easily, this might cause BAW BSOD */
|
||||
#define AGG_MIN_TXQL 2
|
||||
/*
|
||||
* consider tcp,udp,ac(1234)
|
||||
*/
|
||||
#define zm_agg_dynamic_threshold(dev, ar) ((ar > 16)? 11: \
|
||||
(ar > 12)? 8: \
|
||||
(ar > 8)? 5: \
|
||||
(ar > 4)? 2:1)
|
||||
#define zm_agg_weight(ac) ((3 == ac)? 4: \
|
||||
(2 == ac)? 3: \
|
||||
(0 == ac)? 2:1)
|
||||
/*
|
||||
* the required free queue ratio per ac
|
||||
*/
|
||||
|
||||
#define zm_agg_ratio(ac) ((3 == ac)? 3: \
|
||||
(2 == ac)? (zfHpGetMaxTxdCount(dev)*1/4): \
|
||||
(0 == ac)? (zfHpGetMaxTxdCount(dev)*2/4): \
|
||||
(zfHpGetMaxTxdCount(dev)*3/4))
|
||||
|
||||
//#define zm_agg_ratio(ac) 3
|
||||
/*
|
||||
* end of Queue access
|
||||
*/
|
||||
|
||||
#define ZM_AGGMSG_LEV ZM_LV_3
|
||||
#define zm_msg0_agg(lv, msg) if (ZM_AGGMSG_LEV >= lv) \
|
||||
{zm_debug_msg0(msg);}
|
||||
#define zm_msg1_agg(lv, msg, val) if (ZM_AGGMSG_LEV >= lv) \
|
||||
{zm_debug_msg1(msg, val);}
|
||||
#define zm_msg2_agg(lv, msg, val) if (ZM_AGGMSG_LEV >= lv) \
|
||||
{zm_debug_msg2(msg, val);}
|
||||
|
||||
#ifndef ZM_ENABLE_FW_BA_RETRANSMISSION //disable BAW
|
||||
struct baw_header_r {
|
||||
u16_t *header;
|
||||
u16_t *mic;
|
||||
u16_t *snap;
|
||||
u16_t headerLen;
|
||||
u16_t micLen;
|
||||
u16_t snapLen;
|
||||
u16_t removeLen;
|
||||
u8_t keyIdx;
|
||||
};
|
||||
|
||||
struct baw_header {
|
||||
u16_t header[29];//[(8+30+2+18)/2]; 58 bytes /* ctr+(4+a1+a2+a3+2+a4)+qos+iv */
|
||||
u16_t headerLen;
|
||||
u16_t mic[4]; //[8/2]; 8 bytes
|
||||
u16_t micLen;
|
||||
u16_t snap[4]; //[8/2]; 8 bytes
|
||||
u16_t snapLen;
|
||||
u16_t removeLen;
|
||||
u8_t keyIdx;
|
||||
};
|
||||
|
||||
struct bufInfo {
|
||||
zbuf_t* buf;
|
||||
u8_t baw_retransmit;
|
||||
u32_t timestamp;
|
||||
struct baw_header *baw_header;
|
||||
};
|
||||
#endif
|
||||
struct aggElement
|
||||
{
|
||||
zbuf_t* buf;
|
||||
u32_t arrivalTime;
|
||||
u8_t baw_retransmit;
|
||||
struct zsAdditionInfo addInfo;
|
||||
//struct baw_header baw_header;
|
||||
};
|
||||
|
||||
|
||||
#ifndef ZM_ENABLE_FW_BA_RETRANSMISSION //disable BAW
|
||||
struct baw_buf
|
||||
{
|
||||
zbuf_t* buf;
|
||||
u16_t baw_seq;
|
||||
u32_t timestamp;
|
||||
u8_t baw_retransmit;
|
||||
struct baw_header baw_header;
|
||||
};
|
||||
|
||||
struct baw_q {
|
||||
struct baw_buf frame[ZM_VTXQ_SIZE];
|
||||
u16_t enabled;
|
||||
u16_t start_seq;
|
||||
u16_t head;
|
||||
u16_t tail;
|
||||
u16_t size;
|
||||
TID_TX tid_tx;
|
||||
|
||||
//struct baw_header *baw_header;
|
||||
};
|
||||
|
||||
struct baw_enabler
|
||||
{
|
||||
struct baw_q tid_baw[ZM_BAW_POOL_SIZE];
|
||||
u8_t delPoint;
|
||||
void (*core)(zdev_t* dev, u16_t baw_seq, u32_t bitmap, u16_t aggLen);
|
||||
//void (*core);
|
||||
void (*init)(zdev_t* dev);
|
||||
TID_BAW (*getNewQ)(zdev_t* dev, u16_t start_seq, TID_TX tid_tx);
|
||||
TID_BAW (*getQ)(zdev_t* dev, u16_t baw_seq);
|
||||
u16_t (*insert)(zdev_t* dev, zbuf_t* buf, u16_t baw_seq, TID_BAW tid_baw, u8_t baw_retransmit, struct baw_header_r *header_r);
|
||||
struct bufInfo* (*pop)(zdev_t* dev, u16_t index, TID_BAW tid_baw);
|
||||
void (*enable)(zdev_t* dev, TID_BAW tid_baw, u16_t start_seq);
|
||||
void (*disable)(zdev_t* dev, TID_BAW tid_baw);
|
||||
|
||||
};
|
||||
#endif
|
||||
struct aggQueue
|
||||
{
|
||||
struct aggElement aggvtxq[ZM_AGGQ_SIZE];
|
||||
u16_t aggHead;
|
||||
u16_t aggTail;
|
||||
s16_t size;
|
||||
u16_t aggQSTA;
|
||||
u16_t aggQEnabled;
|
||||
u16_t ac;
|
||||
u16_t tid;
|
||||
u16_t aggReady;
|
||||
u16_t clearFlag;
|
||||
u16_t deleteFlag;
|
||||
u32_t lastArrival;
|
||||
u16_t aggFrameSize;
|
||||
u16_t bar_ssn; /* starting sequence number in BAR */
|
||||
u16_t dst[3];
|
||||
u16_t complete; /* complete indication pointer */
|
||||
};
|
||||
|
||||
struct aggSta
|
||||
{
|
||||
u16_t count[ZM_AC];
|
||||
TID_TX tid_tx[8];
|
||||
u16_t aggFlag[ZM_AC];
|
||||
};
|
||||
|
||||
struct agg_tid_rx
|
||||
{
|
||||
u16_t aid;
|
||||
u16_t ac;
|
||||
u16_t addBaExchangeStatusCode;
|
||||
//struct zsAdditionInfo *addInfo;
|
||||
u16_t seq_start; /* first seq expected next */
|
||||
u16_t baw_head; /* head of valid block ack window */
|
||||
u16_t baw_tail; /* tail of valid block ack window */
|
||||
//u16_t free_count; /* block ack window size */
|
||||
u8_t sq_exceed_count;
|
||||
u8_t sq_behind_count;
|
||||
struct aggElement frame[ZM_AGG_BAW_SIZE + 1]; /* out-of-order rx frames */
|
||||
};
|
||||
|
||||
struct aggControl
|
||||
{
|
||||
u16_t aggEnabled;
|
||||
u16_t ampduIndication;
|
||||
u16_t addbaIndication;
|
||||
//TID_BAW tid_baw;
|
||||
u32_t timestamp;
|
||||
};
|
||||
|
||||
struct aggBaFrameParameter
|
||||
{
|
||||
zbuf_t* buf;
|
||||
u16_t ba_parameter;
|
||||
u8_t dialog;
|
||||
u16_t ba_policy;
|
||||
u16_t tid;
|
||||
u16_t buffer_size;
|
||||
u16_t ba_timeout;
|
||||
u16_t ba_start_seq;
|
||||
u16_t status_code;
|
||||
};
|
||||
|
||||
struct aggBarControl
|
||||
{
|
||||
u16_t bar_ack_policy ;
|
||||
u16_t multi_tid ;
|
||||
u16_t compressed_bitmap ;
|
||||
u16_t tid_info ;
|
||||
};
|
||||
|
||||
struct aggTally
|
||||
{
|
||||
u32_t got_packets_sum;
|
||||
u32_t got_bytes_sum;
|
||||
u32_t sent_packets_sum;
|
||||
u32_t sent_bytes_sum;
|
||||
u32_t avg_got_packets;
|
||||
u32_t avg_got_bytes;
|
||||
u32_t avg_sent_packets;
|
||||
u32_t avg_sent_bytes;
|
||||
u16_t time;
|
||||
};
|
||||
|
||||
|
||||
struct destQ {
|
||||
struct dest{
|
||||
u16_t Qtype : 1; /* 0 aggr, 1 vtxq */
|
||||
TID_TX tid_tx;
|
||||
void* vtxq;
|
||||
|
||||
struct dest* next;
|
||||
} *dest[4];
|
||||
struct dest* Head[4];
|
||||
//s16_t size[4];
|
||||
u16_t ppri;
|
||||
void (*insert)(zdev_t* dev, u16_t Qtype, u16_t ac, TID_TX tid_tx, void* vtxq);
|
||||
void (*delete)(zdev_t* dev, u16_t Qtype, TID_TX tid_tx, void* vtxq);
|
||||
void (*init)(zdev_t* dev);
|
||||
struct dest* (*getNext)(zdev_t* dev, u16_t ac);
|
||||
u16_t (*exist)(zdev_t* dev, u16_t Qtype, u16_t ac, TID_TX tid_tx, void* vtxq);
|
||||
//void (*scan)(zdev_t* dev);
|
||||
};
|
||||
/*
|
||||
* aggregation tx
|
||||
*/
|
||||
void zfAggInit(zdev_t* dev);
|
||||
u16_t zfApFindSta(zdev_t* dev, u16_t* addr);
|
||||
u16_t zfAggGetSta(zdev_t* dev, zbuf_t* buf);
|
||||
TID_TX zfAggTxGetQueue(zdev_t* dev, u16_t aid, u16_t tid);
|
||||
TID_TX zfAggTxNewQueue(zdev_t* dev, u16_t aid, u16_t tid, zbuf_t* buf);
|
||||
u16_t zfAggTxEnqueue(zdev_t* dev, zbuf_t* buf, u16_t aid, TID_TX tid_tx);
|
||||
u16_t zfAggTx(zdev_t* dev, zbuf_t* buf, u16_t tid);
|
||||
u16_t zfAggTxReadyCount(zdev_t* dev, u16_t ac);
|
||||
u16_t zfAggTxPartial(zdev_t* dev, u16_t ac, u16_t readycount);
|
||||
u16_t zfAggTxSend(zdev_t* dev, u32_t freeTxd, TID_TX tid_tx);
|
||||
TID_TX zfAggTxGetReadyQueue(zdev_t* dev, u16_t ac);
|
||||
zbuf_t* zfAggTxGetVtxq(zdev_t* dev, TID_TX tid_tx);
|
||||
u16_t zfAggTxDeleteQueue(zdev_t* dev, u16_t qnum);
|
||||
u16_t zfAggScanAndClear(zdev_t* dev, u32_t time);
|
||||
u16_t zfAggClearQueue(zdev_t* dev);
|
||||
void zfAggTxScheduler(zdev_t* dev, u8_t ScanAndClear);
|
||||
|
||||
/* tid_tx manipulation */
|
||||
#ifndef ZM_ENABLE_FW_BA_RETRANSMISSION //disable BAW
|
||||
u16_t zfAggTidTxInsertHead(zdev_t* dev, struct bufInfo* buf_info, TID_TX tid_tx);
|
||||
#endif
|
||||
void zfAggDestInsert(zdev_t* dev, u16_t Qtype, u16_t ac, TID_TX tid_tx, void* vtxq);
|
||||
void zfAggDestDelete(zdev_t* dev, u16_t Qtype, TID_TX tid_tx, void* vtxq);
|
||||
void zfAggDestInit(zdev_t* dev);
|
||||
struct dest* zfAggDestGetNext(zdev_t* dev, u16_t ac);
|
||||
u16_t zfAggDestExist(zdev_t* dev, u16_t Qtype, u16_t ac, TID_TX tid_tx, void* vtxq);
|
||||
/*
|
||||
* aggregation rx
|
||||
*/
|
||||
struct agg_tid_rx *zfAggRxEnabled(zdev_t* dev, zbuf_t* buf);
|
||||
u16_t zfAggRx(zdev_t* dev, zbuf_t* buf, struct zsAdditionInfo *addInfo, struct agg_tid_rx *tid_rx);
|
||||
struct agg_tid_rx *zfAggRxGetQueue(zdev_t* dev, zbuf_t* buf);
|
||||
u16_t zfAggRxEnqueue(zdev_t* dev, zbuf_t* buf, struct agg_tid_rx *tid_rx, struct zsAdditionInfo *addInfo);
|
||||
u16_t zfAggRxFlush(zdev_t* dev, u16_t seq_no, struct agg_tid_rx *tid_rx);
|
||||
u16_t zfAggRxFreeBuf(zdev_t* dev, u16_t destroy);
|
||||
u16_t zfAggRxClear(zdev_t* dev, u32_t time);
|
||||
void zfAggRecvBAR(zdev_t* dev, zbuf_t* buf);
|
||||
/*
|
||||
* end of aggregation rx
|
||||
*/
|
||||
|
||||
/*
|
||||
* ADDBA
|
||||
*/
|
||||
u16_t zfAggSendAddbaRequest(zdev_t* dev, u16_t *dst, u16_t ac, u16_t up);
|
||||
u16_t zfAggSetAddbaFrameBody(zdev_t* dev,zbuf_t* buf, u16_t offset, u16_t ac, u16_t up);
|
||||
u16_t zfAggGenAddbaHeader(zdev_t* dev, u16_t* dst,
|
||||
u16_t* header, u16_t len, zbuf_t* buf, u16_t vap, u8_t encrypt);
|
||||
u16_t zfAggProcessAction(zdev_t* dev, zbuf_t* buf);
|
||||
u16_t zfAggBlockAckActionFrame(zdev_t* dev, zbuf_t* buf);
|
||||
u16_t zfAggRecvAddbaRequest(zdev_t* dev, zbuf_t* buf);
|
||||
u16_t zfAggRecvAddbaResponse(zdev_t* dev, zbuf_t* buf);
|
||||
u16_t zfAggRecvDelba(zdev_t* dev, zbuf_t* buf);
|
||||
u16_t zfAggSendAddbaResponse(zdev_t* dev, struct aggBaFrameParameter *bf);
|
||||
u16_t zfAggSetAddbaResponseFrameBody(zdev_t* dev, zbuf_t* buf,
|
||||
struct aggBaFrameParameter *bf, u16_t offset);
|
||||
u16_t zfAggAddbaSetTidRx(zdev_t* dev, zbuf_t* buf,
|
||||
struct aggBaFrameParameter *bf);
|
||||
/*
|
||||
* zfAggTxSendEth
|
||||
*/
|
||||
u16_t zfAggTxSendEth(zdev_t* dev, zbuf_t* buf, u16_t port, u16_t bufType, u8_t flag, struct aggControl *aggControl, TID_TX tid_tx);
|
||||
|
||||
/*
|
||||
* statistics functions
|
||||
*/
|
||||
u16_t zfAggTallyReset(zdev_t* dev);
|
||||
|
||||
u16_t zfAggPrintTally(zdev_t* dev);
|
||||
|
||||
/*
|
||||
* BAR
|
||||
*/
|
||||
void zfAggInvokeBar(zdev_t* dev, TID_TX tid_tx);
|
||||
u16_t zfAggSendBar(zdev_t* dev, TID_TX tid_tx, struct aggBarControl *aggBarControl);
|
||||
u16_t zfAggSetBarBody(zdev_t* dev, zbuf_t* buf, u16_t offset, TID_TX tid_tx, struct aggBarControl *aggBarControl);
|
||||
u16_t zfAggGenBarHeader(zdev_t* dev, u16_t* dst,
|
||||
u16_t* header, u16_t len, zbuf_t* buf, u16_t vap, u8_t encrypt);
|
||||
|
||||
#ifndef ZM_ENABLE_FW_BA_RETRANSMISSION //disable BAW
|
||||
/* BAW BA retransmission */
|
||||
void zfBawCore(zdev_t* dev, u16_t baw_seq, u32_t bitmap, u16_t aggLen);
|
||||
void zfBawInit(zdev_t* dev);
|
||||
TID_BAW zfBawGetNewQ(zdev_t* dev, u16_t start_seq, TID_TX tid_tx);
|
||||
u16_t zfBawInsert(zdev_t* dev, zbuf_t* buf, u16_t baw_seq, TID_BAW tid_baw, u8_t baw_retransmit, struct baw_header_r *header_r);
|
||||
struct bufInfo* zfBawPop(zdev_t* dev, u16_t index, TID_BAW tid_baw);
|
||||
void zfBawEnable(zdev_t* dev, TID_BAW tid_baw, u16_t start_seq);
|
||||
void zfBawDisable(zdev_t* dev, TID_BAW tid_baw);
|
||||
TID_BAW zfBawGetQ(zdev_t* dev, u16_t baw_seq);
|
||||
void zfAggTxRetransmit(zdev_t* dev, struct bufInfo *buf_info, struct aggControl *aggControl, TID_TX tid_tx);
|
||||
#endif
|
||||
/* extern functions */
|
||||
extern zbuf_t* zfGetVtxq(zdev_t* dev, u8_t ac);
|
||||
|
||||
#endif /* #ifndef _CAGG_H */
|
||||
|
1861
drivers/staging/otus/80211core/ccmd.c
Normal file
1861
drivers/staging/otus/80211core/ccmd.c
Normal file
File diff suppressed because it is too large
Load diff
1227
drivers/staging/otus/80211core/cfunc.c
Normal file
1227
drivers/staging/otus/80211core/cfunc.c
Normal file
File diff suppressed because it is too large
Load diff
449
drivers/staging/otus/80211core/cfunc.h
Normal file
449
drivers/staging/otus/80211core/cfunc.h
Normal file
|
@ -0,0 +1,449 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* */
|
||||
/* Module Name : func_extr.c */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module contains function prototype. */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* None */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#ifndef _CFUNC_H
|
||||
#define _CFUNC_H
|
||||
|
||||
#include "queue.h"
|
||||
|
||||
/* amsdu.c */
|
||||
void zfDeAmsdu(zdev_t* dev, zbuf_t* buf, u16_t vap, u8_t encryMode);
|
||||
|
||||
/* cscanmgr.c */
|
||||
void zfScanMgrInit(zdev_t* dev);
|
||||
u8_t zfScanMgrScanStart(zdev_t* dev, u8_t scanType);
|
||||
void zfScanMgrScanStop(zdev_t* dev, u8_t scanType);
|
||||
void zfScanMgrScanAck(zdev_t* dev);
|
||||
|
||||
/* cpsmgr.c */
|
||||
void zfPowerSavingMgrInit(zdev_t* dev);
|
||||
void zfPowerSavingMgrSetMode(zdev_t* dev, u8_t mode);
|
||||
void zfPowerSavingMgrMain(zdev_t* dev);
|
||||
void zfPowerSavingMgrWakeup(zdev_t* dev);
|
||||
u8_t zfPowerSavingMgrIsSleeping(zdev_t *dev);
|
||||
void zfPowerSavingMgrProcessBeacon(zdev_t* dev, zbuf_t* buf);
|
||||
void zfPowerSavingMgrAtimWinExpired(zdev_t* dev);
|
||||
void zfPowerSavingMgrConnectNotify(zdev_t *dev);
|
||||
void zfPowerSavingMgrPreTBTTInterrupt(zdev_t *dev);
|
||||
|
||||
/* ccmd.c */
|
||||
u16_t zfWlanEnable(zdev_t* dev);
|
||||
|
||||
/* cfunc.c */
|
||||
u8_t zfQueryOppositeRate(zdev_t* dev, u8_t dst_mac[6], u8_t frameType);
|
||||
void zfCopyToIntTxBuffer(zdev_t* dev, zbuf_t* buf, u8_t* src,
|
||||
u16_t offset, u16_t length);
|
||||
void zfCopyToRxBuffer(zdev_t* dev, zbuf_t* buf, u8_t* src,
|
||||
u16_t offset, u16_t length);
|
||||
void zfCopyFromIntTxBuffer(zdev_t* dev, zbuf_t* buf, u8_t* dst,
|
||||
u16_t offset, u16_t length);
|
||||
void zfCopyFromRxBuffer(zdev_t* dev, zbuf_t* buf, u8_t* dst,
|
||||
u16_t offset, u16_t length);
|
||||
void zfMemoryCopy(u8_t* dst, u8_t* src, u16_t length);
|
||||
void zfMemoryMove(u8_t* dst, u8_t* src, u16_t length);
|
||||
void zfZeroMemory(u8_t* va, u16_t length);
|
||||
u8_t zfMemoryIsEqual(u8_t* m1, u8_t* m2, u16_t length);
|
||||
u8_t zfRxBufferEqualToStr(zdev_t* dev, zbuf_t* buf, const u8_t* str,
|
||||
u16_t offset, u16_t length);
|
||||
void zfTxBufferCopy(zdev_t*dev, zbuf_t* dst, zbuf_t* src,
|
||||
u16_t dstOffset, u16_t srcOffset, u16_t length);
|
||||
void zfRxBufferCopy(zdev_t*dev, zbuf_t* dst, zbuf_t* src,
|
||||
u16_t dstOffset, u16_t srcOffset, u16_t length);
|
||||
|
||||
void zfCollectHWTally(zdev_t*dev, u32_t* rsp, u8_t id);
|
||||
void zfTimerInit(zdev_t* dev);
|
||||
u16_t zfTimerSchedule(zdev_t* dev, u16_t event, u32_t tick);
|
||||
u16_t zfTimerCancel(zdev_t* dev, u16_t event);
|
||||
void zfTimerClear(zdev_t* dev);
|
||||
u16_t zfTimerCheckAndHandle(zdev_t* dev);
|
||||
void zfProcessEvent(zdev_t* dev, u16_t* eventArray, u8_t eventCount);
|
||||
|
||||
void zfBssInfoCreate(zdev_t* dev);
|
||||
void zfBssInfoDestroy(zdev_t* dev);
|
||||
|
||||
struct zsBssInfo* zfBssInfoAllocate(zdev_t* dev);
|
||||
void zfBssInfoFree(zdev_t* dev, struct zsBssInfo* pBssInfo);
|
||||
void zfBssInfoReorderList(zdev_t* dev);
|
||||
void zfBssInfoInsertToList(zdev_t* dev, struct zsBssInfo* pBssInfo);
|
||||
void zfBssInfoRemoveFromList(zdev_t* dev, struct zsBssInfo* pBssInfo);
|
||||
void zfBssInfoRefresh(zdev_t* dev, u16_t mode);
|
||||
void zfCoreSetFrequencyComplete(zdev_t* dev);
|
||||
void zfCoreSetFrequency(zdev_t* dev, u16_t frequency);
|
||||
void zfCoreSetFrequencyV2(zdev_t* dev, u16_t frequency,
|
||||
zfpFreqChangeCompleteCb cb);
|
||||
void zfCoreSetFrequencyEx(zdev_t* dev, u16_t frequency, u8_t bw40,
|
||||
u8_t extOffset, zfpFreqChangeCompleteCb cb);
|
||||
void zfCoreSetFrequencyExV2(zdev_t* dev, u16_t frequency, u8_t bw40,
|
||||
u8_t extOffset, zfpFreqChangeCompleteCb cb, u8_t forceSetFreq);
|
||||
void zfReSetCurrentFrequency(zdev_t* dev);
|
||||
u32_t zfCoreSetKey(zdev_t* dev, u8_t user, u8_t keyId, u8_t type,
|
||||
u16_t* mac, u32_t* key);
|
||||
void zfCoreSetKeyComplete(zdev_t* dev);
|
||||
void zfCoreReinit(zdev_t* dev);
|
||||
void zfCoreMacAddressNotify(zdev_t* dev, u8_t *addr);
|
||||
void zfCoreSetIsoName(zdev_t* dev, u8_t* isoName);
|
||||
void zfGenerateRandomBSSID(zdev_t* dev, u8_t *MACAddr, u8_t *BSSID);
|
||||
void zfCoreHalInitComplete(zdev_t* dev);
|
||||
|
||||
u16_t zfFindCleanFrequency(zdev_t* dev, u32_t adhocMode);
|
||||
u16_t zfFindMinimumUtilizationChannelIndex(zdev_t* dev, u16_t* array, u16_t count);
|
||||
u8_t zfCompareWithBssid(zdev_t* dev, u16_t* bssid);
|
||||
|
||||
/* chb.c */
|
||||
void zfDumpBssList(zdev_t* dev);
|
||||
|
||||
|
||||
u16_t zfIssueCmd(zdev_t* dev, u32_t* cmd, u16_t cmdLen, u16_t src, u8_t* buf);
|
||||
|
||||
|
||||
/* cic.c */
|
||||
void zfUpdateBssid(zdev_t* dev, u8_t* bssid);
|
||||
void zfResetSupportRate(zdev_t* dev, u8_t type);
|
||||
void zfUpdateSupportRate(zdev_t* dev, u8_t* rateArray);
|
||||
u8_t zfIsGOnlyMode(zdev_t* dev, u16_t frequency, u8_t* rateArray);
|
||||
void zfGatherBMode(zdev_t* dev, u8_t* rateArray, u8_t* extrateArray);
|
||||
u8_t zfPSDeviceSleep(zdev_t* dev);
|
||||
u16_t zfGetRandomNumber(zdev_t* dev, u16_t initValue);
|
||||
void zfCoreEvent(zdev_t* dev, u16_t event, u8_t* rsp);
|
||||
void zfBeaconCfgInterrupt(zdev_t* dev, u8_t* rsp);
|
||||
void zfEndOfAtimWindowInterrupt(zdev_t* dev);
|
||||
|
||||
/* cinit.c */
|
||||
u16_t zfTxGenWlanHeader(zdev_t* dev, zbuf_t* buf, u16_t* header, u16_t seq,
|
||||
u8_t flag, u16_t plusLen, u16_t minusLen, u16_t port,
|
||||
u16_t* da, u16_t* sa, u8_t up, u16_t *micLen,
|
||||
u16_t* snap, u16_t snapLen, struct aggControl *aggControl);
|
||||
u16_t zfTxGenMmHeader(zdev_t* dev, u8_t frameType, u16_t* dst,
|
||||
u16_t* header, u16_t len, zbuf_t* buf, u16_t vap, u8_t encrypt);
|
||||
void zfInitMacApMode(zdev_t* dev);
|
||||
u16_t zfChGetNextChannel(zdev_t* dev, u16_t frequency, u8_t* pbPassive);
|
||||
u16_t zfChGetFirstChannel(zdev_t* dev, u8_t* pbPassive);
|
||||
u16_t zfChGetFirst2GhzChannel(zdev_t* dev);
|
||||
u16_t zfChGetFirst5GhzChannel(zdev_t* dev);
|
||||
u16_t zfChGetLastChannel(zdev_t* dev, u8_t* pbPassive);
|
||||
u16_t zfChGetLast5GhzChannel(zdev_t* dev);
|
||||
u16_t zfChNumToFreq(zdev_t* dev, u8_t ch, u8_t freqBand);
|
||||
u8_t zfChFreqToNum(u16_t freq, u8_t* bIs5GBand);
|
||||
|
||||
/* cmm.c */
|
||||
void zfProcessManagement(zdev_t* dev, zbuf_t* buf, struct zsAdditionInfo* AddInfo); //CWYang(m)
|
||||
void zfSendMmFrame(zdev_t* dev, u8_t frameType, u16_t* dst,
|
||||
u32_t p1, u32_t p2, u32_t p3);
|
||||
u16_t zfFindElement(zdev_t* dev, zbuf_t* buf, u8_t eid);
|
||||
u16_t zfFindWifiElement(zdev_t* dev, zbuf_t* buf, u8_t type, u8_t subtype);
|
||||
u16_t zfFindSuperGElement(zdev_t* dev, zbuf_t* buf, u8_t type);
|
||||
u16_t zfFindXRElement(zdev_t* dev, zbuf_t* buf, u8_t type);
|
||||
u16_t zfRemoveElement(zdev_t* dev, u8_t* buf, u16_t size, u8_t eid);
|
||||
u16_t zfUpdateElement(zdev_t* dev, u8_t* buf, u16_t size, u8_t* updateeid);
|
||||
void zfProcessProbeReq(zdev_t* dev, zbuf_t* buf, u16_t* src);
|
||||
void zfProcessProbeRsp(zdev_t* dev, zbuf_t* buf, struct zsAdditionInfo* AddInfo);
|
||||
u16_t zfSendProbeReq(zdev_t* dev, zbuf_t* buf, u16_t offset, u8_t bWithSSID);
|
||||
u16_t zfMmAddIeSupportRate(zdev_t* dev, zbuf_t* buf,
|
||||
u16_t offset, u8_t eid, u8_t rateSet);
|
||||
u16_t zfMmAddIeDs(zdev_t* dev, zbuf_t* buf, u16_t offset);
|
||||
u16_t zfMmAddIeErp(zdev_t* dev, zbuf_t* buf, u16_t offset);
|
||||
void zfUpdateDefaultQosParameter(zdev_t* dev, u8_t mode);
|
||||
u16_t zfMmAddIeWpa(zdev_t* dev, zbuf_t* buf, u16_t offset, u16_t apId);
|
||||
u16_t zfMmAddHTCapability(zdev_t* dev, zbuf_t* buf, u16_t offset); //CWYang(+)
|
||||
u16_t zfMmAddPreNHTCapability(zdev_t* dev, zbuf_t* buf, u16_t offset);
|
||||
u16_t zfMmAddExtendedHTCapability(zdev_t* dev, zbuf_t* buf, u16_t offset); //CWYang(+)
|
||||
u16_t zfFindATHExtCap(zdev_t* dev, zbuf_t* buf, u8_t type, u8_t subtype);
|
||||
u16_t zfFindBrdcmMrvlRlnkExtCap(zdev_t* dev, zbuf_t* buf);
|
||||
u16_t zfFindMarvelExtCap(zdev_t* dev, zbuf_t* buf);
|
||||
u16_t zfFindBroadcomExtCap(zdev_t* dev, zbuf_t* buf);
|
||||
u16_t zfFindRlnkExtCap(zdev_t* dev, zbuf_t* buf);
|
||||
|
||||
/* cmmap.c */
|
||||
void zfMmApTimeTick(zdev_t* dev);
|
||||
void zfApAgingSta(zdev_t* dev);
|
||||
u16_t zfApAddSta(zdev_t* dev, u16_t* addr, u16_t state, u16_t apId, u8_t type,
|
||||
u8_t qosType, u8_t qosInfo);
|
||||
void zfApProtctionMonitor(zdev_t* dev);
|
||||
void zfApProcessBeacon(zdev_t* dev, zbuf_t* buf);
|
||||
void zfApProcessAuth(zdev_t* dev, zbuf_t* buf, u16_t* src, u16_t apId);
|
||||
void zfApProcessAsocReq(zdev_t* dev, zbuf_t* buf, u16_t* src, u16_t apId);
|
||||
void zfApProcessAsocRsp(zdev_t* dev, zbuf_t* buf);
|
||||
void zfApProcessDeauth(zdev_t* dev, zbuf_t* buf, u16_t* src, u16_t apId);
|
||||
void zfApProcessDisasoc(zdev_t* dev, zbuf_t* buf, u16_t* src, u16_t apId);
|
||||
void zfApProcessProbeRsp(zdev_t* dev, zbuf_t* buf, struct zsAdditionInfo* AddInfo);
|
||||
void zfApStoreAsocReqIe(zdev_t* dev, zbuf_t* buf, u16_t aid);
|
||||
u16_t zfApAddIeSsid(zdev_t* dev, zbuf_t* buf, u16_t offset, u16_t vap);
|
||||
void zfApSendBeacon(zdev_t* dev);
|
||||
u16_t zfApGetSTAInfo(zdev_t* dev, u16_t* addr, u16_t* state, u8_t* vap);
|
||||
u16_t zfIntrabssForward(zdev_t* dev, zbuf_t* buf, u8_t srcVap);
|
||||
u16_t zfApBufferPsFrame(zdev_t* dev, zbuf_t* buf, u16_t port);
|
||||
void zfApInitStaTbl(zdev_t* dev);
|
||||
void zfApGetStaTxRateAndQosType(zdev_t* dev, u16_t* addr, u32_t* phyCtrl,
|
||||
u8_t* qosType, u16_t* rcProbingFlag);
|
||||
void zfApGetStaQosType(zdev_t* dev, u16_t* addr, u8_t* qosType);
|
||||
void zfApSetStaTxRate(zdev_t* dev, u16_t* addr, u32_t phyCtrl);
|
||||
struct zsMicVar* zfApGetRxMicKey(zdev_t* dev, zbuf_t* buf);
|
||||
struct zsMicVar* zfApGetTxMicKey(zdev_t* dev, zbuf_t* buf, u8_t* qosType);
|
||||
u16_t zfApAddIeWmePara(zdev_t* dev, zbuf_t* buf, u16_t offset, u16_t vap);
|
||||
u16_t zfApUpdatePsBit(zdev_t* dev, zbuf_t* buf, u8_t* vap, u8_t* uapsdTrig);
|
||||
void zfApProcessPsPoll(zdev_t* dev, zbuf_t* buf);
|
||||
u16_t zfApFindSta(zdev_t* dev, u16_t* addr);
|
||||
void zfApGetStaEncryType(zdev_t* dev, u16_t* addr, u8_t* encryType);
|
||||
void zfApGetStaWpaIv(zdev_t* dev, u16_t* addr, u16_t* iv16, u32_t* iv32);
|
||||
void zfApSetStaWpaIv(zdev_t* dev, u16_t* addr, u16_t iv16, u32_t iv32);
|
||||
void zfApClearStaKey(zdev_t* dev, u16_t* addr);
|
||||
#ifdef ZM_ENABLE_CENC
|
||||
void zfApGetStaCencIvAndKeyIdx(zdev_t* dev, u16_t* addr, u32_t *iv,
|
||||
u8_t *keyIdx);
|
||||
void zfApSetStaCencIv(zdev_t* dev, u16_t* addr, u32_t *iv);
|
||||
#endif //ZM_ENABLE_CENC
|
||||
void zfApSetProtectionMode(zdev_t* dev, u16_t mode);
|
||||
void zfApFlushBufferedPsFrame(zdev_t* dev);
|
||||
void zfApSendFailure(zdev_t* dev, u8_t* addr);
|
||||
u8_t zfApRemoveFromPsQueue(zdev_t* dev, u16_t id, u16_t* src);
|
||||
void zfApProcessAction(zdev_t* dev, zbuf_t* buf);
|
||||
/* cmmsta.c */
|
||||
void zfMmStaTimeTick(zdev_t* dev);
|
||||
void zfReWriteBeaconStartAddress(zdev_t* dev); // Mxzeng
|
||||
void zfStaProcessBeacon(zdev_t* dev, zbuf_t* buf, struct zsAdditionInfo* AddInfo); //CWYang(m)
|
||||
void zfStaProcessAuth(zdev_t* dev, zbuf_t* buf, u16_t* src, u16_t apId);
|
||||
void zfStaProcessAsocReq(zdev_t* dev, zbuf_t* buf, u16_t* src, u16_t apId);
|
||||
void zfStaProcessAsocRsp(zdev_t* dev, zbuf_t* buf);
|
||||
void zfStaProcessDeauth(zdev_t* dev, zbuf_t* buf);
|
||||
void zfStaProcessDisasoc(zdev_t* dev, zbuf_t* buf);
|
||||
void zfStaProcessProbeRsp(zdev_t* dev, zbuf_t* buf, struct zsAdditionInfo* AddInfo);
|
||||
void zfStaProcessAtim(zdev_t* dev, zbuf_t* buf);
|
||||
void zfStaStoreAsocRspIe(zdev_t* dev, zbuf_t* buf);
|
||||
void zfStaChannelManagement(zdev_t* dev, u8_t scan);
|
||||
void zfIbssConnectNetwork(zdev_t* dev);
|
||||
void zfInfraConnectNetwork(zdev_t* dev);
|
||||
u8_t zfCheckAuthentication(zdev_t* dev, struct zsBssInfo* pBssInfo);
|
||||
u8_t zfChangeAdapterState(zdev_t* dev, u8_t newState);
|
||||
u16_t zfStaAddIeSsid(zdev_t* dev, zbuf_t* buf, u16_t offset);
|
||||
u16_t zfStaAddIeWpaRsn(zdev_t* dev, zbuf_t* buf, u16_t offset, u8_t frameType);
|
||||
u16_t zfStaAddIeIbss(zdev_t* dev, zbuf_t* buf, u16_t offset);
|
||||
void zfStaStartConnect(zdev_t* dev, u8_t bIsSharedKey);
|
||||
u8_t zfStaIsConnected(zdev_t* dev);
|
||||
u8_t zfStaIsConnecting(zdev_t* dev);
|
||||
u8_t zfStaIsDisconnect(zdev_t* dev);
|
||||
void zfStaSendBeacon(zdev_t* dev);
|
||||
void zfSendNullData(zdev_t* dev, u8_t type);
|
||||
void zfSendPSPoll(zdev_t* dev);
|
||||
void zfSendBA(zdev_t* dev, u16_t start_seq, u8_t *bitmap);
|
||||
void zdRateInfoCountTx(zdev_t* dev, u16_t* macAddr);
|
||||
struct zsMicVar* zfStaGetRxMicKey(zdev_t* dev, zbuf_t* buf);
|
||||
struct zsMicVar* zfStaGetTxMicKey(zdev_t* dev, zbuf_t* buf);
|
||||
u16_t zfStaRxValidateFrame(zdev_t* dev, zbuf_t* buf);
|
||||
void zfStaMicFailureHandling(zdev_t* dev, zbuf_t* buf);
|
||||
u8_t zfStaBlockWlanScan(zdev_t* dev);
|
||||
void zfStaIbssPSCheckState(zdev_t* dev, zbuf_t* buf);
|
||||
u8_t zfStaIbssPSQueueData(zdev_t* dev, zbuf_t* buf);
|
||||
void zfStaIbssPSSend(zdev_t* dev);
|
||||
void zfStaResetStatus(zdev_t* dev, u8_t bInit);
|
||||
u16_t zfStaAddIeWmeInfo(zdev_t* dev, zbuf_t* buf, u16_t offset, u8_t qosInfo);
|
||||
void zfInitPartnerNotifyEvent(zdev_t* dev, zbuf_t* buf, struct zsPartnerNotifyEvent *event);
|
||||
void zfStaInitOppositeInfo(zdev_t* dev);
|
||||
void zfStaIbssMonitoring(zdev_t* dev, u8_t reset);
|
||||
struct zsBssInfo* zfStaFindBssInfo(zdev_t* dev, zbuf_t* buf, struct zsWlanProbeRspFrameHeader *pProbeRspHeader);
|
||||
u8_t zfStaInitBssInfo(zdev_t* dev, zbuf_t* buf,
|
||||
struct zsWlanProbeRspFrameHeader *pProbeRspHeader,
|
||||
struct zsBssInfo* pBssInfo, struct zsAdditionInfo* AddInfo, u8_t type);
|
||||
s8_t zfStaFindFreeOpposite(zdev_t* dev, u16_t *sa, int *pFoundIdx);
|
||||
s8_t zfStaFindOppositeByMACAddr(zdev_t* dev, u16_t *sa, u8_t *pFoundIdx);
|
||||
void zfStaRefreshBlockList(zdev_t* dev, u16_t flushFlag);
|
||||
void zfStaConnectFail(zdev_t* dev, u16_t reason, u16_t* bssid, u8_t weight);
|
||||
void zfStaGetTxRate(zdev_t* dev, u16_t* macAddr, u32_t* phyCtrl,
|
||||
u16_t* rcProbingFlag);
|
||||
u16_t zfStaProcessAction(zdev_t* dev, zbuf_t* buf);
|
||||
struct zsTkipSeed* zfStaGetRxSeed(zdev_t* dev, zbuf_t* buf);
|
||||
#ifdef ZM_ENABLE_CENC
|
||||
/* CENC */
|
||||
u16_t zfStaAddIeCenc(zdev_t* dev, zbuf_t* buf, u16_t offset);
|
||||
#endif //ZM_ENABLE_CENC
|
||||
void zfStaEnableSWEncryption(zdev_t *dev, u8_t value);
|
||||
void zfStaDisableSWEncryption(zdev_t *dev);
|
||||
u16_t zfComputeBssInfoWeightValue(zdev_t *dev, u8_t isBMode, u8_t isHT, u8_t isHT40, u8_t signalStrength);
|
||||
u16_t zfStaAddIbssAdditionalIE(zdev_t* dev, zbuf_t* buf, u16_t offset);
|
||||
|
||||
/* ctkip.c */
|
||||
void zfTkipInit(u8_t* key, u8_t* ta, struct zsTkipSeed* pSeed, u8_t* initIv);
|
||||
void zfMicSetKey(u8_t* key, struct zsMicVar* pMic);
|
||||
void zfMicAppendByte(u8_t b, struct zsMicVar* pMic);
|
||||
void zfMicClear(struct zsMicVar* pMic);
|
||||
void zfMicAppendTxBuf(zdev_t* dev, zbuf_t* buf, u8_t* da, u8_t* sa,
|
||||
u16_t removeLen, u8_t* mic);
|
||||
u8_t zfMicRxVerify(zdev_t* dev, zbuf_t* buf);
|
||||
void zfMicGetMic(u8_t* dst, struct zsMicVar* pMic);
|
||||
void zfCalTxMic(zdev_t *dev, zbuf_t *buf, u8_t *snap, u16_t snapLen, u16_t offset, u16_t *da, u16_t *sa, u8_t up, u8_t *mic);
|
||||
void zfTKIPEncrypt(zdev_t *dev, zbuf_t *buf, u8_t *snap, u16_t snapLen, u16_t offset, u8_t keyLen, u8_t* key, u32_t* icv);
|
||||
u16_t zfTKIPDecrypt(zdev_t *dev, zbuf_t *buf, u16_t offset, u8_t keyLen, u8_t* key);
|
||||
void zfTkipGetseeds(u16_t iv16, u8_t *RC4Key, struct zsTkipSeed *Seed);
|
||||
u8_t zfTkipPhase1KeyMix(u32_t iv32, struct zsTkipSeed* pSeed);
|
||||
u8_t zfTkipPhase2KeyMix(u16_t iv16, struct zsTkipSeed* pSeed);
|
||||
void zfWEPEncrypt(zdev_t *dev, zbuf_t *buf, u8_t *snap, u16_t snapLen, u16_t offset, u8_t keyLen, u8_t* WepKey, u8_t *iv);
|
||||
u16_t zfWEPDecrypt(zdev_t *dev, zbuf_t *buf, u16_t offset, u8_t keyLen, u8_t* WepKey, u8_t *iv);
|
||||
|
||||
/* ctxrx.c */
|
||||
u16_t zfSend80211Frame(zdev_t* dev, zbuf_t* buf);
|
||||
void zfIsrPciTxComp(zdev_t* dev);
|
||||
void zfTxPciDmaStart(zdev_t* dev);
|
||||
u16_t zfTxPortControl(zdev_t* dev, zbuf_t* buf, u16_t port);
|
||||
u16_t zfTxSendEth(zdev_t* dev, zbuf_t* buf, u16_t port,
|
||||
u16_t bufType, u16_t flag);
|
||||
u16_t zfTxGenWlanTail(zdev_t* dev, zbuf_t* buf, u16_t* snap, u16_t snaplen,
|
||||
u16_t* mic);
|
||||
u16_t zfTxGenWlanSnap(zdev_t* dev, zbuf_t* buf, u16_t* snap, u16_t* snaplen);
|
||||
void zfTxGetIpTosAndFrag(zdev_t* dev, zbuf_t* buf, u8_t* up, u16_t* fragOff);
|
||||
u16_t zfPutVtxq(zdev_t* dev, zbuf_t* buf);
|
||||
void zfPushVtxq(zdev_t* dev);
|
||||
u8_t zfIsVtxqEmpty(zdev_t* dev);
|
||||
u16_t zfGetSeqCtrl(zdev_t* dev, zbuf_t* buf, u16_t offset);
|
||||
u8_t zfGetFragNo(zdev_t* dev, zbuf_t* buf);
|
||||
void zfShowRxEAPOL(zdev_t* dev, zbuf_t* buf, u16_t offset);
|
||||
void zfShowTxEAPOL(zdev_t* dev, zbuf_t* buf, u16_t offset);
|
||||
void zfCoreRecv(zdev_t* dev, zbuf_t* buf, struct zsAdditionInfo* addInfo);
|
||||
u16_t zfPutVmmq(zdev_t* dev, zbuf_t* buf);
|
||||
void zfFlushVtxq(zdev_t* dev);
|
||||
void zfAgingDefragList(zdev_t* dev, u16_t flushFlag);
|
||||
|
||||
void zfLed100msCtrl(zdev_t* dev);
|
||||
void zf80211FrameSend(zdev_t* dev, zbuf_t* buf, u16_t* header, u16_t snapLen,
|
||||
u16_t* da, u16_t* sa, u8_t up, u16_t headerLen, u16_t* snap,
|
||||
u16_t* tail, u16_t tailLen, u16_t offset, u16_t bufType,
|
||||
u8_t ac, u8_t keyIdx);
|
||||
void zfCheckIsRIFSFrame(zdev_t* dev, zbuf_t* buf, u16_t frameSubType);
|
||||
|
||||
/* queue.c */
|
||||
struct zsQueue* zfQueueCreate(zdev_t* dev, u16_t size);
|
||||
void zfQueueDestroy(zdev_t* dev, struct zsQueue* q);
|
||||
u16_t zfQueuePutNcs(zdev_t* dev, struct zsQueue* q, zbuf_t* buf, u32_t tick);
|
||||
u16_t zfQueuePut(zdev_t* dev, struct zsQueue* q, zbuf_t* buf, u32_t tick);
|
||||
zbuf_t* zfQueueGet(zdev_t* dev, struct zsQueue* q);
|
||||
zbuf_t* zfQueueGetWithMac(zdev_t* dev, struct zsQueue* q, u8_t* addr, u8_t* mb);
|
||||
void zfQueueFlush(zdev_t* dev, struct zsQueue* q);
|
||||
void zfQueueAge(zdev_t* dev, struct zsQueue* q, u32_t tick, u32_t msAge);
|
||||
void zfQueueGenerateUapsdTim(zdev_t* dev, struct zsQueue* q,
|
||||
u8_t* uniBitMap, u16_t* highestByte);
|
||||
|
||||
/* hpmain.c */
|
||||
u16_t zfHpInit(zdev_t* dev, u32_t frequency);
|
||||
u16_t zfHpRelease(zdev_t* dev);
|
||||
void zfHpSetFrequencyEx(zdev_t* dev, u32_t frequency, u8_t bw40,
|
||||
u8_t extOffset, u8_t initRF);
|
||||
u16_t zfHpStartRecv(zdev_t* dev);
|
||||
u16_t zfHpStopRecv(zdev_t* dev);
|
||||
u16_t zfHpResetKeyCache(zdev_t* dev);
|
||||
u16_t zfHpSetApStaMode(zdev_t* dev, u8_t mode);
|
||||
u16_t zfHpSetBssid(zdev_t* dev, u8_t* bssid);
|
||||
u16_t zfHpSetSnifferMode(zdev_t* dev, u16_t on);
|
||||
u8_t zfHpUpdateQosParameter(zdev_t* dev, u16_t* cwminTbl, u16_t* cwmaxTbl,
|
||||
u16_t* aifsTbl, u16_t* txopTbl);
|
||||
void zfHpSetAtimWindow(zdev_t* dev, u16_t atimWin);
|
||||
void zfHpEnableBeacon(zdev_t* dev, u16_t mode, u16_t bcnInterval, u16_t dtim, u8_t enableAtim);
|
||||
void zfHpDisableBeacon(zdev_t* dev);
|
||||
void zfHpSetBasicRateSet(zdev_t* dev, u16_t bRateBasic, u16_t gRateBasic);
|
||||
void zfHpSetRTSCTSRate(zdev_t* dev, u32_t rate);
|
||||
void zfHpSetMacAddress(zdev_t* dev, u16_t* macAddr, u16_t macAddrId);
|
||||
u32_t zfHpGetMacAddress(zdev_t* dev);
|
||||
u32_t zfHpGetTransmitPower(zdev_t* dev);
|
||||
void zfHpSetMulticastList(zdev_t* dev, u8_t size, u8_t* pList, u8_t bAllMulticast);
|
||||
|
||||
u16_t zfHpRemoveKey(zdev_t* dev, u16_t user);
|
||||
u32_t zfHpSetKey(zdev_t* dev, u8_t user, u8_t keyId, u8_t type,
|
||||
u16_t* mac, u32_t* key);
|
||||
//u32_t zfHpSetStaPairwiseKey(zdev_t* dev, u16_t* apMacAddr, u8_t type,
|
||||
// u32_t* key, u32_t* micKey);
|
||||
//u32_t zfHpSetStaGroupKey(zdev_t* dev, u16_t* apMacAddr, u8_t type,
|
||||
// u32_t* key, u32_t* micKey);
|
||||
u32_t zfHpSetApPairwiseKey(zdev_t* dev, u16_t* staMacAddr, u8_t type,
|
||||
u32_t* key, u32_t* micKey, u16_t staAid);
|
||||
u32_t zfHpSetApGroupKey(zdev_t* dev, u16_t* apMacAddr, u8_t type,
|
||||
u32_t* key, u32_t* micKey, u16_t vapId);
|
||||
u32_t zfHpSetDefaultKey(zdev_t* dev, u8_t keyId, u8_t type, u32_t* key, u32_t* micKey);
|
||||
u32_t zfHpSetPerUserKey(zdev_t* dev, u8_t user, u8_t keyId, u8_t* mac, u8_t type, u32_t* key, u32_t* micKey);
|
||||
|
||||
void zfHpSendBeacon(zdev_t* dev, zbuf_t* buf, u16_t len);
|
||||
u16_t zfHpGetPayloadLen(zdev_t* dev,
|
||||
zbuf_t* buf,
|
||||
u16_t len,
|
||||
u16_t plcpHdrLen,
|
||||
u32_t *rxMT,
|
||||
u32_t *rxMCS,
|
||||
u32_t *rxBW,
|
||||
u32_t *rxSG
|
||||
);
|
||||
u32_t zfHpGetFreeTxdCount(zdev_t* dev);
|
||||
u32_t zfHpGetMaxTxdCount(zdev_t* dev);
|
||||
u16_t zfHpSend(zdev_t* dev, u16_t* header, u16_t headerLen,
|
||||
u16_t* snap, u16_t snapLen, u16_t* tail, u16_t tailLen, zbuf_t* buf,
|
||||
u16_t offset, u16_t bufType, u8_t ac, u8_t keyIdx);
|
||||
void zfHpGetRegulationTablefromRegionCode(zdev_t* dev, u16_t regionCode);
|
||||
void zfHpGetRegulationTablefromCountry(zdev_t* dev, u16_t CountryCode);
|
||||
u8_t zfHpGetRegulationTablefromISO(zdev_t* dev, u8_t *countryInfo, u8_t length);
|
||||
const char* zfHpGetisoNamefromregionCode(zdev_t* dev, u16_t regionCode);
|
||||
u16_t zfHpGetRegionCodeFromIsoName(zdev_t* dev, u8_t *countryIsoName);
|
||||
u8_t zfHpGetRegulatoryDomain(zdev_t* dev);
|
||||
void zfHpLedCtrl(zdev_t* dev, u16_t ledId, u8_t mode);
|
||||
u16_t zfHpResetTxRx(zdev_t* dev);
|
||||
u16_t zfHpDeleteAllowChannel(zdev_t* dev, u16_t freq);
|
||||
u16_t zfHpAddAllowChannel(zdev_t* dev, u16_t freq);
|
||||
u32_t zfHpCwmUpdate(zdev_t* dev);
|
||||
u32_t zfHpAniUpdate(zdev_t* dev);
|
||||
u32_t zfHpAniUpdateRssi(zdev_t* dev, u8_t rssi);
|
||||
void zfHpAniAttach(zdev_t* dev);
|
||||
void zfHpAniArPoll(zdev_t* dev, u32_t listenTime, u32_t phyCnt1, u32_t phyCnt2);
|
||||
void zfHpHeartBeat(zdev_t* dev);
|
||||
void zfHpPowerSaveSetState(zdev_t* dev, u8_t psState);
|
||||
void zfHpPowerSaveSetMode(zdev_t* dev, u8_t staMode, u8_t psMode, u16_t bcnInterval);
|
||||
u16_t zfHpIsDfsChannel(zdev_t* dev, u16_t freq);
|
||||
u16_t zfHpIsDfsChannelNCS(zdev_t* dev, u16_t freq);
|
||||
u16_t zfHpFindFirstNonDfsChannel(zdev_t* dev, u16_t aBand);
|
||||
u16_t zfHpIsAllowedChannel(zdev_t* dev, u16_t freq);
|
||||
void zfHpDisableDfsChannel(zdev_t* dev, u8_t disableFlag);
|
||||
void zfHpSetTTSIFSTime(zdev_t* dev, u8_t sifs_time);
|
||||
|
||||
void zfHpQueryMonHalRxInfo(zdev_t* dev, u8_t *monHalRxInfo);
|
||||
|
||||
void zfDumpSSID(u8_t length, u8_t *value);
|
||||
void zfHpSetAggPktNum(zdev_t* dev, u32_t num);
|
||||
void zfHpSetMPDUDensity(zdev_t* dev, u8_t density);
|
||||
void zfHpSetSlotTime(zdev_t* dev, u8_t type);
|
||||
void zfHpSetSlotTimeRegister(zdev_t* dev, u8_t type);
|
||||
void zfHpSetRifs(zdev_t* dev, u8_t ht_enable, u8_t ht2040, u8_t g_mode);
|
||||
void zfHpBeginSiteSurvey(zdev_t* dev, u8_t status);
|
||||
void zfHpFinishSiteSurvey(zdev_t* dev, u8_t status);
|
||||
u16_t zfHpEnableHwRetry(zdev_t* dev);
|
||||
u16_t zfHpDisableHwRetry(zdev_t* dev);
|
||||
void zfHpSWDecrypt(zdev_t* dev, u8_t enable);
|
||||
void zfHpSWEncrypt(zdev_t* dev, u8_t enable);
|
||||
u32_t zfHpCapability(zdev_t* dev);
|
||||
void zfHpSetRollCallTable(zdev_t* dev);
|
||||
u8_t zfHpregulatoryDomain(zdev_t* dev);
|
||||
u16_t zfStaAddIePowerCap(zdev_t* dev, zbuf_t* buf, u16_t offset);
|
||||
u8_t zfHpGetMaxTxPower(zdev_t* dev);
|
||||
u8_t zfHpGetMinTxPower(zdev_t* dev);
|
||||
u16_t zfStaAddIeSupportCh(zdev_t* dev, zbuf_t* buf, u16_t offset);
|
||||
void zfHpEnableRifs(zdev_t* dev, u8_t mode24g, u8_t modeHt, u8_t modeHt2040);
|
||||
void zfHpDisableRifs(zdev_t* dev);
|
||||
u16_t zfHpUsbReset(zdev_t* dev);
|
||||
|
||||
|
||||
#endif /* #ifndef _CFUNC_H */
|
200
drivers/staging/otus/80211core/chb.c
Normal file
200
drivers/staging/otus/80211core/chb.c
Normal file
|
@ -0,0 +1,200 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* */
|
||||
/* Module Name : hb.c */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module contains house keeping and timer functions. */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* None */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
#include "cprecomp.h"
|
||||
|
||||
/* Called by wrapper every 10 msec */
|
||||
void zfiHeartBeat(zdev_t* dev)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
wd->tick++;
|
||||
|
||||
#if 0
|
||||
/* => every 1.28 seconds */
|
||||
if (wd->cwm.cw_enable && ((wd->tick & 0x7f) == 0x3f))
|
||||
{
|
||||
zfHpCwmUpdate(dev);
|
||||
}
|
||||
#endif
|
||||
/* => every 2.56 seconds */
|
||||
if ((wd->tick & 0xff) == 0)
|
||||
{
|
||||
zfAgingDefragList(dev, 1);
|
||||
}
|
||||
|
||||
/* Watch Dog */
|
||||
//zfWatchDog();
|
||||
|
||||
/* LED Control (per 100ms) */
|
||||
if ((wd->tick % 10) == 9)
|
||||
{
|
||||
zfLed100msCtrl(dev);
|
||||
#ifdef ZM_ENABLE_BA_RATECTRL
|
||||
if (!wd->modeMDKEnable)
|
||||
{
|
||||
zfiDbgReadTally(dev);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef ZM_ENABLE_REWRITE_BEACON_START_ADDRESS
|
||||
if ( wd->wlanMode == ZM_MODE_IBSS )
|
||||
{
|
||||
if ( zfStaIsConnected(dev) )
|
||||
{
|
||||
zfReWriteBeaconStartAddress(dev);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if ( wd->wlanMode == ZM_MODE_IBSS )
|
||||
{
|
||||
if ( zfStaIsConnected(dev) )
|
||||
{
|
||||
wd->tickIbssReceiveBeacon++; // add 10ms
|
||||
|
||||
if ( (wd->sta.ibssSiteSurveyStatus == 2) &&
|
||||
(wd->tickIbssReceiveBeacon == 300) &&
|
||||
(wd->sta.ibssReceiveBeaconCount < 3) )
|
||||
{
|
||||
zm_debug_msg0("It is happen!!! No error message");
|
||||
zfReSetCurrentFrequency(dev);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(wd->sta.ReceivedPacketRateCounter <= 0)
|
||||
{
|
||||
wd->sta.ReceivedPktRatePerSecond = wd->sta.TotalNumberOfReceivePackets;
|
||||
//zm_debug_msg1("Receive Packet Per Second = ", wd->sta.ReceivedPktRatePerSecond);
|
||||
if (wd->sta.TotalNumberOfReceivePackets != 0)
|
||||
{
|
||||
wd->sta.avgSizeOfReceivePackets = wd->sta.TotalNumberOfReceiveBytes/wd->sta.TotalNumberOfReceivePackets;
|
||||
}
|
||||
else
|
||||
{
|
||||
wd->sta.avgSizeOfReceivePackets = 640;
|
||||
}
|
||||
wd->sta.TotalNumberOfReceivePackets = 0;
|
||||
wd->sta.TotalNumberOfReceiveBytes = 0;
|
||||
wd->sta.ReceivedPacketRateCounter = 100; /*for another 1s*/
|
||||
}
|
||||
else
|
||||
{
|
||||
wd->sta.ReceivedPacketRateCounter--;
|
||||
}
|
||||
|
||||
/* => every 1.28 seconds */
|
||||
if((wd->tick & 0x7f) == 0x3f)
|
||||
{
|
||||
if( wd->sta.NonNAPcount > 0)
|
||||
{
|
||||
wd->sta.RTSInAGGMode = TRUE;
|
||||
wd->sta.NonNAPcount = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
wd->sta.RTSInAGGMode = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Maintain management time tick */
|
||||
zfMmApTimeTick(dev);
|
||||
zfMmStaTimeTick(dev);
|
||||
|
||||
//zfPhyCrTuning(dev);
|
||||
|
||||
//zfTxPowerControl(dev);
|
||||
zfHpHeartBeat(dev);
|
||||
|
||||
}
|
||||
|
||||
|
||||
void zfDumpBssList(zdev_t* dev)
|
||||
{
|
||||
struct zsBssInfo* pBssInfo;
|
||||
u8_t str[33];
|
||||
u8_t i, j;
|
||||
u32_t addr1, addr2;
|
||||
zmw_get_wlan_dev(dev);
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
zm_debug_msg0("***** Bss scan result *****");
|
||||
zmw_enter_critical_section(dev);
|
||||
|
||||
pBssInfo = wd->sta.bssList.head;
|
||||
|
||||
for( i=0; i<wd->sta.bssList.bssCount; i++ )
|
||||
{
|
||||
if ( i )
|
||||
{
|
||||
zm_debug_msg0("---------------------------");
|
||||
}
|
||||
|
||||
zm_debug_msg1("BSS #", i);
|
||||
for(j=0; j<pBssInfo->ssid[1]; j++)
|
||||
{
|
||||
str[j] = pBssInfo->ssid[2+j];
|
||||
}
|
||||
str[pBssInfo->ssid[1]] = 0;
|
||||
zm_debug_msg0("SSID = ");
|
||||
zm_debug_msg0(str);
|
||||
|
||||
addr1 = (pBssInfo->bssid[0] << 16) + (pBssInfo->bssid[1] << 8 )
|
||||
+ pBssInfo->bssid[2];
|
||||
addr2 = (pBssInfo->bssid[3] << 16) + (pBssInfo->bssid[4] << 8 )
|
||||
+ pBssInfo->bssid[5];
|
||||
zm_debug_msg2("Bssid = ", addr1);
|
||||
zm_debug_msg2(" ", addr2);
|
||||
zm_debug_msg1("frequency = ", pBssInfo->frequency);
|
||||
zm_debug_msg1("security type = ", pBssInfo->securityType);
|
||||
zm_debug_msg1("WME = ", pBssInfo->wmeSupport);
|
||||
zm_debug_msg1("beacon interval = ", pBssInfo->beaconInterval[0]
|
||||
+ (pBssInfo->beaconInterval[1] << 8));
|
||||
zm_debug_msg1("capability = ", pBssInfo->capability[0]
|
||||
+ (pBssInfo->capability[1] << 8));
|
||||
if ( pBssInfo->supportedRates[1] > 0 )
|
||||
{
|
||||
for( j=0; j<pBssInfo->supportedRates[1]; j++ )
|
||||
{
|
||||
zm_debug_msg2("supported rates = ", pBssInfo->supportedRates[2+j]);
|
||||
}
|
||||
}
|
||||
|
||||
for( j=0; j<pBssInfo->extSupportedRates[1]; j++ )
|
||||
{
|
||||
zm_debug_msg2("ext supported rates = ", pBssInfo->extSupportedRates[2+j]);
|
||||
}
|
||||
|
||||
pBssInfo = pBssInfo->next;
|
||||
}
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
zm_debug_msg0("***************************");
|
||||
}
|
||||
|
496
drivers/staging/otus/80211core/cic.c
Normal file
496
drivers/staging/otus/80211core/cic.c
Normal file
|
@ -0,0 +1,496 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "cprecomp.h"
|
||||
#include "ratectrl.h"
|
||||
|
||||
|
||||
void zfUpdateBssid(zdev_t* dev, u8_t* bssid)
|
||||
{
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
//zmw_declare_for_critical_section();
|
||||
|
||||
//zmw_enter_critical_section(dev);
|
||||
wd->sta.bssid[0] = bssid[0] + (((u16_t) bssid[1]) << 8);
|
||||
wd->sta.bssid[1] = bssid[2] + (((u16_t) bssid[3]) << 8);
|
||||
wd->sta.bssid[2] = bssid[4] + (((u16_t) bssid[5]) << 8);
|
||||
//zmw_leave_critical_section(dev);
|
||||
|
||||
zfHpSetBssid(dev, bssid);
|
||||
|
||||
}
|
||||
|
||||
/************************************************************************************/
|
||||
/* */
|
||||
/* FUNCTION DESCRIPTION zfResetSupportRate */
|
||||
/* Reset support rate to default value. */
|
||||
/* */
|
||||
/* INPUTS */
|
||||
/* dev : device pointer */
|
||||
/* type: ZM_DEFAULT_SUPPORT_RATE_ZERO => reset to zero */
|
||||
/* ZM_DEFAULT_SUPPORT_RATE_DISCONNECT => reset to disconnect status */
|
||||
/* ZM_DEFAULT_SUPPORT_RATE_IBSS_B => reset to IBSS creator(b mode) */
|
||||
/* ZM_DEFAULT_SUPPORT_RATE_IBSS_AG => reset to IBSS creator(a/g mode) */
|
||||
/* */
|
||||
/************************************************************************************/
|
||||
void zfResetSupportRate(zdev_t* dev, u8_t type)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
switch(type)
|
||||
{
|
||||
case ZM_DEFAULT_SUPPORT_RATE_ZERO:
|
||||
wd->bRate = 0;
|
||||
wd->bRateBasic = 0;
|
||||
wd->gRate = 0;
|
||||
wd->gRateBasic = 0;
|
||||
break;
|
||||
case ZM_DEFAULT_SUPPORT_RATE_DISCONNECT:
|
||||
wd->bRate = 0xf;
|
||||
wd->bRateBasic = 0xf;
|
||||
wd->gRate = 0xff;
|
||||
wd->gRateBasic = 0x15;
|
||||
break;
|
||||
case ZM_DEFAULT_SUPPORT_RATE_IBSS_B:
|
||||
wd->bRate = 0xf;
|
||||
wd->bRateBasic = 0xf;
|
||||
wd->gRate = 0;
|
||||
wd->gRateBasic = 0;
|
||||
break;
|
||||
case ZM_DEFAULT_SUPPORT_RATE_IBSS_AG:
|
||||
wd->bRate = 0xf;
|
||||
wd->bRateBasic = 0xf;
|
||||
wd->gRate = 0xff;
|
||||
wd->gRateBasic = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void zfUpdateSupportRate(zdev_t* dev, u8_t* rateArray)
|
||||
{
|
||||
u8_t bRate=0, bRateBasic=0, gRate=0, gRateBasic=0;
|
||||
u8_t length = rateArray[1];
|
||||
u8_t i, j;
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
for(i=2; i<length+2; i++)
|
||||
{
|
||||
for(j=0; j<4; j++)
|
||||
{
|
||||
if ( (rateArray[i] & 0x7f) == zg11bRateTbl[j] )
|
||||
{
|
||||
bRate |= (1 << j);
|
||||
if ( rateArray[i] & 0x80 )
|
||||
{
|
||||
bRateBasic |= (1 << j);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( j == 4 )
|
||||
{
|
||||
for(j=0; j<8; j++)
|
||||
{
|
||||
if ( (rateArray[i] & 0x7f) == zg11gRateTbl[j] )
|
||||
{
|
||||
gRate |= (1 << j);
|
||||
if ( rateArray[i] & 0x80 )
|
||||
{
|
||||
gRateBasic |= (1 << j);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
wd->bRate |= bRate;
|
||||
wd->bRateBasic |= bRateBasic;
|
||||
wd->gRate |= gRate;
|
||||
wd->gRateBasic |= gRateBasic;
|
||||
}
|
||||
|
||||
u8_t zfIsGOnlyMode(zdev_t* dev, u16_t frequency, u8_t* rateArray)
|
||||
{
|
||||
u8_t length = rateArray[1];
|
||||
u8_t i, j;
|
||||
|
||||
if (frequency < 3000) {
|
||||
for (i = 2; i < length+2; i++) {
|
||||
for (j = 0; j < 8; j++) {
|
||||
if ( ((rateArray[i] & 0x7f) == zg11gRateTbl[j])
|
||||
&& (rateArray[i] & 0x80) ) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void zfGatherBMode(zdev_t* dev, u8_t* rateArray, u8_t* extrateArray)
|
||||
{
|
||||
u8_t gatherBMode[ZM_MAX_SUPP_RATES_IE_SIZE + 2];
|
||||
u8_t i, j, k = 0;
|
||||
u8_t length;
|
||||
|
||||
gatherBMode[0] = ZM_WLAN_EID_SUPPORT_RATE;
|
||||
gatherBMode[1] = 0;
|
||||
|
||||
length = rateArray[1];
|
||||
for (i = 2; i < length+2; i++) {
|
||||
for (j = 0; j < 4; j++) {
|
||||
if ( (rateArray[i] & 0x7f) == zg11bRateTbl[j] ) {
|
||||
gatherBMode[2+k] = rateArray[i];
|
||||
|
||||
gatherBMode[1]++;
|
||||
k++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
length = extrateArray[1];
|
||||
for (i = 2; i < length+2; i++) {
|
||||
for (j = 0; j < 4; j++) {
|
||||
if ( (extrateArray[i] & 0x7f) == zg11bRateTbl[j] ) {
|
||||
gatherBMode[2+k] = extrateArray[i];
|
||||
|
||||
gatherBMode[1]++;
|
||||
k++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extrateArray[0] = extrateArray[1] = 0;
|
||||
zfMemoryCopy(rateArray, gatherBMode, gatherBMode[1]+2);
|
||||
}
|
||||
|
||||
u16_t zfGetRandomNumber(zdev_t* dev, u16_t initValue)
|
||||
{
|
||||
#if 0
|
||||
/* Compiler/Linker error on Linux */
|
||||
if ( initValue )
|
||||
{
|
||||
srand(initValue);
|
||||
}
|
||||
|
||||
return ((u16_t)rand());
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8_t zfPSDeviceSleep(zdev_t* dev)
|
||||
{
|
||||
//zmw_get_wlan_dev(dev);
|
||||
|
||||
/* enter PS mode */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8_t zcOfdmPhyCrtlToRate[] =
|
||||
{
|
||||
/* 0x8=48M, 0x9=24M, 0xa=12M, 0xb=6M, 0xc=54M, 0xd=36M, 0xe=18M, 0xf=9M */
|
||||
10, 8, 6, 4, 11, 9, 7, 5
|
||||
};
|
||||
|
||||
u8_t zfPhyCtrlToRate(u32_t phyCtrl)
|
||||
{
|
||||
u32_t mt, mcs, sg;
|
||||
u8_t rate = 0;
|
||||
|
||||
mt = phyCtrl & 0x3;
|
||||
mcs = (phyCtrl>>18) & 0x3f;
|
||||
sg = (phyCtrl>>31) & 0x1;
|
||||
|
||||
if ((mt == 0) && (mcs <=3))
|
||||
{
|
||||
rate = (u8_t)mcs;
|
||||
}
|
||||
else if ((mt == 1) && (mcs >= 0x8) && (mcs <= 0xf))
|
||||
{
|
||||
rate = zcOfdmPhyCrtlToRate[mcs-8];
|
||||
}
|
||||
else if ((mt == 2) && (mcs <= 15))
|
||||
{
|
||||
rate = (u8_t)mcs + 12;
|
||||
if(sg) {
|
||||
if (mcs != 7)
|
||||
{
|
||||
rate = (u8_t)mcs + 12 + 2;
|
||||
}
|
||||
else //MCS7-SG
|
||||
{
|
||||
rate = (u8_t)30;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return rate;
|
||||
}
|
||||
|
||||
|
||||
void zfCoreEvent(zdev_t* dev, u16_t event, u8_t* rsp)
|
||||
{
|
||||
u16_t i;
|
||||
zbuf_t* psBuf;
|
||||
u8_t moreData;
|
||||
u8_t vap = 0;
|
||||
u8_t peerIdx;
|
||||
s8_t res;
|
||||
zmw_get_wlan_dev(dev);
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
|
||||
if (event == 0) //Beacon Event
|
||||
{
|
||||
if ( wd->wlanMode == ZM_MODE_AP )
|
||||
{
|
||||
zfApSendBeacon(dev);
|
||||
|
||||
if (wd->CurrentDtimCount == 0)
|
||||
{
|
||||
/* TODO : Send queued broadcast frames at BC/MC event */
|
||||
do
|
||||
{
|
||||
psBuf = NULL;
|
||||
moreData = 0;
|
||||
zmw_enter_critical_section(dev);
|
||||
if (wd->ap.bcmcTail[vap] != wd->ap.bcmcHead[vap])
|
||||
{
|
||||
//zm_msg0_mm(ZM_LV_0, "Send BCMC frames");
|
||||
psBuf = wd->ap.bcmcArray[vap][wd->ap.bcmcHead[vap]];
|
||||
wd->ap.bcmcHead[vap] = (wd->ap.bcmcHead[vap] + 1)
|
||||
& (ZM_BCMC_ARRAY_SIZE - 1);
|
||||
if (wd->ap.bcmcTail[vap] != wd->ap.bcmcHead[vap])
|
||||
{
|
||||
moreData = 0x20;
|
||||
}
|
||||
}
|
||||
zmw_leave_critical_section(dev);
|
||||
if (psBuf != NULL)
|
||||
{
|
||||
/* TODO : config moreData bit */
|
||||
zfTxSendEth(dev, psBuf, 0, ZM_EXTERNAL_ALLOC_BUF,
|
||||
moreData);
|
||||
}
|
||||
} while(psBuf != NULL);
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* STA mode */
|
||||
if ( wd->sta.powerSaveMode > ZM_STA_PS_NONE )
|
||||
{
|
||||
/* send queued packets */
|
||||
for(i=0; i<wd->sta.staPSDataCount; i++)
|
||||
{
|
||||
zfTxSendEth(dev, wd->sta.staPSDataQueue[i], 0,
|
||||
ZM_EXTERNAL_ALLOC_BUF, 0);
|
||||
}
|
||||
|
||||
wd->sta.staPSDataCount = 0;
|
||||
}
|
||||
|
||||
if ( wd->wlanMode == ZM_MODE_IBSS )
|
||||
{
|
||||
zfStaSendBeacon(dev);
|
||||
wd->sta.ibssAtimTimer = ZM_BIT_15 | wd->sta.atimWindow;
|
||||
}
|
||||
|
||||
zfPowerSavingMgrPreTBTTInterrupt(dev);
|
||||
}
|
||||
} //if (event == 0) //Beacon Event
|
||||
else if (event == 1) //Retry completed event
|
||||
{
|
||||
u32_t retryRate;
|
||||
|
||||
retryRate = (u32_t)(rsp[6]) + (((u32_t)(rsp[7]))<<8)
|
||||
+ (((u32_t)(rsp[8]))<<16) + (((u32_t)(rsp[9]))<<24);
|
||||
/* Degrade Tx Rate */
|
||||
if (wd->wlanMode == ZM_MODE_AP)
|
||||
{
|
||||
zmw_enter_critical_section(dev);
|
||||
if ((i=zfApFindSta(dev, (u16_t*)rsp)) != 0xffff)
|
||||
{
|
||||
zfRateCtrlTxFailEvent(dev, &wd->ap.staTable[i].rcCell, 0,(u32_t)zfPhyCtrlToRate(retryRate));
|
||||
}
|
||||
zmw_leave_critical_section(dev);
|
||||
}
|
||||
else
|
||||
{
|
||||
zmw_enter_critical_section(dev);
|
||||
res = zfStaFindOppositeByMACAddr(dev, (u16_t*)rsp, &peerIdx);
|
||||
if ( res == 0 )
|
||||
{
|
||||
zfRateCtrlTxFailEvent(dev, &wd->sta.oppositeInfo[peerIdx].rcCell, 0,(u32_t)zfPhyCtrlToRate(retryRate));
|
||||
}
|
||||
zmw_leave_critical_section(dev);
|
||||
}
|
||||
} //else if (event == 1) //Retry completed event
|
||||
else if (event == 2) //Tx Fail event
|
||||
{
|
||||
u32_t retryRate;
|
||||
|
||||
retryRate = (u32_t)(rsp[6]) + (((u32_t)(rsp[7]))<<8)
|
||||
+ (((u32_t)(rsp[8]))<<16) + (((u32_t)(rsp[9]))<<24);
|
||||
|
||||
/* Degrade Tx Rate */
|
||||
if (wd->wlanMode == ZM_MODE_AP)
|
||||
{
|
||||
zmw_enter_critical_section(dev);
|
||||
if ((i=zfApFindSta(dev, (u16_t*)rsp)) != 0xffff)
|
||||
{
|
||||
zfRateCtrlTxFailEvent(dev, &wd->ap.staTable[i].rcCell, 0,(u32_t)zfPhyCtrlToRate(retryRate));
|
||||
}
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
zfApSendFailure(dev, rsp);
|
||||
}
|
||||
else
|
||||
{
|
||||
zmw_enter_critical_section(dev);
|
||||
res = zfStaFindOppositeByMACAddr(dev, (u16_t*)rsp, &peerIdx);
|
||||
if ( res == 0 )
|
||||
{
|
||||
zfRateCtrlTxFailEvent(dev, &wd->sta.oppositeInfo[peerIdx].rcCell, 0,(u32_t)zfPhyCtrlToRate(retryRate));
|
||||
}
|
||||
zmw_leave_critical_section(dev);
|
||||
}
|
||||
} //else if (event == 2) //Tx Fail event
|
||||
else if (event == 3) //Tx Comp event
|
||||
{
|
||||
u32_t retryRate;
|
||||
|
||||
retryRate = (u32_t)(rsp[6]) + (((u32_t)(rsp[7]))<<8)
|
||||
+ (((u32_t)(rsp[8]))<<16) + (((u32_t)(rsp[9]))<<24);
|
||||
|
||||
/* TODO : Tx completed, used for rate control probing */
|
||||
if (wd->wlanMode == ZM_MODE_AP)
|
||||
{
|
||||
zmw_enter_critical_section(dev);
|
||||
if ((i=zfApFindSta(dev, (u16_t*)rsp)) != 0xffff)
|
||||
{
|
||||
zfRateCtrlTxSuccessEvent(dev, &wd->ap.staTable[i].rcCell, zfPhyCtrlToRate(retryRate));
|
||||
}
|
||||
zmw_leave_critical_section(dev);
|
||||
}
|
||||
else
|
||||
{
|
||||
zmw_enter_critical_section(dev);
|
||||
res = zfStaFindOppositeByMACAddr(dev, (u16_t*)rsp, &peerIdx);
|
||||
if ( res == 0 )
|
||||
{
|
||||
zfRateCtrlTxSuccessEvent(dev, &wd->sta.oppositeInfo[peerIdx].rcCell, zfPhyCtrlToRate(retryRate));
|
||||
}
|
||||
zmw_leave_critical_section(dev);
|
||||
}
|
||||
} //else if (event == 3) //Tx Comp event
|
||||
else if (event == 4) //BA failed count
|
||||
{
|
||||
u32_t fail;
|
||||
u32_t rate;
|
||||
peerIdx = 0;
|
||||
|
||||
fail=((u32_t*)rsp)[0] & 0xFFFF;
|
||||
rate=((u32_t*)rsp)[0] >> 16;
|
||||
|
||||
if (rate > 15) {
|
||||
rate = (rate & 0xF) + 12 + 2;
|
||||
}
|
||||
else {
|
||||
rate = rate + 12;
|
||||
}
|
||||
|
||||
zmw_enter_critical_section(dev);
|
||||
zfRateCtrlTxFailEvent(dev, &wd->sta.oppositeInfo[peerIdx].rcCell, (u8_t)rate, fail);
|
||||
zmw_leave_critical_section(dev);
|
||||
}
|
||||
}
|
||||
|
||||
void zfBeaconCfgInterrupt(zdev_t* dev, u8_t* rsp)
|
||||
{
|
||||
u32_t txBeaconCounter;
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
if ( wd->wlanMode == ZM_MODE_IBSS )
|
||||
{
|
||||
txBeaconCounter = *((u32_t *)rsp);
|
||||
if ( wd->sta.beaconTxCnt != txBeaconCounter )
|
||||
{
|
||||
wd->sta.txBeaconInd = 1;
|
||||
|
||||
zmw_enter_critical_section(dev);
|
||||
wd->tickIbssSendBeacon = 0;
|
||||
zmw_leave_critical_section(dev);
|
||||
}
|
||||
else
|
||||
{
|
||||
wd->sta.txBeaconInd = 0;
|
||||
}
|
||||
|
||||
#ifdef ZM_ENABLE_IBSS_DELAYED_JOIN_INDICATION
|
||||
if ( wd->sta.txBeaconInd && wd->sta.ibssDelayedInd )
|
||||
{
|
||||
if (wd->zfcbIbssPartnerNotify != NULL)
|
||||
{
|
||||
wd->zfcbIbssPartnerNotify(dev, 1, &wd->sta.ibssDelayedIndEvent);
|
||||
}
|
||||
|
||||
wd->sta.ibssDelayedInd = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
wd->sta.beaconTxCnt = txBeaconCounter;
|
||||
|
||||
// Need to check if the time is expired after ATIM window??
|
||||
|
||||
// Check if we have buffered any data for those stations that are sleeping
|
||||
// If it's true, then transmitting ATIM pkt to notify them
|
||||
|
||||
#ifdef ZM_ENABLE_IBSS_PS
|
||||
// TODO: Need to check if the station receive our ATIM pkt???
|
||||
zfStaIbssPSSend(dev);
|
||||
|
||||
if ( wd->sta.atimWindow == 0 )
|
||||
{
|
||||
// We won't receive the end of ATIM isr so we fake it
|
||||
zfPowerSavingMgrAtimWinExpired(dev);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void zfEndOfAtimWindowInterrupt(zdev_t* dev)
|
||||
{
|
||||
#ifdef ZM_ENABLE_IBSS_PS
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
if ( wd->wlanMode == ZM_MODE_IBSS )
|
||||
{
|
||||
// Transmit any queued pkt for the stations!!
|
||||
zfPowerSavingMgrAtimWinExpired(dev);
|
||||
}
|
||||
#endif
|
||||
}
|
1911
drivers/staging/otus/80211core/cinit.c
Normal file
1911
drivers/staging/otus/80211core/cinit.c
Normal file
File diff suppressed because it is too large
Load diff
2141
drivers/staging/otus/80211core/cmm.c
Normal file
2141
drivers/staging/otus/80211core/cmm.c
Normal file
File diff suppressed because it is too large
Load diff
2402
drivers/staging/otus/80211core/cmmap.c
Normal file
2402
drivers/staging/otus/80211core/cmmap.c
Normal file
File diff suppressed because it is too large
Load diff
5782
drivers/staging/otus/80211core/cmmsta.c
Normal file
5782
drivers/staging/otus/80211core/cmmsta.c
Normal file
File diff suppressed because it is too large
Load diff
2695
drivers/staging/otus/80211core/coid.c
Normal file
2695
drivers/staging/otus/80211core/coid.c
Normal file
File diff suppressed because it is too large
Load diff
32
drivers/staging/otus/80211core/cprecomp.h
Normal file
32
drivers/staging/otus/80211core/cprecomp.h
Normal file
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef _CPRECOMP_H
|
||||
#define _CPRECOMP_H
|
||||
|
||||
#include "../oal_dt.h"
|
||||
#include "../oal_marc.h"
|
||||
#include "pub_zfi.h"
|
||||
#include "pub_zfw.h"
|
||||
#include "pub_usb.h"
|
||||
#include "wlan.h"
|
||||
#include "struct.h"
|
||||
#include "cfunc.h"
|
||||
#include "cagg.h"
|
||||
#include "cwm.h"
|
||||
#include "performance.h"
|
||||
#endif
|
||||
|
731
drivers/staging/otus/80211core/cpsmgr.c
Normal file
731
drivers/staging/otus/80211core/cpsmgr.c
Normal file
|
@ -0,0 +1,731 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* The power saving manager is to save the power as much as possible.
|
||||
* Generally speaking, it controls:
|
||||
*
|
||||
* - when to sleep
|
||||
* -
|
||||
*
|
||||
*/
|
||||
#include "cprecomp.h"
|
||||
|
||||
void zfPowerSavingMgrInit(zdev_t* dev)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
wd->sta.powerSaveMode = ZM_STA_PS_NONE;
|
||||
wd->sta.psMgr.state = ZM_PS_MSG_STATE_ACTIVE;
|
||||
wd->sta.psMgr.isSleepAllowed = 0;
|
||||
wd->sta.psMgr.maxSleepPeriods = 1;
|
||||
wd->sta.psMgr.ticks = 0;
|
||||
wd->sta.psMgr.sleepAllowedtick = 0;
|
||||
}
|
||||
|
||||
static u16_t zfPowerSavingMgrHandlePsNone(zdev_t* dev, u8_t *isWakeUpRequired)
|
||||
{
|
||||
u16_t ret = 0;
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
switch(wd->sta.psMgr.state)
|
||||
{
|
||||
case ZM_PS_MSG_STATE_ACTIVE:
|
||||
*isWakeUpRequired = 0;
|
||||
break;
|
||||
|
||||
case ZM_PS_MSG_STATE_T1:
|
||||
case ZM_PS_MSG_STATE_T2:
|
||||
case ZM_PS_MSG_STATE_SLEEP:
|
||||
default:
|
||||
*isWakeUpRequired = 1;
|
||||
zm_debug_msg0("zfPowerSavingMgrHandlePsNone: Wake up now\n");
|
||||
if ( zfStaIsConnected(dev) )
|
||||
{
|
||||
zm_debug_msg0("zfPowerSavingMgrOnHandleT1 send Null data\n");
|
||||
//zfSendNullData(dev, 0);
|
||||
ret = 1;
|
||||
}
|
||||
|
||||
wd->sta.psMgr.state = ZM_PS_MSG_STATE_ACTIVE;
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void zfPowerSavingMgrHandlePs(zdev_t* dev)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
switch(wd->sta.psMgr.state)
|
||||
{
|
||||
case ZM_PS_MSG_STATE_ACTIVE:
|
||||
//zm_debug_msg0("zfPowerSavingMgrHandlePs: Prepare to sleep...\n");
|
||||
//wd->sta.psMgr.state = ZM_PS_MSG_STATE_T1;
|
||||
break;
|
||||
|
||||
case ZM_PS_MSG_STATE_T1:
|
||||
case ZM_PS_MSG_STATE_T2:
|
||||
case ZM_PS_MSG_STATE_SLEEP:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void zfPowerSavingMgrSetMode(zdev_t* dev, u8_t mode)
|
||||
{
|
||||
u16_t sendNull = 0;
|
||||
u8_t isWakeUpRequired = 0;
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
zm_debug_msg1("mode = ", mode);
|
||||
|
||||
if (mode > ZM_STA_PS_LIGHT)
|
||||
{
|
||||
zm_debug_msg0("return - wrong power save mode");
|
||||
return;
|
||||
}
|
||||
|
||||
zmw_enter_critical_section(dev);
|
||||
|
||||
#if 1
|
||||
switch(mode)
|
||||
{
|
||||
case ZM_STA_PS_NONE:
|
||||
sendNull = zfPowerSavingMgrHandlePsNone(dev, &isWakeUpRequired);
|
||||
break;
|
||||
|
||||
case ZM_STA_PS_FAST:
|
||||
case ZM_STA_PS_LIGHT:
|
||||
wd->sta.psMgr.maxSleepPeriods = 1;
|
||||
zfPowerSavingMgrHandlePs(dev);
|
||||
break;
|
||||
|
||||
case ZM_STA_PS_MAX:
|
||||
wd->sta.psMgr.maxSleepPeriods = ZM_PS_MAX_SLEEP_PERIODS;
|
||||
zfPowerSavingMgrHandlePs(dev);
|
||||
break;
|
||||
}
|
||||
#else
|
||||
switch(wd->sta.psMgr.state)
|
||||
{
|
||||
case ZM_PS_MSG_STATE_ACTIVE:
|
||||
if ( mode != ZM_STA_PS_NONE )
|
||||
{
|
||||
zm_debug_msg0("zfPowerSavingMgrSetMode: switch from ZM_PS_MSG_STATE_ACTIVE to ZM_PS_MSG_STATE_T1\n");
|
||||
// Stall the TX & start to wait the pending TX to be completed
|
||||
wd->sta.psMgr.state = ZM_PS_MSG_STATE_T1;
|
||||
}
|
||||
break;
|
||||
|
||||
case ZM_PS_MSG_STATE_SLEEP:
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
wd->sta.powerSaveMode = mode;
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
if ( isWakeUpRequired )
|
||||
{
|
||||
zfHpPowerSaveSetState(dev, 0);
|
||||
wd->sta.psMgr.tempWakeUp = 0;
|
||||
}
|
||||
|
||||
if ( zfStaIsConnected(dev)
|
||||
&& (wd->wlanMode == ZM_MODE_INFRASTRUCTURE) )
|
||||
{
|
||||
switch(mode)
|
||||
{
|
||||
case ZM_STA_PS_NONE:
|
||||
zfHpPowerSaveSetMode(dev, 0, 0, wd->beaconInterval);
|
||||
break;
|
||||
|
||||
case ZM_STA_PS_FAST:
|
||||
case ZM_STA_PS_MAX:
|
||||
case ZM_STA_PS_LIGHT:
|
||||
zfHpPowerSaveSetMode(dev, 0, 1, wd->beaconInterval);
|
||||
break;
|
||||
|
||||
default:
|
||||
zfHpPowerSaveSetMode(dev, 0, 0, wd->beaconInterval);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (sendNull == 1)
|
||||
{
|
||||
zfSendNullData(dev, 0);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static void zfPowerSavingMgrNotifyPSToAP(zdev_t *dev)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
if ( (wd->sta.psMgr.tempWakeUp != 1)&&
|
||||
(wd->sta.psMgr.lastTxUnicastFrm != wd->commTally.txUnicastFrm ||
|
||||
wd->sta.psMgr.lastTxBroadcastFrm != wd->commTally.txBroadcastFrm ||
|
||||
wd->sta.psMgr.lastTxMulticastFrm != wd->commTally.txMulticastFrm) )
|
||||
{
|
||||
zmw_enter_critical_section(dev);
|
||||
wd->sta.psMgr.lastTxUnicastFrm = wd->commTally.txUnicastFrm;
|
||||
wd->sta.psMgr.lastTxBroadcastFrm = wd->commTally.txBroadcastFrm;
|
||||
wd->sta.psMgr.lastTxMulticastFrm = wd->commTally.txMulticastFrm;
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
zfSendNullData(dev, 1);
|
||||
}
|
||||
}
|
||||
|
||||
static void zfPowerSavingMgrOnHandleT1(zdev_t* dev)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
// If the tx Q is not empty...return
|
||||
if ( zfIsVtxqEmpty(dev) == FALSE )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
zm_debug_msg0("VtxQ is empty now...Check if HAL TXQ is empty\n");
|
||||
|
||||
// The the HAL TX Q is not empty...return
|
||||
if ( zfHpGetFreeTxdCount(dev) != zfHpGetMaxTxdCount(dev) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
zm_debug_msg0("HAL TXQ is empty now...Could go to sleep...\n");
|
||||
|
||||
zmw_enter_critical_section(dev);
|
||||
|
||||
if (wd->sta.powerSaveMode == ZM_STA_PS_LIGHT)
|
||||
{
|
||||
if (wd->sta.ReceivedPktRatePerSecond > 200)
|
||||
{
|
||||
zmw_leave_critical_section(dev);
|
||||
return;
|
||||
}
|
||||
|
||||
if ( zfStaIsConnected(dev)
|
||||
&& (wd->wlanMode == ZM_MODE_INFRASTRUCTURE) )
|
||||
{
|
||||
if (wd->sta.psMgr.sleepAllowedtick) {
|
||||
wd->sta.psMgr.sleepAllowedtick--;
|
||||
zmw_leave_critical_section(dev);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
wd->sta.psMgr.state = ZM_PS_MSG_STATE_T2;
|
||||
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
// Send the Null pkt to AP to notify that I'm going to sleep
|
||||
if ( zfStaIsConnected(dev) )
|
||||
{
|
||||
zm_debug_msg0("zfPowerSavingMgrOnHandleT1 send Null data\n");
|
||||
zfPowerSavingMgrNotifyPSToAP(dev);
|
||||
}
|
||||
|
||||
// Stall the TX now
|
||||
// zfTxEngineStop(dev);
|
||||
}
|
||||
|
||||
static void zfPowerSavingMgrOnHandleT2(zdev_t* dev)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
// Wait until the Null pkt is transmitted
|
||||
if ( zfHpGetFreeTxdCount(dev) != zfHpGetMaxTxdCount(dev) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
zmw_enter_critical_section(dev);
|
||||
wd->sta.psMgr.state = ZM_PS_MSG_STATE_SLEEP;
|
||||
wd->sta.psMgr.lastTxUnicastFrm = wd->commTally.txUnicastFrm;
|
||||
wd->sta.psMgr.lastTxBroadcastFrm = wd->commTally.txBroadcastFrm;
|
||||
wd->sta.psMgr.lastTxMulticastFrm = wd->commTally.txMulticastFrm;
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
// Let CHIP sleep now
|
||||
zm_debug_msg0("zfPowerSavingMgrOnHandleT2 zzzz....\n");
|
||||
zfHpPowerSaveSetState(dev, 1);
|
||||
wd->sta.psMgr.tempWakeUp = 0;
|
||||
}
|
||||
|
||||
u8_t zfPowerSavingMgrIsSleeping(zdev_t *dev)
|
||||
{
|
||||
u8_t isSleeping = FALSE;
|
||||
zmw_get_wlan_dev(dev);
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
zmw_enter_critical_section(dev);
|
||||
if ( wd->sta.psMgr.state == ZM_PS_MSG_STATE_SLEEP ||
|
||||
wd->sta.psMgr.state == ZM_PS_MSG_STATE_T2)
|
||||
{
|
||||
isSleeping = TRUE;
|
||||
}
|
||||
zmw_leave_critical_section(dev);
|
||||
return isSleeping;
|
||||
}
|
||||
|
||||
static u8_t zfPowerSavingMgrIsIdle(zdev_t *dev)
|
||||
{
|
||||
u8_t isIdle = 0;
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
zmw_enter_critical_section(dev);
|
||||
|
||||
if ( zfStaIsConnected(dev) && wd->sta.psMgr.isSleepAllowed == 0 )
|
||||
{
|
||||
goto done;
|
||||
}
|
||||
|
||||
if ( wd->sta.bChannelScan )
|
||||
{
|
||||
goto done;
|
||||
}
|
||||
|
||||
if ( zfStaIsConnecting(dev) )
|
||||
{
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (wd->sta.powerSaveMode == ZM_STA_PS_LIGHT)
|
||||
{
|
||||
if (wd->sta.ReceivedPktRatePerSecond > 200)
|
||||
{
|
||||
goto done;
|
||||
}
|
||||
|
||||
if ( zfStaIsConnected(dev)
|
||||
&& (wd->wlanMode == ZM_MODE_INFRASTRUCTURE) )
|
||||
{
|
||||
if (wd->sta.psMgr.sleepAllowedtick) {
|
||||
wd->sta.psMgr.sleepAllowedtick--;
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
isIdle = 1;
|
||||
|
||||
done:
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
if ( zfIsVtxqEmpty(dev) == FALSE )
|
||||
{
|
||||
isIdle = 0;
|
||||
}
|
||||
|
||||
return isIdle;
|
||||
}
|
||||
|
||||
static void zfPowerSavingMgrSleepIfIdle(zdev_t *dev)
|
||||
{
|
||||
u8_t isIdle;
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
isIdle = zfPowerSavingMgrIsIdle(dev);
|
||||
|
||||
if ( isIdle == 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
zmw_enter_critical_section(dev);
|
||||
|
||||
switch(wd->sta.powerSaveMode)
|
||||
{
|
||||
case ZM_STA_PS_NONE:
|
||||
break;
|
||||
|
||||
case ZM_STA_PS_MAX:
|
||||
case ZM_STA_PS_FAST:
|
||||
case ZM_STA_PS_LIGHT:
|
||||
zm_debug_msg0("zfPowerSavingMgrSleepIfIdle: IDLE so slep now...\n");
|
||||
wd->sta.psMgr.state = ZM_PS_MSG_STATE_T1;
|
||||
break;
|
||||
}
|
||||
|
||||
zmw_leave_critical_section(dev);
|
||||
}
|
||||
|
||||
static void zfPowerSavingMgrDisconnectMain(zdev_t* dev)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
#ifdef ZM_ENABLE_DISCONNECT_PS
|
||||
switch(wd->sta.psMgr.state)
|
||||
{
|
||||
case ZM_PS_MSG_STATE_ACTIVE:
|
||||
zfPowerSavingMgrSleepIfIdle(dev);
|
||||
break;
|
||||
|
||||
case ZM_PS_MSG_STATE_SLEEP:
|
||||
break;
|
||||
|
||||
case ZM_PS_MSG_STATE_T1:
|
||||
zfPowerSavingMgrOnHandleT1(dev);
|
||||
break;
|
||||
|
||||
case ZM_PS_MSG_STATE_T2:
|
||||
zfPowerSavingMgrOnHandleT2(dev);
|
||||
break;
|
||||
}
|
||||
#else
|
||||
zfPowerSavingMgrWakeup(dev);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void zfPowerSavingMgrInfraMain(zdev_t* dev)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
switch(wd->sta.psMgr.state)
|
||||
{
|
||||
case ZM_PS_MSG_STATE_ACTIVE:
|
||||
zfPowerSavingMgrSleepIfIdle(dev);
|
||||
break;
|
||||
|
||||
case ZM_PS_MSG_STATE_SLEEP:
|
||||
break;
|
||||
|
||||
case ZM_PS_MSG_STATE_T1:
|
||||
zfPowerSavingMgrOnHandleT1(dev);
|
||||
break;
|
||||
|
||||
case ZM_PS_MSG_STATE_T2:
|
||||
zfPowerSavingMgrOnHandleT2(dev);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void zfPowerSavingMgrAtimWinExpired(zdev_t* dev)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
//printk("zfPowerSavingMgrAtimWinExpired #1\n");
|
||||
if ( wd->sta.powerSaveMode == ZM_STA_PS_NONE )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//printk("zfPowerSavingMgrAtimWinExpired #2\n");
|
||||
// if we received any ATIM window from the others to indicate we have buffered data
|
||||
// at the other station, we can't go to sleep
|
||||
if ( wd->sta.recvAtim )
|
||||
{
|
||||
wd->sta.recvAtim = 0;
|
||||
zm_debug_msg0("Can't sleep due to receving ATIM window!");
|
||||
return;
|
||||
}
|
||||
|
||||
// if we are the one to tx beacon during last beacon interval. we can't go to sleep
|
||||
// since we need to be alive to respond the probe request!
|
||||
if ( wd->sta.txBeaconInd )
|
||||
{
|
||||
zm_debug_msg0("Can't sleep due to just transmit a beacon!");
|
||||
return;
|
||||
}
|
||||
|
||||
// If we buffer any data for the other stations. we could not go to sleep
|
||||
if ( wd->sta.ibssPrevPSDataCount != 0 )
|
||||
{
|
||||
zm_debug_msg0("Can't sleep due to buffering data for the others!");
|
||||
return;
|
||||
}
|
||||
|
||||
// before sleeping, we still need to notify the others by transmitting null
|
||||
// pkt with power mgmt bit turned on.
|
||||
zfPowerSavingMgrOnHandleT1(dev);
|
||||
}
|
||||
|
||||
static void zfPowerSavingMgrIBSSMain(zdev_t* dev)
|
||||
{
|
||||
// wait for the end of
|
||||
// if need to wait to know if we are the one to transmit the beacon
|
||||
// during the beacon interval. If it's me, we can't go to sleep.
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
switch(wd->sta.psMgr.state)
|
||||
{
|
||||
case ZM_PS_MSG_STATE_ACTIVE:
|
||||
case ZM_PS_MSG_STATE_SLEEP:
|
||||
case ZM_PS_MSG_STATE_T1:
|
||||
break;
|
||||
|
||||
case ZM_PS_MSG_STATE_T2:
|
||||
zfPowerSavingMgrOnHandleT2(dev);
|
||||
break;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
#if 1
|
||||
void zfPowerSavingMgrMain(zdev_t* dev)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
switch (wd->sta.adapterState)
|
||||
{
|
||||
case ZM_STA_STATE_DISCONNECT:
|
||||
zfPowerSavingMgrDisconnectMain(dev);
|
||||
break;
|
||||
case ZM_STA_STATE_CONNECTED:
|
||||
{
|
||||
if (wd->wlanMode == ZM_MODE_INFRASTRUCTURE) {
|
||||
zfPowerSavingMgrInfraMain(dev);
|
||||
} else if (wd->wlanMode == ZM_MODE_IBSS) {
|
||||
zfPowerSavingMgrIBSSMain(dev);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ZM_STA_STATE_CONNECTING:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
#else
|
||||
void zfPowerSavingMgrMain(zdev_t* dev)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
if ( wd->wlanMode != ZM_MODE_INFRASTRUCTURE )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
switch(wd->sta.psMgr.state)
|
||||
{
|
||||
case ZM_PS_MSG_STATE_ACTIVE:
|
||||
goto check_sleep;
|
||||
break;
|
||||
|
||||
case ZM_PS_MSG_STATE_SLEEP:
|
||||
goto sleeping;
|
||||
break;
|
||||
|
||||
case ZM_PS_MSG_STATE_T1:
|
||||
zfPowerSavingMgrOnHandleT1(dev);
|
||||
break;
|
||||
|
||||
case ZM_PS_MSG_STATE_T2:
|
||||
zfPowerSavingMgrOnHandleT2(dev);
|
||||
break;
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
sleeping:
|
||||
return;
|
||||
|
||||
check_sleep:
|
||||
zfPowerSavingMgrSleepIfIdle(dev);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ZM_ENABLE_POWER_SAVE
|
||||
void zfPowerSavingMgrWakeup(zdev_t* dev)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
//zm_debug_msg0("zfPowerSavingMgrWakeup");
|
||||
|
||||
//if ( wd->sta.psMgr.state != ZM_PS_MSG_STATE_ACTIVE && ( zfPowerSavingMgrIsIdle(dev) == 0 ))
|
||||
if ( wd->sta.psMgr.state != ZM_PS_MSG_STATE_ACTIVE )
|
||||
{
|
||||
zmw_enter_critical_section(dev);
|
||||
|
||||
wd->sta.psMgr.isSleepAllowed = 0;
|
||||
wd->sta.psMgr.state = ZM_PS_MSG_STATE_ACTIVE;
|
||||
|
||||
if ( wd->sta.powerSaveMode > ZM_STA_PS_NONE )
|
||||
wd->sta.psMgr.tempWakeUp = 1;
|
||||
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
// Wake up the CHIP now!!
|
||||
zfHpPowerSaveSetState(dev, 0);
|
||||
}
|
||||
}
|
||||
#else
|
||||
void zfPowerSavingMgrWakeup(zdev_t* dev)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
void zfPowerSavingMgrProcessBeacon(zdev_t* dev, zbuf_t* buf)
|
||||
{
|
||||
u8_t length, bitmap;
|
||||
u16_t offset, n1, n2, q, r;
|
||||
zbuf_t* psBuf;
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
if ( wd->sta.powerSaveMode == ZM_STA_PS_NONE )
|
||||
//if ( wd->sta.psMgr.state != ZM_PS_MSG_STATE_SLEEP )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
wd->sta.psMgr.isSleepAllowed = 1;
|
||||
|
||||
if ( (offset=zfFindElement(dev, buf, ZM_WLAN_EID_TIM)) != 0xffff )
|
||||
{
|
||||
length = zmw_rx_buf_readb(dev, buf, offset+1);
|
||||
|
||||
if ( length > 3 )
|
||||
{
|
||||
n1 = zmw_rx_buf_readb(dev, buf, offset+4) & (~ZM_BIT_0);
|
||||
n2 = length + n1 - 4;
|
||||
q = wd->sta.aid >> 3;
|
||||
r = wd->sta.aid & 7;
|
||||
|
||||
if ((q >= n1) && (q <= n2))
|
||||
{
|
||||
bitmap = zmw_rx_buf_readb(dev, buf, offset+5+q-n1);
|
||||
|
||||
if ( (bitmap >> r) & ZM_BIT_0 )
|
||||
{
|
||||
//if ( wd->sta.powerSaveMode == ZM_STA_PS_FAST )
|
||||
if ( 0 )
|
||||
{
|
||||
wd->sta.psMgr.state = ZM_PS_MSG_STATE_S1;
|
||||
//zfSendPSPoll(dev);
|
||||
zfSendNullData(dev, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((wd->sta.qosInfo&0xf) != 0xf)
|
||||
{
|
||||
/* send ps-poll */
|
||||
//printk("zfSendPSPoll #1\n");
|
||||
|
||||
wd->sta.psMgr.isSleepAllowed = 0;
|
||||
|
||||
switch (wd->sta.powerSaveMode)
|
||||
{
|
||||
case ZM_STA_PS_MAX:
|
||||
case ZM_STA_PS_FAST:
|
||||
//zm_debug_msg0("wake up and send PS-Poll\n");
|
||||
zfSendPSPoll(dev);
|
||||
break;
|
||||
case ZM_STA_PS_LIGHT:
|
||||
zm_debug_msg0("wake up and send null data\n");
|
||||
|
||||
zmw_enter_critical_section(dev);
|
||||
wd->sta.psMgr.sleepAllowedtick = 400;
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
zfSendNullData(dev, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
wd->sta.psMgr.tempWakeUp = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
while ((psBuf = zfQueueGet(dev, wd->sta.uapsdQ)) != NULL)
|
||||
{
|
||||
zfTxSendEth(dev, psBuf, 0, ZM_EXTERNAL_ALLOC_BUF, 0);
|
||||
}
|
||||
|
||||
//printk("zfPowerSavingMgrProcessBeacon #1\n");
|
||||
zfPowerSavingMgrMain(dev);
|
||||
}
|
||||
|
||||
void zfPowerSavingMgrConnectNotify(zdev_t *dev)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
if ( wd->wlanMode == ZM_MODE_INFRASTRUCTURE )
|
||||
{
|
||||
switch(wd->sta.powerSaveMode)
|
||||
{
|
||||
case ZM_STA_PS_NONE:
|
||||
zfHpPowerSaveSetMode(dev, 0, 0, wd->beaconInterval);
|
||||
break;
|
||||
|
||||
case ZM_STA_PS_FAST:
|
||||
case ZM_STA_PS_MAX:
|
||||
case ZM_STA_PS_LIGHT:
|
||||
zfHpPowerSaveSetMode(dev, 0, 1, wd->beaconInterval);
|
||||
break;
|
||||
|
||||
default:
|
||||
zfHpPowerSaveSetMode(dev, 0, 0, wd->beaconInterval);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void zfPowerSavingMgrPreTBTTInterrupt(zdev_t *dev)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
/* disable TBTT interrupt when change from connection to disconnect */
|
||||
if (zfStaIsDisconnect(dev)) {
|
||||
zfHpPowerSaveSetMode(dev, 0, 0, 0);
|
||||
zfPowerSavingMgrWakeup(dev);
|
||||
return;
|
||||
}
|
||||
|
||||
zmw_enter_critical_section(dev);
|
||||
wd->sta.psMgr.ticks++;
|
||||
|
||||
if ( wd->sta.psMgr.ticks < wd->sta.psMgr.maxSleepPeriods )
|
||||
{
|
||||
zmw_leave_critical_section(dev);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
wd->sta.psMgr.ticks = 0;
|
||||
}
|
||||
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
zfPowerSavingMgrWakeup(dev);
|
||||
}
|
||||
|
||||
/* Leave an empty line below to remove warning message on some compiler */
|
||||
|
535
drivers/staging/otus/80211core/cscanmgr.c
Normal file
535
drivers/staging/otus/80211core/cscanmgr.c
Normal file
|
@ -0,0 +1,535 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "cprecomp.h"
|
||||
|
||||
void zfScanMgrInit(zdev_t* dev)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
wd->sta.scanMgr.scanReqs[0] = 0;
|
||||
wd->sta.scanMgr.scanReqs[1] = 0;
|
||||
|
||||
wd->sta.scanMgr.currScanType = ZM_SCAN_MGR_SCAN_NONE;
|
||||
wd->sta.scanMgr.scanStartDelay = 3;
|
||||
//wd->sta.scanMgr.scanStartDelay = 0;
|
||||
}
|
||||
|
||||
u8_t zfScanMgrScanStart(zdev_t* dev, u8_t scanType)
|
||||
{
|
||||
u8_t i;
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
zm_debug_msg1("scanType = ", scanType);
|
||||
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
if ( scanType != ZM_SCAN_MGR_SCAN_INTERNAL &&
|
||||
scanType != ZM_SCAN_MGR_SCAN_EXTERNAL )
|
||||
{
|
||||
zm_debug_msg0("unknown scanType");
|
||||
return 1;
|
||||
}
|
||||
else if (zfStaIsConnecting(dev))
|
||||
{
|
||||
zm_debug_msg0("reject scan request due to connecting");
|
||||
return 1;
|
||||
}
|
||||
|
||||
i = scanType - 1;
|
||||
|
||||
zmw_enter_critical_section(dev);
|
||||
|
||||
if ( wd->sta.scanMgr.scanReqs[i] == 1 )
|
||||
{
|
||||
zm_debug_msg1("scan rescheduled", scanType);
|
||||
goto scan_done;
|
||||
}
|
||||
|
||||
wd->sta.scanMgr.scanReqs[i] = 1;
|
||||
zm_debug_msg1("scan scheduled: ", scanType);
|
||||
|
||||
// If there's no scan pending, we do the scan right away.
|
||||
// If there's an internal scan and the new scan request is external one,
|
||||
// we will restart the scan.
|
||||
if ( wd->sta.scanMgr.currScanType == ZM_SCAN_MGR_SCAN_NONE )
|
||||
{
|
||||
goto schedule_scan;
|
||||
}
|
||||
else if ( wd->sta.scanMgr.currScanType == ZM_SCAN_MGR_SCAN_INTERNAL &&
|
||||
scanType == ZM_SCAN_MGR_SCAN_EXTERNAL )
|
||||
{
|
||||
// Stop the internal scan & schedule external scan first
|
||||
zfTimerCancel(dev, ZM_EVENT_SCAN);
|
||||
|
||||
/* Fix for WHQL sendrecv => we do not apply delay time in which the device
|
||||
stop transmitting packet when we already connect to some AP */
|
||||
wd->sta.bScheduleScan = FALSE;
|
||||
|
||||
zfTimerCancel(dev, ZM_EVENT_TIMEOUT_SCAN);
|
||||
zfTimerCancel(dev, ZM_EVENT_IN_SCAN);
|
||||
|
||||
wd->sta.bChannelScan = FALSE;
|
||||
goto schedule_scan;
|
||||
}
|
||||
else
|
||||
{
|
||||
zm_debug_msg0("Scan is busy...waiting later to start\n");
|
||||
}
|
||||
|
||||
zmw_leave_critical_section(dev);
|
||||
return 0;
|
||||
|
||||
scan_done:
|
||||
zmw_leave_critical_section(dev);
|
||||
return 1;
|
||||
|
||||
schedule_scan:
|
||||
|
||||
wd->sta.bScheduleScan = TRUE;
|
||||
|
||||
zfTimerSchedule(dev, ZM_EVENT_SCAN, wd->sta.scanMgr.scanStartDelay);
|
||||
wd->sta.scanMgr.scanStartDelay = 3;
|
||||
//wd->sta.scanMgr.scanStartDelay = 0;
|
||||
wd->sta.scanMgr.currScanType = scanType;
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
if ((zfStaIsConnected(dev)) && (!zfPowerSavingMgrIsSleeping(dev)))
|
||||
{
|
||||
zfSendNullData(dev, 1);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void zfScanMgrScanStop(zdev_t* dev, u8_t scanType)
|
||||
{
|
||||
u8_t scanNotifyRequired = 0;
|
||||
u8_t theOtherScan = ZM_SCAN_MGR_SCAN_NONE;
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
zmw_enter_critical_section(dev);
|
||||
|
||||
if ( wd->sta.scanMgr.currScanType == ZM_SCAN_MGR_SCAN_NONE )
|
||||
{
|
||||
zm_assert(wd->sta.scanMgr.scanReqs[0] == 0);
|
||||
zm_assert(wd->sta.scanMgr.scanReqs[1] == 0);
|
||||
goto done;
|
||||
}
|
||||
|
||||
switch(scanType)
|
||||
{
|
||||
case ZM_SCAN_MGR_SCAN_EXTERNAL:
|
||||
scanNotifyRequired = 1;
|
||||
theOtherScan = ZM_SCAN_MGR_SCAN_INTERNAL;
|
||||
break;
|
||||
|
||||
case ZM_SCAN_MGR_SCAN_INTERNAL:
|
||||
theOtherScan = ZM_SCAN_MGR_SCAN_EXTERNAL;
|
||||
break;
|
||||
|
||||
default:
|
||||
goto done;
|
||||
}
|
||||
|
||||
if ( wd->sta.scanMgr.currScanType != scanType )
|
||||
{
|
||||
goto stop_done;
|
||||
}
|
||||
|
||||
zfTimerCancel(dev, ZM_EVENT_SCAN);
|
||||
|
||||
/* Fix for WHQL sendrecv => we do not apply delay time in which the device
|
||||
stop transmitting packet when we already connect to some AP */
|
||||
wd->sta.bScheduleScan = FALSE;
|
||||
|
||||
zfTimerCancel(dev, ZM_EVENT_TIMEOUT_SCAN);
|
||||
zfTimerCancel(dev, ZM_EVENT_IN_SCAN);
|
||||
|
||||
wd->sta.bChannelScan = FALSE;
|
||||
wd->sta.scanFrequency = 0;
|
||||
|
||||
if ( wd->sta.scanMgr.scanReqs[theOtherScan - 1] )
|
||||
{
|
||||
wd->sta.scanMgr.currScanType = theOtherScan;
|
||||
|
||||
// Schedule the other scan after 1 second later
|
||||
zfTimerSchedule(dev, ZM_EVENT_SCAN, 100);
|
||||
}
|
||||
else
|
||||
{
|
||||
wd->sta.scanMgr.currScanType = ZM_SCAN_MGR_SCAN_NONE;
|
||||
}
|
||||
|
||||
stop_done:
|
||||
wd->sta.scanMgr.scanReqs[scanType - 1] = 0;
|
||||
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
/* avoid lose receive packet when site survey */
|
||||
if ((zfStaIsConnected(dev)) && (!zfPowerSavingMgrIsSleeping(dev)))
|
||||
{
|
||||
zfSendNullData(dev, 0);
|
||||
}
|
||||
|
||||
if ( scanNotifyRequired )
|
||||
{
|
||||
zm_debug_msg0("Scan notify after reset");
|
||||
if (wd->zfcbScanNotify != NULL)
|
||||
{
|
||||
wd->zfcbScanNotify(dev, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
done:
|
||||
zmw_leave_critical_section(dev);
|
||||
return;
|
||||
}
|
||||
|
||||
void zfScanMgrScanAck(zdev_t* dev)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
zmw_enter_critical_section(dev);
|
||||
|
||||
wd->sta.scanMgr.scanStartDelay = 3;
|
||||
//wd->sta.scanMgr.scanStartDelay = 0;
|
||||
|
||||
zmw_leave_critical_section(dev);
|
||||
return;
|
||||
}
|
||||
|
||||
extern void zfStaReconnect(zdev_t* dev);
|
||||
|
||||
static void zfScanSendProbeRequest(zdev_t* dev)
|
||||
{
|
||||
u8_t k;
|
||||
u16_t dst[3] = { 0xffff, 0xffff, 0xffff };
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
/* Increase rxBeaconCount to prevent beacon lost */
|
||||
if (zfStaIsConnected(dev))
|
||||
{
|
||||
wd->sta.rxBeaconCount++;
|
||||
}
|
||||
|
||||
if ( wd->sta.bPassiveScan )
|
||||
{
|
||||
return;
|
||||
}
|
||||
/* enable 802.l11h and in DFS Band , disable sending probe request */
|
||||
if (wd->sta.DFSEnable)
|
||||
{
|
||||
if (zfHpIsDfsChannel(dev, wd->sta.scanFrequency))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
zfSendMmFrame(dev, ZM_WLAN_FRAME_TYPE_PROBEREQ, dst, 0, 0, 0);
|
||||
|
||||
if ( wd->sta.disableProbingWithSsid )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (k=1; k<=ZM_MAX_PROBE_HIDDEN_SSID_SIZE; k++)
|
||||
{
|
||||
if ( wd->ws.probingSsidList[k-1].ssidLen != 0 )
|
||||
{
|
||||
zfSendMmFrame(dev, ZM_WLAN_FRAME_TYPE_PROBEREQ, dst, k, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void zfScanMgrEventSetFreqCompleteCb(zdev_t* dev)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
//printk("zfScanMgrEventSetFreqCompleteCb #1\n");
|
||||
|
||||
zmw_enter_critical_section(dev);
|
||||
zfTimerSchedule(dev, ZM_EVENT_IN_SCAN, ZM_TICK_IN_SCAN);
|
||||
if (wd->sta.bPassiveScan)
|
||||
{
|
||||
zfTimerSchedule(dev, ZM_EVENT_TIMEOUT_SCAN, wd->sta.passiveScanTickPerChannel);
|
||||
}
|
||||
else
|
||||
{
|
||||
zfTimerSchedule(dev, ZM_EVENT_TIMEOUT_SCAN, wd->sta.activescanTickPerChannel);
|
||||
}
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
zfScanSendProbeRequest(dev);
|
||||
}
|
||||
|
||||
|
||||
static void zfScanMgrEventScanCompleteCb(zdev_t* dev)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
if ((zfStaIsConnected(dev)) && (!zfPowerSavingMgrIsSleeping(dev)))
|
||||
{
|
||||
zfSendNullData(dev, 0);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
void zfScanMgrScanEventRetry(zdev_t* dev)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
if ( !wd->sta.bChannelScan )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( !wd->sta.bPassiveScan )
|
||||
{
|
||||
zfScanSendProbeRequest(dev);
|
||||
#if 0
|
||||
zmw_enter_critical_section(dev);
|
||||
zfTimerSchedule(dev, ZM_EVENT_IN_SCAN, ZM_TICK_IN_SCAN);
|
||||
zmw_leave_critical_section(dev);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
u8_t zfScanMgrScanEventTimeout(zdev_t* dev)
|
||||
{
|
||||
u16_t nextScanFrequency = 0;
|
||||
u8_t temp;
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
zmw_enter_critical_section(dev);
|
||||
if ( wd->sta.scanFrequency == 0 )
|
||||
{
|
||||
zmw_leave_critical_section(dev);
|
||||
return -1;
|
||||
}
|
||||
|
||||
nextScanFrequency = zfChGetNextChannel(dev, wd->sta.scanFrequency,
|
||||
&wd->sta.bPassiveScan);
|
||||
|
||||
if ( (nextScanFrequency == 0xffff)
|
||||
|| (wd->sta.scanFrequency == zfChGetLastChannel(dev, &temp)) )
|
||||
{
|
||||
u8_t currScanType;
|
||||
u8_t isExternalScan = 0;
|
||||
u8_t isInternalScan = 0;
|
||||
|
||||
//zm_debug_msg1("end scan = ", KeQueryInterruptTime());
|
||||
wd->sta.scanFrequency = 0;
|
||||
|
||||
zm_debug_msg1("scan 1 type: ", wd->sta.scanMgr.currScanType);
|
||||
zm_debug_msg1("scan channel count = ", wd->regulationTable.allowChannelCnt);
|
||||
|
||||
//zfBssInfoRefresh(dev);
|
||||
zfTimerCancel(dev, ZM_EVENT_TIMEOUT_SCAN);
|
||||
|
||||
if ( wd->sta.bChannelScan == FALSE )
|
||||
{
|
||||
zm_debug_msg0("WOW!! scan is cancelled\n");
|
||||
zmw_leave_critical_section(dev);
|
||||
goto report_scan_result;
|
||||
}
|
||||
|
||||
|
||||
currScanType = wd->sta.scanMgr.currScanType;
|
||||
switch(currScanType)
|
||||
{
|
||||
case ZM_SCAN_MGR_SCAN_EXTERNAL:
|
||||
isExternalScan = 1;
|
||||
|
||||
if ( wd->sta.scanMgr.scanReqs[ZM_SCAN_MGR_SCAN_INTERNAL - 1] )
|
||||
{
|
||||
wd->sta.scanMgr.scanReqs[ZM_SCAN_MGR_SCAN_INTERNAL - 1] = 0;
|
||||
isInternalScan = 1;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case ZM_SCAN_MGR_SCAN_INTERNAL:
|
||||
isInternalScan = 1;
|
||||
|
||||
if ( wd->sta.scanMgr.scanReqs[ZM_SCAN_MGR_SCAN_EXTERNAL - 1] )
|
||||
{
|
||||
// Because the external scan should pre-empts internal scan.
|
||||
// So this shall not be happened!!
|
||||
zm_assert(0);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
zm_assert(0);
|
||||
break;
|
||||
}
|
||||
|
||||
wd->sta.scanMgr.scanReqs[currScanType - 1] = 0;
|
||||
wd->sta.scanMgr.scanStartDelay = 100;
|
||||
wd->sta.scanMgr.currScanType = ZM_SCAN_MGR_SCAN_NONE;
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
//Set channel according to AP's configuration
|
||||
zfCoreSetFrequencyEx(dev, wd->frequency, wd->BandWidth40,
|
||||
wd->ExtOffset, zfScanMgrEventScanCompleteCb);
|
||||
|
||||
wd->sta.bChannelScan = FALSE;
|
||||
|
||||
#if 1
|
||||
if (zfStaIsConnected(dev))
|
||||
{ // Finish site survey, reset the variable to detect using wrong frequency !
|
||||
zfHpFinishSiteSurvey(dev, 1);
|
||||
zmw_enter_critical_section(dev);
|
||||
wd->sta.ibssSiteSurveyStatus = 2;
|
||||
wd->tickIbssReceiveBeacon = 0;
|
||||
wd->sta.ibssReceiveBeaconCount = 0;
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
/* #5 Re-enable RIFS function after the site survey ! */
|
||||
/* This is because switch band will reset the BB register to initial value */
|
||||
if( wd->sta.rifsState == ZM_RIFS_STATE_DETECTED )
|
||||
{
|
||||
zfHpEnableRifs(dev, ((wd->sta.currentFrequency<3000)?1:0), wd->sta.EnableHT, wd->sta.HT2040);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
zfHpFinishSiteSurvey(dev, 0);
|
||||
zmw_enter_critical_section(dev);
|
||||
wd->sta.ibssSiteSurveyStatus = 0;
|
||||
zmw_leave_critical_section(dev);
|
||||
}
|
||||
#endif
|
||||
|
||||
report_scan_result:
|
||||
/* avoid lose receive packet when site survey */
|
||||
//if ((zfStaIsConnected(dev)) && (!zfPowerSavingMgrIsSleeping(dev)))
|
||||
//{
|
||||
// zfSendNullData(dev, 0);
|
||||
//}
|
||||
|
||||
if ( isExternalScan )//Quickly reboot
|
||||
{
|
||||
if (wd->zfcbScanNotify != NULL)
|
||||
{
|
||||
wd->zfcbScanNotify(dev, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
if ( isInternalScan )
|
||||
{
|
||||
//wd->sta.InternalScanReq = 0;
|
||||
zfStaReconnect(dev);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
wd->sta.scanFrequency = nextScanFrequency;
|
||||
|
||||
//zmw_enter_critical_section(dev);
|
||||
zfTimerCancel(dev, ZM_EVENT_IN_SCAN);
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
zm_debug_msg0("scan 2");
|
||||
zfCoreSetFrequencyV2(dev, wd->sta.scanFrequency, zfScanMgrEventSetFreqCompleteCb);
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
void zfScanMgrScanEventStart(zdev_t* dev)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
if ( wd->sta.bChannelScan )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
zfPowerSavingMgrWakeup(dev);
|
||||
|
||||
zmw_enter_critical_section(dev);
|
||||
|
||||
if ( wd->sta.scanMgr.currScanType == ZM_SCAN_MGR_SCAN_NONE )
|
||||
{
|
||||
goto no_scan;
|
||||
}
|
||||
|
||||
//zfBssInfoRefresh(dev);
|
||||
zfBssInfoRefresh(dev, 0);
|
||||
wd->sta.bChannelScan = TRUE;
|
||||
wd->sta.bScheduleScan = FALSE;
|
||||
zfTimerCancel(dev, ZM_EVENT_IN_SCAN);
|
||||
zfTimerCancel(dev, ZM_EVENT_TIMEOUT_SCAN);
|
||||
|
||||
//zm_debug_msg1("start scan = ", KeQueryInterruptTime());
|
||||
wd->sta.scanFrequency = zfChGetFirstChannel(dev, &wd->sta.bPassiveScan);
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
/* avoid lose receive packet when site survey */
|
||||
//if ((zfStaIsConnected(dev)) && (!zfPowerSavingMgrIsSleeping(dev)))
|
||||
//{
|
||||
// zfSendNullData(dev, 1);
|
||||
//}
|
||||
// zm_debug_msg0("scan 0");
|
||||
// zfCoreSetFrequencyV2(dev, wd->sta.scanFrequency, zfScanMgrEventSetFreqCompleteCb);
|
||||
|
||||
#if 1
|
||||
if (zfStaIsConnected(dev))
|
||||
{// If doing site survey !
|
||||
zfHpBeginSiteSurvey(dev, 1);
|
||||
zmw_enter_critical_section(dev);
|
||||
wd->sta.ibssSiteSurveyStatus = 1;
|
||||
zmw_leave_critical_section(dev);
|
||||
}
|
||||
else
|
||||
{
|
||||
zfHpBeginSiteSurvey(dev, 0);
|
||||
zmw_enter_critical_section(dev);
|
||||
wd->sta.ibssSiteSurveyStatus = 0;
|
||||
zmw_leave_critical_section(dev);
|
||||
}
|
||||
#endif
|
||||
|
||||
zm_debug_msg0("scan 0");
|
||||
zfCoreSetFrequencyV2(dev, wd->sta.scanFrequency, zfScanMgrEventSetFreqCompleteCb);
|
||||
|
||||
return;
|
||||
|
||||
no_scan:
|
||||
zmw_leave_critical_section(dev);
|
||||
return;
|
||||
}
|
598
drivers/staging/otus/80211core/ctkip.c
Normal file
598
drivers/staging/otus/80211core/ctkip.c
Normal file
|
@ -0,0 +1,598 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* */
|
||||
/* Module Name : ctkip.c */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module contains Tx and Rx functions. */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* None */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
#include "cprecomp.h"
|
||||
|
||||
u16_t zgTkipSboxLower[256] =
|
||||
{
|
||||
0xA5,0x84,0x99,0x8D,0x0D,0xBD,0xB1,0x54,
|
||||
0x50,0x03,0xA9,0x7D,0x19,0x62,0xE6,0x9A,
|
||||
0x45,0x9D,0x40,0x87,0x15,0xEB,0xC9,0x0B,
|
||||
0xEC,0x67,0xFD,0xEA,0xBF,0xF7,0x96,0x5B,
|
||||
0xC2,0x1C,0xAE,0x6A,0x5A,0x41,0x02,0x4F,
|
||||
0x5C,0xF4,0x34,0x08,0x93,0x73,0x53,0x3F,
|
||||
0x0C,0x52,0x65,0x5E,0x28,0xA1,0x0F,0xB5,
|
||||
0x09,0x36,0x9B,0x3D,0x26,0x69,0xCD,0x9F,
|
||||
0x1B,0x9E,0x74,0x2E,0x2D,0xB2,0xEE,0xFB,
|
||||
0xF6,0x4D,0x61,0xCE,0x7B,0x3E,0x71,0x97,
|
||||
0xF5,0x68,0x00,0x2C,0x60,0x1F,0xC8,0xED,
|
||||
0xBE,0x46,0xD9,0x4B,0xDE,0xD4,0xE8,0x4A,
|
||||
0x6B,0x2A,0xE5,0x16,0xC5,0xD7,0x55,0x94,
|
||||
0xCF,0x10,0x06,0x81,0xF0,0x44,0xBA,0xE3,
|
||||
0xF3,0xFE,0xC0,0x8A,0xAD,0xBC,0x48,0x04,
|
||||
0xDF,0xC1,0x75,0x63,0x30,0x1A,0x0E,0x6D,
|
||||
0x4C,0x14,0x35,0x2F,0xE1,0xA2,0xCC,0x39,
|
||||
0x57,0xF2,0x82,0x47,0xAC,0xE7,0x2B,0x95,
|
||||
0xA0,0x98,0xD1,0x7F,0x66,0x7E,0xAB,0x83,
|
||||
0xCA,0x29,0xD3,0x3C,0x79,0xE2,0x1D,0x76,
|
||||
0x3B,0x56,0x4E,0x1E,0xDB,0x0A,0x6C,0xE4,
|
||||
0x5D,0x6E,0xEF,0xA6,0xA8,0xA4,0x37,0x8B,
|
||||
0x32,0x43,0x59,0xB7,0x8C,0x64,0xD2,0xE0,
|
||||
0xB4,0xFA,0x07,0x25,0xAF,0x8E,0xE9,0x18,
|
||||
0xD5,0x88,0x6F,0x72,0x24,0xF1,0xC7,0x51,
|
||||
0x23,0x7C,0x9C,0x21,0xDD,0xDC,0x86,0x85,
|
||||
0x90,0x42,0xC4,0xAA,0xD8,0x05,0x01,0x12,
|
||||
0xA3,0x5F,0xF9,0xD0,0x91,0x58,0x27,0xB9,
|
||||
0x38,0x13,0xB3,0x33,0xBB,0x70,0x89,0xA7,
|
||||
0xB6,0x22,0x92,0x20,0x49,0xFF,0x78,0x7A,
|
||||
0x8F,0xF8,0x80,0x17,0xDA,0x31,0xC6,0xB8,
|
||||
0xC3,0xB0,0x77,0x11,0xCB,0xFC,0xD6,0x3A
|
||||
};
|
||||
|
||||
|
||||
u16_t zgTkipSboxUpper[256] =
|
||||
{
|
||||
0xC6,0xF8,0xEE,0xF6,0xFF,0xD6,0xDE,0x91,
|
||||
0x60,0x02,0xCE,0x56,0xE7,0xB5,0x4D,0xEC,
|
||||
0x8F,0x1F,0x89,0xFA,0xEF,0xB2,0x8E,0xFB,
|
||||
0x41,0xB3,0x5F,0x45,0x23,0x53,0xE4,0x9B,
|
||||
0x75,0xE1,0x3D,0x4C,0x6C,0x7E,0xF5,0x83,
|
||||
0x68,0x51,0xD1,0xF9,0xE2,0xAB,0x62,0x2A,
|
||||
0x08,0x95,0x46,0x9D,0x30,0x37,0x0A,0x2F,
|
||||
0x0E,0x24,0x1B,0xDF,0xCD,0x4E,0x7F,0xEA,
|
||||
0x12,0x1D,0x58,0x34,0x36,0xDC,0xB4,0x5B,
|
||||
0xA4,0x76,0xB7,0x7D,0x52,0xDD,0x5E,0x13,
|
||||
0xA6,0xB9,0x00,0xC1,0x40,0xE3,0x79,0xB6,
|
||||
0xD4,0x8D,0x67,0x72,0x94,0x98,0xB0,0x85,
|
||||
0xBB,0xC5,0x4F,0xED,0x86,0x9A,0x66,0x11,
|
||||
0x8A,0xE9,0x04,0xFE,0xA0,0x78,0x25,0x4B,
|
||||
0xA2,0x5D,0x80,0x05,0x3F,0x21,0x70,0xF1,
|
||||
0x63,0x77,0xAF,0x42,0x20,0xE5,0xFD,0xBF,
|
||||
0x81,0x18,0x26,0xC3,0xBE,0x35,0x88,0x2E,
|
||||
0x93,0x55,0xFC,0x7A,0xC8,0xBA,0x32,0xE6,
|
||||
0xC0,0x19,0x9E,0xA3,0x44,0x54,0x3B,0x0B,
|
||||
0x8C,0xC7,0x6B,0x28,0xA7,0xBC,0x16,0xAD,
|
||||
0xDB,0x64,0x74,0x14,0x92,0x0C,0x48,0xB8,
|
||||
0x9F,0xBD,0x43,0xC4,0x39,0x31,0xD3,0xF2,
|
||||
0xD5,0x8B,0x6E,0xDA,0x01,0xB1,0x9C,0x49,
|
||||
0xD8,0xAC,0xF3,0xCF,0xCA,0xF4,0x47,0x10,
|
||||
0x6F,0xF0,0x4A,0x5C,0x38,0x57,0x73,0x97,
|
||||
0xCB,0xA1,0xE8,0x3E,0x96,0x61,0x0D,0x0F,
|
||||
0xE0,0x7C,0x71,0xCC,0x90,0x06,0xF7,0x1C,
|
||||
0xC2,0x6A,0xAE,0x69,0x17,0x99,0x3A,0x27,
|
||||
0xD9,0xEB,0x2B,0x22,0xD2,0xA9,0x07,0x33,
|
||||
0x2D,0x3C,0x15,0xC9,0x87,0xAA,0x50,0xA5,
|
||||
0x03,0x59,0x09,0x1A,0x65,0xD7,0x84,0xD0,
|
||||
0x82,0x29,0x5A,0x1E,0x7B,0xA8,0x6D,0x2C
|
||||
};
|
||||
|
||||
u16_t zfrotr1(u16_t a)
|
||||
// rotate right by 1 bit.
|
||||
{
|
||||
u16_t b;
|
||||
|
||||
if (a & 0x01)
|
||||
{
|
||||
b = (a >> 1) | 0x8000;
|
||||
}
|
||||
else
|
||||
{
|
||||
b = (a >> 1) & 0x7fff;
|
||||
}
|
||||
return b;
|
||||
}
|
||||
|
||||
/*************************************************************/
|
||||
/* zfTkipSbox() */
|
||||
/* Returns a 16 bit value from a 64K entry table. The Table */
|
||||
/* is synthesized from two 256 entry byte wide tables. */
|
||||
/*************************************************************/
|
||||
u16_t zfTkipSbox(u16_t index)
|
||||
{
|
||||
u16_t low;
|
||||
u16_t high;
|
||||
u16_t left, right;
|
||||
|
||||
low = (index & 0xFF);
|
||||
high = ((index >> 8) & 0xFF);
|
||||
|
||||
left = zgTkipSboxLower[low] + (zgTkipSboxUpper[low] << 8 );
|
||||
right = zgTkipSboxUpper[high] + (zgTkipSboxLower[high] << 8 );
|
||||
|
||||
return (left ^ right);
|
||||
}
|
||||
|
||||
u8_t zfTkipPhase1KeyMix(u32_t iv32, struct zsTkipSeed* pSeed)
|
||||
{
|
||||
u16_t tsc0;
|
||||
u16_t tsc1;
|
||||
u16_t i, j;
|
||||
#if 0
|
||||
/* Need not proceed this function with the same iv32 */
|
||||
if ( iv32 == pSeed->iv32 )
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
tsc0 = (u16_t) ((iv32 >> 16) & 0xffff); /* msb */
|
||||
tsc1 = (u16_t) (iv32 & 0xffff);
|
||||
|
||||
/* Phase 1, step 1 */
|
||||
pSeed->ttak[0] = tsc1;
|
||||
pSeed->ttak[1] = tsc0;
|
||||
pSeed->ttak[2] = (u16_t) (pSeed->ta[0] + (pSeed->ta[1] <<8));
|
||||
pSeed->ttak[3] = (u16_t) (pSeed->ta[2] + (pSeed->ta[3] <<8));
|
||||
pSeed->ttak[4] = (u16_t) (pSeed->ta[4] + (pSeed->ta[5] <<8));
|
||||
|
||||
/* Phase 1, step 2 */
|
||||
for (i=0; i<8; i++)
|
||||
{
|
||||
j = 2*(i & 1);
|
||||
pSeed->ttak[0] =(pSeed->ttak[0] + zfTkipSbox(pSeed->ttak[4]
|
||||
^ ZM_BYTE_TO_WORD(pSeed->tk[1+j], pSeed->tk[j])))
|
||||
& 0xffff;
|
||||
pSeed->ttak[1] =(pSeed->ttak[1] + zfTkipSbox(pSeed->ttak[0]
|
||||
^ ZM_BYTE_TO_WORD(pSeed->tk[5+j], pSeed->tk[4+j] )))
|
||||
& 0xffff;
|
||||
pSeed->ttak[2] =(pSeed->ttak[2] + zfTkipSbox(pSeed->ttak[1]
|
||||
^ ZM_BYTE_TO_WORD(pSeed->tk[9+j], pSeed->tk[8+j] )))
|
||||
& 0xffff;
|
||||
pSeed->ttak[3] =(pSeed->ttak[3] + zfTkipSbox(pSeed->ttak[2]
|
||||
^ ZM_BYTE_TO_WORD(pSeed->tk[13+j], pSeed->tk[12+j])))
|
||||
& 0xffff;
|
||||
pSeed->ttak[4] =(pSeed->ttak[4] + zfTkipSbox(pSeed->ttak[3]
|
||||
^ ZM_BYTE_TO_WORD(pSeed->tk[1+j], pSeed->tk[j] )))
|
||||
& 0xffff;
|
||||
pSeed->ttak[4] =(pSeed->ttak[4] + i) & 0xffff;
|
||||
}
|
||||
|
||||
if ( iv32 == (pSeed->iv32+1) )
|
||||
{
|
||||
pSeed->iv32tmp = iv32;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8_t zfTkipPhase2KeyMix(u16_t iv16, struct zsTkipSeed* pSeed)
|
||||
{
|
||||
u16_t tsc2;
|
||||
|
||||
tsc2 = iv16;
|
||||
|
||||
/* Phase 2, Step 1 */
|
||||
pSeed->ppk[0] = pSeed->ttak[0];
|
||||
pSeed->ppk[1] = pSeed->ttak[1];
|
||||
pSeed->ppk[2] = pSeed->ttak[2];
|
||||
pSeed->ppk[3] = pSeed->ttak[3];
|
||||
pSeed->ppk[4] = pSeed->ttak[4];
|
||||
pSeed->ppk[5] = (pSeed->ttak[4] + tsc2) & 0xffff;
|
||||
|
||||
/* Phase2, Step 2 */
|
||||
pSeed->ppk[0] = pSeed->ppk[0]
|
||||
+ zfTkipSbox(pSeed->ppk[5] ^ ZM_BYTE_TO_WORD(pSeed->tk[1],pSeed->tk[0]));
|
||||
pSeed->ppk[1] = pSeed->ppk[1]
|
||||
+ zfTkipSbox(pSeed->ppk[0] ^ ZM_BYTE_TO_WORD(pSeed->tk[3],pSeed->tk[2]));
|
||||
pSeed->ppk[2] = pSeed->ppk[2]
|
||||
+ zfTkipSbox(pSeed->ppk[1] ^ ZM_BYTE_TO_WORD(pSeed->tk[5],pSeed->tk[4]));
|
||||
pSeed->ppk[3] = pSeed->ppk[3]
|
||||
+ zfTkipSbox(pSeed->ppk[2] ^ ZM_BYTE_TO_WORD(pSeed->tk[7],pSeed->tk[6]));
|
||||
pSeed->ppk[4] = pSeed->ppk[4]
|
||||
+ zfTkipSbox(pSeed->ppk[3] ^ ZM_BYTE_TO_WORD(pSeed->tk[9],pSeed->tk[8]));
|
||||
pSeed->ppk[5] = pSeed->ppk[5]
|
||||
+ zfTkipSbox(pSeed->ppk[4] ^ ZM_BYTE_TO_WORD(pSeed->tk[11],pSeed->tk[10]));
|
||||
|
||||
pSeed->ppk[0] = pSeed->ppk[0]
|
||||
+ zfrotr1(pSeed->ppk[5] ^ ZM_BYTE_TO_WORD(pSeed->tk[13],pSeed->tk[12]));
|
||||
pSeed->ppk[1] = pSeed->ppk[1]
|
||||
+ zfrotr1(pSeed->ppk[0] ^ ZM_BYTE_TO_WORD(pSeed->tk[15],pSeed->tk[14]));
|
||||
pSeed->ppk[2] = pSeed->ppk[2] + zfrotr1(pSeed->ppk[1]);
|
||||
pSeed->ppk[3] = pSeed->ppk[3] + zfrotr1(pSeed->ppk[2]);
|
||||
pSeed->ppk[4] = pSeed->ppk[4] + zfrotr1(pSeed->ppk[3]);
|
||||
pSeed->ppk[5] = pSeed->ppk[5] + zfrotr1(pSeed->ppk[4]);
|
||||
|
||||
if (iv16 == 0)
|
||||
{
|
||||
if (pSeed->iv16 == 0xffff)
|
||||
{
|
||||
pSeed->iv16tmp=0;
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
else if (iv16 == (pSeed->iv16+1))
|
||||
{
|
||||
pSeed->iv16tmp = iv16;
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
void zfTkipInit(u8_t* key, u8_t* ta, struct zsTkipSeed* pSeed, u8_t* initIv)
|
||||
{
|
||||
u16_t iv16;
|
||||
u32_t iv32;
|
||||
u16_t i;
|
||||
|
||||
/* clear memory */
|
||||
zfZeroMemory((u8_t*) pSeed, sizeof(struct zsTkipSeed));
|
||||
/* set key to seed */
|
||||
zfMemoryCopy(pSeed->ta, ta, 6);
|
||||
zfMemoryCopy(pSeed->tk, key, 16);
|
||||
|
||||
iv16 = *initIv++;
|
||||
iv16 += *initIv<<8;
|
||||
initIv++;
|
||||
|
||||
iv32=0;
|
||||
|
||||
for(i=0; i<4; i++) // initiv is little endian
|
||||
{
|
||||
iv32 += *initIv<<(i*8);
|
||||
*initIv++;
|
||||
}
|
||||
|
||||
pSeed->iv32 = iv32+1; // Force Recalculating on Tkip Phase1
|
||||
zfTkipPhase1KeyMix(iv32, pSeed);
|
||||
|
||||
pSeed->iv16 = iv16;
|
||||
pSeed->iv32 = iv32;
|
||||
}
|
||||
|
||||
u32_t zfGetU32t(u8_t* p)
|
||||
{
|
||||
u32_t res=0;
|
||||
u16_t i;
|
||||
|
||||
for( i=0; i<4; i++ )
|
||||
{
|
||||
res |= (*p++) << (8*i);
|
||||
}
|
||||
|
||||
return res;
|
||||
|
||||
}
|
||||
|
||||
void zfPutU32t(u8_t* p, u32_t value)
|
||||
{
|
||||
u16_t i;
|
||||
|
||||
for(i=0; i<4; i++)
|
||||
{
|
||||
*p++ = (u8_t) (value & 0xff);
|
||||
value >>= 8;
|
||||
}
|
||||
}
|
||||
|
||||
void zfMicClear(struct zsMicVar* pMic)
|
||||
{
|
||||
pMic->left = pMic->k0;
|
||||
pMic->right = pMic->k1;
|
||||
pMic->nBytes = 0;
|
||||
pMic->m = 0;
|
||||
}
|
||||
|
||||
void zfMicSetKey(u8_t* key, struct zsMicVar* pMic)
|
||||
{
|
||||
pMic->k0 = zfGetU32t(key);
|
||||
pMic->k1 = zfGetU32t(key+4);
|
||||
zfMicClear(pMic);
|
||||
}
|
||||
|
||||
void zfMicAppendByte(u8_t b, struct zsMicVar* pMic)
|
||||
{
|
||||
// Append the byte to our word-sized buffer
|
||||
pMic->m |= b << (8* pMic->nBytes);
|
||||
pMic->nBytes++;
|
||||
|
||||
// Process the word if it is full.
|
||||
if ( pMic->nBytes >= 4 )
|
||||
{
|
||||
pMic->left ^= pMic->m;
|
||||
pMic->right ^= ZM_ROL32(pMic->left, 17 );
|
||||
pMic->left += pMic->right;
|
||||
pMic->right ^= ((pMic->left & 0xff00ff00) >> 8) |
|
||||
((pMic->left & 0x00ff00ff) << 8);
|
||||
pMic->left += pMic->right;
|
||||
pMic->right ^= ZM_ROL32( pMic->left, 3 );
|
||||
pMic->left += pMic->right;
|
||||
pMic->right ^= ZM_ROR32( pMic->left, 2 );
|
||||
pMic->left += pMic->right;
|
||||
// Clear the buffer
|
||||
pMic->m = 0;
|
||||
pMic->nBytes = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void zfMicGetMic(u8_t* dst, struct zsMicVar* pMic)
|
||||
{
|
||||
// Append the minimum padding
|
||||
zfMicAppendByte(0x5a, pMic);
|
||||
zfMicAppendByte(0, pMic);
|
||||
zfMicAppendByte(0, pMic);
|
||||
zfMicAppendByte(0, pMic);
|
||||
zfMicAppendByte(0, pMic);
|
||||
|
||||
// and then zeroes until the length is a multiple of 4
|
||||
while( pMic->nBytes != 0 )
|
||||
{
|
||||
zfMicAppendByte(0, pMic);
|
||||
}
|
||||
|
||||
// The appendByte function has already computed the result.
|
||||
zfPutU32t(dst, pMic->left);
|
||||
zfPutU32t(dst+4, pMic->right);
|
||||
|
||||
// Reset to the empty message.
|
||||
zfMicClear(pMic);
|
||||
|
||||
}
|
||||
|
||||
u8_t zfMicRxVerify(zdev_t* dev, zbuf_t* buf)
|
||||
{
|
||||
struct zsMicVar* pMicKey;
|
||||
struct zsMicVar MyMicKey;
|
||||
u8_t mic[8];
|
||||
u8_t da[6];
|
||||
u8_t sa[6];
|
||||
u8_t bValue;
|
||||
u16_t i, payloadOffset, tailOffset;
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
/* need not check MIC if pMicKEy is equal to NULL */
|
||||
if ( wd->wlanMode == ZM_MODE_AP )
|
||||
{
|
||||
pMicKey = zfApGetRxMicKey(dev, buf);
|
||||
|
||||
if ( pMicKey != NULL )
|
||||
{
|
||||
zfCopyFromRxBuffer(dev, buf, sa, ZM_WLAN_HEADER_A2_OFFSET, 6);
|
||||
zfCopyFromRxBuffer(dev, buf, da, ZM_WLAN_HEADER_A3_OFFSET, 6);
|
||||
}
|
||||
else
|
||||
{
|
||||
return ZM_MIC_SUCCESS;
|
||||
}
|
||||
}
|
||||
else if ( wd->wlanMode == ZM_MODE_INFRASTRUCTURE )
|
||||
{
|
||||
pMicKey = zfStaGetRxMicKey(dev, buf);
|
||||
|
||||
if ( pMicKey != NULL )
|
||||
{
|
||||
zfCopyFromRxBuffer(dev, buf, sa, ZM_WLAN_HEADER_A3_OFFSET, 6);
|
||||
zfCopyFromRxBuffer(dev, buf, da, ZM_WLAN_HEADER_A1_OFFSET, 6);
|
||||
}
|
||||
else
|
||||
{
|
||||
return ZM_MIC_SUCCESS;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return ZM_MIC_SUCCESS;
|
||||
}
|
||||
|
||||
MyMicKey.k0=pMicKey->k0;
|
||||
MyMicKey.k1=pMicKey->k1;
|
||||
pMicKey = &MyMicKey;
|
||||
|
||||
zfMicClear(pMicKey);
|
||||
tailOffset = zfwBufGetSize(dev, buf);
|
||||
tailOffset -= 8;
|
||||
|
||||
/* append DA */
|
||||
for(i=0; i<6; i++)
|
||||
{
|
||||
zfMicAppendByte(da[i], pMicKey);
|
||||
}
|
||||
/* append SA */
|
||||
for(i=0; i<6; i++)
|
||||
{
|
||||
zfMicAppendByte(sa[i], pMicKey);
|
||||
}
|
||||
|
||||
/* append for alignment */
|
||||
if ((zmw_rx_buf_readb(dev, buf, 0) & 0x80) != 0)
|
||||
zfMicAppendByte(zmw_rx_buf_readb(dev, buf,24)&0x7, pMicKey);
|
||||
else
|
||||
zfMicAppendByte(0, pMicKey);
|
||||
zfMicAppendByte(0, pMicKey);
|
||||
zfMicAppendByte(0, pMicKey);
|
||||
zfMicAppendByte(0, pMicKey);
|
||||
|
||||
/* append payload */
|
||||
payloadOffset = ZM_SIZE_OF_WLAN_DATA_HEADER +
|
||||
ZM_SIZE_OF_IV +
|
||||
ZM_SIZE_OF_EXT_IV;
|
||||
|
||||
if ((zmw_rx_buf_readb(dev, buf, 0) & 0x80) != 0)
|
||||
{
|
||||
/* Qos Packet, Plcpheader + 2 */
|
||||
if (wd->wlanMode == ZM_MODE_AP)
|
||||
{
|
||||
/* TODO : Rx Qos element offset in software MIC check */
|
||||
}
|
||||
else if (wd->wlanMode == ZM_MODE_INFRASTRUCTURE)
|
||||
{
|
||||
if (wd->sta.wmeConnected != 0)
|
||||
{
|
||||
payloadOffset += 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(i=payloadOffset; i<tailOffset; i++)
|
||||
{
|
||||
bValue = zmw_rx_buf_readb(dev, buf, i);
|
||||
zfMicAppendByte(bValue, pMicKey);
|
||||
}
|
||||
|
||||
zfMicGetMic(mic, pMicKey);
|
||||
|
||||
if ( !zfRxBufferEqualToStr(dev, buf, mic, tailOffset, 8) )
|
||||
{
|
||||
return ZM_MIC_FAILURE;
|
||||
}
|
||||
|
||||
return ZM_MIC_SUCCESS;
|
||||
}
|
||||
|
||||
void zfTkipGetseeds(u16_t iv16, u8_t *RC4Key, struct zsTkipSeed *Seed)
|
||||
{
|
||||
RC4Key[0] = ZM_HI8(iv16);
|
||||
RC4Key[1] = (ZM_HI8(iv16) | 0x20) & 0x7f;
|
||||
RC4Key[2] = ZM_LO8(iv16);
|
||||
RC4Key[3] = ((Seed->ppk[5] ^ ZM_BYTE_TO_WORD(Seed->tk[1],Seed->tk[0]))>>1) & 0xff;
|
||||
RC4Key[4] = Seed->ppk[0] & 0xff;
|
||||
RC4Key[5] = Seed->ppk[0] >> 8;
|
||||
RC4Key[6] = Seed->ppk[1] & 0xff;
|
||||
RC4Key[7] = Seed->ppk[1] >> 8;
|
||||
RC4Key[8] = Seed->ppk[2] & 0xff;
|
||||
RC4Key[9] = Seed->ppk[2] >> 8;
|
||||
RC4Key[10] = Seed->ppk[3] & 0xff;
|
||||
RC4Key[11] = Seed->ppk[3] >> 8;
|
||||
RC4Key[12] = Seed->ppk[4] & 0xff;
|
||||
RC4Key[13] = Seed->ppk[4] >> 8;
|
||||
RC4Key[14] = Seed->ppk[5] & 0xff;
|
||||
RC4Key[15] = Seed->ppk[5] >> 8;
|
||||
}
|
||||
|
||||
void zfCalTxMic(zdev_t *dev, zbuf_t *buf, u8_t *snap, u16_t snapLen, u16_t offset, u16_t *da, u16_t *sa, u8_t up, u8_t *mic)
|
||||
{
|
||||
struct zsMicVar* pMicKey;
|
||||
u16_t i;
|
||||
u16_t len;
|
||||
u8_t bValue;
|
||||
u8_t qosType;
|
||||
u8_t *pDa = (u8_t *)da;
|
||||
u8_t *pSa = (u8_t *)sa;
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
/* need not check MIC if pMicKEy is equal to NULL */
|
||||
if ( wd->wlanMode == ZM_MODE_AP )
|
||||
{
|
||||
pMicKey = zfApGetTxMicKey(dev, buf, &qosType);
|
||||
|
||||
if ( pMicKey == NULL )
|
||||
return;
|
||||
}
|
||||
else if ( wd->wlanMode == ZM_MODE_INFRASTRUCTURE )
|
||||
{
|
||||
pMicKey = zfStaGetTxMicKey(dev, buf);
|
||||
|
||||
if ( pMicKey == NULL )
|
||||
{
|
||||
zm_debug_msg0("pMicKey is NULL");
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
zfMicClear(pMicKey);
|
||||
len = zfwBufGetSize(dev, buf);
|
||||
|
||||
/* append DA */
|
||||
for(i = 0; i < 6; i++)
|
||||
{
|
||||
zfMicAppendByte(pDa[i], pMicKey);
|
||||
}
|
||||
|
||||
/* append SA */
|
||||
for(i = 0; i < 6; i++)
|
||||
{
|
||||
zfMicAppendByte(pSa[i], pMicKey);
|
||||
}
|
||||
|
||||
if (up != 0)
|
||||
zfMicAppendByte((up&0x7), pMicKey);
|
||||
else
|
||||
zfMicAppendByte(0, pMicKey);
|
||||
|
||||
zfMicAppendByte(0, pMicKey);
|
||||
zfMicAppendByte(0, pMicKey);
|
||||
zfMicAppendByte(0, pMicKey);
|
||||
|
||||
/* For Snap header */
|
||||
for(i = 0; i < snapLen; i++)
|
||||
{
|
||||
zfMicAppendByte(snap[i], pMicKey);
|
||||
}
|
||||
|
||||
for(i = offset; i < len; i++)
|
||||
{
|
||||
bValue = zmw_tx_buf_readb(dev, buf, i);
|
||||
zfMicAppendByte(bValue, pMicKey);
|
||||
}
|
||||
|
||||
zfMicGetMic(mic, pMicKey);
|
||||
}
|
||||
|
||||
void zfTKIPEncrypt(zdev_t *dev, zbuf_t *buf, u8_t *snap, u16_t snapLen, u16_t offset, u8_t keyLen, u8_t* key, u32_t* icv)
|
||||
{
|
||||
u8_t iv[3];
|
||||
|
||||
iv[0] = key[0];
|
||||
iv[1] = key[1];
|
||||
iv[2] = key[2];
|
||||
|
||||
keyLen -= 3;
|
||||
|
||||
zfWEPEncrypt(dev, buf, snap, snapLen, offset, keyLen, &key[3], iv);
|
||||
}
|
||||
|
||||
u16_t zfTKIPDecrypt(zdev_t *dev, zbuf_t *buf, u16_t offset, u8_t keyLen, u8_t* key)
|
||||
{
|
||||
u16_t ret = ZM_ICV_SUCCESS;
|
||||
u8_t iv[3];
|
||||
|
||||
iv[0] = key[0];
|
||||
iv[1] = key[1];
|
||||
iv[2] = key[2];
|
||||
|
||||
keyLen -= 3;
|
||||
|
||||
ret = zfWEPDecrypt(dev, buf, offset, keyLen, &key[3], iv);
|
||||
|
||||
return ret;
|
||||
}
|
4096
drivers/staging/otus/80211core/ctxrx.c
Normal file
4096
drivers/staging/otus/80211core/ctxrx.c
Normal file
File diff suppressed because it is too large
Load diff
299
drivers/staging/otus/80211core/cwep.c
Normal file
299
drivers/staging/otus/80211core/cwep.c
Normal file
|
@ -0,0 +1,299 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* */
|
||||
/* Module Name : cwep.c */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module contains Tx and Rx functions. */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* None */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
#include "cprecomp.h"
|
||||
|
||||
u32_t crc32_tab[] =
|
||||
{
|
||||
0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L,
|
||||
0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L,
|
||||
0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L,
|
||||
0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL,
|
||||
0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L,
|
||||
0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L,
|
||||
0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L,
|
||||
0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL,
|
||||
0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L,
|
||||
0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL,
|
||||
0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L,
|
||||
0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L,
|
||||
0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L,
|
||||
0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL,
|
||||
0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL,
|
||||
0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L,
|
||||
0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL,
|
||||
0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L,
|
||||
0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L,
|
||||
0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L,
|
||||
0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL,
|
||||
0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L,
|
||||
0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L,
|
||||
0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL,
|
||||
0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L,
|
||||
0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L,
|
||||
0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L,
|
||||
0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L,
|
||||
0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L,
|
||||
0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL,
|
||||
0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL,
|
||||
0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L,
|
||||
0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L,
|
||||
0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL,
|
||||
0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL,
|
||||
0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L,
|
||||
0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL,
|
||||
0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L,
|
||||
0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL,
|
||||
0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L,
|
||||
0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL,
|
||||
0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L,
|
||||
0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L,
|
||||
0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL,
|
||||
0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L,
|
||||
0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L,
|
||||
0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L,
|
||||
0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L,
|
||||
0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L,
|
||||
0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L,
|
||||
0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL,
|
||||
0x2d02ef8dL
|
||||
};
|
||||
|
||||
void zfWEPEncrypt(zdev_t *dev, zbuf_t *buf, u8_t *snap, u16_t snapLen, u16_t offset, u8_t keyLen, u8_t* WepKey, u8_t *iv)
|
||||
{
|
||||
u8_t S[256],S2[256];
|
||||
u16_t ui;
|
||||
u16_t i;
|
||||
u16_t j;
|
||||
u8_t temp;
|
||||
u8_t K;
|
||||
u32_t ltemp;
|
||||
u16_t len;
|
||||
u32_t icv;
|
||||
u8_t key[32];
|
||||
|
||||
key[0] = iv[0];
|
||||
key[1] = iv[1];
|
||||
key[2] = iv[2];
|
||||
|
||||
/* Append Wep Key after IV */
|
||||
zfMemoryCopy(&key[3], WepKey, keyLen);
|
||||
|
||||
keyLen += 3;
|
||||
|
||||
for(i = 0; i < 256; i++)
|
||||
{
|
||||
S[i] = (u8_t)i;
|
||||
S2[i] = key[i&(keyLen-1)];
|
||||
}
|
||||
|
||||
j = 0;
|
||||
for(i = 0; i < 256; i++)
|
||||
{
|
||||
j = (j + S[i] + S2[i]) ;
|
||||
j&=255 ;
|
||||
|
||||
// Swap S[i] and S[j]
|
||||
temp = S[i];
|
||||
S[i] = S[j];
|
||||
S[j] = temp;
|
||||
}
|
||||
|
||||
i = j = 0;
|
||||
icv = -1;
|
||||
|
||||
/* For Snap Header */
|
||||
for (ui = 0; ui < snapLen; ui++)
|
||||
{
|
||||
u8_t In;
|
||||
|
||||
i++;
|
||||
i &= 255;
|
||||
j += S[i];
|
||||
j &= 255;
|
||||
|
||||
// Swap S[i] and S[j]
|
||||
temp = S[i];
|
||||
S[i] = S[j];
|
||||
S[j] = temp;
|
||||
// temp = (S[i] + temp) & 255;
|
||||
temp += S[i];
|
||||
temp &=255;
|
||||
K = S[temp]; // Key used to Xor with input data
|
||||
|
||||
In = snap[ui];
|
||||
icv = (icv>>8) ^ crc32_tab[(icv^In)&0xff];
|
||||
|
||||
snap[ui] = In ^ K;
|
||||
//zmw_tx_buf_writeb(dev, buf, ui, In ^ K);
|
||||
}
|
||||
|
||||
len = zfwBufGetSize(dev, buf);
|
||||
|
||||
for (ui = offset; ui < len; ui++)
|
||||
{
|
||||
u8_t In;
|
||||
|
||||
i++;
|
||||
i &= 255;
|
||||
j += S[i];
|
||||
j &= 255;
|
||||
|
||||
// Swap S[i] and S[j]
|
||||
temp = S[i];
|
||||
S[i] = S[j];
|
||||
S[j] = temp;
|
||||
// temp = (S[i] + temp) & 255;
|
||||
temp += S[i];
|
||||
temp &=255;
|
||||
K = S[temp]; // Key used to Xor with input data
|
||||
|
||||
In = zmw_tx_buf_readb(dev, buf, ui);
|
||||
icv = (icv>>8) ^ crc32_tab[(icv^In)&0xff];
|
||||
|
||||
zmw_tx_buf_writeb(dev, buf, ui, In ^ K);
|
||||
} //End of for (ui = 0; ui < Num_Bytes; ui++)
|
||||
|
||||
icv = ~(icv);
|
||||
ltemp = (u32_t) icv;
|
||||
|
||||
for (ui = 0; ui < 4; ui++)
|
||||
{
|
||||
i ++;
|
||||
i &= 255;
|
||||
j += S[i];
|
||||
j &= 255;
|
||||
|
||||
// Swap S[i] and S[j]
|
||||
temp = S[i];
|
||||
S[i] = S[j];
|
||||
S[j] = temp;
|
||||
temp += S[i];
|
||||
temp &= 255;
|
||||
K = S[temp]; // Key used to Xor with input data
|
||||
|
||||
//*Out++ = (u8_t)(ltemp ^ K)&0xff;
|
||||
zmw_tx_buf_writeb(dev, buf, len+ui, (u8_t)(ltemp ^ K)&0xff);
|
||||
ltemp >>= 8;
|
||||
}
|
||||
|
||||
zfwBufSetSize(dev, buf, len+4);
|
||||
}
|
||||
|
||||
u16_t zfWEPDecrypt(zdev_t *dev, zbuf_t *buf, u16_t offset, u8_t keyLen, u8_t* WepKey, u8_t *iv)
|
||||
{
|
||||
u8_t S[256];
|
||||
u8_t S2[256];
|
||||
u16_t ui;
|
||||
u16_t i;
|
||||
u16_t j;
|
||||
u32_t icv_tmp;
|
||||
u32_t *icv;
|
||||
u32_t rxbuf_icv;
|
||||
u8_t temp;
|
||||
u8_t K;
|
||||
u16_t len;
|
||||
u8_t key[32];
|
||||
|
||||
/* Retrieve IV */
|
||||
key[0] = iv[0];
|
||||
key[1] = iv[1];
|
||||
key[2] = iv[2];
|
||||
|
||||
/* Append Wep Key after IV */
|
||||
zfMemoryCopy(&key[3], WepKey, keyLen);
|
||||
|
||||
keyLen += 3;
|
||||
|
||||
for(i = 0; i < 256; i++)
|
||||
{
|
||||
S[i] = (u8_t)i;
|
||||
S2[i] = key[i&(keyLen-1)];
|
||||
}
|
||||
|
||||
j = 0;
|
||||
for(i = 0; i < 256; i++)
|
||||
{
|
||||
j = (j + S[i] + S2[i]);
|
||||
j&=255 ;
|
||||
|
||||
// Swap S[i] and S[j]
|
||||
temp = S[i];
|
||||
S[i] = S[j];
|
||||
S[j] = temp;
|
||||
}
|
||||
|
||||
i = j = 0;
|
||||
|
||||
len = zfwBufGetSize(dev, buf);
|
||||
|
||||
for (ui = offset; ui < len; ui++)
|
||||
{
|
||||
u8_t In;
|
||||
|
||||
i++;
|
||||
i &= 255;
|
||||
j += S[i];
|
||||
j &= 255;
|
||||
|
||||
// Swap S[i] and S[j]
|
||||
temp = S[i];
|
||||
S[i] = S[j];
|
||||
S[j] = temp;
|
||||
// temp = (S[i] + temp) & 255;
|
||||
temp += S[i];
|
||||
temp &=255;
|
||||
K = S[temp]; // Key used to Xor with input data
|
||||
|
||||
In = zmw_rx_buf_readb(dev, buf, ui);
|
||||
|
||||
zmw_rx_buf_writeb(dev, buf, ui, In ^ K);
|
||||
} //End of for (ui = 0; ui < Num_Bytes; ui++)
|
||||
|
||||
icv = &icv_tmp;
|
||||
*icv = -1;
|
||||
|
||||
for (ui = offset; ui < len - 4; ui++)
|
||||
{
|
||||
u8_t In;
|
||||
|
||||
In = zmw_rx_buf_readb(dev, buf, ui);
|
||||
*icv = (*icv>>8) ^ crc32_tab[(*icv^In)&0xff];
|
||||
}
|
||||
|
||||
*icv = ~*icv;
|
||||
|
||||
rxbuf_icv = (zmw_rx_buf_readb(dev, buf, len-4) |
|
||||
zmw_rx_buf_readb(dev, buf, len-3) << 8 |
|
||||
zmw_rx_buf_readb(dev, buf, len-2) << 16 |
|
||||
zmw_rx_buf_readb(dev, buf, len-1) << 24);
|
||||
|
||||
if (*icv != rxbuf_icv)
|
||||
{
|
||||
return ZM_ICV_FAILURE;
|
||||
}
|
||||
|
||||
return ZM_ICV_SUCCESS;
|
||||
}
|
131
drivers/staging/otus/80211core/cwm.c
Normal file
131
drivers/staging/otus/80211core/cwm.c
Normal file
|
@ -0,0 +1,131 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* */
|
||||
/* Module Name : cwm.c */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module contains channel width related functions. */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* None */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#include "cprecomp.h"
|
||||
|
||||
|
||||
|
||||
void zfCwmInit(zdev_t* dev) {
|
||||
//u16_t i;
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
switch (wd->wlanMode) {
|
||||
case ZM_MODE_AP:
|
||||
wd->cwm.cw_mode = CWM_MODE2040;
|
||||
wd->cwm.cw_width = CWM_WIDTH40;
|
||||
wd->cwm.cw_enable = 1;
|
||||
break;
|
||||
case ZM_MODE_INFRASTRUCTURE:
|
||||
case ZM_MODE_PSEUDO:
|
||||
case ZM_MODE_IBSS:
|
||||
default:
|
||||
wd->cwm.cw_mode = CWM_MODE2040;
|
||||
wd->cwm.cw_width = CWM_WIDTH20;
|
||||
wd->cwm.cw_enable = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void zfCoreCwmBusy(zdev_t* dev, u16_t busy)
|
||||
{
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
zm_msg1_mm(ZM_LV_0, "CwmBusy=", busy);
|
||||
|
||||
if(wd->cwm.cw_mode == CWM_MODE20) {
|
||||
wd->cwm.cw_width = CWM_WIDTH20;
|
||||
return;
|
||||
}
|
||||
|
||||
if(wd->cwm.cw_mode == CWM_MODE40) {
|
||||
wd->cwm.cw_width = CWM_WIDTH40;
|
||||
return;
|
||||
}
|
||||
|
||||
if (busy) {
|
||||
wd->cwm.cw_width = CWM_WIDTH20;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if((wd->wlanMode == ZM_MODE_INFRASTRUCTURE || wd->wlanMode == ZM_MODE_PSEUDO ||
|
||||
wd->wlanMode == ZM_MODE_IBSS)) {
|
||||
if (wd->sta.ie.HtCap.HtCapInfo && HTCAP_SupChannelWidthSet != 0 &&
|
||||
wd->sta.ie.HtInfo.ChannelInfo && ExtHtCap_RecomTxWidthSet != 0 &&
|
||||
(wd->sta.ie.HtInfo.ChannelInfo && ExtHtCap_ExtChannelOffsetAbove) == 1) {
|
||||
|
||||
wd->cwm.cw_width = CWM_WIDTH40;
|
||||
}
|
||||
else {
|
||||
wd->cwm.cw_width = CWM_WIDTH20;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if(wd->wlanMode == ZM_MODE_AP) {
|
||||
wd->cwm.cw_width = CWM_WIDTH40;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
u16_t zfCwmIsExtChanBusy(u32_t ctlBusy, u32_t extBusy)
|
||||
{
|
||||
u32_t busy; /* percentage */
|
||||
u32_t cycleTime, ctlClear;
|
||||
|
||||
cycleTime = 1280000; //1.28 seconds
|
||||
|
||||
if (cycleTime > ctlBusy) {
|
||||
ctlClear = cycleTime - ctlBusy;
|
||||
}
|
||||
else
|
||||
{
|
||||
ctlClear = 0;
|
||||
}
|
||||
|
||||
/* Compute ratio of extension channel busy to control channel clear
|
||||
* as an approximation to extension channel cleanliness.
|
||||
*
|
||||
* According to the hardware folks, ext rxclear is undefined
|
||||
* if the ctrl rxclear is de-asserted (i.e. busy)
|
||||
*/
|
||||
if (ctlClear) {
|
||||
busy = (extBusy * 100) / ctlClear;
|
||||
} else {
|
||||
busy = 0;
|
||||
}
|
||||
if (busy > ATH_CWM_EXTCH_BUSY_THRESHOLD) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
45
drivers/staging/otus/80211core/cwm.h
Normal file
45
drivers/staging/otus/80211core/cwm.h
Normal file
|
@ -0,0 +1,45 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* */
|
||||
/* Module Name : cwm.h */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module contains channel width relatived functions. */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* None */
|
||||
/* */
|
||||
/****************************************************************************/
|
||||
/*Revision History: */
|
||||
/* Who When What */
|
||||
/* -------- -------- ----------------------------------------------*/
|
||||
/* */
|
||||
/* Honda 3-19-07 created */
|
||||
/* */
|
||||
/****************************************************************************/
|
||||
|
||||
#ifndef _CWM_H
|
||||
#define _CWM_H
|
||||
|
||||
#define ATH_CWM_EXTCH_BUSY_THRESHOLD 30 /* Extension Channel Busy Threshold (0-100%) */
|
||||
|
||||
void zfCwmInit(zdev_t* dev);
|
||||
void zfCoreCwmBusy(zdev_t* dev, u16_t busy);
|
||||
u16_t zfCwmIsExtChanBusy(u32_t ctlBusy, u32_t extBusy);
|
||||
|
||||
|
||||
|
||||
#endif /* #ifndef _CWM_H */
|
259
drivers/staging/otus/80211core/freqctrl.c
Normal file
259
drivers/staging/otus/80211core/freqctrl.c
Normal file
|
@ -0,0 +1,259 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "cprecomp.h"
|
||||
|
||||
/* zfAddFreqChangeReq should be called inside the critical section */
|
||||
static void zfAddFreqChangeReq(zdev_t* dev, u16_t frequency, u8_t bw40,
|
||||
u8_t extOffset, zfpFreqChangeCompleteCb cb)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
//printk("zfAddFreqChangeReq freqReqQueueTail%d\n", wd->freqCtrl.freqReqQueueTail);
|
||||
wd->freqCtrl.freqReqQueue[wd->freqCtrl.freqReqQueueTail] = frequency;
|
||||
wd->freqCtrl.freqReqBw40[wd->freqCtrl.freqReqQueueTail] = bw40;
|
||||
wd->freqCtrl.freqReqExtOffset[wd->freqCtrl.freqReqQueueTail] = extOffset;
|
||||
wd->freqCtrl.freqChangeCompCb[wd->freqCtrl.freqReqQueueTail] = cb;
|
||||
wd->freqCtrl.freqReqQueueTail++;
|
||||
if ( wd->freqCtrl.freqReqQueueTail >= ZM_MAX_FREQ_REQ_QUEUE )
|
||||
{
|
||||
wd->freqCtrl.freqReqQueueTail = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void zfCoreSetFrequencyV2(zdev_t* dev, u16_t frequency, zfpFreqChangeCompleteCb cb)
|
||||
{
|
||||
zfCoreSetFrequencyEx(dev, frequency, 0, 0, cb);
|
||||
}
|
||||
|
||||
void zfCoreSetFrequencyExV2(zdev_t* dev, u16_t frequency, u8_t bw40,
|
||||
u8_t extOffset, zfpFreqChangeCompleteCb cb, u8_t forceSetFreq)
|
||||
{
|
||||
u8_t setFreqImmed = 0;
|
||||
u8_t initRF = 0;
|
||||
zmw_get_wlan_dev(dev);
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
zm_msg1_scan(ZM_LV_1, "Freq=", frequency);
|
||||
|
||||
zmw_enter_critical_section(dev);
|
||||
if ((wd->sta.currentFrequency == frequency)
|
||||
&& (wd->sta.currentBw40 == bw40)
|
||||
&& (wd->sta.currentExtOffset == extOffset))
|
||||
{
|
||||
if ( forceSetFreq == 0 && wd->sta.flagFreqChanging == 0 )
|
||||
{
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
#ifdef ZM_FB50
|
||||
/*if(frequency!=2437) {
|
||||
zmw_leave_critical_section(dev);
|
||||
return;
|
||||
}*/
|
||||
#endif
|
||||
|
||||
zfAddFreqChangeReq(dev, frequency, bw40, extOffset, cb);
|
||||
|
||||
// zm_assert( wd->sta.flagFreqChanging == 0 );
|
||||
//wd->sta.flagFreqChanging = 1;
|
||||
if ( wd->sta.flagFreqChanging == 0 )
|
||||
{
|
||||
if ((wd->sta.currentBw40 != bw40) || (wd->sta.currentExtOffset != extOffset))
|
||||
{
|
||||
initRF = 1;
|
||||
}
|
||||
wd->sta.currentFrequency = frequency;
|
||||
wd->sta.currentBw40 = bw40;
|
||||
wd->sta.currentExtOffset = extOffset;
|
||||
setFreqImmed = 1;
|
||||
}
|
||||
wd->sta.flagFreqChanging++;
|
||||
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
if ( setFreqImmed )
|
||||
{
|
||||
//zfHpSetFrequency(dev, frequency, 0);
|
||||
if ( forceSetFreq )
|
||||
{ // Cold reset to reset the frequency after scanning !
|
||||
zm_debug_msg0("#6_1 20070917");
|
||||
zm_debug_msg0("It is happen!!! No error message");
|
||||
zfHpSetFrequencyEx(dev, frequency, bw40, extOffset, 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
zfHpSetFrequencyEx(dev, frequency, bw40, extOffset, initRF);
|
||||
}
|
||||
|
||||
if ( zfStaIsConnected(dev)
|
||||
&& (frequency == wd->frequency)) {
|
||||
wd->sta.connPowerInHalfDbm = zfHpGetTransmitPower(dev);
|
||||
}
|
||||
}
|
||||
return;
|
||||
|
||||
done:
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
if ( cb != NULL )
|
||||
{
|
||||
cb(dev);
|
||||
}
|
||||
zfPushVtxq(dev);
|
||||
return;
|
||||
}
|
||||
|
||||
void zfCoreSetFrequencyEx(zdev_t* dev, u16_t frequency, u8_t bw40,
|
||||
u8_t extOffset, zfpFreqChangeCompleteCb cb)
|
||||
{
|
||||
zfCoreSetFrequencyExV2(dev, frequency, bw40, extOffset, cb, 0);
|
||||
}
|
||||
|
||||
void zfCoreSetFrequency(zdev_t* dev, u16_t frequency)
|
||||
{
|
||||
zfCoreSetFrequencyV2(dev, frequency, NULL);
|
||||
}
|
||||
|
||||
/* zfRemoveFreqChangeReq SHOULD NOT be called inside the critical section */
|
||||
static void zfRemoveFreqChangeReq(zdev_t* dev)
|
||||
{
|
||||
zfpFreqChangeCompleteCb cb = NULL;
|
||||
u16_t frequency;
|
||||
u8_t bw40;
|
||||
u8_t extOffset;
|
||||
u16_t compFreq = 0;
|
||||
u8_t compBw40 = 0;
|
||||
u8_t compExtOffset = 0;
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
zmw_enter_critical_section(dev);
|
||||
|
||||
if (wd->freqCtrl.freqReqQueueHead != wd->freqCtrl.freqReqQueueTail)
|
||||
{
|
||||
zm_msg1_scan(ZM_LV_1, "Freq=",
|
||||
wd->freqCtrl.freqReqQueue[wd->freqCtrl.freqReqQueueHead]);
|
||||
compFreq = wd->freqCtrl.freqReqQueue[wd->freqCtrl.freqReqQueueHead];
|
||||
compBw40 = wd->freqCtrl.freqReqBw40[wd->freqCtrl.freqReqQueueHead];
|
||||
compExtOffset = wd->freqCtrl.freqReqExtOffset[wd->freqCtrl.freqReqQueueHead];
|
||||
|
||||
wd->freqCtrl.freqReqQueue[wd->freqCtrl.freqReqQueueHead] = 0;
|
||||
cb = wd->freqCtrl.freqChangeCompCb[wd->freqCtrl.freqReqQueueHead];
|
||||
wd->freqCtrl.freqReqQueueHead++;
|
||||
if ( wd->freqCtrl.freqReqQueueHead >= ZM_MAX_FREQ_REQ_QUEUE )
|
||||
{
|
||||
wd->freqCtrl.freqReqQueueHead = 0;
|
||||
}
|
||||
}
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
if ( cb != NULL )
|
||||
{
|
||||
cb(dev);
|
||||
}
|
||||
|
||||
zmw_enter_critical_section(dev);
|
||||
while (wd->freqCtrl.freqReqQueue[wd->freqCtrl.freqReqQueueHead] != 0)
|
||||
{
|
||||
frequency = wd->freqCtrl.freqReqQueue[wd->freqCtrl.freqReqQueueHead];
|
||||
bw40 = wd->freqCtrl.freqReqBw40[wd->freqCtrl.freqReqQueueHead];
|
||||
extOffset=wd->freqCtrl.freqReqExtOffset[wd->freqCtrl.freqReqQueueHead];
|
||||
if ((compFreq == frequency)
|
||||
&& (compBw40 == bw40)
|
||||
&& (compExtOffset == extOffset))
|
||||
{
|
||||
/* Duplicated frequency command */
|
||||
zm_msg1_scan(ZM_LV_1, "Duplicated Freq=", frequency);
|
||||
|
||||
cb = wd->freqCtrl.freqChangeCompCb[wd->freqCtrl.freqReqQueueHead];
|
||||
wd->freqCtrl.freqReqQueue[wd->freqCtrl.freqReqQueueHead] = 0;
|
||||
wd->freqCtrl.freqReqQueueHead++;
|
||||
|
||||
if ( wd->freqCtrl.freqReqQueueHead >= ZM_MAX_FREQ_REQ_QUEUE )
|
||||
{
|
||||
wd->freqCtrl.freqReqQueueHead = 0;
|
||||
}
|
||||
|
||||
if ( wd->sta.flagFreqChanging != 0 )
|
||||
{
|
||||
wd->sta.flagFreqChanging--;
|
||||
}
|
||||
|
||||
zmw_leave_critical_section(dev);
|
||||
if ( cb != NULL )
|
||||
{
|
||||
cb(dev);
|
||||
}
|
||||
zmw_enter_critical_section(dev);
|
||||
}
|
||||
else
|
||||
{
|
||||
u8_t initRF = 0;
|
||||
if ((wd->sta.currentBw40 != bw40) || (wd->sta.currentExtOffset != extOffset))
|
||||
{
|
||||
initRF = 1;
|
||||
}
|
||||
wd->sta.currentFrequency = frequency;
|
||||
wd->sta.currentBw40 = bw40;
|
||||
wd->sta.currentExtOffset = extOffset;
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
zfHpSetFrequencyEx(dev, frequency, bw40, extOffset, initRF);
|
||||
if ( zfStaIsConnected(dev)
|
||||
&& (frequency == wd->frequency)) {
|
||||
wd->sta.connPowerInHalfDbm = zfHpGetTransmitPower(dev);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void zfCoreSetFrequencyComplete(zdev_t* dev)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
zm_msg1_scan(ZM_LV_1, "flagFreqChanging=", wd->sta.flagFreqChanging);
|
||||
|
||||
zmw_enter_critical_section(dev);
|
||||
//wd->sta.flagFreqChanging = 0;
|
||||
if ( wd->sta.flagFreqChanging != 0 )
|
||||
{
|
||||
wd->sta.flagFreqChanging--;
|
||||
}
|
||||
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
zfRemoveFreqChangeReq(dev);
|
||||
|
||||
zfPushVtxq(dev);
|
||||
return;
|
||||
}
|
||||
|
||||
void zfReSetCurrentFrequency(zdev_t* dev)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
zm_debug_msg0("It is happen!!! No error message");
|
||||
|
||||
zfCoreSetFrequencyExV2(dev, wd->frequency, 0, 0, NULL, 1);
|
||||
}
|
557
drivers/staging/otus/80211core/ledmgr.c
Normal file
557
drivers/staging/otus/80211core/ledmgr.c
Normal file
|
@ -0,0 +1,557 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "cprecomp.h"
|
||||
|
||||
/************************************************************************/
|
||||
/* */
|
||||
/* FUNCTION DESCRIPTION zfLedCtrlType1 */
|
||||
/* Traditional single-LED state */
|
||||
/* */
|
||||
/* INPUTS */
|
||||
/* dev : device pointer */
|
||||
/* */
|
||||
/* OUTPUTS */
|
||||
/* None */
|
||||
/* */
|
||||
/* AUTHOR */
|
||||
/* Stephen Chen Atheros Communications, INC. 2007.6 */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
// bit 15-12 : Toff for Scan state
|
||||
// 11-8 : Ton for Scan state
|
||||
// 7 : Reserved
|
||||
// 6 : mode
|
||||
//--------------------------------------
|
||||
// bit 6 = 0
|
||||
// 5-4 : Connect state
|
||||
// 00 => always off
|
||||
// 01 => always on
|
||||
// 10 => Idle off, acitve on
|
||||
// 11 => Idle on, active off
|
||||
//--------------------------------------
|
||||
// bit 6 = 1
|
||||
// 5-4 : freq
|
||||
// 00 => 1Hz
|
||||
// 01 => 0.5Hz
|
||||
// 10 => 0.25Hz
|
||||
// 11 => 0.125Hz
|
||||
//--------------------------------------
|
||||
// 3 : Power save state
|
||||
// 0 => always off in power save state
|
||||
// 1 => works as connect state
|
||||
// 2 : Disable state
|
||||
// 1 : Reserved
|
||||
// 0 : Power-on state
|
||||
void zfLedCtrlType1(zdev_t* dev)
|
||||
{
|
||||
u16_t i;
|
||||
u32_t ton, toff, tmp, period;
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
for (i=0; i<ZM_MAX_LED_NUMBER; i++)
|
||||
{
|
||||
if (zfStaIsConnected(dev) != TRUE)
|
||||
{
|
||||
//Scan state
|
||||
ton = ((wd->ledStruct.ledMode[i] & 0xf00) >> 8) * 5;
|
||||
toff = ((wd->ledStruct.ledMode[i] & 0xf000) >> 12) * 5;
|
||||
|
||||
if ((ton + toff) != 0)
|
||||
{
|
||||
tmp = wd->ledStruct.counter / (ton+toff);
|
||||
tmp = wd->ledStruct.counter - (tmp * (ton+toff));
|
||||
if (tmp < ton)
|
||||
{
|
||||
zfHpLedCtrl(dev, i, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
zfHpLedCtrl(dev, i, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((zfPowerSavingMgrIsSleeping(dev)) && ((wd->ledStruct.ledMode[i] & 0x8) == 0))
|
||||
{
|
||||
zfHpLedCtrl(dev, i, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Connect state
|
||||
if ((wd->ledStruct.ledMode[i] & 0x40) == 0)
|
||||
{
|
||||
if ((wd->ledStruct.counter & 1) == 0)
|
||||
{
|
||||
zfHpLedCtrl(dev, i, (wd->ledStruct.ledMode[i] & 0x10) >> 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((wd->ledStruct.txTraffic > 0) || (wd->ledStruct.rxTraffic > 0))
|
||||
{
|
||||
wd->ledStruct.txTraffic = wd->ledStruct.rxTraffic = 0;
|
||||
if ((wd->ledStruct.ledMode[i] & 0x20) != 0)
|
||||
{
|
||||
zfHpLedCtrl(dev, i, ((wd->ledStruct.ledMode[i] & 0x10) >> 4)^1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}// if ((wd->ledStruct.ledMode[i] & 0x40) == 0)
|
||||
else
|
||||
{
|
||||
period = 5 * (1 << ((wd->ledStruct.ledMode[i] & 0x30) >> 4));
|
||||
tmp = wd->ledStruct.counter / (period*2);
|
||||
tmp = wd->ledStruct.counter - (tmp * (period*2));
|
||||
if (tmp < period)
|
||||
{
|
||||
if ((wd->ledStruct.counter & 1) == 0)
|
||||
{
|
||||
zfHpLedCtrl(dev, i, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((wd->ledStruct.txTraffic > 0) || (wd->ledStruct.rxTraffic > 0))
|
||||
{
|
||||
wd->ledStruct.txTraffic = wd->ledStruct.rxTraffic = 0;
|
||||
zfHpLedCtrl(dev, i, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((wd->ledStruct.counter & 1) == 0)
|
||||
{
|
||||
zfHpLedCtrl(dev, i, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((wd->ledStruct.txTraffic > 0) || (wd->ledStruct.rxTraffic > 0))
|
||||
{
|
||||
wd->ledStruct.txTraffic = wd->ledStruct.rxTraffic = 0;
|
||||
zfHpLedCtrl(dev, i, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
} //else, if ((wd->ledStruct.ledMode[i] & 0x40) == 0)
|
||||
} //else, if (zfPowerSavingMgrIsSleeping(dev))
|
||||
} //else : if (zfStaIsConnected(dev) != TRUE)
|
||||
} //for (i=0; i<ZM_MAX_LED_NUMBER; i++)
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
/* */
|
||||
/* FUNCTION DESCRIPTION zfLedCtrlType2 */
|
||||
/* Customize for Netgear Dual-LED state ((bug#31292)) */
|
||||
/* */
|
||||
/* 1. Status: When dongle does not connect to 2.4G or 5G but in site */
|
||||
/* survey/association */
|
||||
/* LED status: Slow blinking, Amber then Blue per 500ms */
|
||||
/* 2. Status: Connection at 2.4G in site survey/association */
|
||||
/* LED status: Slow blinking, Amber/off per 500ms */
|
||||
/* 3. Status: Connection at 5G in site survey/association */
|
||||
/* LED status: Slow blinking, Blue/off per 500ms */
|
||||
/* 4. Status: When transfer the packet */
|
||||
/* LED status: Blink per packet, including TX and RX */
|
||||
/* 5. Status: When linking is established but no traffic */
|
||||
/* LED status: Always on */
|
||||
/* 6. Status: When linking is dropped but no re-connection */
|
||||
/* LED status: Always off */
|
||||
/* 7. Status: From one connection(2.4G or 5G) to change to another band */
|
||||
/* LED status: Amber/Blue =>Slow blinking, Amber then Blue per 500ms */
|
||||
/* */
|
||||
/* INPUTS */
|
||||
/* dev : device pointer */
|
||||
/* */
|
||||
/* OUTPUTS */
|
||||
/* None */
|
||||
/* */
|
||||
/* AUTHOR */
|
||||
/* Shang-Chun Liu Atheros Communications, INC. 2007.11 */
|
||||
/* */
|
||||
/******************************************************************************/
|
||||
void zfLedCtrlType2_scan(zdev_t* dev);
|
||||
|
||||
void zfLedCtrlType2(zdev_t* dev)
|
||||
{
|
||||
u32_t ton, toff, tmp, period;
|
||||
u16_t OperateLED;
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
if (zfStaIsConnected(dev) != TRUE)
|
||||
{
|
||||
// Disconnect state
|
||||
if(wd->ledStruct.counter % 4 != 0)
|
||||
{
|
||||
// Update LED each 400ms(4*100)
|
||||
// Prevent this situation
|
||||
// _______ ___
|
||||
// LED[0] ON | | | x |
|
||||
// ------ OFF->+-+-+-+-+-+-+-+-+-+-+-+->>>...
|
||||
// LED[1] ON
|
||||
//
|
||||
return;
|
||||
}
|
||||
|
||||
if (((wd->state == ZM_WLAN_STATE_DISABLED) && (wd->sta.bChannelScan))
|
||||
|| ((wd->state != ZM_WLAN_STATE_DISABLED) && (wd->sta.bAutoReconnect)))
|
||||
{
|
||||
// Scan/AutoReconnect state
|
||||
zfLedCtrlType2_scan(dev);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Neither Connected nor Scan
|
||||
zfHpLedCtrl(dev, 0, 0);
|
||||
zfHpLedCtrl(dev, 1, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( wd->sta.bChannelScan )
|
||||
{
|
||||
// Scan state
|
||||
if(wd->ledStruct.counter % 4 != 0)
|
||||
return;
|
||||
zfLedCtrlType2_scan(dev);
|
||||
return;
|
||||
}
|
||||
|
||||
if(wd->frequency < 3000)
|
||||
{
|
||||
OperateLED = 0; // LED[0]: work on 2.4G (b/g band)
|
||||
zfHpLedCtrl(dev, 1, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
OperateLED = 1; // LED[1]: work on 5G (a band)
|
||||
zfHpLedCtrl(dev, 0, 0);
|
||||
}
|
||||
|
||||
if ((zfPowerSavingMgrIsSleeping(dev)) && ((wd->ledStruct.ledMode[OperateLED] & 0x8) == 0))
|
||||
{
|
||||
// If Sleeping, turn OFF
|
||||
zfHpLedCtrl(dev, OperateLED, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Connect state
|
||||
if ((wd->ledStruct.counter & 1) == 0) // even
|
||||
{
|
||||
// No traffic, always ON
|
||||
zfHpLedCtrl(dev, OperateLED, 1);
|
||||
}
|
||||
else // odd
|
||||
{
|
||||
if ((wd->ledStruct.txTraffic > 0) || (wd->ledStruct.rxTraffic > 0))
|
||||
{
|
||||
// If have traffic, turn OFF
|
||||
// _____ _ _ _ _____
|
||||
// LED[Operate] ON | | | | | | | |
|
||||
// ------------ OFF->-+-+-+-+-+-+-+-+-+-+-+-+-+->>>...
|
||||
//
|
||||
wd->ledStruct.txTraffic = wd->ledStruct.rxTraffic = 0;
|
||||
zfHpLedCtrl(dev, OperateLED, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void zfLedCtrlType2_scan(zdev_t* dev)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
// When doing scan, blink(Amber/Blue) and off per 500ms (about 400ms in our driver)
|
||||
// _______ _______
|
||||
// LED[0] ON | | 8 12 | |
|
||||
// ------ OFF->-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+->>>...
|
||||
// LED[1] ON 0 4 |_______| 0 3
|
||||
//
|
||||
|
||||
switch(wd->ledStruct.counter % 16)
|
||||
{
|
||||
case 0: // case 0~3, LED[0] on
|
||||
if(wd->supportMode & ZM_WIRELESS_MODE_24)
|
||||
{
|
||||
zfHpLedCtrl(dev, 0, 1);
|
||||
zfHpLedCtrl(dev, 1, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
zfHpLedCtrl(dev, 1, 1);
|
||||
zfHpLedCtrl(dev, 0, 0);
|
||||
}
|
||||
break;
|
||||
|
||||
case 8: // case 8~11, LED[1] on
|
||||
if(wd->supportMode & ZM_WIRELESS_MODE_5)
|
||||
{
|
||||
zfHpLedCtrl(dev, 1, 1);
|
||||
zfHpLedCtrl(dev, 0, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
zfHpLedCtrl(dev, 0, 1);
|
||||
zfHpLedCtrl(dev, 1, 0);
|
||||
}
|
||||
break;
|
||||
|
||||
default: // others, all off
|
||||
zfHpLedCtrl(dev, 0, 0);
|
||||
zfHpLedCtrl(dev, 1, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**********************************************************************************/
|
||||
/* */
|
||||
/* FUNCTION DESCRIPTION zfLedCtrlType3 */
|
||||
/* Customize for Netgear Single-LED state ((bug#32243)) */
|
||||
/* */
|
||||
/* ¡EOff: when the adapter is disabled or hasn't started to associate with AP */
|
||||
/* yet. */
|
||||
/* ¡EOn: Once adpater associate with AP successfully */
|
||||
/* ¡ESlow blinking: whenever adapters do site-survey or try to associate with AP */
|
||||
/* - If there is a connection already, and adapters do site-survey or */
|
||||
/* re-associate action, the LED should keep LED backgraoud as ON, thus */
|
||||
/* the blinking behavior SHOULD be OFF (200ms) - ON (800ms) and continue this*/
|
||||
/* cycle. */
|
||||
/* - If there is no connection yet, and adapters start to do site-survey or */
|
||||
/* associate action, the LED should keep LED background as OFF, thus the */
|
||||
/* blinking behavior SHOULD be ON (200ms) - OFF (800ms) and continue this */
|
||||
/* cycle. */
|
||||
/* - For the case that associate fail, adpater should keep associating, and the*/
|
||||
/* LED should also keep slow blinking. */
|
||||
/* ¡EQuick blinking: to blink OFF-ON cycle for each time that traffic packet is */
|
||||
/* received or is transmitted. */
|
||||
/* */
|
||||
/* INPUTS */
|
||||
/* dev : device pointer */
|
||||
/* */
|
||||
/* OUTPUTS */
|
||||
/* None */
|
||||
/* */
|
||||
/* AUTHOR */
|
||||
/* Shang-Chun Liu Atheros Communications, INC. 2008.01 */
|
||||
/* */
|
||||
/**********************************************************************************/
|
||||
void zfLedCtrlType3_scan(zdev_t* dev, u16_t isConnect);
|
||||
|
||||
void zfLedCtrlType3(zdev_t* dev)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
if (zfStaIsConnected(dev) != TRUE)
|
||||
{
|
||||
// Disconnect state
|
||||
if(wd->ledStruct.counter % 2 != 0)
|
||||
{
|
||||
// Update LED each 200ms(2*100)
|
||||
// Prevent this situation
|
||||
// ___ _
|
||||
// LED[0] ON | | |x|
|
||||
// ------ OFF->+-+-+-+-+-+-+->>>...
|
||||
//
|
||||
return;
|
||||
}
|
||||
|
||||
if (((wd->state == ZM_WLAN_STATE_DISABLED) && (wd->sta.bChannelScan))
|
||||
|| ((wd->state != ZM_WLAN_STATE_DISABLED) && (wd->sta.bAutoReconnect)))
|
||||
{
|
||||
// Scan/AutoReconnect state
|
||||
zfLedCtrlType3_scan(dev, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Neither Connected nor Scan
|
||||
zfHpLedCtrl(dev, 0, 0);
|
||||
zfHpLedCtrl(dev, 1, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( wd->sta.bChannelScan )
|
||||
{
|
||||
// Scan state
|
||||
if(wd->ledStruct.counter % 2 != 0)
|
||||
return;
|
||||
zfLedCtrlType3_scan(dev, 1);
|
||||
return;
|
||||
}
|
||||
|
||||
if ((zfPowerSavingMgrIsSleeping(dev)) && ((wd->ledStruct.ledMode[0] & 0x8) == 0))
|
||||
{
|
||||
// If Sleeping, turn OFF
|
||||
zfHpLedCtrl(dev, 0, 0);
|
||||
zfHpLedCtrl(dev, 1, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Connect state
|
||||
if ((wd->ledStruct.counter & 1) == 0) // even
|
||||
{
|
||||
// No traffic, always ON
|
||||
zfHpLedCtrl(dev, 0, 1);
|
||||
zfHpLedCtrl(dev, 1, 1);
|
||||
}
|
||||
else // odd
|
||||
{
|
||||
if ((wd->ledStruct.txTraffic > 0) || (wd->ledStruct.rxTraffic > 0))
|
||||
{
|
||||
// If have traffic, turn OFF
|
||||
// _____ _ _ _ _____
|
||||
// LED[Operate] ON | | | | | | | |
|
||||
// ------------ OFF->-+-+-+-+-+-+-+-+-+-+-+-+-+->>>...
|
||||
//
|
||||
wd->ledStruct.txTraffic = wd->ledStruct.rxTraffic = 0;
|
||||
zfHpLedCtrl(dev, 0, 0);
|
||||
zfHpLedCtrl(dev, 1, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void zfLedCtrlType3_scan(zdev_t* dev, u16_t isConnect)
|
||||
{
|
||||
u32_t ton, toff, tmp;
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
// Doing scan when :
|
||||
// 1. Disconnected: ON (200ms) - OFF (800ms) (200ms-600ms in our driver)
|
||||
// ___ ___ ___
|
||||
// LED[0] ON | | | | | |
|
||||
// ------ OFF->-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+->>>...
|
||||
// 0 2 4 6 8 10 12 14 16
|
||||
// 2. Connected: ON (800ms) - OFF (200ms) (600ms-200ms in our driver)
|
||||
// ___________ ___________ ______
|
||||
// LED[0] ON | | | | |
|
||||
// ------ OFF->-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+->>>...
|
||||
// 0 2 4 6 8 10 12 14 16
|
||||
|
||||
//Scan state
|
||||
if(!isConnect)
|
||||
ton = 2, toff = 6;
|
||||
else
|
||||
ton = 6, toff = 2;
|
||||
|
||||
if ((ton + toff) != 0)
|
||||
{
|
||||
tmp = wd->ledStruct.counter % (ton+toff);
|
||||
if (tmp < ton)
|
||||
{
|
||||
zfHpLedCtrl(dev, 0, 1);
|
||||
zfHpLedCtrl(dev, 1, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
zfHpLedCtrl(dev, 0, 0);
|
||||
zfHpLedCtrl(dev, 1, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
/* */
|
||||
/* FUNCTION DESCRIPTION zfLedCtrl_BlinkWhenScan_Alpha */
|
||||
/* Customize for Alpha/DLink LED */
|
||||
/* - Blink LED 12 times within 3 seconds when doing Active Scan */
|
||||
/* ___ ___ ___ ___ */
|
||||
/* LED[0] ON | | | | | | | | */
|
||||
/* -------OFF->-+-+-+-+-+-+-+-+-+-+-+-+-+--+-->>>... */
|
||||
/* */
|
||||
/* INPUTS */
|
||||
/* dev : device pointer */
|
||||
/* */
|
||||
/* OUTPUTS */
|
||||
/* None */
|
||||
/* */
|
||||
/* AUTHOR */
|
||||
/* Shang-Chun Liu Atheros Communications, INC. 2007.11 */
|
||||
/* */
|
||||
/******************************************************************************/
|
||||
void zfLedCtrl_BlinkWhenScan_Alpha(zdev_t* dev)
|
||||
{
|
||||
static u32_t counter = 0;
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
if(counter > 34) // counter for 3 sec
|
||||
{
|
||||
wd->ledStruct.LEDCtrlFlag &= ~(u8_t)ZM_LED_CTRL_FLAG_ALPHA;
|
||||
counter = 0;
|
||||
}
|
||||
|
||||
if( (counter % 3) < 2)
|
||||
zfHpLedCtrl(dev, 0, 1);
|
||||
else
|
||||
zfHpLedCtrl(dev, 0, 0);
|
||||
|
||||
counter++;
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************/
|
||||
/* */
|
||||
/* FUNCTION DESCRIPTION zfLed100msCtrl */
|
||||
/* LED 100 milliseconds timer. */
|
||||
/* */
|
||||
/* INPUTS */
|
||||
/* dev : device pointer */
|
||||
/* */
|
||||
/* OUTPUTS */
|
||||
/* None */
|
||||
/* */
|
||||
/* AUTHOR */
|
||||
/* Stephen Chen Atheros Communications, INC. 2007.6 */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
void zfLed100msCtrl(zdev_t* dev)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
wd->ledStruct.counter++;
|
||||
|
||||
if(wd->ledStruct.LEDCtrlFlag)
|
||||
{
|
||||
switch(wd->ledStruct.LEDCtrlFlag) {
|
||||
case ZM_LED_CTRL_FLAG_ALPHA:
|
||||
zfLedCtrl_BlinkWhenScan_Alpha(dev);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch(wd->ledStruct.LEDCtrlType) {
|
||||
case 1: // Traditional 1 LED
|
||||
zfLedCtrlType1(dev);
|
||||
break;
|
||||
|
||||
case 2: // Dual-LEDs for Netgear
|
||||
zfLedCtrlType2(dev);
|
||||
break;
|
||||
|
||||
case 3: // Single-LED for Netgear (WN111v2)
|
||||
zfLedCtrlType3(dev);
|
||||
break;
|
||||
|
||||
default:
|
||||
zfLedCtrlType1(dev);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
431
drivers/staging/otus/80211core/performance.c
Normal file
431
drivers/staging/otus/80211core/performance.c
Normal file
|
@ -0,0 +1,431 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* */
|
||||
/* Module Name : performance.c */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module performance evaluation functions. */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* None */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
#include "cprecomp.h"
|
||||
#ifdef ZM_ENABLE_PERFORMANCE_EVALUATION
|
||||
|
||||
#define ZM_TP_SIZE 50
|
||||
struct zsSummary zm_summary;
|
||||
struct zsVariation zm_var;
|
||||
struct zsThroughput zm_tp;
|
||||
|
||||
void zfiPerformanceInit(zdev_t* dev)
|
||||
{
|
||||
u16_t i;
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
zm_summary.tick_base = wd->tick;
|
||||
zm_summary.tx_msdu_count = 0;
|
||||
zm_summary.tx_mpdu_count = 0;
|
||||
zm_summary.rx_msdu_count = 0;
|
||||
zm_summary.rx_mpdu_count = 0;
|
||||
zm_summary.rx_broken_seq = 0;
|
||||
zm_summary.rx_broken_sum = 0;
|
||||
zm_summary.rx_seq_base = 0;
|
||||
zm_summary.rx_broken_seq_dis = 0;
|
||||
zm_summary.rx_duplicate_seq = 0;
|
||||
zm_summary.rx_old_seq = 0;
|
||||
zm_summary.reset_count = 0;
|
||||
zm_summary.reset_sum = 0;
|
||||
zm_summary.rx_lost_sum = 0;
|
||||
zm_summary.rx_duplicate_error = 0;
|
||||
zm_summary.rx_free = 0;
|
||||
zm_summary.rx_amsdu_len = 0;
|
||||
zm_summary.rx_flush = 0;
|
||||
zm_summary.rx_clear = 0;
|
||||
zm_summary.rx_reorder = 0;
|
||||
|
||||
for (i=0; i<100; i++)
|
||||
{
|
||||
zm_var.tx_msdu_tick[i] = zm_var.tx_mpdu_tick[i] = 0;
|
||||
zm_var.rx_msdu_tick[i] = zm_var.rx_mpdu_tick[i] = 0;
|
||||
}
|
||||
|
||||
zfTimerSchedule(dev, ZM_EVENT_TIMEOUT_PERFORMANCE, 100);
|
||||
|
||||
zm_tp.size = ZM_TP_SIZE;
|
||||
zm_tp.head = zm_tp.size - 1;
|
||||
zm_tp.tail = 0;
|
||||
for (i=0; i<zm_tp.size; i++)
|
||||
{
|
||||
zm_tp.tx[i]=0;
|
||||
zm_tp.rx[i]=0;
|
||||
}
|
||||
}
|
||||
|
||||
void zfiPerformanceGraph(zdev_t* dev)
|
||||
{
|
||||
s16_t i,j;
|
||||
u8_t s[ZM_TP_SIZE+5];
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
for (i=0; i<(zm_tp.size-1); i++)
|
||||
{
|
||||
zm_tp.tx[i] = zm_tp.tx[i+1];
|
||||
zm_tp.rx[i] = zm_tp.rx[i+1];
|
||||
}
|
||||
zm_tp.tx[zm_tp.size-1] = zm_summary.tx_mpdu_count*1500*8/1000000;
|
||||
zm_tp.rx[zm_tp.size-1] = zm_summary.rx_msdu_count*1500*8/1000000;
|
||||
|
||||
for (i=15; i>0; i--)
|
||||
{
|
||||
s[0] = (i/10) + '0';
|
||||
s[1] = (i%10) + '0';
|
||||
s[2] = '0';
|
||||
s[3] = '|';
|
||||
for (j=0; j<zm_tp.size; j++)
|
||||
{
|
||||
if ((zm_tp.tx[j]/10 == i) && (zm_tp.rx[j]/10 == i))
|
||||
{
|
||||
s[4+j] = 'X';
|
||||
}
|
||||
else if (zm_tp.tx[j]/10 == i)
|
||||
{
|
||||
s[4+j] = 'T';
|
||||
}
|
||||
else if (zm_tp.rx[j]/10 == i)
|
||||
{
|
||||
s[4+j] = 'R';
|
||||
}
|
||||
else
|
||||
{
|
||||
s[4+j] = ' ';
|
||||
}
|
||||
}
|
||||
s[zm_tp.size+4] = '\0';
|
||||
DbgPrint("%s",s);
|
||||
}
|
||||
DbgPrint("000|__________________________________________________");
|
||||
|
||||
}
|
||||
|
||||
|
||||
void zfiPerformanceRefresh(zdev_t* dev)
|
||||
{
|
||||
u16_t i;
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
zfiDbgReadReg(dev, 0x11772c);
|
||||
|
||||
zm_var.tx_msdu_mean = zm_summary.tx_msdu_count / 100;
|
||||
zm_var.tx_mpdu_mean = zm_summary.tx_mpdu_count / 100;
|
||||
zm_var.rx_msdu_mean = zm_summary.rx_msdu_count / 100;
|
||||
zm_var.rx_mpdu_mean = zm_summary.rx_mpdu_count / 100;
|
||||
|
||||
zm_var.tx_msdu_sum = zm_var.tx_mpdu_sum = 0;
|
||||
zm_var.rx_msdu_sum = zm_var.rx_mpdu_sum = 0;
|
||||
zm_summary.tx_idle_count = zm_summary.rx_idle_count = 0;
|
||||
for (i=0; i<100; i++)
|
||||
{
|
||||
zm_var.tx_msdu_sum += (zm_var.tx_msdu_tick[i] * zm_var.tx_msdu_tick[i]);
|
||||
zm_var.tx_mpdu_sum += (zm_var.tx_mpdu_tick[i] * zm_var.tx_mpdu_tick[i]);
|
||||
zm_var.rx_msdu_sum += (zm_var.rx_msdu_tick[i] * zm_var.rx_msdu_tick[i]);
|
||||
zm_var.rx_mpdu_sum += (zm_var.rx_mpdu_tick[i] * zm_var.rx_mpdu_tick[i]);
|
||||
|
||||
if (!zm_var.tx_mpdu_tick[i]) zm_summary.tx_idle_count++;
|
||||
if (!zm_var.rx_mpdu_tick[i]) zm_summary.rx_idle_count++;
|
||||
}
|
||||
zm_var.tx_msdu_var = (zm_var.tx_msdu_sum / 100) - (zm_var.tx_msdu_mean * zm_var.tx_msdu_mean);
|
||||
zm_var.tx_mpdu_var = (zm_var.tx_mpdu_sum / 100) - (zm_var.tx_mpdu_mean * zm_var.tx_mpdu_mean);
|
||||
zm_var.rx_msdu_var = (zm_var.rx_msdu_sum / 100) - (zm_var.rx_msdu_mean * zm_var.rx_msdu_mean);
|
||||
zm_var.rx_mpdu_var = (zm_var.rx_mpdu_sum / 100) - (zm_var.rx_mpdu_mean * zm_var.rx_mpdu_mean);
|
||||
|
||||
zm_summary.tick_base = wd->tick;
|
||||
zm_summary.rx_broken_sum += zm_summary.rx_broken_seq;
|
||||
zm_summary.rx_lost_sum += (zm_summary.rx_broken_seq - zm_summary.rx_duplicate_seq - zm_summary.rx_old_seq);
|
||||
|
||||
zfiPerformanceGraph(dev);
|
||||
|
||||
DbgPrint("******************************************************\n");
|
||||
DbgPrint("* TX: MSDU=%5d, VAR=%5d; MPDU=%5d, VAR=%5d\n", zm_summary.tx_msdu_count,
|
||||
zm_var.tx_msdu_var, zm_summary.tx_mpdu_count, zm_var.tx_mpdu_var);
|
||||
DbgPrint("* TX: idle=%5d,TxRate=%3d, PER=%5d\n", zm_summary.tx_idle_count,
|
||||
wd->CurrentTxRateKbps/1000,
|
||||
(u16_t)wd->PER[wd->sta.oppositeInfo[0].rcCell.currentRate]);
|
||||
DbgPrint("* RX: MSDU=%5d, VAR=%5d; MPDU=%5d, VAR=%5d\n", zm_summary.rx_msdu_count,
|
||||
zm_var.rx_msdu_var, zm_summary.rx_mpdu_count, zm_var.rx_mpdu_var);
|
||||
DbgPrint("* RX: idle=%5d,RxRate=%3d,AMSDU=%5d\n", zm_summary.rx_idle_count,
|
||||
wd->CurrentRxRateKbps/1000, zm_summary.rx_amsdu_len);
|
||||
DbgPrint("* RX broken seq=%4d, distances=%4d, duplicates=%4d\n", zm_summary.rx_broken_seq,
|
||||
zm_summary.rx_broken_seq_dis, zm_summary.rx_duplicate_seq);
|
||||
DbgPrint("* RX old seq=%4d, lost=%4d, broken sum=%4d\n", zm_summary.rx_old_seq,
|
||||
(zm_summary.rx_broken_seq - zm_summary.rx_duplicate_seq - zm_summary.rx_old_seq),
|
||||
zm_summary.rx_broken_sum);
|
||||
DbgPrint("* Rx lost sum=%4d,dup. error=%4d, free count=%4d\n", zm_summary.rx_lost_sum,
|
||||
zm_summary.rx_duplicate_error, zm_summary.rx_free);
|
||||
DbgPrint("* Rx flush sum=%4d, clear sum=%4d, reorder=%7d\n", zm_summary.rx_flush,
|
||||
zm_summary.rx_clear, zm_summary.rx_reorder);
|
||||
DbgPrint("* Firmware reset=%3d, reset sum=%4d\n", zm_summary.reset_count,
|
||||
zm_summary.reset_sum);
|
||||
DbgPrint("******************************************************\n\n");
|
||||
//reset count 11772c
|
||||
zm_summary.tx_msdu_count = 0;
|
||||
zm_summary.tx_mpdu_count = 0;
|
||||
zm_summary.rx_msdu_count = 0;
|
||||
zm_summary.rx_mpdu_count = 0;
|
||||
zm_summary.rx_broken_seq = 0;
|
||||
zm_summary.rx_broken_seq_dis = 0;
|
||||
zm_summary.rx_duplicate_seq = 0;
|
||||
zm_summary.rx_old_seq = 0;
|
||||
zm_summary.reset_count = 0;
|
||||
zm_summary.rx_amsdu_len = 0;
|
||||
|
||||
for (i=0; i<100; i++)
|
||||
{
|
||||
zm_var.tx_msdu_tick[i] = zm_var.tx_mpdu_tick[i] = 0;
|
||||
zm_var.rx_msdu_tick[i] = zm_var.rx_mpdu_tick[i] = 0;
|
||||
}
|
||||
|
||||
zfTimerSchedule(dev, ZM_EVENT_TIMEOUT_PERFORMANCE, 100);
|
||||
}
|
||||
|
||||
void zfiTxPerformanceMSDU(zdev_t* dev, u32_t tick)
|
||||
{
|
||||
u32_t index;
|
||||
zm_summary.tx_msdu_count++;
|
||||
|
||||
index = tick - zm_summary.tick_base;
|
||||
|
||||
if (index < 100)
|
||||
{
|
||||
zm_var.tx_msdu_tick[index]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
//DbgPrint("wd->tick exceeded tick_base+100!\n");
|
||||
}
|
||||
}
|
||||
|
||||
void zfiRxPerformanceMSDU(zdev_t* dev, u32_t tick)
|
||||
{
|
||||
u32_t index;
|
||||
zm_summary.rx_msdu_count++;
|
||||
|
||||
index = tick - zm_summary.tick_base;
|
||||
|
||||
if (index < 100)
|
||||
{
|
||||
zm_var.rx_msdu_tick[index]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
//DbgPrint("wd->tick exceeded tick_base+100!\n");
|
||||
}
|
||||
}
|
||||
|
||||
void zfiTxPerformanceMPDU(zdev_t* dev, u32_t tick)
|
||||
{
|
||||
u32_t index;
|
||||
zm_summary.tx_mpdu_count++;
|
||||
|
||||
index = tick - zm_summary.tick_base;
|
||||
|
||||
if (index < 100)
|
||||
{
|
||||
zm_var.tx_mpdu_tick[index]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
//DbgPrint("wd->tick exceeded tick_base+100!\n");
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef ZM_INT_USE_EP2_HEADER_SIZE
|
||||
#define ZM_INT_USE_EP2_HEADER_SIZE 12
|
||||
#endif
|
||||
void zfiRxPerformanceMPDU(zdev_t* dev, zbuf_t* buf)
|
||||
{
|
||||
u32_t index;
|
||||
u16_t frameType;
|
||||
u16_t frameCtrl;
|
||||
u8_t mpduInd;
|
||||
u16_t plcpHdrLen;
|
||||
u16_t len;
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
len = zfwBufGetSize(dev, buf);
|
||||
mpduInd = zmw_rx_buf_readb(dev, buf, len-1);
|
||||
/* First MPDU or Single MPDU */
|
||||
if(((mpduInd & 0x30) == 0x00) || ((mpduInd & 0x30) == 0x20))
|
||||
//if ((mpduInd & 0x10) == 0x00)
|
||||
{
|
||||
plcpHdrLen = 12; // PLCP header length
|
||||
}
|
||||
else
|
||||
{
|
||||
if (zmw_rx_buf_readh(dev, buf, 4) == wd->macAddr[0] &&
|
||||
zmw_rx_buf_readh(dev, buf, 6) == wd->macAddr[1] &&
|
||||
zmw_rx_buf_readh(dev, buf, 8) == wd->macAddr[2]) {
|
||||
plcpHdrLen = 0;
|
||||
}
|
||||
else if (zmw_rx_buf_readh(dev, buf, 16) == wd->macAddr[0] &&
|
||||
zmw_rx_buf_readh(dev, buf, 18) == wd->macAddr[1] &&
|
||||
zmw_rx_buf_readh(dev, buf, 20) == wd->macAddr[2]){
|
||||
plcpHdrLen = 12;
|
||||
}
|
||||
else {
|
||||
plcpHdrLen = 0;
|
||||
}
|
||||
}
|
||||
|
||||
frameCtrl = zmw_rx_buf_readb(dev, buf, plcpHdrLen + 0);
|
||||
frameType = frameCtrl & 0xf;
|
||||
|
||||
if (frameType != ZM_WLAN_DATA_FRAME)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
zm_summary.rx_mpdu_count++;
|
||||
|
||||
index = wd->tick - zm_summary.tick_base;
|
||||
|
||||
if (index < 100)
|
||||
{
|
||||
zm_var.rx_mpdu_tick[index]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
//DbgPrint("wd->tick exceeded tick_base+100!\n");
|
||||
}
|
||||
}
|
||||
|
||||
void zfiRxPerformanceSeq(zdev_t* dev, zbuf_t* buf)
|
||||
{
|
||||
u16_t seq_no;
|
||||
u16_t offset = 0;
|
||||
u16_t old_dis = zm_summary.rx_broken_seq_dis;
|
||||
//sys_time = KeQueryPerformanceCounter(&freq);
|
||||
|
||||
seq_no = zmw_rx_buf_readh(dev, buf, offset+22) >> 4;
|
||||
|
||||
ZM_SEQ_DEBUG("Out %5d\n", seq_no);
|
||||
|
||||
if (seq_no < zm_summary.rx_seq_base)
|
||||
{
|
||||
if (seq_no == 0)
|
||||
{
|
||||
if (zm_summary.rx_seq_base != 4095)
|
||||
{
|
||||
zm_summary.rx_broken_seq++;
|
||||
ZM_SEQ_DEBUG("Broken seq");
|
||||
zm_summary.rx_broken_seq_dis+=(4096 - zm_summary.rx_seq_base);
|
||||
}
|
||||
}
|
||||
else if ((seq_no < 300) && (zm_summary.rx_seq_base > 3800))
|
||||
{
|
||||
zm_summary.rx_broken_seq++;
|
||||
ZM_SEQ_DEBUG("Broken seq");
|
||||
zm_summary.rx_broken_seq_dis+=(4096 - zm_summary.rx_seq_base + seq_no);
|
||||
}
|
||||
else
|
||||
{
|
||||
zm_summary.rx_broken_seq++;
|
||||
ZM_SEQ_DEBUG("Broken seq");
|
||||
zm_summary.rx_broken_seq_dis+=(zm_summary.rx_seq_base - seq_no);
|
||||
zm_summary.rx_old_seq++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (seq_no != (zm_summary.rx_seq_base + 1))
|
||||
{
|
||||
if ((seq_no > 3800) && (zm_summary.rx_seq_base < 300))
|
||||
{
|
||||
zm_summary.rx_broken_seq++;
|
||||
ZM_SEQ_DEBUG("Broken seq");
|
||||
zm_summary.rx_broken_seq_dis+=(4096 - seq_no + zm_summary.rx_seq_base);
|
||||
zm_summary.rx_old_seq++;
|
||||
}
|
||||
else
|
||||
{
|
||||
zm_summary.rx_broken_seq++;
|
||||
ZM_SEQ_DEBUG("Broken seq");
|
||||
zm_summary.rx_broken_seq_dis+=(seq_no - zm_summary.rx_seq_base);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (seq_no == zm_summary.rx_seq_base)
|
||||
{
|
||||
zm_summary.rx_duplicate_seq++;
|
||||
}
|
||||
|
||||
if ((zm_summary.rx_broken_seq_dis - old_dis) > 100)
|
||||
{
|
||||
DbgPrint("* seq_no=%4d, base_seq=%4d, dis_diff=%4d", seq_no,
|
||||
zm_summary.rx_seq_base, zm_summary.rx_broken_seq_dis - old_dis);
|
||||
}
|
||||
zm_summary.rx_seq_base = seq_no;
|
||||
}
|
||||
|
||||
void zfiRxPerformanceReg(zdev_t* dev, u32_t reg, u32_t rsp)
|
||||
{
|
||||
zm_summary.reset_count = (u16_t)rsp - zm_summary.reset_sum;
|
||||
zm_summary.reset_sum = (u16_t)rsp;
|
||||
}
|
||||
|
||||
void zfiRxPerformanceDup(zdev_t* dev, zbuf_t* buf1, zbuf_t* buf2)
|
||||
{
|
||||
u16_t seq_no1, seq_no2;
|
||||
|
||||
seq_no1 = zmw_rx_buf_readh(dev, buf1, 22) >> 4;
|
||||
seq_no2 = zmw_rx_buf_readh(dev, buf2, 22) >> 4;
|
||||
if (seq_no1 != seq_no2)
|
||||
{
|
||||
zm_summary.rx_duplicate_error++;
|
||||
}
|
||||
}
|
||||
|
||||
void zfiRxPerformanceFree(zdev_t* dev, zbuf_t* buf)
|
||||
{
|
||||
zm_summary.rx_free++;
|
||||
}
|
||||
|
||||
void zfiRxPerformanceAMSDU(zdev_t* dev, zbuf_t* buf, u16_t len)
|
||||
{
|
||||
if (zm_summary.rx_amsdu_len < len)
|
||||
{
|
||||
zm_summary.rx_amsdu_len = len;
|
||||
}
|
||||
}
|
||||
void zfiRxPerformanceFlush(zdev_t* dev)
|
||||
{
|
||||
zm_summary.rx_flush++;
|
||||
}
|
||||
|
||||
void zfiRxPerformanceClear(zdev_t* dev)
|
||||
{
|
||||
zm_summary.rx_clear++;
|
||||
ZM_SEQ_DEBUG("RxClear");
|
||||
}
|
||||
|
||||
void zfiRxPerformanceReorder(zdev_t* dev)
|
||||
{
|
||||
zm_summary.rx_reorder++;
|
||||
}
|
||||
#endif /* end of ZM_ENABLE_PERFORMANCE_EVALUATION */
|
97
drivers/staging/otus/80211core/performance.h
Normal file
97
drivers/staging/otus/80211core/performance.h
Normal file
|
@ -0,0 +1,97 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
#ifndef _PERFORMANCE_H
|
||||
#define _PERFORMANCE_H
|
||||
|
||||
#ifdef ZM_ENABLE_PERFORMANCE_EVALUATION
|
||||
|
||||
struct zsSummary
|
||||
{
|
||||
u32_t tx_msdu_count;
|
||||
u32_t tx_mpdu_count;
|
||||
u32_t rx_msdu_count;
|
||||
u32_t rx_mpdu_count;
|
||||
u32_t tick_base;
|
||||
u16_t rx_seq_base;
|
||||
u16_t rx_broken_seq;
|
||||
u16_t rx_broken_sum;
|
||||
u16_t rx_broken_seq_dis;
|
||||
u16_t rx_duplicate_seq;
|
||||
u16_t rx_duplicate_error;
|
||||
u16_t rx_old_seq;
|
||||
u16_t rx_lost_sum;
|
||||
u16_t tx_idle_count;
|
||||
u16_t rx_idle_count;
|
||||
u16_t reset_count;
|
||||
u16_t reset_sum;
|
||||
u16_t rx_free;
|
||||
u16_t rx_amsdu_len;
|
||||
u16_t rx_flush;
|
||||
u16_t rx_clear;
|
||||
u32_t rx_reorder;
|
||||
};
|
||||
|
||||
struct zsVariation
|
||||
{
|
||||
u32_t tx_msdu_tick[100];
|
||||
u32_t tx_mpdu_tick[100];
|
||||
u32_t rx_msdu_tick[100];
|
||||
u32_t rx_mpdu_tick[100];
|
||||
|
||||
u32_t tx_msdu_mean;
|
||||
u32_t tx_mpdu_mean;
|
||||
u32_t rx_msdu_mean;
|
||||
u32_t rx_mpdu_mean;
|
||||
|
||||
u32_t tx_msdu_sum;
|
||||
u32_t tx_mpdu_sum;
|
||||
u32_t rx_msdu_sum;
|
||||
u32_t rx_mpdu_sum;
|
||||
|
||||
u32_t tx_msdu_var;
|
||||
u32_t tx_mpdu_var;
|
||||
u32_t rx_msdu_var;
|
||||
u32_t rx_mpdu_var;
|
||||
};
|
||||
|
||||
struct zsThroughput
|
||||
{
|
||||
u32_t tx[50];
|
||||
u32_t rx[50];
|
||||
u16_t head;
|
||||
u16_t tail;
|
||||
u16_t size;
|
||||
LARGE_INTEGER sys_time;
|
||||
LARGE_INTEGER freq;
|
||||
};
|
||||
|
||||
void zfiPerformanceInit(zdev_t* dev);
|
||||
void zfiPerformanceRefresh(zdev_t* dev);
|
||||
|
||||
void zfiTxPerformanceMSDU(zdev_t* dev, u32_t tick);
|
||||
void zfiRxPerformanceMSDU(zdev_t* dev, u32_t tick);
|
||||
void zfiTxPerformanceMPDU(zdev_t* dev, u32_t tick);
|
||||
void zfiRxPerformanceMPDU(zdev_t* dev, zbuf_t* buf);
|
||||
void zfiRxPerformanceSeq(zdev_t* dev, zbuf_t* buf);
|
||||
void zfiRxPerformanceReg(zdev_t* dev, u32_t reg, u32_t rsp);
|
||||
void zfiRxPerformanceDup(zdev_t* dev, zbuf_t* buf1, zbuf_t* buf2);
|
||||
void zfiRxPerformanceFree(zdev_t* dev, zbuf_t* buf);
|
||||
void zfiRxPerformanceAMSDU(zdev_t* dev, zbuf_t* buf, u16_t len);
|
||||
void zfiRxPerformanceFlush(zdev_t* dev);
|
||||
void zfiRxPerformanceClear(zdev_t* dev);
|
||||
void zfiRxPerformanceReorder(zdev_t* dev);
|
||||
#endif /* end of ZM_ENABLE_PERFORMANCE_EVALUATION */
|
||||
#endif /* end of _PERFORMANCE_H */
|
102
drivers/staging/otus/80211core/pub_usb.h
Normal file
102
drivers/staging/otus/80211core/pub_usb.h
Normal file
|
@ -0,0 +1,102 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef _PUB_USB_H
|
||||
#define _PUB_USB_H
|
||||
|
||||
#include "../oal_dt.h"
|
||||
|
||||
#define ZM_HAL_80211_MODE_AP 0
|
||||
#define ZM_HAL_80211_MODE_STA 1
|
||||
#define ZM_HAL_80211_MODE_IBSS_GENERAL 2
|
||||
#define ZM_HAL_80211_MODE_IBSS_WPA2PSK 3
|
||||
|
||||
/* USB module description */
|
||||
/* Queue Management */
|
||||
/* 80211core requires OAL to implement a transmission queue in OAL's */
|
||||
/* USB module. Because there is only limited on-chip memory, so USB */
|
||||
/* data transfer may be pending until on-chip memory is available. */
|
||||
/* 80211core also requires OAL's USB module to provide two functions */
|
||||
/* zfwUsbGetFreeTxQSize() and zfwUsbGetMaxTxQSize() for 80211core to */
|
||||
/* query the status of this transmission queue. The main purpose of */
|
||||
/* this queue is for QoS/WMM. Though there are hardware priority */
|
||||
/* queues on the chip, and also software priority queues in the */
|
||||
/* 80211core. There is still one and only one USB channel. So */
|
||||
/* 80211core will use the information that zfwUsbGetFreeTxQSize() */
|
||||
/* returned to schedule the traffic from the software priority */
|
||||
/* queues to the hardware priority queues. For example, if 80211core */
|
||||
/* found that USB transmission queue is going to be full, it will */
|
||||
/* not allow packets with lower priority to enter the USB channel. */
|
||||
|
||||
|
||||
/* Structure for USB call back functions */
|
||||
struct zfCbUsbFuncTbl {
|
||||
void (*zfcbUsbRecv)(zdev_t *dev, zbuf_t *buf);
|
||||
void (*zfcbUsbRegIn)(zdev_t* dev, u32_t* rsp, u16_t rspLen);
|
||||
void (*zfcbUsbOutComplete)(zdev_t* dev, zbuf_t *buf, u8_t status, u8_t *hdr);
|
||||
void (*zfcbUsbRegOutComplete)(zdev_t* dev);
|
||||
};
|
||||
|
||||
/* Call back functions */
|
||||
/* Below are the functions that should be called by the OAL */
|
||||
|
||||
/* When data is available in endpoint 3, OAL shall embed the data in */
|
||||
/* zbuf_t and supply to 80211core by calling this function */
|
||||
/* void (*zfcbUsbRecv)(zdev_t *dev, zbuf_t *buf); */
|
||||
|
||||
/* When data is available in endpoint 2, OAL shall call this function */
|
||||
/* void (*zfcbUsbRegIn)(zdev_t* dev, u32_t* rsp, u16_t rspLen); */
|
||||
|
||||
/* When USB data transfer completed in endpoint 1, OAL shall call this function */
|
||||
/* void (*zfcbUsbOutComplete)(zdev_t* dev, zbuf_t *buf, u8_t status, u8_t *hdr); */
|
||||
|
||||
|
||||
/* Call out functions */
|
||||
/* Below are the functions that supply by the OAL for 80211core to */
|
||||
/* manipulate the USB */
|
||||
|
||||
/* Return OAL's USB TxQ size */
|
||||
extern u32_t zfwUsbGetMaxTxQSize(zdev_t* dev);
|
||||
|
||||
/* Return OAL's TxQ available size */
|
||||
extern u32_t zfwUsbGetFreeTxQSize(zdev_t* dev);
|
||||
|
||||
/* Register call back function */
|
||||
extern void zfwUsbRegisterCallBack(zdev_t* dev, struct zfCbUsbFuncTbl *zfUsbFunc);
|
||||
|
||||
/* Enable USB interrupt endpoint */
|
||||
extern u32_t zfwUsbEnableIntEpt(zdev_t *dev, u8_t endpt);
|
||||
|
||||
/* Enable USB Rx endpoint */
|
||||
extern int zfwUsbEnableRxEpt(zdev_t* dev, u8_t endpt);
|
||||
|
||||
/* 80211core call this function to send a USB request over endpoint 0 */
|
||||
extern u32_t zfwUsbSubmitControl(zdev_t* dev, u8_t req, u16_t value,
|
||||
u16_t index, void *data, u32_t size);
|
||||
extern u32_t zfwUsbSubmitControlIo(zdev_t* dev, u8_t req, u8_t reqtype,
|
||||
u16_t value, u16_t index, void *data, u32_t size);
|
||||
|
||||
/* 80211core call this function to transfer data out over endpoint 1 */
|
||||
extern void zfwUsbCmd(zdev_t* dev, u8_t endpt, u32_t* cmd, u16_t cmdLen);
|
||||
|
||||
/* 80211core call this function to transfer data out over endpoint 4 */
|
||||
extern u32_t zfwUsbSend(zdev_t* dev, u8_t endpt, u8_t *hdr, u16_t hdrlen, u8_t *snap, u16_t snapLen,
|
||||
u8_t *tail, u16_t tailLen, zbuf_t *buf, u16_t offset);
|
||||
|
||||
/* 80211core call this function to set USB configuration */
|
||||
extern u32_t zfwUsbSetConfiguration(zdev_t *dev, u16_t value);
|
||||
|
||||
#endif
|
821
drivers/staging/otus/80211core/pub_zfi.h
Normal file
821
drivers/staging/otus/80211core/pub_zfi.h
Normal file
|
@ -0,0 +1,821 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef _PUB_DEFS_H
|
||||
#define _PUB_DEFS_H
|
||||
|
||||
#include "../oal_dt.h"
|
||||
|
||||
/***** Section 1 : Tunable Parameters *****/
|
||||
/* The defintions in this section are tunabel parameters */
|
||||
|
||||
/* Maximum number of BSS that could be scaned */
|
||||
#define ZM_MAX_BSS 128
|
||||
|
||||
/* Maximum number of WPA2 PMKID that supported */
|
||||
#define ZM_PMKID_MAX_BSS_CNT 8
|
||||
|
||||
/* Enable aggregation and deaggregation */
|
||||
#define ZM_ENABLE_AGGREGATION
|
||||
|
||||
#ifdef ZM_ENABLE_AGGREGATION
|
||||
/* Enable BA failed retransmission in firmware */
|
||||
#define ZM_ENABLE_FW_BA_RETRANSMISSION
|
||||
#define ZM_BYPASS_AGGR_SCHEDULING
|
||||
//#define ZM_AGGR_BIT_ON
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef ZM_FB50
|
||||
//#define ZM_FB50
|
||||
#endif
|
||||
|
||||
#ifndef ZM_AP_DEBUG
|
||||
//#define ZM_AP_DEBUG
|
||||
#endif
|
||||
|
||||
//#define ZM_ENABLE_BA_RATECTRL
|
||||
|
||||
/***** End of section 1 *****/
|
||||
|
||||
|
||||
/***** Section 2 : Public Definitions, data structures and prototypes *****/
|
||||
/* function return status */
|
||||
#define ZM_STATUS_SUCCESS 0
|
||||
#define ZM_STATUS_FAILURE 1
|
||||
|
||||
// media connect status
|
||||
#define ZM_STATUS_MEDIA_CONNECT 0x00
|
||||
#define ZM_STATUS_MEDIA_DISCONNECT 0x01
|
||||
#define ZM_STATUS_MEDIA_DISCONNECT_NOT_FOUND 0x02
|
||||
#define ZM_STATUS_MEDIA_DISABLED 0x03
|
||||
#define ZM_STATUS_MEDIA_CONNECTION_DISABLED 0x04
|
||||
#define ZM_STATUS_MEDIA_CONNECTION_RESET 0x05
|
||||
#define ZM_STATUS_MEDIA_RESET 0x06
|
||||
#define ZM_STATUS_MEDIA_DISCONNECT_DEAUTH 0x07
|
||||
#define ZM_STATUS_MEDIA_DISCONNECT_DISASOC 0x08
|
||||
#define ZM_STATUS_MEDIA_DISCONNECT_TIMEOUT 0x09
|
||||
#define ZM_STATUS_MEDIA_DISCONNECT_AUTH_FAILED 0x0a
|
||||
#define ZM_STATUS_MEDIA_DISCONNECT_ASOC_FAILED 0x0b
|
||||
#define ZM_STATUS_MEDIA_DISCONNECT_MIC_FAIL 0x0c
|
||||
#define ZM_STATUS_MEDIA_DISCONNECT_UNREACHABLE 0x0d
|
||||
#define ZM_STATUS_MEDIA_DISCONNECT_BEACON_MISS 0x0e
|
||||
|
||||
// Packet Filter
|
||||
#define ZM_PACKET_TYPE_DIRECTED 0x00000001
|
||||
#define ZM_PACKET_TYPE_MULTICAST 0x00000002
|
||||
#define ZM_PACKET_TYPE_ALL_MULTICAST 0x00000004
|
||||
#define ZM_PACKET_TYPE_BROADCAST 0x00000008
|
||||
#define ZM_PACKET_TYPE_PROMISCUOUS 0x00000020
|
||||
|
||||
/* BSS mode definition */
|
||||
/* TODO : The definitions here are coupled with XP's NDIS OID. */
|
||||
/* We can't be changed them freely, need to disarm this mine */
|
||||
#define ZM_MODE_IBSS 0
|
||||
#define ZM_MODE_INFRASTRUCTURE 1
|
||||
#define ZM_MODE_UNKNOWN 2
|
||||
#define ZM_MODE_INFRASTRUCTURE_MAX 3
|
||||
#define ZM_MODE_AP 4
|
||||
#define ZM_MODE_PSEUDO 5
|
||||
|
||||
|
||||
/* Authentication mode */
|
||||
#define ZM_AUTH_MODE_OPEN 0
|
||||
#define ZM_AUTH_MODE_SHARED_KEY 1
|
||||
#define ZM_AUTH_MODE_AUTO 2
|
||||
#define ZM_AUTH_MODE_WPA 3
|
||||
#define ZM_AUTH_MODE_WPAPSK 4
|
||||
#define ZM_AUTH_MODE_WPA_NONE 5
|
||||
#define ZM_AUTH_MODE_WPA2 6
|
||||
#define ZM_AUTH_MODE_WPA2PSK 7
|
||||
#ifdef ZM_ENABLE_CENC
|
||||
#define ZM_AUTH_MODE_CENC 8
|
||||
#endif //ZM_ENABLE_CENC
|
||||
#define ZM_AUTH_MODE_WPA_AUTO 9
|
||||
#define ZM_AUTH_MODE_WPAPSK_AUTO 10
|
||||
|
||||
// Encryption mode
|
||||
#define ZM_NO_WEP 0x0
|
||||
#define ZM_AES 0x4
|
||||
#define ZM_TKIP 0x2
|
||||
#define ZM_WEP64 0x1
|
||||
#define ZM_WEP128 0x5
|
||||
#define ZM_WEP256 0x6
|
||||
#ifdef ZM_ENABLE_CENC
|
||||
#define ZM_CENC 0x7
|
||||
#endif //ZM_ENABLE_CENC
|
||||
|
||||
/* Encryption type for wep status */
|
||||
#define ZM_ENCRYPTION_WEP_DISABLED 0
|
||||
#define ZM_ENCRYPTION_WEP_ENABLED 1
|
||||
#define ZM_ENCRYPTION_WEP_KEY_ABSENT 2
|
||||
#define ZM_ENCRYPTION_NOT_SUPPORTED 3
|
||||
#define ZM_ENCRYPTION_TKIP 4
|
||||
#define ZM_ENCRYPTION_TKIP_KEY_ABSENT 5
|
||||
#define ZM_ENCRYPTION_AES 6
|
||||
#define ZM_ENCRYPTION_AES_KEY_ABSENT 7
|
||||
|
||||
#ifdef ZM_ENABLE_CENC
|
||||
#define ZM_ENCRYPTION_CENC 8
|
||||
#endif //ZM_ENABLE_CENC
|
||||
|
||||
/* security type */
|
||||
#define ZM_SECURITY_TYPE_NONE 0
|
||||
#define ZM_SECURITY_TYPE_WEP 1
|
||||
#define ZM_SECURITY_TYPE_WPA 2
|
||||
|
||||
#ifdef ZM_ENABLE_CENC
|
||||
#define ZM_SECURITY_TYPE_CENC 3
|
||||
#endif //ZM_ENABLE_CENC
|
||||
|
||||
/* Encryption Exemption Action Type */
|
||||
#define ZM_ENCRYPTION_EXEMPT_NO_EXEMPTION 0
|
||||
#define ZM_ENCRYPTION_EXEMPT_ALWAYS 1
|
||||
|
||||
/* MIC failure */
|
||||
#define ZM_MIC_PAIRWISE_ERROR 0x06
|
||||
#define ZM_MIC_GROUP_ERROR 0x0E
|
||||
|
||||
|
||||
/* power save mode */
|
||||
#define ZM_STA_PS_NONE 0
|
||||
#define ZM_STA_PS_MAX 1
|
||||
#define ZM_STA_PS_FAST 2
|
||||
#define ZM_STA_PS_LIGHT 3
|
||||
|
||||
/* WME AC Type */
|
||||
#define ZM_WME_AC_BK 0 /* Background AC */
|
||||
#define ZM_WME_AC_BE 1 /* Best-effort AC */
|
||||
#define ZM_WME_AC_VIDEO 2 /* Video AC */
|
||||
#define ZM_WME_AC_VOICE 3 /* Voice AC */
|
||||
|
||||
/* Preamble type */
|
||||
#define ZM_PREAMBLE_TYPE_AUTO 0
|
||||
#define ZM_PREAMBLE_TYPE_LONG 1
|
||||
#define ZM_PREAMBLE_TYPE_SHORT 2
|
||||
|
||||
/* wireless modes constants */
|
||||
#define ZM_WIRELESS_MODE_5_54 0x01 ///< 5 GHz 54 Mbps
|
||||
#define ZM_WIRELESS_MODE_5_108 0x02 ///< 5 GHz 108 Mbps
|
||||
#define ZM_WIRELESS_MODE_24_11 0x04 ///< 2.4 GHz 11 Mbps
|
||||
#define ZM_WIRELESS_MODE_24_54 0x08 ///< 2.4 GHz 54 Mbps
|
||||
#define ZM_WIRELESS_MODE_24_108 0x10 ///< 2.4 GHz 108 Mbps
|
||||
#define ZM_WIRELESS_MODE_49_13 0x100 ///< 4.9 GHz 13.5 Mbps, quarter rate chn-bandwidth = 5
|
||||
#define ZM_WIRELESS_MODE_49_27 0x200 ///< 4.9 GHz 27 Mbps, half rate chn-bandwidth = 10
|
||||
#define ZM_WIRELESS_MODE_49_54 0x400 ///< 4.9 GHz 54 Mbps, full rate chn-bandwidth = 20
|
||||
#define ZM_WIRELESS_MODE_5_300 0x1000 ///< 5 GHz 300 Mbps
|
||||
#define ZM_WIRELESS_MODE_24_300 0x2000 ///< 2.4 GHz 300 Mbps
|
||||
#define ZM_WIRELESS_MODE_5_130 0x4000 ///< 5 GHz 130 Mbps
|
||||
#define ZM_WIRELESS_MODE_24_130 0x8000 ///< 2.4 GHz 130 Mbps
|
||||
|
||||
#define ZM_WIRELESS_MODE_24_N (ZM_WIRELESS_MODE_24_130|ZM_WIRELESS_MODE_24_300)
|
||||
#define ZM_WIRELESS_MODE_5_N (ZM_WIRELESS_MODE_5_130|ZM_WIRELESS_MODE_5_300)
|
||||
#define ZM_WIRELESS_MODE_24 (ZM_WIRELESS_MODE_24_11|ZM_WIRELESS_MODE_24_54|ZM_WIRELESS_MODE_24_N)
|
||||
#define ZM_WIRELESS_MODE_5 (ZM_WIRELESS_MODE_5_54|ZM_WIRELESS_MODE_5_N)
|
||||
|
||||
/* AdHoc Mode with different band */
|
||||
#define ZM_ADHOCBAND_A 1
|
||||
#define ZM_ADHOCBAND_B 2
|
||||
#define ZM_ADHOCBAND_G 3
|
||||
#define ZM_ADHOCBAND_BG 4
|
||||
#define ZM_ADHOCBAND_ABG 5
|
||||
|
||||
/* Authentication algorithm in the field algNo of authentication frames */
|
||||
#define ZM_AUTH_ALGO_OPEN_SYSTEM 0x10000 /* Open system */
|
||||
#define ZM_AUTH_ALGO_SHARED_KEY 0x10001 /* Shared Key */
|
||||
#define ZM_AUTH_ALGO_LEAP 0x10080 /* Leap */
|
||||
|
||||
struct zsScanResult
|
||||
{
|
||||
u32_t reserved;
|
||||
};
|
||||
|
||||
|
||||
struct zsStastics
|
||||
{
|
||||
u32_t reserved;
|
||||
};
|
||||
|
||||
#define ZM_MAX_SUPP_RATES_IE_SIZE 12
|
||||
#define ZM_MAX_IE_SIZE 50 //100
|
||||
#define ZM_MAX_WPS_IE_SIZE 150
|
||||
#define ZM_MAX_PROBE_FRAME_BODY_SIZE 512//300
|
||||
#define ZM_MAX_COUNTRY_INFO_SIZE 20
|
||||
|
||||
#define ZM_MAX_SSID_LENGTH 32
|
||||
struct zsBssInfo
|
||||
{
|
||||
u8_t macaddr[6];
|
||||
u8_t bssid[6];
|
||||
u8_t beaconInterval[2];
|
||||
u8_t capability[2];
|
||||
u8_t timeStamp[8];
|
||||
u8_t ssid[ZM_MAX_SSID_LENGTH + 2]; // EID(1) + Length(1) + SSID(32)
|
||||
u8_t supportedRates[ZM_MAX_SUPP_RATES_IE_SIZE + 2]; // EID(1) + Length(1) + supported rates [12]
|
||||
u8_t channel;
|
||||
u16_t frequency;
|
||||
u16_t atimWindow;
|
||||
u8_t erp;
|
||||
u8_t extSupportedRates[ZM_MAX_SUPP_RATES_IE_SIZE + 2]; // EID(1) + Length(1) + extended supported rates [12]
|
||||
u8_t wpaIe[ZM_MAX_IE_SIZE + 2];
|
||||
u8_t wscIe[ZM_MAX_WPS_IE_SIZE + 2];
|
||||
u8_t rsnIe[ZM_MAX_IE_SIZE + 2];
|
||||
#ifdef ZM_ENABLE_CENC
|
||||
u8_t cencIe[ZM_MAX_IE_SIZE + 2]; /* CENC */ /* half size because of memory exceed 64k boundary */
|
||||
#endif //ZM_ENABLE_CENC
|
||||
u8_t securityType;
|
||||
u8_t signalStrength;
|
||||
u8_t signalQuality;
|
||||
u16_t sortValue;
|
||||
u8_t wmeSupport;
|
||||
u8_t flag;
|
||||
u8_t EnableHT;
|
||||
u8_t enableHT40;
|
||||
u8_t SG40;
|
||||
u8_t extChOffset;
|
||||
u8_t apCap; // bit0:11N AP
|
||||
u16_t frameBodysize;
|
||||
u8_t frameBody[ZM_MAX_PROBE_FRAME_BODY_SIZE];
|
||||
u8_t countryInfo[ZM_MAX_COUNTRY_INFO_SIZE + 2];
|
||||
u16_t athOwlAp;
|
||||
u16_t marvelAp;
|
||||
u16_t broadcomHTAp;
|
||||
u32_t tick;
|
||||
struct zsBssInfo* next;
|
||||
};
|
||||
|
||||
struct zsBssList
|
||||
{
|
||||
u8_t bssCount;
|
||||
struct zsBssInfo* head;
|
||||
struct zsBssInfo* tail;
|
||||
};
|
||||
|
||||
struct zsBssListV1
|
||||
{
|
||||
u8_t bssCount;
|
||||
struct zsBssInfo bssInfo[ZM_MAX_BSS];
|
||||
};
|
||||
|
||||
#define ZM_KEY_FLAG_GK 0x0001
|
||||
#define ZM_KEY_FLAG_PK 0X0002
|
||||
#define ZM_KEY_FLAG_AUTHENTICATOR 0x0004
|
||||
#define ZM_KEY_FLAG_INIT_IV 0x0008
|
||||
#define ZM_KEY_FLAG_DEFAULT_KEY 0x0010
|
||||
|
||||
#ifdef ZM_ENABLE_CENC
|
||||
#define ZM_KEY_FLAG_CENC 0x0020
|
||||
#endif //ZM_ENABLE_CENC
|
||||
|
||||
// Comment: For TKIP, key[0]~key[15] => TKIP key
|
||||
// key[16]~key[23] => Tx MIC key
|
||||
// key[24]~key[31] => Rx MIC key
|
||||
struct zsKeyInfo
|
||||
{
|
||||
u8_t* key;
|
||||
u8_t keyLength;
|
||||
u8_t keyIndex;
|
||||
u8_t* initIv;
|
||||
u16_t flag;
|
||||
u8_t vapId;
|
||||
u16_t vapAddr[3];
|
||||
u16_t* macAddr;
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Channels are specified by frequency.
|
||||
*/
|
||||
typedef struct {
|
||||
u16_t channel; /* setting in Mhz */
|
||||
u32_t channelFlags; /* see below */
|
||||
u8_t privFlags;
|
||||
s8_t maxRegTxPower; /* max regulatory tx power in dBm */
|
||||
s8_t maxTxPower; /* max true tx power in 0.25 dBm */
|
||||
s8_t minTxPower; /* min true tx power in 0.25 dBm */
|
||||
} ZM_HAL_CHANNEL;
|
||||
|
||||
struct zsRegulationTable
|
||||
{
|
||||
u16_t regionCode;
|
||||
u16_t CurChIndex;
|
||||
u16_t allowChannelCnt;
|
||||
ZM_HAL_CHANNEL allowChannel[60]; /* 2.4GHz: 14 channels, 5 GHz: 31 channels */
|
||||
};
|
||||
|
||||
struct zsPartnerNotifyEvent
|
||||
{
|
||||
u8_t bssid[6]; // The BSSID of IBSS
|
||||
u8_t peerMacAddr[6]; // The MAC address of peer station
|
||||
};
|
||||
|
||||
#define ZM_RC_TRAINED_BIT 0x1
|
||||
struct zsRcCell
|
||||
{
|
||||
u32_t txCount;
|
||||
u32_t failCount;
|
||||
u8_t currentRate;
|
||||
u8_t currentRateIndex;
|
||||
u32_t probingTime;
|
||||
u8_t operationRateSet[24];
|
||||
u8_t operationRateCount;
|
||||
u16_t rxRssi;
|
||||
u8_t flag;
|
||||
u32_t lasttxCount;
|
||||
u32_t lastTime;
|
||||
};
|
||||
|
||||
struct zsOppositeInfo
|
||||
{
|
||||
u8_t macAddr[6];
|
||||
struct zsRcCell rcCell;
|
||||
u8_t valid; // This indicate if this opposite is still valid
|
||||
u8_t aliveCounter;
|
||||
u8_t pkInstalled;
|
||||
|
||||
#ifdef ZM_ENABLE_IBSS_WPA2PSK
|
||||
/* For WPA2PSK ! */
|
||||
u8_t wpaState;
|
||||
u8_t camIdx;
|
||||
u8_t encryMode;
|
||||
u16_t iv16;
|
||||
u32_t iv32;
|
||||
#endif
|
||||
};
|
||||
|
||||
typedef void (*zfpIBSSIteratePeerStationCb)(
|
||||
zdev_t* dev, struct zsOppositeInfo *peerInfo, void *ctx, u8_t index);
|
||||
|
||||
typedef u16_t (*zfpStaRxSecurityCheckCb)(zdev_t* dev, zbuf_t* buf);
|
||||
|
||||
|
||||
/* Communication Tally data structure */
|
||||
struct zsCommTally
|
||||
{
|
||||
u32_t txUnicastFrm; // 0 txUnicastFrames
|
||||
u32_t txMulticastFrm; // 1 txMulticastFrames
|
||||
u32_t txUnicastOctets; // 2 txUniOctets byte size
|
||||
u32_t txMulticastOctets; // 3 txMultiOctets byte size
|
||||
u32_t txFrmUpperNDIS; // 4
|
||||
u32_t txFrmDrvMgt; // 5
|
||||
u32_t RetryFailCnt; // 6
|
||||
u32_t Hw_TotalTxFrm; // 7 Hardware total Tx Frame
|
||||
u32_t Hw_RetryCnt; // 8 txMultipleRetriesFrames
|
||||
u32_t Hw_UnderrunCnt; // 9
|
||||
|
||||
u32_t DriverRxFrmCnt; // 10
|
||||
u32_t rxUnicastFrm; // 11 rxUnicastFrames
|
||||
u32_t rxMulticastFrm; // 12rxMulticastFrames
|
||||
|
||||
u32_t NotifyNDISRxFrmCnt; // 14
|
||||
u32_t rxUnicastOctets; // 15 rxUniOctets byte size
|
||||
u32_t rxMulticastOctets; // 16 rxMultiOctets byte size
|
||||
u32_t DriverDiscardedFrm; // 17 Discard by ValidateFrame
|
||||
u32_t LessThanDataMinLen; // 18
|
||||
u32_t GreaterThanMaxLen; // 19
|
||||
u32_t DriverDiscardedFrmCauseByMulticastList;
|
||||
u32_t DriverDiscardedFrmCauseByFrmCtrl;
|
||||
u32_t rxNeedFrgFrm; // 22 need more frg frm
|
||||
u32_t DriverRxMgtFrmCnt;
|
||||
u32_t rxBroadcastFrm; // 24 Receive broadcast frame count
|
||||
u32_t rxBroadcastOctets; // 25 Receive broadcast frame byte size
|
||||
u32_t rx11bDataFrame; // 26 Measured quality 11b data frame count
|
||||
u32_t rxOFDMDataFrame; // 27 Measured quality 11g data frame count
|
||||
|
||||
|
||||
u32_t Hw_TotalRxFrm; // 28
|
||||
u32_t Hw_CRC16Cnt; // 29 rxPLCPCRCErrCnt
|
||||
u32_t Hw_CRC32Cnt; // 30 rxCRC32ErrCnt
|
||||
u32_t Hw_DecrypErr_UNI; // 31
|
||||
u32_t Hw_DecrypErr_Mul; // 32
|
||||
|
||||
u32_t Hw_RxFIFOOverrun; // 34
|
||||
u32_t Hw_RxTimeOut; // 35
|
||||
u32_t LossAP; // 36
|
||||
|
||||
u32_t Tx_MPDU; // 37
|
||||
u32_t BA_Fail; // 38
|
||||
u32_t Hw_Tx_AMPDU; // 39
|
||||
u32_t Hw_Tx_MPDU; // 40
|
||||
|
||||
u32_t RateCtrlTxMPDU;
|
||||
u32_t RateCtrlBAFail;
|
||||
|
||||
u32_t txQosDropCount[5]; //41 42 43 44 45
|
||||
|
||||
u32_t Hw_RxMPDU; // 46
|
||||
u32_t Hw_RxDropMPDU; // 47
|
||||
u32_t Hw_RxDelMPDU; // 48
|
||||
|
||||
u32_t Hw_RxPhyMiscError; // 49
|
||||
u32_t Hw_RxPhyXRError; // 50
|
||||
u32_t Hw_RxPhyOFDMError; // 51
|
||||
u32_t Hw_RxPhyCCKError; // 52
|
||||
u32_t Hw_RxPhyHTError; // 53
|
||||
u32_t Hw_RxPhyTotalCount; // 54
|
||||
|
||||
u32_t swRxFragmentCount; // 55
|
||||
u32_t swRxUnicastMicFailCount; // 56
|
||||
u32_t swRxMulticastMicFailCount; // 57
|
||||
u32_t swRxDropUnencryptedCount; // 58
|
||||
|
||||
u32_t txBroadcastFrm;
|
||||
u32_t txBroadcastOctets;
|
||||
};
|
||||
|
||||
/* Traffic Monitor Tally data structure */
|
||||
struct zsTrafTally
|
||||
{
|
||||
u32_t rxDuplicate;
|
||||
u32_t rxSrcIsOwnMac;
|
||||
//u32_t rxDataFrameCount;
|
||||
//u32_t rxDataByteCount;
|
||||
//u32_t rxDataBytesIn1000ms;
|
||||
//u32_t rxDataTmpFor1000ms;
|
||||
//u32_t rxDataBytesIn2000ms;
|
||||
//u32_t rxDataTmpFor2000ms;
|
||||
|
||||
//u32_t txDataFrameCount;
|
||||
//u32_t txDataByteCount;
|
||||
//u32_t txDataBytesIn1000ms;
|
||||
//u32_t txDataTmpFor1000ms;
|
||||
u32_t txDataBytesIn2000ms;
|
||||
u32_t txDataTmpFor2000ms;
|
||||
};
|
||||
|
||||
/* Hal rx packet moniter information */
|
||||
struct zsMonHalRxInfo
|
||||
{
|
||||
u32_t currentRSSI[7];
|
||||
u32_t currentRxEVM[14];
|
||||
u32_t currentRxDataMT;
|
||||
u32_t currentRxDataMCS;
|
||||
u32_t currentRxDataBW;
|
||||
u32_t currentRxDataSG;
|
||||
};
|
||||
|
||||
struct zsTail
|
||||
{
|
||||
u8_t SignalStrength1;
|
||||
u8_t SignalStrength2;
|
||||
u8_t SignalStrength3;
|
||||
u8_t SignalQuality;
|
||||
u8_t SAIndex;
|
||||
u8_t DAIndex;
|
||||
u8_t ErrorIndication;
|
||||
u8_t RxMacStatus;
|
||||
};
|
||||
|
||||
union zuTail
|
||||
{
|
||||
struct zsTail Data;
|
||||
u8_t Byte[8];
|
||||
};
|
||||
|
||||
struct zsAdditionInfo
|
||||
{
|
||||
u8_t PlcpHeader[12];
|
||||
union zuTail Tail;
|
||||
};
|
||||
|
||||
|
||||
struct zsPmkidBssidInfo
|
||||
{
|
||||
u16_t bssid[3];
|
||||
u8_t pmkid[16];
|
||||
};
|
||||
|
||||
struct zsPmkidInfo
|
||||
{
|
||||
u32_t bssidCount;
|
||||
struct zsPmkidBssidInfo bssidInfo[ZM_PMKID_MAX_BSS_CNT];
|
||||
};
|
||||
|
||||
|
||||
struct zsCbFuncTbl
|
||||
{
|
||||
u16_t (*zfcbAuthNotify)(zdev_t* dev, u16_t* macAddr);
|
||||
u16_t (*zfcbAsocNotify)(zdev_t* dev, u16_t* macAddr, u8_t* body,
|
||||
u16_t bodySize, u16_t port);
|
||||
u16_t (*zfcbDisAsocNotify)(zdev_t* dev, u8_t* macAddr, u16_t port);
|
||||
u16_t (*zfcbApConnectNotify)(zdev_t* dev, u8_t* macAddr, u16_t port);
|
||||
void (*zfcbConnectNotify)(zdev_t* dev, u16_t status, u16_t* bssid);
|
||||
void (*zfcbScanNotify)(zdev_t* dev, struct zsScanResult* result);
|
||||
void (*zfcbMicFailureNotify)(zdev_t* dev, u16_t* addr, u16_t status);
|
||||
void (*zfcbApMicFailureNotify)(zdev_t* dev, u8_t* addr, zbuf_t* buf);
|
||||
void (*zfcbIbssPartnerNotify)(zdev_t* dev, u16_t status,
|
||||
struct zsPartnerNotifyEvent *event);
|
||||
void (*zfcbMacAddressNotify)(zdev_t* dev, u8_t* addr);
|
||||
void (*zfcbSendCompleteIndication)(zdev_t* dev, zbuf_t* buf);
|
||||
void (*zfcbRecvEth)(zdev_t* dev, zbuf_t* buf, u16_t port);
|
||||
void (*zfcbRecv80211)(zdev_t* dev, zbuf_t* buf, struct zsAdditionInfo* addInfo);
|
||||
void (*zfcbRestoreBufData)(zdev_t* dev, zbuf_t* buf);
|
||||
#ifdef ZM_ENABLE_CENC
|
||||
u16_t (*zfcbCencAsocNotify)(zdev_t* dev, u16_t* macAddr, u8_t* body,
|
||||
u16_t bodySize, u16_t port);
|
||||
#endif //ZM_ENABLE_CENC
|
||||
u8_t (*zfcbClassifyTxPacket)(zdev_t* dev, zbuf_t* buf);
|
||||
|
||||
void (*zfcbHwWatchDogNotify)(zdev_t* dev);
|
||||
};
|
||||
|
||||
extern void zfZeroMemory(u8_t* va, u16_t length);
|
||||
#define ZM_INIT_CB_FUNC_TABLE(p) zfZeroMemory((u8_t *)p, sizeof(struct zsCbFuncTbl));
|
||||
|
||||
//extern struct zsWlanDev zgWlanDev;
|
||||
|
||||
/* Initialize WLAN hardware and software, resource will be allocated */
|
||||
/* for WLAN operation, must be called first before other function. */
|
||||
extern u16_t zfiWlanOpen(zdev_t* dev, struct zsCbFuncTbl* cbFuncTbl);
|
||||
|
||||
/* WLAN hardware will be shutdown and all resource will be release */
|
||||
extern u16_t zfiWlanClose(zdev_t* dev);
|
||||
|
||||
/* Enable/disable Wlan operation */
|
||||
extern u16_t zfiWlanEnable(zdev_t* dev);
|
||||
extern u16_t zfiWlanDisable(zdev_t* dev, u8_t ResetKeyCache);
|
||||
extern u16_t zfiWlanResume(zdev_t* dev, u8_t doReconn);
|
||||
extern u16_t zfiWlanSuspend(zdev_t* dev);
|
||||
|
||||
/* Enable/disable ISR interrupt */
|
||||
extern u16_t zfiWlanInterruptEnable(zdev_t* dev);
|
||||
extern u16_t zfiWlanInterruptDisable(zdev_t* dev);
|
||||
|
||||
/* Do WLAN site survey */
|
||||
extern u16_t zfiWlanScan(zdev_t* dev);
|
||||
|
||||
/* Get WLAN stastics */
|
||||
extern u16_t zfiWlanGetStatistics(zdev_t* dev);
|
||||
|
||||
/* Reset WLAN */
|
||||
extern u16_t zfiWlanReset(zdev_t* dev);
|
||||
|
||||
/* Deauthenticate a STA */
|
||||
extern u16_t zfiWlanDeauth(zdev_t* dev, u16_t* macAddr, u16_t reason);
|
||||
|
||||
extern u16_t zfiTxSendEth(zdev_t* dev, zbuf_t* buf, u16_t port);
|
||||
extern u8_t zfiIsTxQueueFull(zdev_t* dev);
|
||||
extern u16_t zfiTxSend80211Mgmt(zdev_t* dev, zbuf_t* buf, u16_t port);
|
||||
|
||||
extern void zfiIsrPci(zdev_t* dev);
|
||||
|
||||
extern u8_t zfiWlanIBSSGetPeerStationsCount(zdev_t* dev);
|
||||
extern u8_t zfiWlanIBSSIteratePeerStations(zdev_t* dev, u8_t numToIterate, zfpIBSSIteratePeerStationCb callback, void *ctx);
|
||||
extern void zfiWlanFlushAllQueuedBuffers(zdev_t* dev);
|
||||
|
||||
/* coid.c */
|
||||
extern void zfiWlanQueryMacAddress(zdev_t* dev, u8_t* addr);
|
||||
|
||||
extern u16_t zfiGlobalDataSize(zdev_t* dev);
|
||||
|
||||
extern void zfiHeartBeat(zdev_t* dev);
|
||||
|
||||
extern void zfiWlanSetWlanMode(zdev_t* dev, u8_t wlanMode);
|
||||
extern void zfiWlanSetAuthenticationMode(zdev_t* dev, u8_t authMode);
|
||||
extern void zfiWlanSetWepStatus(zdev_t* dev, u8_t wepStatus);
|
||||
extern void zfiWlanSetSSID(zdev_t* dev, u8_t* ssid, u8_t ssidLength);
|
||||
extern void zfiWlanSetFragThreshold(zdev_t* dev, u16_t fragThreshold);
|
||||
extern void zfiWlanSetRtsThreshold(zdev_t* dev, u16_t rtsThreshold);
|
||||
extern void zfiWlanSetFrequency(zdev_t* dev, u32_t frequency, u8_t bImmediate);
|
||||
extern void zfiWlanSetBssid(zdev_t* dev, u8_t* bssid);
|
||||
extern void zfiWlanSetBeaconInterval(zdev_t* dev, u16_t beaconInterval,
|
||||
u8_t bImmediate);
|
||||
extern void zfiWlanSetDtimCount(zdev_t* dev, u8_t dtim);
|
||||
extern void zfiWlanSetAtimWindow(zdev_t* dev, u16_t atimWindow, u8_t bImmediate);
|
||||
extern void zfiWlanSetEncryMode(zdev_t* dev, u8_t encryMode);
|
||||
extern u8_t zfiWlanSetKey(zdev_t* dev, struct zsKeyInfo keyInfo);
|
||||
extern u8_t zfiWlanPSEUDOSetKey(zdev_t* dev, struct zsKeyInfo keyInfo);
|
||||
extern void zfiWlanSetPowerSaveMode(zdev_t* dev, u8_t mode);
|
||||
extern void zfiWlanQueryBssListV1(zdev_t* dev, struct zsBssListV1* bssListV1);
|
||||
extern void zfiWlanQueryBssList(zdev_t* dev, struct zsBssList* pBssList);
|
||||
extern void zfiWlanSetProtectionMode(zdev_t* dev, u8_t mode);
|
||||
extern void zfiWlanFlushBssList(zdev_t* dev);
|
||||
|
||||
void zfiWlanDisableDfsChannel(zdev_t* dev, u8_t disableFlag);
|
||||
|
||||
extern u8_t zfiWlanQueryWlanMode(zdev_t* dev);
|
||||
extern u16_t zfiWlanChannelToFrequency(zdev_t* dev, u8_t channel);
|
||||
extern u8_t zfiWlanFrequencyToChannel(zdev_t* dev, u16_t freq);
|
||||
|
||||
#define ZM_WLAN_STATE_OPENED 0
|
||||
#define ZM_WLAN_STATE_ENABLED 1
|
||||
#define ZM_WLAN_STATE_DISABLED 2
|
||||
#define ZM_WLAN_STATE_CLOSEDED 3
|
||||
extern u8_t zfiWlanQueryAdapterState(zdev_t* dev);
|
||||
extern u8_t zfiWlanQueryAuthenticationMode(zdev_t* dev, u8_t bWrapper);
|
||||
extern u8_t zfiWlanQueryWepStatus(zdev_t* dev, u8_t bWrapper);
|
||||
extern void zfiWlanQuerySSID(zdev_t* dev, u8_t* ssid, u8_t* pSsidLength);
|
||||
extern u16_t zfiWlanQueryFragThreshold(zdev_t* dev);
|
||||
extern u16_t zfiWlanQueryRtsThreshold(zdev_t* dev);
|
||||
extern u32_t zfiWlanQueryFrequency(zdev_t* dev);
|
||||
extern u32_t zfiWlanQueryCurrentFrequency(zdev_t* dev, u8_t qmode);
|
||||
extern u32_t zfiWlanQueryFrequencyAttribute(zdev_t* dev, u32_t frequency);
|
||||
extern void zfiWlanQueryFrequencyHT(zdev_t* dev, u32_t *bandWidth, u32_t *extOffset);
|
||||
extern u8_t zfiWlanQueryCWMode(zdev_t* dev);
|
||||
extern u32_t zfiWlanQueryCWEnable(zdev_t* dev);
|
||||
extern void zfiWlanQueryBssid(zdev_t* dev, u8_t* bssid);
|
||||
extern u16_t zfiWlanQueryBeaconInterval(zdev_t* dev);
|
||||
extern u32_t zfiWlanQueryRxBeaconTotal(zdev_t* dev);
|
||||
extern u16_t zfiWlanQueryAtimWindow(zdev_t* dev);
|
||||
extern u8_t zfiWlanQueryEncryMode(zdev_t* dev);
|
||||
extern u16_t zfiWlanQueryCapability(zdev_t* dev);
|
||||
extern u16_t zfiWlanQueryAid(zdev_t* dev);
|
||||
extern void zfiWlanQuerySupportRate(zdev_t* dev, u8_t* rateArray, u8_t* pLength);
|
||||
extern void zfiWlanQueryExtSupportRate(zdev_t* dev, u8_t* rateArray, u8_t* pLength);
|
||||
extern void zfiWlanQueryRsnIe(zdev_t* dev, u8_t* ie, u8_t* pLength);
|
||||
extern void zfiWlanQueryWpaIe(zdev_t* dev, u8_t* ie, u8_t* pLength);
|
||||
extern u8_t zfiWlanQueryHTMode(zdev_t* dev);
|
||||
extern u8_t zfiWlanQueryBandWidth40(zdev_t* dev);
|
||||
extern u8_t zfiWlanQueryMulticastCipherAlgo(zdev_t *dev);
|
||||
extern u16_t zfiWlanQueryRegionCode(zdev_t* dev);
|
||||
extern void zfiWlanSetWpaIe(zdev_t* dev, u8_t* ie, u8_t Length);
|
||||
extern void zfiWlanSetWpaSupport(zdev_t* dev, u8_t WpaSupport);
|
||||
extern void zfiWlanCheckStaWpaIe(zdev_t* dev);
|
||||
extern void zfiWlanSetBasicRate(zdev_t* dev, u8_t bRateSet, u8_t gRateSet,
|
||||
u32_t nRateSet);
|
||||
extern void zfiWlanSetBGMode(zdev_t* dev, u8_t mode);
|
||||
extern void zfiWlanSetpreambleType(zdev_t* dev, u8_t type);
|
||||
extern u8_t zfiWlanQuerypreambleType(zdev_t* dev);
|
||||
extern u8_t zfiWlanQueryPowerSaveMode(zdev_t* dev);
|
||||
extern void zfiWlanSetMacAddress(zdev_t* dev, u16_t* mac);
|
||||
extern u16_t zfiWlanSetTxRate(zdev_t* dev, u16_t rate);
|
||||
extern u32_t zfiWlanQueryTxRate(zdev_t* dev);
|
||||
extern void zfWlanUpdateRxRate(zdev_t* dev, struct zsAdditionInfo* addInfo);
|
||||
extern u32_t zfiWlanQueryRxRate(zdev_t* dev);
|
||||
extern u8_t zfiWlanSetPmkidInfo(zdev_t* dev, u16_t* bssid, u8_t* pmkid);
|
||||
extern u32_t zfiWlanQueryPmkidInfo(zdev_t* dev, u8_t* buf, u32_t len);
|
||||
extern void zfiWlanSetAllMulticast(zdev_t* dev, u32_t setting);
|
||||
extern void zfiWlanSetHTCtrl(zdev_t* dev, u32_t *setting, u32_t forceTxTPC);
|
||||
extern void zfiWlanQueryHTCtrl(zdev_t* dev, u32_t *setting, u32_t *forceTxTPC);
|
||||
extern void zfiWlanDbg(zdev_t* dev, u8_t setting);
|
||||
|
||||
extern void zfiWlanResetTally(zdev_t* dev);
|
||||
extern void zfiWlanQueryTally(zdev_t* dev, struct zsCommTally *tally);
|
||||
extern void zfiWlanQueryTrafTally(zdev_t* dev, struct zsTrafTally *tally);
|
||||
extern void zfiWlanQueryMonHalRxInfo(zdev_t* dev, struct zsMonHalRxInfo *halRxInfo);
|
||||
|
||||
extern u32_t zfiFWConfig(zdev_t* dev, u32_t size);
|
||||
|
||||
extern void zfiDKEnable(zdev_t* dev, u32_t enable);
|
||||
|
||||
extern void zfiWlanSetMulticastList(zdev_t* dev, u8_t size, u8_t* pList);
|
||||
extern void zfiWlanRemoveKey(zdev_t* dev, u8_t keyType, u8_t keyId);
|
||||
extern u8_t zfiWlanQueryIsPKInstalled(zdev_t *dev, u8_t *staMacAddr);
|
||||
extern u32_t zfiWlanQueryPacketTypePromiscuous(zdev_t* dev);
|
||||
extern void zfiWlanSetPacketTypePromiscuous(zdev_t* dev, u32_t setValue);
|
||||
extern void zfiSetChannelManagement(zdev_t* dev, u32_t setting);
|
||||
extern void zfiSetRifs(zdev_t* dev, u16_t setting);
|
||||
extern void zfiCheckRifs(zdev_t* dev);
|
||||
extern void zfiSetReorder(zdev_t* dev, u16_t value);
|
||||
extern void zfiSetSeqDebug(zdev_t* dev, u16_t value);
|
||||
|
||||
extern u16_t zfiConfigWdsPort(zdev_t* dev, u8_t wdsPortId, u16_t flag, u16_t* wdsAddr,
|
||||
u16_t encType, u32_t* wdsKey);
|
||||
extern void zfiWlanQueryRegulationTable(zdev_t* dev, struct zsRegulationTable* pEntry);
|
||||
extern void zfiWlanSetScanTimerPerChannel(zdev_t* dev, u16_t time);
|
||||
extern void zfiWlanSetAutoReconnect(zdev_t* dev, u8_t enable);
|
||||
extern u32_t zfiDebugCmd(zdev_t* dev, u32_t cmd, u32_t value);
|
||||
extern void zfiWlanSetProbingHiddenSsid(zdev_t* dev, u8_t* ssid, u8_t ssidLen,
|
||||
u16_t entry);
|
||||
extern void zfiWlanSetDropUnencryptedPackets(zdev_t* dev, u8_t enable);
|
||||
extern void zfiWlanSetIBSSJoinOnly(zdev_t* dev, u8_t joinOnly);
|
||||
extern void zfiWlanSetDefaultKeyId(zdev_t* dev, u8_t keyId);
|
||||
extern void zfiWlanSetDisableProbingWithSsid(zdev_t* dev, u8_t mode);
|
||||
extern void zfiWlanQueryGSN(zdev_t* dev, u8_t *gsn, u16_t vapId);
|
||||
extern u16_t zfiStaAddIeWpaRsn(zdev_t* dev, zbuf_t* buf, u16_t offset, u8_t frameType);
|
||||
extern u8_t zfiWlanSetDot11DMode(zdev_t* dev, u8_t mode);
|
||||
extern u8_t zfiWlanSetDot11HDFSMode(zdev_t* dev, u8_t mode);
|
||||
extern u8_t zfiWlanSetDot11HTPCMode(zdev_t* dev, u8_t mode);
|
||||
extern u8_t zfiWlanSetAniMode(zdev_t* dev, u8_t mode);
|
||||
extern void zfiWlanSetStaWme(zdev_t* dev, u8_t enable, u8_t uapsdInfo);
|
||||
extern void zfiWlanSetApWme(zdev_t* dev, u8_t enable);
|
||||
extern u8_t zfiWlanQuerywmeEnable(zdev_t* dev);
|
||||
#ifdef ZM_OS_LINUX_FUNC
|
||||
extern void zfiWlanShowTally(zdev_t* dev);
|
||||
#endif
|
||||
#ifdef ZM_ENABLE_CENC
|
||||
/* CENC */
|
||||
extern u8_t zfiWlanSetCencPairwiseKey(zdev_t* dev, u8_t keyid, u32_t *txiv, u32_t *rxiv,
|
||||
u8_t *key, u8_t *mic);
|
||||
extern u8_t zfiWlanSetCencGroupKey(zdev_t* dev, u8_t keyid, u32_t *rxiv,
|
||||
u8_t *key, u8_t *mic);
|
||||
#endif //ZM_ENABLE_CENC
|
||||
extern void zfiWlanQuerySignalInfo(zdev_t* dev, u8_t *buffer);
|
||||
extern void zfiWlanQueryAdHocCreatedBssDesc(zdev_t* dev, struct zsBssInfo *pBssInfo);
|
||||
extern u8_t zfiWlanQueryAdHocIsCreator(zdev_t* dev);
|
||||
extern u32_t zfiWlanQuerySupportMode(zdev_t* dev);
|
||||
extern u32_t zfiWlanQueryTransmitPower(zdev_t* dev);
|
||||
extern void zfiWlanEnableLeapConfig(zdev_t* dev, u8_t leapEnabled);
|
||||
|
||||
/* returned buffer allocated by driver core */
|
||||
extern void zfiRecvEthComplete(zdev_t* dev, zbuf_t* buf);
|
||||
|
||||
extern void zfiRecv80211(zdev_t* dev, zbuf_t* buf, struct zsAdditionInfo* addInfo);
|
||||
|
||||
extern void zfiWlanSetMaxTxPower(zdev_t* dev, u8_t power2, u8_t power5);
|
||||
extern void zfiWlanQueryMaxTxPower(zdev_t* dev, u8_t *power2, u8_t *power5);
|
||||
extern void zfiWlanSetConnectMode(zdev_t* dev, u8_t mode);
|
||||
extern void zfiWlanSetSupportMode(zdev_t* dev, u32_t mode);
|
||||
extern void zfiWlanSetAdhocMode(zdev_t* dev, u32_t mode);
|
||||
extern u32_t zfiWlanQueryAdhocMode(zdev_t* dev, u8_t bWrapper);
|
||||
extern u8_t zfiWlanSetCountryIsoName(zdev_t* dev, u8_t *countryIsoName, u8_t length);
|
||||
extern const char* zfiWlanQueryCountryIsoName(zdev_t* dev);
|
||||
extern u8_t zfiWlanQueryregulatoryDomain(zdev_t* dev);
|
||||
extern u8_t zfiWlanQueryCCS(zdev_t* dev);
|
||||
extern void zfiWlanSetCCS(zdev_t* dev, u8_t mode);
|
||||
extern void zfiWlanSetRegulatory(zdev_t* dev, u8_t CCS, u16_t Code, u8_t bfirstChannel);
|
||||
extern const char* zfiHpGetisoNamefromregionCode(zdev_t* dev, u16_t regionCode);
|
||||
extern void zfiWlanSetLEDCtrlParam(zdev_t* dev, u8_t type, u8_t flag);
|
||||
extern u32_t zfiWlanQueryReceivedPacket(zdev_t* dev);
|
||||
extern void zfiWlanCheckSWEncryption(zdev_t* dev);
|
||||
extern u16_t zfiWlanQueryAllowChannels(zdev_t *dev, u16_t *channels);
|
||||
extern u16_t zfiWlanGetMulticastAddressCount(zdev_t* dev);
|
||||
extern void zfiWlanGetMulticastList(zdev_t* dev, u8_t* pMCList);
|
||||
extern void zfiWlanSetPacketFilter(zdev_t* dev, u32_t PacketFilter);
|
||||
extern u8_t zfiCompareWithMulticastListAddress(zdev_t* dev, u16_t* dstMacAddr);
|
||||
extern void zfiWlanSetSafeModeEnabled(zdev_t* dev, u8_t safeMode);
|
||||
extern void zfiWlanSetIBSSAdditionalIELength(zdev_t* dev, u32_t ibssAdditionalIESize, u8_t* ibssAdditionalIE);
|
||||
extern void zfiWlanSetXLinkMode(zdev_t* dev, u32_t setValue);
|
||||
|
||||
/* hprw.c */
|
||||
extern u32_t zfiDbgWriteFlash(zdev_t* dev, u32_t addr, u32_t val);
|
||||
extern u32_t zfiDbgWriteReg(zdev_t* dev, u32_t addr, u32_t val);
|
||||
extern u32_t zfiDbgReadReg(zdev_t* dev, u32_t addr);
|
||||
|
||||
extern u32_t zfiDbgWriteEeprom(zdev_t* dev, u32_t addr, u32_t val);
|
||||
extern u32_t zfiDbgBlockWriteEeprom(zdev_t* dev, u32_t addr, u32_t* buf);
|
||||
extern u32_t zfiDbgBlockWriteEeprom_v2(zdev_t* dev, u32_t addr, u32_t* buf, u32_t wrlen);
|
||||
|
||||
extern u16_t zfiDbgChipEraseFlash(zdev_t *dev);
|
||||
extern u16_t zfiDbgProgramFlash(zdev_t *dev, u32_t offset, u32_t len, u32_t *data);
|
||||
extern u32_t zfiDbgGetFlashCheckSum(zdev_t *dev, u32_t addr, u32_t len);
|
||||
extern u32_t zfiDbgReadFlash(zdev_t *dev, u32_t addr, u32_t len);
|
||||
extern u32_t zfiDownloadFwSet(zdev_t *dev);
|
||||
|
||||
extern u32_t zfiDbgDelayWriteReg(zdev_t* dev, u32_t addr, u32_t val);
|
||||
extern u32_t zfiDbgFlushDelayWrite(zdev_t* dev);
|
||||
|
||||
extern u32_t zfiDbgSetIFSynthesizer(zdev_t* dev, u32_t value);
|
||||
extern u32_t zfiDbgReadTally(zdev_t* dev);
|
||||
|
||||
extern u32_t zfiDbgQueryHwTxBusy(zdev_t* dev);
|
||||
|
||||
extern u8_t zfiWlanGetDestAddrFromBuf(zdev_t *dev, zbuf_t *buf, u16_t *macAddr);
|
||||
|
||||
extern u32_t zfiWlanQueryHwCapability(zdev_t* dev);
|
||||
|
||||
extern void zfiWlanSetDynamicSIFSParam(zdev_t* dev, u8_t val);
|
||||
|
||||
/***** End of section 2 *****/
|
||||
|
||||
/***** section 3 performace evaluation *****/
|
||||
#ifdef ZM_ENABLE_PERFORMANCE_EVALUATION
|
||||
extern void zfiTxPerformanceMSDU(zdev_t* dev, u32_t tick);
|
||||
extern void zfiRxPerformanceMPDU(zdev_t* dev, zbuf_t* buf);
|
||||
extern void zfiRxPerformanceReg(zdev_t* dev, u32_t reg, u32_t rsp);
|
||||
#define ZM_PERFORMANCE_INIT(dev) zfiPerformanceInit(dev);
|
||||
#define ZM_PERFORMANCE_TX_MSDU(dev, tick) zfiTxPerformanceMSDU(dev, tick);
|
||||
#define ZM_PERFORMANCE_RX_MSDU(dev, tick) zfiRxPerformanceMSDU(dev, tick);
|
||||
#define ZM_PERFORMANCE_TX_MPDU(dev, tick) zfiTxPerformanceMPDU(dev, tick);
|
||||
#define ZM_PERFORMANCE_RX_MPDU(dev, buf) zfiRxPerformanceMPDU(dev, buf);
|
||||
#define ZM_PERFORMANCE_RX_SEQ(dev, buf) zfiRxPerformanceSeq(dev, buf);
|
||||
#define ZM_PERFORMANCE_REG(dev, reg, rsp) {if(cmd[1] == reg) zfiRxPerformanceReg(dev, reg, rsp);}
|
||||
#define ZM_PERFORMANCE_DUP(dev, buf1, buf2) zfiRxPerformanceDup(dev, buf1, buf2);
|
||||
#define ZM_PERFORMANCE_FREE(dev, buf) zfiRxPerformanceFree(dev, buf);
|
||||
#define ZM_PERFORMANCE_RX_AMSDU(dev, buf, len) zfiRxPerformanceAMSDU(dev, buf, len);
|
||||
#define ZM_PERFORMANCE_RX_FLUSH(dev) zfiRxPerformanceFlush(dev);
|
||||
#define ZM_PERFORMANCE_RX_CLEAR(dev) zfiRxPerformanceClear(dev);
|
||||
#define ZM_SEQ_DEBUG if (wd->seq_debug) DbgPrint
|
||||
#define ZM_PERFORMANCE_RX_REORDER(dev) zfiRxPerformanceReorder(dev);
|
||||
#else
|
||||
#define ZM_PERFORMANCE_INIT(dev)
|
||||
#define ZM_PERFORMANCE_TX_MSDU(dev, tick)
|
||||
#define ZM_PERFORMANCE_RX_MSDU(dev, tick)
|
||||
#define ZM_PERFORMANCE_TX_MPDU(dev, tick)
|
||||
#define ZM_PERFORMANCE_RX_MPDU(dev, buf)
|
||||
#define ZM_PERFORMANCE_RX_SEQ(dev, buf)
|
||||
#define ZM_PERFORMANCE_REG(dev, reg, rsp)
|
||||
#define ZM_PERFORMANCE_DUP(dev, buf1, buf2)
|
||||
#define ZM_PERFORMANCE_FREE(dev, buf)
|
||||
#define ZM_PERFORMANCE_RX_AMSDU(dev, buf, len)
|
||||
#define ZM_PERFORMANCE_RX_FLUSH(dev)
|
||||
#define ZM_PERFORMANCE_RX_CLEAR(dev)
|
||||
#define ZM_SEQ_DEBUG
|
||||
#define ZM_PERFORMANCE_RX_REORDER(dev)
|
||||
#endif
|
||||
/***** End of section 3 *****/
|
||||
#endif
|
93
drivers/staging/otus/80211core/pub_zfw.h
Normal file
93
drivers/staging/otus/80211core/pub_zfw.h
Normal file
|
@ -0,0 +1,93 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef _PUB_ZFW_H
|
||||
#define _PUB_ZFW_H
|
||||
|
||||
#include "../oal_dt.h"
|
||||
|
||||
|
||||
/* Buffer management */
|
||||
#ifdef ZM_ENABLE_BUFFER_DEBUG
|
||||
extern zbuf_t* zfwBufAllocateWithContext(zdev_t* dev, u16_t len, u8_t *functionName, ULONG line);
|
||||
#define zfwBufAllocate(dev, len) zfwBufAllocateWithContext(dev, len, (u8_t *)__FUNCTION__, __LINE__)
|
||||
#else
|
||||
extern zbuf_t* zfwBufAllocate(zdev_t* dev, u16_t len);
|
||||
#endif
|
||||
extern void zfwBufFree(zdev_t* dev, zbuf_t* buf, u16_t errCode);
|
||||
extern u16_t zfwBufChain(zdev_t* dev, zbuf_t** head, zbuf_t* tail);
|
||||
extern u16_t zfwBufCopy(zdev_t* dev, zbuf_t* dst, zbuf_t* src);
|
||||
extern u16_t zfwBufSetSize(zdev_t* dev, zbuf_t* buf, u16_t size);
|
||||
extern u16_t zfwBufRemoveHead(zdev_t* dev, zbuf_t* buf, u16_t size);
|
||||
extern u16_t zfwBufGetSize(zdev_t* dev, zbuf_t* buf);
|
||||
extern void zfwCopyBufContext(zdev_t* dev, zbuf_t* source, zbuf_t* dest);
|
||||
|
||||
/* Memory management */
|
||||
extern void* zfwMemAllocate(zdev_t* dev, u32_t size);
|
||||
extern void zfwMemFree(zdev_t* dev, void* mem, u32_t size);
|
||||
extern void zfwMemoryCopy(u8_t* dst, u8_t* src, u16_t length);
|
||||
extern void zfwMemoryMove(u8_t* dst, u8_t* src, u16_t length);
|
||||
extern void zfwZeroMemory(u8_t* va, u16_t length);
|
||||
extern u8_t zfwMemoryIsEqual(u8_t* m1, u8_t* m2, u16_t length);
|
||||
|
||||
/* Others */
|
||||
extern void zfwSleep(zdev_t* dev, u32_t ms);
|
||||
extern u16_t zfwGetVapId(zdev_t* dev);
|
||||
extern u16_t zfwStaAddIeWpaRsn(zdev_t* dev, zbuf_t* buf, u16_t offset, u8_t frameType);
|
||||
extern u32_t zfwWaitForEvent(zdev_t *dev, u32_t event, u32_t timeout);
|
||||
extern void zfwSendEvent(zdev_t* dev);
|
||||
extern void zfwGetActiveScanDur(zdev_t* dev, u8_t* Dur );
|
||||
extern void zfwGetShowZeroLengthSSID(zdev_t* dev, u8_t* Dur );
|
||||
/* For debugging */
|
||||
extern void zfwDumpBuf(zdev_t* dev, zbuf_t* buf);
|
||||
extern void zfwDbgReadRegDone(zdev_t* dev, u32_t addr, u32_t val);
|
||||
/* For Evl */
|
||||
extern void zfwDbgDownloadFwInitDone(zdev_t* dev);
|
||||
extern void zfwDbgReadFlashDone(zdev_t* dev, u32_t addr, u32_t* rspdata, u32_t datalen);
|
||||
extern void zfwDbgGetFlashChkSumDone(zdev_t* dev, u32_t* rspdata);
|
||||
extern void zfwDbgProgrameFlashDone(zdev_t* dev);
|
||||
extern void zfwDbgProgrameFlashChkDone(zdev_t* dev);
|
||||
extern void zfwDbgWriteRegDone(zdev_t* dev, u32_t addr, u32_t val);
|
||||
extern void zfwDbgWriteEepromDone(zdev_t* dev, u32_t addr, u32_t val);
|
||||
extern void zfwDbgReadTallyDone(zdev_t* dev);
|
||||
extern void zfwWlanReadRegDone(zdev_t* dev, u32_t addr, u32_t val);
|
||||
extern void zfwWlanWriteRegDone(zdev_t* dev, u32_t addr, u32_t val);
|
||||
extern void zfwWlanReadTallyDone(zdev_t* dev);
|
||||
extern void zfwDbgQueryHwTxBusyDone(zdev_t* dev, u32_t val);
|
||||
extern u32_t zfwReadReg(zdev_t* dev, u32_t offset);
|
||||
extern u32_t zfwReadEeprom(zdev_t* dev, u32_t addr);
|
||||
|
||||
/* Reserved for Vista, please return 0 */
|
||||
extern u8_t zfwGetPktEncExemptionActionType(zdev_t* dev, zbuf_t* buf);
|
||||
|
||||
#ifdef ZM_ENABLE_CENC
|
||||
/* Reserved for CENC, please return 0 */
|
||||
extern u8_t zfwCencHandleBeaconProbrespon(zdev_t* dev, u8_t *pWIEc,
|
||||
u8_t *pPeerSSIDc, u8_t *pPeerAddrc);
|
||||
#endif //ZM_ENABLE_CENC
|
||||
|
||||
#ifdef ZM_HALPLUS_LOCK
|
||||
extern asmlinkage struct zsWlanDev *zfwGetWlanDev(zdev_t* dev);
|
||||
extern asmlinkage void zfwEnterCriticalSection(zdev_t* dev);
|
||||
extern asmlinkage void zfwLeaveCriticalSection(zdev_t* dev);
|
||||
extern asmlinkage u8_t zfwBufReadByte(zdev_t* dev, zbuf_t* buf, u16_t offset);
|
||||
extern asmlinkage u16_t zfwBufReadHalfWord(zdev_t* dev, zbuf_t* buf, u16_t offset);
|
||||
extern asmlinkage void zfwBufWriteByte(zdev_t* dev, zbuf_t* buf, u16_t offset, u8_t value);
|
||||
extern asmlinkage void zfwBufWriteHalfWord(zdev_t* dev, zbuf_t* buf, u16_t offset, u16_t value);
|
||||
extern asmlinkage u8_t *zfwGetBuffer(zdev_t* dev, zbuf_t* buf);
|
||||
#endif
|
||||
|
||||
#endif //_PUB_ZFW_H
|
303
drivers/staging/otus/80211core/queue.c
Normal file
303
drivers/staging/otus/80211core/queue.c
Normal file
|
@ -0,0 +1,303 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* */
|
||||
/* Module Name : queue.c */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module contains queue management functions. */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* None */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
#include "cprecomp.h"
|
||||
#include "queue.h"
|
||||
|
||||
|
||||
struct zsQueue* zfQueueCreate(zdev_t* dev, u16_t size)
|
||||
{
|
||||
struct zsQueue* q;
|
||||
|
||||
if ((q = (struct zsQueue*)zfwMemAllocate(dev, sizeof(struct zsQueue)
|
||||
+ (sizeof(struct zsQueueCell)*(size-1)))) != NULL)
|
||||
{
|
||||
q->size = size;
|
||||
q->sizeMask = size-1;
|
||||
q->head = 0;
|
||||
q->tail = 0;
|
||||
}
|
||||
return q;
|
||||
}
|
||||
|
||||
void zfQueueDestroy(zdev_t* dev, struct zsQueue* q)
|
||||
{
|
||||
u16_t size = sizeof(struct zsQueue) + (sizeof(struct zsQueueCell)*(q->size-1));
|
||||
|
||||
zfQueueFlush(dev, q);
|
||||
zfwMemFree(dev, q, size);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
u16_t zfQueuePutNcs(zdev_t* dev, struct zsQueue* q, zbuf_t* buf, u32_t tick)
|
||||
{
|
||||
u16_t ret = ZM_ERR_QUEUE_FULL;
|
||||
|
||||
zm_msg0_mm(ZM_LV_1, "zfQueuePutNcs()");
|
||||
|
||||
if (((q->tail+1)&q->sizeMask) != q->head)
|
||||
{
|
||||
q->cell[q->tail].buf = buf;
|
||||
q->cell[q->tail].tick = tick;
|
||||
q->tail = (q->tail+1) & q->sizeMask;
|
||||
ret = ZM_SUCCESS;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
u16_t zfQueuePut(zdev_t* dev, struct zsQueue* q, zbuf_t* buf, u32_t tick)
|
||||
{
|
||||
u16_t ret;
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
zmw_enter_critical_section(dev);
|
||||
|
||||
ret = zfQueuePutNcs(dev, q, buf, tick);
|
||||
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
zbuf_t* zfQueueGet(zdev_t* dev, struct zsQueue* q)
|
||||
{
|
||||
zbuf_t* buf = NULL;
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
zmw_enter_critical_section(dev);
|
||||
|
||||
if (q->head != q->tail)
|
||||
{
|
||||
buf = q->cell[q->head].buf;
|
||||
q->head = (q->head+1) & q->sizeMask;
|
||||
}
|
||||
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
u16_t zfCompareDstwithBuf(zdev_t* dev, zbuf_t* buf, u8_t* addr)
|
||||
{
|
||||
u16_t i;
|
||||
u8_t dst[6];
|
||||
|
||||
for (i=0; i<6; i++)
|
||||
{
|
||||
dst[i] = zmw_buf_readb(dev, buf, i);
|
||||
if (dst[i] != addr[i])
|
||||
{
|
||||
return 1+i;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
zbuf_t* zfQueueGetWithMac(zdev_t* dev, struct zsQueue* q, u8_t* addr, u8_t* mb)
|
||||
{
|
||||
zbuf_t* buf;
|
||||
zbuf_t* retBuf = NULL;
|
||||
u16_t index, next;
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
*mb = 0;
|
||||
|
||||
zmw_enter_critical_section(dev);
|
||||
|
||||
index = q->head;
|
||||
|
||||
while (1)
|
||||
{
|
||||
if (index != q->tail)
|
||||
{
|
||||
buf = q->cell[index].buf;
|
||||
|
||||
//if buf's detination address == input addr
|
||||
if (zfCompareDstwithBuf(dev, buf, addr) == 0)
|
||||
{
|
||||
retBuf = buf;
|
||||
//Get it, and trace the whole queue to calculate more bit
|
||||
while ((next =((index+1)&q->sizeMask)) != q->tail)
|
||||
{
|
||||
q->cell[index].buf = q->cell[next].buf;
|
||||
q->cell[index].tick = q->cell[next].tick;
|
||||
|
||||
if ((*mb == 0) && (zfCompareDstwithBuf(dev,
|
||||
q->cell[next].buf, addr) == 0))
|
||||
{
|
||||
*mb = 1;
|
||||
}
|
||||
|
||||
index = next;
|
||||
}
|
||||
q->tail = (q->tail-1) & q->sizeMask;
|
||||
|
||||
zmw_leave_critical_section(dev);
|
||||
return retBuf;
|
||||
}
|
||||
index = (index + 1) & q->sizeMask;
|
||||
} //if (index != q->tail)
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
return retBuf;
|
||||
|
||||
}
|
||||
|
||||
void zfQueueFlush(zdev_t* dev, struct zsQueue* q)
|
||||
{
|
||||
zbuf_t* buf;
|
||||
|
||||
while ((buf = zfQueueGet(dev, q)) != NULL)
|
||||
{
|
||||
zfwBufFree(dev, buf, 0);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void zfQueueAge(zdev_t* dev, struct zsQueue* q, u32_t tick, u32_t msAge)
|
||||
{
|
||||
zbuf_t* buf;
|
||||
u32_t buftick;
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
while (1)
|
||||
{
|
||||
buf = NULL;
|
||||
zmw_enter_critical_section(dev);
|
||||
|
||||
if (q->head != q->tail)
|
||||
{
|
||||
buftick = q->cell[q->head].tick;
|
||||
if (((tick - buftick)*ZM_MS_PER_TICK) > msAge)
|
||||
{
|
||||
buf = q->cell[q->head].buf;
|
||||
q->head = (q->head+1) & q->sizeMask;
|
||||
}
|
||||
}
|
||||
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
if (buf != NULL)
|
||||
{
|
||||
zm_msg0_mm(ZM_LV_0, "Age frame in queue!");
|
||||
zfwBufFree(dev, buf, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
u8_t zfQueueRemovewithIndex(zdev_t* dev, struct zsQueue* q, u16_t index, u8_t* addr)
|
||||
{
|
||||
u16_t next;
|
||||
u8_t mb = 0;
|
||||
|
||||
//trace the whole queue to calculate more bit
|
||||
while ((next =((index+1)&q->sizeMask)) != q->tail)
|
||||
{
|
||||
q->cell[index].buf = q->cell[next].buf;
|
||||
q->cell[index].tick = q->cell[next].tick;
|
||||
|
||||
if ((mb == 0) && (zfCompareDstwithBuf(dev,
|
||||
q->cell[next].buf, addr) == 0))
|
||||
{
|
||||
mb = 1;
|
||||
}
|
||||
|
||||
index = next;
|
||||
}
|
||||
q->tail = (q->tail-1) & q->sizeMask;
|
||||
|
||||
return mb;
|
||||
|
||||
}
|
||||
|
||||
void zfQueueGenerateUapsdTim(zdev_t* dev, struct zsQueue* q,
|
||||
u8_t* uniBitMap, u16_t* highestByte)
|
||||
{
|
||||
zbuf_t* psBuf;
|
||||
u8_t dst[6];
|
||||
u16_t id, aid, index, i;
|
||||
u16_t bitPosition;
|
||||
u16_t bytePosition;
|
||||
zmw_get_wlan_dev(dev);
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
zmw_enter_critical_section(dev);
|
||||
|
||||
index = q->head;
|
||||
|
||||
while (index != q->tail)
|
||||
{
|
||||
psBuf = q->cell[index].buf;
|
||||
for (i=0; i<6; i++)
|
||||
{
|
||||
dst[i] = zmw_buf_readb(dev, psBuf, i);
|
||||
}
|
||||
/* TODO : use u8_t* fot MAC address */
|
||||
if (((id = zfApFindSta(dev, (u16_t*)dst)) != 0xffff)
|
||||
&& (wd->ap.staTable[id].psMode != 0))
|
||||
{
|
||||
/* Calculate PVB only when all AC are delivery-enabled */
|
||||
if ((wd->ap.staTable[id].qosInfo & 0xf) == 0xf)
|
||||
{
|
||||
aid = id + 1;
|
||||
bitPosition = (1 << (aid & 0x7));
|
||||
bytePosition = (aid >> 3);
|
||||
uniBitMap[bytePosition] |= bitPosition;
|
||||
|
||||
if (bytePosition>*highestByte)
|
||||
{
|
||||
*highestByte = bytePosition;
|
||||
}
|
||||
}
|
||||
index = (index+1) & q->sizeMask;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Free garbage UAPSD frame */
|
||||
zfQueueRemovewithIndex(dev, q, index, dst);
|
||||
zfwBufFree(dev, psBuf, 0);
|
||||
}
|
||||
}
|
||||
zmw_leave_critical_section(dev);
|
||||
|
||||
return;
|
||||
}
|
37
drivers/staging/otus/80211core/queue.h
Normal file
37
drivers/staging/otus/80211core/queue.h
Normal file
|
@ -0,0 +1,37 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef _QUEUE_H
|
||||
#define _QUEUE_H
|
||||
|
||||
#include "../oal_dt.h"
|
||||
|
||||
struct zsQueueCell
|
||||
{
|
||||
u32_t tick;
|
||||
zbuf_t* buf;
|
||||
};
|
||||
|
||||
struct zsQueue
|
||||
{
|
||||
u16_t size;
|
||||
u16_t sizeMask;
|
||||
u16_t head;
|
||||
u16_t tail;
|
||||
struct zsQueueCell cell[1];
|
||||
};
|
||||
|
||||
#endif //#ifndef _QUEUE_H
|
874
drivers/staging/otus/80211core/ratectrl.c
Normal file
874
drivers/staging/otus/80211core/ratectrl.c
Normal file
|
@ -0,0 +1,874 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "cprecomp.h"
|
||||
#include "ratectrl.h"
|
||||
|
||||
const u32_t zcRateToPhyCtrl[] =
|
||||
{
|
||||
/* 1M, 2M, 5M, 11M , 0 1 2 3*/
|
||||
0x00000, 0x10000, 0x20000, 0x30000,
|
||||
/* 6M 9M 12M 18M , 4 5 6 7*/
|
||||
0xb0001, 0xf0001, 0xa0001, 0xe0001,
|
||||
/* 24M 36M 48M 54M , 8 9 10 11*/
|
||||
0x90001, 0xd0001, 0x80001, 0xc0001,
|
||||
/* MCS0 MCS1 MCS2 MCS3, 12 13 14 15*/
|
||||
0x00002, 0x10002, 0x20002, 0x30002,
|
||||
/* MCS4 MCS5 MCS6 MCS7, 16 17 18 19*/
|
||||
0x40002, 0x50002, 0x60002, 0x70002,
|
||||
/* MCS8 MCS9 MCS10 MCS11, 20 21 22 23*/
|
||||
0x80002, 0x90002, 0xa0002, 0xb0002,
|
||||
/* MCS12 MCS13 MCS14 MCS15, 24 25 26 27*/
|
||||
0xc0002, 0xd0002, 0xe0002, 0xf0002,
|
||||
/* MCS14SG, MCS15SG MCS7SG , 28 29, 30*/
|
||||
0x800e0002, 0x800f0002, 0x80070002
|
||||
};
|
||||
|
||||
|
||||
const u8_t zcHtRateTable[15][4] =
|
||||
{ /*[5G 20MHz] [5G 40MHz] [2.4G 20MHz] [2.4G 40MHz]*/
|
||||
{ 4, 4, 0, 0}, /*OFDM6M OFDM6M CCK1M CCK1M */
|
||||
{ 5, 5, 1, 1}, /*OFDM9M OFDM9M CCK2M CCK2M */
|
||||
{ 13, 12, 2, 2}, /*MCS1 MCS0 CCK5M CCK5M */
|
||||
{ 14, 13, 3, 3}, /*MCS2 MCS1 CCK11M CCK11M */
|
||||
{ 15, 14, 13, 12}, /*MCS3 MCS2 MCS1 MCS0 */
|
||||
{ 16, 15, 14, 13}, /*MCS4 MCS3 MCS2 MCS1 */
|
||||
{ 23, 16, 15, 14}, /*MCS11 MCS4 MCS3 MCS2 */
|
||||
{ 24, 23, 16, 15}, /*MCS12 MCS11 MCS4 MCS3 */
|
||||
{ 25, 24, 23, 16}, /*MCS13 MCS12 MCS11 MCS4 */
|
||||
{ 26, 25, 24, 23}, /*MCS14 MCS13 MCS12 MCS11 */
|
||||
{ 27, 26, 25, 24}, /*MCS15 MCS14 MCS13 MCS12 */
|
||||
{ 0, 27, 26, 25}, /*0 MCS15 MCS14 MCS13 */
|
||||
{ 0, 29, 27, 26}, /*0 MCS15SG MCS15 MCS14 */
|
||||
{ 0, 0, 0, 28}, /*0 0 0 MCS14SG*/
|
||||
{ 0, 0, 0, 29} /*0 0 0 MCS15SG*/
|
||||
};
|
||||
|
||||
const u8_t zcHtOneTxStreamRateTable[15][4] =
|
||||
{ /*[5G 20MHz] [5G 40MHz] [2.4G 20MHz] [2.4G 40MHz]*/
|
||||
{ 4, 4, 0, 0}, /*OFDM6M OFDM6M CCK1M CCK1M */
|
||||
{ 5, 5, 1, 1}, /*OFDM9M OFDM9M CCK2M CCK2M */
|
||||
{ 13, 12, 2, 2}, /*MCS1 MCS0 CCK5M CCK5M */
|
||||
{ 14, 13, 3, 3}, /*MCS2 MCS1 CCK11M CCK11M */
|
||||
{ 15, 14, 13, 12}, /*MCS3 MCS2 MCS1 MCS0 */
|
||||
{ 16, 15, 14, 13}, /*MCS4 MCS3 MCS2 MCS1 */
|
||||
{ 17, 16, 15, 14}, /*MCS5 MCS4 MCS3 MCS2 */
|
||||
{ 18, 17, 16, 15}, /*MCS6 MCS5 MCS4 MCS3 */
|
||||
{ 19, 18, 17, 16}, /*MCS7 MCS6 MCS5 MCS4 */
|
||||
{ 0, 19, 18, 17}, /*0 MCS7 MCS6 MCS5 */
|
||||
{ 0, 30, 19, 18}, /*0 MCS7SG MCS7 MCS6 */
|
||||
{ 0, 0, 0, 19}, /*0 0 0 MCS7 */
|
||||
{ 0, 0, 0, 30}, /*0 0 0 MCS7SG */
|
||||
{ 0, 0, 0, 0 }, /*0 0 0 0 */
|
||||
{ 0, 0, 0, 0 } /*0 0 0 0 */
|
||||
};
|
||||
|
||||
const u16_t zcRate[] =
|
||||
{
|
||||
1, 2, 5, 11, /* 1M, 2M, 5M, 11M , 0 1 2 3*/
|
||||
6, 9, 12, 18, /* 6M 9M 12M 18M , 4 5 6 7*/
|
||||
24, 36, 48, 54, /* 24M 36M 48M 54M , 8 9 10 11*/
|
||||
13, 27, 40, 54, /* MCS0 MCS1 MCS2 MCS3 , 12 13 14 15*/
|
||||
81, 108, 121, 135, /* MCS4 MCS5 MCS6 MCS7 , 16 17 18 19*/
|
||||
27, 54, 81, 108, /* MCS8 MCS9 MCS10 MCS11 , 20 21 22 23*/
|
||||
162, 216, 243, 270, /* MCS12 MCS13 MCS14 MCS15 , 24 25 26 27*/
|
||||
270, 300, 150 /* MCS14SG, MCS15SG, MCS7SG , 28 29 30*/
|
||||
};
|
||||
|
||||
const u16_t PERThreshold[] =
|
||||
{
|
||||
100, 50, 50, 50, /* 1M, 2M, 5M, 11M , 0 1 2 3*/
|
||||
50, 50, 30, 30, /* 6M 9M 12M 18M , 4 5 6 7*/
|
||||
25, 25, 25, 20, /* 24M 36M 48M 54M , 8 9 10 11*/
|
||||
50, 50, 50, 40, /* MCS0 MCS1 MCS2 MCS3 , 12 13 14 15*/
|
||||
30, 30, 30, 30, /* MCS4 MCS5 MCS6 MCS7 , 16 17 18 19*/
|
||||
30, 30, 25, 25, /* MCS8 MCS9 MCS10 MCS11 , 20 21 22 23*/
|
||||
25, 25, 15, 15, /* MCS12 MCS13 MCS14 MCS15 , 24 25 26 27*/
|
||||
15, 15, 10 /* MCS14SG, MCS15SG , 28 29*/
|
||||
};
|
||||
|
||||
const u16_t FailDiff[] =
|
||||
{
|
||||
40, 46, 40, 0, /* 1M, 2M, 5M, 11M , 0 1 2 3*/
|
||||
24, 17, 22, 16, /* 6M 9M 12M 18M , 4 5 6 7*/
|
||||
19, 13, 5, 0, /* 24M 36M 48M 54M , 8 9 10 11*/
|
||||
36, 22, 15, 19, /* MCS0 MCS1 MCS2 MCS3 , 12 13 14 15*/
|
||||
12, 5, 4, 7, /* MCS4 MCS5 MCS6 MCS7 , 16 17 18 19*/
|
||||
0, 0, 0, 0, /* MCS8 MCS9 MCS10 MCS11 , 20 21 22 23*/
|
||||
9, 4, 3, 3, /* MCS12 MCS13 MCS14 MCS15 , 24 25 26 27*/
|
||||
3, 0, 0 /* MCS14SG, MCS15SG , 28 29*/
|
||||
};
|
||||
|
||||
|
||||
#ifdef ZM_ENABLE_BA_RATECTRL
|
||||
u32_t TxMPDU[29];
|
||||
u32_t BAFail[29];
|
||||
u32_t BAPER[29];
|
||||
const u16_t BADiff[] =
|
||||
{
|
||||
0, 0, 0, 0,
|
||||
0, 0, 0, 0,
|
||||
0, 0, 0, 0,
|
||||
361, 220, 151, 187,
|
||||
122, 48, 41, 65,
|
||||
0, 0, 0, 0,
|
||||
88, 33, 27, 25,
|
||||
0
|
||||
};
|
||||
#endif
|
||||
|
||||
/************************************************************************/
|
||||
/* */
|
||||
/* FUNCTION DESCRIPTION zfRateCtrlInitCell */
|
||||
/* Initialize rate control cell. */
|
||||
/* */
|
||||
/* INPUTS */
|
||||
/* dev : device pointer */
|
||||
/* type : 0=>11b, 1=>11a/g, 2=>11n, 3=>11n one Tx stream */
|
||||
/* gBand : 1=>2.4G, 0=>5G */
|
||||
/* */
|
||||
/* OUTPUTS */
|
||||
/* None */
|
||||
/* */
|
||||
/* AUTHOR */
|
||||
/* Stephen Chen Atheros Communications, INC. 2007.2 */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
void zfRateCtrlInitCell(zdev_t* dev, struct zsRcCell* rcCell, u8_t type,
|
||||
u8_t gBand, u8_t SG40)
|
||||
{
|
||||
u8_t i;
|
||||
u8_t maxrate;
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
if (SG40) SG40 = 1;
|
||||
|
||||
if (gBand != 0)
|
||||
{
|
||||
if (type == 1) //11g
|
||||
{
|
||||
for (i=0; i<4; i++) //1M 2M 5M 11M
|
||||
{
|
||||
rcCell->operationRateSet[i] = (u8_t)i;
|
||||
}
|
||||
for (i=4; i<10; i++) //12M 18M 24M 36M 48M 54M
|
||||
{
|
||||
rcCell->operationRateSet[i] = 2+i;
|
||||
}
|
||||
rcCell->operationRateCount = 10;
|
||||
rcCell->currentRateIndex = 5; //18M
|
||||
}
|
||||
else if (type == 2) //11ng
|
||||
{
|
||||
if (wd->wlanMode == ZM_MODE_AP) //AP 11ng 40M
|
||||
{
|
||||
for (i=0; i<15; i++)
|
||||
{
|
||||
rcCell->operationRateSet[i] = zcHtRateTable[i][3];
|
||||
}
|
||||
if(!SG40) rcCell->operationRateSet[13] = 27;
|
||||
rcCell->operationRateCount = 14+SG40;
|
||||
rcCell->currentRateIndex = 10;
|
||||
}
|
||||
else //STA
|
||||
{
|
||||
if (wd->sta.htCtrlBandwidth == ZM_BANDWIDTH_40MHZ) //11ng 40M
|
||||
{
|
||||
for (i=0; i<15; i++)
|
||||
{
|
||||
rcCell->operationRateSet[i] = zcHtRateTable[i][3];
|
||||
}
|
||||
if(!SG40) rcCell->operationRateSet[13] = 27;
|
||||
rcCell->operationRateCount = 14+SG40;
|
||||
rcCell->currentRateIndex = 10;
|
||||
}
|
||||
else //11ng 20M
|
||||
{
|
||||
for (i=0; i<13; i++)
|
||||
{
|
||||
rcCell->operationRateSet[i] = zcHtRateTable[i][2];
|
||||
}
|
||||
rcCell->operationRateCount = 13;
|
||||
rcCell->currentRateIndex = 9;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (type == 3) //11ng one Tx stream
|
||||
{
|
||||
if (wd->sta.htCtrlBandwidth == ZM_BANDWIDTH_40MHZ) //11ng 40M one Tx stream
|
||||
{
|
||||
if(SG40 != 0)
|
||||
{
|
||||
maxrate = 13;
|
||||
}
|
||||
else
|
||||
{
|
||||
maxrate = 12;
|
||||
}
|
||||
for (i=0; i<maxrate; i++)
|
||||
{
|
||||
rcCell->operationRateSet[i] = zcHtOneTxStreamRateTable[i][3];
|
||||
}
|
||||
rcCell->operationRateCount = i;
|
||||
rcCell->currentRateIndex = ((i+1)*3)/4;
|
||||
}
|
||||
else //11ng 20M
|
||||
{
|
||||
for (i=0; i<11; i++)
|
||||
{
|
||||
rcCell->operationRateSet[i] = zcHtOneTxStreamRateTable[i][2];
|
||||
}
|
||||
rcCell->operationRateCount = i;
|
||||
rcCell->currentRateIndex = ((i+1)*3)/4;
|
||||
}
|
||||
}
|
||||
else //if (type == 0) //11b
|
||||
{
|
||||
for (i=0; i<4; i++)
|
||||
{
|
||||
rcCell->operationRateSet[i] = (u8_t)i;
|
||||
}
|
||||
rcCell->operationRateCount = 4;
|
||||
rcCell->currentRateIndex = rcCell->operationRateCount-1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (type == 2) //11na
|
||||
{
|
||||
if (wd->wlanMode == ZM_MODE_AP) //AP 11na 40M
|
||||
{
|
||||
for (i=0; i<(12+SG40); i++)
|
||||
{
|
||||
rcCell->operationRateSet[i] = zcHtRateTable[i][1];
|
||||
}
|
||||
rcCell->operationRateCount = 12+SG40;
|
||||
rcCell->currentRateIndex = 8;
|
||||
}
|
||||
else //STA
|
||||
{
|
||||
if (wd->sta.htCtrlBandwidth == ZM_BANDWIDTH_40MHZ) //11na 40M
|
||||
{
|
||||
for (i=0; i<(12+SG40); i++)
|
||||
{
|
||||
rcCell->operationRateSet[i] = zcHtRateTable[i][1];
|
||||
}
|
||||
rcCell->operationRateCount = 12+SG40;
|
||||
rcCell->currentRateIndex = 8;
|
||||
}
|
||||
else //11na 20M
|
||||
{
|
||||
for (i=0; i<11; i++)
|
||||
{
|
||||
rcCell->operationRateSet[i] = zcHtRateTable[i][0];
|
||||
}
|
||||
rcCell->operationRateCount = 11;
|
||||
rcCell->currentRateIndex = 7;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (type == 3) //11na one Tx stream
|
||||
{
|
||||
if (wd->sta.htCtrlBandwidth == ZM_BANDWIDTH_40MHZ) //11na 40M one Tx stream
|
||||
{
|
||||
if(SG40 != 0)
|
||||
{
|
||||
maxrate = 11;
|
||||
}
|
||||
else
|
||||
{
|
||||
maxrate = 10;
|
||||
}
|
||||
for (i=0; i<maxrate; i++)
|
||||
{
|
||||
rcCell->operationRateSet[i] = zcHtOneTxStreamRateTable[i][1];
|
||||
}
|
||||
rcCell->operationRateCount = i;
|
||||
rcCell->currentRateIndex = ((i+1)*3)/4;
|
||||
}
|
||||
else //11ng 20M
|
||||
{
|
||||
for (i=0; i<9; i++)
|
||||
{
|
||||
rcCell->operationRateSet[i] = zcHtOneTxStreamRateTable[i][0];
|
||||
}
|
||||
rcCell->operationRateCount = i;
|
||||
rcCell->currentRateIndex = ((i+1)*3)/4;
|
||||
}
|
||||
}
|
||||
else //if (type == 1) //11a
|
||||
{
|
||||
for (i=0; i<8; i++) //6M 9M 12M 18M 24M 36M 48M 54M
|
||||
{
|
||||
rcCell->operationRateSet[i] = i+4;
|
||||
}
|
||||
rcCell->operationRateCount = 8;
|
||||
rcCell->currentRateIndex = 4; //24M
|
||||
}
|
||||
}
|
||||
|
||||
rcCell->flag = 0;
|
||||
rcCell->txCount = 0;
|
||||
rcCell->failCount = 0;
|
||||
rcCell->currentRate = rcCell->operationRateSet[rcCell->currentRateIndex];
|
||||
rcCell->lasttxCount = 0;
|
||||
rcCell->lastTime = wd->tick;
|
||||
rcCell->probingTime = wd->tick;
|
||||
for (i=0; i<ZM_RATE_TABLE_SIZE; i++) {
|
||||
wd->PER[i] = 0;
|
||||
wd->txMPDU[i] = wd->txFail[i] = 0;
|
||||
}
|
||||
wd->probeCount = 0;
|
||||
wd->probeInterval = 0;
|
||||
#ifdef ZM_ENABLE_BA_RATECTRL
|
||||
for (i=0; i<29; i++) {
|
||||
TxMPDU[i]=0;
|
||||
BAFail[i]=0;
|
||||
BAPER[i]=0;
|
||||
}
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************/
|
||||
/* */
|
||||
/* FUNCTION DESCRIPTION zfRateCtrlGetHigherRate */
|
||||
/* Get a higher rate. */
|
||||
/* */
|
||||
/* INPUTS */
|
||||
/* rcCell : rate control cell */
|
||||
/* */
|
||||
/* OUTPUTS */
|
||||
/* rate */
|
||||
/* */
|
||||
/* AUTHOR */
|
||||
/* Stephen Chen Atheros Communications, INC. 2007.2 */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
u8_t zfRateCtrlGetHigherRate(struct zsRcCell* rcCell)
|
||||
{
|
||||
u8_t rateIndex;
|
||||
|
||||
rateIndex = rcCell->currentRateIndex
|
||||
+ (((rcCell->currentRateIndex+1) < rcCell->operationRateCount)?1:0);
|
||||
return rcCell->operationRateSet[rateIndex];
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************/
|
||||
/* */
|
||||
/* FUNCTION DESCRIPTION zfRateCtrlNextLowerRate */
|
||||
/* Get a lower rate. */
|
||||
/* */
|
||||
/* INPUTS */
|
||||
/* rcCell : rate control cell */
|
||||
/* */
|
||||
/* OUTPUTS */
|
||||
/* rate */
|
||||
/* */
|
||||
/* AUTHOR */
|
||||
/* Stephen Chen Atheros Communications, INC. 2007.2 */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
u8_t zfRateCtrlNextLowerRate(zdev_t* dev, struct zsRcCell* rcCell)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
if (rcCell->currentRateIndex > 0)
|
||||
{
|
||||
rcCell->currentRateIndex--;
|
||||
rcCell->currentRate = rcCell->operationRateSet[rcCell->currentRateIndex];
|
||||
}
|
||||
zm_msg1_tx(ZM_LV_0, "Lower Tx Rate=", rcCell->currentRate);
|
||||
//DbgPrint("Lower Tx Rate=%d", rcCell->currentRate);
|
||||
rcCell->failCount = rcCell->txCount = 0;
|
||||
rcCell->lasttxCount = 0;
|
||||
rcCell->lastTime = wd->tick;
|
||||
return rcCell->currentRate;
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************/
|
||||
/* */
|
||||
/* FUNCTION DESCRIPTION zfRateCtrlRateDiff */
|
||||
/* Rate difference. */
|
||||
/* */
|
||||
/* INPUTS */
|
||||
/* rcCell : rate control cell */
|
||||
/* retryRate : retry rate */
|
||||
/* */
|
||||
/* OUTPUTS */
|
||||
/* rate difference */
|
||||
/* */
|
||||
/* AUTHOR */
|
||||
/* Stephen Chen Atheros Communications, INC. 2007.2 */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
u8_t zfRateCtrlRateDiff(struct zsRcCell* rcCell, u8_t retryRate)
|
||||
{
|
||||
u16_t i;
|
||||
|
||||
/* Find retryRate in operationRateSet[] */
|
||||
for (i=0; i<rcCell->operationRateCount; i++)
|
||||
{
|
||||
if (retryRate == rcCell->operationRateSet[i])
|
||||
{
|
||||
if (i < rcCell->currentRateIndex)
|
||||
{
|
||||
return ((rcCell->currentRateIndex - i)+1)>>1;
|
||||
}
|
||||
else if (i == rcCell->currentRateIndex == 0)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* TODO : retry rate not in operation rate set */
|
||||
zm_msg1_tx(ZM_LV_0, "Not in operation rate set:", retryRate);
|
||||
return 1;
|
||||
|
||||
}
|
||||
|
||||
u32_t zfRateCtrlUDPTP(zdev_t* dev, u16_t Rate, u32_t PER) {
|
||||
if ((PER < 100) && (Rate > 0) && PER)
|
||||
return 1168000/(((12304/Rate)+197)*(100+100*PER/(100-PER)));
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8_t zfRateCtrlFindMaxUDPTP(zdev_t* dev, struct zsRcCell* rcCell) {
|
||||
u8_t i, maxIndex=0, rateIndex;
|
||||
u32_t max=0, UDPThroughput;
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
rateIndex = zm_agg_min(rcCell->currentRateIndex+3, rcCell->operationRateCount-1);
|
||||
for (i=rcCell->currentRateIndex; i < rateIndex; i++) {
|
||||
UDPThroughput = zfRateCtrlUDPTP(dev, zcRate[rcCell->operationRateSet[i]],
|
||||
wd->PER[rcCell->operationRateSet[i]]);
|
||||
if (max < UDPThroughput) {
|
||||
max = UDPThroughput;
|
||||
maxIndex = i;
|
||||
}
|
||||
}
|
||||
|
||||
return rcCell->operationRateSet[maxIndex];
|
||||
}
|
||||
/************************************************************************/
|
||||
/* */
|
||||
/* FUNCTION DESCRIPTION zfRateCtrlGetTxRate */
|
||||
/* Get transmission rate. */
|
||||
/* */
|
||||
/* INPUTS */
|
||||
/* dev : device pointer */
|
||||
/* rcCell : rate control cell */
|
||||
/* probing : rate probing flag */
|
||||
/* */
|
||||
/* OUTPUTS */
|
||||
/* Tx rate */
|
||||
/* */
|
||||
/* AUTHOR */
|
||||
/* Stephen Chen Atheros Communications, INC. 2007.2 */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
u16_t zfRateCtrlGetTxRate(zdev_t* dev, struct zsRcCell* rcCell, u16_t* probing)
|
||||
{
|
||||
u8_t newRate, highRate;
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
zm_msg1_tx(ZM_LV_3, "txCount=", rcCell->txCount);
|
||||
zm_msg1_tx(ZM_LV_3, "probingTime=", rcCell->probingTime);
|
||||
zm_msg1_tx(ZM_LV_3, "tick=", wd->tick);
|
||||
*probing = 0;
|
||||
newRate = rcCell->currentRate;
|
||||
|
||||
if (wd->probeCount && (wd->probeCount < wd->success_probing))
|
||||
{
|
||||
if (wd->probeInterval < 50)
|
||||
{
|
||||
wd->probeInterval++;
|
||||
}
|
||||
else
|
||||
{
|
||||
wd->probeInterval++;
|
||||
if (wd->probeInterval > 52) //probe 51, 52, 53 three packets every 50 packets
|
||||
{
|
||||
wd->probeInterval = 0;
|
||||
}
|
||||
newRate=zfRateCtrlGetHigherRate(rcCell);
|
||||
*probing = 1;
|
||||
wd->probeCount++;
|
||||
rcCell->probingTime = wd->tick;
|
||||
}
|
||||
}
|
||||
/* Accumulate at least 1000ms and 8 packets or Accumulate over 1K packets */
|
||||
else if ((((wd->tick - rcCell->probingTime) > (ZM_RATE_CTRL_PROBING_INTERVAL_MS/ZM_MS_PER_TICK))
|
||||
&& (rcCell->txCount >= ZM_RATE_CTRL_MIN_PROBING_PACKET))
|
||||
|| (rcCell->txCount >= 1000))
|
||||
{
|
||||
#ifndef ZM_DISABLE_RATE_CTRL
|
||||
/* PER = fail/total */
|
||||
wd->probeCount = 0;
|
||||
wd->probeSuccessCount = 0;
|
||||
if (wd->txMPDU[rcCell->currentRate] != 0) {
|
||||
wd->PER[rcCell->currentRate] = zm_agg_min(100,
|
||||
(wd->txFail[rcCell->currentRate]*100)/wd->txMPDU[rcCell->currentRate]);
|
||||
if (!wd->PER[rcCell->currentRate]) wd->PER[rcCell->currentRate] ++;
|
||||
}
|
||||
|
||||
/* if PER < threshold, do rate probing, return probing rate */
|
||||
if ((wd->PER[rcCell->currentRate] <= (ZM_RATE_PROBING_THRESHOLD+15)) ||
|
||||
((rcCell->currentRate <= 16) &&
|
||||
((wd->PER[rcCell->currentRate]/2) <= ZM_RATE_PROBING_THRESHOLD)))
|
||||
{
|
||||
if ((newRate=zfRateCtrlGetHigherRate(rcCell)) != rcCell->currentRate)
|
||||
{
|
||||
*probing = 1;
|
||||
wd->probeCount++;
|
||||
wd->probeInterval = 0;
|
||||
wd->success_probing =
|
||||
(rcCell->currentRate <= 16)? (ZM_RATE_SUCCESS_PROBING/2) : ZM_RATE_SUCCESS_PROBING;
|
||||
//DbgPrint("Start Probing");
|
||||
zm_msg1_tx(ZM_LV_0, "Probing Rate=", newRate);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
zm_msg0_tx(ZM_LV_1, "Diminish counter");
|
||||
rcCell->failCount = rcCell->failCount>>1;
|
||||
rcCell->txCount = rcCell->txCount>>1;
|
||||
wd->txFail[rcCell->currentRate] = wd->txFail[rcCell->currentRate] >> 1;
|
||||
wd->txMPDU[rcCell->currentRate] = wd->txMPDU[rcCell->currentRate] >> 1;
|
||||
|
||||
|
||||
if (rcCell->currentRate > 15) {
|
||||
highRate = zfRateCtrlGetHigherRate(rcCell);
|
||||
if ((highRate != rcCell->currentRate) && wd->PER[highRate] &&
|
||||
((wd->PER[rcCell->currentRate] + FailDiff[rcCell->currentRate]) >
|
||||
wd->PER[highRate])) {
|
||||
//DbgPrint("PER compare force raise rate to %d", highRate);
|
||||
wd->probeSuccessCount = wd->probeCount = ZM_RATE_SUCCESS_PROBING;
|
||||
zfRateCtrlTxSuccessEvent(dev, rcCell, highRate);
|
||||
}
|
||||
}
|
||||
else {
|
||||
highRate = zfRateCtrlFindMaxUDPTP(dev, rcCell);
|
||||
if (rcCell->currentRate < highRate) {
|
||||
//DbgPrint("UDP Throughput compare force raise rate to %d", highRate);
|
||||
wd->probeSuccessCount = wd->probeCount = ZM_RATE_SUCCESS_PROBING;
|
||||
zfRateCtrlTxSuccessEvent(dev, rcCell, highRate);
|
||||
}
|
||||
}
|
||||
rcCell->probingTime = wd->tick;
|
||||
}
|
||||
|
||||
if( (wd->tick > 1000)
|
||||
&& ((wd->tick - rcCell->lastTime) > 3840) )
|
||||
{
|
||||
if (rcCell->lasttxCount < 70)
|
||||
{
|
||||
rcCell->failCount = rcCell->failCount>>1;
|
||||
rcCell->txCount = rcCell->txCount>>1;
|
||||
wd->txFail[rcCell->currentRate] = wd->txFail[rcCell->currentRate] >> 1;
|
||||
wd->txMPDU[rcCell->currentRate] = wd->txMPDU[rcCell->currentRate] >> 1;
|
||||
|
||||
rcCell->failCount = (rcCell->failCount < rcCell->txCount)?
|
||||
rcCell->failCount : rcCell->txCount;
|
||||
wd->txFail[rcCell->currentRate] = (wd->txFail[rcCell->currentRate] < wd->txMPDU[rcCell->currentRate])?
|
||||
wd->txFail[rcCell->currentRate] : wd->txMPDU[rcCell->currentRate];
|
||||
}
|
||||
|
||||
rcCell->lastTime = wd->tick;
|
||||
rcCell->lasttxCount = 0;
|
||||
}
|
||||
|
||||
rcCell->txCount++;
|
||||
rcCell->lasttxCount++;
|
||||
wd->txMPDU[rcCell->currentRate]++;
|
||||
zm_msg1_tx(ZM_LV_1, "Get Tx Rate=", newRate);
|
||||
return newRate;
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************/
|
||||
/* */
|
||||
/* FUNCTION DESCRIPTION zfRateCtrlTxFailEvent */
|
||||
/* Tx fail event. Calculate PER and lower Tx rate if under */
|
||||
/* PER under threshold. */
|
||||
/* */
|
||||
/* INPUTS */
|
||||
/* rcCell : rate control cell */
|
||||
/* retryRate : retry rate */
|
||||
/* */
|
||||
/* OUTPUTS */
|
||||
/* None */
|
||||
/* */
|
||||
/* AUTHOR */
|
||||
/* Stephen Chen Atheros Communications, INC. 2007.2 */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
void zfRateCtrlTxFailEvent(zdev_t* dev, struct zsRcCell* rcCell, u8_t aggRate, u32_t retryRate)
|
||||
{
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
#ifndef ZM_DISABLE_RATE_CTRL
|
||||
//DbgPrint("aggRate=%d, retryRate=%d", aggRate, retryRate);
|
||||
if (aggRate && (aggRate != rcCell->currentRate)) {
|
||||
wd->txFail[aggRate] += retryRate;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!aggRate) {
|
||||
retryRate = (zfRateCtrlRateDiff(rcCell, (u8_t)retryRate)+1)>>1;
|
||||
if (rcCell->currentRate <12) //legacy rate
|
||||
{
|
||||
retryRate*=2;
|
||||
}
|
||||
}
|
||||
rcCell->failCount += retryRate;
|
||||
wd->txFail[rcCell->currentRate] += retryRate;
|
||||
|
||||
//DbgPrint("failCount=%d", rcCell->failCount);
|
||||
if (rcCell->failCount > ZM_MIN_RATE_FAIL_COUNT)
|
||||
{
|
||||
if (wd->txMPDU[rcCell->currentRate] != 0) {
|
||||
wd->PER[rcCell->currentRate] = zm_agg_min(100,
|
||||
(wd->txFail[rcCell->currentRate]*100)/wd->txMPDU[rcCell->currentRate]);
|
||||
if (!wd->PER[rcCell->currentRate]) wd->PER[rcCell->currentRate] ++;
|
||||
}
|
||||
//zm_msg1_tx(ZM_LV_1, "PER=", per);
|
||||
//DbgPrint("PER=%d, txFail=%d, txMPDU=%d", wd->PER[rcCell->currentRate], wd->txFail[rcCell->currentRate], wd->txMPDU[rcCell->currentRate]);
|
||||
if (wd->PER[rcCell->currentRate] > PERThreshold[rcCell->currentRate])
|
||||
{
|
||||
/* Lower Tx Rate if PER < THRESHOLD */
|
||||
zfRateCtrlNextLowerRate(dev, rcCell);
|
||||
rcCell->flag |= ZM_RC_TRAINED_BIT;
|
||||
|
||||
// Resolve compatibility problem with Marvell
|
||||
if(rcCell->currentRate == 15)
|
||||
{
|
||||
zmw_leave_critical_section(dev);
|
||||
zfHpSetAggPktNum(dev, 8);
|
||||
zmw_enter_critical_section(dev);
|
||||
}
|
||||
|
||||
wd->txFail[rcCell->currentRate] = wd->txFail[rcCell->currentRate] >> 1;
|
||||
wd->txMPDU[rcCell->currentRate] = wd->txMPDU[rcCell->currentRate] >> 1;
|
||||
|
||||
wd->probeCount = wd->probeSuccessCount = 0;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************/
|
||||
/* */
|
||||
/* FUNCTION DESCRIPTION zfRateCtrlTxSuccessEvent */
|
||||
/* Tx success event. Raise Tx rate because rate probing success. */
|
||||
/* */
|
||||
/* INPUTS */
|
||||
/* rcCell : rate control cell */
|
||||
/* successRate : success rate */
|
||||
/* */
|
||||
/* OUTPUTS */
|
||||
/* None */
|
||||
/* */
|
||||
/* AUTHOR */
|
||||
/* Stephen Chen Atheros Communications, INC. 2007.2 */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
void zfRateCtrlTxSuccessEvent(zdev_t* dev, struct zsRcCell* rcCell, u8_t successRate)
|
||||
{
|
||||
/* Raise Tx Rate */
|
||||
u16_t i, PERProbe;
|
||||
u16_t pcount;
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
zmw_declare_for_critical_section();
|
||||
|
||||
//DbgPrint("Probing successRate=%d", successRate);
|
||||
/* Find successRate in operationRateSet[] */
|
||||
wd->probeSuccessCount++;
|
||||
if (wd->probeCount < wd->success_probing)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
pcount = wd->probeCount;
|
||||
if (pcount != 0)
|
||||
{
|
||||
PERProbe = wd->probeSuccessCount * 100 / pcount;
|
||||
}
|
||||
else
|
||||
{
|
||||
PERProbe = 1;
|
||||
}
|
||||
|
||||
if (PERProbe < ((rcCell->currentRate < 16)? 80:100))
|
||||
{
|
||||
return;
|
||||
}
|
||||
//DbgPrint("wd->probeCount=%d, wd->probeSuccessCount=%d", wd->probeCount, wd->probeSuccessCount);
|
||||
wd->probeCount = wd->probeSuccessCount = 0;
|
||||
for (i=0; i<rcCell->operationRateCount; i++)
|
||||
{
|
||||
if (successRate == rcCell->operationRateSet[i])
|
||||
{
|
||||
if (i > rcCell->currentRateIndex)
|
||||
{
|
||||
/* Raise current Tx rate */
|
||||
zm_msg1_tx(ZM_LV_0, "Raise Tx Rate=", successRate);
|
||||
//DbgPrint("Raise Tx Rate=%d", successRate);
|
||||
|
||||
// Resolve compatibility problem with Marvell
|
||||
if((rcCell->currentRate <= 15) && (successRate > 15))
|
||||
{
|
||||
zmw_leave_critical_section(dev);
|
||||
zfHpSetAggPktNum(dev, 16);
|
||||
zmw_enter_critical_section(dev);
|
||||
}
|
||||
|
||||
rcCell->currentRate = successRate;
|
||||
rcCell->currentRateIndex = (u8_t)i;
|
||||
rcCell->failCount = rcCell->txCount = 0;
|
||||
rcCell->lasttxCount = 0;
|
||||
rcCell->lastTime = wd->tick;
|
||||
wd->txFail[rcCell->currentRate] = wd->txFail[rcCell->currentRate] >> 1;
|
||||
wd->txMPDU[rcCell->currentRate] = wd->txMPDU[rcCell->currentRate] >> 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************/
|
||||
/* */
|
||||
/* FUNCTION DESCRIPTION zfRateCtrlRxRssiEvent */
|
||||
/* Rx RSSI event. Calculate RSSI moving average, accelarate */
|
||||
/* rate probing if RSSI variation over threshold. */
|
||||
/* */
|
||||
/* INPUTS */
|
||||
/* rcCell : rate control cell */
|
||||
/* successRate : success rate */
|
||||
/* */
|
||||
/* OUTPUTS */
|
||||
/* None */
|
||||
/* */
|
||||
/* AUTHOR */
|
||||
/* Stephen Chen Atheros Communications, INC. 2007.2 */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
void zfRateCtrlRxRssiEvent(struct zsRcCell* rcCell, u16_t rxRssi)
|
||||
{
|
||||
/* if delta(rcCell->rxRssi, rxRssi) > ZM_RATE_CTRL_RSSI_VARIATION */
|
||||
if ((rcCell->rxRssi - rxRssi) > ZM_RATE_CTRL_RSSI_VARIATION)
|
||||
{
|
||||
/* Accelerate rate probing via decreaing rcCell->probingTime */
|
||||
rcCell->probingTime -= ZM_RATE_CTRL_PROBING_INTERVAL_MS/ZM_MS_PER_TICK;
|
||||
}
|
||||
|
||||
/* Update RSSI moving average */
|
||||
rcCell->rxRssi = (((rcCell->rxRssi*7) + rxRssi)+4) >> 3;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
#ifdef ZM_ENABLE_BA_RATECTRL
|
||||
u8_t HigherRate(u8_t Rate) {
|
||||
if (Rate < 28) Rate++; //28=MCS15SG, 27=MCS15, 26=MCS14, 25=MCS13
|
||||
if (Rate > 28) Rate = 28;
|
||||
while ((Rate >= 20) && (Rate <= 23)) {
|
||||
Rate ++;
|
||||
}
|
||||
return Rate;
|
||||
}
|
||||
|
||||
u8_t LowerRate(u8_t Rate) {
|
||||
if (Rate > 1) Rate--;
|
||||
while ((Rate >= 20) && (Rate <= 23)) {
|
||||
Rate --;
|
||||
}
|
||||
return Rate;
|
||||
}
|
||||
|
||||
u8_t RateMapToRateIndex(u8_t Rate, struct zsRcCell* rcCell) {
|
||||
u8_t i;
|
||||
for (i=0; i<rcCell->operationRateCount; i++) {
|
||||
if (Rate == rcCell->operationRateSet[i]) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void zfRateCtrlAggrSta(zdev_t* dev) {
|
||||
u8_t RateIndex, Rate;
|
||||
u8_t HRate;
|
||||
u8_t LRate;
|
||||
u32_t RateCtrlTxMPDU, RateCtrlBAFail;
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
RateIndex = wd->sta.oppositeInfo[0].rcCell.currentRateIndex;
|
||||
Rate = wd->sta.oppositeInfo[0].rcCell.operationRateSet[RateIndex];
|
||||
|
||||
TxMPDU[Rate] = (TxMPDU[Rate] / 5) + (wd->commTally.RateCtrlTxMPDU * 4 / 5);
|
||||
BAFail[Rate] = (BAFail[Rate] / 5) + (wd->commTally.RateCtrlBAFail * 4 / 5);
|
||||
RateCtrlTxMPDU = wd->commTally.RateCtrlTxMPDU;
|
||||
RateCtrlBAFail = wd->commTally.RateCtrlBAFail;
|
||||
wd->commTally.RateCtrlTxMPDU = 0;
|
||||
wd->commTally.RateCtrlBAFail = 0;
|
||||
if (TxMPDU[Rate] > 0) {
|
||||
BAPER[Rate] = BAFail[Rate] * 1000 / TxMPDU[Rate]; //PER*1000
|
||||
BAPER[Rate] = (BAPER[Rate]>0)? BAPER[Rate]:1;
|
||||
}
|
||||
else {
|
||||
return;
|
||||
}
|
||||
|
||||
HRate = HigherRate(Rate);
|
||||
LRate = LowerRate(Rate);
|
||||
if (BAPER[Rate]>200) {
|
||||
if ((RateCtrlTxMPDU > 100) && (BAPER[Rate]<300) && (HRate != Rate) && BAPER[HRate] &&
|
||||
(BAPER[HRate] < BAPER[Rate] + BADiff[Rate])) {
|
||||
Rate = HRate;
|
||||
//DbgPrint("Rate improved to %d", Rate);
|
||||
}
|
||||
else {
|
||||
Rate = LRate;
|
||||
//DbgPrint("Rate decreased to %d", Rate);
|
||||
}
|
||||
}
|
||||
else if (BAPER[Rate] && BAPER[Rate]<100) {
|
||||
if (RateCtrlTxMPDU > 100) {
|
||||
Rate = HRate;
|
||||
//DbgPrint("Rate improved to %d", Rate);
|
||||
}
|
||||
}
|
||||
wd->sta.oppositeInfo[0].rcCell.currentRate = Rate;
|
||||
wd->sta.oppositeInfo[0].rcCell.currentRateIndex = RateMapToRateIndex(Rate, &wd->sta.oppositeInfo[0].rcCell);
|
||||
}
|
||||
#endif
|
37
drivers/staging/otus/80211core/ratectrl.h
Normal file
37
drivers/staging/otus/80211core/ratectrl.h
Normal file
|
@ -0,0 +1,37 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef _RATECTRL_H
|
||||
#define _RATECTRL_H
|
||||
|
||||
#define ZM_RATE_CTRL_PROBING_INTERVAL_MS 1000 //1000ms
|
||||
#define ZM_RATE_CTRL_MIN_PROBING_PACKET 8
|
||||
|
||||
#define ZM_MIN_RATE_FAIL_COUNT 20
|
||||
|
||||
#define ZM_RATE_PROBING_THRESHOLD 15 //6%
|
||||
#define ZM_RATE_SUCCESS_PROBING 10
|
||||
|
||||
#define ZM_RATE_CTRL_RSSI_VARIATION 5 //TBD
|
||||
|
||||
extern const u32_t zcRateToPhyCtrl[];
|
||||
|
||||
extern void zfRateCtrlInitCell(zdev_t* dev, struct zsRcCell* rcCell, u8_t type, u8_t gBand, u8_t SG40);
|
||||
extern u16_t zfRateCtrlGetTxRate(zdev_t* dev, struct zsRcCell* rcCell, u16_t* probing);
|
||||
extern void zfRateCtrlTxFailEvent(zdev_t* dev, struct zsRcCell* rcCell, u8_t aggRate, u32_t retryRate);
|
||||
extern void zfRateCtrlTxSuccessEvent(zdev_t* dev, struct zsRcCell* rcCell, u8_t successRate);
|
||||
extern void zfRateCtrlAggrSta(zdev_t* dev);
|
||||
#endif
|
1315
drivers/staging/otus/80211core/struct.h
Normal file
1315
drivers/staging/otus/80211core/struct.h
Normal file
File diff suppressed because it is too large
Load diff
595
drivers/staging/otus/80211core/wlan.h
Normal file
595
drivers/staging/otus/80211core/wlan.h
Normal file
|
@ -0,0 +1,595 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* */
|
||||
/* Module Name : wlan_defs.h */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module contains WLAN definitions. */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* None */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#ifndef _WLAN_H
|
||||
#define _WLAN_H
|
||||
|
||||
|
||||
#define ZM_EXTERNAL_ALLOC_BUF 0
|
||||
#define ZM_INTERNAL_ALLOC_BUF 1
|
||||
|
||||
#define ZM_SIZE_OF_CTRL_SET 8
|
||||
#define ZM_SIZE_OF_IV 4
|
||||
#define ZM_SIZE_OF_EXT_IV 4
|
||||
#define ZM_SIZE_OF_MIC 8
|
||||
#define ZM_SIZE_OF_CCX_MIC 8
|
||||
#define ZM_SIZE_OF_WLAN_DATA_HEADER 24
|
||||
#define ZM_SIZE_OF_QOS_CTRL 2
|
||||
|
||||
/* Header definition */
|
||||
#define ZM_SIZE_OF_WLAN_WDS_HEADER 32
|
||||
#define ZM_SIZE_OF_SNAP_HEADER 8
|
||||
|
||||
#define ZM_WLAN_HEADER_A1_OFFSET 4
|
||||
#define ZM_WLAN_HEADER_A2_OFFSET 10
|
||||
#define ZM_WLAN_HEADER_A3_OFFSET 16
|
||||
#define ZM_WLAN_HEADER_A4_OFFSET 24
|
||||
#define ZM_WLAN_HEADER_IV_OFFSET 24
|
||||
#define ZM_SIZE_OF_WLAN_DATA_HEADER 24
|
||||
|
||||
/* Port definition */
|
||||
#define ZM_PORT_DISABLED 0
|
||||
#define ZM_PORT_ENABLED 1
|
||||
|
||||
/* Frame Type */
|
||||
#define ZM_WLAN_MANAGEMENT_FRAME 0x0
|
||||
#define ZM_WLAN_CONTROL_FRAME 0x4
|
||||
#define ZM_WLAN_DATA_FRAME 0x8
|
||||
|
||||
/* Frame Subtype */
|
||||
#define ZM_WLAN_FRAME_TYPE_ASOCREQ 0x00
|
||||
#define ZM_WLAN_FRAME_TYPE_ASOCRSP 0x10
|
||||
#define ZM_WLAN_FRAME_TYPE_REASOCREQ 0x20
|
||||
#define ZM_WLAN_FRAME_TYPE_REASOCRSP 0x30
|
||||
#define ZM_WLAN_FRAME_TYPE_PROBEREQ 0x40
|
||||
#define ZM_WLAN_FRAME_TYPE_PROBERSP 0x50
|
||||
/* 0x60, 0x70 => Reserved */
|
||||
#define ZM_WLAN_FRAME_TYPE_BEACON 0x80
|
||||
#define ZM_WLAN_FRAME_TYPE_ATIM 0x90
|
||||
#define ZM_WLAN_FRAME_TYPE_DISASOC 0xA0
|
||||
#define ZM_WLAN_FRAME_TYPE_AUTH 0xB0
|
||||
#define ZM_WLAN_FRAME_TYPE_DEAUTH 0xC0
|
||||
#define ZM_WLAN_FRAME_TYPE_ACTION 0xD0
|
||||
|
||||
/* Frame type and subtype */
|
||||
#define ZM_WLAN_FRAME_TYPE_NULL 0x48
|
||||
#define ZM_WLAN_FRAME_TYPE_BAR 0x84
|
||||
#define ZM_WLAN_FRAME_TYPE_BA 0x94
|
||||
#define ZM_WLAN_FRAME_TYPE_PSPOLL 0xA4
|
||||
#define ZM_WLAN_FRAME_TYPE_RTS 0xB4
|
||||
#define ZM_WLAN_FRAME_TYPE_CTS 0xC4
|
||||
#define ZM_WLAN_FRAME_TYPE_QOS_NULL 0xC8
|
||||
|
||||
/* action frame */
|
||||
#define ZM_WLAN_SPECTRUM_MANAGEMENT_ACTION_FRAME 0
|
||||
#define ZM_WLAN_QOS_ACTION_FRAME 1
|
||||
#define ZM_WLAN_DLS_ACTION_FRAME 2
|
||||
#define ZM_WLAN_BLOCK_ACK_ACTION_FRAME 3
|
||||
/* block ack action frame*/
|
||||
#define ZM_WLAN_ADDBA_REQUEST_FRAME 0
|
||||
#define ZM_WLAN_ADDBA_RESPONSE_FRAME 1
|
||||
#define ZM_WLAN_DELBA_FRAME 2
|
||||
|
||||
/* Element ID */
|
||||
#define ZM_WLAN_EID_SSID 0
|
||||
#define ZM_WLAN_EID_SUPPORT_RATE 1
|
||||
#define ZM_WLAN_EID_FH 2
|
||||
#define ZM_WLAN_EID_DS 3
|
||||
#define ZM_WLAN_EID_CFS 4
|
||||
#define ZM_WLAN_EID_TIM 5
|
||||
#define ZM_WLAN_EID_IBSS 6
|
||||
#define ZM_WLAN_EID_COUNTRY 7
|
||||
/* reserved 8-15 */
|
||||
#define ZM_WLAN_EID_CHALLENGE 16
|
||||
/* reserved 17-31 */
|
||||
#define ZM_WLAN_EID_POWER_CONSTRAINT 32
|
||||
#define ZM_WLAN_EID_POWER_CAPABILITY 33
|
||||
#define ZM_WLAN_EID_TPC_REQUEST 34
|
||||
#define ZM_WLAN_EID_TPC_REPORT 35
|
||||
#define ZM_WLAN_EID_SUPPORTED_CHANNELS 36
|
||||
#define ZM_WLAN_EID_CHANNEL_SWITCH_ANNOUNCE 37
|
||||
#define ZM_WLAN_EID_MEASUREMENT_REQUEST 38
|
||||
#define ZM_WLAN_EID_MEASUREMENT_REPORT 39
|
||||
#define ZM_WLAN_EID_QUIET 40
|
||||
#define ZM_WLAN_EID_IBSS_DFS 41
|
||||
#define ZM_WLAN_EID_ERP 42
|
||||
#define ZM_WLAN_PREN2_EID_HTCAPABILITY 45
|
||||
#define ZM_WLAN_EID_RSN_IE 48
|
||||
#define ZM_WLAN_EID_EXTENDED_RATE 50
|
||||
#define ZM_WLAN_EID_HT_CAPABILITY 51
|
||||
#define ZM_WLAN_EID_EXTENDED_HT_CAPABILITY 52
|
||||
#define ZM_WLAN_EID_NEW_EXT_CHANNEL_OFFSET 53
|
||||
#define ZM_WLAN_PREN2_EID_HTINFORMATION 61
|
||||
#define ZM_WLAN_PREN2_EID_SECONDCHOFFSET 62
|
||||
#ifdef ZM_ENABLE_CENC
|
||||
#define ZM_WLAN_EID_CENC_IE 68
|
||||
#endif //ZM_ENABLE_CENC
|
||||
#define ZM_WLAN_EID_VENDOR_PRIVATE 221 /* Vendor private space; must demux OUI */
|
||||
#define ZM_WLAN_EID_WPA_IE 221
|
||||
#define ZM_WLAN_EID_WPS_IE 221
|
||||
#define ZM_WLAN_EID_WIFI_IE 221
|
||||
|
||||
/* ERP information element */
|
||||
#define ZM_WLAN_NON_ERP_PRESENT_BIT 0x1
|
||||
#define ZM_WLAN_USE_PROTECTION_BIT 0x2
|
||||
#define ZM_WLAN_BARKER_PREAMBLE_MODE_BIT 0x4
|
||||
|
||||
/* Channel frequency, in MHz */
|
||||
#define ZM_CH_G_1 2412
|
||||
#define ZM_CH_G_2 2417
|
||||
#define ZM_CH_G_3 2422
|
||||
#define ZM_CH_G_4 2427
|
||||
#define ZM_CH_G_5 2432
|
||||
#define ZM_CH_G_6 2437
|
||||
#define ZM_CH_G_7 2442
|
||||
#define ZM_CH_G_8 2447
|
||||
#define ZM_CH_G_9 2452
|
||||
#define ZM_CH_G_10 2457
|
||||
#define ZM_CH_G_11 2462
|
||||
#define ZM_CH_G_12 2467
|
||||
#define ZM_CH_G_13 2472
|
||||
#define ZM_CH_G_14 2484
|
||||
#define ZM_CH_A_184 4920
|
||||
#define ZM_CH_A_188 4940
|
||||
#define ZM_CH_A_192 4960
|
||||
#define ZM_CH_A_196 4980
|
||||
#define ZM_CH_A_8 5040
|
||||
#define ZM_CH_A_12 5060
|
||||
#define ZM_CH_A_16 5080
|
||||
#define ZM_CH_A_36 5180
|
||||
#define ZM_CH_A_40 5200
|
||||
#define ZM_CH_A_44 5220
|
||||
#define ZM_CH_A_48 5240
|
||||
#define ZM_CH_A_52 5260
|
||||
#define ZM_CH_A_56 5280
|
||||
#define ZM_CH_A_60 5300
|
||||
#define ZM_CH_A_64 5320
|
||||
#define ZM_CH_A_100 5500
|
||||
#define ZM_CH_A_104 5520
|
||||
#define ZM_CH_A_108 5540
|
||||
#define ZM_CH_A_112 5560
|
||||
#define ZM_CH_A_116 5580
|
||||
#define ZM_CH_A_120 5600
|
||||
#define ZM_CH_A_124 5620
|
||||
#define ZM_CH_A_128 5640
|
||||
#define ZM_CH_A_132 5660
|
||||
#define ZM_CH_A_136 5680
|
||||
#define ZM_CH_A_140 5700
|
||||
#define ZM_CH_A_149 5745
|
||||
#define ZM_CH_A_153 5765
|
||||
#define ZM_CH_A_157 5785
|
||||
#define ZM_CH_A_161 5805
|
||||
#define ZM_CH_A_165 5825
|
||||
|
||||
|
||||
/* AP : STA table => STA Type */
|
||||
#define ZM_11B_STA 0x0
|
||||
#define ZM_11G_STA 0x2
|
||||
#define ZM_11N_STA 0x4
|
||||
|
||||
/* AP : timeout */
|
||||
#define ZM_MS_PER_TICK 10
|
||||
#define ZM_TICK_PER_SECOND (1000/ZM_MS_PER_TICK)
|
||||
#define ZM_TICK_PER_MINUTE (60*1000/ZM_MS_PER_TICK)
|
||||
#define ZM_PREAUTH_TIMEOUT_MS 1000 /* 1 sec */
|
||||
#define ZM_AUTH_TIMEOUT_MS 1000 /* 1 sec */
|
||||
|
||||
/* Error code */
|
||||
#define ZM_SUCCESS 0
|
||||
#define ZM_ERR_TX_PORT_DISABLED 1
|
||||
#define ZM_ERR_BUFFER_DMA_ADDR 2
|
||||
#define ZM_ERR_FREE_TXD_EXHAUSTED 3
|
||||
#define ZM_ERR_TX_BUFFER_UNAVAILABLE 4
|
||||
#define ZM_ERR_BCMC_PS_BUFFER_UNAVAILABLE 5
|
||||
#define ZM_ERR_UNI_PS_BUFFER_UNAVAILABLE 6
|
||||
#define ZM_ERR_EXCEED_PRIORITY_THRESHOLD 7
|
||||
#define ZM_ERR_VMMQ_FULL 8
|
||||
#define ZM_ERR_FLUSH_PS_QUEUE 9
|
||||
#define ZM_ERR_CMD_INT_MISSED 15 /* Polling cmd int timeout*/
|
||||
/* Rx */
|
||||
#define ZM_ERR_RX_FRAME_TYPE 20
|
||||
#define ZM_ERR_MIN_RX_ENCRYPT_FRAME_LENGTH 21
|
||||
#define ZM_ERR_MIN_RX_FRAME_LENGTH 22
|
||||
#define ZM_ERR_MAX_RX_FRAME_LENGTH 23
|
||||
#define ZM_ERR_RX_DUPLICATE 24
|
||||
#define ZM_ERR_RX_SRC_ADDR_IS_OWN_MAC 25
|
||||
#define ZM_ERR_MIN_RX_PROTOCOL_VERSION 26
|
||||
#define ZM_ERR_WPA_GK_NOT_INSTALLED 27
|
||||
#define ZM_ERR_STA_NOT_ASSOCIATED 28
|
||||
#define ZM_ERR_DATA_BEFORE_CONNECTED 29
|
||||
#define ZM_ERR_DATA_NOT_ENCRYPTED 30
|
||||
#define ZM_ERR_DATA_BSSID_NOT_MATCHED 31
|
||||
#define ZM_ERR_RX_BAR_FRAME 32
|
||||
#define ZM_ERR_OUT_OF_ORDER_NULL_DATA 33
|
||||
|
||||
/* ZFI */
|
||||
#define ZM_ERR_INVALID_TX_RATE 40
|
||||
#define ZM_ERR_WDS_PORT_ID 41
|
||||
|
||||
/* QUEUE */
|
||||
#define ZM_ERR_QUEUE_FULL 50
|
||||
#define ZM_ERR_STA_UAPSD_QUEUE_FULL 51
|
||||
#define ZM_ERR_AP_UAPSD_QUEUE_FULL 52
|
||||
|
||||
/* Maximum Rx frame length */
|
||||
#if ZM_LARGEPAYLOAD_TEST == 1
|
||||
#define ZM_WLAN_MAX_RX_SIZE 16384
|
||||
#else
|
||||
#define ZM_WLAN_MAX_RX_SIZE 8192
|
||||
#endif
|
||||
|
||||
/* PCI DMA test error code */
|
||||
#define ZM_ERR_INTERRUPT_MISSED 100
|
||||
#define ZM_ERR_OWN_BIT_NOT_CLEARED 101
|
||||
#define ZM_ERR_RX_SEQ_NUMBER 102
|
||||
#define ZM_ERR_RX_LENGTH 103
|
||||
#define ZM_ERR_RX_DATA 104
|
||||
#define ZM_ERR_RX_DESCRIPTOR_NUM 105
|
||||
/* Common register test error code */
|
||||
#define ZM_ERR_REGISTER_ACCESS 110 /* Register R/W test fail*/
|
||||
#define ZM_ERR_CLEAR_INTERRUPT_FLAG 111
|
||||
#define ZM_ERR_COMMAND_RESPONSE 112
|
||||
#define ZM_ERR_INTERRUPT_GENERATE 113
|
||||
#define ZM_ERR_INTERRUPT_ACK 114
|
||||
#define ZM_ERR_SCRATCH_ACCESS 115
|
||||
#define ZM_ERR_INTERRUPT_MASK_ACCESS 116
|
||||
#define ZM_ERR_SHARE_MEMORY_PCI_ACCESS 117
|
||||
#define ZM_ERR_SHARE_MEMORY_FW_ACCESS 118
|
||||
#define ZM_ERR_SHARE_MEMORY_DISABLE 119
|
||||
#define ZM_ERR_SHARE_MEMORY_TEST_RESPONSE 120
|
||||
|
||||
/* Firmware Download error code */
|
||||
#define ZM_ERR_FIRMWARE_DOWNLOAD_TIMEOUT 150
|
||||
#define ZM_ERR_FIRMWARE_DOWNLOAD_INT_FLAG 151
|
||||
#define ZM_ERR_FIRMWARE_READY_TIMEOUT 152
|
||||
#define ZM_ERR_FIRMWARE_WRONG_TYPE 153
|
||||
|
||||
/* Debug */
|
||||
#define ZM_LV_0 0//Debug level 0, Disable debug message
|
||||
#define ZM_LV_1 1//Debug level 1, Show minimum information
|
||||
#define ZM_LV_2 2//Debug level 2, Show medium message
|
||||
#define ZM_LV_3 3//Debug level 3, Show all
|
||||
|
||||
#define ZM_SCANMSG_LEV ZM_LV_1
|
||||
#define ZM_TXMSG_LEV ZM_LV_0//ZM_LV_0
|
||||
#define ZM_RXMSG_LEV ZM_LV_0
|
||||
#define ZM_MMMSG_LEV ZM_LV_0
|
||||
#define ZM_DESMSG_LEV ZM_LV_0//ZM_LV_0
|
||||
#define ZM_BUFMSG_LEV ZM_LV_0//ZM_LV_1
|
||||
#define ZM_INITMSG_LEV ZM_LV_0
|
||||
|
||||
#define zm_msg0_scan(lv, msg) if (ZM_SCANMSG_LEV >= lv) \
|
||||
{zm_debug_msg0(msg);}
|
||||
#define zm_msg1_scan(lv, msg, val) if (ZM_SCANMSG_LEV >= lv) \
|
||||
{zm_debug_msg1(msg, val);}
|
||||
#define zm_msg2_scan(lv, msg, val) if (ZM_SCANMSG_LEV >= lv) \
|
||||
{zm_debug_msg2(msg, val);}
|
||||
|
||||
#define zm_msg0_tx(lv, msg) if (ZM_TXMSG_LEV >= lv) \
|
||||
{zm_debug_msg0(msg);}
|
||||
#define zm_msg1_tx(lv, msg, val) if (ZM_TXMSG_LEV >= lv) \
|
||||
{zm_debug_msg1(msg, val);}
|
||||
#define zm_msg2_tx(lv, msg, val) if (ZM_TXMSG_LEV >= lv) \
|
||||
{zm_debug_msg2(msg, val);}
|
||||
|
||||
#define zm_msg0_rx(lv, msg) if (ZM_RXMSG_LEV >= lv) \
|
||||
{zm_debug_msg0(msg);}
|
||||
#define zm_msg1_rx(lv, msg, val) if (ZM_RXMSG_LEV >= lv) \
|
||||
{zm_debug_msg1(msg, val);}
|
||||
#define zm_msg2_rx(lv, msg, val) if (ZM_RXMSG_LEV >= lv) \
|
||||
{zm_debug_msg2(msg, val);}
|
||||
|
||||
#define zm_msg0_mm(lv, msg) if (ZM_MMMSG_LEV >= lv) \
|
||||
{zm_debug_msg0(msg);}
|
||||
#define zm_msg1_mm(lv, msg, val) if (ZM_MMMSG_LEV >= lv) \
|
||||
{zm_debug_msg1(msg, val);}
|
||||
#define zm_msg2_mm(lv, msg, val) if (ZM_MMMSG_LEV >= lv) \
|
||||
{zm_debug_msg2(msg, val);}
|
||||
|
||||
#define zm_msg0_des(lv, msg) if (ZM_DESMSG_LEV >= lv) \
|
||||
{zm_debug_msg0(msg);}
|
||||
#define zm_msg1_des(lv, msg, val) if (ZM_DESMSG_LEV >= lv) \
|
||||
{zm_debug_msg1(msg, val);}
|
||||
#define zm_msg2_des(lv, msg, val) if (ZM_DESMSG_LEV >= lv) \
|
||||
{zm_debug_msg2(msg, val);}
|
||||
|
||||
#define zm_msg0_buf(lv, msg) if (ZM_BUFMSG_LEV >= lv) \
|
||||
{zm_debug_msg0(msg);}
|
||||
#define zm_msg1_buf(lv, msg, val) if (ZM_BUFMSG_LEV >= lv) \
|
||||
{zm_debug_msg1(msg, val);}
|
||||
#define zm_msg2_buf(lv, msg, val) if (ZM_BUFMSG_LEV >= lv) \
|
||||
{zm_debug_msg2(msg, val);}
|
||||
|
||||
#define zm_msg0_init(lv, msg) if (ZM_INITMSG_LEV >= lv) \
|
||||
{zm_debug_msg0(msg);}
|
||||
#define zm_msg1_init(lv, msg, val) if (ZM_INITMSG_LEV >= lv) \
|
||||
{zm_debug_msg1(msg, val);}
|
||||
#define zm_msg2_init(lv, msg, val) if (ZM_INITMSG_LEV >= lv) \
|
||||
{zm_debug_msg2(msg, val);}
|
||||
|
||||
#define ZM_MAX_AP_SUPPORT 2 /* Must <= 8 */
|
||||
#define ZM_MAX_WDS_SUPPORT 6 /* Must <= 6 */
|
||||
#define ZM_MAX_STA_SUPPORT 16 /* Must <= 64 */
|
||||
|
||||
/* STA table state */
|
||||
#define ZM_STATE_AUTH 1
|
||||
#define ZM_STATE_PREAUTH 2
|
||||
#define ZM_STATE_ASOC 3
|
||||
|
||||
/* Rate set */
|
||||
#define ZM_RATE_SET_CCK 0
|
||||
#define ZM_RATE_SET_OFDM 1
|
||||
|
||||
/* HT PT */
|
||||
#define ZM_PREAMBLE_TYPE_MIXED_MODE 0
|
||||
#define ZM_PREAMBLE_TYPE_GREEN_FIELD 1
|
||||
|
||||
/* HT bandwidth */
|
||||
#define ZM_BANDWIDTH_20MHZ 0
|
||||
#define ZM_BANDWIDTH_40MHZ 1
|
||||
|
||||
/* MIC status */
|
||||
#define ZM_MIC_SUCCESS 0
|
||||
#define ZM_MIC_FAILURE 1
|
||||
|
||||
/* ICV status */
|
||||
#define ZM_ICV_SUCCESS 0
|
||||
#define ZM_ICV_FAILURE 1
|
||||
|
||||
/* definition check */
|
||||
#if (ZM_MAX_AP_SUPPORT > 8)
|
||||
definition error, ZM_MAX_AP_SUPPORT > 8
|
||||
#endif
|
||||
#if (ZM_MAX_AP_SUPPORT > 64)
|
||||
definition error, ZM_MAX_STA_SUPPORT > 64
|
||||
#endif
|
||||
|
||||
/* Transmission Rate information */
|
||||
|
||||
/* WLAN frame format */
|
||||
#define ZM_PLCP_HEADER_SIZE 5
|
||||
#define ZM_ETHERNET_ADDRESS_LENGTH 6
|
||||
#define ZM_TIMESTAMP_OFFSET 0
|
||||
#define ZM_BEACON_INTERVAL_OFFSET 8
|
||||
#define ZM_CAPABILITY_OFFSET 10
|
||||
|
||||
/* Reason Code */
|
||||
/* An unsolicited notification management frame of */
|
||||
/* type Disassocation or Deauthentication was generated. */
|
||||
#ifdef ZM_REASON_CODE
|
||||
#define ZM_WLAN_REASON_CODE_UNSPECIFIED 1
|
||||
#define ZM_WLAN_FRAME_DISASOC_DEAUTH_REASON_CODE 24
|
||||
#endif
|
||||
|
||||
struct zsWlanManagementFrameHeader
|
||||
{
|
||||
//u8_t plcpHdr[ZM_PLCP_HEADER_SIZE];
|
||||
u8_t frameCtrl[2];
|
||||
u8_t duration[2];
|
||||
u8_t da[ZM_ETHERNET_ADDRESS_LENGTH];
|
||||
u8_t sa[ZM_ETHERNET_ADDRESS_LENGTH];
|
||||
u8_t bssid[ZM_ETHERNET_ADDRESS_LENGTH];
|
||||
u8_t seqCtrl[2];
|
||||
u8_t body[1];
|
||||
};
|
||||
|
||||
struct zsWlanProbeRspFrameHeader
|
||||
{
|
||||
//u8_t plcpHdr[ZM_PLCP_HEADER_SIZE];
|
||||
u8_t frameCtrl[2];
|
||||
u8_t duration[2];
|
||||
u8_t da[ZM_ETHERNET_ADDRESS_LENGTH];
|
||||
u8_t sa[ZM_ETHERNET_ADDRESS_LENGTH];
|
||||
u8_t bssid[ZM_ETHERNET_ADDRESS_LENGTH];
|
||||
u8_t seqCtrl[2];
|
||||
u8_t timeStamp[8];
|
||||
u8_t beaconInterval[2];
|
||||
u8_t capability[2];
|
||||
u8_t ssid[ZM_MAX_SSID_LENGTH + 2]; // EID(1) + Length(1) + SSID(32)
|
||||
} ;
|
||||
|
||||
#define zsWlanBeaconFrameHeader zsWlanProbeRspFrameHeader
|
||||
|
||||
struct zsWlanAuthFrameHeader
|
||||
{
|
||||
//u8_t plcpHdr[ZM_PLCP_HEADER_SIZE];
|
||||
u8_t frameCtrl[2];
|
||||
u8_t duration[2];
|
||||
u8_t address1[ZM_ETHERNET_ADDRESS_LENGTH];
|
||||
u8_t address2[ZM_ETHERNET_ADDRESS_LENGTH];
|
||||
u8_t address3[ZM_ETHERNET_ADDRESS_LENGTH];
|
||||
u8_t seqCtrl[2];
|
||||
u16_t algo;
|
||||
u16_t seq;
|
||||
u16_t status;
|
||||
u8_t challengeText[255]; // the first 2 bytes are information ID, length
|
||||
};
|
||||
|
||||
struct zsWlanAssoFrameHeader
|
||||
{
|
||||
//u8_t plcpHdr[PLCP_HEADER_SIZE];
|
||||
u8_t frameCtrl[2];
|
||||
u8_t duration[2];
|
||||
u8_t address1[ZM_ETHERNET_ADDRESS_LENGTH];
|
||||
u8_t address2[ZM_ETHERNET_ADDRESS_LENGTH];
|
||||
u8_t address3[ZM_ETHERNET_ADDRESS_LENGTH];
|
||||
u8_t seqCtrl[2];
|
||||
u8_t capability[2];
|
||||
u16_t status;
|
||||
u16_t aid;
|
||||
//u8_t supportedRates[10];
|
||||
};
|
||||
|
||||
struct zsFrag
|
||||
{
|
||||
zbuf_t* buf[16];
|
||||
u16_t bufType[16];
|
||||
u16_t seq[16];
|
||||
u8_t flag[16];
|
||||
|
||||
};
|
||||
|
||||
//================================
|
||||
// Hardware related definitions
|
||||
//================================
|
||||
#define ZM_MAC_REG_BASE 0x1c3000
|
||||
|
||||
#define ZM_MAC_REG_ATIM_WINDOW (ZM_MAC_REG_BASE + 0x51C)
|
||||
#define ZM_MAC_REG_BCN_PERIOD (ZM_MAC_REG_BASE + 0x520)
|
||||
#define ZM_MAC_REG_PRETBTT (ZM_MAC_REG_BASE + 0x524)
|
||||
|
||||
#define ZM_MAC_REG_MAC_ADDR_L (ZM_MAC_REG_BASE + 0x610)
|
||||
#define ZM_MAC_REG_MAC_ADDR_H (ZM_MAC_REG_BASE + 0x614)
|
||||
|
||||
#define ZM_MAC_REG_GROUP_HASH_TBL_L (ZM_MAC_REG_BASE + 0x624)
|
||||
#define ZM_MAC_REG_GROUP_HASH_TBL_H (ZM_MAC_REG_BASE + 0x628)
|
||||
|
||||
#define ZM_MAC_REG_BASIC_RATE (ZM_MAC_REG_BASE + 0x630)
|
||||
#define ZM_MAC_REG_MANDATORY_RATE (ZM_MAC_REG_BASE + 0x634)
|
||||
#define ZM_MAC_REG_RTS_CTS_RATE (ZM_MAC_REG_BASE + 0x638)
|
||||
#define ZM_MAC_REG_BACKOFF_PROTECT (ZM_MAC_REG_BASE + 0x63c)
|
||||
#define ZM_MAC_REG_RX_THRESHOLD (ZM_MAC_REG_BASE + 0x640)
|
||||
#define ZM_MAC_REG_RX_PE_DELAY (ZM_MAC_REG_BASE + 0x64C)
|
||||
|
||||
#define ZM_MAC_REG_DYNAMIC_SIFS_ACK (ZM_MAC_REG_BASE + 0x658)
|
||||
#define ZM_MAC_REG_SNIFFER (ZM_MAC_REG_BASE + 0x674)
|
||||
#define ZM_MAC_REG_TX_UNDERRUN (ZM_MAC_REG_BASE + 0x688)
|
||||
#define ZM_MAC_REG_RX_TOTAL (ZM_MAC_REG_BASE + 0x6A0)
|
||||
#define ZM_MAC_REG_RX_CRC32 (ZM_MAC_REG_BASE + 0x6A4)
|
||||
#define ZM_MAC_REG_RX_CRC16 (ZM_MAC_REG_BASE + 0x6A8)
|
||||
#define ZM_MAC_REG_RX_ERR_UNI (ZM_MAC_REG_BASE + 0x6AC)
|
||||
#define ZM_MAC_REG_RX_OVERRUN (ZM_MAC_REG_BASE + 0x6B0)
|
||||
#define ZM_MAC_REG_RX_ERR_MUL (ZM_MAC_REG_BASE + 0x6BC)
|
||||
#define ZM_MAC_REG_TX_RETRY (ZM_MAC_REG_BASE + 0x6CC)
|
||||
#define ZM_MAC_REG_TX_TOTAL (ZM_MAC_REG_BASE + 0x6F4)
|
||||
|
||||
|
||||
#define ZM_MAC_REG_ACK_EXTENSION (ZM_MAC_REG_BASE + 0x690)
|
||||
#define ZM_MAC_REG_EIFS_AND_SIFS (ZM_MAC_REG_BASE + 0x698)
|
||||
|
||||
#define ZM_MAC_REG_SLOT_TIME (ZM_MAC_REG_BASE + 0x6F0)
|
||||
|
||||
#define ZM_MAC_REG_ROLL_CALL_TBL_L (ZM_MAC_REG_BASE + 0x704)
|
||||
#define ZM_MAC_REG_ROLL_CALL_TBL_H (ZM_MAC_REG_BASE + 0x708)
|
||||
|
||||
#define ZM_MAC_REG_AC0_CW (ZM_MAC_REG_BASE + 0xB00)
|
||||
#define ZM_MAC_REG_AC1_CW (ZM_MAC_REG_BASE + 0xB04)
|
||||
#define ZM_MAC_REG_AC2_CW (ZM_MAC_REG_BASE + 0xB08)
|
||||
#define ZM_MAC_REG_AC3_CW (ZM_MAC_REG_BASE + 0xB0C)
|
||||
#define ZM_MAC_REG_AC4_CW (ZM_MAC_REG_BASE + 0xB10)
|
||||
#define ZM_MAC_REG_AC1_AC0_AIFS (ZM_MAC_REG_BASE + 0xB14)
|
||||
#define ZM_MAC_REG_AC3_AC2_AIFS (ZM_MAC_REG_BASE + 0xB18)
|
||||
|
||||
#define ZM_MAC_REG_RETRY_MAX (ZM_MAC_REG_BASE + 0xB28)
|
||||
|
||||
#define ZM_MAC_REG_TXOP_NOT_ENOUGH_INDICATION (ZM_MAC_REG_BASE + 0xB30)
|
||||
|
||||
#define ZM_MAC_REG_AC1_AC0_TXOP (ZM_MAC_REG_BASE + 0xB44)
|
||||
#define ZM_MAC_REG_AC3_AC2_TXOP (ZM_MAC_REG_BASE + 0xB48)
|
||||
|
||||
#define ZM_MAC_REG_ACK_TABLE (ZM_MAC_REG_BASE + 0xC00)
|
||||
|
||||
#define ZM_MAC_REG_BCN_ADDR (ZM_MAC_REG_BASE + 0xD84)
|
||||
#define ZM_MAC_REG_BCN_LENGTH (ZM_MAC_REG_BASE + 0xD88)
|
||||
|
||||
#define ZM_MAC_REG_BCN_PLCP (ZM_MAC_REG_BASE + 0xD90)
|
||||
#define ZM_MAC_REG_BCN_CTRL (ZM_MAC_REG_BASE + 0xD94)
|
||||
|
||||
#define ZM_MAC_REG_BCN_HT1 (ZM_MAC_REG_BASE + 0xDA0)
|
||||
#define ZM_MAC_REG_BCN_HT2 (ZM_MAC_REG_BASE + 0xDA4)
|
||||
|
||||
|
||||
#define ZM_RX_STATUS_IS_MIC_FAIL(rxStatus) rxStatus->Tail.Data.ErrorIndication & ZM_BIT_6
|
||||
|
||||
//================================
|
||||
//================================
|
||||
|
||||
#ifdef ZM_ENABLE_NATIVE_WIFI
|
||||
#define ZM_80211_FRAME_HEADER_LEN 24
|
||||
#define ZM_80211_FRAME_TYPE_OFFSET 30 // ZM_80211_FRAME_HEADER_LEN + SNAP
|
||||
#define ZM_80211_FRAME_IP_OFFSET 32 // ZM_80211_FRAME_HEADER_LEN + SNAP + TYPE
|
||||
#else
|
||||
#define ZM_80211_FRAME_HEADER_LEN 14
|
||||
#define ZM_80211_FRAME_TYPE_OFFSET 12 // ZM_80211_FRAME_HEADER_LEN + SNAP
|
||||
#define ZM_80211_FRAME_IP_OFFSET 14 // ZM_80211_FRAME_HEADER_LEN + SNAP + TYPE
|
||||
#endif
|
||||
|
||||
#define ZM_BSS_INFO_VALID_BIT 0x01
|
||||
#define ZM_BSS_INFO_UPDATED_BIT 0x02
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#define ZM_ERROR_INDICATION_RX_TIMEOUT 0x01
|
||||
#define ZM_ERROR_INDICATION_OVERRUN 0x02
|
||||
#define ZM_ERROR_INDICATION_DECRYPT_ERROR 0x04
|
||||
#define ZM_ERROR_INDICATION_CRC32_ERROR 0x08
|
||||
#define ZM_ERROR_INDICATION_ADDR_NOT_MATCH 0x10
|
||||
#define ZM_ERROR_INDICATION_CRC16_ERROR 0x20
|
||||
#define ZM_ERROR_INDICATION_MIC_ERROR 0x40
|
||||
|
||||
#define ZM_RXMAC_STATUS_MOD_TYPE_CCK 0x00
|
||||
#define ZM_RXMAC_STATUS_MOD_TYPE_OFDM 0x01
|
||||
#define ZM_RXMAC_STATUS_MOD_TYPE_HT_OFDM 0x02
|
||||
#define ZM_RXMAC_STATUS_MOD_TYPE_DL_OFDM 0x03
|
||||
#define ZM_RXMAC_STATUS_TOTAL_ERROR 0x80
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#define ZM_MAX_LED_NUMBER 2
|
||||
|
||||
#define ZM_LED_DISABLE_MODE 0x0
|
||||
#define ZM_LED_LINK_MODE 0x1
|
||||
#define ZM_LED_LINK_TR_MODE 0x2
|
||||
#define ZM_LED_TR_ON_MODE 0x3
|
||||
#define ZM_LED_TR_OFF_MODE 0x4
|
||||
|
||||
#define ZM_LED_CTRL_FLAG_ALPHA 0x1
|
||||
|
||||
struct zsLedStruct
|
||||
{
|
||||
u32_t counter;
|
||||
u32_t counter100ms;
|
||||
u16_t ledLinkState;
|
||||
u16_t ledMode[ZM_MAX_LED_NUMBER];
|
||||
u32_t txTraffic;
|
||||
u32_t rxTraffic;
|
||||
u8_t LEDCtrlType;
|
||||
u8_t LEDCtrlFlag; // Control Flag for vendors
|
||||
u8_t LEDCtrlFlagFromReg; // Control Flag for vendors in registry
|
||||
};
|
||||
|
||||
|
||||
//HAL+ capability bits definition
|
||||
#define ZM_HP_CAP_11N 0x1
|
||||
#define ZM_HP_CAP_11N_ONE_TX_STREAM 0x2
|
||||
#define ZM_HP_CAP_2G 0x4
|
||||
#define ZM_HP_CAP_5G 0x8
|
||||
|
||||
#endif /* #ifndef _WLAN_H */
|
32
drivers/staging/otus/Kconfig
Normal file
32
drivers/staging/otus/Kconfig
Normal file
|
@ -0,0 +1,32 @@
|
|||
config OTUS
|
||||
tristate "Atheros OTUS 802.11n USB wireless support"
|
||||
depends on USB && WLAN_80211 && MAC80211
|
||||
default N
|
||||
---help---
|
||||
Enable support for Atheros 802.11n USB hardware:
|
||||
* UB81 - 2x2 2.4 GHz
|
||||
* UB82 - 2x2 2.4 GHz and 5 GHz
|
||||
* UB83 - 1x2 2.4 GHz
|
||||
|
||||
This includes the following devices currently on the market:
|
||||
Dlink DWA-160A1, Netgear WNDA3100 and WN111v2, TP-Link
|
||||
TL-WN821N, and AVM FRITZ!WLAN N USB Stick.
|
||||
|
||||
This driver requires its own supplicant driver for
|
||||
wpa_supplicant 0.4.8. For your convenience you can find the
|
||||
tarball here:
|
||||
|
||||
http://www.kernel.org/pub/linux/kernel/people/mcgrof/otus/wpa_supplicant-0.4.8_otus.tar.bz2
|
||||
|
||||
Before compiling wpa_supplicant, ensure your .config has at
|
||||
least the following:
|
||||
CONFIG_WIRELESS_EXTENSION=y
|
||||
CONFIG_EAP_WSC=y
|
||||
CONFIG_WSC_IE=y
|
||||
CONFIG_DRIVER_WEXT=y
|
||||
CONFIG_DRIVER_OTUS=y
|
||||
|
||||
After a successful compile, you can use the Atheros device as
|
||||
shown in the example:
|
||||
$ wpa_supplicant -Dotus -i <atheros device from ifconfig> -c /path/to/wpa_supplicant.conf -d
|
||||
|
67
drivers/staging/otus/Makefile
Normal file
67
drivers/staging/otus/Makefile
Normal file
|
@ -0,0 +1,67 @@
|
|||
obj-$(CONFIG_OTUS) += arusb_lnx.o
|
||||
|
||||
EXTRA_CFLAGS += -DAMAC
|
||||
EXTRA_CFLAGS += -DGCCK
|
||||
EXTRA_CFLAGS += -DOFDM
|
||||
EXTRA_CFLAGS += -DTXQ_IN_ISR
|
||||
EXTRA_CFLAGS += -DWLAN_HOSTIF=0 #0:USB, 1:PCI
|
||||
|
||||
#Test Mode
|
||||
EXTRA_CFLAGS += -DZM_USB_STREAM_MODE=1
|
||||
EXTRA_CFLAGS += -DZM_USB_TX_STREAM_MODE=0
|
||||
EXTRA_CFLAGS += -DZM_PCI_DMA_TEST=0
|
||||
EXTRA_CFLAGS += -DZM_LARGEPAYLOAD_TEST=0
|
||||
EXTRA_CFLAGS += -DZM_FW_LOOP_BACK=0
|
||||
EXTRA_CFLAGS += -DZM_LINUX_TPC=1
|
||||
#EXTRA_CFLAGS += -DZM_DONT_COPY_RX_BUFFER
|
||||
|
||||
EXTRA_CFLAGS += -DZM_HOSTAPD_SUPPORT
|
||||
#EXTRA_CFLAGS += -DfTX_GAIN_OFDM=0
|
||||
#EXTRA_CFLAGS += -DZM_CONFIG_BIG_ENDIAN -DBIG_ENDIAN
|
||||
EXTRA_CFLAGS += -DZM_HALPLUS_LOCK
|
||||
EXTRA_CFLAGS += -DZM_OTUS_LINUX_PHASE_2
|
||||
|
||||
arusb_lnx-objs := \
|
||||
usbdrv.o \
|
||||
zdusb.o \
|
||||
ioctl.o \
|
||||
wrap_buf.o \
|
||||
wrap_mem.o \
|
||||
wrap_ev.o \
|
||||
wrap_usb.o \
|
||||
wrap_pkt.o \
|
||||
wrap_dbg.o \
|
||||
wrap_mis.o \
|
||||
wrap_sec.o \
|
||||
wwrap.o \
|
||||
80211core/ccmd.o \
|
||||
80211core/chb.o \
|
||||
80211core/cinit.o \
|
||||
80211core/cmm.o \
|
||||
80211core/cmmap.o \
|
||||
80211core/cmmsta.o \
|
||||
80211core/cfunc.o \
|
||||
80211core/coid.o \
|
||||
80211core/ctkip.o \
|
||||
80211core/ctxrx.o \
|
||||
80211core/cic.o \
|
||||
80211core/cpsmgr.o \
|
||||
80211core/cscanmgr.o \
|
||||
80211core/ratectrl.o \
|
||||
80211core/ledmgr.o \
|
||||
80211core/amsdu.o \
|
||||
80211core/cwm.o \
|
||||
80211core/cagg.o \
|
||||
80211core/queue.o \
|
||||
80211core/freqctrl.o \
|
||||
80211core/cwep.o \
|
||||
hal/hprw.o \
|
||||
hal/hpmain.o \
|
||||
hal/hpusb.o \
|
||||
hal/hpreg.o \
|
||||
hal/hpfwuinit.o \
|
||||
hal/hpfwbu.o \
|
||||
hal/hpfw2.o \
|
||||
hal/hpDKfwu.o \
|
||||
hal/hpfwspiu.o \
|
||||
hal/hpani.o
|
9
drivers/staging/otus/TODO
Normal file
9
drivers/staging/otus/TODO
Normal file
|
@ -0,0 +1,9 @@
|
|||
TODO:
|
||||
- checkpatch.pl cleanups
|
||||
- sparse cleanups
|
||||
- port to in-kernel 80211 stack
|
||||
- proper network developer maintainer
|
||||
|
||||
Please send any patches to Greg Kroah-Hartman <greg@kroah.com> and
|
||||
Luis Rodriguez <Luis.Rodriguez@Atheros.com> and the
|
||||
otus-devel@lists.madwifi-project.org mailing list.
|
457
drivers/staging/otus/apdbg.c
Normal file
457
drivers/staging/otus/apdbg.c
Normal file
|
@ -0,0 +1,457 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* */
|
||||
/* Module Name : apdbg.c */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* Debug tools */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* None */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <ctype.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <net/if.h>
|
||||
#include <netinet/in.h>
|
||||
|
||||
#include <linux/sockios.h>
|
||||
|
||||
#define ZM_IOCTL_REG_READ 0x01
|
||||
#define ZM_IOCTL_REG_WRITE 0x02
|
||||
#define ZM_IOCTL_MEM_DUMP 0x03
|
||||
#define ZM_IOCTL_REG_DUMP 0x05
|
||||
#define ZM_IOCTL_TXD_DUMP 0x06
|
||||
#define ZM_IOCTL_RXD_DUMP 0x07
|
||||
#define ZM_IOCTL_MEM_READ 0x0B
|
||||
#define ZM_IOCTL_MEM_WRITE 0x0C
|
||||
#define ZM_IOCTL_DMA_TEST 0x10
|
||||
#define ZM_IOCTL_REG_TEST 0x11
|
||||
#define ZM_IOCTL_TEST 0x80
|
||||
#define ZM_IOCTL_TALLY 0x81 //CWYang(+)
|
||||
#define ZM_IOCTL_RTS 0xA0
|
||||
#define ZM_IOCTL_MIX_MODE 0xA1
|
||||
#define ZM_IOCTL_FRAG 0xA2
|
||||
#define ZM_IOCTL_SCAN 0xA3
|
||||
#define ZM_IOCTL_KEY 0xA4
|
||||
#define ZM_IOCTL_RATE 0xA5
|
||||
#define ZM_IOCTL_ENCRYPTION_MODE 0xA6
|
||||
#define ZM_IOCTL_GET_TXCNT 0xA7
|
||||
#define ZM_IOCTL_GET_DEAGG_CNT 0xA8
|
||||
#define ZM_IOCTL_DURATION_MODE 0xA9
|
||||
#define ZM_IOCTL_SET_AES_KEY 0xAA
|
||||
#define ZM_IOCTL_SET_AES_MODE 0xAB
|
||||
#define ZM_IOCTL_SIGNAL_STRENGTH 0xAC //CWYang(+)
|
||||
#define ZM_IOCTL_SIGNAL_QUALITY 0xAD //CWYang(+)
|
||||
#define ZM_IOCTL_SET_PIBSS_MODE 0xAE
|
||||
#define ZDAPIOCTL SIOCDEVPRIVATE
|
||||
|
||||
struct zdap_ioctl {
|
||||
unsigned short cmd; /* Command to run */
|
||||
unsigned int addr; /* Length of the data buffer */
|
||||
unsigned int value; /* Pointer to the data buffer */
|
||||
unsigned char data[0x100];
|
||||
};
|
||||
|
||||
/* Declaration of macro and function for handling WEP Keys */
|
||||
|
||||
#if 0
|
||||
|
||||
#define SKIP_ELEM { \
|
||||
while(isxdigit(*p)) \
|
||||
p++; \
|
||||
}
|
||||
|
||||
#define SKIP_DELIMETER { \
|
||||
if(*p == ':' || *p == ' ') \
|
||||
p++; \
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
char hex(char);
|
||||
unsigned char asctohex(char *str);
|
||||
|
||||
char *prgname;
|
||||
|
||||
int set_ioctl(int sock, struct ifreq *req)
|
||||
{
|
||||
if (ioctl(sock, ZDAPIOCTL, req) < 0) {
|
||||
fprintf(stderr, "%s: ioctl(SIOCGIFMAP): %s\n",
|
||||
prgname, strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int read_reg(int sock, struct ifreq *req)
|
||||
{
|
||||
struct zdap_ioctl *zdreq = 0;
|
||||
|
||||
if (!set_ioctl(sock, req))
|
||||
return -1;
|
||||
|
||||
//zdreq = (struct zdap_ioctl *)req->ifr_data;
|
||||
//printf( "reg = %4x, value = %4x\n", zdreq->addr, zdreq->value);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int read_mem(int sock, struct ifreq *req)
|
||||
{
|
||||
struct zdap_ioctl *zdreq = 0;
|
||||
int i;
|
||||
|
||||
if (!set_ioctl(sock, req))
|
||||
return -1;
|
||||
|
||||
/*zdreq = (struct zdap_ioctl *)req->ifr_data;
|
||||
printf( "dump mem from %x, length = %x\n", zdreq->addr, zdreq->value);
|
||||
|
||||
for (i=0; i<zdreq->value; i++) {
|
||||
printf("%02x", zdreq->data[i]);
|
||||
printf(" ");
|
||||
|
||||
if ((i>0) && ((i+1)%16 == 0))
|
||||
printf("\n");
|
||||
}*/
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int sock;
|
||||
int addr, value;
|
||||
struct ifreq req;
|
||||
char *action = NULL;
|
||||
struct zdap_ioctl zdreq;
|
||||
|
||||
prgname = argv[0];
|
||||
|
||||
if (argc < 3) {
|
||||
fprintf(stderr,"%s: usage is \"%s <ifname> <operation> [<address>] [<value>]\"\n",
|
||||
prgname, prgname);
|
||||
fprintf(stderr,"valid operation: read, write, mem, reg,\n");
|
||||
fprintf(stderr," : txd, rxd, rmem, wmem\n");
|
||||
fprintf(stderr," : dmat, regt, test\n");
|
||||
|
||||
fprintf(stderr," scan, Channel Scan\n");
|
||||
fprintf(stderr," rts <decimal>, Set RTS Threshold\n");
|
||||
fprintf(stderr," frag <decimal>, Set Fragment Threshold\n");
|
||||
fprintf(stderr," rate <0-28>, 0:AUTO, 1-4:CCK, 5-12:OFDM, 13-28:HT\n");
|
||||
fprintf(stderr," TBD mix <0 or 1>, Set 1 to enable mixed mode\n");
|
||||
fprintf(stderr," enc, <0-3>, 0=>OPEN, 1=>WEP64, 2=>WEP128, 3=>WEP256\n");
|
||||
fprintf(stderr," skey <key>, Set WEP key\n");
|
||||
fprintf(stderr," txcnt, Get TxQ Cnt\n");
|
||||
fprintf(stderr," dagcnt, Get Deaggregate Cnt\n");
|
||||
fprintf(stderr," durmode <mode>, Set Duration Mode 0=>HW, 1=>SW\n");
|
||||
fprintf(stderr," aeskey <user> <key>\n");
|
||||
fprintf(stderr," aesmode <mode>\n");
|
||||
fprintf(stderr," wlanmode <0,1> 0:Station mode, 1:PIBSS mode\n");
|
||||
fprintf(stderr," tal <0,1>, Get Current Tally Info, 0=>read, 1=>read and reset\n");
|
||||
|
||||
exit(1);
|
||||
}
|
||||
|
||||
strcpy(req.ifr_name, argv[1]);
|
||||
zdreq.addr = 0;
|
||||
zdreq.value = 0;
|
||||
|
||||
/* a silly raw socket just for ioctl()ling it */
|
||||
sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
|
||||
if (sock < 0) {
|
||||
fprintf(stderr, "%s: socket(): %s\n", argv[0], strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (argc >= 4)
|
||||
{
|
||||
sscanf(argv[3], "%x", &addr);
|
||||
}
|
||||
|
||||
if (argc >= 5)
|
||||
{
|
||||
sscanf(argv[4], "%x", &value);
|
||||
}
|
||||
|
||||
zdreq.addr = addr;
|
||||
zdreq.value = value;
|
||||
|
||||
if (!strcmp(argv[2], "read"))
|
||||
{
|
||||
zdreq.cmd = ZM_IOCTL_REG_READ;
|
||||
}
|
||||
else if (!strcmp(argv[2], "mem"))
|
||||
{
|
||||
zdreq.cmd = ZM_IOCTL_MEM_DUMP;
|
||||
}
|
||||
else if (!strcmp(argv[2], "write"))
|
||||
{
|
||||
zdreq.cmd = ZM_IOCTL_REG_WRITE;
|
||||
}
|
||||
else if (!strcmp(argv[2], "reg"))
|
||||
{
|
||||
zdreq.cmd = ZM_IOCTL_REG_DUMP;
|
||||
}
|
||||
else if (!strcmp(argv[2], "txd"))
|
||||
{
|
||||
zdreq.cmd = ZM_IOCTL_TXD_DUMP;
|
||||
}
|
||||
else if (!strcmp(argv[2], "rxd"))
|
||||
{
|
||||
zdreq.cmd = ZM_IOCTL_RXD_DUMP;
|
||||
}
|
||||
else if (!strcmp(argv[2], "rmem"))
|
||||
{
|
||||
zdreq.cmd = ZM_IOCTL_MEM_READ;
|
||||
}
|
||||
else if (!strcmp(argv[2], "wmem"))
|
||||
{
|
||||
zdreq.cmd = ZM_IOCTL_MEM_WRITE;
|
||||
}
|
||||
else if (!strcmp(argv[2], "dmat"))
|
||||
{
|
||||
zdreq.cmd = ZM_IOCTL_DMA_TEST;
|
||||
}
|
||||
else if (!strcmp(argv[2], "regt"))
|
||||
{
|
||||
zdreq.cmd = ZM_IOCTL_REG_TEST;
|
||||
}
|
||||
else if (!strcmp(argv[2], "test"))
|
||||
{
|
||||
zdreq.cmd = ZM_IOCTL_TEST;
|
||||
}
|
||||
else if (!strcmp(argv[2], "tal"))
|
||||
{
|
||||
sscanf(argv[3], "%d", &addr);
|
||||
zdreq.addr = addr;
|
||||
zdreq.cmd = ZM_IOCTL_TALLY;
|
||||
}
|
||||
else if (!strcmp(argv[2], "rts"))
|
||||
{
|
||||
sscanf(argv[3], "%d", &addr);
|
||||
zdreq.addr = addr;
|
||||
zdreq.cmd = ZM_IOCTL_RTS;
|
||||
}
|
||||
else if (!strcmp(argv[2], "mix"))
|
||||
{
|
||||
zdreq.cmd = ZM_IOCTL_MIX_MODE;
|
||||
}
|
||||
else if (!strcmp(argv[2], "frag"))
|
||||
{
|
||||
sscanf(argv[3], "%d", &addr);
|
||||
zdreq.addr = addr;
|
||||
zdreq.cmd = ZM_IOCTL_FRAG;
|
||||
}
|
||||
else if (!strcmp(argv[2], "scan"))
|
||||
{
|
||||
zdreq.cmd = ZM_IOCTL_SCAN;
|
||||
}
|
||||
else if (!strcmp(argv[2], "skey"))
|
||||
{
|
||||
zdreq.cmd = ZM_IOCTL_KEY;
|
||||
|
||||
if (argc >= 4)
|
||||
{
|
||||
unsigned char temp[29];
|
||||
int i;
|
||||
int keyLen;
|
||||
int encType;
|
||||
|
||||
keyLen = strlen(argv[3]);
|
||||
|
||||
if (keyLen == 10)
|
||||
{
|
||||
sscanf(argv[3], "%02x%02x%02x%02x%02x", &temp[0], &temp[1],
|
||||
&temp[2], &temp[3], &temp[4]);
|
||||
}
|
||||
else if (keyLen == 26)
|
||||
{
|
||||
sscanf(argv[3], "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
|
||||
&temp[0], &temp[1], &temp[2], &temp[3], &temp[4],
|
||||
&temp[5], &temp[6], &temp[7], &temp[8], &temp[9],
|
||||
&temp[10], &temp[11], &temp[12]);
|
||||
}
|
||||
else if (keyLen == 58)
|
||||
{
|
||||
sscanf(argv[3], "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
|
||||
&temp[0], &temp[1], &temp[2], &temp[3], &temp[4],
|
||||
&temp[5], &temp[6], &temp[7], &temp[8], &temp[9],
|
||||
&temp[10], &temp[11], &temp[12], &temp[13], &temp[14],
|
||||
&temp[15], &temp[16], &temp[17], &temp[18], &temp[19],
|
||||
&temp[20], &temp[21], &temp[22], &temp[23], &temp[24],
|
||||
&temp[25], &temp[26], &temp[27], &temp[28]);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "Invalid key length\n");
|
||||
exit(1);
|
||||
}
|
||||
zdreq.addr = keyLen/2;
|
||||
|
||||
for(i=0; i<zdreq.addr; i++)
|
||||
{
|
||||
zdreq.data[i] = temp[i];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Error : Key required!\n");
|
||||
}
|
||||
}
|
||||
else if (!strcmp(argv[2], "rate"))
|
||||
{
|
||||
sscanf(argv[3], "%d", &addr);
|
||||
|
||||
if (addr > 28)
|
||||
{
|
||||
fprintf(stderr, "Invalid rate, range:0~28\n");
|
||||
exit(1);
|
||||
}
|
||||
zdreq.addr = addr;
|
||||
zdreq.cmd = ZM_IOCTL_RATE;
|
||||
}
|
||||
else if (!strcmp(argv[2], "enc"))
|
||||
{
|
||||
sscanf(argv[3], "%d", &addr);
|
||||
|
||||
if (addr > 3)
|
||||
{
|
||||
fprintf(stderr, "Invalid encryption mode, range:0~3\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (addr == 2)
|
||||
{
|
||||
addr = 5;
|
||||
}
|
||||
else if (addr == 3)
|
||||
{
|
||||
addr = 6;
|
||||
}
|
||||
|
||||
zdreq.addr = addr;
|
||||
zdreq.cmd = ZM_IOCTL_ENCRYPTION_MODE;
|
||||
}
|
||||
else if (!strcmp(argv[2], "txcnt"))
|
||||
{
|
||||
zdreq.cmd = ZM_IOCTL_GET_TXCNT;
|
||||
}
|
||||
else if (!strcmp(argv[2], "dagcnt"))
|
||||
{
|
||||
sscanf(argv[3], "%d", &addr);
|
||||
|
||||
if (addr != 0 && addr != 1)
|
||||
{
|
||||
fprintf(stderr, "The value should be 0 or 1\n");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
zdreq.addr = addr;
|
||||
zdreq.cmd = ZM_IOCTL_GET_DEAGG_CNT;
|
||||
}
|
||||
else if (!strcmp(argv[2], "durmode"))
|
||||
{
|
||||
sscanf(argv[3], "%d", &addr);
|
||||
|
||||
if (addr != 0 && addr != 1)
|
||||
{
|
||||
fprintf(stderr, "The Duration mode should be 0 or 1\n");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
zdreq.addr = addr;
|
||||
zdreq.cmd = ZM_IOCTL_DURATION_MODE;
|
||||
}
|
||||
else if (!strcmp(argv[2], "aeskey"))
|
||||
{
|
||||
unsigned char temp[16];
|
||||
int i;
|
||||
|
||||
sscanf(argv[3], "%d", &addr);
|
||||
|
||||
sscanf(argv[4], "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", &temp[0], &temp[1], &temp[2], &temp[3], &temp[4], &temp[5], &temp[6], &temp[7], &temp[8], &temp[9], &temp[10], &temp[11], &temp[12], &temp[13], &temp[14], &temp[15]);
|
||||
|
||||
for(i = 0; i < 16; i++)
|
||||
{
|
||||
zdreq.data[i] = temp[i];
|
||||
}
|
||||
|
||||
zdreq.addr = addr;
|
||||
zdreq.cmd = ZM_IOCTL_SET_AES_KEY;
|
||||
}
|
||||
else if (!strcmp(argv[2], "aesmode"))
|
||||
{
|
||||
sscanf(argv[3], "%d", &addr);
|
||||
|
||||
zdreq.addr = addr;
|
||||
zdreq.cmd = ZM_IOCTL_SET_AES_MODE;
|
||||
}
|
||||
else if (!strcmp(argv[2], "wlanmode"))
|
||||
{
|
||||
sscanf(argv[3], "%d", &addr);
|
||||
|
||||
zdreq.addr = addr;
|
||||
zdreq.cmd = ZM_IOCTL_SET_PIBSS_MODE;
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "error action\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
req.ifr_data = (char *)&zdreq;
|
||||
set_ioctl(sock, &req);
|
||||
|
||||
fail:
|
||||
exit(0);
|
||||
}
|
||||
|
||||
unsigned char asctohex(char *str)
|
||||
{
|
||||
unsigned char value;
|
||||
|
||||
value = hex(*str) & 0x0f;
|
||||
value = value << 4;
|
||||
str++;
|
||||
value |= hex(*str) & 0x0f;
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
char hex(char v)
|
||||
{
|
||||
if(isdigit(v))
|
||||
return v - '0';
|
||||
else if(isxdigit(v))
|
||||
return (tolower(v) - 'a' + 10);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
141
drivers/staging/otus/athr_common.h
Normal file
141
drivers/staging/otus/athr_common.h
Normal file
|
@ -0,0 +1,141 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* Module Name : athr_common.h */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* WPA related function and data structure definitions. */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* Platform dependent. */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#ifndef _ATHR_COMMON_H
|
||||
#define _ATHR_COMMON_H
|
||||
|
||||
#define ZD_IOCTL_WPA (SIOCDEVPRIVATE + 1)
|
||||
#define ZD_IOCTL_PARAM (SIOCDEVPRIVATE + 2)
|
||||
#define ZD_IOCTL_GETWPAIE (SIOCDEVPRIVATE + 3)
|
||||
#define ZD_PARAM_ROAMING 0x0001
|
||||
#define ZD_PARAM_PRIVACY 0x0002
|
||||
#define ZD_PARAM_WPA 0x0003
|
||||
#define ZD_PARAM_COUNTERMEASURES 0x0004
|
||||
#define ZD_PARAM_DROPUNENCRYPTED 0x0005
|
||||
#define ZD_PARAM_AUTH_ALGS 0x0006
|
||||
|
||||
#define ZD_CMD_SET_ENCRYPT_KEY 0x0001
|
||||
#define ZD_CMD_SET_MLME 0x0002
|
||||
#define ZD_CMD_SCAN_REQ 0x0003
|
||||
#define ZD_CMD_SET_GENERIC_ELEMENT 0x0004
|
||||
#define ZD_CMD_GET_TSC 0x0005
|
||||
|
||||
#define ZD_FLAG_SET_TX_KEY 0x0001
|
||||
|
||||
#define ZD_GENERIC_ELEMENT_HDR_LEN \
|
||||
((int) (&((struct athr_wlan_param *) 0)->u.generic_elem.data))
|
||||
|
||||
#define ZD_CRYPT_ALG_NAME_LEN 16
|
||||
#define ZD_MAX_KEY_SIZE 32
|
||||
#define ZD_MAX_GENERIC_SIZE 64
|
||||
|
||||
#define IEEE80211_ADDR_LEN 6
|
||||
#define IEEE80211_MAX_IE_SIZE 256
|
||||
|
||||
#ifdef ZM_ENALBE_WAPI
|
||||
#define ZM_CMD_WAPI_SETWAPI 0x0001
|
||||
#define ZM_CMD_WAPI_GETWAPI 0x0002
|
||||
#define ZM_CMD_WAPI_SETKEY 0x0003
|
||||
#define ZM_CMD_WAPI_GETKEY 0x0004
|
||||
#define ZM_CMD_WAPI_REKEY 0x0005
|
||||
|
||||
#define ZM_WAPI_WAI_REQUEST 0x00f1
|
||||
#define ZM_WAPI_UNICAST_REKEY 0x00f2
|
||||
#define ZM_WAPI_STA_AGING 0x00f3
|
||||
#define ZM_WAPI_MULTI_REKEY 0x00f4
|
||||
|
||||
#define ZM_WAPI_KEY_SIZE 32
|
||||
#define ZM_WAPI_IV_LEN 16
|
||||
#endif //ZM_ENALBE_WAPI
|
||||
/* structure definition */
|
||||
|
||||
struct athr_wlan_param {
|
||||
u32 cmd;
|
||||
u8 sta_addr[ETH_ALEN];
|
||||
union {
|
||||
struct {
|
||||
u8 alg[ZD_CRYPT_ALG_NAME_LEN];
|
||||
u32 flags;
|
||||
u32 err;
|
||||
u8 idx;
|
||||
u8 seq[8]; /* sequence counter (set: RX, get: TX) */
|
||||
u16 key_len;
|
||||
u8 key[ZD_MAX_KEY_SIZE];
|
||||
} crypt;
|
||||
struct {
|
||||
u32 flags_and;
|
||||
u32 flags_or;
|
||||
} set_flags_sta;
|
||||
struct {
|
||||
u8 len;
|
||||
u8 data[ZD_MAX_GENERIC_SIZE];
|
||||
} generic_elem;
|
||||
struct {
|
||||
#define MLME_STA_DEAUTH 0
|
||||
#define MLME_STA_DISASSOC 1
|
||||
u16 cmd;
|
||||
u16 reason_code;
|
||||
} mlme;
|
||||
struct {
|
||||
u8 ssid_len;
|
||||
u8 ssid[32];
|
||||
} scan_req;
|
||||
} u;
|
||||
};
|
||||
|
||||
struct ieee80211req_wpaie {
|
||||
u8 wpa_macaddr[IEEE80211_ADDR_LEN];
|
||||
u8 wpa_ie[IEEE80211_MAX_IE_SIZE];
|
||||
};
|
||||
|
||||
#ifdef ZM_ENALBE_WAPI
|
||||
struct athr_wapi_param {
|
||||
u16 cmd;
|
||||
u16 len;
|
||||
|
||||
union {
|
||||
struct {
|
||||
u8 sta_addr[ETH_ALEN];
|
||||
u8 reserved;
|
||||
u8 keyid;
|
||||
u8 key[ZM_WAPI_KEY_SIZE];
|
||||
} crypt;
|
||||
struct {
|
||||
u8 wapi_policy;
|
||||
} info;
|
||||
} u;
|
||||
};
|
||||
|
||||
struct athr_wapi_sta_info
|
||||
{
|
||||
u16 msg_type;
|
||||
u16 datalen;
|
||||
u8 sta_mac[ETH_ALEN];
|
||||
u8 reserve_data[2];
|
||||
u8 gsn[ZM_WAPI_IV_LEN];
|
||||
u8 wie[256];
|
||||
};
|
||||
#endif //ZM_ENALBE_WAPI
|
||||
#endif
|
832
drivers/staging/otus/hal/hpDKfwu.c
Normal file
832
drivers/staging/otus/hal/hpDKfwu.c
Normal file
|
@ -0,0 +1,832 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
#include "../80211core/cprecomp.h"
|
||||
|
||||
const u32_t zcDKFwImage[] = {
|
||||
0x0009000B, 0x4F222FE6, 0xDE3E7FFC, 0xE114D73E,
|
||||
0x1E13D43E, 0x1E4C470B, 0x0009B017, 0x956EE600,
|
||||
0xC84060E2, 0x2F028F03, 0x8FF93652, 0xD4387601,
|
||||
0x4E0BDE38, 0xD4380009, 0x00094E0B, 0x4E0BD437,
|
||||
0x7F040009, 0xA0364F26, 0x4F226EF6, 0x410BD134,
|
||||
0xD4340009, 0x0009440B, 0x450BD533, 0xD7330009,
|
||||
0xD233E1FF, 0x2712611D, 0xD4325029, 0xE1FFCB01,
|
||||
0x1209E501, 0x12112212, 0xD52F2452, 0xD22F9740,
|
||||
0xE7002572, 0xD42FD12E, 0x2270D62F, 0x2172E201,
|
||||
0x26202420, 0xE4FFD62D, 0xE6002641, 0xE104D52C,
|
||||
0x6063666D, 0x626D7601, 0x32124000, 0x05458FF8,
|
||||
0x000B4F26, 0xEAC80009, 0xDB266AAC, 0xDD27DC26,
|
||||
0xD828DE27, 0x4C0BE901, 0x4D0B0009, 0x4E0B0009,
|
||||
0x60B20009, 0x89078801, 0x6242D423, 0x890332A6,
|
||||
0x6050D522, 0x8BEE8801, 0x2B92D41F, 0x26686642,
|
||||
0x480B89E9, 0xD51D0009, 0xAFE4E200, 0x27102520,
|
||||
0x00000FA0, 0x001C001C, 0x00200ED4, 0x0000B38E,
|
||||
0x00202F90, 0x00201356, 0x00202F9C, 0x00202FB4,
|
||||
0x00201314, 0x00201412, 0x00200EF8, 0x001C3510,
|
||||
0x001C3624, 0x001E212C, 0x00202F00, 0x00202A9C,
|
||||
0x00202F08, 0x00202F14, 0x00202F20, 0x00202F22,
|
||||
0x00202F26, 0x001C1028, 0x00201220, 0x0020294C,
|
||||
0x00201D10, 0x00201EC8, 0x00203220, 0x00202F24,
|
||||
0x2FB62F96, 0x2FD62FC6, 0x4F222FE6, 0xDE947F80,
|
||||
0x61E0E024, 0x0F14D493, 0x710161E3, 0xD7926210,
|
||||
0x470BE028, 0xD5910F24, 0x0009450B, 0x6D032008,
|
||||
0x1F0B8F11, 0xD48FDC8E, 0xDD8F67C0, 0x657C4D0B,
|
||||
0xDD8FD18E, 0x6B9C6910, 0x420862B3, 0x32B84208,
|
||||
0x3D2C4208, 0xE0281FDB, 0xE58004FC, 0x604C66E2,
|
||||
0x3050655C, 0x2D628F13, 0x01FCE024, 0x641CE500,
|
||||
0x625DDE84, 0x8B013243, 0x0009A39E, 0x6753655D,
|
||||
0x607037EC, 0x39DC6953, 0xAFF27501, 0x20088094,
|
||||
0xE0248B13, 0xE50001FC, 0xA009DE7A, 0x655D641C,
|
||||
0x32EC6253, 0x6C536B22, 0x3CDC67B2, 0x75041C71,
|
||||
0x3243625D, 0xA37F8BF3, 0x88012D10, 0xE0248B16,
|
||||
0xE40001FC, 0x671C2D40, 0x624DDE6E, 0x8B013273,
|
||||
0x0009A372, 0x6CE3644D, 0x7C046943, 0x39EC6B43,
|
||||
0x65923BCC, 0x74086DB2, 0x25D2AFEF, 0x8B198804,
|
||||
0x01FCE024, 0x2D70E700, 0x1FD86D1C, 0x627DDE61,
|
||||
0x8B0132D3, 0x0009A358, 0x6B73677D, 0x3BEC61E3,
|
||||
0x710464B2, 0x3C1C6C73, 0x694265C2, 0x29597708,
|
||||
0x2492AFED, 0x8B188805, 0x01FCE024, 0x2D40E400,
|
||||
0xDE54671C, 0x3273624D, 0xA33D8B01, 0x644D0009,
|
||||
0x6BE36D43, 0x65D23DEC, 0x61437B04, 0x6C1231BC,
|
||||
0x74086952, 0xAFED29CB, 0x88312592, 0xDE4A8B20,
|
||||
0x65E6DB4A, 0x61E6DC4A, 0x67E2D94A, 0x62E27E04,
|
||||
0x1FEC7EE8, 0x7E0464E2, 0x6EE21FED, 0x5BFD2BE0,
|
||||
0x60B27B04, 0xC9011FBE, 0x6BB22C00, 0x29B04B09,
|
||||
0xDC412F26, 0x66134C0B, 0xE2007F04, 0x2D20A30C,
|
||||
0x8B218830, 0xD939DE38, 0xE06465E6, 0x720462E3,
|
||||
0x672666E2, 0x6E23DC36, 0x62227EE8, 0x6BE261E6,
|
||||
0x29B01FEF, 0x7E040F16, 0xC90160E2, 0x6EE22C00,
|
||||
0x4E09DC30, 0x2F262CE0, 0xD130E068, 0x04FE410B,
|
||||
0xE2007F04, 0x2D20A2E8, 0x8B058833, 0x4E0BDE2C,
|
||||
0xE1000009, 0x2D10A2E0, 0x89018828, 0x0009A106,
|
||||
0xE143DE20, 0xE04062E1, 0x3217622D, 0x0FE68F04,
|
||||
0x6023E240, 0x262106FE, 0x8B013217, 0x0009A0EF,
|
||||
0x02FEE040, 0x8521E401, 0x8B013046, 0x0009A0E7,
|
||||
0xE501E040, 0x2D5007FE, 0x6471B2C7, 0x09FEE040,
|
||||
0x6291E143, 0x652DE068, 0x8D6B3517, 0xE6400F56,
|
||||
0x8B273563, 0xE048E600, 0xE11A0F65, 0x72C0A031,
|
||||
0x00117800, 0x00202FB8, 0x00201356, 0x00202480,
|
||||
0x00202F1A, 0x00202FBC, 0x002013A2, 0x00202F19,
|
||||
0x00202B40, 0x00117804, 0x00117810, 0x00202F15,
|
||||
0x00202F16, 0x00202F17, 0x00200B84, 0x00200BD8,
|
||||
0x00200BD4, 0x41216153, 0x41214121, 0x41214121,
|
||||
0x45214521, 0x60534521, 0x6603C903, 0x0F65E048,
|
||||
0xE0077118, 0xE0442209, 0x641D0F25, 0x65F3E04C,
|
||||
0x0F46B314, 0x04FDE048, 0x0BFDE044, 0x61BD674D,
|
||||
0x41084708, 0x0F16E050, 0xD2936073, 0x420B09FE,
|
||||
0x6C07E00F, 0x607329C9, 0xE0400F96, 0x65F30EFE,
|
||||
0x6D0D85E2, 0x01FEE050, 0x60D3420B, 0x6073290B,
|
||||
0xE04C0F96, 0x04FEB2D9, 0x06FEE040, 0x6261E068,
|
||||
0x0F56652D, 0x3563E640, 0xE000894E, 0x602381F8,
|
||||
0x4008C903, 0x6B034000, 0xE0546103, 0xE0580FB6,
|
||||
0xECFFDD7D, 0x6CCC0FF6, 0x0FD6E06C, 0x4D0B60C3,
|
||||
0x42216253, 0x42214221, 0x64234221, 0x324C4200,
|
||||
0xE05C6E07, 0x45214200, 0xE0400FE6, 0x0BFE4521,
|
||||
0xC9036053, 0x30FC4008, 0x6D037B06, 0x85F81F05,
|
||||
0x6C2D1FB7, 0x1FC66E03, 0x0FC6E060, 0x05FEE058,
|
||||
0x64C3B2B4, 0x33FCE354, 0x563262D2, 0x22696132,
|
||||
0x67B42D22, 0x490B5936, 0x220B607C, 0x05FEE058,
|
||||
0x64C32D22, 0x7E01B289, 0xE70662ED, 0x8FE33273,
|
||||
0xE0407C01, 0x626106FE, 0x06FEE040, 0x85614200,
|
||||
0x302C760C, 0x6103701B, 0x64F3E500, 0x7501E704,
|
||||
0x6B5D6966, 0x24923B73, 0x74048FF9, 0xB26C65F3,
|
||||
0xE040641D, 0xB20506FE, 0xA1DD6461, 0xD44F0009,
|
||||
0xE201D74F, 0x2D20470B, 0x0009A1D6, 0x8B078829,
|
||||
0xEC00DE4C, 0x61E22DC0, 0x641DB1D7, 0x0009A1CC,
|
||||
0x622CE281, 0x8B013020, 0x0009A118, 0x06FCE028,
|
||||
0xE682626C, 0x3260666C, 0xA0EE8B01, 0xE6830009,
|
||||
0x3260666C, 0xA0DC8B01, 0xE6900009, 0x3260666C,
|
||||
0xA0D08B01, 0xE6910009, 0x3260666C, 0xA0B98B01,
|
||||
0xE6B00009, 0x3260666C, 0xA07F8B01, 0xE6BB0009,
|
||||
0x3260666C, 0xE6928920, 0x3260666C, 0xE4008B14,
|
||||
0xEB04D531, 0x52516652, 0x8B073620, 0x624D7401,
|
||||
0x8FF732B7, 0xE6007508, 0x52FBA002, 0xE60152FB,
|
||||
0xE6041261, 0x2260A188, 0xD229D428, 0xD4296542,
|
||||
0x0009420B, 0x0009A180, 0xE100E670, 0x601336FC,
|
||||
0xE0248162, 0x0BFCD21F, 0x6BBC6722, 0x26727BFC,
|
||||
0xEB0416B2, 0x06FEE078, 0x3263621D, 0xA16B8B01,
|
||||
0xDE1D0009, 0x31EC611D, 0xD41C6E12, 0x410BD114,
|
||||
0xE0700009, 0x450BD51A, 0xD41A04FE, 0x420BD210,
|
||||
0xD2170009, 0x64E3420B, 0xD60DD417, 0x0009460B,
|
||||
0x05FEE070, 0x01FDE074, 0x611DE600, 0x6253351C,
|
||||
0x326C666D, 0x22E07601, 0x32B3626D, 0x4E198FF7,
|
||||
0xE0747104, 0x0F15AFCE, 0x002029F8, 0x00202FDC,
|
||||
0x00201356, 0x00117804, 0x00202B10, 0x00117800,
|
||||
0x002013A2, 0x00203014, 0x00117808, 0x00202FF4,
|
||||
0x0020139A, 0x00203008, 0x00203010, 0x02FCE024,
|
||||
0x672CE07C, 0xEC000F76, 0xE07CEB04, 0x62CD07FE,
|
||||
0x8B013273, 0x0009A118, 0x6CCDD7B9, 0x357C65C3,
|
||||
0x62C37704, 0xD4B7327C, 0x6D52D7B7, 0x6E22470B,
|
||||
0x470BD7B6, 0xD4B664D3, 0x420BD2B3, 0xD2B30009,
|
||||
0x64E3420B, 0xD6B0D4B3, 0x0009460B, 0x67D3E600,
|
||||
0x376C666D, 0x626D7601, 0x27E032B3, 0x4E198FF7,
|
||||
0x7C08AFD3, 0x6212D1A6, 0x2228622C, 0xD2AA8B04,
|
||||
0x0009420B, 0x0009A003, 0x420BD2A8, 0x56FB0009,
|
||||
0xA0E1E200, 0xB1A62620, 0x56FB0009, 0xA0DBE200,
|
||||
0x52FB2620, 0xE500D69A, 0x65622250, 0x7604D2A0,
|
||||
0x62622252, 0xA0CFD69F, 0x56FB2620, 0x2610E124,
|
||||
0x5217D19D, 0x52181621, 0x52191622, 0x521A1623,
|
||||
0x551B1624, 0x1655E200, 0x1656551C, 0x1657551D,
|
||||
0x1658551E, 0x1659551F, 0x11281127, 0x112A1129,
|
||||
0x112C112B, 0x112E112D, 0x112FA0AE, 0xD68FD18E,
|
||||
0x6262E040, 0x76046512, 0x2152352C, 0x55116266,
|
||||
0x1151352C, 0x62626563, 0x75085612, 0x1162362C,
|
||||
0x56136252, 0x362C75EC, 0x62521163, 0x75105614,
|
||||
0x1164362C, 0x62526653, 0x76105515, 0x1155352C,
|
||||
0x56166262, 0x362CD57E, 0x62561166, 0x362C5617,
|
||||
0x66531167, 0x55186252, 0x352C7604, 0x62661158,
|
||||
0x352C5519, 0x65631159, 0x561A6262, 0x362C7504,
|
||||
0x6252116A, 0x7504561B, 0x116B362C, 0x561C6256,
|
||||
0x116C362C, 0x561D6256, 0x116D362C, 0x62526653,
|
||||
0x7604551E, 0x115E352C, 0x561F6262, 0x362CD569,
|
||||
0x6252116F, 0x7594061E, 0x0166362C, 0x6653E044,
|
||||
0x051E6252, 0x352C7644, 0xE0480156, 0x061E6262,
|
||||
0x0166362C, 0xE054D660, 0x051E6262, 0x352C4229,
|
||||
0x76040156, 0xE0586262, 0x4229061E, 0x0166362C,
|
||||
0xE23856FB, 0xE0442620, 0xE048021E, 0x62121621,
|
||||
0x55111622, 0x1653E200, 0x16545512, 0x16555515,
|
||||
0x16565513, 0x16575516, 0xE040051E, 0x051E1658,
|
||||
0x1659E050, 0x165A5514, 0xE04C051E, 0x051E165B,
|
||||
0x165CE054, 0xE058051E, 0x051E165D, 0x165EE044,
|
||||
0xE0480126, 0x11212122, 0x11251122, 0x11261123,
|
||||
0xE0400126, 0xE0500126, 0x01261124, 0x0126E04C,
|
||||
0x0126E054, 0x0126E058, 0x3F3C9358, 0x6EF64F26,
|
||||
0x6CF66DF6, 0x000B6BF6, 0x4F2269F6, 0xE240614D,
|
||||
0x89143123, 0x3127E21F, 0x8B09D734, 0xD434614D,
|
||||
0xE00171E0, 0x5671440B, 0x26596507, 0x1761A007,
|
||||
0xE001D42F, 0x6672440B, 0x26596507, 0x4F262762,
|
||||
0x0009000B, 0x614D4F22, 0x3123E240, 0xE21F8912,
|
||||
0xD7263127, 0x614D8B08, 0x5671D225, 0x420B71E0,
|
||||
0x260BE001, 0x1761A006, 0x6672D221, 0xE001420B,
|
||||
0x2762260B, 0x000B4F26, 0xE6400009, 0x46284618,
|
||||
0x6252D51C, 0x89FC2268, 0x0009000B, 0x4618E680,
|
||||
0xD5184628, 0x22686252, 0x000B89FC, 0xA0010009,
|
||||
0x7201E200, 0x8BFC3242, 0x0009000B, 0x00000080,
|
||||
0x00117804, 0x00202FF4, 0x00201356, 0x0020139A,
|
||||
0x00203008, 0x00203010, 0x00200C38, 0x00200C12,
|
||||
0x00202F00, 0x00202F14, 0x00202AA4, 0x001C36A0,
|
||||
0x001C3CA0, 0x001C36F4, 0x001C3B88, 0x001C3704,
|
||||
0x002029F8, 0x001C373C, 0x4618E680, 0xD52F4628,
|
||||
0x22686252, 0x000B8BFC, 0x2FE60009, 0x7FFC4F22,
|
||||
0xBFF16E53, 0x61E22F42, 0xE280D629, 0x54E11615,
|
||||
0x16464218, 0x422855E2, 0x57E31657, 0x16786EF2,
|
||||
0x26E22E2B, 0x4F267F04, 0x6EF6AFA8, 0x2FD62FC6,
|
||||
0x4F222FE6, 0x6C53DD1E, 0x6E43BFD6, 0x2DE2BF95,
|
||||
0x0009BFD2, 0x2C1251D5, 0x1C4154D6, 0x1C5255D7,
|
||||
0x1C6356D8, 0x6EF64F26, 0x000B6DF6, 0x61636CF6,
|
||||
0xA004E600, 0x62564109, 0x24227601, 0x36127404,
|
||||
0x000B8BF9, 0x4F220009, 0xD10FD40E, 0x0009410B,
|
||||
0xD40FD20E, 0xE5056022, 0x2202CB20, 0xD50D2452,
|
||||
0x450BE700, 0xD70C2472, 0x0009470B, 0xE601D10B,
|
||||
0x2162D20B, 0x4F264618, 0x2262000B, 0x001C3700,
|
||||
0x001C370C, 0x00203028, 0x00201356, 0x001C3500,
|
||||
0x001D4004, 0x002013CC, 0x00200EF8, 0x001E212C,
|
||||
0x001C3D30, 0x0009A1A9, 0x2FE62FD6, 0xDD8F4F22,
|
||||
0xA0049EA7, 0xD48E0009, 0x420BD28E, 0x62D265D2,
|
||||
0x8BF822E8, 0x0009A004, 0xD28AD48B, 0x55D1420B,
|
||||
0x22E852D1, 0xA0048BF8, 0xD4880009, 0x420BD285,
|
||||
0x52D255D2, 0x8BF822E8, 0x0009A004, 0xD281D484,
|
||||
0x55D3420B, 0x22E852D3, 0xA0048BF8, 0xD4810009,
|
||||
0x420BD27C, 0x52D455D4, 0x8BF822E8, 0x6EF64F26,
|
||||
0x6DF6000B, 0x2FD62FC6, 0x4F222FE6, 0x6E636D73,
|
||||
0x6C53B018, 0x64C357F4, 0xB05465E3, 0xB06A66D3,
|
||||
0xB09A0009, 0xB09E0009, 0xB0A20009, 0xB0BE0009,
|
||||
0xB0C10009, 0xB1240009, 0x4F260009, 0x6DF66EF6,
|
||||
0x6CF6A023, 0x3412D16C, 0xD66C0529, 0x2650D76C,
|
||||
0x2742000B, 0x0009A014, 0x2FD62FC6, 0x4F222FE6,
|
||||
0x6E636D73, 0x6C53BFEE, 0x64C357F4, 0xB02A65E3,
|
||||
0xB10666D3, 0x4F260009, 0x6DF66EF6, 0x6CF6A005,
|
||||
0xE603D260, 0x000B4618, 0xD25E2262, 0x000BE600,
|
||||
0x4F222262, 0xE40ABF7E, 0x0009BF7E, 0xE104D25A,
|
||||
0xE5004118, 0x2212E40A, 0x2252BF74, 0x6072D757,
|
||||
0x4F26CB20, 0x2702000B, 0xD1554F22, 0xE400410B,
|
||||
0x452BD554, 0x2FE64F26, 0x6E63D153, 0x44186612,
|
||||
0x45289210, 0x26294408, 0x44084500, 0x4400265B,
|
||||
0x4708264B, 0x47082162, 0x27EBD14C, 0x000B2172,
|
||||
0x03F06EF6, 0x2FE61FFF, 0xDE494F22, 0xE40AE101,
|
||||
0x2E12BF48, 0x726C62E3, 0xE401E100, 0x22122212,
|
||||
0x22122212, 0x22122212, 0xE7302242, 0xE40AE503,
|
||||
0x22122212, 0x22122212, 0x22122212, 0x22122212,
|
||||
0x22122212, 0x22122212, 0x22522272, 0x22122212,
|
||||
0x22122212, 0x22122212, 0x22122212, 0x121ABF22,
|
||||
0x2E62E600, 0x000B4F26, 0xD2326EF6, 0xE441E101,
|
||||
0x000B2212, 0xD1302242, 0xE605D430, 0x000B2162,
|
||||
0xD52F2462, 0x6050D22F, 0x8B0E8801, 0x6040D42E,
|
||||
0x8B078801, 0x9626D52D, 0x88016050, 0x96238B0C,
|
||||
0x0009A00A, 0xA0079621, 0xE6000009, 0x2262D426,
|
||||
0x88016040, 0xE6048B00, 0xAEF3E40A, 0xD2242262,
|
||||
0xE40AE601, 0x2262AEEE, 0x2FC62FB6, 0x2FE62FD6,
|
||||
0xDC204F22, 0x60C2ED00, 0xCB01EB64, 0x60C22C02,
|
||||
0xA041C901, 0x03C46E03, 0x034003D4, 0x001C3B88,
|
||||
0x0020302C, 0x002013A2, 0x00203034, 0x0020303C,
|
||||
0x00203044, 0x0020304C, 0x0025E720, 0x0020321C,
|
||||
0x00202F04, 0x001C5968, 0x001D4004, 0x001C3500,
|
||||
0x00201154, 0x00201180, 0x001C5814, 0x001C59D0,
|
||||
0x001C5830, 0x001C6268, 0x001C59A4, 0x001C639C,
|
||||
0x00202F16, 0x001C5804, 0x00202F15, 0x00202F17,
|
||||
0x001C581C, 0x001C5860, 0x89073DB2, 0xE40A60C2,
|
||||
0xBE9FC901, 0x7D016E03, 0x8BF52EE8, 0x8B033DB2,
|
||||
0xD23ED43D, 0x0009420B, 0x4F26E40A, 0x6DF66EF6,
|
||||
0xAE8F6CF6, 0x44116BF6, 0x604B8F01, 0x000B6043,
|
||||
0x2FB60009, 0x2FD62FC6, 0x4F222FE6, 0xDC347FFC,
|
||||
0x60C2ED00, 0xCB02EB64, 0x60C22C02, 0xC9022F02,
|
||||
0x6E03A009, 0x89083DB3, 0xE40A60C2, 0xC9022F02,
|
||||
0x6E03BE70, 0x2EE87D01, 0x3DB38BF4, 0xD4298B08,
|
||||
0x7F04D226, 0x6EF64F26, 0x6CF66DF6, 0x6BF6422B,
|
||||
0x4F267F04, 0x6DF66EF6, 0x000B6CF6, 0xD5226BF6,
|
||||
0x60525651, 0x000B4628, 0x2FB6306C, 0x2FD62FC6,
|
||||
0x4F222FE6, 0x4F024F12, 0x6E43BFF1, 0xDC1B6B03,
|
||||
0xBFECDD1B, 0x30B80009, 0x060A3C05, 0x46094609,
|
||||
0x3D654601, 0x4209020A, 0x42094209, 0x8BF032E2,
|
||||
0x4F164F06, 0x6EF64F26, 0x6CF66DF6, 0x6BF6000B,
|
||||
0x4F222FE6, 0xE102DE0F, 0xE403E500, 0xBFD42E12,
|
||||
0xE6062E52, 0xE7004618, 0x2E62E403, 0x4F262E72,
|
||||
0x6EF6AFCB, 0x0009000B, 0x00203054, 0x00201356,
|
||||
0x001C5860, 0x0020306C, 0x001C1040, 0xCCCCCCCD,
|
||||
0x10624DD3, 0x001D4004, 0x2F962F86, 0x2FB62FA6,
|
||||
0x2FD62FC6, 0x4F222FE6, 0xE5007FDC, 0x6453E110,
|
||||
0x6C534128, 0xED096E53, 0x6653655D, 0x365C4608,
|
||||
0x75014608, 0x6043361C, 0x0F66675D, 0xEB0060C3,
|
||||
0x26C137D3, 0x81628161, 0x16B28163, 0x16B416E3,
|
||||
0x74048FEA, 0xD9A668F2, 0x1981DAA6, 0x59F12982,
|
||||
0x1A91D1A5, 0x5AF22A92, 0x5DF45BF3, 0x54F65EF5,
|
||||
0x21A211A1, 0x11B211B3, 0x11D411D5, 0x11E611E7,
|
||||
0x11481149, 0x55F7EE00, 0x57F8DD9C, 0x64E3D29C,
|
||||
0xDB9DD99C, 0xE845EAB8, 0x2D521D51, 0x6AAC2272,
|
||||
0x6EED4808, 0x4D086DE3, 0x3DEC65E3, 0x4D084508,
|
||||
0x3D9C35EC, 0x450860C3, 0x81D12DC1, 0x4508E050,
|
||||
0x45084008, 0x60C381D2, 0xE60035BC, 0x81D334A2,
|
||||
0x1D531DD2, 0x8D01D489, 0xD4861D64, 0xB05C65D3,
|
||||
0x64ED7E01, 0x8BDC3482, 0xDB88D182, 0xD2806812,
|
||||
0x1B814829, 0x2FD26412, 0x2B92694D, 0xD97F6722,
|
||||
0x1B734729, 0xD77C6822, 0x1BA26A8D, 0xD2806B72,
|
||||
0x22B2D57B, 0xE0035D72, 0x5E7412D2, 0x12E44018,
|
||||
0xD67C5176, 0x54781216, 0x1248E103, 0xD4796792,
|
||||
0x6852127A, 0x28C1E7FF, 0x81916952, 0x6A52E050,
|
||||
0x81A24008, 0x60C36B52, 0x6C5281B3, 0x6E521CC2,
|
||||
0x62521E63, 0x1264E600, 0x46086563, 0x7501364C,
|
||||
0x665D2672, 0x8BF83613, 0x4F267F24, 0x6DF66EF6,
|
||||
0x6BF66CF6, 0x69F66AF6, 0x68F6000B, 0x60616642,
|
||||
0x8D04C803, 0x6061E500, 0x8802C903, 0x52628B03,
|
||||
0x51246563, 0x000B2412, 0x2FD66053, 0x4F222FE6,
|
||||
0x6E537FEC, 0xE5506253, 0xE4006D43, 0xA0014508,
|
||||
0x5224E101, 0x22116043, 0x81238121, 0x81226053,
|
||||
0x362056E2, 0xD2548BF5, 0x64F316E4, 0x420BE614,
|
||||
0x65E165E3, 0x2549E4FC, 0x61F12E51, 0x214965F3,
|
||||
0x54D12F11, 0x410BD14C, 0x57D1E614, 0xCB016071,
|
||||
0x1DE12701, 0x4F267F14, 0x000B6EF6, 0x2FD66DF6,
|
||||
0x4F222FE6, 0x6E537FEC, 0xE5FC6653, 0x60616D43,
|
||||
0xCB012059, 0x52E22601, 0x8B063260, 0x51E212E4,
|
||||
0x8B0431E0, 0xA00252D1, 0xAFF01E22, 0xD23A5664,
|
||||
0xE61464F3, 0x65E3420B, 0xE1FC67E1, 0x2E712719,
|
||||
0x54D167F1, 0xD1342719, 0xE61465F3, 0x2F71410B,
|
||||
0x602152D1, 0x2201CB01, 0x7F141DE1, 0x6EF64F26,
|
||||
0x6DF6000B, 0x4F222FE6, 0xDE23624C, 0x42004208,
|
||||
0x3E2CA005, 0xD41F5252, 0xBF8E5624, 0x65E22E62,
|
||||
0x352052E1, 0xD6228BF6, 0x4F262622, 0x6EF6000B,
|
||||
0x2FC62FB6, 0x2FE62FD6, 0xDC184F22, 0x52C1DB1F,
|
||||
0x362066C2, 0x6061891C, 0x8801C903, 0xDE138918,
|
||||
0xBF63DD1B, 0x650364E3, 0x66B28503, 0x3262620D,
|
||||
0xD40B8907, 0x0009BF9B, 0x4D0BD416, 0xAFE60009,
|
||||
0xBF620009, 0xD41464E3, 0x00094D0B, 0x0009AFDF,
|
||||
0x2262D212, 0x6EF64F26, 0x6CF66DF6, 0x6BF6000B,
|
||||
0x00202B00, 0x00202B08, 0x00202B10, 0x00202B38,
|
||||
0x00202F1C, 0x001000B4, 0x00101680, 0x001E2108,
|
||||
0x001C3D00, 0x00117880, 0x00200A9E, 0x00202F00,
|
||||
0x00201356, 0x00203088, 0x0020308C, 0x001C3D28,
|
||||
0x2FC62FB6, 0x2FE62FD6, 0x7FFC4F22, 0x6022D22B,
|
||||
0x8D41C803, 0xDE2A2F01, 0xDB2BDC2A, 0xED01A017,
|
||||
0xC9036051, 0x89168801, 0xD128D426, 0x0009410B,
|
||||
0x61035503, 0xC8208551, 0xE0508903, 0x720102BE,
|
||||
0xD2230B26, 0x420B64E3, 0xD6226513, 0x52C126D2,
|
||||
0x352065C2, 0xDE208BE4, 0xDB21DD20, 0x52D1DC21,
|
||||
0x352065D2, 0x60518918, 0x8801C903, 0xD41B8914,
|
||||
0x460BD616, 0x57030009, 0x8F0437E0, 0xE2016503,
|
||||
0xAFEC2B20, 0xD4182C52, 0x420BD218, 0xD6110009,
|
||||
0x4118E101, 0x2612AFE3, 0xC80460F1, 0xD2148907,
|
||||
0x4F267F04, 0x6DF66EF6, 0x422B6CF6, 0x7F046BF6,
|
||||
0x6EF64F26, 0x6CF66DF6, 0x6BF6000B, 0x001E2100,
|
||||
0x00202B10, 0x00202B08, 0x00202AA4, 0x0020106C,
|
||||
0x002010EE, 0x001C3D30, 0x00117880, 0x00202B00,
|
||||
0x00202F20, 0x00202F1C, 0x00202B38, 0x0020108A,
|
||||
0x00200170, 0xE601D203, 0x1265D503, 0x000B2252,
|
||||
0x00001266, 0x001C1010, 0x0000C34F, 0x0009000B,
|
||||
0x2FD62FC6, 0x4F222FE6, 0x6D436C53, 0xEE00A004,
|
||||
0x7E0164D4, 0x644CBFF2, 0x8BF93EC2, 0x6EF64F26,
|
||||
0x000B6DF6, 0xE5006CF6, 0x6643A002, 0x76017501,
|
||||
0x22286260, 0xAFE38BFA, 0x2FE60009, 0x75076253,
|
||||
0xE1086753, 0x6043EE0A, 0x4409C90F, 0x650330E2,
|
||||
0x8D014409, 0xE630E637, 0x4110365C, 0x8FF22760,
|
||||
0xE00077FF, 0x000B8028, 0x000B6EF6, 0x000BE000,
|
||||
0x2FE6E000, 0x7FEC4F22, 0x6E436253, 0xBFDC65F3,
|
||||
0xBFD06423, 0xBFCE64E3, 0xD40364F3, 0x0009BFCB,
|
||||
0x4F267F14, 0x6EF6000B, 0x00203090, 0xE4FDD59A,
|
||||
0xD69A6152, 0x25122149, 0x74016052, 0x2502CB01,
|
||||
0xD1976752, 0x25722749, 0xC8406010, 0x60628902,
|
||||
0x2602CB04, 0xE5016062, 0x2602CB08, 0xE4026062,
|
||||
0x2602C9CF, 0x45186062, 0x2602CB03, 0x000B1642,
|
||||
0xD58C1653, 0xD28DD78C, 0xE100D48D, 0x2511E600,
|
||||
0x22102711, 0x2461AFD2, 0xD28A664C, 0x362C4600,
|
||||
0xCB106060, 0x2600000B, 0xD286654C, 0x352C4500,
|
||||
0xE1EF6650, 0x000B2619, 0x664C2560, 0x4600D282,
|
||||
0x6060362C, 0x000BCB10, 0x654C2600, 0x4500D27E,
|
||||
0x6650352C, 0x2619E1EF, 0x2560000B, 0xD279664C,
|
||||
0x362C4600, 0xCB086060, 0x2600000B, 0xD275654C,
|
||||
0x352C4500, 0xE1F76650, 0x000B2619, 0x664C2560,
|
||||
0x4600D271, 0x6060362C, 0x000BCB08, 0x654C2600,
|
||||
0x4500D26D, 0x6650352C, 0x2619E1F7, 0x2560000B,
|
||||
0xD668624C, 0x326C4200, 0xC9086020, 0x40214021,
|
||||
0x000B4021, 0x624C600C, 0x4200D663, 0x6020326C,
|
||||
0x4021C908, 0x40214021, 0x600C000B, 0x644CD15F,
|
||||
0x6240341C, 0x602C000B, 0x644CD15D, 0x6240341C,
|
||||
0x602C000B, 0x4F222FE6, 0x645C6E43, 0x3467E60A,
|
||||
0xBFEB8914, 0x640C0009, 0x880160EC, 0xE00F8B02,
|
||||
0x2409A002, 0x44094409, 0xE60A624C, 0x89053263,
|
||||
0x644CBFE2, 0x6023620C, 0x8B00C880, 0x6023E200,
|
||||
0x000B4F26, 0x4F226EF6, 0x6062D64A, 0x8B038801,
|
||||
0x0009B246, 0x0009A003, 0xE640D247, 0xD6472260,
|
||||
0x4F26E200, 0x2622000B, 0xD6424F22, 0x88026062,
|
||||
0xB28F8B01, 0xD6410009, 0x4F26E200, 0x2622000B,
|
||||
0xD43DD53C, 0xE701E100, 0x000B2512, 0xD23A2470,
|
||||
0x000BE604, 0x4F222260, 0xD13AD439, 0x0009410B,
|
||||
0xE1FDD539, 0xD2396650, 0xE7002619, 0x4F262560,
|
||||
0x2270000B, 0xD4364F22, 0x410BD132, 0xD5320009,
|
||||
0x6650E7FB, 0x4F262679, 0x2560000B, 0xD4314F22,
|
||||
0x410BD12C, 0xD52C0009, 0x6650E7F7, 0x4F262679,
|
||||
0x2560000B, 0x942DD528, 0x22496250, 0x2520000B,
|
||||
0xE4BFD525, 0x22496250, 0x2520000B, 0xD2264F22,
|
||||
0x600D8522, 0x89112008, 0x89138801, 0x89158803,
|
||||
0x89438805, 0x89498806, 0x894F8808, 0x89558809,
|
||||
0x895B880A, 0x8961880B, 0x0009A068, 0x0009B06A,
|
||||
0x600CA065, 0x0009B078, 0x600CA061, 0x0009B081,
|
||||
0x600CA05D, 0x0000FF7F, 0x001E2148, 0x001E1108,
|
||||
0x001E1000, 0x00202F60, 0x00202F62, 0x00202F81,
|
||||
0x00202F44, 0x001E103F, 0x001E105F, 0x001E102F,
|
||||
0x001E1090, 0x00202F68, 0x001E100B, 0x00202F64,
|
||||
0x00203094, 0x00201356, 0x001E1028, 0x00202F80,
|
||||
0x002030A0, 0x002030B0, 0x00202F38, 0x6260D684,
|
||||
0x8B2B2228, 0x0009B061, 0x600CA029, 0x6260D680,
|
||||
0x8B232228, 0x0009B069, 0x600CA021, 0x6260D67C,
|
||||
0x8B1B2228, 0x0009B0C7, 0x600CA019, 0x6260D678,
|
||||
0x8B132228, 0x0009B0CD, 0x600CA011, 0x6260D674,
|
||||
0x8B0B2228, 0x0009B125, 0x600CA009, 0x6260D670,
|
||||
0x8B032228, 0x0009B13D, 0x600CA001, 0x4F26E000,
|
||||
0x0009000B, 0xD26CD16B, 0xD56C8412, 0x4000C90F,
|
||||
0xD76B012D, 0xE403D66B, 0xE20F611C, 0x2540E001,
|
||||
0x25202712, 0x2602000B, 0xE601D262, 0x30668523,
|
||||
0xE0008D05, 0xD663D260, 0xE0018122, 0x000B2602,
|
||||
0xD25C0009, 0x600D8523, 0x89052008, 0x8B0A8801,
|
||||
0x6060D65D, 0x2600CB01, 0xD457D65A, 0xE001E101,
|
||||
0x000B2612, 0x000B8142, 0xD152E000, 0x8513E501,
|
||||
0x640D4518, 0x66033453, 0xE0008D05, 0xD551D253,
|
||||
0x2260E001, 0x000B2502, 0x4F220009, 0x8513D149,
|
||||
0x6453650D, 0x62494419, 0x227D672E, 0x8801602C,
|
||||
0x88028909, 0x88038910, 0x8806891A, 0x88078935,
|
||||
0xA04C893B, 0xD5460009, 0x6652D746, 0x2762D446,
|
||||
0x622C6261, 0x2421A038, 0x2228625C, 0xD4438B3F,
|
||||
0x6642D540, 0x2562D440, 0x24018561, 0x6203A02C,
|
||||
0x2008605C, 0x88108907, 0x88208908, 0x88308909,
|
||||
0xA02C890A, 0xD23A0009, 0x6222A008, 0xA005D239,
|
||||
0xD2396222, 0x6222A002, 0x6262D638, 0xD432D531,
|
||||
0x66212522, 0xA00F626C, 0xD6352421, 0x6261D52D,
|
||||
0x622CD42D, 0xA0072562, 0xD6322421, 0x8561D529,
|
||||
0x2562D429, 0x62032401, 0x662D8515, 0x3617610D,
|
||||
0x65038F01, 0xB0CB2451, 0xA0010009, 0xE000E001,
|
||||
0x000B4F26, 0xD6190009, 0xD427E101, 0x65412610,
|
||||
0xD118D717, 0xE20F655D, 0x2752E001, 0x000B2620,
|
||||
0x2FE62102, 0xD20F4F22, 0x640C8523, 0x8B082448,
|
||||
0xD511D61D, 0x2621E200, 0x940F8451, 0xA0482049,
|
||||
0xDE0D8051, 0xC84060E0, 0xE2018D32, 0x89443427,
|
||||
0xD216D615, 0x2641420B, 0x0009A030, 0x0000FF7F,
|
||||
0x00202F81, 0x00202F38, 0x00202F44, 0x001E1100,
|
||||
0x001E100C, 0x00202F64, 0x001E1000, 0x001E1001,
|
||||
0x00202F6C, 0x00202F4C, 0x00202F50, 0x00202F54,
|
||||
0x00202F70, 0x00202F74, 0x00202F78, 0x00202F7C,
|
||||
0x00203280, 0x0020328A, 0x00202F5E, 0x0020225A,
|
||||
0x89123427, 0xD294D693, 0x2641420B, 0xCB8084E1,
|
||||
0x80E1B0F5, 0xD69160E0, 0x2E00CB04, 0xC93F6060,
|
||||
0xD68F2600, 0xA001E001, 0xE0002602, 0x000B4F26,
|
||||
0xD68C6EF6, 0xC8806060, 0xD2868919, 0x88016021,
|
||||
0xD2898B15, 0x8524E501, 0x89103056, 0xE203D187,
|
||||
0x2120D487, 0xE00B6541, 0x0656655D, 0xE40FD585,
|
||||
0x2140E702, 0xD77E2571, 0x000BE001, 0x000B2702,
|
||||
0x2FE6E000, 0xDE804F22, 0xC88084E1, 0xD57A892C,
|
||||
0x20088554, 0x61038F28, 0x8553D77C, 0x64036672,
|
||||
0x8566650C, 0x3520620C, 0xD6798B1E, 0x651CD774,
|
||||
0x2651644C, 0x60E02741, 0x8904C840, 0x420BD275,
|
||||
0xA0030009, 0xD2680009, 0x0009420B, 0x0009B09F,
|
||||
0xE201D167, 0x60E02122, 0xCB04D464, 0x60402E00,
|
||||
0x2400C93F, 0x6023A001, 0x4F26E000, 0x6EF6000B,
|
||||
0x2FB62FA6, 0x2FD62FC6, 0xDA622FE6, 0x66A1E240,
|
||||
0x3622DC5E, 0x62638900, 0x6ED36D2C, 0x4E2136D8,
|
||||
0x4E212A61, 0xDB61D460, 0xE700A00F, 0x770162B2,
|
||||
0x71026123, 0x66212B12, 0x71026213, 0x61212B12,
|
||||
0x651D666D, 0x356C4528, 0x627C2452, 0x8BED32E3,
|
||||
0xC90360D3, 0x8B108803, 0x617367B2, 0x2B127102,
|
||||
0x71026E13, 0x2B126571, 0x655D6DE1, 0x422862DD,
|
||||
0x325CE107, 0xA00C2C10, 0x88022422, 0xA0038B01,
|
||||
0x8801E203, 0xE2018B05, 0x66B22C20, 0x655D6561,
|
||||
0xE60F2452, 0x67A12C60, 0x8B052778, 0xDD38DC44,
|
||||
0xEB01EA00, 0x2DB22CA2, 0x6DF66EF6, 0x6BF66CF6,
|
||||
0x6AF6000B, 0x2FE62FD6, 0xE240DD36, 0x362266D1,
|
||||
0x62638900, 0x3678672C, 0x7703DE38, 0x47212D61,
|
||||
0x64E2D635, 0xA00E4721, 0x6562E100, 0x62537101,
|
||||
0x74012450, 0x24204219, 0x45297401, 0x74012450,
|
||||
0x24504519, 0x621C7401, 0x8BEE3273, 0x66E24200,
|
||||
0x420061D1, 0x2118362C, 0x2E628F06, 0xDD1CD728,
|
||||
0xE501E400, 0x2D522742, 0x000B6EF6, 0x2FD66DF6,
|
||||
0x4F222FE6, 0xED0AEE01, 0x64E3BC96, 0xBC9B64E3,
|
||||
0x62EC7E01, 0x8BF732D7, 0xBC9EEE01, 0x64E364E3,
|
||||
0x7E01BCA3, 0x32D762EC, 0x4F268BF7, 0x000B6EF6,
|
||||
0xD1186DF6, 0xD418920D, 0x72122122, 0x2422D617,
|
||||
0xD7177204, 0x72202622, 0x2722D116, 0x000B7230,
|
||||
0x137A2122, 0x00202F5E, 0x00202366, 0x001E1015,
|
||||
0x00202F64, 0x001E1001, 0x00202F38, 0x001E1100,
|
||||
0x00202F62, 0x00202F50, 0x001E1000, 0x00202F54,
|
||||
0x00202F60, 0x0020225A, 0x001E100C, 0x00202F4C,
|
||||
0x00202F68, 0x00202F6C, 0x00202F70, 0x00202F74,
|
||||
0x00202F78, 0x00202F7C, 0x4F222FE6, 0xD6507FFC,
|
||||
0x88016060, 0xE2018951, 0x2620BFBB, 0xD54ED14D,
|
||||
0xDE4E6010, 0x64E36552, 0x7402C840, 0x8D22D14C,
|
||||
0xD24C7502, 0xE601D74C, 0xE7042722, 0x76016255,
|
||||
0x626C2421, 0x8FF93273, 0xD4437402, 0x6242E601,
|
||||
0x640D8528, 0x67494419, 0x275D657E, 0x81E4607C,
|
||||
0xE417D542, 0x67557601, 0x3243626C, 0x8FF92171,
|
||||
0xA0207102, 0xD23E0009, 0xE601D73B, 0xE7042722,
|
||||
0x76016255, 0x626C2421, 0x8FF93273, 0xD4327402,
|
||||
0x6242E601, 0x640D8528, 0x67494419, 0x275D657E,
|
||||
0x81E4607C, 0xE417D533, 0x67557601, 0x3243626C,
|
||||
0x8FF92171, 0x924A7102, 0xD2262E21, 0x5E23D72E,
|
||||
0x64F22FE2, 0x604365F2, 0x2700C980, 0xC9606043,
|
||||
0x80716103, 0xC9036043, 0x80724519, 0x65F2605C,
|
||||
0x817266F2, 0x46194629, 0x606C4529, 0x4018645C,
|
||||
0x8173304C, 0x21185E23, 0x64F22FE2, 0x6E4C62F2,
|
||||
0x602C4219, 0x66F262F2, 0x46294018, 0x461930EC,
|
||||
0x42298174, 0x652C606C, 0x305C4018, 0x81758F07,
|
||||
0x0009BC9C, 0x2228620C, 0xA00A8908, 0x60130009,
|
||||
0x8B038840, 0x0009B009, 0x0009A003, 0xE202D60F,
|
||||
0x7F042622, 0x000B4F26, 0x000B6EF6, 0x060A0009,
|
||||
0x00202F80, 0x001E1000, 0x00202F6C, 0x00203280,
|
||||
0x0020328C, 0x00203224, 0x00202F54, 0x00203254,
|
||||
0x00203252, 0x00203226, 0x00202F38, 0x00202F64,
|
||||
0x4F222FE6, 0xDE937FFC, 0x200884E9, 0x2F008D06,
|
||||
0xD692D491, 0x0009460B, 0x64F0B194, 0x6620D290,
|
||||
0x89022668, 0xC9BF60E0, 0x7F042E00, 0x000B4F26,
|
||||
0x000B6EF6, 0x2FE60009, 0xDE8A4F22, 0x60E0D68A,
|
||||
0xCBC0D48A, 0x62602E00, 0xC803602C, 0x40218904,
|
||||
0x70014021, 0x6603A002, 0x66034009, 0xD684616D,
|
||||
0xE500A004, 0x75016262, 0x74042422, 0x3213625D,
|
||||
0xD2808BF8, 0x0009420B, 0xC9BF84E2, 0x4F2680E2,
|
||||
0x6EF6000B, 0x2FE62FD6, 0x7FFC4F22, 0x6260D67A,
|
||||
0x89442228, 0xD56FE100, 0x60502610, 0xCB40D477,
|
||||
0x2500440B, 0x8D052008, 0x62E06E03, 0x7104612C,
|
||||
0x2F11A006, 0xD472D66A, 0xDD726760, 0x657C4D0B,
|
||||
0xE23C6D1D, 0x8B033D27, 0xD264D46F, 0x0009420B,
|
||||
0x4D214D21, 0xA005D76D, 0x66E6E400, 0x357C4508,
|
||||
0x74012562, 0x35D3654D, 0xD7698BF7, 0x6172E003,
|
||||
0x81114018, 0x6E7260F1, 0x81E2700C, 0xD4656172,
|
||||
0xDD658113, 0x4D0BDE65, 0xE2016572, 0xD4642E22,
|
||||
0x420BD252, 0xD6530009, 0xC93F6060, 0x7F042600,
|
||||
0x6EF64F26, 0x6DF6000B, 0x2FC62FB6, 0x2FE62FD6,
|
||||
0xD25C4F22, 0x6B436E73, 0x420B6C53, 0x20086D63,
|
||||
0x61038F08, 0xD245D458, 0x6EF64F26, 0x6CF66DF6,
|
||||
0x6BF6422B, 0x21B060C3, 0x60D38011, 0xE5008111,
|
||||
0x64BCA007, 0x6053655D, 0x665300EC, 0x7501361C,
|
||||
0x625D8064, 0x8BF53243, 0x6060D636, 0x2600C9BF,
|
||||
0x6EF64F26, 0x6CF66DF6, 0x6BF6000B, 0x7FC44F22,
|
||||
0x720262F3, 0x22512F41, 0x45297202, 0x60632251,
|
||||
0xE5C4E682, 0x67F38121, 0x655C666C, 0xE408BFBC,
|
||||
0x4F267F3C, 0x0009000B, 0x2F962F86, 0x2FB62FA6,
|
||||
0x2FD62FC6, 0x4F222FE6, 0xE1007FC4, 0x6513ECFF,
|
||||
0x6B136CCD, 0xDE36D735, 0xEDFF64F3, 0xD835EA04,
|
||||
0x6053655C, 0x027D4000, 0x32C0622D, 0x66038D0D,
|
||||
0x09ED6063, 0x2491027D, 0x24217402, 0x698202ED,
|
||||
0x3928622D, 0x74022892, 0x75017104, 0x6063625C,
|
||||
0x07D532A2, 0x0EB58FE4, 0x2448641C, 0xE6808905,
|
||||
0x67F3E5C5, 0xBF7F666C, 0x7F3C655C, 0x6EF64F26,
|
||||
0x6CF66DF6, 0x6AF66BF6, 0x000B69F6, 0xD11E68F6,
|
||||
0x6012D21E, 0xCB20E405, 0x2102E500, 0x000B2242,
|
||||
0x00002252, 0x001E1017, 0x002030BC, 0x00201356,
|
||||
0x00202F1A, 0x001E1015, 0x001E10BF, 0x00117800,
|
||||
0x001E10FC, 0x00200170, 0x00202F20, 0x002024BE,
|
||||
0x002030C0, 0x002013A2, 0x002030DC, 0x0011788C,
|
||||
0x00202F1C, 0x00202B00, 0x002010EE, 0x001E2130,
|
||||
0x002030E4, 0x00202480, 0x002030E8, 0x00202F26,
|
||||
0x00202F2E, 0x00203220, 0x001C3500, 0x001D4004,
|
||||
0xD565D164, 0xE400D765, 0x2142E20F, 0x17411154,
|
||||
0xD5632722, 0x9669D763, 0x15412572, 0x96661562,
|
||||
0xE6011565, 0xD5601165, 0x666CE6F8, 0x25422542,
|
||||
0x25422542, 0x25422542, 0x25622542, 0x7601E727,
|
||||
0x67632572, 0x25627797, 0xE7042572, 0x2572E248,
|
||||
0xE2192522, 0xE2702522, 0x25422542, 0x25422542,
|
||||
0x25222542, 0x2522E20C, 0x25422542, 0x25422542,
|
||||
0x25422542, 0x25422542, 0x000B154A, 0xE2081145,
|
||||
0x0009422B, 0x2FE62FD6, 0x7FFC4F22, 0xC8206043,
|
||||
0x6E438D02, 0x0009BE6D, 0xC81060E3, 0xBE6A8901,
|
||||
0x60E30009, 0x8901C840, 0x0009BE8C, 0xC80160E3,
|
||||
0xDD3E8938, 0xC80260D0, 0x2F008D03, 0x460BD63C,
|
||||
0x60F00009, 0x8902C804, 0x460BD63A, 0x62F00009,
|
||||
0xC8806023, 0x60D08902, 0x2D00C97F, 0xC8016023,
|
||||
0xD6358906, 0x0009460B, 0x0009A007, 0x51630601,
|
||||
0x8902C808, 0x460BD631, 0x60F00009, 0x8902C810,
|
||||
0x420BD22F, 0xD52F0009, 0x88026052, 0xD22E8B03,
|
||||
0xA005E604, 0x88012260, 0xD22B8B02, 0x2260E601,
|
||||
0x2522E200, 0xC88060E3, 0xD628892E, 0x60E36E60,
|
||||
0x8902C880, 0x420BD226, 0x60E30009, 0x8902C840,
|
||||
0x420BD224, 0x60E30009, 0x8902C802, 0x420BD222,
|
||||
0x60E30009, 0x890EC804, 0x410BD120, 0xBF0E0009,
|
||||
0xBF4D0009, 0xD51E0009, 0x6050D41E, 0xC908D71E,
|
||||
0xBF842500, 0x60E32472, 0x8905C808, 0x7F04D21B,
|
||||
0x6EF64F26, 0x6DF6422B, 0x4F267F04, 0x000B6EF6,
|
||||
0x00006DF6, 0x001C581C, 0xA000A000, 0x001D0100,
|
||||
0x001D4000, 0x00040021, 0x001C589C, 0x001E1021,
|
||||
0x00201536, 0x00201558, 0x00201B98, 0x00201570,
|
||||
0x0020157E, 0x00202F64, 0x001E100B, 0x001E1028,
|
||||
0x002015D4, 0x002015E0, 0x00201586, 0x002015A4,
|
||||
0x001E1000, 0x0010F100, 0x12345678, 0x002015BC,
|
||||
0x644CD6A7, 0x000B346C, 0xD6A62450, 0x346C644C,
|
||||
0x2450000B, 0x644CD6A4, 0x000B346C, 0x625C2450,
|
||||
0x4208616D, 0x42084119, 0x42006019, 0x670E614C,
|
||||
0xD49E321C, 0x4200207D, 0x324CC90F, 0x2200000B,
|
||||
0x4208625C, 0x42004208, 0x324C644C, 0x4200D498,
|
||||
0x000B324C, 0x2FE62260, 0x614C4F12, 0x4100D493,
|
||||
0x6710314C, 0xE29F666D, 0x27294619, 0x6E536269,
|
||||
0x672E6573, 0x4221227D, 0x42214221, 0x7601662C,
|
||||
0xE4014608, 0x34E84608, 0x644C4600, 0x071A0467,
|
||||
0x2150257B, 0x000B4F16, 0x4F226EF6, 0xD2857FE8,
|
||||
0x88016021, 0xD2848B7B, 0x26686621, 0xD2838B77,
|
||||
0x26686621, 0xE50F8B73, 0xE401BFA2, 0xBFA4E501,
|
||||
0xE586E400, 0xE400655C, 0x2F50BFA4, 0xBFA1E401,
|
||||
0xE602E506, 0x60634618, 0x81F2E401, 0x6543BF9F,
|
||||
0xE40185F2, 0xBFAB6543, 0x85F26603, 0x6543E401,
|
||||
0x6603BFB1, 0xE40265F0, 0x6053756C, 0x80F8BF80,
|
||||
0xBF82E402, 0x84F8E512, 0x7090E402, 0x6503BF82,
|
||||
0x4618E602, 0x81F66063, 0xBF80E402, 0x85F6E500,
|
||||
0x6603E402, 0xE500BF8C, 0xE40285F6, 0xBF926603,
|
||||
0xE5FEE500, 0xE010655C, 0xBF61E403, 0xE5130F54,
|
||||
0xE40EBF63, 0x05FCE010, 0xBF63E40E, 0xE5007585,
|
||||
0xBF64E403, 0xE500E640, 0xBF71E403, 0xE500E640,
|
||||
0xBF78E403, 0xE5FFE640, 0xE014655C, 0xBF47E404,
|
||||
0xE40F0F54, 0xE504BF49, 0x05FCE014, 0xBF49E40F,
|
||||
0xE5017584, 0xBF4AE640, 0xE501E404, 0xBF57E640,
|
||||
0xE501E404, 0xE404E640, 0xAF5C7F18, 0x7F184F26,
|
||||
0x000B4F26, 0x4F220009, 0xD2427FF0, 0x88016021,
|
||||
0xD2418B71, 0x26686621, 0xD2408B6D, 0x26686621,
|
||||
0xE50F8B69, 0xE401BF1C, 0xBF1EE501, 0xE586E400,
|
||||
0xE400655C, 0x2F50BF1E, 0xBF1BE401, 0xE401E506,
|
||||
0xBF1C6543, 0xE401E640, 0xBF296543, 0xE401E640,
|
||||
0xBF306543, 0x65F0E640, 0x756CE402, 0xBEFF6053,
|
||||
0xE40280F4, 0xE512BF01, 0xE40284F4, 0xBF017090,
|
||||
0xE6406503, 0xBF02E402, 0xE640E500, 0xBF0FE402,
|
||||
0xE640E500, 0xBF16E402, 0xE5FEE500, 0x6053655C,
|
||||
0xBEE5E403, 0xE51380F8, 0xE40EBEE7, 0xE40E84F8,
|
||||
0xBEE77085, 0xE5006503, 0xBEE8E640, 0xE500E403,
|
||||
0xBEF5E640, 0xE500E403, 0xBEFCE640, 0xE5FFE403,
|
||||
0x6053655C, 0xBECBE404, 0xE40F80FC, 0xE504BECD,
|
||||
0xE40F84FC, 0xBECD7083, 0xE5016503, 0xBECEE640,
|
||||
0xE501E404, 0xBEDBE640, 0xE501E404, 0xE404E640,
|
||||
0xAEE07F10, 0x7F104F26, 0x000B4F26, 0x00000009,
|
||||
0x001E102F, 0x001E1080, 0x001E1090, 0x001E103F,
|
||||
0x001E103E, 0x00202F5E, 0x00202F60, 0x00202F62,
|
||||
0xD21DD11C, 0x66206010, 0x676C7001, 0x3700C90F,
|
||||
0xE5008D13, 0x67106210, 0x7701622C, 0x64232170,
|
||||
0xD6166010, 0x44084408, 0x3428C90F, 0x62602100,
|
||||
0x7201D513, 0x44082620, 0x000B354C, 0xD10F6053,
|
||||
0x25586510, 0xE6008D13, 0xD60DD40B, 0x655C6540,
|
||||
0x47086753, 0x37584708, 0x47086540, 0x24507501,
|
||||
0x367C6040, 0x2400C90F, 0x72FF6210, 0x000B2120,
|
||||
0x00006063, 0x00202F19, 0x00202F18, 0x00202F1A,
|
||||
0x00202B40, 0x7FFC4F22, 0xE680D1A8, 0x666C6212,
|
||||
0xD2A72F22, 0x67F36563, 0x420B7542, 0x7F04E404,
|
||||
0x000B4F26, 0xE6800009, 0xD2A1666C, 0xE7006563,
|
||||
0x422B7540, 0xE6806473, 0xD29D666C, 0xE7006563,
|
||||
0x422B7543, 0x2FB66473, 0x2FD62FC6, 0x4F222FE6,
|
||||
0x4D18ED01, 0xDB98DC97, 0x65C252C1, 0x89203520,
|
||||
0xC9036051, 0x891C8801, 0xD194DE92, 0x64E3410B,
|
||||
0x85036503, 0x670D66B2, 0x89073762, 0xD291D490,
|
||||
0x0009420B, 0xE701D190, 0x2172AFE6, 0xDE8F64E3,
|
||||
0x00094E0B, 0xD48FD68E, 0x410BD18F, 0xAFDB26D2,
|
||||
0x4F260009, 0x6DF66EF6, 0x000B6CF6, 0x4F226BF6,
|
||||
0x85467FF4, 0x2F01E681, 0x666C8547, 0x854881F1,
|
||||
0x81F2D27B, 0x67F38542, 0x854381F3, 0x81F4E40C,
|
||||
0x65636053, 0x420B81F5, 0x7F0C7540, 0x000B4F26,
|
||||
0x2F860009, 0x2FA62F96, 0x2FC62FB6, 0x2FE62FD6,
|
||||
0x7FEC4F22, 0xE000D176, 0xD4782F12, 0x81F26103,
|
||||
0xDC771F42, 0xD6776B13, 0xE0014B08, 0x460BDE76,
|
||||
0x3BEC4B00, 0x66C21F03, 0x362052C1, 0xA1818B01,
|
||||
0x60610009, 0x8801C903, 0xA17B8B01, 0x85610009,
|
||||
0x8B01C801, 0x0009A080, 0x85D25D63, 0xC9036603,
|
||||
0x85D36403, 0x6053650D, 0x40214021, 0x4500C93F,
|
||||
0x322A6103, 0x6053252D, 0xC901E510, 0xD95E3153,
|
||||
0x6E038D21, 0x4408D761, 0x44086870, 0x44006213,
|
||||
0x28884200, 0x342C8F0E, 0x6043D25D, 0x60E3072D,
|
||||
0x4A196A7D, 0x658E68A9, 0x285D8801, 0x6A7C8F0B,
|
||||
0x6A13A009, 0x6043D257, 0x61ED0E2D, 0x68194119,
|
||||
0x287D678E, 0xD1546AEC, 0x22286210, 0xEAFF8901,
|
||||
0xEEFF6AAC, 0x6EEC65AD, 0x8B0F35E0, 0x4D0BDD3F,
|
||||
0x540364C3, 0xBF72E502, 0xD44C6D03, 0x410BD13F,
|
||||
0xD74B65D3, 0xD44BEE01, 0x27E2A025, 0x2679E7FC,
|
||||
0x81D26063, 0x946085D3, 0x61032049, 0x4508268B,
|
||||
0x251B6063, 0x605381D2, 0x85D481D3, 0x4118E108,
|
||||
0x81D4201B, 0xEE0262C2, 0x20798521, 0x64C28121,
|
||||
0x6041678D, 0xCB0137E3, 0x24018D04, 0xEEE785D2,
|
||||
0x81D220E9, 0x490BD438, 0x60C20009, 0x52F366F2,
|
||||
0x2B02CB01, 0x2622AF6F, 0xD2208561, 0x8F02C802,
|
||||
0xA0D264C3, 0x420B0009, 0xD9300009, 0x5E036503,
|
||||
0x079EE04C, 0x7701DD2E, 0x69D20976, 0x7901D626,
|
||||
0x6D602D92, 0x89062DD8, 0xD218D424, 0xED01420B,
|
||||
0xA0B3D723, 0x625127D2, 0x4118E10F, 0x2219E402,
|
||||
0x32404418, 0x85518B46, 0x20D9EDFC, 0x60518151,
|
||||
0xCB017DE3, 0x85E12501, 0x20D9D60A, 0x460B81E1,
|
||||
0x69F264C3, 0xA09957F3, 0x7E032972, 0x001C3D9C,
|
||||
0x00201E38, 0x00202B38, 0x00202F00, 0x0020106C,
|
||||
0x00202B00, 0x002010EE, 0x001E2130, 0x0020108A,
|
||||
0x001C3D30, 0x00203200, 0x00201356, 0x0020320C,
|
||||
0x00202B10, 0x002029F8, 0x001C3D00, 0x0020321C,
|
||||
0x00203100, 0x00203180, 0x00202F14, 0x00202B08,
|
||||
0x001E212C, 0x00203204, 0x00203208, 0x00202AA4,
|
||||
0x00203220, 0x6DDD6D51, 0x6DD94D19, 0x2D6D66DE,
|
||||
0x60DC7D01, 0x41186103, 0x8F458801, 0xD65B2511,
|
||||
0x74016462, 0x85E32642, 0x6063660D, 0x40214021,
|
||||
0x4600C93F, 0x322A6D03, 0x6063262D, 0xD154C801,
|
||||
0x8901D954, 0x2D6B96A1, 0xE010E600, 0x64DD0F64,
|
||||
0x07FCE010, 0x4000607C, 0x622D021D, 0x8D123240,
|
||||
0x60636603, 0xE7FF021D, 0x8B013270, 0x01D5A00B,
|
||||
0x02FCE010, 0x7201E604, 0x622C0F24, 0x8BE73262,
|
||||
0x666C06FC, 0x60634600, 0x7101019D, 0xD1420915,
|
||||
0x697D6711, 0x89073940, 0x602D6211, 0x890388FF,
|
||||
0xDD3E21D1, 0x2D20E201, 0xEDFC8551, 0x815120D9,
|
||||
0xD23B6051, 0x64C3CB01, 0x2501420B, 0x02FCE010,
|
||||
0x612CD438, 0x440BE001, 0x270267F2, 0xD23685EF,
|
||||
0x420B54F2, 0xAE96650D, 0x420B0009, 0x54030009,
|
||||
0x85446E03, 0x4D18ED08, 0x30D020D9, 0xBE568B03,
|
||||
0xA007E501, 0x85410009, 0x620DDD2C, 0x890122D8,
|
||||
0xE500BE4D, 0xD22BD42A, 0x65E3420B, 0xED01D72A,
|
||||
0x27D2AE79, 0xEE0485F2, 0x610D7001, 0x81F231E7,
|
||||
0x7C088D02, 0x0009AE66, 0x4F267F14, 0x6DF66EF6,
|
||||
0x6BF66CF6, 0x69F66AF6, 0x68F6000B, 0x4F222FE6,
|
||||
0x6E22D21E, 0xC84060E3, 0x22E28D02, 0x0009BDD2,
|
||||
0x4218E240, 0x89012E28, 0x0009BDDD, 0xC81060E3,
|
||||
0xD4178905, 0x420BD217, 0xBDDC0009, 0x60E30009,
|
||||
0x8901C805, 0x0009BE2D, 0xC80260E3, 0x4F268902,
|
||||
0x6EF6ADD9, 0x000B4F26, 0x80006EF6, 0x00203220,
|
||||
0x00202F26, 0x00202F2E, 0x00202F22, 0x00202F24,
|
||||
0x002010EE, 0x002029F8, 0x002013A2, 0x00008000,
|
||||
0x00202B08, 0x0020108A, 0x001E212C, 0x001C3510,
|
||||
0x00203214, 0x00201356, 0x080A0C0E, 0x00020406,
|
||||
0x1A1C1E20, 0x12141618, 0x2E303234, 0x26282A2C,
|
||||
0x3A3C3E40, 0x6C625648, 0x41112F26, 0xE2208F18,
|
||||
0x890B3123, 0x321CD204, 0xD1026220, 0x412B312C,
|
||||
0x00090009, 0x00202A22, 0x002029D8, 0x000BE000,
|
||||
0x400062F6, 0x40004000, 0x40004000, 0x40004000,
|
||||
0x62F6000B, 0x40004000, 0x40004000, 0x40004000,
|
||||
0x40184000, 0x62F6000B, 0x40004000, 0x40004000,
|
||||
0x40004000, 0x40284000, 0x62F6000B, 0x40004000,
|
||||
0x40184000, 0x000B4028, 0xC90F62F6, 0x40054005,
|
||||
0x40054005, 0x62F6000B, 0x4005C907, 0x40054005,
|
||||
0x62F6000B, 0x4005C903, 0x000B4005, 0xC90162F6,
|
||||
0x000B4005, 0x000062F6, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x544F0D0A, 0x46205355, 0x00003A57, 0x20636544,
|
||||
0x32203231, 0x20373030, 0x333A3132, 0x34323A36,
|
||||
0x00000000, 0x00000D0A, 0x00000043, 0x42707372,
|
||||
0x3D206675, 0x554E203D, 0x202C4C4C, 0x6E49677A,
|
||||
0x4E497274, 0x6D754E51, 0x0000003D, 0x61766E49,
|
||||
0x2064696C, 0x72657375, 0x20726F20, 0x2079656B,
|
||||
0x00214449, 0x52504545, 0x57204D4F, 0x65746972,
|
||||
0x6461202C, 0x003D7264, 0x6C617620, 0x0000003D,
|
||||
0x00000A0D, 0x6E6B6E55, 0x206E776F, 0x6D6D6F63,
|
||||
0x3D646E61, 0x00000000, 0x000A0D52, 0x203A3051,
|
||||
0x00000020, 0x203A3151, 0x00000020, 0x203A3251,
|
||||
0x00000020, 0x203A3351, 0x00000020, 0x203A3451,
|
||||
0x00000020, 0x61437748, 0x7262696C, 0x6F697461,
|
||||
0x6620206E, 0x0A6C6961, 0x0000000D, 0x73696F4E,
|
||||
0x61432065, 0x7262696C, 0x6F697461, 0x6166206E,
|
||||
0x21216C69, 0x00000D0A, 0x00000072, 0x00205220,
|
||||
0x00000D0A, 0x62735576, 0x7473725F, 0x00000A0D,
|
||||
0x62735576, 0x7375735F, 0x646E6570, 0x00000A0D,
|
||||
0x62735576, 0x7365725F, 0x000A0D6D, 0x00000042,
|
||||
0x72746E49, 0x6D652051, 0x2C797470, 0x49677A20,
|
||||
0x4972746E, 0x754E514E, 0x00003D6D, 0x654C7245,
|
||||
0x0000006E, 0x00000049, 0x20746F4E, 0x756F6E65,
|
||||
0x49206867, 0x4220514E, 0x0A0D6675, 0x00000000,
|
||||
0x000000FF, 0x00020001, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x010E010D, 0x00020003, 0x01090108, 0x0002010A,
|
||||
0x02000003, 0x02020201, 0x02040203, 0x02060205,
|
||||
0x02020200, 0x02040203, 0x020C0207, 0x020E020D,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x010E010D, 0x00FF010F, 0x01090108, 0x010B010A,
|
||||
0x020000FF, 0x02020201, 0x02040203, 0x02060205,
|
||||
0x02020200, 0x02040203, 0x020C020B, 0x020E020D,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00205220, 0x00000046, 0x00000059, 0x73204142,
|
||||
0x003D7165, 0x49544120, 0x0000204D, 0x00000000,
|
||||
0x00000000, 0x002E0209, 0x80000101, 0x000409FA,
|
||||
0x00FF0400, 0x05070000, 0x02000201, 0x82050700,
|
||||
0x00020002, 0x03830507, 0x07010040, 0x40020405,
|
||||
0x02090000, 0x0101002E, 0x09FA8000, 0x04000004,
|
||||
0x000000FF, 0x02010507, 0x07000040, 0x40028205,
|
||||
0x05070000, 0x00400383, 0x04050701, 0x00004002,
|
||||
0x00000000, 0x00000000, 0x07090000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, };
|
||||
|
||||
const u32_t zcDKFwImageSize=12988;
|
732
drivers/staging/otus/hal/hpani.c
Normal file
732
drivers/staging/otus/hal/hpani.c
Normal file
|
@ -0,0 +1,732 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
#include "../80211core/cprecomp.h"
|
||||
#include "hpani.h"
|
||||
#include "hpusb.h"
|
||||
|
||||
|
||||
extern u16_t zfDelayWriteInternalReg(zdev_t* dev, u32_t addr, u32_t val);
|
||||
extern u16_t zfFlushDelayWrite(zdev_t* dev);
|
||||
|
||||
/*
|
||||
* Anti noise immunity support. We track phy errors and react
|
||||
* to excessive errors by adjusting the noise immunity parameters.
|
||||
*/
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* New Ani Algorithm for Station side only
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
#define ZM_HAL_NOISE_IMMUNE_MAX 4 /* Max noise immunity level */
|
||||
#define ZM_HAL_SPUR_IMMUNE_MAX 7 /* Max spur immunity level */
|
||||
#define ZM_HAL_FIRST_STEP_MAX 2 /* Max first step level */
|
||||
|
||||
#define ZM_HAL_ANI_OFDM_TRIG_HIGH 500
|
||||
#define ZM_HAL_ANI_OFDM_TRIG_LOW 200
|
||||
#define ZM_HAL_ANI_CCK_TRIG_HIGH 200
|
||||
#define ZM_HAL_ANI_CCK_TRIG_LOW 100
|
||||
#define ZM_HAL_ANI_NOISE_IMMUNE_LVL 4
|
||||
#define ZM_HAL_ANI_USE_OFDM_WEAK_SIG TRUE
|
||||
#define ZM_HAL_ANI_CCK_WEAK_SIG_THR FALSE
|
||||
#define ZM_HAL_ANI_SPUR_IMMUNE_LVL 7
|
||||
#define ZM_HAL_ANI_FIRSTEP_LVL 0
|
||||
#define ZM_HAL_ANI_RSSI_THR_HIGH 40
|
||||
#define ZM_HAL_ANI_RSSI_THR_LOW 7
|
||||
#define ZM_HAL_ANI_PERIOD 100
|
||||
|
||||
#define ZM_HAL_EP_RND(x, mul) \
|
||||
((((x)%(mul)) >= ((mul)/2)) ? ((x) + ((mul) - 1)) / (mul) : (x)/(mul))
|
||||
|
||||
s32_t BEACON_RSSI(zdev_t* dev)
|
||||
{
|
||||
s32_t rssi;
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
struct zsHpPriv *HpPriv = (struct zsHpPriv*)wd->hpPrivate;
|
||||
|
||||
rssi = ZM_HAL_EP_RND(HpPriv->stats.ast_nodestats.ns_avgbrssi, ZM_HAL_RSSI_EP_MULTIPLIER);
|
||||
|
||||
return rssi;
|
||||
}
|
||||
|
||||
/*
|
||||
* Setup ANI handling. Sets all thresholds and levels to default level AND
|
||||
* resets the channel statistics
|
||||
*/
|
||||
|
||||
void zfHpAniAttach(zdev_t* dev)
|
||||
{
|
||||
#define N(a) (sizeof(a) / sizeof(a[0]))
|
||||
u32_t i;
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
struct zsHpPriv *HpPriv = (struct zsHpPriv*)wd->hpPrivate;
|
||||
|
||||
const int totalSizeDesired[] = { -55, -55, -55, -55, -62 };
|
||||
const int coarseHigh[] = { -14, -14, -14, -14, -12 };
|
||||
const int coarseLow[] = { -64, -64, -64, -64, -70 };
|
||||
const int firpwr[] = { -78, -78, -78, -78, -80 };
|
||||
|
||||
for (i = 0; i < 5; i++)
|
||||
{
|
||||
HpPriv->totalSizeDesired[i] = totalSizeDesired[i];
|
||||
HpPriv->coarseHigh[i] = coarseHigh[i];
|
||||
HpPriv->coarseLow[i] = coarseLow[i];
|
||||
HpPriv->firpwr[i] = firpwr[i];
|
||||
}
|
||||
|
||||
/* owl has phy counters */
|
||||
HpPriv->hasHwPhyCounters = 1;
|
||||
|
||||
memset((char *)&HpPriv->ani, 0, sizeof(HpPriv->ani));
|
||||
for (i = 0; i < N(wd->regulationTable.allowChannel); i++)
|
||||
{
|
||||
/* New ANI stuff */
|
||||
HpPriv->ani[i].ofdmTrigHigh = ZM_HAL_ANI_OFDM_TRIG_HIGH;
|
||||
HpPriv->ani[i].ofdmTrigLow = ZM_HAL_ANI_OFDM_TRIG_LOW;
|
||||
HpPriv->ani[i].cckTrigHigh = ZM_HAL_ANI_CCK_TRIG_HIGH;
|
||||
HpPriv->ani[i].cckTrigLow = ZM_HAL_ANI_CCK_TRIG_LOW;
|
||||
HpPriv->ani[i].rssiThrHigh = ZM_HAL_ANI_RSSI_THR_HIGH;
|
||||
HpPriv->ani[i].rssiThrLow = ZM_HAL_ANI_RSSI_THR_LOW;
|
||||
HpPriv->ani[i].ofdmWeakSigDetectOff = !ZM_HAL_ANI_USE_OFDM_WEAK_SIG;
|
||||
HpPriv->ani[i].cckWeakSigThreshold = ZM_HAL_ANI_CCK_WEAK_SIG_THR;
|
||||
HpPriv->ani[i].spurImmunityLevel = ZM_HAL_ANI_SPUR_IMMUNE_LVL;
|
||||
HpPriv->ani[i].firstepLevel = ZM_HAL_ANI_FIRSTEP_LVL;
|
||||
if (HpPriv->hasHwPhyCounters)
|
||||
{
|
||||
HpPriv->ani[i].ofdmPhyErrBase = 0;//AR_PHY_COUNTMAX - ZM_HAL_ANI_OFDM_TRIG_HIGH;
|
||||
HpPriv->ani[i].cckPhyErrBase = 0;//AR_PHY_COUNTMAX - ZM_HAL_ANI_CCK_TRIG_HIGH;
|
||||
}
|
||||
}
|
||||
if (HpPriv->hasHwPhyCounters)
|
||||
{
|
||||
//zm_debug_msg2("Setting OfdmErrBase = 0x", HpPriv->ani[0].ofdmPhyErrBase);
|
||||
//zm_debug_msg2("Setting cckErrBase = 0x", HpPriv->ani[0].cckPhyErrBase);
|
||||
//OS_REG_WRITE(ah, AR_PHY_ERR_1, HpPriv->ani[0].ofdmPhyErrBase);
|
||||
//OS_REG_WRITE(ah, AR_PHY_ERR_2, HpPriv->ani[0].cckPhyErrBase);
|
||||
}
|
||||
HpPriv->aniPeriod = ZM_HAL_ANI_PERIOD;
|
||||
//if (ath_hal_enableANI)
|
||||
HpPriv->procPhyErr |= ZM_HAL_PROCESS_ANI;
|
||||
|
||||
HpPriv->stats.ast_nodestats.ns_avgbrssi = ZM_RSSI_DUMMY_MARKER;
|
||||
HpPriv->stats.ast_nodestats.ns_avgrssi = ZM_RSSI_DUMMY_MARKER;
|
||||
HpPriv->stats.ast_nodestats.ns_avgtxrssi = ZM_RSSI_DUMMY_MARKER;
|
||||
#undef N
|
||||
}
|
||||
|
||||
/*
|
||||
* Control Adaptive Noise Immunity Parameters
|
||||
*/
|
||||
u8_t zfHpAniControl(zdev_t* dev, ZM_HAL_ANI_CMD cmd, int param)
|
||||
{
|
||||
#define N(a) (sizeof(a)/sizeof(a[0]))
|
||||
typedef s32_t TABLE[];
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
struct zsHpPriv *HpPriv = (struct zsHpPriv*)wd->hpPrivate;
|
||||
|
||||
struct zsAniState *aniState = HpPriv->curani;
|
||||
|
||||
switch (cmd)
|
||||
{
|
||||
case ZM_HAL_ANI_NOISE_IMMUNITY_LEVEL:
|
||||
{
|
||||
u32_t level = param;
|
||||
|
||||
if (level >= N(HpPriv->totalSizeDesired))
|
||||
{
|
||||
zm_debug_msg1("level out of range, desired level : ", level);
|
||||
zm_debug_msg1("max level : ", N(HpPriv->totalSizeDesired));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
zfDelayWriteInternalReg(dev, AR_PHY_DESIRED_SZ,
|
||||
(HpPriv->regPHYDesiredSZ & ~AR_PHY_DESIRED_SZ_TOT_DES)
|
||||
| ((HpPriv->totalSizeDesired[level] << AR_PHY_DESIRED_SZ_TOT_DES_S)
|
||||
& AR_PHY_DESIRED_SZ_TOT_DES));
|
||||
zfDelayWriteInternalReg(dev, AR_PHY_AGC_CTL1,
|
||||
(HpPriv->regPHYAgcCtl1 & ~AR_PHY_AGC_CTL1_COARSE_LOW)
|
||||
| ((HpPriv->coarseLow[level] << AR_PHY_AGC_CTL1_COARSE_LOW_S)
|
||||
& AR_PHY_AGC_CTL1_COARSE_LOW));
|
||||
zfDelayWriteInternalReg(dev, AR_PHY_AGC_CTL1,
|
||||
(HpPriv->regPHYAgcCtl1 & ~AR_PHY_AGC_CTL1_COARSE_HIGH)
|
||||
| ((HpPriv->coarseHigh[level] << AR_PHY_AGC_CTL1_COARSE_HIGH_S)
|
||||
& AR_PHY_AGC_CTL1_COARSE_HIGH));
|
||||
zfDelayWriteInternalReg(dev, AR_PHY_FIND_SIG,
|
||||
(HpPriv->regPHYFindSig & ~AR_PHY_FIND_SIG_FIRPWR)
|
||||
| ((HpPriv->firpwr[level] << AR_PHY_FIND_SIG_FIRPWR_S)
|
||||
& AR_PHY_FIND_SIG_FIRPWR));
|
||||
zfFlushDelayWrite(dev);
|
||||
|
||||
if (level > aniState->noiseImmunityLevel)
|
||||
HpPriv->stats.ast_ani_niup++;
|
||||
else if (level < aniState->noiseImmunityLevel)
|
||||
HpPriv->stats.ast_ani_nidown++;
|
||||
aniState->noiseImmunityLevel = (u8_t)level;
|
||||
break;
|
||||
}
|
||||
case ZM_HAL_ANI_OFDM_WEAK_SIGNAL_DETECTION:
|
||||
{
|
||||
const TABLE m1ThreshLow = { 127, 50 };
|
||||
const TABLE m2ThreshLow = { 127, 40 };
|
||||
const TABLE m1Thresh = { 127, 0x4d };
|
||||
const TABLE m2Thresh = { 127, 0x40 };
|
||||
const TABLE m2CountThr = { 31, 16 };
|
||||
const TABLE m2CountThrLow = { 63, 48 };
|
||||
u32_t on = param ? 1 : 0;
|
||||
|
||||
zfDelayWriteInternalReg(dev, AR_PHY_SFCORR_LOW,
|
||||
(HpPriv->regPHYSfcorrLow & ~AR_PHY_SFCORR_LOW_M1_THRESH_LOW)
|
||||
| ((m1ThreshLow[on] << AR_PHY_SFCORR_LOW_M1_THRESH_LOW_S)
|
||||
& AR_PHY_SFCORR_LOW_M1_THRESH_LOW));
|
||||
zfDelayWriteInternalReg(dev, AR_PHY_SFCORR_LOW,
|
||||
(HpPriv->regPHYSfcorrLow & ~AR_PHY_SFCORR_LOW_M2_THRESH_LOW)
|
||||
| ((m2ThreshLow[on] << AR_PHY_SFCORR_LOW_M2_THRESH_LOW_S)
|
||||
& AR_PHY_SFCORR_LOW_M2_THRESH_LOW));
|
||||
zfDelayWriteInternalReg(dev, AR_PHY_SFCORR,
|
||||
(HpPriv->regPHYSfcorr & ~AR_PHY_SFCORR_M1_THRESH)
|
||||
| ((m1Thresh[on] << AR_PHY_SFCORR_M1_THRESH_S)
|
||||
& AR_PHY_SFCORR_M1_THRESH));
|
||||
zfDelayWriteInternalReg(dev, AR_PHY_SFCORR,
|
||||
(HpPriv->regPHYSfcorr & ~AR_PHY_SFCORR_M2_THRESH)
|
||||
| ((m2Thresh[on] << AR_PHY_SFCORR_M2_THRESH_S)
|
||||
& AR_PHY_SFCORR_M2_THRESH));
|
||||
zfDelayWriteInternalReg(dev, AR_PHY_SFCORR,
|
||||
(HpPriv->regPHYSfcorr & ~AR_PHY_SFCORR_M2COUNT_THR)
|
||||
| ((m2CountThr[on] << AR_PHY_SFCORR_M2COUNT_THR_S)
|
||||
& AR_PHY_SFCORR_M2COUNT_THR));
|
||||
zfDelayWriteInternalReg(dev, AR_PHY_SFCORR_LOW,
|
||||
(HpPriv->regPHYSfcorrLow & ~AR_PHY_SFCORR_LOW_M2COUNT_THR_LOW)
|
||||
| ((m2CountThrLow[on] << AR_PHY_SFCORR_LOW_M2COUNT_THR_LOW_S)
|
||||
& AR_PHY_SFCORR_LOW_M2COUNT_THR_LOW));
|
||||
|
||||
if (on)
|
||||
{
|
||||
zfDelayWriteInternalReg(dev, AR_PHY_SFCORR_LOW,
|
||||
HpPriv->regPHYSfcorrLow | AR_PHY_SFCORR_LOW_USE_SELF_CORR_LOW);
|
||||
}
|
||||
else
|
||||
{
|
||||
zfDelayWriteInternalReg(dev, AR_PHY_SFCORR_LOW,
|
||||
HpPriv->regPHYSfcorrLow & ~AR_PHY_SFCORR_LOW_USE_SELF_CORR_LOW);
|
||||
}
|
||||
zfFlushDelayWrite(dev);
|
||||
if (!on != aniState->ofdmWeakSigDetectOff)
|
||||
{
|
||||
if (on)
|
||||
HpPriv->stats.ast_ani_ofdmon++;
|
||||
else
|
||||
HpPriv->stats.ast_ani_ofdmoff++;
|
||||
aniState->ofdmWeakSigDetectOff = !on;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ZM_HAL_ANI_CCK_WEAK_SIGNAL_THR:
|
||||
{
|
||||
const TABLE weakSigThrCck = { 8, 6 };
|
||||
u32_t high = param ? 1 : 0;
|
||||
|
||||
zfDelayWriteInternalReg(dev, AR_PHY_CCK_DETECT,
|
||||
(HpPriv->regPHYCckDetect & ~AR_PHY_CCK_DETECT_WEAK_SIG_THR_CCK)
|
||||
| ((weakSigThrCck[high] << AR_PHY_CCK_DETECT_WEAK_SIG_THR_CCK_S)
|
||||
& AR_PHY_CCK_DETECT_WEAK_SIG_THR_CCK));
|
||||
zfFlushDelayWrite(dev);
|
||||
if (high != aniState->cckWeakSigThreshold)
|
||||
{
|
||||
if (high)
|
||||
HpPriv->stats.ast_ani_cckhigh++;
|
||||
else
|
||||
HpPriv->stats.ast_ani_ccklow++;
|
||||
aniState->cckWeakSigThreshold = (u8_t)high;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ZM_HAL_ANI_FIRSTEP_LEVEL:
|
||||
{
|
||||
const TABLE firstep = { 0, 4, 8 };
|
||||
u32_t level = param;
|
||||
|
||||
if (level >= N(firstep))
|
||||
{
|
||||
zm_debug_msg1("level out of range, desired level : ", level);
|
||||
zm_debug_msg1("max level : ", N(firstep));
|
||||
return FALSE;
|
||||
}
|
||||
zfDelayWriteInternalReg(dev, AR_PHY_FIND_SIG,
|
||||
(HpPriv->regPHYFindSig & ~AR_PHY_FIND_SIG_FIRSTEP)
|
||||
| ((firstep[level] << AR_PHY_FIND_SIG_FIRSTEP_S)
|
||||
& AR_PHY_FIND_SIG_FIRSTEP));
|
||||
zfFlushDelayWrite(dev);
|
||||
if (level > aniState->firstepLevel)
|
||||
HpPriv->stats.ast_ani_stepup++;
|
||||
else if (level < aniState->firstepLevel)
|
||||
HpPriv->stats.ast_ani_stepdown++;
|
||||
aniState->firstepLevel = (u8_t)level;
|
||||
break;
|
||||
}
|
||||
case ZM_HAL_ANI_SPUR_IMMUNITY_LEVEL:
|
||||
{
|
||||
const TABLE cycpwrThr1 = { 2, 4, 6, 8, 10, 12, 14, 16 };
|
||||
u32_t level = param;
|
||||
|
||||
if (level >= N(cycpwrThr1))
|
||||
{
|
||||
zm_debug_msg1("level out of range, desired level : ", level);
|
||||
zm_debug_msg1("max level : ", N(cycpwrThr1));
|
||||
return FALSE;
|
||||
}
|
||||
zfDelayWriteInternalReg(dev, AR_PHY_TIMING5,
|
||||
(HpPriv->regPHYTiming5 & ~AR_PHY_TIMING5_CYCPWR_THR1)
|
||||
| ((cycpwrThr1[level] << AR_PHY_TIMING5_CYCPWR_THR1_S)
|
||||
& AR_PHY_TIMING5_CYCPWR_THR1));
|
||||
zfFlushDelayWrite(dev);
|
||||
if (level > aniState->spurImmunityLevel)
|
||||
HpPriv->stats.ast_ani_spurup++;
|
||||
else if (level < aniState->spurImmunityLevel)
|
||||
HpPriv->stats.ast_ani_spurdown++;
|
||||
aniState->spurImmunityLevel = (u8_t)level;
|
||||
break;
|
||||
}
|
||||
case ZM_HAL_ANI_PRESENT:
|
||||
break;
|
||||
#ifdef AH_PRIVATE_DIAG
|
||||
case ZM_HAL_ANI_MODE:
|
||||
if (param == 0)
|
||||
{
|
||||
HpPriv->procPhyErr &= ~ZM_HAL_PROCESS_ANI;
|
||||
/* Turn off HW counters if we have them */
|
||||
zfHpAniDetach(dev);
|
||||
//zfHpSetRxFilter(dev, zfHpGetRxFilter(dev) &~ HAL_RX_FILTER_PHYERR);
|
||||
}
|
||||
else
|
||||
{ /* normal/auto mode */
|
||||
HpPriv->procPhyErr |= ZM_HAL_PROCESS_ANI;
|
||||
if (HpPriv->hasHwPhyCounters)
|
||||
{
|
||||
//zfHpSetRxFilter(dev, zfHpGetRxFilter(dev) &~ HAL_RX_FILTER_PHYERR);
|
||||
}
|
||||
else
|
||||
{
|
||||
//zfHpSetRxFilter(dev, zfHpGetRxFilter(dev) | HAL_RX_FILTER_PHYERR);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ZM_HAL_ANI_PHYERR_RESET:
|
||||
HpPriv->stats.ast_ani_ofdmerrs = 0;
|
||||
HpPriv->stats.ast_ani_cckerrs = 0;
|
||||
break;
|
||||
#endif /* AH_PRIVATE_DIAG */
|
||||
default:
|
||||
zm_debug_msg1("invalid cmd ", cmd);
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
#undef N
|
||||
}
|
||||
|
||||
void zfHpAniRestart(zdev_t* dev)
|
||||
{
|
||||
struct zsAniState *aniState;
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
struct zsHpPriv *HpPriv = (struct zsHpPriv*)wd->hpPrivate;
|
||||
|
||||
aniState = HpPriv->curani;
|
||||
|
||||
aniState->listenTime = 0;
|
||||
if (HpPriv->hasHwPhyCounters)
|
||||
{
|
||||
//if (aniState->ofdmTrigHigh > AR_PHY_COUNTMAX)
|
||||
//{
|
||||
// aniState->ofdmPhyErrBase = 0;
|
||||
// zm_debug_msg0("OFDM Trigger is too high for hw counters");
|
||||
//}
|
||||
//else
|
||||
// aniState->ofdmPhyErrBase = AR_PHY_COUNTMAX - aniState->ofdmTrigHigh;
|
||||
//if (aniState->cckTrigHigh > AR_PHY_COUNTMAX)
|
||||
//{
|
||||
// aniState->cckPhyErrBase = 0;
|
||||
// zm_debug_msg0("CCK Trigger is too high for hw counters");
|
||||
//}
|
||||
//else
|
||||
// aniState->cckPhyErrBase = AR_PHY_COUNTMAX - aniState->cckTrigHigh;
|
||||
//zm_debug_msg2("Writing ofdmbase = 0x", aniState->ofdmPhyErrBase);
|
||||
//zm_debug_msg2("Writing cckbase = 0x", aniState->cckPhyErrBase);
|
||||
//OS_REG_WRITE(ah, AR_PHY_ERR_1, aniState->ofdmPhyErrBase);
|
||||
//OS_REG_WRITE(ah, AR_PHY_ERR_2, aniState->cckPhyErrBase);
|
||||
//OS_REG_WRITE(ah, AR_PHY_ERR_MASK_1, AR_PHY_ERR_OFDM_TIMING);
|
||||
//OS_REG_WRITE(ah, AR_PHY_ERR_MASK_2, AR_PHY_ERR_CCK_TIMING);
|
||||
aniState->ofdmPhyErrBase = 0;
|
||||
aniState->cckPhyErrBase = 0;
|
||||
}
|
||||
aniState->ofdmPhyErrCount = 0;
|
||||
aniState->cckPhyErrCount = 0;
|
||||
}
|
||||
|
||||
void zfHpAniOfdmErrTrigger(zdev_t* dev)
|
||||
{
|
||||
struct zsAniState *aniState;
|
||||
s32_t rssi;
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
struct zsHpPriv *HpPriv = (struct zsHpPriv*)wd->hpPrivate;
|
||||
|
||||
//HALASSERT(chan != NULL);
|
||||
|
||||
if ((HpPriv->procPhyErr & ZM_HAL_PROCESS_ANI) == 0)
|
||||
return;
|
||||
|
||||
aniState = HpPriv->curani;
|
||||
/* First, raise noise immunity level, up to max */
|
||||
if (aniState->noiseImmunityLevel < ZM_HAL_NOISE_IMMUNE_MAX)
|
||||
{
|
||||
zfHpAniControl(dev, ZM_HAL_ANI_NOISE_IMMUNITY_LEVEL, aniState->noiseImmunityLevel + 1);
|
||||
return;
|
||||
}
|
||||
/* then, raise spur immunity level, up to max */
|
||||
if (aniState->spurImmunityLevel < ZM_HAL_SPUR_IMMUNE_MAX)
|
||||
{
|
||||
zfHpAniControl(dev, ZM_HAL_ANI_SPUR_IMMUNITY_LEVEL, aniState->spurImmunityLevel + 1);
|
||||
return;
|
||||
}
|
||||
rssi = BEACON_RSSI(dev);
|
||||
if (rssi > aniState->rssiThrHigh)
|
||||
{
|
||||
/*
|
||||
* Beacon rssi is high, can turn off ofdm weak sig detect.
|
||||
*/
|
||||
if (!aniState->ofdmWeakSigDetectOff)
|
||||
{
|
||||
zfHpAniControl(dev, ZM_HAL_ANI_OFDM_WEAK_SIGNAL_DETECTION, FALSE);
|
||||
zfHpAniControl(dev, ZM_HAL_ANI_SPUR_IMMUNITY_LEVEL, 0);
|
||||
return;
|
||||
}
|
||||
/*
|
||||
* If weak sig detect is already off, as last resort, raise
|
||||
* first step level
|
||||
*/
|
||||
if (aniState->firstepLevel < ZM_HAL_FIRST_STEP_MAX)
|
||||
{
|
||||
zfHpAniControl(dev, ZM_HAL_ANI_FIRSTEP_LEVEL, aniState->firstepLevel + 1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (rssi > aniState->rssiThrLow)
|
||||
{
|
||||
/*
|
||||
* Beacon rssi in mid range, need ofdm weak signal detect,
|
||||
* but we can raise firststepLevel
|
||||
*/
|
||||
if (aniState->ofdmWeakSigDetectOff)
|
||||
zfHpAniControl(dev, ZM_HAL_ANI_OFDM_WEAK_SIGNAL_DETECTION, TRUE);
|
||||
if (aniState->firstepLevel < ZM_HAL_FIRST_STEP_MAX)
|
||||
zfHpAniControl(dev, ZM_HAL_ANI_FIRSTEP_LEVEL, aniState->firstepLevel + 1);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Beacon rssi is low, if in 11b/g mode, turn off ofdm
|
||||
* weak sign detction and zero firstepLevel to maximize
|
||||
* CCK sensitivity
|
||||
*/
|
||||
if (wd->frequency < 3000)
|
||||
{
|
||||
if (!aniState->ofdmWeakSigDetectOff)
|
||||
zfHpAniControl(dev, ZM_HAL_ANI_OFDM_WEAK_SIGNAL_DETECTION, FALSE);
|
||||
if (aniState->firstepLevel > 0)
|
||||
zfHpAniControl(dev, ZM_HAL_ANI_FIRSTEP_LEVEL, 0);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void zfHpAniCckErrTrigger(zdev_t* dev)
|
||||
{
|
||||
struct zsAniState *aniState;
|
||||
s32_t rssi;
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
struct zsHpPriv *HpPriv = (struct zsHpPriv*)wd->hpPrivate;
|
||||
|
||||
//HALASSERT(chan != NULL);
|
||||
|
||||
if ((HpPriv->procPhyErr & ZM_HAL_PROCESS_ANI) == 0)
|
||||
return;
|
||||
|
||||
/* first, raise noise immunity level, up to max */
|
||||
aniState = HpPriv->curani;
|
||||
if (aniState->noiseImmunityLevel < ZM_HAL_NOISE_IMMUNE_MAX)
|
||||
{
|
||||
zfHpAniControl(dev, ZM_HAL_ANI_NOISE_IMMUNITY_LEVEL,
|
||||
aniState->noiseImmunityLevel + 1);
|
||||
return;
|
||||
}
|
||||
rssi = BEACON_RSSI(dev);
|
||||
if (rssi > aniState->rssiThrLow)
|
||||
{
|
||||
/*
|
||||
* Beacon signal in mid and high range, raise firsteplevel.
|
||||
*/
|
||||
if (aniState->firstepLevel < ZM_HAL_FIRST_STEP_MAX)
|
||||
zfHpAniControl(dev, ZM_HAL_ANI_FIRSTEP_LEVEL, aniState->firstepLevel + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Beacon rssi is low, zero firstepLevel to maximize
|
||||
* CCK sensitivity.
|
||||
*/
|
||||
if (wd->frequency < 3000)
|
||||
{
|
||||
if (aniState->firstepLevel > 0)
|
||||
zfHpAniControl(dev, ZM_HAL_ANI_FIRSTEP_LEVEL, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void zfHpAniLowerImmunity(zdev_t* dev)
|
||||
{
|
||||
struct zsAniState *aniState;
|
||||
s32_t rssi;
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
struct zsHpPriv *HpPriv = (struct zsHpPriv*)wd->hpPrivate;
|
||||
|
||||
aniState = HpPriv->curani;
|
||||
|
||||
rssi = BEACON_RSSI(dev);
|
||||
if (rssi > aniState->rssiThrHigh)
|
||||
{
|
||||
/*
|
||||
* Beacon signal is high, leave ofdm weak signal detection off
|
||||
* or it may oscillate. Let it fall through.
|
||||
*/
|
||||
}
|
||||
else if (rssi > aniState->rssiThrLow)
|
||||
{
|
||||
/*
|
||||
* Beacon rssi in mid range, turn on ofdm weak signal
|
||||
* detection or lower first step level.
|
||||
*/
|
||||
if (aniState->ofdmWeakSigDetectOff)
|
||||
{
|
||||
zfHpAniControl(dev, ZM_HAL_ANI_OFDM_WEAK_SIGNAL_DETECTION, TRUE);
|
||||
return;
|
||||
}
|
||||
if (aniState->firstepLevel > 0)
|
||||
{
|
||||
zfHpAniControl(dev, ZM_HAL_ANI_FIRSTEP_LEVEL, aniState->firstepLevel - 1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Beacon rssi is low, reduce first step level.
|
||||
*/
|
||||
if (aniState->firstepLevel > 0)
|
||||
{
|
||||
zfHpAniControl(dev, ZM_HAL_ANI_FIRSTEP_LEVEL, aniState->firstepLevel - 1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
/* then lower spur immunity level, down to zero */
|
||||
if (aniState->spurImmunityLevel > 0)
|
||||
{
|
||||
zfHpAniControl(dev, ZM_HAL_ANI_SPUR_IMMUNITY_LEVEL, aniState->spurImmunityLevel - 1);
|
||||
return;
|
||||
}
|
||||
/*
|
||||
* if all else fails, lower noise immunity level down to a min value
|
||||
* zero for now
|
||||
*/
|
||||
if (aniState->noiseImmunityLevel > 0)
|
||||
{
|
||||
zfHpAniControl(dev, ZM_HAL_ANI_NOISE_IMMUNITY_LEVEL, aniState->noiseImmunityLevel - 1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
#define CLOCK_RATE 44000 /* XXX use mac_usec or similar */
|
||||
/* convert HW counter values to ms using 11g clock rate, goo9d enough
|
||||
for 11a and Turbo */
|
||||
|
||||
/*
|
||||
* Return an approximation of the time spent ``listening'' by
|
||||
* deducting the cycles spent tx'ing and rx'ing from the total
|
||||
* cycle count since our last call. A return value <0 indicates
|
||||
* an invalid/inconsistent time.
|
||||
*/
|
||||
s32_t zfHpAniGetListenTime(zdev_t* dev)
|
||||
{
|
||||
struct zsAniState *aniState;
|
||||
u32_t txFrameCount, rxFrameCount, cycleCount;
|
||||
s32_t listenTime;
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
struct zsHpPriv *HpPriv = (struct zsHpPriv*)wd->hpPrivate;
|
||||
|
||||
txFrameCount = 0;//OS_REG_READ(ah, AR_TFCNT);
|
||||
rxFrameCount = 0;//OS_REG_READ(ah, AR_RFCNT);
|
||||
cycleCount = 0;//OS_REG_READ(ah, AR_CCCNT);
|
||||
|
||||
aniState = HpPriv->curani;
|
||||
if (aniState->cycleCount == 0 || aniState->cycleCount > cycleCount)
|
||||
{
|
||||
/*
|
||||
* Cycle counter wrap (or initial call); it's not possible
|
||||
* to accurately calculate a value because the registers
|
||||
* right shift rather than wrap--so punt and return 0.
|
||||
*/
|
||||
listenTime = 0;
|
||||
HpPriv->stats.ast_ani_lzero++;
|
||||
}
|
||||
else
|
||||
{
|
||||
s32_t ccdelta = cycleCount - aniState->cycleCount;
|
||||
s32_t rfdelta = rxFrameCount - aniState->rxFrameCount;
|
||||
s32_t tfdelta = txFrameCount - aniState->txFrameCount;
|
||||
listenTime = (ccdelta - rfdelta - tfdelta) / CLOCK_RATE;
|
||||
}
|
||||
aniState->cycleCount = cycleCount;
|
||||
aniState->txFrameCount = txFrameCount;
|
||||
aniState->rxFrameCount = rxFrameCount;
|
||||
return listenTime;
|
||||
}
|
||||
|
||||
/*
|
||||
* Do periodic processing. This routine is called from the
|
||||
* driver's rx interrupt handler after processing frames.
|
||||
*/
|
||||
void zfHpAniArPoll(zdev_t* dev, u32_t listenTime, u32_t phyCnt1, u32_t phyCnt2)
|
||||
{
|
||||
struct zsAniState *aniState;
|
||||
//s32_t listenTime;
|
||||
|
||||
zmw_get_wlan_dev(dev);
|
||||
|
||||
struct zsHpPriv *HpPriv = (struct zsHpPriv*)wd->hpPrivate;
|
||||
|
||||
/*
|
||||
* Since we're called from end of rx tasklet, we also check for
|
||||
* AR processing now
|
||||
*/
|
||||
|
||||
aniState = HpPriv->curani;
|
||||
//HpPriv->stats.ast_nodestats = *stats; /* XXX optimize? */
|
||||
|
||||
//listenTime = zfHpAniGetListenTime(dev);
|
||||
//if (listenTime < 0)
|
||||
//{
|
||||
// HpPriv->stats.ast_ani_lneg++;
|
||||
// /* restart ANI period if listenTime is invalid */
|
||||
// zfHpAniRestart(dev);
|
||||
// return;
|
||||
//}
|
||||
/* XXX beware of overflow? */
|
||||
aniState->listenTime += listenTime;
|
||||
|
||||
if (HpPriv->hasHwPhyCounters)
|
||||
{
|
||||
//u32_t phyCnt1, phyCnt2;
|
||||
u32_t ofdmPhyErrCnt, cckPhyErrCnt;
|
||||
|
||||
/* NB: these are not reset-on-read */
|
||||
//phyCnt1 = 0;//OS_REG_READ(ah, AR_PHY_ERR_1);
|
||||
//phyCnt2 = 0;//OS_REG_READ(ah, AR_PHY_ERR_2);
|
||||
/* XXX sometimes zero, why? */
|
||||
//if (phyCnt1 < aniState->ofdmPhyErrBase ||
|
||||
// phyCnt2 < aniState->cckPhyErrBase)
|
||||
//{
|
||||
// if (phyCnt1 < aniState->ofdmPhyErrBase)
|
||||
// {
|
||||
// zm_debug_msg2("phyCnt1 = 0x", phyCnt1);
|
||||
// zm_debug_msg2("resetting counter value to 0x", aniState->ofdmPhyErrBase);
|
||||
// //OS_REG_WRITE(ah, AR_PHY_ERR_1, aniState->ofdmPhyErrBase);
|
||||
// //OS_REG_WRITE(ah, AR_PHY_ERR_MASK_1, AR_PHY_ERR_OFDM_TIMING);
|
||||
// }
|
||||
// if (phyCnt2 < aniState->cckPhyErrBase)
|
||||
// {
|
||||
// zm_debug_msg2("phyCnt2 = 0x", phyCnt2);
|
||||
// zm_debug_msg2("resetting counter value to 0x", aniState->cckPhyErrBase);
|
||||
// //OS_REG_WRITE(ah, AR_PHY_ERR_2, aniState->cckPhyErrBase);
|
||||
// //OS_REG_WRITE(ah, AR_PHY_ERR_MASK_2, AR_PHY_ERR_CCK_TIMING);
|
||||
// }
|
||||
// return; /* XXX */
|
||||
//}
|
||||
/* NB: only use ast_ani_*errs with AH_PRIVATE_DIAG */
|
||||
//ofdmPhyErrCnt = phyCnt1 - aniState->ofdmPhyErrBase;
|
||||
//HpPriv->stats.ast_ani_ofdmerrs += ofdmPhyErrCnt - aniState->ofdmPhyErrCount;
|
||||
//aniState->ofdmPhyErrCount = ofdmPhyErrCnt;
|
||||
ofdmPhyErrCnt = phyCnt1;
|
||||
HpPriv->stats.ast_ani_ofdmerrs += ofdmPhyErrCnt;
|
||||
aniState->ofdmPhyErrCount += ofdmPhyErrCnt;
|
||||
|
||||
//cckPhyErrCnt = phyCnt2 - aniState->cckPhyErrBase;
|
||||
//HpPriv->stats.ast_ani_cckerrs += cckPhyErrCnt - aniState->cckPhyErrCount;
|
||||
//aniState->cckPhyErrCount = cckPhyErrCnt;
|
||||
cckPhyErrCnt = phyCnt2;
|
||||
HpPriv->stats.ast_ani_cckerrs += cckPhyErrCnt;
|
||||
aniState->cckPhyErrCount += cckPhyErrCnt;
|
||||
}
|
||||
/*
|
||||
* If ani is not enabled, return after we've collected
|
||||
* statistics
|
||||
*/
|
||||
if ((HpPriv->procPhyErr & ZM_HAL_PROCESS_ANI) == 0)
|
||||
return;
|
||||
if (aniState->listenTime > 5 * HpPriv->aniPeriod)
|
||||
{
|
||||
/*
|
||||
* Check to see if need to lower immunity if
|
||||
* 5 aniPeriods have passed
|
||||
*/
|
||||
if (aniState->ofdmPhyErrCount <= aniState->listenTime *
|
||||
aniState->ofdmTrigLow/1000 &&
|
||||
aniState->cckPhyErrCount <= aniState->listenTime *
|
||||
aniState->cckTrigLow/1000)
|
||||
zfHpAniLowerImmunity(dev);
|
||||
zfHpAniRestart(dev);
|
||||
}
|
||||
else if (aniState->listenTime > HpPriv->aniPeriod)
|
||||
{
|
||||
/* check to see if need to raise immunity */
|
||||
if (aniState->ofdmPhyErrCount > aniState->listenTime *
|
||||
aniState->ofdmTrigHigh / 1000)
|
||||
{
|
||||
zfHpAniOfdmErrTrigger(dev);
|
||||
zfHpAniRestart(dev);
|
||||
}
|
||||
else if (aniState->cckPhyErrCount > aniState->listenTime *
|
||||
aniState->cckTrigHigh / 1000)
|
||||
{
|
||||
zfHpAniCckErrTrigger(dev);
|
||||
zfHpAniRestart(dev);
|
||||
}
|
||||
}
|
||||
}
|
420
drivers/staging/otus/hal/hpani.h
Normal file
420
drivers/staging/otus/hal/hpani.h
Normal file
|
@ -0,0 +1,420 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
#include "../80211core/cprecomp.h"
|
||||
|
||||
typedef struct {
|
||||
u32_t ackrcv_bad;
|
||||
u32_t rts_bad;
|
||||
u32_t rts_good;
|
||||
u32_t fcs_bad;
|
||||
u32_t beacons;
|
||||
} ZM_HAL_MIB_STATS;
|
||||
|
||||
/*
|
||||
* Per-node statistics maintained by the driver for use in
|
||||
* optimizing signal quality and other operational aspects.
|
||||
*/
|
||||
typedef struct {
|
||||
u32_t ns_avgbrssi; /* average beacon rssi */
|
||||
u32_t ns_avgrssi; /* average data rssi */
|
||||
u32_t ns_avgtxrssi; /* average tx rssi */
|
||||
} ZM_HAL_NODE_STATS;
|
||||
|
||||
#define ZM_HAL_RSSI_EP_MULTIPLIER (1<<7) /* pow2 to optimize out * and / */
|
||||
|
||||
struct zsAniStats {
|
||||
u32_t ast_ani_niup; /* ANI increased noise immunity */
|
||||
u32_t ast_ani_nidown; /* ANI decreased noise immunity */
|
||||
u32_t ast_ani_spurup; /* ANI increased spur immunity */
|
||||
u32_t ast_ani_spurdown;/* ANI descreased spur immunity */
|
||||
u32_t ast_ani_ofdmon; /* ANI OFDM weak signal detect on */
|
||||
u32_t ast_ani_ofdmoff;/* ANI OFDM weak signal detect off */
|
||||
u32_t ast_ani_cckhigh;/* ANI CCK weak signal threshold high */
|
||||
u32_t ast_ani_ccklow; /* ANI CCK weak signal threshold low */
|
||||
u32_t ast_ani_stepup; /* ANI increased first step level */
|
||||
u32_t ast_ani_stepdown;/* ANI decreased first step level */
|
||||
u32_t ast_ani_ofdmerrs;/* ANI cumulative ofdm phy err count */
|
||||
u32_t ast_ani_cckerrs;/* ANI cumulative cck phy err count */
|
||||
u32_t ast_ani_reset; /* ANI parameters zero'd for non-STA */
|
||||
u32_t ast_ani_lzero; /* ANI listen time forced to zero */
|
||||
u32_t ast_ani_lneg; /* ANI listen time calculated < 0 */
|
||||
ZM_HAL_MIB_STATS ast_mibstats; /* MIB counter stats */
|
||||
ZM_HAL_NODE_STATS ast_nodestats; /* Latest rssi stats from driver */
|
||||
};
|
||||
|
||||
/*
|
||||
* Per-channel ANI state private to the driver.
|
||||
*/
|
||||
struct zsAniState {
|
||||
ZM_HAL_CHANNEL c;
|
||||
u8_t noiseImmunityLevel;
|
||||
u8_t spurImmunityLevel;
|
||||
u8_t firstepLevel;
|
||||
u8_t ofdmWeakSigDetectOff;
|
||||
u8_t cckWeakSigThreshold;
|
||||
|
||||
/* Thresholds */
|
||||
u32_t listenTime;
|
||||
u32_t ofdmTrigHigh;
|
||||
u32_t ofdmTrigLow;
|
||||
s32_t cckTrigHigh;
|
||||
s32_t cckTrigLow;
|
||||
s32_t rssiThrLow;
|
||||
s32_t rssiThrHigh;
|
||||
|
||||
u32_t noiseFloor; /* The current noise floor */
|
||||
u32_t txFrameCount; /* Last txFrameCount */
|
||||
u32_t rxFrameCount; /* Last rx Frame count */
|
||||
u32_t cycleCount; /* Last cycleCount (can detect wrap-around) */
|
||||
u32_t ofdmPhyErrCount;/* OFDM err count since last reset */
|
||||
u32_t cckPhyErrCount; /* CCK err count since last reset */
|
||||
u32_t ofdmPhyErrBase; /* Base value for ofdm err counter */
|
||||
u32_t cckPhyErrBase; /* Base value for cck err counters */
|
||||
s16_t pktRssi[2]; /* Average rssi of pkts for 2 antennas */
|
||||
s16_t ofdmErrRssi[2]; /* Average rssi of ofdm phy errs for 2 ant */
|
||||
s16_t cckErrRssi[2]; /* Average rssi of cck phy errs for 2 ant */
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
ZM_HAL_ANI_PRESENT, /* is ANI support present */
|
||||
ZM_HAL_ANI_NOISE_IMMUNITY_LEVEL, /* set level */
|
||||
ZM_HAL_ANI_OFDM_WEAK_SIGNAL_DETECTION, /* enable/disable */
|
||||
ZM_HAL_ANI_CCK_WEAK_SIGNAL_THR, /* enable/disable */
|
||||
ZM_HAL_ANI_FIRSTEP_LEVEL, /* set level */
|
||||
ZM_HAL_ANI_SPUR_IMMUNITY_LEVEL, /* set level */
|
||||
ZM_HAL_ANI_MODE, /* 0 => manual, 1 => auto */
|
||||
ZM_HAL_ANI_PHYERR_RESET, /* reset phy error stats */
|
||||
} ZM_HAL_ANI_CMD;
|
||||
|
||||
#define AR_PHY_COUNTMAX (3 << 22) // Max counted before intr
|
||||
#define ZM_HAL_PROCESS_ANI 0x00000001 /* ANI state setup */
|
||||
#define ZM_RSSI_DUMMY_MARKER 0x127
|
||||
|
||||
/* PHY registers in ar5416, related base and register offsets
|
||||
may need to be changed in otus BB */
|
||||
#define AR_PHY_BASE 0x1C5800 /* base address of phy regs */
|
||||
#define AR_PHY(_n) (AR_PHY_BASE + ((_n)<<2))
|
||||
|
||||
#define AR_PHY_TEST 0x1C5800 /* PHY test control */
|
||||
#define PHY_AGC_CLR 0x10000000 /* disable AGC to A2 */
|
||||
#define RFSILENT_BB 0x00002000 /* shush bb */
|
||||
|
||||
#define AR_PHY_TURBO 0x1C5804 /* frame control register */
|
||||
#define AR_PHY_FC_TURBO_MODE 0x00000001 /* Set turbo mode bits */
|
||||
#define AR_PHY_FC_TURBO_SHORT 0x00000002 /* Set short symbols to turbo mode setting */
|
||||
#define AR_PHY_FC_DYN2040_EN 0x00000004 /* Enable dyn 20/40 mode */
|
||||
#define AR_PHY_FC_DYN2040_PRI_ONLY 0x00000008 /* dyn 20/40 - primary only */
|
||||
#define AR_PHY_FC_DYN2040_PRI_CH 0x00000010 /* dyn 20/40 - primary ch offset (0=+10MHz, 1=-10MHz)*/
|
||||
#define AR_PHY_FC_DYN2040_EXT_CH 0x00000020 /* dyn 20/40 - ext ch spacing (0=20MHz/ 1=25MHz) */
|
||||
#define AR_PHY_FC_HT_EN 0x00000040 /* ht enable */
|
||||
#define AR_PHY_FC_SHORT_GI_40 0x00000080 /* allow short GI for HT 40 */
|
||||
#define AR_PHY_FC_WALSH 0x00000100 /* walsh spatial spreading for 2 chains,2 streams TX */
|
||||
#define AR_PHY_FC_SINGLE_HT_LTF1 0x00000200 /* single length (4us) 1st HT long training symbol */
|
||||
|
||||
#define AR_PHY_TIMING2 0x1C5810 /* Timing Control 2 */
|
||||
#define AR_PHY_TIMING2_USE_FORCE 0x00001000
|
||||
#define AR_PHY_TIMING2_FORCE_VAL 0x00000fff
|
||||
|
||||
#define AR_PHY_TIMING3 0x1C5814 /* Timing control 3 */
|
||||
#define AR_PHY_TIMING3_DSC_MAN 0xFFFE0000
|
||||
#define AR_PHY_TIMING3_DSC_MAN_S 17
|
||||
#define AR_PHY_TIMING3_DSC_EXP 0x0001E000
|
||||
#define AR_PHY_TIMING3_DSC_EXP_S 13
|
||||
|
||||
#define AR_PHY_CHIP_ID 0x1C5818 /* PHY chip revision ID */
|
||||
#define AR_PHY_CHIP_ID_REV_0 0x80 /* 5416 Rev 0 (owl 1.0) BB */
|
||||
#define AR_PHY_CHIP_ID_REV_1 0x81 /* 5416 Rev 1 (owl 2.0) BB */
|
||||
|
||||
#define AR_PHY_ACTIVE 0x1C581C /* activation register */
|
||||
#define AR_PHY_ACTIVE_EN 0x00000001 /* Activate PHY chips */
|
||||
#define AR_PHY_ACTIVE_DIS 0x00000000 /* Deactivate PHY chips */
|
||||
|
||||
#define AR_PHY_RF_CTL2 0x1C5824
|
||||
#define AR_PHY_TX_END_DATA_START 0x000000FF
|
||||
#define AR_PHY_TX_END_DATA_START_S 0
|
||||
#define AR_PHY_TX_END_PA_ON 0x0000FF00
|
||||
#define AR_PHY_TX_END_PA_ON_S 8
|
||||
|
||||
|
||||
#define AR_PHY_RF_CTL3 0x1C5828
|
||||
#define AR_PHY_TX_END_TO_A2_RX_ON 0x00FF0000
|
||||
#define AR_PHY_TX_END_TO_A2_RX_ON_S 16
|
||||
|
||||
#define AR_PHY_ADC_CTL 0x1C582C
|
||||
#define AR_PHY_ADC_CTL_OFF_INBUFGAIN 0x00000003
|
||||
#define AR_PHY_ADC_CTL_OFF_INBUFGAIN_S 0
|
||||
#define AR_PHY_ADC_CTL_OFF_PWDDAC 0x00002000
|
||||
#define AR_PHY_ADC_CTL_OFF_PWDBANDGAP 0x00004000 /* BB Rev 4.2+ only */
|
||||
#define AR_PHY_ADC_CTL_OFF_PWDADC 0x00008000 /* BB Rev 4.2+ only */
|
||||
#define AR_PHY_ADC_CTL_ON_INBUFGAIN 0x00030000
|
||||
#define AR_PHY_ADC_CTL_ON_INBUFGAIN_S 16
|
||||
|
||||
#define AR_PHY_ADC_SERIAL_CTL 0x1C5830
|
||||
#define AR_PHY_SEL_INTERNAL_ADDAC 0x00000000
|
||||
#define AR_PHY_SEL_EXTERNAL_RADIO 0x00000001
|
||||
|
||||
#define AR_PHY_RF_CTL4 0x1C5834
|
||||
#define AR_PHY_RF_CTL4_TX_END_XPAB_OFF 0xFF000000
|
||||
#define AR_PHY_RF_CTL4_TX_END_XPAB_OFF_S 24
|
||||
#define AR_PHY_RF_CTL4_TX_END_XPAA_OFF 0x00FF0000
|
||||
#define AR_PHY_RF_CTL4_TX_END_XPAA_OFF_S 16
|
||||
#define AR_PHY_RF_CTL4_FRAME_XPAB_ON 0x0000FF00
|
||||
#define AR_PHY_RF_CTL4_FRAME_XPAB_ON_S 8
|
||||
#define AR_PHY_RF_CTL4_FRAME_XPAA_ON 0x000000FF
|
||||
#define AR_PHY_RF_CTL4_FRAME_XPAA_ON_S 0
|
||||
|
||||
#define AR_PHY_SETTLING 0x1C5844
|
||||
#define AR_PHY_SETTLING_SWITCH 0x00003F80
|
||||
#define AR_PHY_SETTLING_SWITCH_S 7
|
||||
|
||||
#define AR_PHY_RXGAIN 0x1C5848
|
||||
#define AR_PHY_RXGAIN_TXRX_ATTEN 0x0003F000
|
||||
#define AR_PHY_RXGAIN_TXRX_ATTEN_S 12
|
||||
#define AR_PHY_RXGAIN_TXRX_RF_MAX 0x007C0000
|
||||
#define AR_PHY_RXGAIN_TXRX_RF_MAX_S 18
|
||||
|
||||
#define AR_PHY_DESIRED_SZ 0x1C5850
|
||||
#define AR_PHY_DESIRED_SZ_ADC 0x000000FF
|
||||
#define AR_PHY_DESIRED_SZ_ADC_S 0
|
||||
#define AR_PHY_DESIRED_SZ_PGA 0x0000FF00
|
||||
#define AR_PHY_DESIRED_SZ_PGA_S 8
|
||||
#define AR_PHY_DESIRED_SZ_TOT_DES 0x0FF00000
|
||||
#define AR_PHY_DESIRED_SZ_TOT_DES_S 20
|
||||
|
||||
#define AR_PHY_FIND_SIG 0x1C5858
|
||||
#define AR_PHY_FIND_SIG_FIRSTEP 0x0003F000
|
||||
#define AR_PHY_FIND_SIG_FIRSTEP_S 12
|
||||
#define AR_PHY_FIND_SIG_FIRPWR 0x03FC0000
|
||||
#define AR_PHY_FIND_SIG_FIRPWR_S 18
|
||||
|
||||
#define AR_PHY_AGC_CTL1 0x1C585C
|
||||
#define AR_PHY_AGC_CTL1_COARSE_LOW 0x00007F80
|
||||
#define AR_PHY_AGC_CTL1_COARSE_LOW_S 7
|
||||
#define AR_PHY_AGC_CTL1_COARSE_HIGH 0x003F8000
|
||||
#define AR_PHY_AGC_CTL1_COARSE_HIGH_S 15
|
||||
|
||||
#define AR_PHY_AGC_CONTROL 0x1C5860 /* chip calibration and noise floor setting */
|
||||
#define AR_PHY_AGC_CONTROL_CAL 0x00000001 /* do internal calibration */
|
||||
#define AR_PHY_AGC_CONTROL_NF 0x00000002 /* do noise-floor calculation */
|
||||
|
||||
#define AR_PHY_CCA 0x1C5864
|
||||
#define AR_PHY_MINCCA_PWR 0x1FF00000
|
||||
#define AR_PHY_MINCCA_PWR_S 19
|
||||
#define AR_PHY_CCA_THRESH62 0x0007F000
|
||||
#define AR_PHY_CCA_THRESH62_S 12
|
||||
|
||||
#define AR_PHY_SFCORR_LOW 0x1C586C
|
||||
#define AR_PHY_SFCORR_LOW_USE_SELF_CORR_LOW 0x00000001
|
||||
#define AR_PHY_SFCORR_LOW_M2COUNT_THR_LOW 0x00003F00
|
||||
#define AR_PHY_SFCORR_LOW_M2COUNT_THR_LOW_S 8
|
||||
#define AR_PHY_SFCORR_LOW_M1_THRESH_LOW 0x001FC000
|
||||
#define AR_PHY_SFCORR_LOW_M1_THRESH_LOW_S 14
|
||||
#define AR_PHY_SFCORR_LOW_M2_THRESH_LOW 0x0FE00000
|
||||
#define AR_PHY_SFCORR_LOW_M2_THRESH_LOW_S 21
|
||||
|
||||
#define AR_PHY_SFCORR 0x1C5868
|
||||
#define AR_PHY_SFCORR_M2COUNT_THR 0x0000001F
|
||||
#define AR_PHY_SFCORR_M2COUNT_THR_S 0
|
||||
#define AR_PHY_SFCORR_M1_THRESH 0x00FE0000
|
||||
#define AR_PHY_SFCORR_M1_THRESH_S 17
|
||||
#define AR_PHY_SFCORR_M2_THRESH 0x7F000000
|
||||
#define AR_PHY_SFCORR_M2_THRESH_S 24
|
||||
|
||||
#define AR_PHY_SLEEP_CTR_CONTROL 0x1C5870
|
||||
#define AR_PHY_SLEEP_CTR_LIMIT 0x1C5874
|
||||
#define AR_PHY_SLEEP_SCAL 0x1C5878
|
||||
|
||||
#define AR_PHY_PLL_CTL 0x1C587c /* PLL control register */
|
||||
#define AR_PHY_PLL_CTL_40 0xaa /* 40 MHz */
|
||||
#define AR_PHY_PLL_CTL_40_5413 0x04
|
||||
#define AR_PHY_PLL_CTL_44 0xab /* 44 MHz for 11b, 11g */
|
||||
#define AR_PHY_PLL_CTL_44_2133 0xeb /* 44 MHz for 11b, 11g */
|
||||
#define AR_PHY_PLL_CTL_40_2133 0xea /* 40 MHz for 11a, turbos */
|
||||
|
||||
#define AR_PHY_RX_DELAY 0x1C5914 /* analog pow-on time (100ns) */
|
||||
#define AR_PHY_RX_DELAY_DELAY 0x00003FFF /* delay from wakeup to rx ena */
|
||||
|
||||
#define AR_PHY_TIMING_CTRL4 0x1C5920 /* timing control */
|
||||
#define AR_PHY_TIMING_CTRL4_IQCORR_Q_Q_COFF 0x01F /* Mask for kcos_theta-1 for q correction */
|
||||
#define AR_PHY_TIMING_CTRL4_IQCORR_Q_Q_COFF_S 0 /* shift for Q_COFF */
|
||||
#define AR_PHY_TIMING_CTRL4_IQCORR_Q_I_COFF 0x7E0 /* Mask for sin_theta for i correction */
|
||||
#define AR_PHY_TIMING_CTRL4_IQCORR_Q_I_COFF_S 5 /* Shift for sin_theta for i correction */
|
||||
#define AR_PHY_TIMING_CTRL4_IQCORR_ENABLE 0x800 /* enable IQ correction */
|
||||
#define AR_PHY_TIMING_CTRL4_IQCAL_LOG_COUNT_MAX 0xF000 /* Mask for max number of samples (logarithmic) */
|
||||
#define AR_PHY_TIMING_CTRL4_IQCAL_LOG_COUNT_MAX_S 12 /* Shift for max number of samples */
|
||||
#define AR_PHY_TIMING_CTRL4_DO_IQCAL 0x10000 /* perform IQ calibration */
|
||||
|
||||
#define AR_PHY_TIMING5 0x1C5924
|
||||
#define AR_PHY_TIMING5_CYCPWR_THR1 0x000000FE
|
||||
#define AR_PHY_TIMING5_CYCPWR_THR1_S 1
|
||||
|
||||
#define AR_PHY_POWER_TX_RATE1 0x1C5934
|
||||
#define AR_PHY_POWER_TX_RATE2 0x1C5938
|
||||
#define AR_PHY_POWER_TX_RATE_MAX 0x1C593c
|
||||
#define AR_PHY_POWER_TX_RATE_MAX_TPC_ENABLE 0x00000040
|
||||
|
||||
#define AR_PHY_FRAME_CTL 0x1C5944
|
||||
#define AR_PHY_FRAME_CTL_TX_CLIP 0x00000038
|
||||
#define AR_PHY_FRAME_CTL_TX_CLIP_S 3
|
||||
|
||||
#define AR_PHY_TXPWRADJ 0x1C594C /* BB Rev 4.2+ only */
|
||||
#define AR_PHY_TXPWRADJ_CCK_GAIN_DELTA 0x00000FC0
|
||||
#define AR_PHY_TXPWRADJ_CCK_GAIN_DELTA_S 6
|
||||
#define AR_PHY_TXPWRADJ_CCK_PCDAC_INDEX 0x00FC0000
|
||||
#define AR_PHY_TXPWRADJ_CCK_PCDAC_INDEX_S 18
|
||||
|
||||
#define AR_PHY_RADAR_0 0x1C5954 /* radar detection settings */
|
||||
#define AR_PHY_RADAR_0_ENA 0x00000001 /* Enable radar detection */
|
||||
#define AR_PHY_RADAR_0_INBAND 0x0000003e /* Inband pulse threshold */
|
||||
#define AR_PHY_RADAR_0_INBAND_S 1
|
||||
#define AR_PHY_RADAR_0_PRSSI 0x00000FC0 /* Pulse rssi threshold */
|
||||
#define AR_PHY_RADAR_0_PRSSI_S 6
|
||||
#define AR_PHY_RADAR_0_HEIGHT 0x0003F000 /* Pulse height threshold */
|
||||
#define AR_PHY_RADAR_0_HEIGHT_S 12
|
||||
#define AR_PHY_RADAR_0_RRSSI 0x00FC0000 /* Radar rssi threshold */
|
||||
#define AR_PHY_RADAR_0_RRSSI_S 18
|
||||
#define AR_PHY_RADAR_0_FIRPWR 0x7F000000 /* Radar firpwr threshold */
|
||||
#define AR_PHY_RADAR_0_FIRPWR_S 24
|
||||
|
||||
#define AR_PHY_SWITCH_CHAIN_0 0x1C5960
|
||||
#define AR_PHY_SWITCH_COM 0x1C5964
|
||||
|
||||
#define AR_PHY_SIGMA_DELTA 0x1C596C /* AR5312 only */
|
||||
#define AR_PHY_SIGMA_DELTA_ADC_SEL 0x00000003
|
||||
#define AR_PHY_SIGMA_DELTA_ADC_SEL_S 0
|
||||
#define AR_PHY_SIGMA_DELTA_FILT2 0x000000F8
|
||||
#define AR_PHY_SIGMA_DELTA_FILT2_S 3
|
||||
#define AR_PHY_SIGMA_DELTA_FILT1 0x00001F00
|
||||
#define AR_PHY_SIGMA_DELTA_FILT1_S 8
|
||||
#define AR_PHY_SIGMA_DELTA_ADC_CLIP 0x01FFE000
|
||||
#define AR_PHY_SIGMA_DELTA_ADC_CLIP_S 13
|
||||
|
||||
#define AR_PHY_RESTART 0x1C5970 /* restart */
|
||||
#define AR_PHY_RESTART_DIV_GC 0x001C0000 /* bb_ant_fast_div_gc_limit */
|
||||
#define AR_PHY_RESTART_DIV_GC_S 18
|
||||
|
||||
#define AR_PHY_RFBUS_REQ 0x1C597C
|
||||
#define AR_PHY_RFBUS_REQ_EN 0x00000001
|
||||
|
||||
#define AR_PHY_RX_CHAINMASK 0x1C59a4
|
||||
|
||||
#define AR_PHY_EXT_CCA 0x1C59bc
|
||||
#define AR_PHY_EXT_MINCCA_PWR 0xFF800000
|
||||
#define AR_PHY_EXT_MINCCA_PWR_S 23
|
||||
|
||||
#define AR_PHY_HALFGI 0x1C59D0 /* Timing control 3 */
|
||||
#define AR_PHY_HALFGI_DSC_MAN 0x0007FFF0
|
||||
#define AR_PHY_HALFGI_DSC_MAN_S 4
|
||||
#define AR_PHY_HALFGI_DSC_EXP 0x0000000F
|
||||
#define AR_PHY_HALFGI_DSC_EXP_S 0
|
||||
|
||||
#define AR_PHY_HEAVY_CLIP_ENABLE 0x1C59E0
|
||||
|
||||
#define AR_PHY_M_SLEEP 0x1C59f0 /* sleep control registers */
|
||||
#define AR_PHY_REFCLKDLY 0x1C59f4
|
||||
#define AR_PHY_REFCLKPD 0x1C59f8
|
||||
|
||||
/* PHY IQ calibration results */
|
||||
#define AR_PHY_IQCAL_RES_PWR_MEAS_I 0x1C5C10 /* power measurement for I */
|
||||
#define AR_PHY_IQCAL_RES_PWR_MEAS_Q 0x1C5C14 /* power measurement for Q */
|
||||
#define AR_PHY_IQCAL_RES_IQ_CORR_MEAS 0x1C5C18 /* IQ correlation measurement */
|
||||
|
||||
#define AR_PHY_CURRENT_RSSI 0x1C5C1c /* rssi of current frame rx'd */
|
||||
|
||||
#define AR_PHY_RFBUS_GRANT 0x1C5C20
|
||||
#define AR_PHY_RFBUS_GRANT_EN 0x00000001
|
||||
|
||||
#define AR_PHY_MODE 0x1C6200 /* Mode register */
|
||||
#define AR_PHY_MODE_AR2133 0x08 /* AR2133 */
|
||||
#define AR_PHY_MODE_AR5111 0x00 /* AR5111/AR2111 */
|
||||
#define AR_PHY_MODE_AR5112 0x08 /* AR5112*/
|
||||
#define AR_PHY_MODE_DYNAMIC 0x04 /* dynamic CCK/OFDM mode */
|
||||
#define AR_PHY_MODE_RF2GHZ 0x02 /* 2.4 GHz */
|
||||
#define AR_PHY_MODE_RF5GHZ 0x00 /* 5 GHz */
|
||||
#define AR_PHY_MODE_CCK 0x01 /* CCK */
|
||||
#define AR_PHY_MODE_OFDM 0x00 /* OFDM */
|
||||
|
||||
#define AR_PHY_CCK_TX_CTRL 0x1C6204
|
||||
#define AR_PHY_CCK_TX_CTRL_JAPAN 0x00000010
|
||||
|
||||
#define AR_PHY_CCK_DETECT 0x1C6208
|
||||
#define AR_PHY_CCK_DETECT_WEAK_SIG_THR_CCK 0x0000003F
|
||||
#define AR_PHY_CCK_DETECT_WEAK_SIG_THR_CCK_S 0
|
||||
#define AR_PHY_CCK_DETECT_ANT_SWITCH_TIME 0x00001FC0 // [12:6] settling time for antenna switch
|
||||
#define AR_PHY_CCK_DETECT_ANT_SWITCH_TIME_S 6
|
||||
#define AR_PHY_CCK_DETECT_BB_ENABLE_ANT_FAST_DIV 0x2000
|
||||
|
||||
#define AR_PHY_GAIN_2GHZ 0x1C620C
|
||||
#define AR_PHY_GAIN_2GHZ_RXTX_MARGIN 0x00FC0000
|
||||
#define AR_PHY_GAIN_2GHZ_RXTX_MARGIN_S 18
|
||||
#define AR_PHY_GAIN_2GHZ_BSW_MARGIN 0x00003C00
|
||||
#define AR_PHY_GAIN_2GHZ_BSW_MARGIN_S 10
|
||||
#define AR_PHY_GAIN_2GHZ_BSW_ATTEN 0x0000001F
|
||||
#define AR_PHY_GAIN_2GHZ_BSW_ATTEN_S 0
|
||||
|
||||
#define AR_PHY_CCK_RXCTRL4 0x1C621C
|
||||
#define AR_PHY_CCK_RXCTRL4_FREQ_EST_SHORT 0x01F80000
|
||||
#define AR_PHY_CCK_RXCTRL4_FREQ_EST_SHORT_S 19
|
||||
|
||||
#define AR_PHY_DAG_CTRLCCK 0x1C6228
|
||||
#define AR_PHY_DAG_CTRLCCK_EN_RSSI_THR 0x00000200 /* BB Rev 4.2+ only */
|
||||
#define AR_PHY_DAG_CTRLCCK_RSSI_THR 0x0001FC00 /* BB Rev 4.2+ only */
|
||||
#define AR_PHY_DAG_CTRLCCK_RSSI_THR_S 10 /* BB Rev 4.2+ only */
|
||||
|
||||
#define AR_PHY_POWER_TX_RATE3 0x1C6234
|
||||
#define AR_PHY_POWER_TX_RATE4 0x1C6238
|
||||
|
||||
#define AR_PHY_SCRM_SEQ_XR 0x1C623C
|
||||
#define AR_PHY_HEADER_DETECT_XR 0x1C6240
|
||||
#define AR_PHY_CHIRP_DETECTED_XR 0x1C6244
|
||||
#define AR_PHY_BLUETOOTH 0x1C6254
|
||||
|
||||
#define AR_PHY_TPCRG1 0x1C6258 /* ar2413 power control */
|
||||
#define AR_PHY_TPCRG1_NUM_PD_GAIN 0x0000c000
|
||||
#define AR_PHY_TPCRG1_NUM_PD_GAIN_S 14
|
||||
|
||||
#define AR_PHY_TPCRG1_PD_GAIN_1 0x00030000
|
||||
#define AR_PHY_TPCRG1_PD_GAIN_1_S 16
|
||||
#define AR_PHY_TPCRG1_PD_GAIN_2 0x000C0000
|
||||
#define AR_PHY_TPCRG1_PD_GAIN_2_S 18
|
||||
#define AR_PHY_TPCRG1_PD_GAIN_3 0x00300000
|
||||
#define AR_PHY_TPCRG1_PD_GAIN_3_S 20
|
||||
//
|
||||
|
||||
#define AR_PHY_ANALOG_SWAP 0xa268
|
||||
#define AR_PHY_SWAP_ALT_CHAIN 0x00000040
|
||||
|
||||
#define AR_PHY_TPCRG5 0x1C626C /* ar2413 power control */
|
||||
#define AR_PHY_TPCRG5_PD_GAIN_OVERLAP 0x0000000F
|
||||
#define AR_PHY_TPCRG5_PD_GAIN_OVERLAP_S 0
|
||||
#define AR_PHY_TPCRG5_PD_GAIN_BOUNDARY_1 0x000003F0
|
||||
#define AR_PHY_TPCRG5_PD_GAIN_BOUNDARY_1_S 4
|
||||
#define AR_PHY_TPCRG5_PD_GAIN_BOUNDARY_2 0x0000FC00
|
||||
#define AR_PHY_TPCRG5_PD_GAIN_BOUNDARY_2_S 10
|
||||
#define AR_PHY_TPCRG5_PD_GAIN_BOUNDARY_3 0x003F0000
|
||||
#define AR_PHY_TPCRG5_PD_GAIN_BOUNDARY_3_S 16
|
||||
#define AR_PHY_TPCRG5_PD_GAIN_BOUNDARY_4 0x0FC00000
|
||||
#define AR_PHY_TPCRG5_PD_GAIN_BOUNDARY_4_S 22
|
||||
|
||||
#define AR_PHY_POWER_TX_RATE5 0x1C638C
|
||||
#define AR_PHY_POWER_TX_RATE6 0x1C6390
|
||||
|
||||
#define AR_PHY_CAL_CHAINMASK 0x1C639C
|
||||
|
||||
#define AR_PHY_POWER_TX_SUB 0x1C63C8
|
||||
#define AR_PHY_POWER_TX_RATE7 0x1C63CC
|
||||
#define AR_PHY_POWER_TX_RATE8 0x1C63D0
|
||||
#define AR_PHY_POWER_TX_RATE9 0x1C63D4
|
1018
drivers/staging/otus/hal/hpfw2.c
Normal file
1018
drivers/staging/otus/hal/hpfw2.c
Normal file
File diff suppressed because it is too large
Load diff
5269
drivers/staging/otus/hal/hpfwbu.c
Normal file
5269
drivers/staging/otus/hal/hpfwbu.c
Normal file
File diff suppressed because it is too large
Load diff
655
drivers/staging/otus/hal/hpfwspiu.c
Normal file
655
drivers/staging/otus/hal/hpfwspiu.c
Normal file
|
@ -0,0 +1,655 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
#include "../80211core/cprecomp.h"
|
||||
|
||||
const u32_t zcFwImageSPI[]={
|
||||
0x0009000B, 0x4F222FE6, 0xB0187FFC, 0xE6000009,
|
||||
0x943DD520, 0xC8406052, 0x2F028F03, 0x8FF93642,
|
||||
0xD41D7601, 0x4E0BDE1D, 0xD41D0009, 0x00094E0B,
|
||||
0x4E0BD41C, 0x7F040009, 0xA0214F26, 0x4F226EF6,
|
||||
0xE205D119, 0x2122E400, 0x92222142, 0x8BFD4210,
|
||||
0x450BD516, 0xD6160009, 0x0009460B, 0xE5FFD715,
|
||||
0x2752655D, 0xE1FFD714, 0xD4145079, 0x1709CB01,
|
||||
0x17112712, 0x2412E101, 0x4F26D411, 0x2410000B,
|
||||
0xDE11DD10, 0x00094D0B, 0x00094E0B, 0x0009AFFA,
|
||||
0x03E82710, 0x001C001C, 0x00116594, 0x00114EBE,
|
||||
0x001165A4, 0x001165BC, 0x001D4004, 0x00114FA0,
|
||||
0x00114378, 0x001C3510, 0x001C3624, 0x001E212C,
|
||||
0x001164FC, 0x00114700, 0x0011589C, 0x2FA62F96,
|
||||
0x2FC62FB6, 0x2FE62FD6, 0x7FC84F22, 0xD28DDD8C,
|
||||
0x61D360D0, 0x80F47101, 0x420B6010, 0x200880F8,
|
||||
0x6E038F10, 0xDB89D488, 0xD4896A40, 0x4B0BDC89,
|
||||
0x67C065AC, 0x697CDE88, 0x41086193, 0x31984108,
|
||||
0x3E1C4108, 0x66D284F8, 0x2008600C, 0x2E628F13,
|
||||
0xE40084F4, 0xDA81670C, 0x3273624D, 0xA0D38B01,
|
||||
0x644D0009, 0x35AC6543, 0x69436652, 0x39EC6B62,
|
||||
0xAFF119B1, 0x88017404, 0x84F48B15, 0x2E70E700,
|
||||
0xDA766E0C, 0x32E3627D, 0xA0C48B01, 0x677D0009,
|
||||
0x6C7366A3, 0x65737604, 0x356C3CAC, 0x6D5264C2,
|
||||
0xAFEF7708, 0xE2B024D2, 0x3020622C, 0x84F48B30,
|
||||
0x650CEC00, 0xDA691F53, 0x55F3E904, 0x325362CD,
|
||||
0xA0A88B01, 0x6CCD0009, 0x67C36EA3, 0x6BC37E04,
|
||||
0x3BEC37AC, 0x6EB26D72, 0xDB62D461, 0x00094B0B,
|
||||
0x410BD161, 0xD46164D3, 0x00094B0B, 0x450BD55E,
|
||||
0xD45F64E3, 0x00094B0B, 0x61D3E600, 0x316C666D,
|
||||
0x646D7601, 0x21E03493, 0x4E198FF7, 0x7C08AFD5,
|
||||
0x622CE2B1, 0x8B113020, 0xD552D456, 0xDA56DC4F,
|
||||
0x0009450B, 0x4A0BE400, 0xD75467C2, 0x470BDB52,
|
||||
0x4B0B0009, 0xE900E403, 0x2E90A06D, 0x622CE2B2,
|
||||
0x89683020, 0x622CE2B3, 0x8B1D3020, 0xDA45D44C,
|
||||
0x4A0BD942, 0x65960009, 0x6792D44A, 0x1F74DD3B,
|
||||
0x1F5D4D0B, 0xD639D448, 0x460BDB48, 0x55F455F4,
|
||||
0x4B0BD936, 0xD44654FD, 0x490B6503, 0x5DF51F05,
|
||||
0x1ED1EC04, 0x2EC0A047, 0x622CE2B4, 0x8B3E3020,
|
||||
0xDA34D440, 0x4A0BDD31, 0x84F40009, 0x600C6CD2,
|
||||
0x1F072F02, 0x1FC6C903, 0xE6001F08, 0xD73AE030,
|
||||
0x6CF2DB3A, 0x1F790F65, 0xA0211FBA, 0x51F6E904,
|
||||
0x6D63666D, 0x4C1536EC, 0xD2353D1C, 0x1F6B8F05,
|
||||
0x89023C93, 0xA00264D3, 0xE50455F8, 0x420B64D3,
|
||||
0x5BFB0009, 0xD61954FA, 0x460B65D3, 0x54F91B01,
|
||||
0xDA1655B1, 0x7CFC4A0B, 0x06FDE030, 0x0F657604,
|
||||
0x626D55F7, 0x8BDA3253, 0xA00484F4, 0xD4252E00,
|
||||
0x420BD20E, 0x7F3865D2, 0x6EF64F26, 0x6CF66DF6,
|
||||
0x6AF66BF6, 0x69F6000B, 0xE6006163, 0x4109A004,
|
||||
0x76016256, 0x74042422, 0x8BF93612, 0x0009000B,
|
||||
0x00117800, 0x00115FF0, 0x001164F6, 0x00114F2C,
|
||||
0x001165C0, 0x001164F5, 0x0011611C, 0x00117804,
|
||||
0x001165E0, 0x00114EBE, 0x00114F02, 0x001165F4,
|
||||
0x001165FC, 0x00116600, 0x00114BF0, 0x001148FC,
|
||||
0x00116618, 0x00116634, 0x00116640, 0x00114E56,
|
||||
0x0011664C, 0x00116658, 0x0011667C, 0x00116670,
|
||||
0x00114BC4, 0x00116688, 0x2F962F86, 0x2FB62FA6,
|
||||
0x2FD62FC6, 0x4F222FE6, 0xE5007FD8, 0x6453E110,
|
||||
0x6C534128, 0x655DEE0A, 0x46086653, 0x4608365C,
|
||||
0x361C7501, 0x675D6043, 0x60C30F66, 0x37E3ED00,
|
||||
0x816126C1, 0x81638162, 0x16D316D2, 0x8FEA16D4,
|
||||
0x68F27404, 0xDAB3D9B2, 0x29821981, 0xD1B259F1,
|
||||
0x2A921A91, 0x5BF35AF2, 0x5EF55DF4, 0x11A154F6,
|
||||
0x11B321A2, 0x11D511B2, 0x11E711D4, 0x114911E6,
|
||||
0x55F71148, 0xEE00DBA9, 0xDDA957F8, 0xD6A952F9,
|
||||
0x1B5164E3, 0xDBA82B52, 0xEAB8D8A8, 0x2D72E945,
|
||||
0x6AAC2622, 0x6EED4908, 0x4D086DE3, 0x3DEC61E3,
|
||||
0x4D084108, 0x3DBC31EC, 0x410860C3, 0x81D12DC1,
|
||||
0x4108E050, 0x41084008, 0x60C381D2, 0xE500318C,
|
||||
0x81D334A2, 0x1D131DD2, 0x8D01D494, 0xD4911D54,
|
||||
0xB08165D3, 0x64ED7E01, 0x8BDC3492, 0xDB94D18D,
|
||||
0xD28B6812, 0x1B814829, 0x2FD26412, 0x2B92694D,
|
||||
0xD98A6722, 0x1B734729, 0xD7876822, 0x1BA26A8D,
|
||||
0xD28C6B72, 0x22B2D586, 0xE0035D72, 0x5E7412D2,
|
||||
0x12E44018, 0xD6885176, 0x54781216, 0x1248E1FF,
|
||||
0xD4856792, 0x6852127A, 0x28C1E703, 0x81916952,
|
||||
0x6A52E050, 0x81A24008, 0x60C36B52, 0x6D5281B3,
|
||||
0x6E521DD2, 0x62521E63, 0x1264E600, 0x46086563,
|
||||
0x7501364C, 0x665D2612, 0x8BF83673, 0xE003D471,
|
||||
0x40186542, 0x674225C1, 0x8171D274, 0xEE006842,
|
||||
0x69421882, 0x1923E024, 0xE5806A42, 0x6B421AE4,
|
||||
0x81B266E3, 0xD46D6C42, 0x655C81C3, 0x6D63666D,
|
||||
0x616D7604, 0x31533D4C, 0x2DE28FF8, 0xD569D268,
|
||||
0x74042422, 0x7F282452, 0x6EF64F26, 0x6CF66DF6,
|
||||
0x6AF66BF6, 0x000B69F6, 0x664268F6, 0xC8036061,
|
||||
0xE5008D04, 0xC9036061, 0x8B038802, 0x65635262,
|
||||
0x24125124, 0x6053000B, 0x2FE62FD6, 0x7FEC4F22,
|
||||
0x62536E53, 0x6D43E550, 0x4508E400, 0xE101A001,
|
||||
0x60435224, 0x81212211, 0x60538123, 0x56E28122,
|
||||
0x8BF53620, 0x16E4D250, 0xE61464F3, 0x65E3420B,
|
||||
0xE4FC65E1, 0x2E512549, 0x65F361F1, 0x2F112149,
|
||||
0xD14954D1, 0xE614410B, 0x607157D1, 0x2701CB01,
|
||||
0x7F141DE1, 0x6EF64F26, 0x6DF6000B, 0x2FE62FD6,
|
||||
0x7FEC4F22, 0x66536E53, 0x6D43E5FC, 0x20596061,
|
||||
0x2601CB01, 0x326052E2, 0x12E48B06, 0x31E051E2,
|
||||
0x52D18B04, 0x1E22A002, 0x5664AFF0, 0x64F3D236,
|
||||
0x420BE614, 0x67E165E3, 0x2719E1FC, 0x67F12E71,
|
||||
0x271954D1, 0x65F3D130, 0x410BE614, 0x52D12F71,
|
||||
0xCB016021, 0x1DE12201, 0x4F267F14, 0x000B6EF6,
|
||||
0x2FE66DF6, 0x624C4F22, 0x4208DE1B, 0xA0054200,
|
||||
0x52523E2C, 0x5624D417, 0x2E62BF8E, 0x52E165E2,
|
||||
0x8BF63520, 0x2622D61B, 0x000B4F26, 0x2FB66EF6,
|
||||
0x2FD62FC6, 0x4F222FE6, 0xDB1CDC10, 0x66C252C1,
|
||||
0x89403620, 0xC9036061, 0x893C8801, 0xDD18DE0B,
|
||||
0x64E3BF63, 0x85036503, 0x620D66B2, 0x892B3262,
|
||||
0xBF9BD403, 0xD4130009, 0x00094D0B, 0x0009AFE6,
|
||||
0x001160DC, 0x001160E4, 0x001160EC, 0x00116114,
|
||||
0x001164F8, 0x00116500, 0x001000C8, 0x00101680,
|
||||
0x001E2108, 0x001C3D00, 0x00117880, 0x00117780,
|
||||
0x00040020, 0x0026C401, 0x001142F8, 0x001164DC,
|
||||
0x00114EBE, 0x0011669C, 0x64E3BF3E, 0x4D0BD406,
|
||||
0xAFBB0009, 0xD2050009, 0x4F262262, 0x6DF66EF6,
|
||||
0x000B6CF6, 0x00006BF6, 0x001166A0, 0x001C3D28,
|
||||
0x2F962F86, 0x2FB62FA6, 0x2FD62FC6, 0x4F222FE6,
|
||||
0xD23C7FFC, 0xC8036022, 0x2F018F3D, 0x0009A061,
|
||||
0xC9036061, 0x893B8801, 0xD238D837, 0x420BD938,
|
||||
0xE4006483, 0x6A036D03, 0x5C02490B, 0xD236DB35,
|
||||
0x56D385D2, 0x650D6422, 0x4B0BE740, 0xD1326E03,
|
||||
0x64126EED, 0x214234EC, 0x3DC05DD4, 0x85D28BEF,
|
||||
0x70FF56D3, 0xE740650D, 0x6C034B0B, 0x490BDB2A,
|
||||
0x66B2E403, 0x36CC6CCD, 0xE700D928, 0x2B62E5C8,
|
||||
0x6473E650, 0x490BDC26, 0x6483655C, 0x65A34C0B,
|
||||
0xEE01D124, 0xD11C21E2, 0x66125211, 0x8BBF3620,
|
||||
0xDD22DE21, 0xDC23DB22, 0x65D252D1, 0x89183520,
|
||||
0xC9036051, 0x89148801, 0xD114D41C, 0x0009410B,
|
||||
0x36E05603, 0x65038F04, 0x2B20E201, 0x2C52AFEC,
|
||||
0xD213D419, 0x0009420B, 0xE101D618, 0xAFE34118,
|
||||
0x60F12612, 0x8902C804, 0x420BD215, 0x7F040009,
|
||||
0x6EF64F26, 0x6CF66DF6, 0x6AF66BF6, 0x000B69F6,
|
||||
0x000068F6, 0x001E2100, 0x001160E4, 0x0011453A,
|
||||
0x00114BF0, 0x00114E0C, 0x00116714, 0x001159B0,
|
||||
0x00114558, 0x001E212C, 0x00117880, 0x001160DC,
|
||||
0x001164FC, 0x001164F8, 0x00116114, 0x001C3D30,
|
||||
0x001140CC, 0xD6C2D5C1, 0x26226252, 0xC8016060,
|
||||
0x000B8BFA, 0x2FE60009, 0xBFF34F22, 0xD2BD0009,
|
||||
0xE405E100, 0x22402212, 0x6422DEB8, 0xE700D5B8,
|
||||
0x25721E42, 0xC98F8451, 0xC9F0CB10, 0x8051CB02,
|
||||
0xCB026050, 0x62522500, 0x2E22BFDC, 0xD6B250E4,
|
||||
0x4F262602, 0x6EF6000B, 0x4F222FD6, 0x0009BFDB,
|
||||
0x620CDDAE, 0x60D02D22, 0x8906C801, 0x0009BFD3,
|
||||
0x2D22620C, 0xC80160D0, 0x4F268BF8, 0x6DF6000B,
|
||||
0x4F222FE6, 0x6E43BFE8, 0xE100D2A2, 0x22E02212,
|
||||
0x6422D59E, 0xE600DE9E, 0x2E621542, 0xC9F084E1,
|
||||
0x80E1CB01, 0xCB0260E0, 0x67E22E00, 0x4F262572,
|
||||
0x6EF6AFA8, 0xE406AFE4, 0xE404AFE2, 0xBFF94F22,
|
||||
0xE4C70009, 0x644CBFDC, 0x4F26AFF6, 0xE406AFD8,
|
||||
0xE404AFD6, 0x4F222FE6, 0x6E43BFF8, 0xD58DD28D,
|
||||
0xE401E100, 0x221260E3, 0x80512240, 0x6622D187,
|
||||
0xE700DE87, 0x2E721162, 0xC9F084E1, 0x80E1CB02,
|
||||
0xCB0260E0, 0x62E22E00, 0x2122BF7C, 0xAFDF4F26,
|
||||
0x2FD66EF6, 0x4F222FE6, 0xBFCB6D53, 0xBF9B6E43,
|
||||
0xD27C0009, 0x22E061D3, 0x6022DE7D, 0x411821E9,
|
||||
0x201BC9FF, 0x2202D577, 0xD6768453, 0x60D38051,
|
||||
0xD4728053, 0xD1726762, 0x1472ED00, 0x841121D2,
|
||||
0xCB04C9F0, 0x60108011, 0x2100CB02, 0xBF516212,
|
||||
0x4F262422, 0xAFA76EF6, 0x65436DF6, 0xAFD0E4D8,
|
||||
0x6543644C, 0xAFCCE4D8, 0x2FC6644C, 0x2FE62FD6,
|
||||
0x6E534F22, 0xBF676D43, 0xD7626C63, 0x27D0D264,
|
||||
0x61E36072, 0x41182129, 0x201BC9FF, 0x2702D45D,
|
||||
0xD15B8443, 0x60E38041, 0xDE588043, 0xE6006472,
|
||||
0x21621E42, 0x65DC8411, 0x60C36203, 0x4008C907,
|
||||
0x67034008, 0xE29F6023, 0x622CC98F, 0x3520207B,
|
||||
0x80118D18, 0x7C048411, 0x60C36603, 0x6203C90F,
|
||||
0xC9F06063, 0x8011202B, 0x880B6053, 0x84118B14,
|
||||
0xC90F6603, 0xC90F7001, 0x60636203, 0x202BC9F0,
|
||||
0x8011A00A, 0x7C018411, 0x60C36603, 0x6203C90F,
|
||||
0xC9F06063, 0x8011202B, 0xCB026010, 0x62122100,
|
||||
0x2E22BEF0, 0xD63C50E4, 0x4F262602, 0x6DF66EF6,
|
||||
0x6CF6000B, 0x2FC62FB6, 0x2FE62FD6, 0x6C634F22,
|
||||
0x6E436D53, 0x6B73BF36, 0x0009BF06, 0x61D3D231,
|
||||
0xDE3322E0, 0x21E96022, 0xC9FF4118, 0xD42D201B,
|
||||
0x84432202, 0x8041D72F, 0x804360D3, 0x6622D427,
|
||||
0x1462D127, 0x14C327C2, 0x21C2EC00, 0x7B048411,
|
||||
0x60B36D03, 0x6503C90F, 0xC9F060D3, 0x8011205B,
|
||||
0xCB026010, 0x62122100, 0x4F262422, 0x6DF66EF6,
|
||||
0xAEAF6CF6, 0x2FB66BF6, 0x2FD62FC6, 0x4F222FE6,
|
||||
0x6C536D63, 0xBEFD6E43, 0xBECD6B73, 0xD2150009,
|
||||
0x22E061C3, 0x6022DE16, 0x411821E9, 0x201BC9FF,
|
||||
0x2202D110, 0xD60F8413, 0x60C38011, 0xDE0B8013,
|
||||
0xD40B6762, 0xEC006BBD, 0x1EB51E72, 0x844124C2,
|
||||
0xC9F04B21, 0x8041CB04, 0xE1406040, 0x2400CB06,
|
||||
0xE5006242, 0x4B212E22, 0x4128A014, 0x001D1200,
|
||||
0x00116528, 0x00116530, 0x00116538, 0x00116544,
|
||||
0x00FFFFFF, 0x00116534, 0x6053655D, 0x06DE4008,
|
||||
0x21627501, 0x32B3625D, 0x4F268BF6, 0x6DF66EF6,
|
||||
0xAE5F6CF6, 0x4F226BF6, 0xBF73677C, 0xAEB3644C,
|
||||
0x4F224F26, 0xBFA6677D, 0xAEAD644C, 0x4F224F26,
|
||||
0xE500E49F, 0xBF08E603, 0x4F26644C, 0x600C000B,
|
||||
0xE49F4F22, 0xE603E500, 0x644CBEFF, 0x4F264019,
|
||||
0x600D000B, 0x6543665C, 0xE403AEF7, 0x6543665C,
|
||||
0xE40BAEF3, 0xD175D674, 0x60436262, 0xC8012122,
|
||||
0x8F016010, 0xC9EFCB10, 0x62122100, 0x2622000B,
|
||||
0x4F222FE6, 0xE0004F13, 0xBE2C401E, 0xD56C6E43,
|
||||
0x2522620C, 0xE401BFE6, 0x6063D669, 0x60ECCF80,
|
||||
0x89072008, 0x89098801, 0x890D8802, 0x89118803,
|
||||
0x0009A013, 0xC9E36060, 0x2600A00F, 0xCB106060,
|
||||
0xCB04C9F7, 0x2600A009, 0xCB106060, 0xCB08C9FB,
|
||||
0x2600A003, 0xCB1C6060, 0xD5592600, 0xBE616252,
|
||||
0xE400642C, 0x4F264F17, 0x6EF6AFBC, 0x2F962F86,
|
||||
0x2FB62FA6, 0x2FD62FC6, 0x4F222FE6, 0x60C36C7C,
|
||||
0x6A638802, 0x69538F09, 0x65436290, 0x662CE4AF,
|
||||
0xBEF7E701, 0xA00A644C, 0x2CC80009, 0x88018901,
|
||||
0x65438B05, 0xE600E4AF, 0xBEEBE701, 0xBDD1644C,
|
||||
0xED010009, 0xDE43EBAF, 0xE800A02C, 0x0009BDF4,
|
||||
0x60C3D141, 0x8802E200, 0xD5402122, 0x21B08D06,
|
||||
0x89082CC8, 0x890A8801, 0x0009A00C, 0x009C60D3,
|
||||
0xA007D639, 0xD2388061, 0xA0036083, 0xD2368021,
|
||||
0x802160D3, 0xD1356412, 0x1E42E600, 0x84512162,
|
||||
0xC9F07D01, 0x8051CB02, 0xCB026050, 0x67122500,
|
||||
0x2E72BDA0, 0x8BD13DA2, 0x0009BDF6, 0x0009BDA3,
|
||||
0x620CD627, 0x4F262622, 0x6DF66EF6, 0x6BF66CF6,
|
||||
0x69F66AF6, 0x68F6000B, 0xE702AF98, 0x2F962F86,
|
||||
0x2FB62FA6, 0x2FD62FC6, 0x4F222FE6, 0x3F3C9331,
|
||||
0x0F569030, 0xE8FF70FC, 0x688C0F46, 0xE900A049,
|
||||
0x4018E010, 0xE50404FE, 0xBF33349C, 0x88FF6A43,
|
||||
0x901F893E, 0xE1100CFE, 0x41183C98, 0x8B033C16,
|
||||
0x64A3BE1B, 0x0009A031, 0x4018E010, 0xED000BFE,
|
||||
0xA0073BCC, 0x64D36EF3, 0xBF1F34BC, 0x2E00E501,
|
||||
0x7E017D01, 0x8BF63DC2, 0x64A3BE07, 0xA01AED00,
|
||||
0xEFF86EF3, 0x00001004, 0x001D1204, 0x0011652C,
|
||||
0x00116544, 0x001D1200, 0x00116530, 0x00116528,
|
||||
0x666C66E0, 0x89043680, 0x35BC65D3, 0xBE51E701,
|
||||
0x7D01E402, 0x3DC27E01, 0xE1108BF2, 0x391C4118,
|
||||
0x90547904, 0x391201FE, 0x93518BB2, 0x4F263F3C,
|
||||
0x6DF66EF6, 0x6BF66CF6, 0x69F66AF6, 0x68F6000B,
|
||||
0x676D6253, 0x66236543, 0xE402AEC3, 0x2FA62F96,
|
||||
0x2FC62FB6, 0x2FE62FD6, 0x697D4F22, 0x4A216A93,
|
||||
0x4A084A21, 0x6C436D63, 0xA0086B73, 0x64C36E53,
|
||||
0x669365D3, 0x6BBDBFE4, 0x3DAC3CBC, 0x6EEF3EB8,
|
||||
0x8BF42EE8, 0x4F26E000, 0x6DF66EF6, 0x6BF66CF6,
|
||||
0x000B6AF6, 0x2FA669F6, 0x2FC62FB6, 0x2FE62FD6,
|
||||
0xEC004F22, 0x6B536EC3, 0xA0066D43, 0x64D3EA01,
|
||||
0x65A3BEA8, 0x7D013C0C, 0x3EB27E01, 0x60C38BF7,
|
||||
0x6EF64F26, 0x6CF66DF6, 0x000B6BF6, 0x10046AF6,
|
||||
0x00001008, 0x0009000B, 0x2FD62FC6, 0x4F222FE6,
|
||||
0x6D436C53, 0xEE00A004, 0x7E0164D4, 0x644CBFF2,
|
||||
0x8BF93EC2, 0x6EF64F26, 0x000B6DF6, 0xE5006CF6,
|
||||
0x6643A002, 0x76017501, 0x22286260, 0xAFE38BFA,
|
||||
0x2FE60009, 0x75076253, 0xE1086753, 0x6043EE0A,
|
||||
0x4409C90F, 0x650330E2, 0x8D014409, 0xE630E637,
|
||||
0x4110365C, 0x8FF22760, 0xE00077FF, 0x000B8028,
|
||||
0x4F226EF6, 0xBFE47FEC, 0xBFD865F3, 0x7F1464F3,
|
||||
0x000B4F26, 0x4F22E000, 0xBFDA7FEC, 0x64F365F3,
|
||||
0x7406BFCD, 0x4F267F14, 0xE000000B, 0x4F222FE6,
|
||||
0x62537FEC, 0x65F36E43, 0x6423BFCB, 0x64E3BFBF,
|
||||
0x64F3BFBD, 0xBFBAD403, 0x7F140009, 0x000B4F26,
|
||||
0x00006EF6, 0x001166A4, 0xE4FDD29A, 0xD79A6122,
|
||||
0x22122149, 0x74016022, 0x2202CB01, 0xD5976622,
|
||||
0x22622649, 0xC8406070, 0x60528902, 0x2502CB04,
|
||||
0xE1F76452, 0x25422419, 0xE7016052, 0x2502C9CF,
|
||||
0xE6026052, 0x2502CB03, 0x15624718, 0x1573000B,
|
||||
0xD78CD58B, 0xD48DD28C, 0xE600E100, 0x27112511,
|
||||
0xAFD12210, 0x664C2461, 0x4600D289, 0x6060362C,
|
||||
0x000BCB10, 0x654C2600, 0x4500D285, 0x6650352C,
|
||||
0x2619E1EF, 0x2560000B, 0xD282664C, 0x362C4600,
|
||||
0xCB106060, 0x2600000B, 0xD27E654C, 0x352C4500,
|
||||
0xE1EF6650, 0x000B2619, 0x664C2560, 0x4600D278,
|
||||
0x6060362C, 0x000BCB08, 0x654C2600, 0x4500D274,
|
||||
0x6650352C, 0x2619E1F7, 0x2560000B, 0xD271664C,
|
||||
0x362C4600, 0xCB086060, 0x2600000B, 0xD26D654C,
|
||||
0x352C4500, 0xE1F76650, 0x000B2619, 0x624C2560,
|
||||
0x4200D667, 0x6020326C, 0x4021C908, 0x40214021,
|
||||
0x600C000B, 0xD663624C, 0x326C4200, 0xC9086020,
|
||||
0x40214021, 0x000B4021, 0xD15F600C, 0x341C644C,
|
||||
0x000B6240, 0xD15D602C, 0x341C644C, 0x000B6240,
|
||||
0x2FE6602C, 0x6E434F22, 0xE60A645C, 0x89143467,
|
||||
0x0009BFEB, 0x60EC640C, 0x8B028801, 0xA002E00F,
|
||||
0x44092409, 0x624C4409, 0x3263E60A, 0xBFE28905,
|
||||
0x620C644C, 0xC8806023, 0xE2008B00, 0x4F266023,
|
||||
0x6EF6000B, 0xD64A4F22, 0x88016062, 0xB2458B03,
|
||||
0xA0030009, 0xD2470009, 0x2260E640, 0xE200D646,
|
||||
0x000B4F26, 0x4F222622, 0x6062D641, 0x8B018802,
|
||||
0x0009B28E, 0xE200D640, 0x000B4F26, 0xD53C2622,
|
||||
0xE100D43C, 0x2512E701, 0x2470000B, 0xE604D239,
|
||||
0x2260000B, 0xD4394F22, 0x410BD139, 0xD5390009,
|
||||
0x6650E1FD, 0x2619D238, 0x2560E700, 0x000B4F26,
|
||||
0x4F222270, 0xD132D435, 0x0009410B, 0xE7FBD531,
|
||||
0x26796650, 0x000B4F26, 0x4F222560, 0xD12CD430,
|
||||
0x0009410B, 0xE7F7D52B, 0x26796650, 0x000B4F26,
|
||||
0xD5282560, 0x6250942D, 0x000B2249, 0xD5252520,
|
||||
0x6250E4BF, 0x000B2249, 0x4F222520, 0x8522D225,
|
||||
0x2008600D, 0x88018911, 0x88038913, 0x88058915,
|
||||
0x88068942, 0x88088948, 0x8809894E, 0x880A8954,
|
||||
0x880B895A, 0xA0678960, 0xB0690009, 0xA0640009,
|
||||
0xB077600C, 0xA0600009, 0xB080600C, 0xA05C0009,
|
||||
0xFF7F600C, 0x001E2148, 0x001E1000, 0x001E1108,
|
||||
0x00116570, 0x00116572, 0x00116591, 0x00116554,
|
||||
0x001E103F, 0x001E105F, 0x001E102F, 0x001E1090,
|
||||
0x00116578, 0x001E100B, 0x00116574, 0x001166A8,
|
||||
0x00114EBE, 0x001E1028, 0x00116590, 0x001166B4,
|
||||
0x001166C4, 0x00116548, 0x6260D684, 0x8B2B2228,
|
||||
0x0009B061, 0x600CA029, 0x6260D680, 0x8B232228,
|
||||
0x0009B069, 0x600CA021, 0x6260D67C, 0x8B1B2228,
|
||||
0x0009B0C7, 0x600CA019, 0x6260D678, 0x8B132228,
|
||||
0x0009B0CD, 0x600CA011, 0x6260D674, 0x8B0B2228,
|
||||
0x0009B125, 0x600CA009, 0x6260D670, 0x8B032228,
|
||||
0x0009B13D, 0x600CA001, 0x4F26E000, 0x0009000B,
|
||||
0xD26CD16B, 0xD56C8412, 0x4000C90F, 0xD76B012D,
|
||||
0xE403D66B, 0xE20F611C, 0x2540E001, 0x25202712,
|
||||
0x2602000B, 0xE601D262, 0x30668523, 0xE0008D05,
|
||||
0xD663D260, 0xE0018122, 0x000B2602, 0xD25C0009,
|
||||
0x600D8523, 0x89052008, 0x8B0A8801, 0x6060D65D,
|
||||
0x2600CB01, 0xD457D65A, 0xE001E101, 0x000B2612,
|
||||
0x000B8142, 0xD152E000, 0x8513E501, 0x640D4518,
|
||||
0x66033453, 0xE0008D05, 0xD551D253, 0x2260E001,
|
||||
0x000B2502, 0x4F220009, 0x8513D149, 0x6453650D,
|
||||
0x62494419, 0x227D672E, 0x8801602C, 0x88028909,
|
||||
0x88038910, 0x8806891A, 0x88078935, 0xA04C893B,
|
||||
0xD5460009, 0x6652D746, 0x2762D446, 0x622C6261,
|
||||
0x2421A038, 0x2228625C, 0xD4438B3F, 0x6642D540,
|
||||
0x2562D440, 0x24018561, 0x6203A02C, 0x2008605C,
|
||||
0x88108907, 0x88208908, 0x88308909, 0xA02C890A,
|
||||
0xD23A0009, 0x6222A008, 0xA005D239, 0xD2396222,
|
||||
0x6222A002, 0x6262D638, 0xD432D531, 0x66212522,
|
||||
0xA00F626C, 0xD6352421, 0x6261D52D, 0x622CD42D,
|
||||
0xA0072562, 0xD6322421, 0x8561D529, 0x2562D429,
|
||||
0x62032401, 0x662D8515, 0x3617610D, 0x65038F01,
|
||||
0xB0CB2451, 0xA0010009, 0xE000E001, 0x000B4F26,
|
||||
0xD6190009, 0xD427E101, 0x65412610, 0xD118D717,
|
||||
0xE20F655D, 0x2752E001, 0x000B2620, 0x2FE62102,
|
||||
0xD20F4F22, 0x640C8523, 0x8B082448, 0xD511D61D,
|
||||
0x2621E200, 0x940F8451, 0xA0482049, 0xDE0D8051,
|
||||
0xC84060E0, 0xE2018D32, 0x89443427, 0xD216D615,
|
||||
0x2641420B, 0x0009A030, 0x0000FF7F, 0x00116591,
|
||||
0x00116548, 0x00116554, 0x001E1100, 0x001E100C,
|
||||
0x00116574, 0x001E1000, 0x001E1001, 0x0011657C,
|
||||
0x0011655C, 0x00116560, 0x00116564, 0x00116580,
|
||||
0x00116584, 0x00116588, 0x0011658C, 0x00116774,
|
||||
0x0011677E, 0x0011656E, 0x00115DCA, 0x89123427,
|
||||
0xD294D693, 0x2641420B, 0xCB8084E1, 0x80E1B0F5,
|
||||
0xD69160E0, 0x2E00CB04, 0xC93F6060, 0xD68F2600,
|
||||
0xA001E001, 0xE0002602, 0x000B4F26, 0xD68C6EF6,
|
||||
0xC8806060, 0xD2868919, 0x88016021, 0xD2898B15,
|
||||
0x8524E501, 0x89103056, 0xE203D187, 0x2120D487,
|
||||
0xE00B6541, 0x0656655D, 0xE40FD585, 0x2140E702,
|
||||
0xD77E2571, 0x000BE001, 0x000B2702, 0x2FE6E000,
|
||||
0xDE804F22, 0xC88084E1, 0xD57A892C, 0x20088554,
|
||||
0x61038F28, 0x8553D77C, 0x64036672, 0x8566650C,
|
||||
0x3520620C, 0xD6798B1E, 0x651CD774, 0x2651644C,
|
||||
0x60E02741, 0x8904C840, 0x420BD275, 0xA0030009,
|
||||
0xD2680009, 0x0009420B, 0x0009B09F, 0xE201D167,
|
||||
0x60E02122, 0xCB04D464, 0x60402E00, 0x2400C93F,
|
||||
0x6023A001, 0x4F26E000, 0x6EF6000B, 0x2FB62FA6,
|
||||
0x2FD62FC6, 0xDA622FE6, 0x66A1E240, 0x3622DC5E,
|
||||
0x62638900, 0x6ED36D2C, 0x4E2136D8, 0x4E212A61,
|
||||
0xDB61D460, 0xE700A00F, 0x770162B2, 0x71026123,
|
||||
0x66212B12, 0x71026213, 0x61212B12, 0x651D666D,
|
||||
0x356C4528, 0x627C2452, 0x8BED32E3, 0xC90360D3,
|
||||
0x8B108803, 0x617367B2, 0x2B127102, 0x71026E13,
|
||||
0x2B126571, 0x655D6DE1, 0x422862DD, 0x325CE107,
|
||||
0xA00C2C10, 0x88022422, 0xA0038B01, 0x8801E203,
|
||||
0xE2018B05, 0x66B22C20, 0x655D6561, 0xE60F2452,
|
||||
0x67A12C60, 0x8B052778, 0xDD38DC44, 0xEB01EA00,
|
||||
0x2DB22CA2, 0x6DF66EF6, 0x6BF66CF6, 0x6AF6000B,
|
||||
0x2FE62FD6, 0xE240DD36, 0x362266D1, 0x62638900,
|
||||
0x3678672C, 0x7703DE38, 0x47212D61, 0x64E2D635,
|
||||
0xA00E4721, 0x6562E100, 0x62537101, 0x74012450,
|
||||
0x24204219, 0x45297401, 0x74012450, 0x24504519,
|
||||
0x621C7401, 0x8BEE3273, 0x66E24200, 0x420061D1,
|
||||
0x2118362C, 0x2E628F06, 0xDD1CD728, 0xE501E400,
|
||||
0x2D522742, 0x000B6EF6, 0x2FD66DF6, 0x4F222FE6,
|
||||
0xED0AEE01, 0x64E3BC97, 0xBC9C64E3, 0x62EC7E01,
|
||||
0x8BF732D7, 0xBC9FEE01, 0x64E364E3, 0x7E01BCA4,
|
||||
0x32D762EC, 0x4F268BF7, 0x000B6EF6, 0xD1186DF6,
|
||||
0xD418920D, 0x72122122, 0x2422D617, 0xD7177204,
|
||||
0x72202622, 0x2722D116, 0x000B7230, 0x137A2122,
|
||||
0x0011656E, 0x00115ED6, 0x001E1015, 0x00116574,
|
||||
0x001E1001, 0x00116548, 0x001E1100, 0x00116572,
|
||||
0x00116560, 0x001E1000, 0x00116564, 0x00116570,
|
||||
0x00115DCA, 0x001E100C, 0x0011655C, 0x00116578,
|
||||
0x0011657C, 0x00116580, 0x00116584, 0x00116588,
|
||||
0x0011658C, 0x4F222FE6, 0xD6507FFC, 0x88016060,
|
||||
0xE2018951, 0x2620BFBB, 0xD54ED14D, 0xDE4E6010,
|
||||
0x64E36552, 0x7402C840, 0x8D22D14C, 0xD24C7502,
|
||||
0xE601D74C, 0xE7042722, 0x76016255, 0x626C2421,
|
||||
0x8FF93273, 0xD4437402, 0x6242E601, 0x640D8528,
|
||||
0x67494419, 0x275D657E, 0x81E4607C, 0xE417D542,
|
||||
0x67557601, 0x3243626C, 0x8FF92171, 0xA0207102,
|
||||
0xD23E0009, 0xE601D73B, 0xE7042722, 0x76016255,
|
||||
0x626C2421, 0x8FF93273, 0xD4327402, 0x6242E601,
|
||||
0x640D8528, 0x67494419, 0x275D657E, 0x81E4607C,
|
||||
0xE417D533, 0x67557601, 0x3243626C, 0x8FF92171,
|
||||
0x924A7102, 0xD2262E21, 0x5E23D72E, 0x64F22FE2,
|
||||
0x604365F2, 0x2700C980, 0xC9606043, 0x80716103,
|
||||
0xC9036043, 0x80724519, 0x65F2605C, 0x817266F2,
|
||||
0x46194629, 0x606C4529, 0x4018645C, 0x8173304C,
|
||||
0x21185E23, 0x64F22FE2, 0x6E4C62F2, 0x602C4219,
|
||||
0x66F262F2, 0x46294018, 0x461930EC, 0x42298174,
|
||||
0x652C606C, 0x305C4018, 0x81758F07, 0x0009BC9D,
|
||||
0x2228620C, 0xA00A8908, 0x60130009, 0x8B038840,
|
||||
0x0009B009, 0x0009A003, 0xE202D60F, 0x7F042622,
|
||||
0x000B4F26, 0x000B6EF6, 0x060A0009, 0x00116590,
|
||||
0x001E1000, 0x0011657C, 0x00116774, 0x00116780,
|
||||
0x00116718, 0x00116564, 0x00116748, 0x00116746,
|
||||
0x0011671A, 0x00116548, 0x00116574, 0x4F222FE6,
|
||||
0x84E9DE8E, 0x2448640C, 0xB18B8901, 0xD28C0009,
|
||||
0x26686620, 0x60E08902, 0x2E00C9BF, 0x000B4F26,
|
||||
0x000B6EF6, 0x2FE60009, 0xDE864F22, 0x60E0D686,
|
||||
0xCBC0D486, 0x62602E00, 0xC803602C, 0x40218904,
|
||||
0x70014021, 0x6603A002, 0x66034009, 0xD680616D,
|
||||
0xE500A004, 0x75016262, 0x74042422, 0x3213625D,
|
||||
0xD27C8BF8, 0x0009420B, 0xC9BF84E2, 0x4F2680E2,
|
||||
0x6EF6000B, 0x2FE62FD6, 0x7FFC4F22, 0x6260D676,
|
||||
0x89402228, 0xD56DE100, 0x60502610, 0xCB40D473,
|
||||
0x2500440B, 0x8D052008, 0x62E06E03, 0x7104612C,
|
||||
0x2F11A006, 0xD46ED666, 0xDD6E6760, 0x657C4D0B,
|
||||
0xE23C6D1D, 0x8B033D27, 0xD26CD46B, 0x0009420B,
|
||||
0x4D214D21, 0xA005D76A, 0x66E6E400, 0x357C4508,
|
||||
0x74012562, 0x35D3654D, 0xD7668BF7, 0x6E72E003,
|
||||
0x81E14018, 0x6E7260F1, 0x81E2700C, 0xD4626172,
|
||||
0xDD628113, 0x65724D0B, 0xD652D261, 0x2212E101,
|
||||
0xC93F6060, 0x7F042600, 0x6EF64F26, 0x6DF6000B,
|
||||
0x2FC62FB6, 0x2FE62FD6, 0xD25A4F22, 0x6B436E73,
|
||||
0x420B6C53, 0x20086D63, 0x61038F08, 0xD24FD456,
|
||||
0x6EF64F26, 0x6CF66DF6, 0x6BF6422B, 0x21B060C3,
|
||||
0x60D38011, 0xE5008111, 0x64BCA007, 0x6053655D,
|
||||
0x665300EC, 0x7501361C, 0x625D8064, 0x8BF53243,
|
||||
0x6060D636, 0x2600C9BF, 0x6EF64F26, 0x6CF66DF6,
|
||||
0x6BF6000B, 0x7FC44F22, 0x720262F3, 0x22512F41,
|
||||
0x45297202, 0x60632251, 0xE5C4E682, 0x67F38121,
|
||||
0x655C666C, 0xE408BFBC, 0x4F267F3C, 0x0009000B,
|
||||
0x2F962F86, 0x2FB62FA6, 0x2FD62FC6, 0x4F222FE6,
|
||||
0xE1007FC4, 0x6513ECFF, 0x6B136CCD, 0xDE34D733,
|
||||
0xEDFF64F3, 0xD833EA04, 0x6053655C, 0x027D4000,
|
||||
0x32C0622D, 0x66038D0D, 0x09ED6063, 0x2491027D,
|
||||
0x24217402, 0x698202ED, 0x3928622D, 0x74022892,
|
||||
0x75017104, 0x6063625C, 0x07D532A2, 0x0EB58FE4,
|
||||
0x2448641C, 0xE6808905, 0x67F3E5C5, 0xBF7F666C,
|
||||
0x7F3C655C, 0x6EF64F26, 0x6CF66DF6, 0x6AF66BF6,
|
||||
0x000B69F6, 0xD11C68F6, 0x6012D21C, 0xCB20E405,
|
||||
0x2102E500, 0x000B2242, 0x00002252, 0x001E1017,
|
||||
0x001164F6, 0x001E1015, 0x001E10BF, 0x00117800,
|
||||
0x001E10FC, 0x001140CC, 0x001164FC, 0x0011602E,
|
||||
0x001166D0, 0x00114F2C, 0x001166EC, 0x00114EBE,
|
||||
0x0011788C, 0x001164F8, 0x001160DC, 0x001145BC,
|
||||
0x001E2130, 0x00115FF0, 0x001166F4, 0x00116510,
|
||||
0x00116518, 0x00116710, 0x001C3500, 0x001D4004,
|
||||
0xD565D164, 0xE400D765, 0x2142E20F, 0x17411154,
|
||||
0xD5632722, 0x9669D763, 0x15412572, 0x96661562,
|
||||
0xE6011565, 0xD5601165, 0x666CE6F8, 0x25422542,
|
||||
0x25422542, 0x25422542, 0x25622542, 0x7601E727,
|
||||
0x67632572, 0x25627797, 0xE7042572, 0x2572E248,
|
||||
0xE2192522, 0xE2702522, 0x25422542, 0x25422542,
|
||||
0x25222542, 0x2522E20C, 0x25422542, 0x25422542,
|
||||
0x25422542, 0x25422542, 0x000B154A, 0xE2081145,
|
||||
0x0009422B, 0x2FE62FD6, 0x7FFC4F22, 0xC8206043,
|
||||
0x6E438D02, 0x0009BE75, 0xC81060E3, 0xBE728901,
|
||||
0x60E30009, 0x8901C840, 0x0009BE94, 0xC80160E3,
|
||||
0xDD3E8938, 0xC80260D0, 0x2F008D03, 0x460BD63C,
|
||||
0x60F00009, 0x8902C804, 0x460BD63A, 0x62F00009,
|
||||
0xC8806023, 0x60D08902, 0x2D00C97F, 0xC8016023,
|
||||
0xD6358906, 0x0009460B, 0x0009A007, 0x51630601,
|
||||
0x8902C808, 0x460BD631, 0x60F00009, 0x8902C810,
|
||||
0x420BD22F, 0xD52F0009, 0x88026052, 0xD22E8B03,
|
||||
0xA005E604, 0x88012260, 0xD22B8B02, 0x2260E601,
|
||||
0x2522E200, 0xC88060E3, 0xD628892E, 0x60E36E60,
|
||||
0x8902C880, 0x420BD226, 0x60E30009, 0x8902C840,
|
||||
0x420BD224, 0x60E30009, 0x8902C802, 0x420BD222,
|
||||
0x60E30009, 0x890EC804, 0x410BD120, 0xBF120009,
|
||||
0xBF4D0009, 0xD51E0009, 0x6050D41E, 0xC908D71E,
|
||||
0xBF842500, 0x60E32472, 0x8905C808, 0x7F04D21B,
|
||||
0x6EF64F26, 0x6DF6422B, 0x4F267F04, 0x000B6EF6,
|
||||
0x00006DF6, 0x001C581C, 0xA000A000, 0x001D0100,
|
||||
0x001D4000, 0x00040021, 0x001C589C, 0x001E1021,
|
||||
0x001150C4, 0x001150E6, 0x00115724, 0x001150FE,
|
||||
0x0011510C, 0x00116574, 0x001E100B, 0x001E1028,
|
||||
0x00115162, 0x0011516E, 0x00115114, 0x00115132,
|
||||
0x001E1000, 0x0010F100, 0x12345678, 0x0011514A,
|
||||
0x644CD6A7, 0x000B346C, 0xD6A62450, 0x346C644C,
|
||||
0x2450000B, 0x644CD6A4, 0x000B346C, 0x625C2450,
|
||||
0x4208616D, 0x42084119, 0x42006019, 0x670E614C,
|
||||
0xD49E321C, 0x4200207D, 0x324CC90F, 0x2200000B,
|
||||
0x4208625C, 0x42004208, 0x324C644C, 0x4200D498,
|
||||
0x000B324C, 0x2FE62260, 0x614C4F12, 0x4100D493,
|
||||
0x6710314C, 0xE29F666D, 0x27294619, 0x6E536269,
|
||||
0x672E6573, 0x4221227D, 0x42214221, 0x7601662C,
|
||||
0xE4014608, 0x34E84608, 0x644C4600, 0x071A0467,
|
||||
0x2150257B, 0x000B4F16, 0x4F226EF6, 0xD2857FE8,
|
||||
0x88016021, 0xD2848B7B, 0x26686621, 0xD2838B77,
|
||||
0x26686621, 0xE50F8B73, 0xE401BFA2, 0xBFA4E501,
|
||||
0xE586E400, 0xE400655C, 0x2F50BFA4, 0xBFA1E401,
|
||||
0xE602E506, 0x60634618, 0x81F2E401, 0x6543BF9F,
|
||||
0xE40185F2, 0xBFAB6543, 0x85F26603, 0x6543E401,
|
||||
0x6603BFB1, 0xE40265F0, 0x6053756C, 0x80F8BF80,
|
||||
0xBF82E402, 0x84F8E512, 0x7090E402, 0x6503BF82,
|
||||
0x4618E602, 0x81F66063, 0xBF80E402, 0x85F6E500,
|
||||
0x6603E402, 0xE500BF8C, 0xE40285F6, 0xBF926603,
|
||||
0xE5FEE500, 0xE010655C, 0xBF61E403, 0xE5130F54,
|
||||
0xE40EBF63, 0x05FCE010, 0xBF63E40E, 0xE5007585,
|
||||
0xBF64E403, 0xE500E640, 0xBF71E403, 0xE500E640,
|
||||
0xBF78E403, 0xE5FFE640, 0xE014655C, 0xBF47E404,
|
||||
0xE40F0F54, 0xE504BF49, 0x05FCE014, 0xBF49E40F,
|
||||
0xE5017584, 0xBF4AE640, 0xE501E404, 0xBF57E640,
|
||||
0xE501E404, 0xE404E640, 0xAF5C7F18, 0x7F184F26,
|
||||
0x000B4F26, 0x4F220009, 0xD2427FF0, 0x88016021,
|
||||
0xD2418B71, 0x26686621, 0xD2408B6D, 0x26686621,
|
||||
0xE50F8B69, 0xE401BF1C, 0xBF1EE501, 0xE586E400,
|
||||
0xE400655C, 0x2F50BF1E, 0xBF1BE401, 0xE401E506,
|
||||
0xBF1C6543, 0xE401E640, 0xBF296543, 0xE401E640,
|
||||
0xBF306543, 0x65F0E640, 0x756CE402, 0xBEFF6053,
|
||||
0xE40280F4, 0xE512BF01, 0xE40284F4, 0xBF017090,
|
||||
0xE6406503, 0xBF02E402, 0xE640E500, 0xBF0FE402,
|
||||
0xE640E500, 0xBF16E402, 0xE5FEE500, 0x6053655C,
|
||||
0xBEE5E403, 0xE51380F8, 0xE40EBEE7, 0xE40E84F8,
|
||||
0xBEE77085, 0xE5006503, 0xBEE8E640, 0xE500E403,
|
||||
0xBEF5E640, 0xE500E403, 0xBEFCE640, 0xE5FFE403,
|
||||
0x6053655C, 0xBECBE404, 0xE40F80FC, 0xE504BECD,
|
||||
0xE40F84FC, 0xBECD7083, 0xE5016503, 0xBECEE640,
|
||||
0xE501E404, 0xBEDBE640, 0xE501E404, 0xE404E640,
|
||||
0xAEE07F10, 0x7F104F26, 0x000B4F26, 0x00000009,
|
||||
0x001E102F, 0x001E1080, 0x001E1090, 0x001E103F,
|
||||
0x001E103E, 0x0011656E, 0x00116570, 0x00116572,
|
||||
0xD21DD11C, 0x66206010, 0x676C7001, 0x3700C90F,
|
||||
0xE5008D13, 0x67106210, 0x7701622C, 0x64232170,
|
||||
0xD6166010, 0x44084408, 0x3428C90F, 0x62602100,
|
||||
0x7201D513, 0x44082620, 0x000B354C, 0xD10F6053,
|
||||
0x25586510, 0xE6008D13, 0xD60DD40B, 0x655C6540,
|
||||
0x47086753, 0x37584708, 0x47086540, 0x24507501,
|
||||
0x367C6040, 0x2400C90F, 0x72FF6210, 0x000B2120,
|
||||
0x00006063, 0x001164F5, 0x001164F4, 0x001164F6,
|
||||
0x0011611C, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x544F0D0A, 0x53205355, 0x46204950,
|
||||
0x00003A57, 0x2074634F, 0x32203220, 0x20373030,
|
||||
0x333A3831, 0x36343A32, 0x00000000, 0x00000D0A,
|
||||
0x42707372, 0x3D206675, 0x554E203D, 0x202C4C4C,
|
||||
0x6E49677A, 0x4E497274, 0x6D754E51, 0x0000003D,
|
||||
0x52504545, 0x57204D4F, 0x65746972, 0x6461202C,
|
||||
0x003D7264, 0x6C617620, 0x0000003D, 0x00000A0D,
|
||||
0x5A205746, 0x4D435F4D, 0x4C465F44, 0x5F485341,
|
||||
0x53415245, 0x000A0D45, 0x5A205746, 0x4D435F4D,
|
||||
0x4C465F44, 0x5F485341, 0x534B4843, 0x0A0D4D55,
|
||||
0x00000000, 0x2D495053, 0x72646461, 0x0000003D,
|
||||
0x2D495053, 0x676E656C, 0x003D6874, 0x2D495053,
|
||||
0x736B6863, 0x003D6D75, 0x5A205746, 0x4D435F4D,
|
||||
0x4C465F44, 0x5F485341, 0x44414552, 0x00000A0D,
|
||||
0x61202072, 0x3D726464, 0x00000000, 0x72202020,
|
||||
0x75427073, 0x00003D66, 0x6E6B6E55, 0x206E776F,
|
||||
0x6D6D6F63, 0x3D646E61, 0x00000000, 0x00000072,
|
||||
0x00205220, 0x00000D0A, 0x62735576, 0x7473725F,
|
||||
0x00000A0D, 0x62735576, 0x7375735F, 0x646E6570,
|
||||
0x00000A0D, 0x62735576, 0x7365725F, 0x000A0D6D,
|
||||
0x72746E49, 0x6D652051, 0x2C797470, 0x49677A20,
|
||||
0x4972746E, 0x754E514E, 0x00003D6D, 0x654C7245,
|
||||
0x0000006E, 0x20746F4E, 0x756F6E65, 0x49206867,
|
||||
0x4220514E, 0x0A0D6675, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x002E0209, 0x80000101,
|
||||
0x000409FA, 0x00FF0400, 0x05070000, 0x02000201,
|
||||
0x82050700, 0x00020002, 0x03830507, 0x07010040,
|
||||
0x40020405, 0x02090000, 0x0101002E, 0x09FA8000,
|
||||
0x04000004, 0x000000FF, 0x02010507, 0x07000040,
|
||||
0x40028205, 0x05070000, 0x00400383, 0x04050701,
|
||||
0x00004002, 0x00000000, 0x00000000, 0x07090000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, };
|
||||
|
||||
const u32_t zcFwImageSPISize=10156;
|
1017
drivers/staging/otus/hal/hpfwu.c
Normal file
1017
drivers/staging/otus/hal/hpfwu.c
Normal file
File diff suppressed because it is too large
Load diff
742
drivers/staging/otus/hal/hpfwu.c.drv_ba_resend
Normal file
742
drivers/staging/otus/hal/hpfwu.c.drv_ba_resend
Normal file
|
@ -0,0 +1,742 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
#include "cprecomp.h"
|
||||
|
||||
const u32_t zcFwImage[] = {
|
||||
0x0009000B, 0x4F222FE6, 0xDE297FFC, 0xE114D729,
|
||||
0x1E13D429, 0x1E4C470B, 0x0009B018, 0xA0039545,
|
||||
0x3652E600, 0x76018D04, 0xC84060E2, 0x2F028DF9,
|
||||
0xDE23D422, 0x00094E0B, 0x4E0BD422, 0xD4220009,
|
||||
0x00094E0B, 0x4F267F04, 0x6EF6A024, 0xD11F4F22,
|
||||
0x0009410B, 0x440BD41E, 0xD51E0009, 0x0009450B,
|
||||
0xE1FFD71D, 0xD21D611D, 0x50292712, 0xCB01D41C,
|
||||
0xE501E1FF, 0x22121209, 0x24521211, 0xD61AD519,
|
||||
0xE2009714, 0xD4192572, 0xD6192620, 0x4F262422,
|
||||
0x2622000B, 0xDD18DC17, 0x4C0BDE18, 0x4D0B0009,
|
||||
0x4E0B0009, 0xAFF80009, 0x27100009, 0x00000640,
|
||||
0x001C001C, 0x00200BC4, 0x0000B38E, 0x002029F8,
|
||||
0x00200F72, 0x00202A04, 0x00202A1C, 0x00200F20,
|
||||
0x00201056, 0x00200C1C, 0x001C3510, 0x001C3624,
|
||||
0x001E212C, 0x00202994, 0x00202530, 0x0020299C,
|
||||
0x002029A8, 0x00200E50, 0x002023E6, 0x00201920,
|
||||
0x2FC62F96, 0x2FE62FD6, 0x7F904F22, 0xE020DE8D,
|
||||
0xD48D61E0, 0x61E30F14, 0x62107101, 0xE024D78B,
|
||||
0x0F24470B, 0x450BD58A, 0x20080009, 0x8F116D03,
|
||||
0xDD881F0A, 0x67D0D488, 0x410BD188, 0xD288657C,
|
||||
0x6920DD88, 0x66C36C9C, 0x46084608, 0x460836C8,
|
||||
0x1FDA3D6C, 0x04FCE024, 0x66E2E580, 0x655C604C,
|
||||
0x8F163050, 0xE0202D62, 0xE50001FC, 0xDE7E641C,
|
||||
0x3243625D, 0xA32C8B01, 0x655D0009, 0x36EC6653,
|
||||
0xE02C6760, 0x69530F74, 0x39DC607E, 0xAFEF8094,
|
||||
0x20087501, 0xE0208B14, 0xE50001FC, 0xA00ADE72,
|
||||
0x655D641C, 0x39EC6953, 0x67536C92, 0x37DC62C2,
|
||||
0x75041721, 0x625D1F2C, 0x8BF23243, 0x2D10A309,
|
||||
0x8B178801, 0x01FCE020, 0x2D70E700, 0x1FD76D1C,
|
||||
0x627DDE65, 0x8B0132D3, 0x0009A2FB, 0x65E3677D,
|
||||
0x75046673, 0x36EC6C73, 0x64623C5C, 0x770869C2,
|
||||
0x2492AFEF, 0x8B188804, 0x01FCE020, 0x2D40E400,
|
||||
0xDE59671C, 0x3273624D, 0xA2E28B01, 0x644D0009,
|
||||
0x6CE36D43, 0x65D23DEC, 0x61437C04, 0x621231CC,
|
||||
0x74086952, 0xAFED2929, 0x88052592, 0xE0208B18,
|
||||
0xE40001FC, 0x671C2D40, 0x624DDE4B, 0x8B013273,
|
||||
0x0009A2C7, 0x6943644D, 0x39EC61E3, 0x71046592,
|
||||
0x3C1C6C43, 0x6D5262C2, 0x2D2B7408, 0x25D2AFED,
|
||||
0x8B1B8831, 0xD942D241, 0x72046422, 0x72046622,
|
||||
0x72046722, 0x72E86C22, 0x1F2E1F4D, 0x72046422,
|
||||
0x72046E22, 0x652229E0, 0x2950D93A, 0xDE3A2FC6,
|
||||
0x55FE4E0B, 0xE2007F04, 0x2D20A29B, 0x8B1D8830,
|
||||
0xDE33D232, 0x72046522, 0x72046122, 0x72046722,
|
||||
0x72E86922, 0x72046422, 0x72046C22, 0x6E222EC0,
|
||||
0x1F9FD62C, 0x7FFC26E0, 0x09FEE040, 0x2F92DC2B,
|
||||
0x66134C0B, 0xE2007F04, 0x2D20A27B, 0x89018828,
|
||||
0x0009A109, 0xE143DE20, 0xE04062E1, 0x3617662D,
|
||||
0x0FE68F03, 0x660302FE, 0x36172201, 0xA0F38B01,
|
||||
0xE0400009, 0xE50104FE, 0x30568541, 0xA0EB8B01,
|
||||
0xE0400009, 0x09FEE701, 0xB2612D70, 0xE0406491,
|
||||
0xE1430CFE, 0xE06862C1, 0x3517652D, 0x0F568D68,
|
||||
0x3563E640, 0xE6008B24, 0x0F65E048, 0xA02EE11A,
|
||||
0x000072C0, 0x00117800, 0x00202A20, 0x00200F72,
|
||||
0x00201FDC, 0x002029B0, 0x00202A24, 0x00200FBC,
|
||||
0x002029AF, 0x002025D4, 0x00117804, 0x00117810,
|
||||
0x002029AC, 0x002029AD, 0x00200948, 0x00200994,
|
||||
0x41216153, 0x41214121, 0x41214121, 0x45214521,
|
||||
0x60534521, 0x6603C903, 0x0F65E048, 0xE0077118,
|
||||
0xE0442209, 0x641D0F25, 0x65F3E04C, 0x0F46B291,
|
||||
0x0EFDE048, 0x0DFDE044, 0x61DD67ED, 0x41084708,
|
||||
0x0F16E050, 0xDD946073, 0x4D0B06FE, 0x6E07E00F,
|
||||
0x607326E9, 0xE0400F66, 0x65F30CFE, 0x690D85C2,
|
||||
0x01FEE050, 0x60934D0B, 0x6073260B, 0xE04C0F66,
|
||||
0x04FEB256, 0x07FEE040, 0x6271E068, 0x0F56652D,
|
||||
0x3563E640, 0xED008954, 0x0FD5E064, 0xC9036023,
|
||||
0x40004008, 0x61036903, 0x0F96E054, 0xDE7EE058,
|
||||
0x0FF6ECFF, 0xE06C6CCC, 0x60C30FE6, 0x62534E0B,
|
||||
0x42214221, 0x42214221, 0x42006723, 0x6107327C,
|
||||
0x4200E05C, 0x0F164521, 0x4521E040, 0x60530CFE,
|
||||
0x4008C903, 0x7C0630FC, 0x6E031FC6, 0x1FD56D2D,
|
||||
0x1F04A01E, 0x0FD6E060, 0x05FEE058, 0x64D3B231,
|
||||
0x62E2E05C, 0xE05409FE, 0x2E222299, 0x64D361C4,
|
||||
0x01FE661C, 0x07FEE06C, 0x6063470B, 0xE058220B,
|
||||
0xB20505FE, 0xE0642E22, 0x7D0102FD, 0x0F257201,
|
||||
0x02FDE064, 0x3262E606, 0xE0408BDC, 0x626106FE,
|
||||
0x05FEE040, 0x85514200, 0x302C750C, 0x6103701B,
|
||||
0x64F3E600, 0xE704A004, 0x76016256, 0x74042422,
|
||||
0x3273626D, 0x65F38BF8, 0x641DB1E2, 0x06FEE040,
|
||||
0x6461B19E, 0x0009A175, 0xD74DD44C, 0x470BE201,
|
||||
0xA16E2D20, 0x88290009, 0xDE4A8B07, 0x2D20E200,
|
||||
0xB16D66E2, 0xA164646D, 0xE2810009, 0x3020622C,
|
||||
0xA0A78B01, 0xE0240009, 0x626C06FC, 0x666CE682,
|
||||
0x8B213260, 0xE42452FA, 0xD43F2240, 0x12615647,
|
||||
0x12625648, 0x12635649, 0x1264564A, 0x1265564B,
|
||||
0x1266564C, 0x1267564D, 0x1268564E, 0x1269564F,
|
||||
0x1427E200, 0x14291428, 0x142B142A, 0x142D142C,
|
||||
0x142F142E, 0x1F6CA135, 0x666CE683, 0x8B073260,
|
||||
0xE60052FA, 0xD22B2260, 0x6222D62C, 0x2622A129,
|
||||
0x666CE690, 0x8B183260, 0xE60052FA, 0xD2282260,
|
||||
0x6022E605, 0x2202CB20, 0x2262D226, 0x2262E600,
|
||||
0x460BD625, 0xD2250009, 0x0009420B, 0xE601D224,
|
||||
0xD2242262, 0xA10C4618, 0xE6B02262, 0x3260666C,
|
||||
0xD5188B22, 0xD216D420, 0x75046D52, 0x6E52420B,
|
||||
0x420BD21E, 0xD41E64D3, 0x450BD511, 0xD21B0009,
|
||||
0x64E3420B, 0xD60ED41B, 0x0009460B, 0xE600E504,
|
||||
0x3253626D, 0xA0EC8B01, 0x666D0009, 0x326C62D3,
|
||||
0x22E07601, 0x4E19AFF4, 0xD214D413, 0xD4146542,
|
||||
0x0009420B, 0x0009A0DD, 0x0020248C, 0x00202A44,
|
||||
0x00200F72, 0x00117804, 0x00202538, 0x00202994,
|
||||
0x001C3500, 0x001D4004, 0x00201056, 0x00200C1C,
|
||||
0x001E212C, 0x001C3D30, 0x00202A5C, 0x00200FB4,
|
||||
0x00202A70, 0x00202A78, 0x00117800, 0x00200FBC,
|
||||
0x00202A7C, 0xD6AED4AD, 0x6262E040, 0x76046542,
|
||||
0x2452352C, 0x62626563, 0x75045641, 0x1461362C,
|
||||
0x62526653, 0x76085542, 0x1452352C, 0x55436262,
|
||||
0x352C76EC, 0x65631453, 0x56446262, 0x362C7510,
|
||||
0x66531464, 0x55456252, 0x352C7610, 0x65621455,
|
||||
0xD69C5246, 0x1426325C, 0x55476262, 0x352C7604,
|
||||
0x62621457, 0x76045548, 0x1458352C, 0x62626563,
|
||||
0x75045649, 0x1469362C, 0x564A6252, 0x362C7504,
|
||||
0x6653146A, 0x554B6252, 0x352C7604, 0x6262145B,
|
||||
0x7604554C, 0x145C352C, 0x62626563, 0x7504564D,
|
||||
0x146D362C, 0x62526653, 0x7604554E, 0x145E352C,
|
||||
0x524F6562, 0x325CD684, 0x6262142F, 0x7694054E,
|
||||
0x0456352C, 0x6263E044, 0x054E6662, 0x356C7244,
|
||||
0xE0480456, 0x054E6622, 0xD67C356C, 0x62620456,
|
||||
0x054EE054, 0x352C4229, 0x76040456, 0xE0586262,
|
||||
0x4229064E, 0x52FA362C, 0xE6380466, 0xE0442260,
|
||||
0xE048064E, 0x66421261, 0x56411262, 0x56421263,
|
||||
0x56451264, 0x56431265, 0x56461266, 0x064E1267,
|
||||
0x1268E040, 0xE050064E, 0x56441269, 0x064E126A,
|
||||
0x126BE04C, 0xE054064E, 0x064E126C, 0x126DE058,
|
||||
0xE044064E, 0xE200126E, 0xE0480426, 0x14212422,
|
||||
0x14251422, 0x14261423, 0xE0400426, 0xE0500426,
|
||||
0x04261424, 0x0426E04C, 0x0426E054, 0x0426E058,
|
||||
0x7F701F6C, 0x6EF64F26, 0x6CF66DF6, 0x69F6000B,
|
||||
0x614D4F22, 0x3123E240, 0xE21F8917, 0x89083127,
|
||||
0xD550D44F, 0x450BE001, 0x67076642, 0xA00C2679,
|
||||
0xE23F2462, 0x89083127, 0xD64AD749, 0xE00171E0,
|
||||
0x5571460B, 0x25296207, 0x4F261751, 0x0009000B,
|
||||
0x614D4F22, 0x3123E240, 0xE21F8915, 0x89073127,
|
||||
0xD240D43F, 0x420B6642, 0x260BE001, 0x2462A00B,
|
||||
0x3127E23F, 0xD73A8907, 0x5571D63A, 0x460B71E0,
|
||||
0x250BE001, 0x4F261751, 0x0009000B, 0x4618E640,
|
||||
0xD5354628, 0x22686252, 0x000B89FC, 0xE6800009,
|
||||
0x46284618, 0x6252D530, 0x89FC2268, 0x0009000B,
|
||||
0xE200A001, 0x32427201, 0x000B8BFC, 0xE6800009,
|
||||
0x46284618, 0x6252D529, 0x8BFC2268, 0x0009000B,
|
||||
0x4F222FE6, 0x6E537FFC, 0x2F42BFF1, 0xD62461E2,
|
||||
0x1615E280, 0x421854E1, 0x55E21646, 0x16574228,
|
||||
0x6EF257E3, 0x2E2B1678, 0x7F0426E2, 0xAFCE4F26,
|
||||
0x2FC66EF6, 0x2FE62FD6, 0xDD194F22, 0xBFD66C53,
|
||||
0xBFBB6E43, 0xBFD22DE2, 0x51D50009, 0x54D62C12,
|
||||
0x55D71C41, 0x56D81C52, 0x4F261C63, 0x6DF66EF6,
|
||||
0x6CF6000B, 0xE6006163, 0x4109A004, 0x76016256,
|
||||
0x74042422, 0x8BF93612, 0x0009000B, 0x00202538,
|
||||
0x001C36A0, 0x001C3CA0, 0x001C36F4, 0x001C3B88,
|
||||
0x001C3704, 0x0020248C, 0x001C373C, 0x001C3700,
|
||||
0x001C370C, 0x0009A109, 0x2FD62FC6, 0x4F222FE6,
|
||||
0x6E636D73, 0x6C53B016, 0x64C357F4, 0xB02965E3,
|
||||
0xB03D66D3, 0xB06D0009, 0xB0710009, 0xB0750009,
|
||||
0xB08A0009, 0xB08D0009, 0x4F260009, 0x6DF66EF6,
|
||||
0x6CF6A0B4, 0x3412D190, 0xD6900529, 0x2650D790,
|
||||
0x2742000B, 0x2FD62FC6, 0x4F222FE6, 0x6E636D73,
|
||||
0x6C53BFF0, 0x64C357F4, 0x66D365E3, 0x6EF64F26,
|
||||
0x6CF66DF6, 0xD1872FE6, 0x66126E63, 0x92BC4418,
|
||||
0x44084528, 0x45002629, 0x265B4408, 0x264B4400,
|
||||
0x21624708, 0xD1804708, 0x217227EB, 0x6EF6000B,
|
||||
0x4F222FE6, 0xE101DE7D, 0xBFABE40A, 0x62E32E12,
|
||||
0xE100726C, 0x2212E401, 0x22122212, 0x22122212,
|
||||
0x22422212, 0xE503E730, 0x2212E40A, 0x22122212,
|
||||
0x22122212, 0x22122212, 0x22122212, 0x22122212,
|
||||
0x22722212, 0x22122252, 0x22122212, 0x22122212,
|
||||
0x22122212, 0xBF852212, 0xE600121A, 0x4F262E62,
|
||||
0x6EF6000B, 0xE101D266, 0x2212E441, 0x2242000B,
|
||||
0xD465D164, 0x2162E605, 0x2462000B, 0xD264D563,
|
||||
0x88016050, 0xD4638B07, 0x60409668, 0x8B098801,
|
||||
0xA0079665, 0xE6000009, 0x2262D45E, 0x88016040,
|
||||
0xE6048B00, 0xAF5DE40A, 0xD25B2262, 0xE40AE601,
|
||||
0x2262AF58, 0x2FC62FB6, 0x2FE62FD6, 0xDC574F22,
|
||||
0x60C2ED00, 0xCB01EB64, 0x60C22C02, 0xA008C901,
|
||||
0x3DB26E03, 0x60C28907, 0xC901E40A, 0x6E03BF42,
|
||||
0x2EE87D01, 0x3DB28BF5, 0xD44D8B03, 0x420BD24D,
|
||||
0xE40A0009, 0x6EF64F26, 0x6CF66DF6, 0x6BF6AF32,
|
||||
0x8F014411, 0x6043604B, 0x0009000B, 0x2FC62FB6,
|
||||
0x2FE62FD6, 0x7FFC4F22, 0xED00DC40, 0xEB6460C2,
|
||||
0x2C02CB02, 0x2F0260C2, 0xA009C902, 0x3DB36E03,
|
||||
0x60C28908, 0x2F02E40A, 0xBF13C902, 0x7D016E03,
|
||||
0x8BF42EE8, 0x8B0B3DB3, 0xD236D437, 0x4F267F04,
|
||||
0x6DF66EF6, 0x422B6CF6, 0x1FFF6BF6, 0x03C40340,
|
||||
0x4F267F04, 0x6DF66EF6, 0x000B6CF6, 0xD52F6BF6,
|
||||
0x60525651, 0x000B4628, 0x2FB6306C, 0x2FD62FC6,
|
||||
0x4F222FE6, 0x4F024F12, 0x6E43BFF1, 0xDC286B03,
|
||||
0xBFECDD28, 0x30B80009, 0x060A3C05, 0x46094609,
|
||||
0x3D654601, 0x4209020A, 0x42094209, 0x8BF032E2,
|
||||
0x4F164F06, 0x6EF64F26, 0x6CF66DF6, 0x6BF6000B,
|
||||
0x4F222FE6, 0xE102DE1C, 0xE403E500, 0xBFD42E12,
|
||||
0xE6062E52, 0xE7004618, 0x2E62E403, 0x4F262E72,
|
||||
0x6EF6AFCB, 0x0009000B, 0x0025E720, 0x00202C3C,
|
||||
0x00202998, 0x001C5814, 0x001C59D0, 0x001C5830,
|
||||
0x001C6268, 0x001C59A4, 0x001C639C, 0x002029AD,
|
||||
0x001C5804, 0x002029AC, 0x001C581C, 0x001C5860,
|
||||
0x00202A90, 0x00200F72, 0x00202AA8, 0x001C1040,
|
||||
0xCCCCCCCD, 0x10624DD3, 0x001D4004, 0x2F962F86,
|
||||
0x2FB62FA6, 0x2FD62FC6, 0x4F222FE6, 0xE4007FE0,
|
||||
0x4528E510, 0x67436C43, 0xE108A00F, 0x6043644D,
|
||||
0x0F564008, 0xEE0060C3, 0x815125C1, 0x81538152,
|
||||
0x157315E2, 0x751415E4, 0x624D7401, 0x8BED3213,
|
||||
0xDA7251F1, 0x1A1154F2, 0xD1712A12, 0x56F455F3,
|
||||
0x58F657F5, 0x21421141, 0x11521153, 0x11641165,
|
||||
0x11761177, 0x11881189, 0xD96A6DF2, 0xDB6A52F7,
|
||||
0x29D219D1, 0x2B221B21, 0xD868EB45, 0xE9B8EA50,
|
||||
0x4A084B08, 0xA020699C, 0x6EEDEE00, 0x61E36DE3,
|
||||
0x41084D08, 0x31EC3DEC, 0x41084D08, 0x60C33D8C,
|
||||
0xD75F4108, 0x81D12DC1, 0x410860A3, 0x60C381D2,
|
||||
0xE200317C, 0x81D33492, 0x1D131DD2, 0x8D01D456,
|
||||
0xD4521D24, 0x65D3B03C, 0x64ED7E01, 0x8BDC34B2,
|
||||
0xDB54D14E, 0xD24F6512, 0x1B514529, 0xD14C6412,
|
||||
0x2B72674D, 0xD6506722, 0x1B734729, 0x2FD26922,
|
||||
0x1B82689D, 0x26926912, 0x16A25A12, 0xDA465B14,
|
||||
0x5C1616B4, 0x5D1816C6, 0x6EA216D8, 0x7F2016EA,
|
||||
0x6EF64F26, 0x6CF66DF6, 0x6AF66BF6, 0x000B69F6,
|
||||
0x664268F6, 0xC8036061, 0xE5008D04, 0xC9036061,
|
||||
0x8B038802, 0x65635262, 0x24125124, 0x6053000B,
|
||||
0x2FE62FD6, 0x7FEC4F22, 0x62536E53, 0x6D43E550,
|
||||
0x4508E400, 0xE101A001, 0x60435224, 0x81212211,
|
||||
0x60538123, 0x56E28122, 0x8BF53620, 0x16E4D22F,
|
||||
0xE61464F3, 0x65E3420B, 0xE4FC65E1, 0x2E512549,
|
||||
0x65F361F1, 0x2F112149, 0xD12854D1, 0xE614410B,
|
||||
0x607157D1, 0x2701CB01, 0x7F141DE1, 0x6EF64F26,
|
||||
0x6DF6000B, 0x2FE62FD6, 0x7FEC4F22, 0x66536E53,
|
||||
0x6D43E5FC, 0x20596061, 0x2601CB01, 0x326052E2,
|
||||
0x12E48B06, 0x31E051E2, 0x52D18B04, 0x1E22A002,
|
||||
0x5664AFF0, 0x64F3D215, 0x420BE614, 0x67E165E3,
|
||||
0x2719E1FC, 0x67F12E71, 0x271954D1, 0x65F3D10F,
|
||||
0x410BE614, 0x52D12F71, 0xCB016021, 0x1DE12201,
|
||||
0x4F267F14, 0x000B6EF6, 0x00006DF6, 0x0020259C,
|
||||
0x002025A4, 0x00202594, 0x002025CC, 0x001000A0,
|
||||
0x00101640, 0x001E2108, 0x001C3D00, 0x00200904,
|
||||
0x2FC62FB6, 0x2FE62FD6, 0x7FFC4F22, 0x6022D225,
|
||||
0x8D35C803, 0xDE242F01, 0xDB25DC24, 0xED01A016,
|
||||
0xC9036061, 0x89158801, 0xD122D420, 0x0009410B,
|
||||
0x65035603, 0xC8208561, 0xE0508903, 0x720102BE,
|
||||
0xD21D0B26, 0x64E3420B, 0x21D2D11C, 0x66C252C1,
|
||||
0x8BE53620, 0xDD1AEE01, 0x4E18A00E, 0xC9036061,
|
||||
0x890D8801, 0xD713D416, 0x470BDB16, 0xD4160009,
|
||||
0x65034B0B, 0x21E2D111, 0x66D252D1, 0x8BED3620,
|
||||
0xC80460F1, 0xD2118907, 0x4F267F04, 0x6DF66EF6,
|
||||
0x422B6CF6, 0x7F046BF6, 0x6EF64F26, 0x6CF66DF6,
|
||||
0x6BF6000B, 0x001E2100, 0x002025A4, 0x0020259C,
|
||||
0x00202538, 0x00200D42, 0x00200DC4, 0x001C3D30,
|
||||
0x00202594, 0x00200D60, 0x002025CC, 0x00200100,
|
||||
0xE601D203, 0x1265D503, 0x000B2252, 0x00001266,
|
||||
0x001C1010, 0x0000C34F, 0xD62A7FFC, 0x2642644C,
|
||||
0xC8205066, 0x2F028DFC, 0x7F04000B, 0x2FD62FC6,
|
||||
0x4F222FE6, 0x6D436C53, 0xEE00A004, 0x7E0164D4,
|
||||
0x644CBFEA, 0x8BF93EC2, 0x6EF64F26, 0x000B6DF6,
|
||||
0xA0016CF6, 0x76016643, 0x22286260, 0x36488BFB,
|
||||
0x6563AFE4, 0x62532FE6, 0x67537507, 0xEE0AE108,
|
||||
0xC90F6043, 0x30E24409, 0x44096503, 0xE6378D01,
|
||||
0x365CE630, 0x27604110, 0x77FF8FF2, 0x8028E000,
|
||||
0x6EF6000B, 0xE000000B, 0xE000000B, 0x4F222FE6,
|
||||
0x62537FEC, 0x65F36E43, 0x6423BFDC, 0x64E3BFD1,
|
||||
0x64F3BFCF, 0xBFCCD404, 0x7F140009, 0x000B4F26,
|
||||
0x00006EF6, 0x001C0004, 0x00202AC4, 0xE110D5A1,
|
||||
0xE6406050, 0x2500C9FD, 0xE0FF75E9, 0x80516453,
|
||||
0x80538052, 0x80568055, 0x251075EF, 0xE1EF6250,
|
||||
0x2219E001, 0xE7202520, 0x24608052, 0x2570000B,
|
||||
0xE4FDD595, 0xE7026152, 0x25122149, 0x74016052,
|
||||
0x2502CB01, 0xD1916652, 0x25622649, 0x92C46012,
|
||||
0x2102CB08, 0xC9CF6012, 0x60122102, 0x2102CB03,
|
||||
0x000B1172, 0x4F221123, 0xD78AD589, 0xD48BD28A,
|
||||
0xE600E100, 0x27112511, 0xBFBF2210, 0xAFD72461,
|
||||
0x664C4F26, 0x4600D286, 0x6060362C, 0x000BCB10,
|
||||
0x654C2600, 0x4500D282, 0x6650352C, 0x2619E1EF,
|
||||
0x2560000B, 0xD27F664C, 0x362C4600, 0xCB106060,
|
||||
0x2600000B, 0xD27B654C, 0x352C4500, 0xE1EF6650,
|
||||
0x000B2619, 0x664C2560, 0x4600D275, 0x6060362C,
|
||||
0x000BCB08, 0x654C2600, 0x4500D271, 0x6650352C,
|
||||
0x2619E1F7, 0x2560000B, 0xD26E664C, 0x362C4600,
|
||||
0xCB086060, 0x2600000B, 0xD26A654C, 0x352C4500,
|
||||
0xE1F76650, 0x000B2619, 0x624C2560, 0x4200D664,
|
||||
0x6020326C, 0x4021C908, 0x40214021, 0x600C000B,
|
||||
0xD660624C, 0x326C4200, 0xC9086020, 0x40214021,
|
||||
0x000B4021, 0x644C600C, 0x74FFD15B, 0x6240341C,
|
||||
0x602C000B, 0x644CD159, 0x6240341C, 0x602C000B,
|
||||
0x4F222FE6, 0xE60A655C, 0x8D153567, 0xBFEA6E43,
|
||||
0x640C6453, 0x880160EC, 0xE00F8B02, 0x2409A002,
|
||||
0x44094409, 0xE60A624C, 0x89053263, 0x644CBFE2,
|
||||
0x6023620C, 0x8B00C880, 0x6023E200, 0x000B4F26,
|
||||
0x4F226EF6, 0x6062D646, 0x8B038801, 0x0009B241,
|
||||
0x0009A003, 0xE640D243, 0xD6432260, 0x4F26E200,
|
||||
0x2622000B, 0xD63E4F22, 0x88026062, 0xB28B8B01,
|
||||
0xD63D0009, 0x4F26E200, 0x2622000B, 0xD439D538,
|
||||
0xE701E100, 0x000B2512, 0x0FFF2470, 0xE604D235,
|
||||
0x2260000B, 0xD4354F22, 0x410BD135, 0xD5250009,
|
||||
0x6650E1FD, 0x2619D233, 0x2560E700, 0x000B4F26,
|
||||
0x4F222270, 0xD12ED430, 0x0009410B, 0xE7FBD51D,
|
||||
0x26796650, 0x000B4F26, 0x4F222560, 0xD128D42B,
|
||||
0x0009410B, 0xE7F7D517, 0x26796650, 0x000B4F26,
|
||||
0xD5142560, 0x62509425, 0x000B2249, 0xD5112520,
|
||||
0x6250E4BF, 0x000B2249, 0x4F222520, 0x8522D220,
|
||||
0x2008600D, 0x88018911, 0x8803893C, 0x8805893E,
|
||||
0x88068940, 0x88088946, 0x8809894C, 0x880A8952,
|
||||
0x880B8958, 0xA065895E, 0xB0670009, 0xA0620009,
|
||||
0xFF7F600C, 0x001E1028, 0x001E2148, 0x001E1108,
|
||||
0x002029DC, 0x002029DE, 0x002029E9, 0x002029C0,
|
||||
0x001E103F, 0x001E105F, 0x001E1030, 0x001E1090,
|
||||
0x002029E4, 0x001E100B, 0x002029E0, 0x00202AC8,
|
||||
0x00200F72, 0x002029E8, 0x00202AD4, 0x00202AE4,
|
||||
0x002029B4, 0x0009B04C, 0x600CA035, 0x0009B056,
|
||||
0x600CA031, 0x6260D67C, 0x8B2B2228, 0x0009B062,
|
||||
0x600CA029, 0x6260D678, 0x8B232228, 0x0009B06A,
|
||||
0x600CA021, 0x6260D674, 0x8B1B2228, 0x0009B0B4,
|
||||
0x600CA019, 0x6260D670, 0x8B132228, 0x0009B0BA,
|
||||
0x600CA011, 0x6260D66C, 0x8B0B2228, 0x0009B11A,
|
||||
0x600CA009, 0x6260D668, 0x8B032228, 0x0009B132,
|
||||
0x600CA001, 0x4F26E000, 0x0009000B, 0xD264D163,
|
||||
0xD5648412, 0x4000C90F, 0xD763012D, 0x611CE403,
|
||||
0xD662E20F, 0x27122540, 0xE0012520, 0x2602000B,
|
||||
0xE601D25A, 0x30668523, 0xE0008D06, 0xE000D258,
|
||||
0x8122D65A, 0x2602E001, 0x0009000B, 0x8523D253,
|
||||
0x2008600D, 0x88018905, 0xD6558B0A, 0xCB016060,
|
||||
0xD6522600, 0xE101D44E, 0x2612E001, 0x8142000B,
|
||||
0xE000000B, 0xE501D149, 0x45188513, 0x3453640D,
|
||||
0x8D056603, 0xD24BE000, 0xE001D548, 0x25022260,
|
||||
0x0009000B, 0xD1414F22, 0x650D8513, 0x44196453,
|
||||
0x672E6249, 0x602C227D, 0x89098801, 0x890C8802,
|
||||
0x89108803, 0x89268806, 0x89298807, 0x0009A038,
|
||||
0xD63ED53D, 0xA027E212, 0x625C2652, 0x8B2F2228,
|
||||
0xA01ED63B, 0x605C6262, 0x89052008, 0x89088810,
|
||||
0x890B8820, 0x0009A024, 0xD634D436, 0xA013E204,
|
||||
0xD7352642, 0xE20CD631, 0x2672A00E, 0xD62FD533,
|
||||
0xA009E218, 0xD4322652, 0xE20AD62C, 0x2642A004,
|
||||
0xD62AD230, 0xE22E2622, 0xD42F8515, 0x3277670D,
|
||||
0x8F012421, 0x24516503, 0x0009B0DB, 0xE001A001,
|
||||
0x4F26E000, 0x0009000B, 0xE101D61A, 0x2610D427,
|
||||
0xD7196541, 0x655DD119, 0xE001E20F, 0x26202752,
|
||||
0x2102000B, 0x4F222FE6, 0x8523D210, 0x2448640C,
|
||||
0xD61E8B08, 0xE200D512, 0x84512621, 0x20499412,
|
||||
0x8051A050, 0x60E0DE0E, 0x8D35C840, 0x3427E201,
|
||||
0xD116894C, 0x420BD216, 0xD5162141, 0xCB046052,
|
||||
0x2502A035, 0x0000FF7F, 0x002029E9, 0x002029B4,
|
||||
0x002029C0, 0x001E1100, 0x001E100C, 0x002029E0,
|
||||
0x001E1000, 0x001E1001, 0x00202C40, 0x002029C8,
|
||||
0x002029D0, 0x00202CAE, 0x00202CB2, 0x00202CBE,
|
||||
0x00202CD6, 0x00202CE0, 0x002029CC, 0x002029DA,
|
||||
0x00201DB6, 0x001E1108, 0x89173427, 0xD794D293,
|
||||
0x2241470B, 0xE5FBD693, 0x21596162, 0x84E12612,
|
||||
0xB0FFCB80, 0x60E080E1, 0xCB04D68F, 0x60602E00,
|
||||
0x2600C93F, 0xE001D68D, 0x2602A001, 0x4F26E000,
|
||||
0x6EF6000B, 0x6060D68A, 0x8919C880, 0x6021D283,
|
||||
0x8B158801, 0xE501D287, 0x30568524, 0xD1868910,
|
||||
0xD486E203, 0x65412120, 0x655DE00B, 0xD5840656,
|
||||
0xE702E40F, 0x25712140, 0xE001D77C, 0x2702000B,
|
||||
0xE000000B, 0x4F222FE6, 0x84E1DE7E, 0x8934C880,
|
||||
0x8554D578, 0x8F302008, 0xD77B6103, 0x66728553,
|
||||
0x650C6403, 0x620C8566, 0x8B263520, 0xD773D677,
|
||||
0x644C651C, 0x27412651, 0xC84060E0, 0xD2748907,
|
||||
0x0009420B, 0x6062D667, 0xA008CB04, 0xD1642602,
|
||||
0x0009410B, 0xE5FBD663, 0x24596462, 0xB0A12642,
|
||||
0xD5620009, 0x2522E201, 0xD75F60E0, 0x2E00CB04,
|
||||
0xC93F6070, 0xA0012700, 0xE0006023, 0x000B4F26,
|
||||
0x2FA66EF6, 0x2FC62FB6, 0x2FE62FD6, 0xE240DA5C,
|
||||
0xDC5966A1, 0x3123616D, 0x62638900, 0x6ED36D2C,
|
||||
0x4E2136D8, 0x4E212A61, 0xDB5BD45A, 0xE700A00F,
|
||||
0x770166B2, 0x71026163, 0x65612B12, 0x71026613,
|
||||
0x62612B12, 0x622D655D, 0x325C4228, 0x627C2422,
|
||||
0x8BED32E3, 0xC90360D3, 0x8B108803, 0xED076EB2,
|
||||
0x710261E3, 0x67132B12, 0x62E17102, 0x65712B12,
|
||||
0x655D622D, 0x352C4528, 0xA00C2CD0, 0x88022452,
|
||||
0xA0038B01, 0x8801E203, 0xE2018B05, 0x66B22C20,
|
||||
0x677D6761, 0xEB0F2472, 0x6DA12CB0, 0x8B052DD8,
|
||||
0xD432D23E, 0xE101EE00, 0x241222E2, 0x6DF66EF6,
|
||||
0x6BF66CF6, 0x6AF6000B, 0x2FE62FD6, 0xE240DD30,
|
||||
0x616D66D1, 0x89003123, 0x672C6263, 0xDE323678,
|
||||
0x2D617703, 0xD62F4721, 0x472164E2, 0xE100A00E,
|
||||
0x71016562, 0x24506253, 0x42197401, 0x74012420,
|
||||
0x24504529, 0x45197401, 0x74012450, 0x3273621C,
|
||||
0x42008BEE, 0x64D166E2, 0x362C4200, 0x8F062448,
|
||||
0xDD222E62, 0xE500DE15, 0x2D52E701, 0x6EF62E72,
|
||||
0x6DF6000B, 0x2FE62FD6, 0xEE014F22, 0xED0AA005,
|
||||
0x64E3BC97, 0x64E3BC9D, 0x62EC7E01, 0x8BF732D7,
|
||||
0xEE01A005, 0x64E3BC9E, 0x64E3BCA4, 0x62EC7E01,
|
||||
0x8BF732D7, 0x6EF64F26, 0x6DF6000B, 0x002029DA,
|
||||
0x00201EC2, 0x001E1108, 0x001E1015, 0x002029E0,
|
||||
0x001E1001, 0x002029B4, 0x001E1100, 0x002029DE,
|
||||
0x002029CC, 0x001E1000, 0x002029D0, 0x002029DC,
|
||||
0x00201DB6, 0x001E100C, 0x002029C8, 0x002029E4,
|
||||
0x2FE62FD6, 0x7FFC4F22, 0x6060D64C, 0x89488801,
|
||||
0xE101D44B, 0xD74B8548, 0x650D2610, 0x45196070,
|
||||
0x6659DD49, 0x61D3626E, 0xC840262D, 0x74027102,
|
||||
0x8D1AD746, 0xD246666C, 0xE501DE46, 0xA0042E22,
|
||||
0x6245EE04, 0x21217501, 0x625C7102, 0x8BF832E3,
|
||||
0x81D46063, 0xD540E601, 0x626CE417, 0x891E3243,
|
||||
0x76016255, 0xAFF82721, 0xD23C7702, 0xE501DE39,
|
||||
0xA0042E22, 0x6245EE04, 0x21217501, 0x625C7102,
|
||||
0x8BF832E3, 0x81D46063, 0xD535E601, 0xE417A004,
|
||||
0x76016255, 0x77022721, 0x3243626C, 0x924B8BF8,
|
||||
0xD4302D21, 0x6142D730, 0x65F22F12, 0x60536DF2,
|
||||
0x2700C980, 0xC9606053, 0x80716103, 0x6EF26053,
|
||||
0xC90365F2, 0x45294D19, 0x60DC8072, 0x81724519,
|
||||
0x605C4E29, 0x401862EC, 0x8173302C, 0x21186D42,
|
||||
0x6EF22FD2, 0x66F262F2, 0x46294219, 0x66F2656C,
|
||||
0x64EC602C, 0x46294018, 0x4619304C, 0x606C8174,
|
||||
0x305C4018, 0x81758F07, 0x0009BCBF, 0x2228620C,
|
||||
0xA00A8908, 0x60130009, 0x8B038840, 0x0009B00A,
|
||||
0x0009A003, 0xE202D611, 0x7F042622, 0x6EF64F26,
|
||||
0x6DF6000B, 0x0009000B, 0x0000060A, 0x002029E8,
|
||||
0x00202C40, 0x001E1000, 0x00202CD6, 0x00202CE2,
|
||||
0x00202C52, 0x002029D0, 0x00202C82, 0x00202C80,
|
||||
0x00202C54, 0x001E100C, 0x002029B4, 0x002029E0,
|
||||
0x4F222FE6, 0xDE907FFC, 0x200884E9, 0x2F008D06,
|
||||
0xD68FD48E, 0x0009460B, 0x64F0B146, 0x6620D28D,
|
||||
0x89022668, 0xC9BF60E0, 0x7F042E00, 0x000B4F26,
|
||||
0x000B6EF6, 0x2FE60009, 0xDE874F22, 0x60E0D687,
|
||||
0xCBC0D487, 0x62602E00, 0xC803602C, 0x40218904,
|
||||
0x70014021, 0x6603A002, 0x66034009, 0xD681616D,
|
||||
0xE500A004, 0x75016262, 0x74042422, 0x3213625D,
|
||||
0xD27D8BF8, 0x0009420B, 0xC9BF84E2, 0x4F2680E2,
|
||||
0x6EF6000B, 0x2FD62FC6, 0x4F222FE6, 0xDC727FFC,
|
||||
0x84C2D276, 0xCB40DD76, 0x80C2420B, 0x8D042008,
|
||||
0x62E06E03, 0xA006642C, 0xD66A7404, 0x6160D471,
|
||||
0x470BD771, 0x644D651C, 0x45216543, 0xA0044521,
|
||||
0x62E6E600, 0x2F227601, 0x626D2D22, 0x8BF83253,
|
||||
0xC9036043, 0x89122008, 0x89058803, 0x89068802,
|
||||
0x89078801, 0x0009A008, 0xA005E007, 0xE00380D8,
|
||||
0x80D8A002, 0x80D8E001, 0x2F2262E2, 0xE00F2D22,
|
||||
0x80D8D65E, 0xCB086060, 0x60C02600, 0x2C00C93F,
|
||||
0x4F267F04, 0x6DF66EF6, 0x6CF6000B, 0x2FC62FB6,
|
||||
0x2FE62FD6, 0xD2564F22, 0x6E436D73, 0x420B6B53,
|
||||
0x20086C63, 0x64038F08, 0xD245D452, 0x6EF64F26,
|
||||
0x6CF66DF6, 0x6BF6422B, 0x24E060B3, 0x60C38041,
|
||||
0xA0078141, 0x655DE500, 0x00DC6053, 0x324C6253,
|
||||
0x80247501, 0x6EEC625D, 0x8BF432E3, 0x6060D636,
|
||||
0x2600C9BF, 0x6EF64F26, 0x6CF66DF6, 0x6BF6000B,
|
||||
0x7FC44F22, 0x720262F3, 0x22512F41, 0x45297202,
|
||||
0x60632251, 0xE5C4E682, 0x67F38121, 0x655C666C,
|
||||
0xE408BFBC, 0x4F267F3C, 0x0009000B, 0xD237D136,
|
||||
0xE4056012, 0xE500CB20, 0x22422102, 0x2252000B,
|
||||
0xD534D133, 0xE400D734, 0x2142E20F, 0x17411154,
|
||||
0xD5322722, 0x9635D732, 0x15412572, 0x96321562,
|
||||
0xE6011565, 0xD52F1165, 0x666CE6F8, 0x25422542,
|
||||
0x25422542, 0x25422542, 0x25622542, 0x7601E727,
|
||||
0x67632572, 0x25627797, 0xE7042572, 0x2572E248,
|
||||
0xE2192522, 0xE2702522, 0x25422542, 0x25422542,
|
||||
0x25222542, 0x2522E20C, 0x25422542, 0x25422542,
|
||||
0x25422542, 0x25422542, 0x000B154A, 0xE2081145,
|
||||
0x0009422B, 0x51630601, 0x001E1017, 0x00202AF0,
|
||||
0x00200F72, 0x002029B0, 0x001E1015, 0x001E10BF,
|
||||
0x00117800, 0x001E10FC, 0x00200100, 0x0020201A,
|
||||
0x001E10F8, 0x00202AF4, 0x00200FBC, 0x001E10AE,
|
||||
0x00201FDC, 0x00202B10, 0x001C3500, 0x001D4004,
|
||||
0x001C581C, 0xA000A000, 0x001D0100, 0x001D4000,
|
||||
0x00040021, 0x001C589C, 0x2FE62FD6, 0x7FFC4F22,
|
||||
0xC8206043, 0x6E438D02, 0x0009BEBB, 0xC81060E3,
|
||||
0xBEB88901, 0x60E30009, 0x8901C840, 0x0009BEDA,
|
||||
0xC80160E3, 0xDD378936, 0xC80260D0, 0x2F008D03,
|
||||
0x460BD635, 0x60F00009, 0x8902C804, 0x460BD633,
|
||||
0x62F00009, 0xC8806023, 0x60D08902, 0x2D00C97F,
|
||||
0xC8016023, 0xD62E8904, 0x0009460B, 0x0009A005,
|
||||
0x8902C808, 0x460BD62B, 0x60F00009, 0x8902C810,
|
||||
0x420BD229, 0xD5290009, 0x88026052, 0xD2288B03,
|
||||
0xA005E604, 0x88012260, 0xD2258B02, 0x2260E601,
|
||||
0x2522E200, 0xC88060E3, 0xD622892E, 0x60E36E60,
|
||||
0x8902C880, 0x420BD220, 0x60E30009, 0x8902C840,
|
||||
0x420BD21E, 0x60E30009, 0x8902C802, 0x420BD21C,
|
||||
0x60E30009, 0x890EC804, 0x410BD11A, 0xBF150009,
|
||||
0xBF1D0009, 0xD5180009, 0x6050D418, 0xC908D718,
|
||||
0xBF542500, 0x60E32472, 0x8905C808, 0x7F04D215,
|
||||
0x6EF64F26, 0x6DF6422B, 0x4F267F04, 0x000B6EF6,
|
||||
0x00006DF6, 0x001E1021, 0x00201182, 0x002011A4,
|
||||
0x002017B0, 0x002011BC, 0x002011CC, 0x002029E0,
|
||||
0x001E100B, 0x001E1028, 0x00201222, 0x0020122E,
|
||||
0x002011D4, 0x002011F2, 0x001E1000, 0x0010F100,
|
||||
0x12345678, 0x0020120A, 0xD6A8644C, 0x346C74FF,
|
||||
0x2450000B, 0x644CD6A6, 0x000B346C, 0xD6A52450,
|
||||
0x346C644C, 0x2450000B, 0x616D625C, 0x41194208,
|
||||
0x60194208, 0x644C4200, 0x324C670E, 0x207DD19E,
|
||||
0xC90F4200, 0x000B321C, 0x67632200, 0x4208625C,
|
||||
0x42004208, 0x324C644C, 0x4200D198, 0x000B321C,
|
||||
0x2FE62270, 0x614C4F12, 0x4100D493, 0x6710314C,
|
||||
0x2729E29F, 0x65736E53, 0x4719676D, 0x672E6279,
|
||||
0x4221227D, 0x42214221, 0x7601662C, 0xE4014608,
|
||||
0x34E84608, 0x644C4600, 0x0E1A0467, 0x215025EB,
|
||||
0x000B4F16, 0x4F226EF6, 0xD2857FE8, 0x88016021,
|
||||
0xD2848B7B, 0x26686621, 0xD2838B77, 0x26686621,
|
||||
0xE50F8B73, 0xE401BFA0, 0xBFA3E501, 0xE586E400,
|
||||
0xE400655C, 0x2F50BFA3, 0xBFA0E401, 0xE602E506,
|
||||
0x60634618, 0x81F2E401, 0x6543BF9E, 0xE40185F2,
|
||||
0xBFAA6543, 0x85F26603, 0x6543E401, 0x6603BFB1,
|
||||
0xE40265F0, 0x6053756C, 0x80F8BF7E, 0xBF81E402,
|
||||
0x84F8E512, 0x7090E402, 0x6503BF81, 0x4618E602,
|
||||
0x81F66063, 0xBF7FE402, 0x85F6E500, 0x6603E402,
|
||||
0xE500BF8B, 0xE40285F6, 0xBF926603, 0xE5FEE500,
|
||||
0xE010655C, 0xBF5FE403, 0xE5130F54, 0xE40EBF62,
|
||||
0x05FCE010, 0xBF62E40E, 0xE5007585, 0xBF63E403,
|
||||
0xE500E640, 0xBF70E403, 0xE500E640, 0xBF78E403,
|
||||
0xE5FFE640, 0xE014655C, 0xBF45E404, 0xE40F0F54,
|
||||
0xE504BF48, 0x05FCE014, 0xBF48E40F, 0xE5017584,
|
||||
0xBF49E640, 0xE501E404, 0xBF56E640, 0xE501E404,
|
||||
0xE404E640, 0xAF5C7F18, 0x7F184F26, 0x000B4F26,
|
||||
0x4F220009, 0xD2427FF0, 0x88016021, 0xD2418B71,
|
||||
0x26686621, 0xD2408B6D, 0x26686621, 0xE50F8B69,
|
||||
0xE401BF1A, 0xBF1DE501, 0xE586E400, 0xE400655C,
|
||||
0x2F50BF1D, 0xBF1AE401, 0xE401E506, 0xBF1B6543,
|
||||
0xE401E640, 0xBF286543, 0xE401E640, 0xBF306543,
|
||||
0x65F0E640, 0x756CE402, 0xBEFD6053, 0xE40280F4,
|
||||
0xE512BF00, 0xE40284F4, 0xBF007090, 0xE6406503,
|
||||
0xBF01E402, 0xE640E500, 0xBF0EE402, 0xE640E500,
|
||||
0xBF16E402, 0xE5FEE500, 0x6053655C, 0xBEE3E403,
|
||||
0xE51380F8, 0xE40EBEE6, 0xE40E84F8, 0xBEE67085,
|
||||
0xE5006503, 0xBEE7E640, 0xE500E403, 0xBEF4E640,
|
||||
0xE500E403, 0xBEFCE640, 0xE5FFE403, 0x6053655C,
|
||||
0xBEC9E404, 0xE40F80FC, 0xE504BECC, 0xE40F84FC,
|
||||
0xBECC7083, 0xE5016503, 0xBECDE640, 0xE501E404,
|
||||
0xBEDAE640, 0xE501E404, 0xE404E640, 0xAEE07F10,
|
||||
0x7F104F26, 0x000B4F26, 0x00000009, 0x001E1030,
|
||||
0x001E1080, 0x001E1090, 0x001E103F, 0x001E103E,
|
||||
0x002029DA, 0x002029DC, 0x002029DE, 0xD21DD11C,
|
||||
0x66206010, 0x676C7001, 0x3700C90F, 0xE5008D13,
|
||||
0x67106210, 0x7701622C, 0x64232170, 0xD6166010,
|
||||
0x44084408, 0x3428C90F, 0x62602100, 0x7201D513,
|
||||
0x44082620, 0x000B354C, 0xD10F6053, 0x25586510,
|
||||
0xE6008D13, 0xD60DD40B, 0x655C6540, 0x47086753,
|
||||
0x37584708, 0x47086540, 0x24507501, 0x367C6040,
|
||||
0x2400C90F, 0x72FF6210, 0x000B2120, 0x00006063,
|
||||
0x002029AF, 0x002029AE, 0x002029B0, 0x002025D4,
|
||||
0x7FFC4F22, 0xE680D19D, 0x666C6212, 0xD29C2F22,
|
||||
0x67F36563, 0x420B7542, 0x7F04E404, 0x000B4F26,
|
||||
0xE6800009, 0xD296666C, 0xE7006563, 0x422B7540,
|
||||
0xE6806473, 0xD292666C, 0xE7006563, 0x422B7543,
|
||||
0x2FB66473, 0x2FD62FC6, 0x4F222FE6, 0x4D18ED01,
|
||||
0xDB8DDC8C, 0x65C252C1, 0x89203520, 0xC9036051,
|
||||
0x891C8801, 0xD189DE87, 0x64E3410B, 0x85036503,
|
||||
0x670D66B2, 0x89073762, 0xD286D485, 0x0009420B,
|
||||
0xE701D185, 0x2172AFE6, 0xDE8464E3, 0x00094E0B,
|
||||
0xD484D683, 0x410BD184, 0xAFDB26D2, 0x4F260009,
|
||||
0x6DF66EF6, 0x000B6CF6, 0x4F226BF6, 0x85467FF4,
|
||||
0x2F01E681, 0x666C8547, 0x854881F1, 0x81F2D270,
|
||||
0x67F38542, 0x854381F3, 0x81F4E40C, 0x65636053,
|
||||
0x420B81F5, 0x7F0C7540, 0x000B4F26, 0x2F860009,
|
||||
0x2FA62F96, 0x2FC62FB6, 0x2FE62FD6, 0x7FF44F22,
|
||||
0xDC6EE200, 0x2F21A136, 0xDD6D6A13, 0xE0014A08,
|
||||
0x4D0BD96C, 0x3A9C4A00, 0x1F917930, 0x66C21F02,
|
||||
0x362052C1, 0xA1218B01, 0x60610009, 0x8801C903,
|
||||
0xA11B8B01, 0x85610009, 0x8977C801, 0x85D25D63,
|
||||
0xC9036603, 0x85D36403, 0x6053650D, 0x40214021,
|
||||
0x4500C93F, 0x322A6103, 0x6053252D, 0xC901E210,
|
||||
0xD9553123, 0x6E038D21, 0x4408D757, 0x44086570,
|
||||
0x44006213, 0x25584200, 0x342C8F0E, 0x6043D253,
|
||||
0x60E3072D, 0x4B196B7D, 0x658E68B9, 0x285D8801,
|
||||
0x6B7C8F0B, 0x6B13A009, 0x6043D24D, 0x61ED0E2D,
|
||||
0x68194119, 0x287D678E, 0xD14A6BEC, 0x22286212,
|
||||
0xEBFF8901, 0xEEFF6BBC, 0x6EEC65BD, 0x8B0F35E0,
|
||||
0x4D0BDD36, 0x540364C3, 0xBF76E502, 0xD4426D03,
|
||||
0x410BD136, 0xD74165D3, 0xD441EE01, 0x27E2A01D,
|
||||
0x26E9EEFC, 0x81D26063, 0x914E85D3, 0x81D32019,
|
||||
0x450885D2, 0x81D2208B, 0xE20885D3, 0x81D3205B,
|
||||
0x421885D4, 0x81D4202B, 0x854164C2, 0x814120E9,
|
||||
0xD43465C2, 0xCB016051, 0x490B2501, 0x60C20009,
|
||||
0x52F256F1, 0x2A02CB01, 0x2622AF79, 0x420BD21B,
|
||||
0x5E0364C3, 0x85E16D03, 0x6053650D, 0x897BC820,
|
||||
0x6210D129, 0x8B112228, 0xD72785EF, 0x4221620D,
|
||||
0x42214221, 0xE501D625, 0x27504221, 0xD725D924,
|
||||
0x2621D425, 0x2960E600, 0x24612762, 0x852162C2,
|
||||
0x8B43C802, 0xD912D71E, 0xE0016270, 0x612C490B,
|
||||
0x6692D91C, 0xA03E260B, 0x7E032962, 0x001C3D9C,
|
||||
0x00201A3C, 0x002025CC, 0x00202994, 0x00200D42,
|
||||
0x00202594, 0x00200DC4, 0x001E2130, 0x00200D60,
|
||||
0x001C3D30, 0x00202C28, 0x00200F72, 0x002025A4,
|
||||
0x0020248C, 0x001C3D00, 0x00202C3C, 0x00202B28,
|
||||
0x00202BA8, 0x002029A8, 0x0020259C, 0x001E212C,
|
||||
0x00202C2C, 0x00202C30, 0x00202D10, 0x002029EE,
|
||||
0x002029EC, 0x002029F0, 0x002029F4, 0xE04CD139,
|
||||
0x7201021E, 0xD9380126, 0x6290D438, 0x72016541,
|
||||
0x29207501, 0x85E12451, 0x4618E640, 0x891D2068,
|
||||
0xD934D733, 0x665D6171, 0x6592D733, 0x641D470B,
|
||||
0xE200DE32, 0x2E20A012, 0xE90885E4, 0x49186203,
|
||||
0x32902299, 0xE5018B04, 0x64E3BEB7, 0x0009A006,
|
||||
0x2598D92B, 0xE5008902, 0x64E3BEAF, 0xD22AD429,
|
||||
0x65D3420B, 0xEE01D729, 0x27E2AED9, 0x7C0862F1,
|
||||
0x2F217201, 0xEE0462F1, 0x31E7612D, 0xAEC38901,
|
||||
0x7F0C0009, 0x6EF64F26, 0x6CF66DF6, 0x6AF66BF6,
|
||||
0x000B69F6, 0x2FE668F6, 0xD21D4F22, 0x60E36E22,
|
||||
0x8D02C840, 0xBE3322E2, 0xE2400009, 0x2E284218,
|
||||
0xBE3E8901, 0x60E30009, 0x8905C810, 0xD216D415,
|
||||
0x0009420B, 0x0009BE3D, 0xC80560E3, 0xBE8E8901,
|
||||
0x60E30009, 0x8902C802, 0xAE3A4F26, 0x4F266EF6,
|
||||
0x6EF6000B, 0x00202538, 0x002029EC, 0x002029F4,
|
||||
0x002029EE, 0x002029F0, 0x00201AA0, 0x00202D10,
|
||||
0x00008000, 0x0020259C, 0x00200D60, 0x001E212C,
|
||||
0x001C3510, 0x00202C34, 0x00200F72, 0x080A0C0E,
|
||||
0x00020406, 0x1A1C1E20, 0x12141618, 0x2E303234,
|
||||
0x26282A2C, 0x3A3C3E40, 0x6C625648, 0x41112F26,
|
||||
0xE2208F18, 0x890B3123, 0x321CD204, 0xD1026220,
|
||||
0x412B312C, 0x00090009, 0x002024B6, 0x0020246C,
|
||||
0x000BE000, 0x400062F6, 0x40004000, 0x40004000,
|
||||
0x40004000, 0x62F6000B, 0x40004000, 0x40004000,
|
||||
0x40004000, 0x40184000, 0x62F6000B, 0x40004000,
|
||||
0x40004000, 0x40004000, 0x40284000, 0x62F6000B,
|
||||
0x40004000, 0x40184000, 0x000B4028, 0xC90F62F6,
|
||||
0x40054005, 0x40054005, 0x62F6000B, 0x4005C907,
|
||||
0x40054005, 0x62F6000B, 0x4005C903, 0x000B4005,
|
||||
0xC90162F6, 0x000B4005, 0x000062F6, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x544F0D0A, 0x46205355,
|
||||
0x00003A57, 0x2079614D, 0x32203033, 0x20373030,
|
||||
0x333A3231, 0x38313A37, 0x00000000, 0x00000D0A,
|
||||
0x00000043, 0x42707372, 0x3D206675, 0x554E203D,
|
||||
0x202C4C4C, 0x6E49677A, 0x4E497274, 0x6D754E51,
|
||||
0x0000003D, 0x61766E49, 0x2064696C, 0x72657375,
|
||||
0x20726F20, 0x2079656B, 0x00214449, 0x52504545,
|
||||
0x57204D4F, 0x65746972, 0x6461202C, 0x003D7264,
|
||||
0x6C617620, 0x0000003D, 0x00000A0D, 0x6E6B6E55,
|
||||
0x206E776F, 0x6D6D6F63, 0x3D646E61, 0x00000000,
|
||||
0x61437748, 0x7262696C, 0x6F697461, 0x6620206E,
|
||||
0x0A6C6961, 0x0000000D, 0x73696F4E, 0x61432065,
|
||||
0x7262696C, 0x6F697461, 0x6166206E, 0x21216C69,
|
||||
0x00000D0A, 0x00000D0A, 0x62735576, 0x7473725F,
|
||||
0x00000A0D, 0x62735576, 0x7375735F, 0x646E6570,
|
||||
0x00000A0D, 0x62735576, 0x7365725F, 0x000A0D6D,
|
||||
0x00000042, 0x72746E49, 0x6D652051, 0x2C797470,
|
||||
0x49677A20, 0x4972746E, 0x754E514E, 0x00003D6D,
|
||||
0x20746F4E, 0x756F6E65, 0x49206867, 0x4220514E,
|
||||
0x0A0D6675, 0x00000000, 0x000000FF, 0x00020001,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x010E010D, 0x00020003,
|
||||
0x01090108, 0x0002010A, 0x00030002, 0x02020201,
|
||||
0x02040203, 0x02060205, 0x02080207, 0x020A0209,
|
||||
0x020C020B, 0x020E020D, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x010E010D, 0x00FF010F,
|
||||
0x01090108, 0x010B010A, 0x00030002, 0x02020201,
|
||||
0x02040203, 0x02060205, 0x02080207, 0x020A0209,
|
||||
0x020C020B, 0x020E020D, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00205220, 0x00000046,
|
||||
0x00000059, 0x49544120, 0x0000204D, 0x00000000,
|
||||
0x02000112, 0x40FFFFFF, 0x91700CF3, 0x20104890,
|
||||
0x02090100, 0x0101002E, 0x09FA8000, 0x04000004,
|
||||
0x000000FF, 0x02010507, 0x07000200, 0x00028205,
|
||||
0x05070002, 0x00400383, 0x04050701, 0x01004003,
|
||||
0x002E0209, 0x80000101, 0x000409FA, 0x00FF0400,
|
||||
0x05070000, 0x00400201, 0x82050700, 0x00004002,
|
||||
0x03830507, 0x07010040, 0x40030405, 0x03040100,
|
||||
0x030C0409, 0x0079005A, 0x00410044, 0x03180053,
|
||||
0x00530055, 0x00320042, 0x0030002E, 0x00570020,
|
||||
0x0041004C, 0x0000004E, 0x00000000, 0x00000000,
|
||||
0x00000709, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, };
|
||||
|
||||
const u32_t zcFwImageSize=11540;
|
1016
drivers/staging/otus/hal/hpfwu_2k.c
Normal file
1016
drivers/staging/otus/hal/hpfwu_2k.c
Normal file
File diff suppressed because it is too large
Load diff
874
drivers/staging/otus/hal/hpfwu_BA.c
Normal file
874
drivers/staging/otus/hal/hpfwu_BA.c
Normal file
|
@ -0,0 +1,874 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
#include "cprecomp.h"
|
||||
|
||||
const u32_t zcFwImage[] = {
|
||||
0x0009000B, 0x4F222FE6, 0xDE917FFC, 0xE114D791,
|
||||
0x1E13D491, 0x1E4C470B, 0x0009B017, 0x95C2E600,
|
||||
0xC84060E2, 0x2F028F03, 0x8FF93652, 0xD48B7601,
|
||||
0x4E0BDE8B, 0xD48B0009, 0x00094E0B, 0x4E0BD48A,
|
||||
0x7F040009, 0xA0474F26, 0x4F226EF6, 0x410BD187,
|
||||
0xD4870009, 0x0009440B, 0x450BD586, 0xD7860009,
|
||||
0x611DE1FF, 0xD1852712, 0x6012E2FF, 0xCB01D484,
|
||||
0x71DC2102, 0x71042122, 0x2122E501, 0xD5812452,
|
||||
0xD2819792, 0xE7002572, 0xD481D180, 0x2270D681,
|
||||
0x2172E201, 0x26202470, 0xE4FFD67F, 0xE6002641,
|
||||
0xE104D57E, 0x6063666D, 0x626D7601, 0x32124000,
|
||||
0x05458FF8, 0xE501D27A, 0xD17A2250, 0xD57BD47A,
|
||||
0xE700E600, 0x25722470, 0x11622162, 0x11691166,
|
||||
0x4F26116A, 0x116E000B, 0xD1757FC4, 0x2F12D875,
|
||||
0xD476D175, 0xD577D676, 0x1F87D777, 0xD97778FC,
|
||||
0x1F1BD277, 0x1F417104, 0x1F647404, 0x1F887604,
|
||||
0x71F41F1C, 0x1F42E8C8, 0x1F651F53, 0x1F991F76,
|
||||
0x1F1D1F2A, 0xDD6F688C, 0xDA70DE6F, 0xDC71DB70,
|
||||
0x00094A0B, 0x00094B0B, 0x00094C0B, 0x6010D15E,
|
||||
0x8B0F8801, 0xE950D15D, 0x49186212, 0x8B073296,
|
||||
0x56FAD159, 0x2120E200, 0xCB016062, 0x2602A002,
|
||||
0x21227201, 0x880160D2, 0xD1638907, 0x32866212,
|
||||
0xD1628903, 0x88016010, 0x64E28BDA, 0x52F751F8,
|
||||
0x55E12142, 0x2252D15E, 0x661254FB, 0x246259FC,
|
||||
0x29725711, 0x880160D2, 0x66E28B53, 0x362052E1,
|
||||
0x6061894C, 0x8801C90F, 0xD1568B48, 0x36206212,
|
||||
0xA0438903, 0x27102162, 0xD5530FA0, 0x6651E710,
|
||||
0x626D7601, 0x8F3C3273, 0x65F22561, 0x695251F2,
|
||||
0x54F359F1, 0x679252F4, 0x61426512, 0x56F66922,
|
||||
0x642252F5, 0xCB206062, 0xE6002602, 0x76011F1E,
|
||||
0x626DE110, 0x32134118, 0x51FE8FF8, 0x267256F1,
|
||||
0x56F457F2, 0x55F32752, 0x251257F5, 0x27422692,
|
||||
0x51F969E2, 0x2192D43D, 0xE90161F2, 0x2192440B,
|
||||
0x491865F2, 0xD9382592, 0xE200D539, 0x62512921,
|
||||
0x720154FD, 0x622D2521, 0x2422A003, 0xE200D932,
|
||||
0xE9012921, 0x2D92D12C, 0x26686612, 0xAF6F8B01,
|
||||
0xD6300009, 0x0009460B, 0xE700D128, 0x2170AF68,
|
||||
0x001C001C, 0x00200F7C, 0x0000B38E, 0x0020322C,
|
||||
0x0020145E, 0x00203238, 0x00203250, 0x0020141C,
|
||||
0x0020151C, 0x00200FA0, 0x001C3510, 0x001C3648,
|
||||
0x001E212C, 0x00203188, 0x00202D24, 0x00203190,
|
||||
0x0020319C, 0x002031A8, 0x002031B8, 0x002031BC,
|
||||
0x002031B0, 0x00117708, 0x002031B1, 0x002031B4,
|
||||
0x001C3D30, 0x00117718, 0x00117734, 0x001C3B9C,
|
||||
0x001C3704, 0x001C3D98, 0x001C3500, 0x001C3D00,
|
||||
0x001C36F8, 0x001C1028, 0x00202D98, 0x00201328,
|
||||
0x00202C04, 0x00201E18, 0x002034BC, 0x002031BA,
|
||||
0x00202D90, 0x002031CC, 0x002031D0, 0x00201276,
|
||||
0x002031D2, 0x00201FD0, 0x2FB62F96, 0x2FD62FC6,
|
||||
0x4F222FE6, 0xDE947F8C, 0x61E0E024, 0x0F14D493,
|
||||
0x710161E3, 0xD7926210, 0x470BE028, 0xD5910F24,
|
||||
0x0009450B, 0x6D032008, 0x1F0B8F11, 0xD48FDC8E,
|
||||
0xDD8F67C0, 0x657C4D0B, 0xDD8FD18E, 0x6B9C6910,
|
||||
0x420862B3, 0x32B84208, 0x3D2C4208, 0xE0281FDB,
|
||||
0xE58004FC, 0x604C66E2, 0x3050655C, 0x2D628F13,
|
||||
0x01FCE024, 0x641CE500, 0x625DDE84, 0x8B013243,
|
||||
0x0009A33D, 0x6753655D, 0x607037EC, 0x39DC6953,
|
||||
0xAFF27501, 0x20088094, 0xE0248B13, 0xE50001FC,
|
||||
0xA009DE7A, 0x655D641C, 0x32EC6253, 0x6C536B22,
|
||||
0x3CDC67B2, 0x75041C71, 0x3243625D, 0xA31E8BF3,
|
||||
0x88012D10, 0xE0248B16, 0xE40001FC, 0x671C2D40,
|
||||
0x624DDE6E, 0x8B013273, 0x0009A311, 0x6CE3644D,
|
||||
0x7C046943, 0x39EC6B43, 0x65923BCC, 0x74086DB2,
|
||||
0x25D2AFEF, 0x8B198804, 0x01FCE024, 0x2D70E700,
|
||||
0x1FD86D1C, 0x627DDE61, 0x8B0132D3, 0x0009A2F7,
|
||||
0x6B73677D, 0x3BEC61E3, 0x710464B2, 0x3C1C6C73,
|
||||
0x694265C2, 0x29597708, 0x2492AFED, 0x8B188805,
|
||||
0x01FCE024, 0x2D40E400, 0xDE54671C, 0x3273624D,
|
||||
0xA2DC8B01, 0x644D0009, 0x6BE36D43, 0x65D23DEC,
|
||||
0x61437B04, 0x6C1231BC, 0x74086952, 0xAFED29CB,
|
||||
0x88312592, 0xDE4A8B20, 0x65E6DB4A, 0x61E6DC4A,
|
||||
0x67E2D94A, 0x62E27E04, 0x1FEC7EE8, 0x7E0464E2,
|
||||
0x6EE21FED, 0x5BFD2BE0, 0x60B27B04, 0xC9011FBE,
|
||||
0x6BB22C00, 0x29B04B09, 0xDC412F26, 0x66134C0B,
|
||||
0xE2007F04, 0x2D20A2AB, 0x8B218830, 0xD939DE38,
|
||||
0xE06465E6, 0x720462E3, 0x672666E2, 0x6E23DC36,
|
||||
0x62227EE8, 0x6BE261E6, 0x29B01FEF, 0x7E040F16,
|
||||
0xC90160E2, 0x6EE22C00, 0x4E09DC30, 0x2F262CE0,
|
||||
0xD130E068, 0x04FE410B, 0xE2007F04, 0x2D20A287,
|
||||
0x8B058833, 0x4E0BDE2C, 0xE1000009, 0x2D10A27F,
|
||||
0x89018828, 0x0009A106, 0xE143DE20, 0xE04062E1,
|
||||
0x3217622D, 0x0FE68F04, 0x6023E240, 0x262106FE,
|
||||
0x8B013217, 0x0009A0EF, 0x02FEE040, 0x8521E401,
|
||||
0x8B013046, 0x0009A0E7, 0xE501E040, 0x2D5007FE,
|
||||
0x6471B265, 0x09FEE040, 0x6291E143, 0x652DE068,
|
||||
0x8D6B3517, 0xE6400F56, 0x8B273563, 0xE048E600,
|
||||
0xE11A0F65, 0x72C0A031, 0x00117800, 0x00203254,
|
||||
0x0020145E, 0x00202588, 0x002031A2, 0x00203258,
|
||||
0x002014AA, 0x002031A1, 0x00202DC8, 0x00117804,
|
||||
0x00117810, 0x0020319D, 0x0020319E, 0x0020319F,
|
||||
0x00200C2C, 0x00200C80, 0x00200C7C, 0x41216153,
|
||||
0x41214121, 0x41214121, 0x45214521, 0x60534521,
|
||||
0x6603C903, 0x0F65E048, 0xE0077118, 0xE0442209,
|
||||
0x641D0F25, 0x65F3E04C, 0x0F46B28C, 0x04FDE048,
|
||||
0x0BFDE044, 0x61BD674D, 0x41084708, 0x0F16E050,
|
||||
0xD29B6073, 0x420B09FE, 0x6C07E00F, 0x607329C9,
|
||||
0xE0400F96, 0x65F30EFE, 0x6D0D85E2, 0x01FEE050,
|
||||
0x60D3420B, 0x6073290B, 0xE04C0F96, 0x04FEB251,
|
||||
0x06FEE040, 0x6261E068, 0x0F56652D, 0x3563E640,
|
||||
0xE000894E, 0x602381F8, 0x4008C903, 0x6B034000,
|
||||
0xE0546103, 0xE0580FB6, 0xECFFDD85, 0x6CCC0FF6,
|
||||
0x0FD6E06C, 0x4D0B60C3, 0x42216253, 0x42214221,
|
||||
0x64234221, 0x324C4200, 0xE05C6E07, 0x45214200,
|
||||
0xE0400FE6, 0x0BFE4521, 0xC9036053, 0x30FC4008,
|
||||
0x6D037B06, 0x85F81F05, 0x6C2D1FB7, 0x1FC66E03,
|
||||
0x0FC6E060, 0x05FEE058, 0x64C3B22C, 0x33FCE354,
|
||||
0x563262D2, 0x22696132, 0x67B42D22, 0x490B5936,
|
||||
0x220B607C, 0x05FEE058, 0x64C32D22, 0x7E01B201,
|
||||
0xE70662ED, 0x8FE33273, 0xE0407C01, 0x626106FE,
|
||||
0x06FEE040, 0x85614200, 0x302C760C, 0x6103701B,
|
||||
0x64F3E500, 0x7501E704, 0x6B5D6966, 0x24923B73,
|
||||
0x74048FF9, 0xB1E465F3, 0xE040641D, 0xB1A306FE,
|
||||
0xA17C6461, 0xD4570009, 0xE201D757, 0x2D20470B,
|
||||
0x0009A175, 0x8B078829, 0xEC00DE54, 0x61E22DC0,
|
||||
0x641DB175, 0x0009A16B, 0x622CE281, 0x8B013020,
|
||||
0x0009A0B6, 0x06FCE028, 0xE682626C, 0x3260666C,
|
||||
0x56FB8B20, 0x2610E124, 0x5217D149, 0x52181621,
|
||||
0x52191622, 0x521A1623, 0x551B1624, 0x1655E200,
|
||||
0x1656551C, 0x1657551D, 0x1658551E, 0x1659551F,
|
||||
0x11281127, 0x112A1129, 0x112C112B, 0x112E112D,
|
||||
0x112FA13D, 0x666CE683, 0x8B0B3260, 0xD63752FB,
|
||||
0x2250E500, 0xD2376562, 0x22527604, 0xD6366262,
|
||||
0x2620A12D, 0x666CE690, 0x8B033260, 0x0009B1C7,
|
||||
0x0009A011, 0x666CE691, 0x8B103260, 0x6252D52B,
|
||||
0x2228622C, 0xD22D8904, 0x0009420B, 0x0009A003,
|
||||
0x420BD22B, 0x56FB0009, 0xA110E200, 0xE6B02620,
|
||||
0x3260666C, 0xE0248B34, 0xE07002FC, 0x0F16612C,
|
||||
0xEB04EC00, 0x01FEE070, 0x321362CD, 0xA0FE8B01,
|
||||
0xD21A0009, 0x6DC36CCD, 0x72043D2C, 0x312C61C3,
|
||||
0x6D126ED2, 0xD114D41B, 0x0009410B, 0x410BD11A,
|
||||
0xD41A64E3, 0x420BD210, 0xD2170009, 0x64D3420B,
|
||||
0xD60DD417, 0x0009460B, 0x61E3E600, 0x316C666D,
|
||||
0x626D7601, 0x21D032B3, 0x4D198FF7, 0x7C08AFD2,
|
||||
0xD211D410, 0xD4116542, 0x0009420B, 0x0009A0CF,
|
||||
0x00202C80, 0x00203278, 0x0020145E, 0x00117804,
|
||||
0x00202D2C, 0x00203188, 0x0020319C, 0x00200CBA,
|
||||
0x00200CE0, 0x00203290, 0x002014A2, 0x002032A4,
|
||||
0x002032AC, 0x00117800, 0x002014AA, 0x002032B0,
|
||||
0xD5B5D1B4, 0x6252E040, 0x75046612, 0x2162362C,
|
||||
0x56116256, 0x1161362C, 0x62526653, 0x76085512,
|
||||
0x1152352C, 0x55136262, 0x352C76EC, 0x65631153,
|
||||
0x56146262, 0x362C7510, 0x66531164, 0x55156252,
|
||||
0x352C7610, 0x62621155, 0x362C5616, 0xD6A31166,
|
||||
0x55176262, 0x352C7604, 0x62661157, 0x352C5518,
|
||||
0x65631158, 0x56196262, 0x362C7504, 0x62561169,
|
||||
0x362C561A, 0x6256116A, 0x362C561B, 0x6653116B,
|
||||
0x551C6252, 0x352C7604, 0x6266115C, 0x352C551D,
|
||||
0x6263115D, 0x551E6662, 0x356C7204, 0x6622115E,
|
||||
0xD58F521F, 0x112F326C, 0x061E6252, 0x362C7594,
|
||||
0xE0440166, 0x62526653, 0x7644051E, 0x0156352C,
|
||||
0x6262E048, 0x362C061E, 0xD6860166, 0x6262E054,
|
||||
0x4229051E, 0x0156352C, 0x62627604, 0x061EE058,
|
||||
0x362C4229, 0x56FB0166, 0x2620E238, 0x021EE044,
|
||||
0x1621E048, 0x16226212, 0x16235211, 0xE2005512,
|
||||
0x55151654, 0x55131655, 0x55161656, 0x051E1657,
|
||||
0x1658E040, 0xE050051E, 0x55141659, 0x051E165A,
|
||||
0x165BE04C, 0xE054051E, 0x051E165C, 0x165DE058,
|
||||
0xE044051E, 0x0126165E, 0x2122E048, 0x11221121,
|
||||
0x11231125, 0x01261126, 0x0126E040, 0x1124E050,
|
||||
0xE04C0126, 0xE0540126, 0xE0580126, 0x7F740126,
|
||||
0x6EF64F26, 0x6CF66DF6, 0x000B6BF6, 0x4F2269F6,
|
||||
0xE240614D, 0x89143123, 0x3127E21F, 0x8B09D75A,
|
||||
0xD45A614D, 0xE00171E0, 0x5671440B, 0x26596507,
|
||||
0x1761A007, 0xE001D455, 0x6672440B, 0x26596507,
|
||||
0x4F262762, 0x0009000B, 0x614D4F22, 0x3123E240,
|
||||
0xE21F8912, 0xD74C3127, 0x614D8B08, 0x5671D24B,
|
||||
0x420B71E0, 0x260BE001, 0x1761A006, 0x6672D247,
|
||||
0xE001420B, 0x2762260B, 0x000B4F26, 0xE6400009,
|
||||
0x46284618, 0x6252D542, 0x89FC2268, 0x0009000B,
|
||||
0x4618E680, 0xD53E4628, 0x22686252, 0x000B89FC,
|
||||
0xA0010009, 0x7201E200, 0x8BFC3242, 0x0009000B,
|
||||
0x4618E680, 0xD5374628, 0x22686252, 0x000B8BFC,
|
||||
0x2FE60009, 0x7FFC4F22, 0xBFF16E53, 0x61E22F42,
|
||||
0xE280D631, 0x54E11615, 0x16464218, 0x422855E2,
|
||||
0x57E31657, 0x16786EF2, 0x26E22E2B, 0x4F267F04,
|
||||
0x6EF6AFCE, 0x2FD62FC6, 0x4F222FE6, 0x6C53DD26,
|
||||
0x6E43BFD6, 0x2DE2BFBB, 0x0009BFD2, 0x2C1251D5,
|
||||
0x1C4154D6, 0x1C5255D7, 0x1C6356D8, 0x6EF64F26,
|
||||
0x000B6DF6, 0x61636CF6, 0xA004E600, 0x62564109,
|
||||
0x24227601, 0x36127404, 0x000B8BF9, 0x4F220009,
|
||||
0xD117D416, 0x0009410B, 0xD417D216, 0xE5056022,
|
||||
0x2202CB20, 0xD5152452, 0x450BE700, 0xD7142472,
|
||||
0x0009470B, 0xE601D113, 0x2162D213, 0x4F264618,
|
||||
0x2262000B, 0x00202D2C, 0x001C36A0, 0x001C3CA0,
|
||||
0x001C36F4, 0x001C3B88, 0x001C3704, 0x00202C80,
|
||||
0x001C373C, 0x001C3700, 0x001C370C, 0x002032C4,
|
||||
0x0020145E, 0x001C3500, 0x001D4004, 0x002014D4,
|
||||
0x00200FA0, 0x001E212C, 0x001C3D30, 0x0009A1A9,
|
||||
0x2FE62FD6, 0xDD8F4F22, 0xA0049EA7, 0xD48E0009,
|
||||
0x420BD28E, 0x62D265D2, 0x8BF822E8, 0x0009A004,
|
||||
0xD28AD48B, 0x55D1420B, 0x22E852D1, 0xA0048BF8,
|
||||
0xD4880009, 0x420BD285, 0x52D255D2, 0x8BF822E8,
|
||||
0x0009A004, 0xD281D484, 0x55D3420B, 0x22E852D3,
|
||||
0xA0048BF8, 0xD4810009, 0x420BD27C, 0x52D455D4,
|
||||
0x8BF822E8, 0x6EF64F26, 0x6DF6000B, 0x2FD62FC6,
|
||||
0x4F222FE6, 0x6E636D73, 0x6C53B018, 0x64C357F4,
|
||||
0xB05465E3, 0xB06A66D3, 0xB09A0009, 0xB09E0009,
|
||||
0xB0A20009, 0xB0BE0009, 0xB0C10009, 0xB1240009,
|
||||
0x4F260009, 0x6DF66EF6, 0x6CF6A023, 0x3412D16C,
|
||||
0xD66C0529, 0x2650D76C, 0x2742000B, 0x0009A014,
|
||||
0x2FD62FC6, 0x4F222FE6, 0x6E636D73, 0x6C53BFEE,
|
||||
0x64C357F4, 0xB02A65E3, 0xB10666D3, 0x4F260009,
|
||||
0x6DF66EF6, 0x6CF6A005, 0xE603D260, 0x000B4618,
|
||||
0xD25E2262, 0x000BE600, 0x4F222262, 0xE40ABF7E,
|
||||
0x0009BF7E, 0xE104D25A, 0xE5004118, 0x2212E40A,
|
||||
0x2252BF74, 0x6072D757, 0x4F26CB20, 0x2702000B,
|
||||
0xD1554F22, 0xE400410B, 0x452BD554, 0x2FE64F26,
|
||||
0x6E63D153, 0x44186612, 0x45289210, 0x26294408,
|
||||
0x44084500, 0x4400265B, 0x4708264B, 0x47082162,
|
||||
0x27EBD14C, 0x000B2172, 0x03F06EF6, 0x2FE61FFF,
|
||||
0xDE494F22, 0xE40AE101, 0x2E12BF48, 0x726C62E3,
|
||||
0xE401E100, 0x22122212, 0x22122212, 0x22122212,
|
||||
0xE7302242, 0xE40AE503, 0x22122212, 0x22122212,
|
||||
0x22122212, 0x22122212, 0x22122212, 0x22122212,
|
||||
0x22522272, 0x22122212, 0x22122212, 0x22122212,
|
||||
0x22122212, 0x121ABF22, 0x2E62E600, 0x000B4F26,
|
||||
0xD2326EF6, 0xE441E101, 0x000B2212, 0xD1302242,
|
||||
0xE605D430, 0x000B2162, 0xD52F2462, 0x6050D22F,
|
||||
0x8B0E8801, 0x6040D42E, 0x8B078801, 0x9626D52D,
|
||||
0x88016050, 0x96238B0C, 0x0009A00A, 0xA0079621,
|
||||
0xE6000009, 0x2262D426, 0x88016040, 0xE6048B00,
|
||||
0xAEF3E40A, 0xD2242262, 0xE40AE601, 0x2262AEEE,
|
||||
0x2FC62FB6, 0x2FE62FD6, 0xDC204F22, 0x60C2ED00,
|
||||
0xCB01EB64, 0x60C22C02, 0xA041C901, 0x03C46E03,
|
||||
0x034003D4, 0x001C3B88, 0x002032C8, 0x002014AA,
|
||||
0x002032D0, 0x002032D8, 0x002032E0, 0x002032E8,
|
||||
0x0025E720, 0x002034B8, 0x0020318C, 0x001C5968,
|
||||
0x001D4004, 0x001C3500, 0x0020124A, 0x00201276,
|
||||
0x001C5814, 0x001C59D0, 0x001C5830, 0x001C6268,
|
||||
0x001C59A4, 0x001C639C, 0x0020319E, 0x001C5804,
|
||||
0x0020319D, 0x0020319F, 0x001C581C, 0x001C5860,
|
||||
0x89073DB2, 0xE40A60C2, 0xBE9FC901, 0x7D016E03,
|
||||
0x8BF52EE8, 0x8B033DB2, 0xD23ED43D, 0x0009420B,
|
||||
0x4F26E40A, 0x6DF66EF6, 0xAE8F6CF6, 0x44116BF6,
|
||||
0x604B8F01, 0x000B6043, 0x2FB60009, 0x2FD62FC6,
|
||||
0x4F222FE6, 0xDC347FFC, 0x60C2ED00, 0xCB02EB64,
|
||||
0x60C22C02, 0xC9022F02, 0x6E03A009, 0x89083DB3,
|
||||
0xE40A60C2, 0xC9022F02, 0x6E03BE70, 0x2EE87D01,
|
||||
0x3DB38BF4, 0xD4298B08, 0x7F04D226, 0x6EF64F26,
|
||||
0x6CF66DF6, 0x6BF6422B, 0x4F267F04, 0x6DF66EF6,
|
||||
0x000B6CF6, 0xD5226BF6, 0x60525651, 0x000B4628,
|
||||
0x2FB6306C, 0x2FD62FC6, 0x4F222FE6, 0x4F024F12,
|
||||
0x6E43BFF1, 0xDC1B6B03, 0xBFECDD1B, 0x30B80009,
|
||||
0x060A3C05, 0x46094609, 0x3D654601, 0x4209020A,
|
||||
0x42094209, 0x8BF032E2, 0x4F164F06, 0x6EF64F26,
|
||||
0x6CF66DF6, 0x6BF6000B, 0x4F222FE6, 0xE102DE0F,
|
||||
0xE403E500, 0xBFD42E12, 0xE6062E52, 0xE7004618,
|
||||
0x2E62E403, 0x4F262E72, 0x6EF6AFCB, 0x0009000B,
|
||||
0x002032F0, 0x0020145E, 0x001C5860, 0x00203308,
|
||||
0x001C1040, 0xCCCCCCCD, 0x10624DD3, 0x001D4004,
|
||||
0x2F962F86, 0x2FB62FA6, 0x2FD62FC6, 0x4F222FE6,
|
||||
0xE5007FD8, 0x6453E110, 0x6C534128, 0x655DEE0A,
|
||||
0x46086653, 0x4608365C, 0x361C7501, 0x675D6043,
|
||||
0x60C30F66, 0x37E3ED00, 0x816126C1, 0x81638162,
|
||||
0x16D316D2, 0x8FEA16D4, 0x68F27404, 0xDAB3D9B2,
|
||||
0x29821981, 0xD1B259F1, 0x2A921A91, 0x5BF35AF2,
|
||||
0x5EF55DF4, 0x11A154F6, 0x11B321A2, 0x11D511B2,
|
||||
0x11E711D4, 0x114911E6, 0x55F71148, 0xEE00DBA9,
|
||||
0xDDA957F8, 0xD6A952F9, 0x1B5164E3, 0xDBA82B52,
|
||||
0xEAB8D8A8, 0x2D72E945, 0x6AAC2622, 0x6EED4908,
|
||||
0x4D086DE3, 0x3DEC61E3, 0x4D084108, 0x3DBC31EC,
|
||||
0x410860C3, 0x81D12DC1, 0x4108E050, 0x41084008,
|
||||
0x60C381D2, 0xE500318C, 0x81D334A2, 0x1D131DD2,
|
||||
0x8D01D494, 0xD4911D54, 0xB08165D3, 0x64ED7E01,
|
||||
0x8BDC3492, 0xDB94D18D, 0xD28B6812, 0x1B814829,
|
||||
0x2FD26412, 0x2B92694D, 0xD98A6722, 0x1B734729,
|
||||
0xD7876822, 0x1BA26A8D, 0xD28C6B72, 0x22B2D586,
|
||||
0xE0035D72, 0x5E7412D2, 0x12E44018, 0xD6885176,
|
||||
0x54781216, 0x1248E1FF, 0xD4856792, 0x6852127A,
|
||||
0x28C1E703, 0x81916952, 0x6A52E050, 0x81A24008,
|
||||
0x60C36B52, 0x6D5281B3, 0x6E521DD2, 0x62521E63,
|
||||
0x1264E600, 0x46086563, 0x7501364C, 0x665D2612,
|
||||
0x8BF83673, 0xE003D471, 0x40186542, 0x674225C1,
|
||||
0x8171D274, 0xEE006842, 0x69421882, 0x1923E024,
|
||||
0xE5806A42, 0x6B421AE4, 0x81B266E3, 0xD46D6C42,
|
||||
0x655C81C3, 0x6D63666D, 0x616D7604, 0x31533D4C,
|
||||
0x2DE28FF8, 0xD569D268, 0x74042422, 0x7F282452,
|
||||
0x6EF64F26, 0x6CF66DF6, 0x6AF66BF6, 0x000B69F6,
|
||||
0x664268F6, 0xC8036061, 0xE5008D04, 0xC9036061,
|
||||
0x8B038802, 0x65635262, 0x24125124, 0x6053000B,
|
||||
0x2FE62FD6, 0x7FEC4F22, 0x62536E53, 0x6D43E550,
|
||||
0x4508E400, 0xE101A001, 0x60435224, 0x81212211,
|
||||
0x60538123, 0x56E28122, 0x8BF53620, 0x16E4D250,
|
||||
0xE61464F3, 0x65E3420B, 0xE4FC65E1, 0x2E512549,
|
||||
0x65F361F1, 0x2F112149, 0xD14954D1, 0xE614410B,
|
||||
0x607157D1, 0x2701CB01, 0x7F141DE1, 0x6EF64F26,
|
||||
0x6DF6000B, 0x2FE62FD6, 0x7FEC4F22, 0x66536E53,
|
||||
0x6D43E5FC, 0x20596061, 0x2601CB01, 0x326052E2,
|
||||
0x12E48B06, 0x31E051E2, 0x52D18B04, 0x1E22A002,
|
||||
0x5664AFF0, 0x64F3D236, 0x420BE614, 0x67E165E3,
|
||||
0x2719E1FC, 0x67F12E71, 0x271954D1, 0x65F3D130,
|
||||
0x410BE614, 0x52D12F71, 0xCB016021, 0x1DE12201,
|
||||
0x4F267F14, 0x000B6EF6, 0x2FE66DF6, 0x624C4F22,
|
||||
0x4208DE1B, 0xA0054200, 0x52523E2C, 0x5624D417,
|
||||
0x2E62BF8E, 0x52E165E2, 0x8BF63520, 0x2622D61B,
|
||||
0x000B4F26, 0x2FB66EF6, 0x2FD62FC6, 0x4F222FE6,
|
||||
0xDB1CDC10, 0x66C252C1, 0x89403620, 0xC9036061,
|
||||
0x893C8801, 0xDD18DE0B, 0x64E3BF63, 0x85036503,
|
||||
0x620D66B2, 0x892B3262, 0xBF9BD403, 0xD4130009,
|
||||
0x00094D0B, 0x0009AFE6, 0x00202D88, 0x00202D90,
|
||||
0x00202D98, 0x00202DC0, 0x002031A4, 0x002031AC,
|
||||
0x001000C8, 0x00101680, 0x001E2108, 0x001C3D00,
|
||||
0x00117880, 0x00117780, 0x00040020, 0x0026C401,
|
||||
0x00200B26, 0x00203188, 0x0020145E, 0x00203324,
|
||||
0x64E3BF3E, 0x4D0BD406, 0xAFBB0009, 0xD2050009,
|
||||
0x4F262262, 0x6DF66EF6, 0x000B6CF6, 0x00006BF6,
|
||||
0x00203328, 0x001C3D28, 0x2FC62FB6, 0x2FE62FD6,
|
||||
0x7FFC4F22, 0x6022D22B, 0x8D41C803, 0xDE2A2F01,
|
||||
0xDB2BDC2A, 0xED01A017, 0xC9036051, 0x89168801,
|
||||
0xD128D426, 0x0009410B, 0x61035503, 0xC8208551,
|
||||
0xE0508903, 0x720102BE, 0xD2230B26, 0x420B64E3,
|
||||
0xD6226513, 0x52C126D2, 0x352065C2, 0xDE208BE4,
|
||||
0xDB21DD20, 0x52D1DC21, 0x352065D2, 0x60518918,
|
||||
0x8801C903, 0xD41B8914, 0x460BD616, 0x57030009,
|
||||
0x8F0437E0, 0xE2016503, 0xAFEC2B20, 0xD4182C52,
|
||||
0x420BD218, 0xD6110009, 0x4118E101, 0x2612AFE3,
|
||||
0xC80460F1, 0xD2148907, 0x4F267F04, 0x6DF66EF6,
|
||||
0x422B6CF6, 0x7F046BF6, 0x6EF64F26, 0x6CF66DF6,
|
||||
0x6BF6000B, 0x001E2100, 0x00202D98, 0x00202D90,
|
||||
0x00202D2C, 0x00201162, 0x002011E4, 0x001C3D30,
|
||||
0x00117880, 0x00202D88, 0x002031A8, 0x002031A4,
|
||||
0x00202DC0, 0x00201180, 0x00200308, 0xE601D203,
|
||||
0x1265D503, 0x000B2252, 0x00001266, 0x001C1010,
|
||||
0x0000C34F, 0x0009000B, 0x2FD62FC6, 0x4F222FE6,
|
||||
0x6D436C53, 0xEE00A004, 0x7E0164D4, 0x644CBFF2,
|
||||
0x8BF93EC2, 0x6EF64F26, 0x000B6DF6, 0xE5006CF6,
|
||||
0x6643A002, 0x76017501, 0x22286260, 0xAFE38BFA,
|
||||
0x2FE60009, 0x75076253, 0xE1086753, 0x6043EE0A,
|
||||
0x4409C90F, 0x650330E2, 0x8D014409, 0xE630E637,
|
||||
0x4110365C, 0x8FF22760, 0xE00077FF, 0x000B8028,
|
||||
0x000B6EF6, 0x000BE000, 0x2FE6E000, 0x7FEC4F22,
|
||||
0x6E436253, 0xBFDC65F3, 0xBFD06423, 0xBFCE64E3,
|
||||
0xD40364F3, 0x0009BFCB, 0x4F267F14, 0x6EF6000B,
|
||||
0x0020332C, 0xE4FDD29A, 0xD79A6122, 0x22122149,
|
||||
0x74016022, 0x2202CB01, 0xD5976622, 0x22622649,
|
||||
0xC8406070, 0x60528902, 0x2502CB04, 0xE1F76452,
|
||||
0x25422419, 0xE7016052, 0x2502C9CF, 0xE6026052,
|
||||
0x2502CB03, 0x15624718, 0x1573000B, 0xD78CD58B,
|
||||
0xD48DD28C, 0xE600E100, 0x27112511, 0xAFD12210,
|
||||
0x664C2461, 0x4600D289, 0x6060362C, 0x000BCB10,
|
||||
0x654C2600, 0x4500D285, 0x6650352C, 0x2619E1EF,
|
||||
0x2560000B, 0xD282664C, 0x362C4600, 0xCB106060,
|
||||
0x2600000B, 0xD27E654C, 0x352C4500, 0xE1EF6650,
|
||||
0x000B2619, 0x664C2560, 0x4600D278, 0x6060362C,
|
||||
0x000BCB08, 0x654C2600, 0x4500D274, 0x6650352C,
|
||||
0x2619E1F7, 0x2560000B, 0xD271664C, 0x362C4600,
|
||||
0xCB086060, 0x2600000B, 0xD26D654C, 0x352C4500,
|
||||
0xE1F76650, 0x000B2619, 0x624C2560, 0x4200D667,
|
||||
0x6020326C, 0x4021C908, 0x40214021, 0x600C000B,
|
||||
0xD663624C, 0x326C4200, 0xC9086020, 0x40214021,
|
||||
0x000B4021, 0xD15F600C, 0x341C644C, 0x000B6240,
|
||||
0xD15D602C, 0x341C644C, 0x000B6240, 0x2FE6602C,
|
||||
0x6E434F22, 0xE60A645C, 0x89143467, 0x0009BFEB,
|
||||
0x60EC640C, 0x8B028801, 0xA002E00F, 0x44092409,
|
||||
0x624C4409, 0x3263E60A, 0xBFE28905, 0x620C644C,
|
||||
0xC8806023, 0xE2008B00, 0x4F266023, 0x6EF6000B,
|
||||
0xD64A4F22, 0x88016062, 0xB2458B03, 0xA0030009,
|
||||
0xD2470009, 0x2260E640, 0xE200D646, 0x000B4F26,
|
||||
0x4F222622, 0x6062D641, 0x8B018802, 0x0009B28E,
|
||||
0xE200D640, 0x000B4F26, 0xD53C2622, 0xE100D43C,
|
||||
0x2512E701, 0x2470000B, 0xE604D239, 0x2260000B,
|
||||
0xD4394F22, 0x410BD139, 0xD5390009, 0x6650E1FD,
|
||||
0x2619D238, 0x2560E700, 0x000B4F26, 0x4F222270,
|
||||
0xD132D435, 0x0009410B, 0xE7FBD531, 0x26796650,
|
||||
0x000B4F26, 0x4F222560, 0xD12CD430, 0x0009410B,
|
||||
0xE7F7D52B, 0x26796650, 0x000B4F26, 0xD5282560,
|
||||
0x6250942D, 0x000B2249, 0xD5252520, 0x6250E4BF,
|
||||
0x000B2249, 0x4F222520, 0x8522D225, 0x2008600D,
|
||||
0x88018911, 0x88038913, 0x88058915, 0x88068942,
|
||||
0x88088948, 0x8809894E, 0x880A8954, 0x880B895A,
|
||||
0xA0678960, 0xB0690009, 0xA0640009, 0xB077600C,
|
||||
0xA0600009, 0xB080600C, 0xA05C0009, 0xFF7F600C,
|
||||
0x001E2148, 0x001E1000, 0x001E1108, 0x002031FC,
|
||||
0x002031FE, 0x0020321D, 0x002031E0, 0x001E103F,
|
||||
0x001E105F, 0x001E102F, 0x001E1090, 0x00203204,
|
||||
0x001E100B, 0x00203200, 0x00203330, 0x0020145E,
|
||||
0x001E1028, 0x0020321C, 0x0020333C, 0x0020334C,
|
||||
0x002031D4, 0x6260D684, 0x8B2B2228, 0x0009B061,
|
||||
0x600CA029, 0x6260D680, 0x8B232228, 0x0009B069,
|
||||
0x600CA021, 0x6260D67C, 0x8B1B2228, 0x0009B0C7,
|
||||
0x600CA019, 0x6260D678, 0x8B132228, 0x0009B0CD,
|
||||
0x600CA011, 0x6260D674, 0x8B0B2228, 0x0009B125,
|
||||
0x600CA009, 0x6260D670, 0x8B032228, 0x0009B13D,
|
||||
0x600CA001, 0x4F26E000, 0x0009000B, 0xD26CD16B,
|
||||
0xD56C8412, 0x4000C90F, 0xD76B012D, 0xE403D66B,
|
||||
0xE20F611C, 0x2540E001, 0x25202712, 0x2602000B,
|
||||
0xE601D262, 0x30668523, 0xE0008D05, 0xD663D260,
|
||||
0xE0018122, 0x000B2602, 0xD25C0009, 0x600D8523,
|
||||
0x89052008, 0x8B0A8801, 0x6060D65D, 0x2600CB01,
|
||||
0xD457D65A, 0xE001E101, 0x000B2612, 0x000B8142,
|
||||
0xD152E000, 0x8513E501, 0x640D4518, 0x66033453,
|
||||
0xE0008D05, 0xD551D253, 0x2260E001, 0x000B2502,
|
||||
0x4F220009, 0x8513D149, 0x6453650D, 0x62494419,
|
||||
0x227D672E, 0x8801602C, 0x88028909, 0x88038910,
|
||||
0x8806891A, 0x88078935, 0xA04C893B, 0xD5460009,
|
||||
0x6652D746, 0x2762D446, 0x622C6261, 0x2421A038,
|
||||
0x2228625C, 0xD4438B3F, 0x6642D540, 0x2562D440,
|
||||
0x24018561, 0x6203A02C, 0x2008605C, 0x88108907,
|
||||
0x88208908, 0x88308909, 0xA02C890A, 0xD23A0009,
|
||||
0x6222A008, 0xA005D239, 0xD2396222, 0x6222A002,
|
||||
0x6262D638, 0xD432D531, 0x66212522, 0xA00F626C,
|
||||
0xD6352421, 0x6261D52D, 0x622CD42D, 0xA0072562,
|
||||
0xD6322421, 0x8561D529, 0x2562D429, 0x62032401,
|
||||
0x662D8515, 0x3617610D, 0x65038F01, 0xB0CB2451,
|
||||
0xA0010009, 0xE000E001, 0x000B4F26, 0xD6190009,
|
||||
0xD427E101, 0x65412610, 0xD118D717, 0xE20F655D,
|
||||
0x2752E001, 0x000B2620, 0x2FE62102, 0xD20F4F22,
|
||||
0x640C8523, 0x8B082448, 0xD511D61D, 0x2621E200,
|
||||
0x940F8451, 0xA0482049, 0xDE0D8051, 0xC84060E0,
|
||||
0xE2018D32, 0x89443427, 0xD216D615, 0x2641420B,
|
||||
0x0009A030, 0x0000FF7F, 0x0020321D, 0x002031D4,
|
||||
0x002031E0, 0x001E1100, 0x001E100C, 0x00203200,
|
||||
0x001E1000, 0x001E1001, 0x00203208, 0x002031E8,
|
||||
0x002031EC, 0x002031F0, 0x0020320C, 0x00203210,
|
||||
0x00203214, 0x00203218, 0x0020351C, 0x00203526,
|
||||
0x002031FA, 0x00202362, 0x89123427, 0xD294D693,
|
||||
0x2641420B, 0xCB8084E1, 0x80E1B0F5, 0xD69160E0,
|
||||
0x2E00CB04, 0xC93F6060, 0xD68F2600, 0xA001E001,
|
||||
0xE0002602, 0x000B4F26, 0xD68C6EF6, 0xC8806060,
|
||||
0xD2868919, 0x88016021, 0xD2898B15, 0x8524E501,
|
||||
0x89103056, 0xE203D187, 0x2120D487, 0xE00B6541,
|
||||
0x0656655D, 0xE40FD585, 0x2140E702, 0xD77E2571,
|
||||
0x000BE001, 0x000B2702, 0x2FE6E000, 0xDE804F22,
|
||||
0xC88084E1, 0xD57A892C, 0x20088554, 0x61038F28,
|
||||
0x8553D77C, 0x64036672, 0x8566650C, 0x3520620C,
|
||||
0xD6798B1E, 0x651CD774, 0x2651644C, 0x60E02741,
|
||||
0x8904C840, 0x420BD275, 0xA0030009, 0xD2680009,
|
||||
0x0009420B, 0x0009B09F, 0xE201D167, 0x60E02122,
|
||||
0xCB04D464, 0x60402E00, 0x2400C93F, 0x6023A001,
|
||||
0x4F26E000, 0x6EF6000B, 0x2FB62FA6, 0x2FD62FC6,
|
||||
0xDA622FE6, 0x66A1E240, 0x3622DC5E, 0x62638900,
|
||||
0x6ED36D2C, 0x4E2136D8, 0x4E212A61, 0xDB61D460,
|
||||
0xE700A00F, 0x770162B2, 0x71026123, 0x66212B12,
|
||||
0x71026213, 0x61212B12, 0x651D666D, 0x356C4528,
|
||||
0x627C2452, 0x8BED32E3, 0xC90360D3, 0x8B108803,
|
||||
0x617367B2, 0x2B127102, 0x71026E13, 0x2B126571,
|
||||
0x655D6DE1, 0x422862DD, 0x325CE107, 0xA00C2C10,
|
||||
0x88022422, 0xA0038B01, 0x8801E203, 0xE2018B05,
|
||||
0x66B22C20, 0x655D6561, 0xE60F2452, 0x67A12C60,
|
||||
0x8B052778, 0xDD38DC44, 0xEB01EA00, 0x2DB22CA2,
|
||||
0x6DF66EF6, 0x6BF66CF6, 0x6AF6000B, 0x2FE62FD6,
|
||||
0xE240DD36, 0x362266D1, 0x62638900, 0x3678672C,
|
||||
0x7703DE38, 0x47212D61, 0x64E2D635, 0xA00E4721,
|
||||
0x6562E100, 0x62537101, 0x74012450, 0x24204219,
|
||||
0x45297401, 0x74012450, 0x24504519, 0x621C7401,
|
||||
0x8BEE3273, 0x66E24200, 0x420061D1, 0x2118362C,
|
||||
0x2E628F06, 0xDD1CD728, 0xE501E400, 0x2D522742,
|
||||
0x000B6EF6, 0x2FD66DF6, 0x4F222FE6, 0xED0AEE01,
|
||||
0x64E3BC97, 0xBC9C64E3, 0x62EC7E01, 0x8BF732D7,
|
||||
0xBC9FEE01, 0x64E364E3, 0x7E01BCA4, 0x32D762EC,
|
||||
0x4F268BF7, 0x000B6EF6, 0xD1186DF6, 0xD418920D,
|
||||
0x72122122, 0x2422D617, 0xD7177204, 0x72202622,
|
||||
0x2722D116, 0x000B7230, 0x137A2122, 0x002031FA,
|
||||
0x0020246E, 0x001E1015, 0x00203200, 0x001E1001,
|
||||
0x002031D4, 0x001E1100, 0x002031FE, 0x002031EC,
|
||||
0x001E1000, 0x002031F0, 0x002031FC, 0x00202362,
|
||||
0x001E100C, 0x002031E8, 0x00203204, 0x00203208,
|
||||
0x0020320C, 0x00203210, 0x00203214, 0x00203218,
|
||||
0x4F222FE6, 0xD6507FFC, 0x88016060, 0xE2018951,
|
||||
0x2620BFBB, 0xD54ED14D, 0xDE4E6010, 0x64E36552,
|
||||
0x7402C840, 0x8D22D14C, 0xD24C7502, 0xE601D74C,
|
||||
0xE7042722, 0x76016255, 0x626C2421, 0x8FF93273,
|
||||
0xD4437402, 0x6242E601, 0x640D8528, 0x67494419,
|
||||
0x275D657E, 0x81E4607C, 0xE417D542, 0x67557601,
|
||||
0x3243626C, 0x8FF92171, 0xA0207102, 0xD23E0009,
|
||||
0xE601D73B, 0xE7042722, 0x76016255, 0x626C2421,
|
||||
0x8FF93273, 0xD4327402, 0x6242E601, 0x640D8528,
|
||||
0x67494419, 0x275D657E, 0x81E4607C, 0xE417D533,
|
||||
0x67557601, 0x3243626C, 0x8FF92171, 0x924A7102,
|
||||
0xD2262E21, 0x5E23D72E, 0x64F22FE2, 0x604365F2,
|
||||
0x2700C980, 0xC9606043, 0x80716103, 0xC9036043,
|
||||
0x80724519, 0x65F2605C, 0x817266F2, 0x46194629,
|
||||
0x606C4529, 0x4018645C, 0x8173304C, 0x21185E23,
|
||||
0x64F22FE2, 0x6E4C62F2, 0x602C4219, 0x66F262F2,
|
||||
0x46294018, 0x461930EC, 0x42298174, 0x652C606C,
|
||||
0x305C4018, 0x81758F07, 0x0009BC9D, 0x2228620C,
|
||||
0xA00A8908, 0x60130009, 0x8B038840, 0x0009B009,
|
||||
0x0009A003, 0xE202D60F, 0x7F042622, 0x000B4F26,
|
||||
0x000B6EF6, 0x060A0009, 0x0020321C, 0x001E1000,
|
||||
0x00203208, 0x0020351C, 0x00203528, 0x002034C0,
|
||||
0x002031F0, 0x002034F0, 0x002034EE, 0x002034C2,
|
||||
0x002031D4, 0x00203200, 0x4F222FE6, 0xDE937FFC,
|
||||
0x200884E9, 0x2F008D06, 0xD692D491, 0x0009460B,
|
||||
0x64F0B194, 0x6620D290, 0x89022668, 0xC9BF60E0,
|
||||
0x7F042E00, 0x000B4F26, 0x000B6EF6, 0x2FE60009,
|
||||
0xDE8A4F22, 0x60E0D68A, 0xCBC0D48A, 0x62602E00,
|
||||
0xC803602C, 0x40218904, 0x70014021, 0x6603A002,
|
||||
0x66034009, 0xD684616D, 0xE500A004, 0x75016262,
|
||||
0x74042422, 0x3213625D, 0xD2808BF8, 0x0009420B,
|
||||
0xC9BF84E2, 0x4F2680E2, 0x6EF6000B, 0x2FE62FD6,
|
||||
0x7FFC4F22, 0x6260D67A, 0x89442228, 0xD56FE100,
|
||||
0x60502610, 0xCB40D477, 0x2500440B, 0x8D052008,
|
||||
0x62E06E03, 0x7104612C, 0x2F11A006, 0xD472D66A,
|
||||
0xDD726760, 0x657C4D0B, 0xE23C6D1D, 0x8B033D27,
|
||||
0xD264D46F, 0x0009420B, 0x4D214D21, 0xA005D76D,
|
||||
0x66E6E400, 0x357C4508, 0x74012562, 0x35D3654D,
|
||||
0xD7698BF7, 0x6172E003, 0x81114018, 0x6E7260F1,
|
||||
0x81E2700C, 0xD4656172, 0xDD658113, 0x4D0BDE65,
|
||||
0xE2016572, 0xD4642E22, 0x420BD252, 0xD6530009,
|
||||
0xC93F6060, 0x7F042600, 0x6EF64F26, 0x6DF6000B,
|
||||
0x2FC62FB6, 0x2FE62FD6, 0xD25C4F22, 0x6B436E73,
|
||||
0x420B6C53, 0x20086D63, 0x61038F08, 0xD245D458,
|
||||
0x6EF64F26, 0x6CF66DF6, 0x6BF6422B, 0x21B060C3,
|
||||
0x60D38011, 0xE5008111, 0x64BCA007, 0x6053655D,
|
||||
0x665300EC, 0x7501361C, 0x625D8064, 0x8BF53243,
|
||||
0x6060D636, 0x2600C9BF, 0x6EF64F26, 0x6CF66DF6,
|
||||
0x6BF6000B, 0x7FC44F22, 0x720262F3, 0x22512F41,
|
||||
0x45297202, 0x60632251, 0xE5C4E682, 0x67F38121,
|
||||
0x655C666C, 0xE408BFBC, 0x4F267F3C, 0x0009000B,
|
||||
0x2F962F86, 0x2FB62FA6, 0x2FD62FC6, 0x4F222FE6,
|
||||
0xE1007FC4, 0x6513ECFF, 0x6B136CCD, 0xDE36D735,
|
||||
0xEDFF64F3, 0xD835EA04, 0x6053655C, 0x027D4000,
|
||||
0x32C0622D, 0x66038D0D, 0x09ED6063, 0x2491027D,
|
||||
0x24217402, 0x698202ED, 0x3928622D, 0x74022892,
|
||||
0x75017104, 0x6063625C, 0x07D532A2, 0x0EB58FE4,
|
||||
0x2448641C, 0xE6808905, 0x67F3E5C5, 0xBF7F666C,
|
||||
0x7F3C655C, 0x6EF64F26, 0x6CF66DF6, 0x6AF66BF6,
|
||||
0x000B69F6, 0xD11E68F6, 0x6012D21E, 0xCB20E405,
|
||||
0x2102E500, 0x000B2242, 0x00002252, 0x001E1017,
|
||||
0x00203358, 0x0020145E, 0x002031A2, 0x001E1015,
|
||||
0x001E10BF, 0x00117800, 0x001E10FC, 0x00200308,
|
||||
0x002031A8, 0x002025C6, 0x0020335C, 0x002014AA,
|
||||
0x00203378, 0x0011788C, 0x002031A4, 0x00202D88,
|
||||
0x002011E4, 0x001E2130, 0x00203380, 0x00202588,
|
||||
0x00203384, 0x002031BC, 0x002031C4, 0x002034BC,
|
||||
0x001C3500, 0x001D4004, 0xD565D164, 0xE400D765,
|
||||
0x2142E20F, 0x17411154, 0xD5632722, 0x9669D763,
|
||||
0x15412572, 0x96661562, 0xE6011565, 0xD5601165,
|
||||
0x666CE6F8, 0x25422542, 0x25422542, 0x25422542,
|
||||
0x25622542, 0x7601E727, 0x67632572, 0x25627797,
|
||||
0xE7042572, 0x2572E248, 0xE2192522, 0xE2702522,
|
||||
0x25422542, 0x25422542, 0x25222542, 0x2522E20C,
|
||||
0x25422542, 0x25422542, 0x25422542, 0x25422542,
|
||||
0x000B154A, 0xE2081145, 0x0009422B, 0x2FE62FD6,
|
||||
0x7FFC4F22, 0xC8206043, 0x6E438D02, 0x0009BE6D,
|
||||
0xC81060E3, 0xBE6A8901, 0x60E30009, 0x8901C840,
|
||||
0x0009BE8C, 0xC80160E3, 0xDD3E8938, 0xC80260D0,
|
||||
0x2F008D03, 0x460BD63C, 0x60F00009, 0x8902C804,
|
||||
0x460BD63A, 0x62F00009, 0xC8806023, 0x60D08902,
|
||||
0x2D00C97F, 0xC8016023, 0xD6358906, 0x0009460B,
|
||||
0x0009A007, 0x51630601, 0x8902C808, 0x460BD631,
|
||||
0x60F00009, 0x8902C810, 0x420BD22F, 0xD52F0009,
|
||||
0x88026052, 0xD22E8B03, 0xA005E604, 0x88012260,
|
||||
0xD22B8B02, 0x2260E601, 0x2522E200, 0xC88060E3,
|
||||
0xD628892E, 0x60E36E60, 0x8902C880, 0x420BD226,
|
||||
0x60E30009, 0x8902C840, 0x420BD224, 0x60E30009,
|
||||
0x8902C802, 0x420BD222, 0x60E30009, 0x890EC804,
|
||||
0x410BD120, 0xBF0E0009, 0xBF4D0009, 0xD51E0009,
|
||||
0x6050D41E, 0xC908D71E, 0xBF842500, 0x60E32472,
|
||||
0x8905C808, 0x7F04D21B, 0x6EF64F26, 0x6DF6422B,
|
||||
0x4F267F04, 0x000B6EF6, 0x00006DF6, 0x001C581C,
|
||||
0xA000A000, 0x001D0100, 0x001D4000, 0x00040021,
|
||||
0x001C589C, 0x001E1021, 0x00201640, 0x00201662,
|
||||
0x00201CA0, 0x0020167A, 0x00201688, 0x00203200,
|
||||
0x001E100B, 0x001E1028, 0x002016DE, 0x002016EA,
|
||||
0x00201690, 0x002016AE, 0x001E1000, 0x0010F100,
|
||||
0x12345678, 0x002016C6, 0x644CD6A7, 0x000B346C,
|
||||
0xD6A62450, 0x346C644C, 0x2450000B, 0x644CD6A4,
|
||||
0x000B346C, 0x625C2450, 0x4208616D, 0x42084119,
|
||||
0x42006019, 0x670E614C, 0xD49E321C, 0x4200207D,
|
||||
0x324CC90F, 0x2200000B, 0x4208625C, 0x42004208,
|
||||
0x324C644C, 0x4200D498, 0x000B324C, 0x2FE62260,
|
||||
0x614C4F12, 0x4100D493, 0x6710314C, 0xE29F666D,
|
||||
0x27294619, 0x6E536269, 0x672E6573, 0x4221227D,
|
||||
0x42214221, 0x7601662C, 0xE4014608, 0x34E84608,
|
||||
0x644C4600, 0x071A0467, 0x2150257B, 0x000B4F16,
|
||||
0x4F226EF6, 0xD2857FE8, 0x88016021, 0xD2848B7B,
|
||||
0x26686621, 0xD2838B77, 0x26686621, 0xE50F8B73,
|
||||
0xE401BFA2, 0xBFA4E501, 0xE586E400, 0xE400655C,
|
||||
0x2F50BFA4, 0xBFA1E401, 0xE602E506, 0x60634618,
|
||||
0x81F2E401, 0x6543BF9F, 0xE40185F2, 0xBFAB6543,
|
||||
0x85F26603, 0x6543E401, 0x6603BFB1, 0xE40265F0,
|
||||
0x6053756C, 0x80F8BF80, 0xBF82E402, 0x84F8E512,
|
||||
0x7090E402, 0x6503BF82, 0x4618E602, 0x81F66063,
|
||||
0xBF80E402, 0x85F6E500, 0x6603E402, 0xE500BF8C,
|
||||
0xE40285F6, 0xBF926603, 0xE5FEE500, 0xE010655C,
|
||||
0xBF61E403, 0xE5130F54, 0xE40EBF63, 0x05FCE010,
|
||||
0xBF63E40E, 0xE5007585, 0xBF64E403, 0xE500E640,
|
||||
0xBF71E403, 0xE500E640, 0xBF78E403, 0xE5FFE640,
|
||||
0xE014655C, 0xBF47E404, 0xE40F0F54, 0xE504BF49,
|
||||
0x05FCE014, 0xBF49E40F, 0xE5017584, 0xBF4AE640,
|
||||
0xE501E404, 0xBF57E640, 0xE501E404, 0xE404E640,
|
||||
0xAF5C7F18, 0x7F184F26, 0x000B4F26, 0x4F220009,
|
||||
0xD2427FF0, 0x88016021, 0xD2418B71, 0x26686621,
|
||||
0xD2408B6D, 0x26686621, 0xE50F8B69, 0xE401BF1C,
|
||||
0xBF1EE501, 0xE586E400, 0xE400655C, 0x2F50BF1E,
|
||||
0xBF1BE401, 0xE401E506, 0xBF1C6543, 0xE401E640,
|
||||
0xBF296543, 0xE401E640, 0xBF306543, 0x65F0E640,
|
||||
0x756CE402, 0xBEFF6053, 0xE40280F4, 0xE512BF01,
|
||||
0xE40284F4, 0xBF017090, 0xE6406503, 0xBF02E402,
|
||||
0xE640E500, 0xBF0FE402, 0xE640E500, 0xBF16E402,
|
||||
0xE5FEE500, 0x6053655C, 0xBEE5E403, 0xE51380F8,
|
||||
0xE40EBEE7, 0xE40E84F8, 0xBEE77085, 0xE5006503,
|
||||
0xBEE8E640, 0xE500E403, 0xBEF5E640, 0xE500E403,
|
||||
0xBEFCE640, 0xE5FFE403, 0x6053655C, 0xBECBE404,
|
||||
0xE40F80FC, 0xE504BECD, 0xE40F84FC, 0xBECD7083,
|
||||
0xE5016503, 0xBECEE640, 0xE501E404, 0xBEDBE640,
|
||||
0xE501E404, 0xE404E640, 0xAEE07F10, 0x7F104F26,
|
||||
0x000B4F26, 0x00000009, 0x001E102F, 0x001E1080,
|
||||
0x001E1090, 0x001E103F, 0x001E103E, 0x002031FA,
|
||||
0x002031FC, 0x002031FE, 0xD21DD11C, 0x66206010,
|
||||
0x676C7001, 0x3700C90F, 0xE5008D13, 0x67106210,
|
||||
0x7701622C, 0x64232170, 0xD6166010, 0x44084408,
|
||||
0x3428C90F, 0x62602100, 0x7201D513, 0x44082620,
|
||||
0x000B354C, 0xD10F6053, 0x25586510, 0xE6008D13,
|
||||
0xD60DD40B, 0x655C6540, 0x47086753, 0x37584708,
|
||||
0x47086540, 0x24507501, 0x367C6040, 0x2400C90F,
|
||||
0x72FF6210, 0x000B2120, 0x00006063, 0x002031A1,
|
||||
0x002031A0, 0x002031A2, 0x00202DC8, 0x7FFC4F22,
|
||||
0xE680D19D, 0x666C6212, 0xD29C2F22, 0x67F36563,
|
||||
0x420B7542, 0x7F04E404, 0x000B4F26, 0xE6800009,
|
||||
0xD296666C, 0xE7006563, 0x422B7540, 0xE6806473,
|
||||
0xD292666C, 0xE7006563, 0x422B7543, 0x2F866473,
|
||||
0x2FA62F96, 0x2FC62FB6, 0x2FE62FD6, 0x7FF44F22,
|
||||
0xDD8CD28B, 0x72011F21, 0xDB8B1F22, 0x6AF2E840,
|
||||
0x5211D18A, 0x36206612, 0xA0A78B01, 0x60610009,
|
||||
0x8801C903, 0xA0A18B01, 0xD9840009, 0x420BD284,
|
||||
0x55036493, 0x845C6A03, 0x30E0EE84, 0xD1818B79,
|
||||
0x606C6610, 0x8B3D8801, 0x6210D17F, 0x892F2228,
|
||||
0xD57EE701, 0x64522B72, 0x1442E003, 0xD57C6252,
|
||||
0xE6004018, 0x21608121, 0xD17A6453, 0x6E527404,
|
||||
0x60126742, 0xCB20DC78, 0x76012102, 0x3283626D,
|
||||
0x25E28BFB, 0x2472DE71, 0x62E267C2, 0x1274D173,
|
||||
0x604164E2, 0x2401CB01, 0xEE0066E2, 0xDC702C62,
|
||||
0xEC012C62, 0x2DC2410B, 0x4C18EC01, 0x2BE22DC2,
|
||||
0xD764DE6C, 0xD16C60E2, 0xCB01E202, 0x27202E02,
|
||||
0x2122A02F, 0x8B2C2008, 0xE701DE68, 0xD466EC00,
|
||||
0x2170D264, 0xEE012EC2, 0x612224E2, 0x2169E6FE,
|
||||
0xE01E2212, 0x54F10C5C, 0x24C0E01F, 0x56F2025C,
|
||||
0x26207510, 0xD75EE600, 0xEE06D45E, 0x76018456,
|
||||
0x6C542700, 0x31E3616C, 0x740124C0, 0x77018FF6,
|
||||
0xE494D259, 0x72012240, 0x2250E500, 0xE605720F,
|
||||
0xD2562260, 0x65A36493, 0xEE01420B, 0xAF6F4E18,
|
||||
0x2FA22DE2, 0xD45265F2, 0x66428553, 0x3262620D,
|
||||
0xD4508907, 0x410BD150, 0xD7500009, 0xAF57E601,
|
||||
0xD43A2762, 0xDD37D149, 0x65F2410B, 0xD44CEE01,
|
||||
0x4E18D64C, 0x2DE2460B, 0x0009AF4A, 0x7F0C2FA2,
|
||||
0x6EF64F26, 0x6CF66DF6, 0x6AF66BF6, 0x000B69F6,
|
||||
0x4F2268F6, 0x85467FF4, 0x2F01E681, 0x666C8547,
|
||||
0x854881F1, 0x81F2D225, 0x67F38542, 0x854381F3,
|
||||
0x81F4E40C, 0x65636053, 0x420B81F5, 0x7F0C7540,
|
||||
0x000B4F26, 0x2F860009, 0x2FA62F96, 0x2FC62FB6,
|
||||
0x2FE62FD6, 0x7FEC4F22, 0xE800D11A, 0xD4322F12,
|
||||
0x1F416183, 0x6A13DB20, 0x4A08D630, 0xDE20E001,
|
||||
0x4A00460B, 0x1F023AEC, 0x52B166B2, 0x8B013620,
|
||||
0x0009A19B, 0xC9036061, 0x8B018801, 0x0009A195,
|
||||
0xDE275263, 0x8B4F32E0, 0x420BD20D, 0xDE2564B3,
|
||||
0xD70DD50E, 0xED01DC0B, 0x2E02E100, 0x27D02502,
|
||||
0xAFE12C10, 0x00002E16, 0x001C3D9C, 0x00201F40,
|
||||
0x0011779A, 0x001C3D30, 0x001D0104, 0x00202DC0,
|
||||
0x00201162, 0x002031B1, 0x002031B0, 0x002031AC,
|
||||
0x001C3B9C, 0x001C3500, 0x00202D98, 0x00201276,
|
||||
0x001C3D00, 0x001C36F8, 0x00117708, 0x002031B4,
|
||||
0x0011778C, 0x00117792, 0x00117788, 0x00201180,
|
||||
0x00203188, 0x00202D88, 0x002011E4, 0x001E2130,
|
||||
0x0020349C, 0x0020145E, 0x002034A8, 0x00202C80,
|
||||
0x00117780, 0x0011770C, 0xC8018561, 0x5C63897A,
|
||||
0x660385C2, 0x6403C903, 0x650D85C3, 0x40216053,
|
||||
0xC93F4021, 0x6E034500, 0x252D322A, 0xE2106053,
|
||||
0x3E23C901, 0x6D038D23, 0x4408D79D, 0x44086570,
|
||||
0x440062E3, 0x25584200, 0x342C8F0F, 0x6043D299,
|
||||
0x697D072D, 0x60994919, 0x201D610E, 0x60D381F6,
|
||||
0x8F0C8801, 0xA00A697C, 0xD29369E3, 0x052D6043,
|
||||
0x4219625D, 0x670E6029, 0x81F6207D, 0xD18F695C,
|
||||
0x22286210, 0xE9FF8901, 0xEEFF699C, 0x6EEC659D,
|
||||
0x8B0F35E0, 0x4C0BDC8A, 0x540364B3, 0xBF20E502,
|
||||
0xD4886E03, 0x410BD188, 0xD78865E3, 0xD488ED01,
|
||||
0x27D2A01E, 0x26E9EEFC, 0x81C26063, 0x97C585C3,
|
||||
0x62032079, 0x450885F6, 0x6063260B, 0x81C2252B,
|
||||
0x81C36053, 0xE10885C4, 0x201B4118, 0x62B281C4,
|
||||
0x20E98521, 0x64B28121, 0xCB016041, 0xD4792401,
|
||||
0x450BD579, 0x60B20009, 0x57F266F2, 0x2A02CB01,
|
||||
0x2672AF22, 0xD26E8561, 0x8F02C802, 0xA09F64B3,
|
||||
0x420B0009, 0xDC710009, 0x5E036503, 0x07CEE04C,
|
||||
0x7701DD6F, 0x6CD20C76, 0x7C01D664, 0x6D602DC2,
|
||||
0x89062DD8, 0xD264D463, 0xED01420B, 0xA07ED763,
|
||||
0x625127D2, 0x4118E10F, 0x2219E402, 0x32404418,
|
||||
0x85518B11, 0x20D9EDFC, 0x60518151, 0xCB017DE3,
|
||||
0x85E12501, 0x20D9D65F, 0x460B81E1, 0x6CF264B3,
|
||||
0xA06457F2, 0x6D512C72, 0x4D196DDD, 0x66DE6DD9,
|
||||
0x7D012D6D, 0x610360DC, 0x88014118, 0x25118F45,
|
||||
0x6462D653, 0x26427401, 0x660D85E3, 0x40216063,
|
||||
0xC93F4021, 0x6D034600, 0x262D322A, 0xC8016063,
|
||||
0xDC4ED14D, 0x964A8901, 0xE6002D6B, 0x0F64E010,
|
||||
0xE01064DD, 0x607C07FC, 0x021D4000, 0x3240622D,
|
||||
0x66038D12, 0x021D6063, 0x3270E7FF, 0xA00B8B01,
|
||||
0xE01001D5, 0xE60402FC, 0x0F247201, 0x3262622C,
|
||||
0x06FC8BE7, 0x4600666C, 0x01CD6063, 0x0C157101,
|
||||
0x6711D13B, 0x3C406C7D, 0x62118907, 0x88FF602D,
|
||||
0x21D18903, 0xE201DD37, 0x85512D20, 0x20D9EDFC,
|
||||
0x60518151, 0xCB01D22F, 0x420B64B3, 0xE0102501,
|
||||
0xD43102FC, 0xE001612C, 0x67F2440B, 0x85EF2702,
|
||||
0x54F1D22E, 0x650D420B, 0x0009AE7E, 0x80007E03,
|
||||
0x0009420B, 0x6E035403, 0xED088544, 0x20D94D18,
|
||||
0x8B0330D0, 0xE501BE3D, 0x0009A007, 0xDD248541,
|
||||
0x22D8620D, 0xBE348901, 0xD412E500, 0x420BD212,
|
||||
0xD71265E3, 0xAE5FED01, 0x780127D2, 0xEE04618D,
|
||||
0x8D0231E7, 0xAE4E7B08, 0x7F140009, 0x6EF64F26,
|
||||
0x6CF66DF6, 0x6AF66BF6, 0x000B69F6, 0x000068F6,
|
||||
0x002034B8, 0x0020339C, 0x0020341C, 0x0020319C,
|
||||
0x00201162, 0x00202D90, 0x00201180, 0x001E212C,
|
||||
0x002034A0, 0x002034A4, 0x0020145E, 0x00202D2C,
|
||||
0x002034BC, 0x002011E4, 0x002031BC, 0x002031C4,
|
||||
0x002031B8, 0x002031BA, 0x00202C80, 0x002014AA,
|
||||
0x00008000, 0x4F222FE6, 0x6E22D212, 0xC84060E3,
|
||||
0x22E28D02, 0x0009BCFA, 0x4218E240, 0x89012E28,
|
||||
0x0009BD05, 0xC81060E3, 0xD40B8905, 0x420BD20B,
|
||||
0xBD040009, 0x60E30009, 0x8901C805, 0x0009BDEB,
|
||||
0xC80260E3, 0x4F268902, 0x6EF6AD01, 0x000B4F26,
|
||||
0x00006EF6, 0x001C3510, 0x002034B0, 0x0020145E,
|
||||
0x080A0C0E, 0x00020406, 0x1A1C1E20, 0x12141618,
|
||||
0x2E303234, 0x26282A2C, 0x3A3C3E40, 0x6C625648,
|
||||
0x41112F26, 0xE2208F18, 0x890B3123, 0x321CD204,
|
||||
0xD1026220, 0x412B312C, 0x00090009, 0x00202CAA,
|
||||
0x00202C60, 0x000BE000, 0x400062F6, 0x40004000,
|
||||
0x40004000, 0x40004000, 0x62F6000B, 0x40004000,
|
||||
0x40004000, 0x40004000, 0x40184000, 0x62F6000B,
|
||||
0x40004000, 0x40004000, 0x40004000, 0x40284000,
|
||||
0x62F6000B, 0x40004000, 0x40184000, 0x000B4028,
|
||||
0xC90F62F6, 0x40054005, 0x40054005, 0x62F6000B,
|
||||
0x4005C907, 0x40054005, 0x62F6000B, 0x4005C903,
|
||||
0x000B4005, 0xC90162F6, 0x000B4005, 0x000062F6,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x544F0D0A,
|
||||
0x46205355, 0x00003A57, 0x206C754A, 0x32203532,
|
||||
0x20373030, 0x313A3132, 0x37323A32, 0x00000000,
|
||||
0x00000D0A, 0x00000043, 0x42707372, 0x3D206675,
|
||||
0x554E203D, 0x202C4C4C, 0x6E49677A, 0x4E497274,
|
||||
0x6D754E51, 0x0000003D, 0x61766E49, 0x2064696C,
|
||||
0x72657375, 0x20726F20, 0x2079656B, 0x00214449,
|
||||
0x52504545, 0x57204D4F, 0x65746972, 0x6461202C,
|
||||
0x003D7264, 0x6C617620, 0x0000003D, 0x00000A0D,
|
||||
0x6E6B6E55, 0x206E776F, 0x6D6D6F63, 0x3D646E61,
|
||||
0x00000000, 0x000A0D52, 0x203A3051, 0x00000020,
|
||||
0x203A3151, 0x00000020, 0x203A3251, 0x00000020,
|
||||
0x203A3351, 0x00000020, 0x203A3451, 0x00000020,
|
||||
0x61437748, 0x7262696C, 0x6F697461, 0x6620206E,
|
||||
0x0A6C6961, 0x0000000D, 0x73696F4E, 0x61432065,
|
||||
0x7262696C, 0x6F697461, 0x6166206E, 0x21216C69,
|
||||
0x00000D0A, 0x00000072, 0x00205220, 0x00000D0A,
|
||||
0x62735576, 0x7473725F, 0x00000A0D, 0x62735576,
|
||||
0x7375735F, 0x646E6570, 0x00000A0D, 0x62735576,
|
||||
0x7365725F, 0x000A0D6D, 0x00000042, 0x72746E49,
|
||||
0x6D652051, 0x2C797470, 0x49677A20, 0x4972746E,
|
||||
0x754E514E, 0x00003D6D, 0x654C7245, 0x0000006E,
|
||||
0x00000049, 0x20746F4E, 0x756F6E65, 0x49206867,
|
||||
0x4220514E, 0x0A0D6675, 0x00000000, 0x000000FF,
|
||||
0x00020001, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x010E010D,
|
||||
0x00020003, 0x01090108, 0x0002010A, 0x02000003,
|
||||
0x02020201, 0x02040203, 0x02060205, 0x02020200,
|
||||
0x02040203, 0x020C0207, 0x020E020D, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x010E010D,
|
||||
0x00FF010F, 0x01090108, 0x010B010A, 0x020000FF,
|
||||
0x02020201, 0x02040203, 0x02060205, 0x02020200,
|
||||
0x02040203, 0x020C020B, 0x020E020D, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00205220,
|
||||
0x00000046, 0x00000059, 0x73204142, 0x003D7165,
|
||||
0x49544120, 0x0000204D, 0x00000000, 0x00000000,
|
||||
0x002E0209, 0x80000101, 0x000409FA, 0x00FF0400,
|
||||
0x05070000, 0x02000201, 0x82050700, 0x00020002,
|
||||
0x03830507, 0x07010040, 0x40020405, 0x02090000,
|
||||
0x0101002E, 0x09FA8000, 0x04000004, 0x000000FF,
|
||||
0x02010507, 0x07000040, 0x40028205, 0x05070000,
|
||||
0x00400383, 0x04050701, 0x00004002, 0x00000000,
|
||||
0x00000000, 0x07090000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, };
|
||||
|
||||
const u32_t zcFwImageSize=13656;
|
721
drivers/staging/otus/hal/hpfwu_FB50_mdk.c
Normal file
721
drivers/staging/otus/hal/hpfwu_FB50_mdk.c
Normal file
|
@ -0,0 +1,721 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
#include "cprecomp.h"
|
||||
|
||||
const u32_t zcFwImage[] = {
|
||||
0x0009000B, 0x4F222FE6, 0xD2287FFC, 0x0009420B,
|
||||
0x0009B019, 0x9446D526, 0xE600A003, 0x8D043642,
|
||||
0x60527601, 0x8DF9C840, 0xD4222F02, 0x4E0BDE22,
|
||||
0xD4220009, 0x00094E0B, 0x4E0BD421, 0x7F040009,
|
||||
0xA0254F26, 0x4F226EF6, 0x410BD11E, 0xD41E0009,
|
||||
0x0009440B, 0x450BD51D, 0xD71D0009, 0x611DE1FF,
|
||||
0x2712D21C, 0xD41C5029, 0xE1FFCB01, 0x1209E501,
|
||||
0x12112212, 0xD5192452, 0xD6199716, 0xE7002572,
|
||||
0x2670D218, 0x2272D618, 0x4F26E201, 0x2622000B,
|
||||
0xDD17DC16, 0x4C0BDE17, 0x4D0B0009, 0x4E0B0009,
|
||||
0xAFF80009, 0x27100009, 0x00000640, 0x0020095A,
|
||||
0x001C001C, 0x00202940, 0x00200E2A, 0x0020294C,
|
||||
0x00202964, 0x00200CF0, 0x00200F26, 0x002009C4,
|
||||
0x001C3510, 0x001C3624, 0x001E212C, 0x002028EC,
|
||||
0x00202850, 0x002028F4, 0x00202900, 0x00200BEC,
|
||||
0x00201FD4, 0x002017B8, 0x2FD62FC6, 0x4F222FE6,
|
||||
0xDEA17FA4, 0x61E0E01C, 0x7D016DE3, 0x61D00F14,
|
||||
0xD59FD49E, 0x450BE020, 0xE0200F14, 0xE78004FC,
|
||||
0x604C66E2, 0x7D7F677C, 0x1F693070, 0x2D628F17,
|
||||
0x01FCE01C, 0x641CE500, 0xD797DE96, 0x3243625D,
|
||||
0xA21A8B01, 0x655D0009, 0x31EC6153, 0xE0286C10,
|
||||
0x6D530FC4, 0x3D7C62CE, 0xAFEF2D20, 0x20087501,
|
||||
0xE01C8B15, 0xE50001FC, 0xD78BDE8A, 0x641CA00A,
|
||||
0x6C53655D, 0x66C23CEC, 0x66626253, 0x2262327C,
|
||||
0x1F697504, 0x3243625D, 0xA1F68BF2, 0x88012D10,
|
||||
0xE01C8B16, 0xE40001FC, 0x671C2D40, 0x624DDE7D,
|
||||
0x8B013273, 0x0009A1E9, 0x62E3644D, 0x72046D43,
|
||||
0x3DEC6143, 0x65D2312C, 0x74086C12, 0x25C2AFEF,
|
||||
0x8B188804, 0x01FCE01C, 0x2D40E400, 0xDE71671C,
|
||||
0x3273624D, 0xA1D08B01, 0x644D0009, 0x62E36D43,
|
||||
0x65D23DEC, 0x61437204, 0x6612312C, 0x74086C52,
|
||||
0xAFED2C69, 0x880525C2, 0xE01C8B18, 0xE40001FC,
|
||||
0x671C2D40, 0x624DDE63, 0x8B013273, 0x0009A1B5,
|
||||
0x6C43644D, 0x3CEC62E3, 0x720465C2, 0x3D2C6D43,
|
||||
0x615266D2, 0x216B7408, 0x2512AFED, 0x8B138830,
|
||||
0xE200DE58, 0x64E22D20, 0x8B042448, 0x420BD257,
|
||||
0xA19A0009, 0x55E10009, 0x57E356E2, 0xDD545CE4,
|
||||
0x2FC64D0B, 0x7F04A191, 0x89018828, 0x0009A0EA,
|
||||
0xE143DE4C, 0x622D62E1, 0x8F033217, 0x56FB1FEB,
|
||||
0x2621E240, 0x8B013217, 0x0009A0D5, 0xE1015EFB,
|
||||
0x301685E1, 0xA0CE8B01, 0xE4010009, 0x2D4055FB,
|
||||
0x6451B179, 0xE14357FB, 0xE0546271, 0x3517652D,
|
||||
0x0F568D41, 0x3563E640, 0xE6008B05, 0x0F65E034,
|
||||
0xA00FE11A, 0x615372C0, 0x41214121, 0x41214121,
|
||||
0x45214121, 0x45214521, 0xC9036053, 0xE0346603,
|
||||
0x71180F65, 0x2209E007, 0x641DE030, 0x0F2565F3,
|
||||
0x1F4EB1F1, 0x04FDE034, 0x674DE030, 0x47080CFD,
|
||||
0x607361CD, 0x4108D22B, 0xE00F0CFE, 0x1F1F420B,
|
||||
0x2CD96D07, 0x5EFB6073, 0x85E20FC6, 0x420B51FF,
|
||||
0x2C0B600D, 0x54FE6073, 0xB1BB0FC6, 0xE05465F3,
|
||||
0x652D62E1, 0xE6400F56, 0x89623563, 0xE050E100,
|
||||
0x60230F15, 0x4008C903, 0x6D034000, 0xE0406103,
|
||||
0xE0440FD6, 0xD217EEFF, 0x6EEC0FF6, 0x0F26E058,
|
||||
0x60E3420B, 0x42216253, 0x42214221, 0x66234221,
|
||||
0x326C4200, 0x45214200, 0xE0486707, 0x0F764521,
|
||||
0xC9036053, 0x40085CFB, 0x7C0630FC, 0x6E036D2D,
|
||||
0x1FD51FC6, 0x1F04A02E, 0x00117D00, 0x00202968,
|
||||
0x00200E2A, 0x00117D04, 0x00117D84, 0x00200700,
|
||||
0x0020074C, 0x00202034, 0x0FD6E04C, 0x05FEE044,
|
||||
0x64D3B189, 0x64E2E048, 0xE04006FE, 0x2E422469,
|
||||
0x01FE67C4, 0x667CE058, 0x420B02FE, 0x240B6063,
|
||||
0x05FEE044, 0xB15D2E42, 0xE05064D3, 0x7D0101FD,
|
||||
0x0F157101, 0x02FDE050, 0x3262E606, 0x56FB8BDC,
|
||||
0x55FB6261, 0x85514200, 0x302C750C, 0x6103701B,
|
||||
0x64F3E600, 0xE704A004, 0x76016256, 0x74042422,
|
||||
0x3273626D, 0x65F38BF8, 0x641DB13C, 0xB0D256FB,
|
||||
0xA0AA6461, 0xD4880009, 0xE201D588, 0x2D20450B,
|
||||
0x0009A0A3, 0x8B078829, 0xE200DE85, 0x66E22D20,
|
||||
0x646DB0A1, 0x0009A099, 0x622CE281, 0x8B3D3020,
|
||||
0xD680E738, 0xE0442D70, 0xE0480C6E, 0x6E621DC1,
|
||||
0x51611DE2, 0x54621D13, 0x55651D44, 0x57631D55,
|
||||
0x5C661D76, 0x0E6E1DC7, 0x1DE8E040, 0xE050016E,
|
||||
0x54641D19, 0x056E1D4A, 0x1D5BE04C, 0xE054076E,
|
||||
0x0C6E1D7C, 0x1DCDE058, 0xE044026E, 0xED001D2E,
|
||||
0xE04806D6, 0x16D126D2, 0x16D516D2, 0x16D616D3,
|
||||
0xE04006D6, 0xE05006D6, 0x06D616D4, 0x06D6E04C,
|
||||
0x06D6E054, 0x06D6E058, 0x1F29A057, 0x622CE282,
|
||||
0x89313020, 0x05FCE020, 0x625CE683, 0x3260666C,
|
||||
0xD65D8B07, 0x2650E500, 0x52617680, 0xA044D65B,
|
||||
0xE6902622, 0x3260666C, 0xD2578B16, 0xE500D658,
|
||||
0x60622250, 0xCB20D257, 0xE6052602, 0xD6562262,
|
||||
0x2252460B, 0x420BD255, 0xD2550009, 0x2262E601,
|
||||
0x4618D254, 0x2262A029, 0xD254D453, 0xD4546542,
|
||||
0x0009420B, 0x0009A021, 0xE524D647, 0xD5452650,
|
||||
0x16215257, 0x16225258, 0x16235259, 0x1624525A,
|
||||
0x1625525B, 0x1626525C, 0x1627525D, 0x1628525E,
|
||||
0x1F29525F, 0xE2001629, 0x15281527, 0x152A1529,
|
||||
0x152C152B, 0x152E152D, 0x7F5C152F, 0x6EF64F26,
|
||||
0x000B6DF6, 0x4F226CF6, 0xE240614D, 0x89173123,
|
||||
0x3127E21F, 0xD43B8908, 0xE001D53B, 0x6642450B,
|
||||
0x26796707, 0x2462A00C, 0x3127E23F, 0xD7358908,
|
||||
0x71E0D635, 0x460BE001, 0x62075571, 0x17512529,
|
||||
0x000B4F26, 0x4F220009, 0xE240614D, 0x89153123,
|
||||
0x3127E21F, 0xD42B8907, 0x6642D22B, 0xE001420B,
|
||||
0xA00B260B, 0xE23F2462, 0x89073127, 0xD626D725,
|
||||
0x71E05571, 0xE001460B, 0x1751250B, 0x000B4F26,
|
||||
0xE6400009, 0x46284618, 0x6252D520, 0x89FC2268,
|
||||
0x0009000B, 0x4618E680, 0xD51C4628, 0x22686252,
|
||||
0x000B89FC, 0xA0010009, 0x7201E200, 0x8BFC3242,
|
||||
0x0009000B, 0x4618E680, 0xD5154628, 0x22686252,
|
||||
0x000B8BFC, 0x00000009, 0x0020296C, 0x00200E2A,
|
||||
0x00117D04, 0x00202858, 0x00117D80, 0x002028EC,
|
||||
0x001C3500, 0x001D4004, 0x00200F26, 0x002009C4,
|
||||
0x001E212C, 0x001C3D28, 0x00117D00, 0x00200E8A,
|
||||
0x00202984, 0x001C3704, 0x00202034, 0x001C373C,
|
||||
0x001C3700, 0x4F222FE6, 0x6E537FFC, 0x2F42BFCA,
|
||||
0xD61561E2, 0x1615E280, 0x421854E1, 0x55E21646,
|
||||
0x16574228, 0x6EF257E3, 0x2E2B1678, 0x7F0426E2,
|
||||
0xAFA74F26, 0x2FC66EF6, 0x2FE62FD6, 0xDD0A4F22,
|
||||
0xBFAF6C53, 0xBF946E43, 0xBFAB2DE2, 0x51D50009,
|
||||
0x54D62C12, 0x55D71C41, 0x56D81C52, 0x4F261C63,
|
||||
0x6DF66EF6, 0x6CF6000B, 0x001C370C, 0x0009A0F8,
|
||||
0xD19B4F22, 0xD49B9299, 0x2122B00D, 0x9795E605,
|
||||
0xB0229595, 0xB0366463, 0xB03A0009, 0xB03D0009,
|
||||
0xA06C0009, 0x4F124F26, 0xD1934F02, 0x94873145,
|
||||
0x4609060A, 0x46094609, 0x00293646, 0xD78CD58F,
|
||||
0x2500CA01, 0x4F062762, 0x4F16000B, 0xBFEA4F22,
|
||||
0xB0230009, 0xA0520009, 0x2FE64F26, 0x6E63D188,
|
||||
0x44186612, 0x4528926D, 0x26294408, 0x44084500,
|
||||
0x4400265B, 0x4708264B, 0x47082162, 0x27EBD181,
|
||||
0x000B2172, 0xD1806EF6, 0xE603D480, 0x000B2162,
|
||||
0xD27F2462, 0xE40A9656, 0x2262AFB0, 0x2FC62FB6,
|
||||
0x2FE62FD6, 0xDC7B4F22, 0x2C22E201, 0xBFA5E40A,
|
||||
0x60C27C44, 0xCB01ED00, 0x60C22C02, 0xC901EB64,
|
||||
0x6E03A008, 0x89073DB2, 0xE40160C2, 0xBF95C901,
|
||||
0x7D016E03, 0x8BF52EE8, 0x8B033DB2, 0xD26FD46E,
|
||||
0x0009420B, 0x4F26E40A, 0x6DF66EF6, 0xAF856CF6,
|
||||
0x44116BF6, 0x604B8F01, 0x000B6043, 0x2F860009,
|
||||
0x2FA62F96, 0x2FC62FB6, 0x2FE62FD6, 0x7FFC4F22,
|
||||
0x6DA3EA00, 0xDC626BA3, 0x9914E864, 0x8B4E2BB8,
|
||||
0x3AE3EE0A, 0x60C2894B, 0xCB02ED00, 0x62C22C02,
|
||||
0x2F0260C2, 0xA010C902, 0x096C6E03, 0x5BB45288,
|
||||
0x1FFF09B4, 0x01FF03C4, 0x89083D83, 0xE46460C2,
|
||||
0xC9022F02, 0x6E03BF52, 0x2EE87D01, 0xD1518BF4,
|
||||
0x54C1D551, 0x66526412, 0x6269EE01, 0x4220622F,
|
||||
0x622F4219, 0x4E182299, 0x8D0322E8, 0xE4FF6423,
|
||||
0x3428229A, 0x6572D749, 0x622F6259, 0x42194220,
|
||||
0x2299622F, 0x8D0322E8, 0xE6FF6623, 0x3628229A,
|
||||
0x3468BFA7, 0x30E2EE02, 0xAFB78901, 0xD240EB01,
|
||||
0x6EECEEE6, 0xBF21E40A, 0xAFAF22E2, 0xEE0A7A01,
|
||||
0x89013AE3, 0x8B033D83, 0xD234D43A, 0x0009420B,
|
||||
0x4F267F04, 0x6DF66EF6, 0x6BF66CF6, 0x69F66AF6,
|
||||
0x68F6000B, 0x5651D534, 0x46286052, 0x306C000B,
|
||||
0x2FC62FB6, 0x2FE62FD6, 0x4F124F22, 0xBFF14F02,
|
||||
0x6B036E43, 0xDD1CDC2D, 0x0009BFEC, 0x3C0530B8,
|
||||
0x4609060A, 0x46014609, 0x020A3D65, 0x42094209,
|
||||
0x32E24209, 0x4F068BF0, 0x4F264F16, 0x6DF66EF6,
|
||||
0x000B6CF6, 0x2FE66BF6, 0xDE214F22, 0xE500E102,
|
||||
0x2E12E403, 0x2E52BFD4, 0x4618E606, 0xE403E700,
|
||||
0x2E722E62, 0xAFCB4F26, 0x4F226EF6, 0x0009BFEB,
|
||||
0xE6E6D213, 0xE40A666C, 0x2262BFC2, 0x4F26AFE3,
|
||||
0x002028F0, 0x0024CDE0, 0x10624DD3, 0x00202AF0,
|
||||
0x001C5814, 0x001C59D0, 0x001C59A4, 0x001C639C,
|
||||
0x001C5804, 0x001C581C, 0x00202998, 0x00200E2A,
|
||||
0x001C5860, 0x001C6864, 0x001C59BC, 0x001C69BC,
|
||||
0x001C947C, 0x002029B0, 0x001C1040, 0xCCCCCCCD,
|
||||
0x001D4004, 0x2F962F86, 0x2FB62FA6, 0x2FD62FC6,
|
||||
0x4F222FE6, 0xE4007FE4, 0x4528E510, 0x67436C43,
|
||||
0xE107A00F, 0x6043644D, 0x0F564008, 0xEE0060C3,
|
||||
0x815125C1, 0x81538152, 0x157315E2, 0x751415E4,
|
||||
0x624D7401, 0x8BED3213, 0xDA6F51F1, 0x1A1154F2,
|
||||
0xD16E2A12, 0x57F455F3, 0x6DF258F5, 0x1141D96C,
|
||||
0x11532142, 0x11751152, 0x11871174, 0x52F61186,
|
||||
0x19D1D668, 0xD86829D2, 0xDA68E950, 0x1621EBB4,
|
||||
0x6BBC2622, 0xA0214908, 0x6EEDEE00, 0x61E36DE3,
|
||||
0x41084D08, 0x31EC3DEC, 0x41084D08, 0x60C33D8C,
|
||||
0xE7904108, 0x81D12DC1, 0x41086093, 0x81D2677C,
|
||||
0x31AC60C3, 0x3472E200, 0x1DD281D3, 0xD4551D13,
|
||||
0x1D248D01, 0xB03AD450, 0x7E0165D3, 0x34B264ED,
|
||||
0xD14D8BDB, 0x6512DB52, 0x4529D24D, 0x64121B51,
|
||||
0x674DD14A, 0x67222B72, 0x4729D64E, 0x69221B73,
|
||||
0x689D2FD2, 0x69121B82, 0x5A122692, 0x5B1416A2,
|
||||
0x16B4DA44, 0x16C65C16, 0x16EA6EA2, 0x4F267F1C,
|
||||
0x6DF66EF6, 0x6BF66CF6, 0x69F66AF6, 0x68F6000B,
|
||||
0x60616642, 0x8D04C803, 0x6061E500, 0x8802C903,
|
||||
0x52628B03, 0x51246563, 0x000B2412, 0x2FD66053,
|
||||
0x4F222FE6, 0x6E537FEC, 0xE5506253, 0xE4006D43,
|
||||
0xA0014508, 0x5224E101, 0x22116043, 0x81238121,
|
||||
0x81226053, 0x362056E2, 0xD22F8BF5, 0x64F316E4,
|
||||
0x420BE614, 0x65E165E3, 0x2549E4FC, 0x61F12E51,
|
||||
0x214965F3, 0x54D12F11, 0x410BD127, 0x57D1E614,
|
||||
0xCB016071, 0x1DE12701, 0x4F267F14, 0x000B6EF6,
|
||||
0x2FD66DF6, 0x4F222FE6, 0x6E537FEC, 0xE5FC6653,
|
||||
0x60616D43, 0xCB012059, 0x52E22601, 0x8B063260,
|
||||
0x51E212E4, 0x8B0431E0, 0xA00252D1, 0xAFF01E22,
|
||||
0xD2155664, 0xE61464F3, 0x65E3420B, 0xE1FC67E1,
|
||||
0x2E712719, 0x54D167F1, 0xD10F2719, 0xE61465F3,
|
||||
0x2F71410B, 0x602152D1, 0x2201CB01, 0x7F141DE1,
|
||||
0x6EF64F26, 0x6DF6000B, 0x002028BC, 0x002028C4,
|
||||
0x002028B4, 0x002028E4, 0x0010008C, 0x00100EC0,
|
||||
0x001E2108, 0x001C3D00, 0x00202194, 0x2FC62FB6,
|
||||
0x2FE62FD6, 0xD6314F22, 0x60D36D62, 0x894DC803,
|
||||
0xDB30DC2F, 0x0009A02C, 0xC9036061, 0x892B8801,
|
||||
0xD22DD42B, 0x0009420B, 0x65035603, 0xC8208561,
|
||||
0xE0508903, 0x720102BE, 0x85620B26, 0x4000600D,
|
||||
0x4000366A, 0x40004624, 0x206D4624, 0xD423C903,
|
||||
0x40086E03, 0xD1224000, 0x340C410B, 0x61E3D521,
|
||||
0xD721E001, 0x450BD221, 0x64E37E30, 0x2702420B,
|
||||
0x66C252C1, 0x8BCF3620, 0x4E18EE01, 0xA011DB1C,
|
||||
0x6061EC75, 0x8801C903, 0xD4198910, 0x460BD612,
|
||||
0xD4180009, 0x470BD718, 0xD2136503, 0x64C3D113,
|
||||
0x22E2410B, 0x66B252B1, 0x8BEA3620, 0xC80460D3,
|
||||
0xD2128906, 0x6EF64F26, 0x6CF66DF6, 0x6BF6422B,
|
||||
0x6EF64F26, 0x6CF66DF6, 0x6BF6000B, 0x001E2100,
|
||||
0x002028BC, 0x00202858, 0x00200AE0, 0x002028C4,
|
||||
0x00200B62, 0x00202034, 0x001C3D30, 0x00200DF0,
|
||||
0x002028B4, 0x002028E4, 0x00200AFE, 0x002000F8,
|
||||
0xE601D237, 0x1265D537, 0x000B2252, 0xD6361266,
|
||||
0x88016062, 0xE1018B62, 0xD5342612, 0x5451D134,
|
||||
0xE0406212, 0x2122324C, 0x54115752, 0x1141347C,
|
||||
0x57125453, 0x1172374C, 0x52135755, 0x1123327C,
|
||||
0x56146452, 0x1164364C, 0x54155754, 0x1145347C,
|
||||
0x56165458, 0x1166364C, 0x6762D626, 0x327C5217,
|
||||
0x57611127, 0x327C5218, 0x57621128, 0x327C5219,
|
||||
0x57631129, 0x347C541A, 0x5764114A, 0x347C541B,
|
||||
0x5765114B, 0x347C541C, 0x5266114C, 0x372C571D,
|
||||
0x5267117D, 0x342C541E, 0x5268114E, 0x362C561F,
|
||||
0xD615116F, 0x041E6262, 0x342C7694, 0xE0440146,
|
||||
0x061E6262, 0x0166362C, 0x525CE048, 0xD60F051E,
|
||||
0x0156352C, 0xE0546262, 0x4229051E, 0x0156352C,
|
||||
0xE0585561, 0x4529061E, 0x0166365C, 0x0009000B,
|
||||
0x001C1010, 0x0000C34F, 0x001C1028, 0x001C369C,
|
||||
0x00202858, 0x001C3CA0, 0x001C36F4, 0x001C3B88,
|
||||
0xD62F7FFC, 0x2642644C, 0xC8205066, 0x2F028DFC,
|
||||
0x7F04000B, 0x2FD62FC6, 0x4F222FE6, 0x6D436C53,
|
||||
0xEE00A004, 0x7E0164D4, 0x644CBFEA, 0x8BF93EC2,
|
||||
0x6EF64F26, 0x000B6DF6, 0xA0016CF6, 0x76016643,
|
||||
0x22286260, 0x36488BFB, 0x6563AFE4, 0x2FB62F96,
|
||||
0x2FD62FC6, 0x4F222FE6, 0xEC1CED08, 0xDB196E53,
|
||||
0x61C3E90A, 0x60434B0B, 0x3092C90F, 0x66038D02,
|
||||
0x7630A001, 0x4D107637, 0x7E012E60, 0x7CFC8FF1,
|
||||
0x8058E000, 0x6EF64F26, 0x6CF66DF6, 0x000B6BF6,
|
||||
0x000B69F6, 0x000BE000, 0x2FE6E000, 0x7FEC4F22,
|
||||
0x6E436253, 0xBFD165F3, 0xBFC66423, 0xBFC464E3,
|
||||
0xD40564F3, 0x0009BFC1, 0x4F267F14, 0x6EF6000B,
|
||||
0x001C0004, 0x002020F4, 0x002029CC, 0xE110D59C,
|
||||
0xE6406050, 0x2500C9FD, 0xE0FF75E9, 0x80516453,
|
||||
0x80538052, 0x80568055, 0x251075EF, 0xE1EF6250,
|
||||
0x2219E001, 0xE7202520, 0x24608052, 0x2570000B,
|
||||
0xE4FDD590, 0xE7026152, 0x25122149, 0x74016052,
|
||||
0x2502CB01, 0xD18C6652, 0x25622649, 0x92C26012,
|
||||
0x2102CB08, 0xC9CF6012, 0x60122102, 0x2102CB03,
|
||||
0x000B1172, 0x4F221123, 0xE100D484, 0xD285D784,
|
||||
0xD5852410, 0x2711D485, 0x2211E700, 0xBFBD2511,
|
||||
0xD5832471, 0x2560E600, 0x4F26AFD2, 0xD281664C,
|
||||
0x362C4600, 0xCB106060, 0x2600000B, 0xD27D654C,
|
||||
0x352C4500, 0xE1EF6650, 0x000B2619, 0x664C2560,
|
||||
0x4600D279, 0x6060362C, 0x000BCB10, 0x654C2600,
|
||||
0x4500D275, 0x6650352C, 0x2619E1EF, 0x2560000B,
|
||||
0xD270664C, 0x362C4600, 0xCB086060, 0x2600000B,
|
||||
0xD26C654C, 0x352C4500, 0xE1F76650, 0x000B2619,
|
||||
0x664C2560, 0x4600D268, 0x6060362C, 0x000BCB08,
|
||||
0x654C2600, 0x4500D264, 0x6650352C, 0x2619E1F7,
|
||||
0x2560000B, 0xD65F624C, 0x326C4200, 0xC9086020,
|
||||
0x40214021, 0x000B4021, 0x624C600C, 0x4200D65A,
|
||||
0x6020326C, 0x4021C908, 0x40214021, 0x600C000B,
|
||||
0xD156644C, 0x341C74FF, 0x000B6240, 0xD154602C,
|
||||
0x341C644C, 0x000B6240, 0x2FE6602C, 0x655C4F22,
|
||||
0x3567E60A, 0x6E438D15, 0x6453BFEA, 0x60EC640C,
|
||||
0x8B028801, 0xA002E00F, 0x44092409, 0x624C4409,
|
||||
0x3263E60A, 0xBFE28905, 0x620C644C, 0xC8806023,
|
||||
0xE2008B00, 0x4F266023, 0x6EF6000B, 0xD6414F22,
|
||||
0x88016062, 0xB2228B03, 0xA0030009, 0xD23E0009,
|
||||
0x2260E640, 0xE200D63D, 0x000B4F26, 0x4F222622,
|
||||
0x6062D638, 0x8B018802, 0x0009B26C, 0xE200D637,
|
||||
0x000B4F26, 0x0FFF2622, 0xD433D532, 0xE701E100,
|
||||
0x000B2512, 0xD2302470, 0x000BE604, 0xD5202260,
|
||||
0x6150E4FD, 0x2149D62E, 0x2510E700, 0x2670000B,
|
||||
0xE4FBD51B, 0x22496250, 0x2520000B, 0xE4F7D518,
|
||||
0x22496250, 0x2520000B, 0xD2264F22, 0x600D8522,
|
||||
0x89112008, 0x89138801, 0x89158803, 0x89178805,
|
||||
0x89418806, 0x89478808, 0x894D8809, 0x8953880A,
|
||||
0x8959880B, 0x0009A060, 0x0009B062, 0x600CA05D,
|
||||
0x0009B070, 0x600CA059, 0x0009B07A, 0x600CA055,
|
||||
0x6260D606, 0x8B4F2228, 0x0009B086, 0x600CA04D,
|
||||
0x001E1028, 0x001E2148, 0x001E1108, 0x0020293D,
|
||||
0x0020292C, 0x0020292E, 0x00202930, 0x00202910,
|
||||
0x001E1008, 0x001E103F, 0x001E105F, 0x001E1030,
|
||||
0x001E1090, 0x00202938, 0x001E100B, 0x00202934,
|
||||
0x0020293C, 0x00202904, 0x6260D687, 0x8B232228,
|
||||
0x0009B06A, 0x600CA021, 0x6260D683, 0x8B1B2228,
|
||||
0x0009B0B4, 0x600CA019, 0x6260D67F, 0x8B132228,
|
||||
0x0009B0BA, 0x600CA011, 0x6260D67B, 0x8B0B2228,
|
||||
0x0009B11E, 0x600CA009, 0x6260D677, 0x8B032228,
|
||||
0x0009B136, 0x600CA001, 0x4F26E000, 0x0009000B,
|
||||
0xD273D172, 0xD5738412, 0x4000C90F, 0xD772012D,
|
||||
0x611CE403, 0xD671E20F, 0x27122540, 0xE0012520,
|
||||
0x2602000B, 0xE601D269, 0x30668523, 0xE0008D06,
|
||||
0xE000D267, 0x8122D669, 0x2602E001, 0x0009000B,
|
||||
0x8523D262, 0x2008600D, 0x88018905, 0xD6648B0A,
|
||||
0xCB016060, 0xD6612600, 0xE101D45D, 0x2612E001,
|
||||
0x8142000B, 0xE000000B, 0xE501D158, 0x45188513,
|
||||
0x3453640D, 0x8D056603, 0xD25AE000, 0xE001D557,
|
||||
0x25022260, 0x0009000B, 0xD1504F22, 0x650D8513,
|
||||
0x44196453, 0x672E6249, 0x602C227D, 0x89098801,
|
||||
0x890C8802, 0x89108803, 0x89268806, 0x89298807,
|
||||
0x0009A038, 0xD64DD54C, 0xA027E212, 0x625C2652,
|
||||
0x8B2F2228, 0xA01ED64A, 0x605C6262, 0x89052008,
|
||||
0x89088810, 0x890B8820, 0x0009A024, 0xD643D445,
|
||||
0xA013E204, 0xD7442642, 0xE20CD640, 0x2672A00E,
|
||||
0xD63ED542, 0xA009E218, 0xD4412652, 0xE20AD63B,
|
||||
0x2642A004, 0xD639D23F, 0xE22E2622, 0xD43E8515,
|
||||
0x3277670D, 0x8F012421, 0x24516503, 0x0009B0DF,
|
||||
0xE001A001, 0x4F26E000, 0x0009000B, 0xE101D629,
|
||||
0x2610D436, 0xD7286541, 0x655DD128, 0xE001E20F,
|
||||
0x26202752, 0x2102000B, 0x4F222FE6, 0x8523D21F,
|
||||
0x2448640C, 0xD62D8B08, 0xE200D521, 0x84512621,
|
||||
0x20499430, 0x8051A026, 0x60E0DE1D, 0x8D0BC840,
|
||||
0x3427E201, 0xD1258922, 0x420BD225, 0xD5252141,
|
||||
0xCB046052, 0x2502A00B, 0x89173427, 0xD722D21F,
|
||||
0x2241470B, 0xE5FBD61F, 0x21596162, 0x84E12612,
|
||||
0xB12DCB80, 0x60E080E1, 0xCB04D61C, 0x60602E00,
|
||||
0x2600C93F, 0xE001D609, 0x2602A001, 0x4F26E000,
|
||||
0x6EF6000B, 0x0000FF7F, 0x0020293D, 0x00202904,
|
||||
0x00202910, 0x001E1100, 0x001E100C, 0x00202934,
|
||||
0x001E1000, 0x001E1001, 0x00202AF4, 0x00202918,
|
||||
0x00202920, 0x00202B62, 0x00202B66, 0x00202B72,
|
||||
0x00202B8A, 0x00202B94, 0x0020291C, 0x0020292A,
|
||||
0x00201AB6, 0x001E1108, 0x00201BC2, 0x001E1015,
|
||||
0x6060D696, 0x8919C880, 0x6021D295, 0x8B158801,
|
||||
0xE501D294, 0x30568524, 0xD1938910, 0xD493E203,
|
||||
0x65412120, 0x655DE00B, 0xD5910656, 0xE702E40F,
|
||||
0x25712140, 0xE001D78F, 0x2702000B, 0xE000000B,
|
||||
0x4F222FE6, 0x84E1DE8C, 0x8934C880, 0x8554D585,
|
||||
0x8F302008, 0xD7896103, 0x66728553, 0x650C6403,
|
||||
0x620C8566, 0x8B263520, 0xD780D685, 0x644C651C,
|
||||
0x27412651, 0xC84060E0, 0xD2828907, 0x0009420B,
|
||||
0x6062D681, 0xA008CB04, 0xD1802602, 0x0009410B,
|
||||
0xE5FBD67D, 0x24596462, 0xB0A12642, 0xD5750009,
|
||||
0x2522E201, 0xD77A60E0, 0x2E00CB04, 0xC93F6070,
|
||||
0xA0012700, 0xE0006023, 0x000B4F26, 0x2FA66EF6,
|
||||
0x2FC62FB6, 0x2FE62FD6, 0xE240DA69, 0xDC6666A1,
|
||||
0x3123616D, 0x62638900, 0x6ED36D2C, 0x4E2136D8,
|
||||
0x4E212A61, 0xDB6CD46B, 0xE700A00F, 0x770166B2,
|
||||
0x71026163, 0x65612B12, 0x71026613, 0x62612B12,
|
||||
0x622D655D, 0x325C4228, 0x627C2422, 0x8BED32E3,
|
||||
0xC90360D3, 0x8B108803, 0xED076EB2, 0x710261E3,
|
||||
0x67132B12, 0x62E17102, 0x65712B12, 0x655D622D,
|
||||
0x352C4528, 0xA00C2CD0, 0x88022452, 0xA0038B01,
|
||||
0x8801E203, 0xE2018B05, 0x66B22C20, 0x677D6761,
|
||||
0xEB0F2472, 0x6DA12CB0, 0x8B052DD8, 0xD445D24F,
|
||||
0xE101EE00, 0x241222E2, 0x6DF66EF6, 0x6BF66CF6,
|
||||
0x6AF6000B, 0x2FE62FD6, 0xE240DD3D, 0x616D66D1,
|
||||
0x89003123, 0x672C6263, 0xDE433678, 0x2D617703,
|
||||
0xD6404721, 0x472164E2, 0xE100A00E, 0x71016562,
|
||||
0x24506253, 0x42197401, 0x74012420, 0x24504529,
|
||||
0x45197401, 0x74012450, 0x3273621C, 0x42008BEE,
|
||||
0x64D166E2, 0x362C4200, 0x8F062448, 0xDD332E62,
|
||||
0xE500DE28, 0x2D52E701, 0x6EF62E72, 0x6DF6000B,
|
||||
0x2FE62FD6, 0xEE014F22, 0xED0AA005, 0x64E3BCB6,
|
||||
0x64E3BCBC, 0x62EC7E01, 0x8BF732D7, 0xEE01A005,
|
||||
0x64E3BCBD, 0x64E3BCC3, 0x62EC7E01, 0x8BF732D7,
|
||||
0x6EF64F26, 0x6DF6000B, 0x2FE62FD6, 0x7FFC4F22,
|
||||
0x6060D61F, 0x89758801, 0xE101D41E, 0xD7128548,
|
||||
0x650D2610, 0x45196070, 0x6659DD1B, 0x61D3626E,
|
||||
0xC840262D, 0x74027102, 0x8D47D718, 0xD218666C,
|
||||
0xE501DE0A, 0xA0312E22, 0x0000EE04, 0x001E1001,
|
||||
0x0020292A, 0x00202904, 0x001E1100, 0x0020292E,
|
||||
0x0020291C, 0x00202934, 0x001E1000, 0x00202920,
|
||||
0x0020292C, 0x00201AB6, 0x001E1108, 0x00201BC2,
|
||||
0x001E1015, 0x001E100C, 0x00202918, 0x00202938,
|
||||
0x0020293C, 0x00202AF4, 0x00202B8A, 0x00202B96,
|
||||
0x00202B06, 0x75016245, 0x71022121, 0x32E3625C,
|
||||
0x60638BF8, 0xE60181D4, 0xE417D538, 0x3243626C,
|
||||
0x6255891E, 0x27217601, 0x7702AFF8, 0xDE35D234,
|
||||
0x2E22E501, 0xEE04A004, 0x75016245, 0x71022121,
|
||||
0x32E3625C, 0x60638BF8, 0xE60181D4, 0xA004D52E,
|
||||
0x6255E417, 0x27217601, 0x626C7702, 0x8BF83243,
|
||||
0x2D21924B, 0xD72AD429, 0x2F126142, 0x6DF265F2,
|
||||
0xC9806053, 0x60532700, 0x6103C960, 0x60538071,
|
||||
0x65F26EF2, 0x4D19C903, 0x80724529, 0x451960DC,
|
||||
0x4E298172, 0x62EC605C, 0x302C4018, 0x6D428173,
|
||||
0x2FD22118, 0x62F26EF2, 0x421966F2, 0x656C4629,
|
||||
0x602C66F2, 0x401864EC, 0x304C4629, 0x81744619,
|
||||
0x4018606C, 0x8F07305C, 0xBCB58175, 0x620C0009,
|
||||
0x89082228, 0x0009A00A, 0x88406013, 0xB00A8B03,
|
||||
0xA0030009, 0xD60B0009, 0x2622E202, 0x4F267F04,
|
||||
0x000B6EF6, 0x000B6DF6, 0x060A0009, 0x00202B36,
|
||||
0x00202B34, 0x00202920, 0x00202B08, 0x001E100C,
|
||||
0x00202904, 0x00202934, 0x7FFC4F22, 0x6620D27E,
|
||||
0x8D082668, 0xD47D2F60, 0x420BD27D, 0x64F00009,
|
||||
0xA0907F04, 0x7F044F26, 0x000B4F26, 0x000B0009,
|
||||
0x2FE60009, 0xDE774F22, 0x60E0D677, 0xCBC0D477,
|
||||
0x62602E00, 0xC803602C, 0x40218904, 0x70014021,
|
||||
0x6603A002, 0x66034009, 0xD671616D, 0xE500A004,
|
||||
0x75016262, 0x74042422, 0x3213625D, 0xD16D8BF8,
|
||||
0x0009410B, 0xE401D66C, 0x84E22641, 0x80E2C9BF,
|
||||
0x000B4F26, 0x2FE66EF6, 0xD5687FFC, 0x6250DE61,
|
||||
0x642C84E2, 0xCB407404, 0x80E2614D, 0x44216413,
|
||||
0xD7634421, 0xE600A004, 0x76016256, 0x27222F22,
|
||||
0x3243626D, 0x60138BF8, 0x2008C903, 0x88038912,
|
||||
0x88028905, 0x88018906, 0xA0088907, 0xE0070009,
|
||||
0x8078A005, 0xA002E003, 0xE0018078, 0x62528078,
|
||||
0x27222F22, 0xD650E00F, 0x60618078, 0x8B018801,
|
||||
0x2621E200, 0x6060D64F, 0x2600CB08, 0xC93F60E0,
|
||||
0x7F042E00, 0x6EF6000B, 0x6021D247, 0x8D188801,
|
||||
0xD2466143, 0x22106053, 0x60638021, 0xD4468121,
|
||||
0xE500A007, 0x027C605D, 0x364C6603, 0x26207001,
|
||||
0x625D6503, 0x3213611C, 0xD6408BF4, 0xC9BF6060,
|
||||
0x000B2600, 0x2FD60009, 0x4F222FE6, 0x60437FFC,
|
||||
0x8D02C820, 0xBF6A6E43, 0x60E30009, 0x8901C810,
|
||||
0x0009BF67, 0xC84060E3, 0xBF8C8901, 0x60E30009,
|
||||
0x8929C801, 0x60D0DD32, 0x8D03C802, 0xD6312F00,
|
||||
0x0009460B, 0xC80460F0, 0xD62F8902, 0x0009460B,
|
||||
0x602362F0, 0x8902C880, 0xC97F60D0, 0x60232D00,
|
||||
0x8902C801, 0x420BD229, 0xD5290009, 0x88026052,
|
||||
0xD2288B03, 0xA005E604, 0x88012260, 0xD2258B02,
|
||||
0x2260E601, 0x2522E200, 0xC88060E3, 0xD2228916,
|
||||
0x60E36E20, 0x8902C802, 0x420BD220, 0x60E30009,
|
||||
0x8902C804, 0x420BD21E, 0x60E30009, 0x8905C808,
|
||||
0x7F04D21C, 0x6EF64F26, 0x6DF6422B, 0x4F267F04,
|
||||
0x000B6EF6, 0x00006DF6, 0x001E1020, 0x002029D0,
|
||||
0x00200E2A, 0x001E1015, 0x001E10BF, 0x00117D00,
|
||||
0x001E10FC, 0x002000F8, 0x00202930, 0x00117D80,
|
||||
0x001E10F8, 0x001E10AE, 0x00117D84, 0x001E1017,
|
||||
0x001E1021, 0x0020105C, 0x0020107E, 0x00201608,
|
||||
0x00202934, 0x001E100B, 0x001E1028, 0x002010AE,
|
||||
0x002010C0, 0x002010CC, 0xD6A8644C, 0x346C74FF,
|
||||
0x2450000B, 0x644CD6A6, 0x000B346C, 0xD6A52450,
|
||||
0x346C644C, 0x2450000B, 0x616D625C, 0x41194208,
|
||||
0x60194208, 0x644C4200, 0x324C670E, 0x207DD19E,
|
||||
0xC90F4200, 0x000B321C, 0x67632200, 0x4208625C,
|
||||
0x42004208, 0x324C644C, 0x4200D198, 0x000B321C,
|
||||
0x2FE62270, 0x614C4F12, 0x4100D493, 0x6710314C,
|
||||
0x2729E29F, 0x65736E53, 0x4719676D, 0x672E6279,
|
||||
0x4221227D, 0x42214221, 0x7601662C, 0xE4014608,
|
||||
0x34E84608, 0x644C4600, 0x0E1A0467, 0x215025EB,
|
||||
0x000B4F16, 0x4F226EF6, 0xD2857FE8, 0x88016021,
|
||||
0xD2848B7B, 0x26686621, 0xD2838B77, 0x26686621,
|
||||
0xE50F8B73, 0xE401BFA0, 0xBFA3E501, 0xE586E400,
|
||||
0xE400655C, 0x2F50BFA3, 0xBFA0E401, 0xE602E506,
|
||||
0x60634618, 0x81F2E401, 0x6543BF9E, 0xE40185F2,
|
||||
0xBFAA6543, 0x85F26603, 0x6543E401, 0x6603BFB1,
|
||||
0xE40265F0, 0x6053756C, 0x80F8BF7E, 0xBF81E402,
|
||||
0x84F8E512, 0x7090E402, 0x6503BF81, 0x4618E602,
|
||||
0x81F66063, 0xBF7FE402, 0x85F6E500, 0x6603E402,
|
||||
0xE500BF8B, 0xE40285F6, 0xBF926603, 0xE5FEE500,
|
||||
0xE010655C, 0xBF5FE403, 0xE5130F54, 0xE40EBF62,
|
||||
0x05FCE010, 0xBF62E40E, 0xE5007585, 0xBF63E403,
|
||||
0xE500E640, 0xBF70E403, 0xE500E640, 0xBF78E403,
|
||||
0xE5FFE640, 0xE014655C, 0xBF45E404, 0xE40F0F54,
|
||||
0xE504BF48, 0x05FCE014, 0xBF48E40F, 0xE5017584,
|
||||
0xBF49E640, 0xE501E404, 0xBF56E640, 0xE501E404,
|
||||
0xE404E640, 0xAF5C7F18, 0x7F184F26, 0x000B4F26,
|
||||
0x4F220009, 0xD2427FF0, 0x88016021, 0xD2418B71,
|
||||
0x26686621, 0xD2408B6D, 0x26686621, 0xE50F8B69,
|
||||
0xE401BF1A, 0xBF1DE501, 0xE586E400, 0xE400655C,
|
||||
0x2F50BF1D, 0xBF1AE401, 0xE401E506, 0xBF1B6543,
|
||||
0xE401E640, 0xBF286543, 0xE401E640, 0xBF306543,
|
||||
0x65F0E640, 0x756CE402, 0xBEFD6053, 0xE40280F4,
|
||||
0xE512BF00, 0xE40284F4, 0xBF007090, 0xE6406503,
|
||||
0xBF01E402, 0xE640E500, 0xBF0EE402, 0xE640E500,
|
||||
0xBF16E402, 0xE5FEE500, 0x6053655C, 0xBEE3E403,
|
||||
0xE51380F8, 0xE40EBEE6, 0xE40E84F8, 0xBEE67085,
|
||||
0xE5006503, 0xBEE7E640, 0xE500E403, 0xBEF4E640,
|
||||
0xE500E403, 0xBEFCE640, 0xE5FFE403, 0x6053655C,
|
||||
0xBEC9E404, 0xE40F80FC, 0xE504BECC, 0xE40F84FC,
|
||||
0xBECC7083, 0xE5016503, 0xBECDE640, 0xE501E404,
|
||||
0xBEDAE640, 0xE501E404, 0xE404E640, 0xAEE07F10,
|
||||
0x7F104F26, 0x000B4F26, 0x00000009, 0x001E1030,
|
||||
0x001E1080, 0x001E1090, 0x001E103F, 0x001E103E,
|
||||
0x0020292A, 0x0020292C, 0x0020292E, 0x0009000B,
|
||||
0x666CE680, 0x6563D2A0, 0x7540E700, 0x6473422B,
|
||||
0x2FB62FA6, 0x2FD62FC6, 0x4F222FE6, 0x4C18EC01,
|
||||
0xDA9BDB9A, 0x65B252B1, 0x89223520, 0xC9036051,
|
||||
0x891E8801, 0xD197DE95, 0x64E3410B, 0x85036503,
|
||||
0x670D66A2, 0xDD943762, 0xD494890A, 0x420BD294,
|
||||
0xD1940009, 0xE701D494, 0x21724D0B, 0x0009AFE2,
|
||||
0x420BD292, 0xD69264E3, 0x4D0BD492, 0xAFD926C2,
|
||||
0x4F260009, 0x6DF66EF6, 0x6BF66CF6, 0x6AF6000B,
|
||||
0x7FF44F22, 0xE6818546, 0x85472F01, 0x81F1666C,
|
||||
0xD27D8548, 0x854281F2, 0x81F367F3, 0xE40C8543,
|
||||
0x605381F4, 0x81F56563, 0x7540420B, 0x4F267F0C,
|
||||
0x0009000B, 0x2F962F86, 0x2FB62FA6, 0x2FD62FC6,
|
||||
0x4F222FE6, 0xE2007FEC, 0xA0CBDB7B, 0x6A132F21,
|
||||
0x4A08D27A, 0xDE7AE001, 0x4A00420B, 0x7E303AEC,
|
||||
0x1F021FE1, 0x66B2DD77, 0x362052B1, 0xA0B58B01,
|
||||
0x60610009, 0x8801C903, 0xA0AF8B01, 0x85610009,
|
||||
0x8974C801, 0xEE105163, 0xDC638512, 0xC9036603,
|
||||
0x85136403, 0x4021600D, 0xC93F4021, 0x8D2030E3,
|
||||
0xD7696503, 0x62704408, 0x44004408, 0x22284500,
|
||||
0x345C8F0C, 0x6043D265, 0x625D052D, 0x60294219,
|
||||
0x207D670E, 0x605C81F6, 0x81F8A00B, 0x6043D260,
|
||||
0x685D052D, 0x60894819, 0x209D690E, 0x605C81F6,
|
||||
0xD75C81F8, 0x22286272, 0xE0FF8902, 0x81F8600C,
|
||||
0xEEFF85F8, 0x6EEC650D, 0x8B0F35E0, 0x4E0BDE45,
|
||||
0x540364B3, 0xBF7BE502, 0xD4536803, 0x410BD147,
|
||||
0xD7526583, 0xD452E901, 0x2792A020, 0x26E9EEFC,
|
||||
0x81126063, 0x946E8513, 0x81132049, 0x45088512,
|
||||
0x62036953, 0xE50885F6, 0x8112202B, 0x45188513,
|
||||
0x8113209B, 0xD4478514, 0x8114205B, 0x851161B2,
|
||||
0x811120E9, 0x602162B2, 0x2201CB01, 0x00094C0B,
|
||||
0x56F160B2, 0xCB0152F2, 0xAF7C2A02, 0x85612622,
|
||||
0xC802DC3A, 0xD938D227, 0x8D0FD82C, 0x420B64B3,
|
||||
0x65030009, 0x480B6493, 0xE8015E03, 0x85EF2C82,
|
||||
0x650DD635, 0x64D3460B, 0x0009AF65, 0x0009420B,
|
||||
0x6E035403, 0xE5088544, 0x45186103, 0x31502159,
|
||||
0xBF258B03, 0xA007E501, 0x85410009, 0x620DD52B,
|
||||
0x89012258, 0xE500BF1C, 0x480B6493, 0xD42865E3,
|
||||
0xE801D611, 0x2C82460B, 0x0009AF45, 0x7B0862F1,
|
||||
0x2F217201, 0xEE0362F1, 0x31E7612D, 0xAF2E8901,
|
||||
0x7F140009, 0x6EF64F26, 0x6CF66DF6, 0x6AF66BF6,
|
||||
0x000B69F6, 0xFE0368F6, 0x002018B8, 0x002028E4,
|
||||
0x002028EC, 0x00200AE0, 0x00200E2A, 0x002028B4,
|
||||
0x00200B62, 0x001E2130, 0x00202AD4, 0x00200AFE,
|
||||
0x001C3D30, 0x00202AD8, 0x002028C4, 0x00202034,
|
||||
0x001C3D00, 0x00202AE4, 0x00202AF0, 0x002029D4,
|
||||
0x00202A54, 0x00202900, 0x002028BC, 0x001E212C,
|
||||
0x00202ADC, 0x00202AE0, 0x00200E8A, 0x00008000,
|
||||
0x00202AEC, 0x4F222FE6, 0x6E22D20D, 0xC84060E3,
|
||||
0x22E28D02, 0x0009BE7A, 0x4218E240, 0x89012E28,
|
||||
0x0009BE76, 0xC80560E3, 0xBECB8901, 0x60E30009,
|
||||
0x8902C802, 0xAE734F26, 0x4F266EF6, 0x6EF6000B,
|
||||
0x001C3510, 0x080A0C0E, 0x00020406, 0x1A1C1E20,
|
||||
0x12141618, 0x2E303234, 0x26282A2C, 0x3A3C3E40,
|
||||
0x6C625648, 0x41112F26, 0xE2208F18, 0x890B3123,
|
||||
0x321CD204, 0xD1026220, 0x412B312C, 0x00090009,
|
||||
0x0020205E, 0x00202014, 0x000BE000, 0x400062F6,
|
||||
0x40004000, 0x40004000, 0x40004000, 0x62F6000B,
|
||||
0x40004000, 0x40004000, 0x40004000, 0x40184000,
|
||||
0x62F6000B, 0x40004000, 0x40004000, 0x40004000,
|
||||
0x40284000, 0x62F6000B, 0x40004000, 0x40184000,
|
||||
0x000B4028, 0xC90F62F6, 0x40054005, 0x40054005,
|
||||
0x62F6000B, 0x4005C907, 0x40054005, 0x62F6000B,
|
||||
0x4005C903, 0x000B4005, 0xC90162F6, 0x000B4005,
|
||||
0x000062F6, 0x080A0C0E, 0x00020406, 0x1A1C1E20,
|
||||
0x12141618, 0x2E303234, 0x26282A2C, 0x3A3C3E40,
|
||||
0x6C625648, 0x41112F26, 0xE2208F18, 0x890B3123,
|
||||
0x321CD204, 0xD1026220, 0x412B312C, 0x00090009,
|
||||
0x0020211E, 0x002020D4, 0x000BE000, 0x400162F6,
|
||||
0x40014001, 0x40014001, 0x40014001, 0x62F6000B,
|
||||
0x40014001, 0x40014001, 0x40014001, 0x40194001,
|
||||
0x62F6000B, 0x40014001, 0x40014001, 0x40014001,
|
||||
0x40294001, 0x62F6000B, 0x40014001, 0x40194001,
|
||||
0x000B4029, 0x400462F6, 0x40044004, 0xC90F4004,
|
||||
0x62F6000B, 0x40044004, 0xC9074004, 0x62F6000B,
|
||||
0x40044004, 0x000BC903, 0x400462F6, 0x000BC901,
|
||||
0x000062F6, 0x3622E218, 0x67438F12, 0x0009A004,
|
||||
0x76FF6254, 0x74012420, 0xC8036053, 0x60438BF8,
|
||||
0x8902C803, 0x422BD22B, 0xD22B0009, 0x0009422B,
|
||||
0x2FE66473, 0x8D4A3450, 0x27786763, 0x62438947,
|
||||
0x227B225B, 0xC9016023, 0x8D203452, 0x2EE86E03,
|
||||
0x60238B15, 0x8B08C803, 0x47096643, 0x47106256,
|
||||
0x8FFB2622, 0xA0327604, 0x47010009, 0x61436673,
|
||||
0x46106255, 0x8FFB2121, 0xA0287102, 0x66430009,
|
||||
0x47106254, 0x8FFB2620, 0xA0207601, 0x61430009,
|
||||
0x2EE8357C, 0x8F15317C, 0x60236653, 0x8B07C803,
|
||||
0x76FC4709, 0x47106262, 0x21268FFB, 0x0009A00F,
|
||||
0x65634701, 0x75FE6673, 0x46106251, 0x21258FFB,
|
||||
0x0009A005, 0x626076FF, 0x8FFB4710, 0x60432124,
|
||||
0x6EF6000B, 0x00202306, 0x002027B2, 0xE21E2FE6,
|
||||
0x67633626, 0x8D1B6153, 0x3E106E43, 0x3E128916,
|
||||
0x65E38908, 0x3672E600, 0x62148910, 0x25207601,
|
||||
0x7501AFF9, 0x317C64E3, 0x6513347C, 0xE600A004,
|
||||
0x625075FF, 0x24247601, 0x8BF93672, 0x60E3A011,
|
||||
0x890831E2, 0x327C6213, 0x8B0432E6, 0x651364E3,
|
||||
0xA0086673, 0xD28F6EF6, 0x651364E3, 0x422B6673,
|
||||
0x000B6EF6, 0xE2046EF6, 0x67433622, 0x8F10356C,
|
||||
0xA004346C, 0x75FF0009, 0x76FF6250, 0x60532424,
|
||||
0x8BF8C803, 0xC8036043, 0xA1058901, 0xA2770009,
|
||||
0xA2990009, 0x2FB60009, 0x2FD62FC6, 0x7FE42FE6,
|
||||
0x6C636043, 0x66521F62, 0xC9037504, 0x1F516E53,
|
||||
0x45086503, 0xE1FC6D43, 0x2D194500, 0x1F732558,
|
||||
0x1F651F44, 0x2FD28D0B, 0x88086053, 0x88108923,
|
||||
0x8818895B, 0xA0898B01, 0xA0BD0009, 0x62630009,
|
||||
0x2D22E600, 0x7CFC7D04, 0xEB10A00D, 0xE60064E6,
|
||||
0x7CF065E6, 0x62E261E6, 0x1D512D42, 0x1D231D12,
|
||||
0x7E047D10, 0x3CB21FE1, 0x1F6589F0, 0x2FD21FC2,
|
||||
0xA0A11FE6, 0x64D21FD4, 0x44286263, 0x44294418,
|
||||
0x42184419, 0x4629242B, 0x2D424619, 0x65637D04,
|
||||
0xA0217CFD, 0x67E6EB10, 0x62E67CF0, 0x64E66673,
|
||||
0x256B4618, 0x2D5261E2, 0x65234729, 0x45184719,
|
||||
0x4229275B, 0x42191D71, 0x47186743, 0x4429227B,
|
||||
0x44196713, 0x247B4718, 0x1D431D22, 0x41194129,
|
||||
0x65137D10, 0x1FE17E04, 0x89DC3CB2, 0x1FE67EFF,
|
||||
0x1FC21F55, 0xA0672FD2, 0x6CF21FD4, 0x66C257F5,
|
||||
0x46286273, 0x42284629, 0x2C62262B, 0x7C045DF2,
|
||||
0x7DFE4729, 0xA01CEB10, 0x65E65EF1, 0x66E66273,
|
||||
0x47286753, 0x6763227B, 0x452961E6, 0x257B4728,
|
||||
0x2C2264E6, 0x65131C51, 0x45284629, 0x1C62265B,
|
||||
0x41296643, 0x216B4628, 0x44291C13, 0x67437C10,
|
||||
0x3DB27DF0, 0x1FD289E1, 0x7EFEA034, 0x51F56CF2,
|
||||
0x621366C2, 0x42284618, 0x42184619, 0x2C62262B,
|
||||
0x7C045DF2, 0x7DFF4119, 0xA01FEB10, 0x65E65EF1,
|
||||
0x64E67DF0, 0x42286253, 0x421867E6, 0x66E6212B,
|
||||
0x61432C12, 0x45194128, 0x251B4118, 0x65731C51,
|
||||
0x44194528, 0x245B4518, 0x64631C42, 0x47194428,
|
||||
0x274B4418, 0x46191C73, 0x61637C10, 0x89DE3DB2,
|
||||
0x7EFD1FD2, 0x1FC41FE6, 0x5DF2E704, 0xA00D5EF6,
|
||||
0x62E451F4, 0x66E47DFC, 0x65E464E4, 0x71012120,
|
||||
0x71012160, 0x71012140, 0x71012150, 0x89F03D72,
|
||||
0x66D357F3, 0x641365E3, 0x6EF67F1C, 0x6CF66DF6,
|
||||
0x6BF6A190, 0x00202194, 0x2FC62FB6, 0x2FE62FD6,
|
||||
0x60437FE4, 0x6C63C903, 0x66031F62, 0x460875FC,
|
||||
0x61526E43, 0x4600E2FC, 0x26682E29, 0x1F441F73,
|
||||
0x1F516D53, 0x8D0B1F15, 0x60632FE2, 0x891F8808,
|
||||
0x89538810, 0x8B018818, 0x0009A081, 0x0009A0B9,
|
||||
0xEB10A00D, 0x52D37DF0, 0x54D156D2, 0x2E1665D2,
|
||||
0x2E662E26, 0x2E427EFC, 0x1FD16153, 0x3CB27CF0,
|
||||
0x7D0489F0, 0x1F151FD6, 0x2FE21FC2, 0x1FE4A0A1,
|
||||
0x621366E2, 0x42294619, 0x42194618, 0x2E62262B,
|
||||
0x7CFF4118, 0xEB10A021, 0x54D37DF0, 0x624357D2,
|
||||
0x42194229, 0x55D1212B, 0x2E1666D2, 0x41296173,
|
||||
0x41194418, 0x2E46241B, 0x44296453, 0x44194718,
|
||||
0x2E76274B, 0x47296763, 0x47194518, 0x257B7EFC,
|
||||
0x46182E52, 0x1FD16163, 0x3CB27CF0, 0x7D0389DC,
|
||||
0x1F151FD6, 0x2FE21FC2, 0x1FE4A06B, 0x57F56EF2,
|
||||
0x627366E2, 0x46284629, 0x262B4229, 0x2E625CF2,
|
||||
0x7CFE4728, 0xA01BEB10, 0x7DF05DF1, 0x55D251D3,
|
||||
0x46296613, 0x54D1276B, 0x2E7662D2, 0x41286753,
|
||||
0x217B4729, 0x61432E16, 0x41294528, 0x2E56251B,
|
||||
0x44286523, 0x245B4529, 0x42282E46, 0x7CF06723,
|
||||
0x89E23CB2, 0x1FD67D02, 0xA03A1FC2, 0x67F21FE4,
|
||||
0x657251F5, 0x45296213, 0x45284519, 0x42194518,
|
||||
0x5CF2252B, 0x41282752, 0x7CFD4118, 0xA022EB10,
|
||||
0x7DF05DF1, 0x54D256D3, 0x45196563, 0x52D14628,
|
||||
0x4618215B, 0x6ED26543, 0x45192716, 0x265B4428,
|
||||
0x65436163, 0x45186423, 0x42284419, 0x4218254B,
|
||||
0x271664E3, 0x44196623, 0x264B2756, 0x4E282766,
|
||||
0x61E34E18, 0x3CB27CF0, 0x7D0189DB, 0x1FC21FD6,
|
||||
0xE7041F74, 0x51F45DF2, 0x5EF6A00D, 0x84E27EFC,
|
||||
0x620364E0, 0x7DFC84E1, 0x84E36503, 0x21646603,
|
||||
0x21542124, 0x3D722144, 0x57F389F0, 0x641366D3,
|
||||
0x7F1C65E3, 0x6DF66EF6, 0xA09D6CF6, 0x2F866BF6,
|
||||
0x2FA62F96, 0x2FC62FB6, 0x2FE62FD6, 0x614374E0,
|
||||
0x6A636873, 0x6B56E920, 0x6C567AE0, 0x6D567120,
|
||||
0x6E563A92, 0x64566756, 0x62566656, 0x11C121B2,
|
||||
0x11E311D2, 0x11451174, 0x8DEC1166, 0x71201127,
|
||||
0x6613A004, 0x7AFF6254, 0x76012620, 0x8BF92AA8,
|
||||
0x6EF66083, 0x6CF66DF6, 0x6AF66BF6, 0x000B69F6,
|
||||
0x2F8668F6, 0x2FA62F96, 0x2FC62FB6, 0x2FE62FD6,
|
||||
0x6A636873, 0x75E0E920, 0x56565257, 0x57545155,
|
||||
0x5D525E53, 0x6B525C51, 0x24662426, 0x24762416,
|
||||
0x7AE024E6, 0x24C624D6, 0x8DEC3A92, 0x66A324B6,
|
||||
0x6EF66783, 0x6CF66DF6, 0x6AF66BF6, 0xA04369F6,
|
||||
0x2FE668F6, 0xC8046063, 0x8D046E63, 0x62166153,
|
||||
0x24227EFC, 0x60E37404, 0x8908C818, 0x71046513,
|
||||
0x62526616, 0x24227EF8, 0xAFF41461, 0xE2047408,
|
||||
0x65133E22, 0x66E38D02, 0x6EF6A01C, 0x6EF6AF87,
|
||||
0xC8046063, 0x61638D04, 0x625275FC, 0x242671FC,
|
||||
0xC8186013, 0x75F88906, 0x66525251, 0x24662426,
|
||||
0x71F8AFF6, 0x3122E204, 0x66138F02, 0x0009AFA1,
|
||||
0x0009A00A, 0x0009A004, 0x76FF6254, 0x74012420,
|
||||
0x8BF92668, 0x6073000B, 0x0009A004, 0x625075FF,
|
||||
0x242476FF, 0x8BF92668, 0x6073000B, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x544F0D0A, 0x46205355, 0x00003A57, 0x2072614D,
|
||||
0x32203232, 0x20373030, 0x353A3731, 0x37333A32,
|
||||
0x00000000, 0x00000D0A, 0x00000043, 0x61766E49,
|
||||
0x2064696C, 0x72657375, 0x20726F20, 0x2079656B,
|
||||
0x00214449, 0x6E6B6E55, 0x206E776F, 0x6D6D6F63,
|
||||
0x3D646E61, 0x00000000, 0x61437748, 0x7262696C,
|
||||
0x6F697461, 0x6620206E, 0x0A6C6961, 0x0000000D,
|
||||
0x73696F4E, 0x61432065, 0x7262696C, 0x6F697461,
|
||||
0x6166206E, 0x21216C69, 0x00000D0A, 0x00000D0A,
|
||||
0x00000042, 0x000000FF, 0x00020001, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x010E010D, 0x00020003, 0x01090108,
|
||||
0x0002010A, 0x00030002, 0x02020201, 0x02040203,
|
||||
0x02060205, 0x02080207, 0x020A0209, 0x020C020B,
|
||||
0x020E020D, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x010E010D, 0x00FF010F, 0x01090108,
|
||||
0x010B010A, 0x00030002, 0x02020201, 0x02040203,
|
||||
0x02060205, 0x02080207, 0x020A0209, 0x020C020B,
|
||||
0x020E020D, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00000072, 0x00205220, 0x00000046,
|
||||
0x00000059, 0x73204142, 0x003D7165, 0x00000074,
|
||||
0x00000000, 0x02000112, 0x40FFFFFF, 0x12210ACE,
|
||||
0x20104890, 0x02090100, 0x0101002E, 0x09FA8000,
|
||||
0x04000004, 0x000000FF, 0x02010507, 0x07000200,
|
||||
0x00028205, 0x05070002, 0x00400383, 0x04050701,
|
||||
0x01004003, 0x002E0209, 0x80000101, 0x000409FA,
|
||||
0x00FF0400, 0x05070000, 0x00400201, 0x82050700,
|
||||
0x00004002, 0x03830507, 0x07010040, 0x40030405,
|
||||
0x03040100, 0x030C0409, 0x0079005A, 0x00410044,
|
||||
0x03180053, 0x00530055, 0x00320042, 0x0030002E,
|
||||
0x00570020, 0x0041004C, 0x0000004E, 0x00000000,
|
||||
0x00000000, 0x00000709, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, };
|
||||
|
||||
const u32_t zcFwImageSize=11204;
|
715
drivers/staging/otus/hal/hpfwu_OTUS_RC.c
Normal file
715
drivers/staging/otus/hal/hpfwu_OTUS_RC.c
Normal file
|
@ -0,0 +1,715 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
#include "cprecomp.h"
|
||||
|
||||
const u32_t zcFwImage[] = {
|
||||
0x0009000B, 0x4F222FE6, 0xDE287FFC, 0xE114D728,
|
||||
0x1E13D428, 0x1E4C470B, 0x0009B018, 0xA0039543,
|
||||
0x3652E600, 0x76018D04, 0xC84060E2, 0x2F028DF9,
|
||||
0xDE22D421, 0x00094E0B, 0x4E0BD421, 0xD4210009,
|
||||
0x00094E0B, 0x4F267F04, 0x6EF6A022, 0xD11E4F22,
|
||||
0x0009410B, 0x440BD41D, 0xD51D0009, 0x0009450B,
|
||||
0xE1FFD71C, 0xD21C611D, 0x50292712, 0xCB01E1FF,
|
||||
0xD61BD41A, 0x22121209, 0xE5011211, 0x2452E200,
|
||||
0xD5182622, 0x970FD618, 0x4F262572, 0x2620000B,
|
||||
0xDD17DC16, 0x4C0BDE17, 0x4D0B0009, 0x4E0B0009,
|
||||
0xAFF80009, 0x27100009, 0x00000640, 0x001C001C,
|
||||
0x002008EA, 0x0000B38E, 0x002028DC, 0x00200DA6,
|
||||
0x002028E8, 0x00202900, 0x00200C6C, 0x00200EA2,
|
||||
0x00200940, 0x001C3510, 0x001C3624, 0x001E212C,
|
||||
0x00202894, 0x0020288C, 0x002027F0, 0x00200B68,
|
||||
0x00201F74, 0x00201734, 0x2FD62FC6, 0x4F222FE6,
|
||||
0xDEA17FA4, 0x61E0E01C, 0x7D016DE3, 0x61D00F14,
|
||||
0xD59FD49E, 0x450BE020, 0xE0200F14, 0xE78004FC,
|
||||
0x604C66E2, 0x7D7F677C, 0x1F693070, 0x2D628F17,
|
||||
0x01FCE01C, 0x641CE500, 0xD797DE96, 0x3243625D,
|
||||
0xA21A8B01, 0x655D0009, 0x31EC6153, 0xE0286C10,
|
||||
0x6D530FC4, 0x3D7C62CE, 0xAFEF2D20, 0x20087501,
|
||||
0xE01C8B15, 0xE50001FC, 0xD78BDE8A, 0x641CA00A,
|
||||
0x6C53655D, 0x66C23CEC, 0x66626253, 0x2262327C,
|
||||
0x1F697504, 0x3243625D, 0xA1F68BF2, 0x88012D10,
|
||||
0xE01C8B16, 0xE40001FC, 0x671C2D40, 0x624DDE7D,
|
||||
0x8B013273, 0x0009A1E9, 0x62E3644D, 0x72046D43,
|
||||
0x3DEC6143, 0x65D2312C, 0x74086C12, 0x25C2AFEF,
|
||||
0x8B188804, 0x01FCE01C, 0x2D40E400, 0xDE71671C,
|
||||
0x3273624D, 0xA1D08B01, 0x644D0009, 0x62E36D43,
|
||||
0x65D23DEC, 0x61437204, 0x6612312C, 0x74086C52,
|
||||
0xAFED2C69, 0x880525C2, 0xE01C8B18, 0xE40001FC,
|
||||
0x671C2D40, 0x624DDE63, 0x8B013273, 0x0009A1B5,
|
||||
0x6C43644D, 0x3CEC62E3, 0x720465C2, 0x3D2C6D43,
|
||||
0x615266D2, 0x216B7408, 0x2512AFED, 0x8B138830,
|
||||
0xE200DE58, 0x64E22D20, 0x8B042448, 0x420BD257,
|
||||
0xA19A0009, 0x55E10009, 0x57E356E2, 0xDD545CE4,
|
||||
0x2FC64D0B, 0x7F04A191, 0x89018828, 0x0009A0EA,
|
||||
0xE143DE4C, 0x622D62E1, 0x8F033217, 0x56FB1FEB,
|
||||
0x2621E240, 0x8B013217, 0x0009A0D5, 0xE1015EFB,
|
||||
0x301685E1, 0xA0CE8B01, 0xE4010009, 0x2D4055FB,
|
||||
0x6451B179, 0xE14357FB, 0xE0546271, 0x3517652D,
|
||||
0x0F568D41, 0x3563E640, 0xE6008B05, 0x0F65E034,
|
||||
0xA00FE11A, 0x615372C0, 0x41214121, 0x41214121,
|
||||
0x45214121, 0x45214521, 0xC9036053, 0xE0346603,
|
||||
0x71180F65, 0x2209E007, 0x641DE030, 0x0F2565F3,
|
||||
0x1F4EB1F1, 0x04FDE034, 0x674DE030, 0x47080CFD,
|
||||
0x607361CD, 0x4108D22B, 0xE00F0CFE, 0x1F1F420B,
|
||||
0x2CD96D07, 0x5EFB6073, 0x85E20FC6, 0x420B51FF,
|
||||
0x2C0B600D, 0x54FE6073, 0xB1BB0FC6, 0xE05465F3,
|
||||
0x652D62E1, 0xE6400F56, 0x89623563, 0xE050E100,
|
||||
0x60230F15, 0x4008C903, 0x6D034000, 0xE0406103,
|
||||
0xE0440FD6, 0xD217EEFF, 0x6EEC0FF6, 0x0F26E058,
|
||||
0x60E3420B, 0x42216253, 0x42214221, 0x66234221,
|
||||
0x326C4200, 0x45214200, 0xE0486707, 0x0F764521,
|
||||
0xC9036053, 0x40085CFB, 0x7C0630FC, 0x6E036D2D,
|
||||
0x1FD51FC6, 0x1F04A02E, 0x00117D00, 0x00202904,
|
||||
0x00200DA6, 0x00117D04, 0x00117D84, 0x00200700,
|
||||
0x0020074C, 0x00201FD4, 0x0FD6E04C, 0x05FEE044,
|
||||
0x64D3B189, 0x64E2E048, 0xE04006FE, 0x2E422469,
|
||||
0x01FE67C4, 0x667CE058, 0x420B02FE, 0x240B6063,
|
||||
0x05FEE044, 0xB15D2E42, 0xE05064D3, 0x7D0101FD,
|
||||
0x0F157101, 0x02FDE050, 0x3262E606, 0x56FB8BDC,
|
||||
0x55FB6261, 0x85514200, 0x302C750C, 0x6103701B,
|
||||
0x64F3E600, 0xE704A004, 0x76016256, 0x74042422,
|
||||
0x3273626D, 0x65F38BF8, 0x641DB13C, 0xB0D256FB,
|
||||
0xA0AA6461, 0xD4880009, 0xE201D588, 0x2D20450B,
|
||||
0x0009A0A3, 0x8B078829, 0xE200DE85, 0x66E22D20,
|
||||
0x646DB0A1, 0x0009A099, 0x622CE281, 0x8B3D3020,
|
||||
0xD680E738, 0xE0442D70, 0xE0480C6E, 0x6E621DC1,
|
||||
0x51611DE2, 0x54621D13, 0x55651D44, 0x57631D55,
|
||||
0x5C661D76, 0x0E6E1DC7, 0x1DE8E040, 0xE050016E,
|
||||
0x54641D19, 0x056E1D4A, 0x1D5BE04C, 0xE054076E,
|
||||
0x0C6E1D7C, 0x1DCDE058, 0xE044026E, 0xED001D2E,
|
||||
0xE04806D6, 0x16D126D2, 0x16D516D2, 0x16D616D3,
|
||||
0xE04006D6, 0xE05006D6, 0x06D616D4, 0x06D6E04C,
|
||||
0x06D6E054, 0x06D6E058, 0x1F29A057, 0x622CE282,
|
||||
0x89313020, 0x05FCE020, 0x625CE683, 0x3260666C,
|
||||
0xD65D8B07, 0x2650E500, 0x52617680, 0xA044D65B,
|
||||
0xE6902622, 0x3260666C, 0xD2578B16, 0xE500D658,
|
||||
0x60622250, 0xCB20D257, 0xE6052602, 0xD6562262,
|
||||
0x2252460B, 0x420BD255, 0xD2550009, 0x2262E601,
|
||||
0x4618D254, 0x2262A029, 0xD254D453, 0xD4546542,
|
||||
0x0009420B, 0x0009A021, 0xE524D647, 0xD5452650,
|
||||
0x16215257, 0x16225258, 0x16235259, 0x1624525A,
|
||||
0x1625525B, 0x1626525C, 0x1627525D, 0x1628525E,
|
||||
0x1F29525F, 0xE2001629, 0x15281527, 0x152A1529,
|
||||
0x152C152B, 0x152E152D, 0x7F5C152F, 0x6EF64F26,
|
||||
0x000B6DF6, 0x4F226CF6, 0xE240614D, 0x89173123,
|
||||
0x3127E21F, 0xD43B8908, 0xE001D53B, 0x6642450B,
|
||||
0x26796707, 0x2462A00C, 0x3127E23F, 0xD7358908,
|
||||
0x71E0D635, 0x460BE001, 0x62075571, 0x17512529,
|
||||
0x000B4F26, 0x4F220009, 0xE240614D, 0x89153123,
|
||||
0x3127E21F, 0xD42B8907, 0x6642D22B, 0xE001420B,
|
||||
0xA00B260B, 0xE23F2462, 0x89073127, 0xD626D725,
|
||||
0x71E05571, 0xE001460B, 0x1751250B, 0x000B4F26,
|
||||
0xE6400009, 0x46284618, 0x6252D520, 0x89FC2268,
|
||||
0x0009000B, 0x4618E680, 0xD51C4628, 0x22686252,
|
||||
0x000B89FC, 0xA0010009, 0x7201E200, 0x8BFC3242,
|
||||
0x0009000B, 0x4618E680, 0xD5154628, 0x22686252,
|
||||
0x000B8BFC, 0x00000009, 0x00202908, 0x00200DA6,
|
||||
0x00117D04, 0x002027F8, 0x00117D80, 0x0020288C,
|
||||
0x001C3500, 0x001D4004, 0x00200EA2, 0x00200940,
|
||||
0x001E212C, 0x001C3D28, 0x00117D00, 0x00200E06,
|
||||
0x00202920, 0x001C3704, 0x00201FD4, 0x001C373C,
|
||||
0x001C3700, 0x4F222FE6, 0x6E537FFC, 0x2F42BFCA,
|
||||
0xD61561E2, 0x1615E280, 0x421854E1, 0x55E21646,
|
||||
0x16574228, 0x6EF257E3, 0x2E2B1678, 0x7F0426E2,
|
||||
0xAFA74F26, 0x2FC66EF6, 0x2FE62FD6, 0xDD0A4F22,
|
||||
0xBFAF6C53, 0xBF946E43, 0xBFAB2DE2, 0x51D50009,
|
||||
0x54D62C12, 0x55D71C41, 0x56D81C52, 0x4F261C63,
|
||||
0x6DF66EF6, 0x6CF6000B, 0x001C370C, 0x0009A0C0,
|
||||
0xD17B4F22, 0xD47B92B6, 0x2122B00D, 0x97B2E605,
|
||||
0xB02295B2, 0xB0366463, 0xB0360009, 0xB0390009,
|
||||
0xA0680009, 0x4F124F26, 0xD1734F02, 0x94A43145,
|
||||
0x4609060A, 0x46094609, 0x00293646, 0xD76CD56F,
|
||||
0x2500CA01, 0x4F062762, 0x4F16000B, 0xBFEA4F22,
|
||||
0xB01F0009, 0xA04E0009, 0x2FE64F26, 0x6E63D168,
|
||||
0x44186612, 0x4528928A, 0x26294408, 0x44084500,
|
||||
0x4400265B, 0x4708264B, 0x47082162, 0x27EBD161,
|
||||
0x000B2172, 0x000B6EF6, 0xD25F0009, 0xE40A9677,
|
||||
0x2262AFB4, 0x2FC62FB6, 0x2FE62FD6, 0xDC5B4F22,
|
||||
0x2C22E201, 0xBFA9E40A, 0x60C27C44, 0xCB01ED00,
|
||||
0x60C22C02, 0xC901EB64, 0x6E03A008, 0x89073DB2,
|
||||
0xE40160C2, 0xBF99C901, 0x7D016E03, 0x8BF52EE8,
|
||||
0x8B033DB2, 0xD24FD44E, 0x0009420B, 0x4F26E40A,
|
||||
0x6DF66EF6, 0xAF896CF6, 0x44116BF6, 0x604B8F01,
|
||||
0x000B6043, 0x2FB60009, 0x2FD62FC6, 0x4F222FE6,
|
||||
0xDC457FFC, 0x60C2ED00, 0xCB02EB64, 0x60C22C02,
|
||||
0xC9022F02, 0x6E03A009, 0x89083DB3, 0xE46460C2,
|
||||
0xC9022F02, 0x6E03BF6A, 0x2EE87D01, 0xD73B8BF4,
|
||||
0x617251C1, 0xDE3BDC3A, 0xD23CD13B, 0x64C23DB3,
|
||||
0x651264E2, 0x65228F09, 0xD232D439, 0x4F267F04,
|
||||
0x6DF66EF6, 0x422B6CF6, 0x7F046BF6, 0x6EF64F26,
|
||||
0x6CF66DF6, 0x6BF6000B, 0x5651D532, 0x46286052,
|
||||
0x306C000B, 0x5288096C, 0x09B45BB4, 0x03C41FFF,
|
||||
0x2FC62FB6, 0x2FE62FD6, 0x4F124F22, 0xBFEB4F02,
|
||||
0x6B036E43, 0xDD18DC28, 0x0009BFE6, 0x3C0530B8,
|
||||
0x4609060A, 0x46014609, 0x020A3D65, 0x42094209,
|
||||
0x32E24209, 0x4F068BF0, 0x4F264F16, 0x6DF66EF6,
|
||||
0x000B6CF6, 0x2FE66BF6, 0xDE1C4F22, 0xE500E102,
|
||||
0x2E12E403, 0x2E52BFD4, 0x4618E606, 0xE403E700,
|
||||
0x2E722E62, 0xAFCB4F26, 0x000B6EF6, 0x00000009,
|
||||
0x00202890, 0x0024CDE0, 0x10624DD3, 0x00202A8C,
|
||||
0x001C5814, 0x001C59D0, 0x001C5804, 0x001C581C,
|
||||
0x00202934, 0x00200DA6, 0x001C5860, 0x001C6864,
|
||||
0x001C7864, 0x001C59BC, 0x001C69BC, 0x001C79BC,
|
||||
0x0020294C, 0x001C1040, 0xCCCCCCCD, 0x001D4004,
|
||||
0x2F962F86, 0x2FB62FA6, 0x2FD62FC6, 0x4F222FE6,
|
||||
0xE4007FE4, 0x4528E510, 0x67436C43, 0xE107A00F,
|
||||
0x6043644D, 0x0F564008, 0xEE0060C3, 0x815125C1,
|
||||
0x81538152, 0x157315E2, 0x751415E4, 0x624D7401,
|
||||
0x8BED3213, 0xDA6F51F1, 0x1A1154F2, 0xD16E2A12,
|
||||
0x57F455F3, 0x6DF258F5, 0x1141D96C, 0x11532142,
|
||||
0x11751152, 0x11871174, 0x52F61186, 0x19D1D668,
|
||||
0xD86829D2, 0xDA68E950, 0x1621EBB4, 0x6BBC2622,
|
||||
0xA0214908, 0x6EEDEE00, 0x61E36DE3, 0x41084D08,
|
||||
0x31EC3DEC, 0x41084D08, 0x60C33D8C, 0xE7904108,
|
||||
0x81D12DC1, 0x41086093, 0x81D2677C, 0x31AC60C3,
|
||||
0x3472E200, 0x1DD281D3, 0xD4551D13, 0x1D248D01,
|
||||
0xB03AD450, 0x7E0165D3, 0x34B264ED, 0xD14D8BDB,
|
||||
0x6512DB52, 0x4529D24D, 0x64121B51, 0x674DD14A,
|
||||
0x67222B72, 0x4729D64E, 0x69221B73, 0x689D2FD2,
|
||||
0x69121B82, 0x5A122692, 0x5B1416A2, 0x16B4DA44,
|
||||
0x16C65C16, 0x16EA6EA2, 0x4F267F1C, 0x6DF66EF6,
|
||||
0x6BF66CF6, 0x69F66AF6, 0x68F6000B, 0x60616642,
|
||||
0x8D04C803, 0x6061E500, 0x8802C903, 0x52628B03,
|
||||
0x51246563, 0x000B2412, 0x2FD66053, 0x4F222FE6,
|
||||
0x6E537FEC, 0xE5506253, 0xE4006D43, 0xA0014508,
|
||||
0x5224E101, 0x22116043, 0x81238121, 0x81226053,
|
||||
0x362056E2, 0xD22F8BF5, 0x64F316E4, 0x420BE614,
|
||||
0x65E165E3, 0x2549E4FC, 0x61F12E51, 0x214965F3,
|
||||
0x54D12F11, 0x410BD127, 0x57D1E614, 0xCB016071,
|
||||
0x1DE12701, 0x4F267F14, 0x000B6EF6, 0x2FD66DF6,
|
||||
0x4F222FE6, 0x6E537FEC, 0xE5FC6653, 0x60616D43,
|
||||
0xCB012059, 0x52E22601, 0x8B063260, 0x51E212E4,
|
||||
0x8B0431E0, 0xA00252D1, 0xAFF01E22, 0xD2155664,
|
||||
0xE61464F3, 0x65E3420B, 0xE1FC67E1, 0x2E712719,
|
||||
0x54D167F1, 0xD10F2719, 0xE61465F3, 0x2F71410B,
|
||||
0x602152D1, 0x2201CB01, 0x7F141DE1, 0x6EF64F26,
|
||||
0x6DF6000B, 0x0020285C, 0x00202864, 0x00202854,
|
||||
0x00202884, 0x0010008C, 0x00100EC0, 0x001E2108,
|
||||
0x001C3D00, 0x00202134, 0x2FC62FB6, 0x2FE62FD6,
|
||||
0xD6314F22, 0x60D36D62, 0x894DC803, 0xDB30DC2F,
|
||||
0x0009A02C, 0xC9036061, 0x892B8801, 0xD22DD42B,
|
||||
0x0009420B, 0x65035603, 0xC8208561, 0xE0508903,
|
||||
0x720102BE, 0x85620B26, 0x4000600D, 0x4000366A,
|
||||
0x40004624, 0x206D4624, 0xD423C903, 0x40086E03,
|
||||
0xD1224000, 0x340C410B, 0x61E3D521, 0xD721E001,
|
||||
0x450BD221, 0x64E37E30, 0x2702420B, 0x66C252C1,
|
||||
0x8BCF3620, 0x4E18EE01, 0xA011DB1C, 0x6061EC75,
|
||||
0x8801C903, 0xD4198910, 0x460BD612, 0xD4180009,
|
||||
0x470BD718, 0xD2136503, 0x64C3D113, 0x22E2410B,
|
||||
0x66B252B1, 0x8BEA3620, 0xC80460D3, 0xD2128906,
|
||||
0x6EF64F26, 0x6CF66DF6, 0x6BF6422B, 0x6EF64F26,
|
||||
0x6CF66DF6, 0x6BF6000B, 0x001E2100, 0x0020285C,
|
||||
0x002027F8, 0x00200A5C, 0x00202864, 0x00200ADE,
|
||||
0x00201FD4, 0x001C3D30, 0x00200D6C, 0x00202854,
|
||||
0x00202884, 0x00200A7A, 0x002000F8, 0xE601D237,
|
||||
0x1265D537, 0x000B2252, 0xD6361266, 0x88016062,
|
||||
0xE1018B62, 0xD5342612, 0x5451D134, 0xE0406212,
|
||||
0x2122324C, 0x54115752, 0x1141347C, 0x57125453,
|
||||
0x1172374C, 0x52135755, 0x1123327C, 0x56146452,
|
||||
0x1164364C, 0x54155754, 0x1145347C, 0x56165458,
|
||||
0x1166364C, 0x6762D626, 0x327C5217, 0x57611127,
|
||||
0x327C5218, 0x57621128, 0x327C5219, 0x57631129,
|
||||
0x347C541A, 0x5764114A, 0x347C541B, 0x5765114B,
|
||||
0x347C541C, 0x5266114C, 0x372C571D, 0x5267117D,
|
||||
0x342C541E, 0x5268114E, 0x362C561F, 0xD615116F,
|
||||
0x041E6262, 0x342C7694, 0xE0440146, 0x061E6262,
|
||||
0x0166362C, 0x525CE048, 0xD60F051E, 0x0156352C,
|
||||
0xE0546262, 0x4229051E, 0x0156352C, 0xE0585561,
|
||||
0x4529061E, 0x0166365C, 0x0009000B, 0x001C1010,
|
||||
0x0000C34F, 0x001C1028, 0x001C369C, 0x002027F8,
|
||||
0x001C3CA0, 0x001C36F4, 0x001C3B88, 0xD62F7FFC,
|
||||
0x2642644C, 0xC8205066, 0x2F028DFC, 0x7F04000B,
|
||||
0x2FD62FC6, 0x4F222FE6, 0x6D436C53, 0xEE00A004,
|
||||
0x7E0164D4, 0x644CBFEA, 0x8BF93EC2, 0x6EF64F26,
|
||||
0x000B6DF6, 0xA0016CF6, 0x76016643, 0x22286260,
|
||||
0x36488BFB, 0x6563AFE4, 0x2FB62F96, 0x2FD62FC6,
|
||||
0x4F222FE6, 0xEC1CED08, 0xDB196E53, 0x61C3E90A,
|
||||
0x60434B0B, 0x3092C90F, 0x66038D02, 0x7630A001,
|
||||
0x4D107637, 0x7E012E60, 0x7CFC8FF1, 0x8058E000,
|
||||
0x6EF64F26, 0x6CF66DF6, 0x000B6BF6, 0x000B69F6,
|
||||
0x000BE000, 0x2FE6E000, 0x7FEC4F22, 0x6E436253,
|
||||
0xBFD165F3, 0xBFC66423, 0xBFC464E3, 0xD40564F3,
|
||||
0x0009BFC1, 0x4F267F14, 0x6EF6000B, 0x001C0004,
|
||||
0x00202094, 0x00202968, 0xE110D59C, 0xE6406050,
|
||||
0x2500C9FD, 0xE0FF75E9, 0x80516453, 0x80538052,
|
||||
0x80568055, 0x251075EF, 0xE1EF6250, 0x2219E001,
|
||||
0xE7202520, 0x24608052, 0x2570000B, 0xE4FDD590,
|
||||
0xE7026152, 0x25122149, 0x74016052, 0x2502CB01,
|
||||
0xD18C6652, 0x25622649, 0x92C26012, 0x2102CB08,
|
||||
0xC9CF6012, 0x60122102, 0x2102CB03, 0x000B1172,
|
||||
0x4F221123, 0xE100D484, 0xD285D784, 0xD5852410,
|
||||
0x2711D485, 0x2211E700, 0xBFBD2511, 0xD5832471,
|
||||
0x2560E600, 0x4F26AFD2, 0xD281664C, 0x362C4600,
|
||||
0xCB106060, 0x2600000B, 0xD27D654C, 0x352C4500,
|
||||
0xE1EF6650, 0x000B2619, 0x664C2560, 0x4600D279,
|
||||
0x6060362C, 0x000BCB10, 0x654C2600, 0x4500D275,
|
||||
0x6650352C, 0x2619E1EF, 0x2560000B, 0xD270664C,
|
||||
0x362C4600, 0xCB086060, 0x2600000B, 0xD26C654C,
|
||||
0x352C4500, 0xE1F76650, 0x000B2619, 0x664C2560,
|
||||
0x4600D268, 0x6060362C, 0x000BCB08, 0x654C2600,
|
||||
0x4500D264, 0x6650352C, 0x2619E1F7, 0x2560000B,
|
||||
0xD65F624C, 0x326C4200, 0xC9086020, 0x40214021,
|
||||
0x000B4021, 0x624C600C, 0x4200D65A, 0x6020326C,
|
||||
0x4021C908, 0x40214021, 0x600C000B, 0xD156644C,
|
||||
0x341C74FF, 0x000B6240, 0xD154602C, 0x341C644C,
|
||||
0x000B6240, 0x2FE6602C, 0x655C4F22, 0x3567E60A,
|
||||
0x6E438D15, 0x6453BFEA, 0x60EC640C, 0x8B028801,
|
||||
0xA002E00F, 0x44092409, 0x624C4409, 0x3263E60A,
|
||||
0xBFE28905, 0x620C644C, 0xC8806023, 0xE2008B00,
|
||||
0x4F266023, 0x6EF6000B, 0xD6414F22, 0x88016062,
|
||||
0xB2228B03, 0xA0030009, 0xD23E0009, 0x2260E640,
|
||||
0xE200D63D, 0x000B4F26, 0x4F222622, 0x6062D638,
|
||||
0x8B018802, 0x0009B26C, 0xE200D637, 0x000B4F26,
|
||||
0x0FFF2622, 0xD433D532, 0xE701E100, 0x000B2512,
|
||||
0xD2302470, 0x000BE604, 0xD5202260, 0x6150E4FD,
|
||||
0x2149D62E, 0x2510E700, 0x2670000B, 0xE4FBD51B,
|
||||
0x22496250, 0x2520000B, 0xE4F7D518, 0x22496250,
|
||||
0x2520000B, 0xD2264F22, 0x600D8522, 0x89112008,
|
||||
0x89138801, 0x89158803, 0x89178805, 0x89418806,
|
||||
0x89478808, 0x894D8809, 0x8953880A, 0x8959880B,
|
||||
0x0009A060, 0x0009B062, 0x600CA05D, 0x0009B070,
|
||||
0x600CA059, 0x0009B07A, 0x600CA055, 0x6260D606,
|
||||
0x8B4F2228, 0x0009B086, 0x600CA04D, 0x001E1028,
|
||||
0x001E2148, 0x001E1108, 0x002028D9, 0x002028C8,
|
||||
0x002028CA, 0x002028CC, 0x002028AC, 0x001E1008,
|
||||
0x001E103F, 0x001E105F, 0x001E1030, 0x001E1090,
|
||||
0x002028D4, 0x001E100B, 0x002028D0, 0x002028D8,
|
||||
0x002028A0, 0x6260D687, 0x8B232228, 0x0009B06A,
|
||||
0x600CA021, 0x6260D683, 0x8B1B2228, 0x0009B0B4,
|
||||
0x600CA019, 0x6260D67F, 0x8B132228, 0x0009B0BA,
|
||||
0x600CA011, 0x6260D67B, 0x8B0B2228, 0x0009B11E,
|
||||
0x600CA009, 0x6260D677, 0x8B032228, 0x0009B136,
|
||||
0x600CA001, 0x4F26E000, 0x0009000B, 0xD273D172,
|
||||
0xD5738412, 0x4000C90F, 0xD772012D, 0x611CE403,
|
||||
0xD671E20F, 0x27122540, 0xE0012520, 0x2602000B,
|
||||
0xE601D269, 0x30668523, 0xE0008D06, 0xE000D267,
|
||||
0x8122D669, 0x2602E001, 0x0009000B, 0x8523D262,
|
||||
0x2008600D, 0x88018905, 0xD6648B0A, 0xCB016060,
|
||||
0xD6612600, 0xE101D45D, 0x2612E001, 0x8142000B,
|
||||
0xE000000B, 0xE501D158, 0x45188513, 0x3453640D,
|
||||
0x8D056603, 0xD25AE000, 0xE001D557, 0x25022260,
|
||||
0x0009000B, 0xD1504F22, 0x650D8513, 0x44196453,
|
||||
0x672E6249, 0x602C227D, 0x89098801, 0x890C8802,
|
||||
0x89108803, 0x89268806, 0x89298807, 0x0009A038,
|
||||
0xD64DD54C, 0xA027E212, 0x625C2652, 0x8B2F2228,
|
||||
0xA01ED64A, 0x605C6262, 0x89052008, 0x89088810,
|
||||
0x890B8820, 0x0009A024, 0xD643D445, 0xA013E204,
|
||||
0xD7442642, 0xE20CD640, 0x2672A00E, 0xD63ED542,
|
||||
0xA009E218, 0xD4412652, 0xE20AD63B, 0x2642A004,
|
||||
0xD639D23F, 0xE22E2622, 0xD43E8515, 0x3277670D,
|
||||
0x8F012421, 0x24516503, 0x0009B0DF, 0xE001A001,
|
||||
0x4F26E000, 0x0009000B, 0xE101D629, 0x2610D436,
|
||||
0xD7286541, 0x655DD128, 0xE001E20F, 0x26202752,
|
||||
0x2102000B, 0x4F222FE6, 0x8523D21F, 0x2448640C,
|
||||
0xD62D8B08, 0xE200D521, 0x84512621, 0x20499430,
|
||||
0x8051A026, 0x60E0DE1D, 0x8D0BC840, 0x3427E201,
|
||||
0xD1258922, 0x420BD225, 0xD5252141, 0xCB046052,
|
||||
0x2502A00B, 0x89173427, 0xD722D21F, 0x2241470B,
|
||||
0xE5FBD61F, 0x21596162, 0x84E12612, 0xB12DCB80,
|
||||
0x60E080E1, 0xCB04D61C, 0x60602E00, 0x2600C93F,
|
||||
0xE001D609, 0x2602A001, 0x4F26E000, 0x6EF6000B,
|
||||
0x0000FF7F, 0x002028D9, 0x002028A0, 0x002028AC,
|
||||
0x001E1100, 0x001E100C, 0x002028D0, 0x001E1000,
|
||||
0x001E1001, 0x00202A90, 0x002028B4, 0x002028BC,
|
||||
0x00202AFE, 0x00202B02, 0x00202B0E, 0x00202B26,
|
||||
0x00202B30, 0x002028B8, 0x002028C6, 0x00201A32,
|
||||
0x001E1108, 0x00201B3E, 0x001E1015, 0x6060D696,
|
||||
0x8919C880, 0x6021D295, 0x8B158801, 0xE501D294,
|
||||
0x30568524, 0xD1938910, 0xD493E203, 0x65412120,
|
||||
0x655DE00B, 0xD5910656, 0xE702E40F, 0x25712140,
|
||||
0xE001D78F, 0x2702000B, 0xE000000B, 0x4F222FE6,
|
||||
0x84E1DE8C, 0x8934C880, 0x8554D585, 0x8F302008,
|
||||
0xD7896103, 0x66728553, 0x650C6403, 0x620C8566,
|
||||
0x8B263520, 0xD780D685, 0x644C651C, 0x27412651,
|
||||
0xC84060E0, 0xD2828907, 0x0009420B, 0x6062D681,
|
||||
0xA008CB04, 0xD1802602, 0x0009410B, 0xE5FBD67D,
|
||||
0x24596462, 0xB0A12642, 0xD5750009, 0x2522E201,
|
||||
0xD77A60E0, 0x2E00CB04, 0xC93F6070, 0xA0012700,
|
||||
0xE0006023, 0x000B4F26, 0x2FA66EF6, 0x2FC62FB6,
|
||||
0x2FE62FD6, 0xE240DA69, 0xDC6666A1, 0x3123616D,
|
||||
0x62638900, 0x6ED36D2C, 0x4E2136D8, 0x4E212A61,
|
||||
0xDB6CD46B, 0xE700A00F, 0x770166B2, 0x71026163,
|
||||
0x65612B12, 0x71026613, 0x62612B12, 0x622D655D,
|
||||
0x325C4228, 0x627C2422, 0x8BED32E3, 0xC90360D3,
|
||||
0x8B108803, 0xED076EB2, 0x710261E3, 0x67132B12,
|
||||
0x62E17102, 0x65712B12, 0x655D622D, 0x352C4528,
|
||||
0xA00C2CD0, 0x88022452, 0xA0038B01, 0x8801E203,
|
||||
0xE2018B05, 0x66B22C20, 0x677D6761, 0xEB0F2472,
|
||||
0x6DA12CB0, 0x8B052DD8, 0xD445D24F, 0xE101EE00,
|
||||
0x241222E2, 0x6DF66EF6, 0x6BF66CF6, 0x6AF6000B,
|
||||
0x2FE62FD6, 0xE240DD3D, 0x616D66D1, 0x89003123,
|
||||
0x672C6263, 0xDE433678, 0x2D617703, 0xD6404721,
|
||||
0x472164E2, 0xE100A00E, 0x71016562, 0x24506253,
|
||||
0x42197401, 0x74012420, 0x24504529, 0x45197401,
|
||||
0x74012450, 0x3273621C, 0x42008BEE, 0x64D166E2,
|
||||
0x362C4200, 0x8F062448, 0xDD332E62, 0xE500DE28,
|
||||
0x2D52E701, 0x6EF62E72, 0x6DF6000B, 0x2FE62FD6,
|
||||
0xEE014F22, 0xED0AA005, 0x64E3BCB6, 0x64E3BCBC,
|
||||
0x62EC7E01, 0x8BF732D7, 0xEE01A005, 0x64E3BCBD,
|
||||
0x64E3BCC3, 0x62EC7E01, 0x8BF732D7, 0x6EF64F26,
|
||||
0x6DF6000B, 0x2FE62FD6, 0x7FFC4F22, 0x6060D61F,
|
||||
0x89758801, 0xE101D41E, 0xD7128548, 0x650D2610,
|
||||
0x45196070, 0x6659DD1B, 0x61D3626E, 0xC840262D,
|
||||
0x74027102, 0x8D47D718, 0xD218666C, 0xE501DE0A,
|
||||
0xA0312E22, 0x0000EE04, 0x001E1001, 0x002028C6,
|
||||
0x002028A0, 0x001E1100, 0x002028CA, 0x002028B8,
|
||||
0x002028D0, 0x001E1000, 0x002028BC, 0x002028C8,
|
||||
0x00201A32, 0x001E1108, 0x00201B3E, 0x001E1015,
|
||||
0x001E100C, 0x002028B4, 0x002028D4, 0x002028D8,
|
||||
0x00202A90, 0x00202B26, 0x00202B32, 0x00202AA2,
|
||||
0x75016245, 0x71022121, 0x32E3625C, 0x60638BF8,
|
||||
0xE60181D4, 0xE417D538, 0x3243626C, 0x6255891E,
|
||||
0x27217601, 0x7702AFF8, 0xDE35D234, 0x2E22E501,
|
||||
0xEE04A004, 0x75016245, 0x71022121, 0x32E3625C,
|
||||
0x60638BF8, 0xE60181D4, 0xA004D52E, 0x6255E417,
|
||||
0x27217601, 0x626C7702, 0x8BF83243, 0x2D21924B,
|
||||
0xD72AD429, 0x2F126142, 0x6DF265F2, 0xC9806053,
|
||||
0x60532700, 0x6103C960, 0x60538071, 0x65F26EF2,
|
||||
0x4D19C903, 0x80724529, 0x451960DC, 0x4E298172,
|
||||
0x62EC605C, 0x302C4018, 0x6D428173, 0x2FD22118,
|
||||
0x62F26EF2, 0x421966F2, 0x656C4629, 0x602C66F2,
|
||||
0x401864EC, 0x304C4629, 0x81744619, 0x4018606C,
|
||||
0x8F07305C, 0xBCB58175, 0x620C0009, 0x89082228,
|
||||
0x0009A00A, 0x88406013, 0xB00A8B03, 0xA0030009,
|
||||
0xD60B0009, 0x2622E202, 0x4F267F04, 0x000B6EF6,
|
||||
0x000B6DF6, 0x060A0009, 0x00202AD2, 0x00202AD0,
|
||||
0x002028BC, 0x00202AA4, 0x001E100C, 0x002028A0,
|
||||
0x002028D0, 0x7FFC4F22, 0x6620D27E, 0x8D082668,
|
||||
0xD47D2F60, 0x420BD27D, 0x64F00009, 0xA0907F04,
|
||||
0x7F044F26, 0x000B4F26, 0x000B0009, 0x2FE60009,
|
||||
0xDE774F22, 0x60E0D677, 0xCBC0D477, 0x62602E00,
|
||||
0xC803602C, 0x40218904, 0x70014021, 0x6603A002,
|
||||
0x66034009, 0xD671616D, 0xE500A004, 0x75016262,
|
||||
0x74042422, 0x3213625D, 0xD16D8BF8, 0x0009410B,
|
||||
0xE401D66C, 0x84E22641, 0x80E2C9BF, 0x000B4F26,
|
||||
0x2FE66EF6, 0xD5687FFC, 0x6250DE61, 0x642C84E2,
|
||||
0xCB407404, 0x80E2614D, 0x44216413, 0xD7634421,
|
||||
0xE600A004, 0x76016256, 0x27222F22, 0x3243626D,
|
||||
0x60138BF8, 0x2008C903, 0x88038912, 0x88028905,
|
||||
0x88018906, 0xA0088907, 0xE0070009, 0x8078A005,
|
||||
0xA002E003, 0xE0018078, 0x62528078, 0x27222F22,
|
||||
0xD650E00F, 0x60618078, 0x8B018801, 0x2621E200,
|
||||
0x6060D64F, 0x2600CB08, 0xC93F60E0, 0x7F042E00,
|
||||
0x6EF6000B, 0x6021D247, 0x8D188801, 0xD2466143,
|
||||
0x22106053, 0x60638021, 0xD4468121, 0xE500A007,
|
||||
0x027C605D, 0x364C6603, 0x26207001, 0x625D6503,
|
||||
0x3213611C, 0xD6408BF4, 0xC9BF6060, 0x000B2600,
|
||||
0x2FD60009, 0x4F222FE6, 0x60437FFC, 0x8D02C820,
|
||||
0xBF6A6E43, 0x60E30009, 0x8901C810, 0x0009BF67,
|
||||
0xC84060E3, 0xBF8C8901, 0x60E30009, 0x8929C801,
|
||||
0x60D0DD32, 0x8D03C802, 0xD6312F00, 0x0009460B,
|
||||
0xC80460F0, 0xD62F8902, 0x0009460B, 0x602362F0,
|
||||
0x8902C880, 0xC97F60D0, 0x60232D00, 0x8902C801,
|
||||
0x420BD229, 0xD5290009, 0x88026052, 0xD2288B03,
|
||||
0xA005E604, 0x88012260, 0xD2258B02, 0x2260E601,
|
||||
0x2522E200, 0xC88060E3, 0xD2228916, 0x60E36E20,
|
||||
0x8902C802, 0x420BD220, 0x60E30009, 0x8902C804,
|
||||
0x420BD21E, 0x60E30009, 0x8905C808, 0x7F04D21C,
|
||||
0x6EF64F26, 0x6DF6422B, 0x4F267F04, 0x000B6EF6,
|
||||
0x00006DF6, 0x001E1020, 0x0020296C, 0x00200DA6,
|
||||
0x001E1015, 0x001E10BF, 0x00117D00, 0x001E10FC,
|
||||
0x002000F8, 0x002028CC, 0x00117D80, 0x001E10F8,
|
||||
0x001E10AE, 0x00117D84, 0x001E1017, 0x001E1021,
|
||||
0x00200FD8, 0x00200FFA, 0x00201584, 0x002028D0,
|
||||
0x001E100B, 0x001E1028, 0x0020102A, 0x0020103C,
|
||||
0x00201048, 0xD6A8644C, 0x346C74FF, 0x2450000B,
|
||||
0x644CD6A6, 0x000B346C, 0xD6A52450, 0x346C644C,
|
||||
0x2450000B, 0x616D625C, 0x41194208, 0x60194208,
|
||||
0x644C4200, 0x324C670E, 0x207DD19E, 0xC90F4200,
|
||||
0x000B321C, 0x67632200, 0x4208625C, 0x42004208,
|
||||
0x324C644C, 0x4200D198, 0x000B321C, 0x2FE62270,
|
||||
0x614C4F12, 0x4100D493, 0x6710314C, 0x2729E29F,
|
||||
0x65736E53, 0x4719676D, 0x672E6279, 0x4221227D,
|
||||
0x42214221, 0x7601662C, 0xE4014608, 0x34E84608,
|
||||
0x644C4600, 0x0E1A0467, 0x215025EB, 0x000B4F16,
|
||||
0x4F226EF6, 0xD2857FE8, 0x88016021, 0xD2848B7B,
|
||||
0x26686621, 0xD2838B77, 0x26686621, 0xE50F8B73,
|
||||
0xE401BFA0, 0xBFA3E501, 0xE586E400, 0xE400655C,
|
||||
0x2F50BFA3, 0xBFA0E401, 0xE602E506, 0x60634618,
|
||||
0x81F2E401, 0x6543BF9E, 0xE40185F2, 0xBFAA6543,
|
||||
0x85F26603, 0x6543E401, 0x6603BFB1, 0xE40265F0,
|
||||
0x6053756C, 0x80F8BF7E, 0xBF81E402, 0x84F8E512,
|
||||
0x7090E402, 0x6503BF81, 0x4618E602, 0x81F66063,
|
||||
0xBF7FE402, 0x85F6E500, 0x6603E402, 0xE500BF8B,
|
||||
0xE40285F6, 0xBF926603, 0xE5FEE500, 0xE010655C,
|
||||
0xBF5FE403, 0xE5130F54, 0xE40EBF62, 0x05FCE010,
|
||||
0xBF62E40E, 0xE5007585, 0xBF63E403, 0xE500E640,
|
||||
0xBF70E403, 0xE500E640, 0xBF78E403, 0xE5FFE640,
|
||||
0xE014655C, 0xBF45E404, 0xE40F0F54, 0xE504BF48,
|
||||
0x05FCE014, 0xBF48E40F, 0xE5017584, 0xBF49E640,
|
||||
0xE501E404, 0xBF56E640, 0xE501E404, 0xE404E640,
|
||||
0xAF5C7F18, 0x7F184F26, 0x000B4F26, 0x4F220009,
|
||||
0xD2427FF0, 0x88016021, 0xD2418B71, 0x26686621,
|
||||
0xD2408B6D, 0x26686621, 0xE50F8B69, 0xE401BF1A,
|
||||
0xBF1DE501, 0xE586E400, 0xE400655C, 0x2F50BF1D,
|
||||
0xBF1AE401, 0xE401E506, 0xBF1B6543, 0xE401E640,
|
||||
0xBF286543, 0xE401E640, 0xBF306543, 0x65F0E640,
|
||||
0x756CE402, 0xBEFD6053, 0xE40280F4, 0xE512BF00,
|
||||
0xE40284F4, 0xBF007090, 0xE6406503, 0xBF01E402,
|
||||
0xE640E500, 0xBF0EE402, 0xE640E500, 0xBF16E402,
|
||||
0xE5FEE500, 0x6053655C, 0xBEE3E403, 0xE51380F8,
|
||||
0xE40EBEE6, 0xE40E84F8, 0xBEE67085, 0xE5006503,
|
||||
0xBEE7E640, 0xE500E403, 0xBEF4E640, 0xE500E403,
|
||||
0xBEFCE640, 0xE5FFE403, 0x6053655C, 0xBEC9E404,
|
||||
0xE40F80FC, 0xE504BECC, 0xE40F84FC, 0xBECC7083,
|
||||
0xE5016503, 0xBECDE640, 0xE501E404, 0xBEDAE640,
|
||||
0xE501E404, 0xE404E640, 0xAEE07F10, 0x7F104F26,
|
||||
0x000B4F26, 0x00000009, 0x001E1030, 0x001E1080,
|
||||
0x001E1090, 0x001E103F, 0x001E103E, 0x002028C6,
|
||||
0x002028C8, 0x002028CA, 0x0009000B, 0x666CE680,
|
||||
0x6563D2A8, 0x7540E700, 0x6473422B, 0x2FB62FA6,
|
||||
0x2FD62FC6, 0x4F222FE6, 0x4C18EC01, 0xDAA3DBA2,
|
||||
0x65B252B1, 0x89223520, 0xC9036051, 0x891E8801,
|
||||
0xD19FDE9D, 0x64E3410B, 0x85036503, 0x670D66A2,
|
||||
0xDD9C3762, 0xD49C890A, 0x420BD29C, 0xD19C0009,
|
||||
0xE701D49C, 0x21724D0B, 0x0009AFE2, 0x420BD29A,
|
||||
0xD69A64E3, 0x4D0BD49A, 0xAFD926C2, 0x4F260009,
|
||||
0x6DF66EF6, 0x6BF66CF6, 0x6AF6000B, 0x7FF44F22,
|
||||
0xE6818546, 0x85472F01, 0x81F1666C, 0xD2858548,
|
||||
0x854281F2, 0x81F367F3, 0xE40C8543, 0x605381F4,
|
||||
0x81F56563, 0x7540420B, 0x4F267F0C, 0x0009000B,
|
||||
0x2F962F86, 0x2FB62FA6, 0x2FD62FC6, 0x4F222FE6,
|
||||
0xDC847FF0, 0xE800A0DD, 0xD2836B13, 0xE0014B08,
|
||||
0x4B00420B, 0x1F03DE81, 0x3BEC85F2, 0x2F827E30,
|
||||
0x1FE26803, 0x66C2DD7E, 0x362052C1, 0xA0C38B01,
|
||||
0x60610009, 0x8801C903, 0xA0BD8B01, 0x85610009,
|
||||
0x8965C801, 0xEE105163, 0xDA6A8512, 0xC9036603,
|
||||
0x85136403, 0x4021600D, 0xC93F4021, 0x8D1C30E3,
|
||||
0xD7706503, 0x62704408, 0x44004408, 0x22284500,
|
||||
0x345C8F0A, 0x6043D26C, 0x697D072D, 0x68994919,
|
||||
0x697C6E8E, 0x28EDA009, 0x6043D268, 0x697D072D,
|
||||
0x68994919, 0x697C6E8E, 0xEEFF28ED, 0x6EEC629D,
|
||||
0x8B0F32E0, 0x410BD152, 0x540364C3, 0xBF85E502,
|
||||
0xD45F6E03, 0x460BD654, 0xD75E65E3, 0xD45EEE01,
|
||||
0x27E2A01D, 0x26E9EEFC, 0x81126063, 0x97888513,
|
||||
0x20794208, 0x85128113, 0x8112208B, 0x202B8513,
|
||||
0x85148113, 0x4218E208, 0x8114202B, 0x854164C2,
|
||||
0x814120E9, 0xD45165C2, 0xCB016051, 0x4A0B2501,
|
||||
0x60C20009, 0x52F356F2, 0x2B02CB01, 0x2622AF8B,
|
||||
0xD2378561, 0x8D2EC802, 0x420B64C3, 0xD6480009,
|
||||
0x5E036503, 0x076EE04C, 0x7701D146, 0x60120676,
|
||||
0x8B058801, 0xEA0C85E1, 0x20AB4A18, 0x81E1A007,
|
||||
0x88026012, 0x85E18B03, 0x20A9EADF, 0x855181E1,
|
||||
0x20A9EAFC, 0x60518151, 0xCB01DA28, 0x4A0B64C3,
|
||||
0x56F22501, 0xD73851F3, 0x85EF2612, 0x470B64D3,
|
||||
0xAF58650D, 0x420B0009, 0x54030009, 0x85446E03,
|
||||
0x4A18EA08, 0x30A020A9, 0x8B03DA1A, 0xE501BF16,
|
||||
0x0009A007, 0xD62D8541, 0x2268620D, 0xBF0D8901,
|
||||
0xD423E500, 0x420BD218, 0xD72265E3, 0xEE01D428,
|
||||
0x27E24A0B, 0x0009AF37, 0x68F26083, 0x780181F2,
|
||||
0x618D7C08, 0x31E7EE03, 0xAF1D8901, 0x7F100009,
|
||||
0x6EF64F26, 0x6CF66DF6, 0x6AF66BF6, 0x000B69F6,
|
||||
0xFE0368F6, 0x00201834, 0x00202884, 0x0020288C,
|
||||
0x00200A5C, 0x00200DA6, 0x00202854, 0x00200ADE,
|
||||
0x001E2130, 0x00202A70, 0x00200A7A, 0x001C3D30,
|
||||
0x00202A74, 0x00202864, 0x00201FD4, 0x001C3D00,
|
||||
0x00202A80, 0x00202A8C, 0x00202970, 0x002029F0,
|
||||
0x0020285C, 0x001E212C, 0x00202A78, 0x00202A7C,
|
||||
0x002027F8, 0x002027F4, 0x00200E06, 0x00008000,
|
||||
0x00202A88, 0x4F222FE6, 0x6E22D20D, 0xC84060E3,
|
||||
0x22E28D02, 0x0009BE68, 0x4218E240, 0x89012E28,
|
||||
0x0009BE64, 0xC80560E3, 0xBEB98901, 0x60E30009,
|
||||
0x8902C802, 0xAE614F26, 0x4F266EF6, 0x6EF6000B,
|
||||
0x001C3510, 0x080A0C0E, 0x00020406, 0x1A1C1E20,
|
||||
0x12141618, 0x2E303234, 0x26282A2C, 0x3A3C3E40,
|
||||
0x6C625648, 0x41112F26, 0xE2208F18, 0x890B3123,
|
||||
0x321CD204, 0xD1026220, 0x412B312C, 0x00090009,
|
||||
0x00201FFE, 0x00201FB4, 0x000BE000, 0x400062F6,
|
||||
0x40004000, 0x40004000, 0x40004000, 0x62F6000B,
|
||||
0x40004000, 0x40004000, 0x40004000, 0x40184000,
|
||||
0x62F6000B, 0x40004000, 0x40004000, 0x40004000,
|
||||
0x40284000, 0x62F6000B, 0x40004000, 0x40184000,
|
||||
0x000B4028, 0xC90F62F6, 0x40054005, 0x40054005,
|
||||
0x62F6000B, 0x4005C907, 0x40054005, 0x62F6000B,
|
||||
0x4005C903, 0x000B4005, 0xC90162F6, 0x000B4005,
|
||||
0x000062F6, 0x080A0C0E, 0x00020406, 0x1A1C1E20,
|
||||
0x12141618, 0x2E303234, 0x26282A2C, 0x3A3C3E40,
|
||||
0x6C625648, 0x41112F26, 0xE2208F18, 0x890B3123,
|
||||
0x321CD204, 0xD1026220, 0x412B312C, 0x00090009,
|
||||
0x002020BE, 0x00202074, 0x000BE000, 0x400162F6,
|
||||
0x40014001, 0x40014001, 0x40014001, 0x62F6000B,
|
||||
0x40014001, 0x40014001, 0x40014001, 0x40194001,
|
||||
0x62F6000B, 0x40014001, 0x40014001, 0x40014001,
|
||||
0x40294001, 0x62F6000B, 0x40014001, 0x40194001,
|
||||
0x000B4029, 0x400462F6, 0x40044004, 0xC90F4004,
|
||||
0x62F6000B, 0x40044004, 0xC9074004, 0x62F6000B,
|
||||
0x40044004, 0x000BC903, 0x400462F6, 0x000BC901,
|
||||
0x000062F6, 0x3622E218, 0x67438F12, 0x0009A004,
|
||||
0x76FF6254, 0x74012420, 0xC8036053, 0x60438BF8,
|
||||
0x8902C803, 0x422BD22B, 0xD22B0009, 0x0009422B,
|
||||
0x2FE66473, 0x8D4A3450, 0x27786763, 0x62438947,
|
||||
0x227B225B, 0xC9016023, 0x8D203452, 0x2EE86E03,
|
||||
0x60238B15, 0x8B08C803, 0x47096643, 0x47106256,
|
||||
0x8FFB2622, 0xA0327604, 0x47010009, 0x61436673,
|
||||
0x46106255, 0x8FFB2121, 0xA0287102, 0x66430009,
|
||||
0x47106254, 0x8FFB2620, 0xA0207601, 0x61430009,
|
||||
0x2EE8357C, 0x8F15317C, 0x60236653, 0x8B07C803,
|
||||
0x76FC4709, 0x47106262, 0x21268FFB, 0x0009A00F,
|
||||
0x65634701, 0x75FE6673, 0x46106251, 0x21258FFB,
|
||||
0x0009A005, 0x626076FF, 0x8FFB4710, 0x60432124,
|
||||
0x6EF6000B, 0x002022A6, 0x00202752, 0xE21E2FE6,
|
||||
0x67633626, 0x8D1B6153, 0x3E106E43, 0x3E128916,
|
||||
0x65E38908, 0x3672E600, 0x62148910, 0x25207601,
|
||||
0x7501AFF9, 0x317C64E3, 0x6513347C, 0xE600A004,
|
||||
0x625075FF, 0x24247601, 0x8BF93672, 0x60E3A011,
|
||||
0x890831E2, 0x327C6213, 0x8B0432E6, 0x651364E3,
|
||||
0xA0086673, 0xD28F6EF6, 0x651364E3, 0x422B6673,
|
||||
0x000B6EF6, 0xE2046EF6, 0x67433622, 0x8F10356C,
|
||||
0xA004346C, 0x75FF0009, 0x76FF6250, 0x60532424,
|
||||
0x8BF8C803, 0xC8036043, 0xA1058901, 0xA2770009,
|
||||
0xA2990009, 0x2FB60009, 0x2FD62FC6, 0x7FE42FE6,
|
||||
0x6C636043, 0x66521F62, 0xC9037504, 0x1F516E53,
|
||||
0x45086503, 0xE1FC6D43, 0x2D194500, 0x1F732558,
|
||||
0x1F651F44, 0x2FD28D0B, 0x88086053, 0x88108923,
|
||||
0x8818895B, 0xA0898B01, 0xA0BD0009, 0x62630009,
|
||||
0x2D22E600, 0x7CFC7D04, 0xEB10A00D, 0xE60064E6,
|
||||
0x7CF065E6, 0x62E261E6, 0x1D512D42, 0x1D231D12,
|
||||
0x7E047D10, 0x3CB21FE1, 0x1F6589F0, 0x2FD21FC2,
|
||||
0xA0A11FE6, 0x64D21FD4, 0x44286263, 0x44294418,
|
||||
0x42184419, 0x4629242B, 0x2D424619, 0x65637D04,
|
||||
0xA0217CFD, 0x67E6EB10, 0x62E67CF0, 0x64E66673,
|
||||
0x256B4618, 0x2D5261E2, 0x65234729, 0x45184719,
|
||||
0x4229275B, 0x42191D71, 0x47186743, 0x4429227B,
|
||||
0x44196713, 0x247B4718, 0x1D431D22, 0x41194129,
|
||||
0x65137D10, 0x1FE17E04, 0x89DC3CB2, 0x1FE67EFF,
|
||||
0x1FC21F55, 0xA0672FD2, 0x6CF21FD4, 0x66C257F5,
|
||||
0x46286273, 0x42284629, 0x2C62262B, 0x7C045DF2,
|
||||
0x7DFE4729, 0xA01CEB10, 0x65E65EF1, 0x66E66273,
|
||||
0x47286753, 0x6763227B, 0x452961E6, 0x257B4728,
|
||||
0x2C2264E6, 0x65131C51, 0x45284629, 0x1C62265B,
|
||||
0x41296643, 0x216B4628, 0x44291C13, 0x67437C10,
|
||||
0x3DB27DF0, 0x1FD289E1, 0x7EFEA034, 0x51F56CF2,
|
||||
0x621366C2, 0x42284618, 0x42184619, 0x2C62262B,
|
||||
0x7C045DF2, 0x7DFF4119, 0xA01FEB10, 0x65E65EF1,
|
||||
0x64E67DF0, 0x42286253, 0x421867E6, 0x66E6212B,
|
||||
0x61432C12, 0x45194128, 0x251B4118, 0x65731C51,
|
||||
0x44194528, 0x245B4518, 0x64631C42, 0x47194428,
|
||||
0x274B4418, 0x46191C73, 0x61637C10, 0x89DE3DB2,
|
||||
0x7EFD1FD2, 0x1FC41FE6, 0x5DF2E704, 0xA00D5EF6,
|
||||
0x62E451F4, 0x66E47DFC, 0x65E464E4, 0x71012120,
|
||||
0x71012160, 0x71012140, 0x71012150, 0x89F03D72,
|
||||
0x66D357F3, 0x641365E3, 0x6EF67F1C, 0x6CF66DF6,
|
||||
0x6BF6A190, 0x00202134, 0x2FC62FB6, 0x2FE62FD6,
|
||||
0x60437FE4, 0x6C63C903, 0x66031F62, 0x460875FC,
|
||||
0x61526E43, 0x4600E2FC, 0x26682E29, 0x1F441F73,
|
||||
0x1F516D53, 0x8D0B1F15, 0x60632FE2, 0x891F8808,
|
||||
0x89538810, 0x8B018818, 0x0009A081, 0x0009A0B9,
|
||||
0xEB10A00D, 0x52D37DF0, 0x54D156D2, 0x2E1665D2,
|
||||
0x2E662E26, 0x2E427EFC, 0x1FD16153, 0x3CB27CF0,
|
||||
0x7D0489F0, 0x1F151FD6, 0x2FE21FC2, 0x1FE4A0A1,
|
||||
0x621366E2, 0x42294619, 0x42194618, 0x2E62262B,
|
||||
0x7CFF4118, 0xEB10A021, 0x54D37DF0, 0x624357D2,
|
||||
0x42194229, 0x55D1212B, 0x2E1666D2, 0x41296173,
|
||||
0x41194418, 0x2E46241B, 0x44296453, 0x44194718,
|
||||
0x2E76274B, 0x47296763, 0x47194518, 0x257B7EFC,
|
||||
0x46182E52, 0x1FD16163, 0x3CB27CF0, 0x7D0389DC,
|
||||
0x1F151FD6, 0x2FE21FC2, 0x1FE4A06B, 0x57F56EF2,
|
||||
0x627366E2, 0x46284629, 0x262B4229, 0x2E625CF2,
|
||||
0x7CFE4728, 0xA01BEB10, 0x7DF05DF1, 0x55D251D3,
|
||||
0x46296613, 0x54D1276B, 0x2E7662D2, 0x41286753,
|
||||
0x217B4729, 0x61432E16, 0x41294528, 0x2E56251B,
|
||||
0x44286523, 0x245B4529, 0x42282E46, 0x7CF06723,
|
||||
0x89E23CB2, 0x1FD67D02, 0xA03A1FC2, 0x67F21FE4,
|
||||
0x657251F5, 0x45296213, 0x45284519, 0x42194518,
|
||||
0x5CF2252B, 0x41282752, 0x7CFD4118, 0xA022EB10,
|
||||
0x7DF05DF1, 0x54D256D3, 0x45196563, 0x52D14628,
|
||||
0x4618215B, 0x6ED26543, 0x45192716, 0x265B4428,
|
||||
0x65436163, 0x45186423, 0x42284419, 0x4218254B,
|
||||
0x271664E3, 0x44196623, 0x264B2756, 0x4E282766,
|
||||
0x61E34E18, 0x3CB27CF0, 0x7D0189DB, 0x1FC21FD6,
|
||||
0xE7041F74, 0x51F45DF2, 0x5EF6A00D, 0x84E27EFC,
|
||||
0x620364E0, 0x7DFC84E1, 0x84E36503, 0x21646603,
|
||||
0x21542124, 0x3D722144, 0x57F389F0, 0x641366D3,
|
||||
0x7F1C65E3, 0x6DF66EF6, 0xA09D6CF6, 0x2F866BF6,
|
||||
0x2FA62F96, 0x2FC62FB6, 0x2FE62FD6, 0x614374E0,
|
||||
0x6A636873, 0x6B56E920, 0x6C567AE0, 0x6D567120,
|
||||
0x6E563A92, 0x64566756, 0x62566656, 0x11C121B2,
|
||||
0x11E311D2, 0x11451174, 0x8DEC1166, 0x71201127,
|
||||
0x6613A004, 0x7AFF6254, 0x76012620, 0x8BF92AA8,
|
||||
0x6EF66083, 0x6CF66DF6, 0x6AF66BF6, 0x000B69F6,
|
||||
0x2F8668F6, 0x2FA62F96, 0x2FC62FB6, 0x2FE62FD6,
|
||||
0x6A636873, 0x75E0E920, 0x56565257, 0x57545155,
|
||||
0x5D525E53, 0x6B525C51, 0x24662426, 0x24762416,
|
||||
0x7AE024E6, 0x24C624D6, 0x8DEC3A92, 0x66A324B6,
|
||||
0x6EF66783, 0x6CF66DF6, 0x6AF66BF6, 0xA04369F6,
|
||||
0x2FE668F6, 0xC8046063, 0x8D046E63, 0x62166153,
|
||||
0x24227EFC, 0x60E37404, 0x8908C818, 0x71046513,
|
||||
0x62526616, 0x24227EF8, 0xAFF41461, 0xE2047408,
|
||||
0x65133E22, 0x66E38D02, 0x6EF6A01C, 0x6EF6AF87,
|
||||
0xC8046063, 0x61638D04, 0x625275FC, 0x242671FC,
|
||||
0xC8186013, 0x75F88906, 0x66525251, 0x24662426,
|
||||
0x71F8AFF6, 0x3122E204, 0x66138F02, 0x0009AFA1,
|
||||
0x0009A00A, 0x0009A004, 0x76FF6254, 0x74012420,
|
||||
0x8BF92668, 0x6073000B, 0x0009A004, 0x625075FF,
|
||||
0x242476FF, 0x8BF92668, 0x6073000B, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x544F0D0A,
|
||||
0x46205355, 0x00003A57, 0x2072614D, 0x32203232,
|
||||
0x20373030, 0x353A3431, 0x33353A34, 0x00000000,
|
||||
0x00000D0A, 0x00000043, 0x61766E49, 0x2064696C,
|
||||
0x72657375, 0x20726F20, 0x2079656B, 0x00214449,
|
||||
0x6E6B6E55, 0x206E776F, 0x6D6D6F63, 0x3D646E61,
|
||||
0x00000000, 0x61437748, 0x7262696C, 0x6F697461,
|
||||
0x6620206E, 0x0A6C6961, 0x0000000D, 0x73696F4E,
|
||||
0x61432065, 0x7262696C, 0x6F697461, 0x6166206E,
|
||||
0x21216C69, 0x00000D0A, 0x00000D0A, 0x00000042,
|
||||
0x000000FF, 0x00020001, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x010E010D, 0x00020003, 0x01090108, 0x0002010A,
|
||||
0x00030002, 0x02020201, 0x02040203, 0x02060205,
|
||||
0x02080207, 0x020A0209, 0x020C020B, 0x020E020D,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x010E010D, 0x00FF010F, 0x01090108, 0x010B010A,
|
||||
0x00030002, 0x02020201, 0x02040203, 0x02060205,
|
||||
0x02080207, 0x020A0209, 0x020C020B, 0x020E020D,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF,
|
||||
0x00000072, 0x00205220, 0x00000046, 0x00000059,
|
||||
0x73204142, 0x003D7165, 0x00000074, 0x00000000,
|
||||
0x02000112, 0x40FFFFFF, 0x12210ACE, 0x20104890,
|
||||
0x02090100, 0x0101002E, 0x09FA8000, 0x04000004,
|
||||
0x000000FF, 0x02010507, 0x07000200, 0x00028205,
|
||||
0x05070002, 0x00400383, 0x04050701, 0x01004003,
|
||||
0x002E0209, 0x80000101, 0x000409FA, 0x00FF0400,
|
||||
0x05070000, 0x00400201, 0x82050700, 0x00004002,
|
||||
0x03830507, 0x07010040, 0x40030405, 0x03040100,
|
||||
0x030C0409, 0x0079005A, 0x00410044, 0x03180053,
|
||||
0x00530055, 0x00320042, 0x0030002E, 0x00570020,
|
||||
0x0041004C, 0x0000004E, 0x00000000, 0x00000000,
|
||||
0x00000709, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
};
|
||||
|
||||
const u32_t zcFwImageSize=11104;
|
1017
drivers/staging/otus/hal/hpfwu_txstream.c
Normal file
1017
drivers/staging/otus/hal/hpfwu_txstream.c
Normal file
File diff suppressed because it is too large
Load diff
240
drivers/staging/otus/hal/hpfwuinit.c
Normal file
240
drivers/staging/otus/hal/hpfwuinit.c
Normal file
|
@ -0,0 +1,240 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
#include "../80211core/cprecomp.h"
|
||||
|
||||
const u32_t zcFwImage[] = {
|
||||
0x0009000B, 0x7FFC4F22, 0xD695D494, 0x0009460B,
|
||||
0xD494E570, 0x4518B01E, 0x89042008, 0xD690D492,
|
||||
0x462B7F04, 0xB0124F26, 0xD2900009, 0x420BD490,
|
||||
0xE6000009, 0x949AD58F, 0xC8406052, 0x2F028F03,
|
||||
0x8FF93642, 0x7F047601, 0x000B4F26, 0xD28A0009,
|
||||
0x0009422B, 0x2FD62FC6, 0x4F222FE6, 0xD6877FEC,
|
||||
0x626061F3, 0x2F208461, 0x846280F1, 0x80F27110,
|
||||
0x6D438463, 0x846480F3, 0x80F46413, 0x6C538465,
|
||||
0x846680F5, 0x80F6E500, 0xD77D8467, 0x846880F7,
|
||||
0x80F8EE04, 0x80F98469, 0x80FA846A, 0x80FB846B,
|
||||
0x80FC846C, 0x80FD846D, 0x80FE846E, 0x80FF846F,
|
||||
0x6653655C, 0x7501367C, 0x665C6260, 0x242036E3,
|
||||
0x74018FF6, 0x66F32F16, 0xE7107604, 0xB00D65C3,
|
||||
0x6E0364D3, 0xD46B7F04, 0x420BD26B, 0x60E36503,
|
||||
0x4F267F14, 0x6DF66EF6, 0x6CF6000B, 0x2FB62FA6,
|
||||
0x2FD62FC6, 0x4F222FE6, 0x3F3C933A, 0x4108E141,
|
||||
0x31FCE200, 0x11733526, 0x21521162, 0x11418D02,
|
||||
0xE0FFA098, 0x4A18EA01, 0x262066F3, 0x32A27201,
|
||||
0x76018FFB, 0x6BE3EE00, 0xE0446CF3, 0x00FE4008,
|
||||
0x450BD556, 0x660361B3, 0x4008E043, 0x6DC004FE,
|
||||
0x014C6063, 0x31EC3EDC, 0x60E36E1C, 0x7B0107FC,
|
||||
0x2C703BA2, 0x8FE80FD4, 0xE0427C01, 0xEB004008,
|
||||
0x70FC07FE, 0x6EB36CB3, 0xA0200AFE, 0x2710EDFF,
|
||||
0x7C01FEE0, 0x60C36CCC, 0x657002FC, 0x6BBC3B2C,
|
||||
0x01FC60B3, 0x0F1460C3, 0x0F2460B3, 0x04FC60C3,
|
||||
0x342C7E01, 0x01FC604C, 0x251A62D3, 0xD43C225A,
|
||||
0x2750602C, 0x064E4008, 0x2D6A4D19, 0x3EA27701,
|
||||
0x66D78BDF, 0x4018E001, 0x0F646563, 0x70014519,
|
||||
0x0F544629, 0x0F647001, 0x70014619, 0x90420F64,
|
||||
0xE0450EFE, 0xEA014008, 0xE0460FF6, 0x4A184008,
|
||||
0xED0067F3, 0x0FF637AC, 0x0FF67004, 0xE345E104,
|
||||
0x7C014308, 0x6CCC33FC, 0x60C36432, 0x5531024C,
|
||||
0x6BBC3B2C, 0x045C60B3, 0x60C35A32, 0x60B30A44,
|
||||
0x60C30F24, 0x6A7006FC, 0x606C362C, 0x66E005FC,
|
||||
0x6A5C64AC, 0x626C24AA, 0x89053420, 0x4D084D08,
|
||||
0xCB0460D3, 0x600BA006, 0x7D014110, 0x8FD67701,
|
||||
0xE0007E01, 0x3F3C9308, 0x6EF64F26, 0x6CF66DF6,
|
||||
0x000B6BF6, 0x01386AF6, 0x00000120, 0x00200D54,
|
||||
0x002002BE, 0x00102800, 0x00200D64, 0x0010F00A,
|
||||
0x0010F000, 0x001C001C, 0x00103252, 0x00200DA0,
|
||||
0x0010FFFC, 0x00200D7C, 0x0020032C, 0x00200370,
|
||||
0x00200954, 0x0009000B, 0x2FD62FC6, 0x4F222FE6,
|
||||
0x6D436C53, 0xEE00A004, 0x7E0164D4, 0x644CBFF2,
|
||||
0x8BF93EC2, 0x6EF64F26, 0x000B6DF6, 0xE5006CF6,
|
||||
0x6643A002, 0x76017501, 0x22286260, 0xAFE38BFA,
|
||||
0x2FE60009, 0x75076253, 0xE1086753, 0x6043EE0A,
|
||||
0x4409C90F, 0x650330E2, 0x8D014409, 0xE630E637,
|
||||
0x4110365C, 0x8FF22760, 0xE00077FF, 0x000B8028,
|
||||
0x4F226EF6, 0xBFE47FEC, 0xBFD865F3, 0x7F1464F3,
|
||||
0x000B4F26, 0x4F22E000, 0xBFDA7FEC, 0x64F365F3,
|
||||
0x7406BFCD, 0x4F267F14, 0xE000000B, 0x4F222FE6,
|
||||
0x62537FEC, 0x65F36E43, 0x6423BFCB, 0x64E3BFBF,
|
||||
0x64F3BFBD, 0xBFBAD403, 0x7F140009, 0x000B4F26,
|
||||
0x00006EF6, 0x00200DB0, 0x89004011, 0x4111600B,
|
||||
0x4F228906, 0x611BB004, 0x000B4F26, 0x0009600B,
|
||||
0x620D2F26, 0x8F413020, 0x40180019, 0x8B0D3016,
|
||||
0x31043104, 0x31043104, 0x31043104, 0x31043104,
|
||||
0x890062F6, 0x4119310C, 0x6013000B, 0x41296219,
|
||||
0x20084018, 0x31048927, 0x31043104, 0x31043104,
|
||||
0x31043104, 0x31043104, 0x31043104, 0x31043104,
|
||||
0x31043104, 0x61193104, 0x3204221D, 0x32043204,
|
||||
0x32043204, 0x32043204, 0x32043204, 0x32043204,
|
||||
0x32043204, 0x32043204, 0x89003204, 0x4229320C,
|
||||
0x000B6023, 0xE00062F6, 0x62F6000B, 0x42286213,
|
||||
0x42244129, 0x42243104, 0x42243104, 0x42243104,
|
||||
0x42243104, 0x42243104, 0x42243104, 0x42243104,
|
||||
0x42243104, 0x42243104, 0x42243104, 0x42243104,
|
||||
0x42243104, 0x42243104, 0x42243104, 0x42243104,
|
||||
0x89003104, 0x6013310C, 0x62F6000B, 0x2F262F16,
|
||||
0x51F552F3, 0x52F22129, 0x52F41210, 0x212951F6,
|
||||
0x121152F2, 0x000B62F6, 0x000061F6, 0x51F32F16,
|
||||
0x310050F1, 0x51F48B02, 0x310050F2, 0x000B0029,
|
||||
0x000061F6, 0x51F32F16, 0x310050F1, 0x51F48B06,
|
||||
0x310050F2, 0xCA010029, 0x61F6000B, 0x000BE001,
|
||||
0x000061F6, 0x50F0000B, 0x2F262F16, 0xE10052F2,
|
||||
0x12001211, 0x000B62F6, 0x000061F6, 0x2F162F06,
|
||||
0x8B264115, 0x3103E040, 0x2F26892B, 0x52F62F36,
|
||||
0xE02053F5, 0x8B053103, 0xE3006233, 0x89093100,
|
||||
0x3108A002, 0x8B0F2338, 0xD0064F22, 0x6023400B,
|
||||
0x4F266203, 0x112151F4, 0x63F61130, 0x61F662F6,
|
||||
0x60F6000B, 0x002007F4, 0x4100C709, 0x0123011D,
|
||||
0x51F20009, 0x110150F4, 0x110050F3, 0x000B61F6,
|
||||
0x51F260F6, 0x1101E000, 0x61F61100, 0x60F6000B,
|
||||
0x01300000, 0x0128012C, 0x01200124, 0x0118011C,
|
||||
0x0106010A, 0x00FE0102, 0x00E200E6, 0x00DA00DE,
|
||||
0x00CC00D0, 0x00C400C8, 0x00A800AC, 0x00A000A4,
|
||||
0x008C0090, 0x00840088, 0x0066006A, 0x005E0062,
|
||||
0x42244300, 0x42244300, 0x42244300, 0x43286133,
|
||||
0x43084318, 0x42284308, 0x42084218, 0x41094208,
|
||||
0xAFAF4109, 0x4300221B, 0x43004224, 0x43004224,
|
||||
0x61334224, 0x43184328, 0x42184228, 0xAFA14119,
|
||||
0x4300221B, 0x43004224, 0x43004224, 0x61334224,
|
||||
0x43084328, 0x42284308, 0x42084208, 0x41094119,
|
||||
0xAF8F4109, 0x4300221B, 0x43004224, 0x43004224,
|
||||
0x61334224, 0x212D4328, 0x6213AF84, 0x42244300,
|
||||
0x42244300, 0x42244300, 0x43186133, 0x43084308,
|
||||
0x42084218, 0x41294208, 0x41094109, 0x221BAF72,
|
||||
0x42244300, 0x42244300, 0x42244300, 0x43186133,
|
||||
0x41294218, 0xAF654119, 0x4300221B, 0x43004224,
|
||||
0x43004224, 0x43004224, 0x43004224, 0x43004224,
|
||||
0x43004224, 0x4224AF56, 0x2F162F06, 0x8B264115,
|
||||
0x3103E040, 0x2F26892B, 0x52F62F36, 0xE02053F5,
|
||||
0x8B053103, 0xE2006323, 0x89093100, 0x3108A002,
|
||||
0x8B0F2228, 0xD0064F22, 0x6033400B, 0x4F266303,
|
||||
0x112151F4, 0x63F61130, 0x61F662F6, 0x60F6000B,
|
||||
0x002008B4, 0x4100C709, 0x0123011D, 0x51F20009,
|
||||
0x110150F4, 0x110050F3, 0x000B61F6, 0x51F260F6,
|
||||
0x1101E000, 0x61F61100, 0x60F6000B, 0x012E0000,
|
||||
0x0126012A, 0x011E0122, 0x0116011A, 0x01040108,
|
||||
0x00FC0100, 0x00E000E4, 0x00D800DC, 0x00CC00D0,
|
||||
0x00C400C8, 0x00A800AC, 0x00A000A4, 0x008C0090,
|
||||
0x00840088, 0x0066006A, 0x005E0062, 0x43254201,
|
||||
0x43254201, 0x43254201, 0x42296123, 0x42094219,
|
||||
0x43294209, 0x43094319, 0x41084309, 0xAFAF4108,
|
||||
0x4201231B, 0x42014325, 0x42014325, 0x61234325,
|
||||
0x42194229, 0x43194329, 0xAFA14118, 0x4201231B,
|
||||
0x42014325, 0x42014325, 0x61234325, 0x42094229,
|
||||
0x43294209, 0x43094309, 0x41084118, 0xAF8F4108,
|
||||
0x4201231B, 0x42014325, 0x42014325, 0x61234325,
|
||||
0xAF854229, 0x4201231D, 0x42014325, 0x42014325,
|
||||
0x61234325, 0x42094219, 0x43194209, 0x43094309,
|
||||
0x41084128, 0xAF734108, 0x4201231B, 0x42014325,
|
||||
0x42014325, 0x61234325, 0x43194219, 0x41184128,
|
||||
0x231BAF66, 0x43254201, 0x43254201, 0x43254201,
|
||||
0x43254201, 0x43254201, 0x43254201, 0xAF574201,
|
||||
0x00004325, 0x080A0C0E, 0x00020406, 0x1A1C1E20,
|
||||
0x12141618, 0x2E303234, 0x26282A2C, 0x3A3C3E40,
|
||||
0x6C625648, 0x41112F26, 0xE2208F18, 0x890B3123,
|
||||
0x321CD204, 0xD1026220, 0x412B312C, 0x00090009,
|
||||
0x0020081E, 0x002007D4, 0x000BE000, 0x400062F6,
|
||||
0x40004000, 0x40004000, 0x40004000, 0x62F6000B,
|
||||
0x40004000, 0x40004000, 0x40004000, 0x40184000,
|
||||
0x62F6000B, 0x40004000, 0x40004000, 0x40004000,
|
||||
0x40284000, 0x62F6000B, 0x40004000, 0x40184000,
|
||||
0x000B4028, 0xC90F62F6, 0x40054005, 0x40054005,
|
||||
0x62F6000B, 0x4005C907, 0x40054005, 0x62F6000B,
|
||||
0x4005C903, 0x000B4005, 0xC90162F6, 0x000B4005,
|
||||
0x000062F6, 0x080A0C0E, 0x00020406, 0x1A1C1E20,
|
||||
0x12141618, 0x2E303234, 0x26282A2C, 0x3A3C3E40,
|
||||
0x6C625648, 0x41112F26, 0xE2208F18, 0x890B3123,
|
||||
0x321CD204, 0xD1026220, 0x412B312C, 0x00090009,
|
||||
0x002008DE, 0x00200894, 0x000BE000, 0x400162F6,
|
||||
0x40014001, 0x40014001, 0x40014001, 0x62F6000B,
|
||||
0x40014001, 0x40014001, 0x40014001, 0x40194001,
|
||||
0x62F6000B, 0x40014001, 0x40014001, 0x40014001,
|
||||
0x40294001, 0x62F6000B, 0x40014001, 0x40194001,
|
||||
0x000B4029, 0x400462F6, 0x40044004, 0xC90F4004,
|
||||
0x62F6000B, 0x40044004, 0xC9074004, 0x62F6000B,
|
||||
0x40044004, 0x000BC903, 0x400462F6, 0x000BC901,
|
||||
0x000062F6, 0x00000000, 0x77073096, 0xEE0E612C,
|
||||
0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535,
|
||||
0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E,
|
||||
0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07,
|
||||
0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148,
|
||||
0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551,
|
||||
0x83D385C7, 0x136C9856, 0x646BA8C0, 0xFD62F97A,
|
||||
0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63,
|
||||
0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4,
|
||||
0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD,
|
||||
0xA50AB56B, 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6,
|
||||
0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF,
|
||||
0xABD13D59, 0x26D930AC, 0x51DE003A, 0xC8D75180,
|
||||
0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599,
|
||||
0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2,
|
||||
0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB,
|
||||
0xB6662D3D, 0x76DC4190, 0x01DB7106, 0x98D220BC,
|
||||
0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5,
|
||||
0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E,
|
||||
0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97,
|
||||
0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8,
|
||||
0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1,
|
||||
0xF50FC457, 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA,
|
||||
0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3,
|
||||
0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074,
|
||||
0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D,
|
||||
0xD3D6F4FB, 0x4369E96A, 0x346ED9FC, 0xAD678846,
|
||||
0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F,
|
||||
0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010,
|
||||
0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409,
|
||||
0xCE61E49F, 0x5EDEF90E, 0x29D9C998, 0xB0D09822,
|
||||
0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B,
|
||||
0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C,
|
||||
0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615,
|
||||
0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E,
|
||||
0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27,
|
||||
0x7D079EB1, 0xF00F9344, 0x8708A3D2, 0x1E01F268,
|
||||
0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671,
|
||||
0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A,
|
||||
0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43,
|
||||
0x60B08ED5, 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4,
|
||||
0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD,
|
||||
0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6,
|
||||
0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF,
|
||||
0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0,
|
||||
0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9,
|
||||
0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92,
|
||||
0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B,
|
||||
0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C,
|
||||
0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785,
|
||||
0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE,
|
||||
0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7,
|
||||
0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8,
|
||||
0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1,
|
||||
0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA,
|
||||
0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3,
|
||||
0x166CCF45, 0xA00AE278, 0xD70DD2EE, 0x4E048354,
|
||||
0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D,
|
||||
0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66,
|
||||
0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F,
|
||||
0x30B5FFE9, 0xBDBDF21C, 0xCABAC28A, 0x53B39330,
|
||||
0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729,
|
||||
0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02,
|
||||
0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B,
|
||||
0x2D02EF8D, 0x544F0D0A, 0x50205355, 0x20312D48,
|
||||
0x003A5746, 0x72636564, 0x69747079, 0x65206E6F,
|
||||
0x726F7272, 0x0A0D2121, 0x00000000, 0x6564667A,
|
||||
0x70797263, 0x65725F74, 0x616C7567, 0x79726F74,
|
||||
0x6261745F, 0x7220656C, 0x203D7465, 0x00000000,
|
||||
0x45485441, 0x38731652, 0x89ACFF91, 0xEE55D178,
|
||||
0xEE000D0A, };
|
||||
|
||||
const u32_t zcFwImageSize=3508;
|
4643
drivers/staging/otus/hal/hpmain.c
Normal file
4643
drivers/staging/otus/hal/hpmain.c
Normal file
File diff suppressed because it is too large
Load diff
2481
drivers/staging/otus/hal/hpreg.c
Normal file
2481
drivers/staging/otus/hal/hpreg.c
Normal file
File diff suppressed because it is too large
Load diff
524
drivers/staging/otus/hal/hpreg.h
Normal file
524
drivers/staging/otus/hal/hpreg.h
Normal file
|
@ -0,0 +1,524 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2005 ZyDAS Technology Corporation
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* Module Name : hpreg.h */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module contains Regulatory Table definitions. */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* None */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#ifndef _HPREG_H
|
||||
#define _HPREG_H
|
||||
|
||||
typedef u16_t HAL_CTRY_CODE; /* country code */
|
||||
typedef u16_t HAL_REG_DOMAIN; /* regulatory domain code */
|
||||
typedef enum {
|
||||
AH_FALSE = 0, /* NB: lots of code assumes false is zero */
|
||||
AH_TRUE = 1,
|
||||
} HAL_BOOL;
|
||||
|
||||
|
||||
/*
|
||||
* Country/Region Codes from MS WINNLS.H
|
||||
* Numbering from ISO 3166
|
||||
*/
|
||||
enum CountryCode {
|
||||
CTRY_ALBANIA = 8, /* Albania */
|
||||
CTRY_ALGERIA = 12, /* Algeria */
|
||||
CTRY_ARGENTINA = 32, /* Argentina */
|
||||
CTRY_ARMENIA = 51, /* Armenia */
|
||||
CTRY_AUSTRALIA = 36, /* Australia */
|
||||
CTRY_AUSTRIA = 40, /* Austria */
|
||||
CTRY_AZERBAIJAN = 31, /* Azerbaijan */
|
||||
CTRY_BAHRAIN = 48, /* Bahrain */
|
||||
CTRY_BELARUS = 112, /* Belarus */
|
||||
CTRY_BELGIUM = 56, /* Belgium */
|
||||
CTRY_BELIZE = 84, /* Belize */
|
||||
CTRY_BOLIVIA = 68, /* Bolivia */
|
||||
CTRY_BOSNIA = 70, /* Bosnia */
|
||||
CTRY_BRAZIL = 76, /* Brazil */
|
||||
CTRY_BRUNEI_DARUSSALAM = 96, /* Brunei Darussalam */
|
||||
CTRY_BULGARIA = 100, /* Bulgaria */
|
||||
CTRY_CANADA = 124, /* Canada */
|
||||
CTRY_CHILE = 152, /* Chile */
|
||||
CTRY_CHINA = 156, /* People's Republic of China */
|
||||
CTRY_COLOMBIA = 170, /* Colombia */
|
||||
CTRY_COSTA_RICA = 188, /* Costa Rica */
|
||||
CTRY_CROATIA = 191, /* Croatia */
|
||||
CTRY_CYPRUS = 196, /* Cyprus */
|
||||
CTRY_CZECH = 203, /* Czech Republic */
|
||||
CTRY_DENMARK = 208, /* Denmark */
|
||||
CTRY_DOMINICAN_REPUBLIC = 214, /* Dominican Republic */
|
||||
CTRY_ECUADOR = 218, /* Ecuador */
|
||||
CTRY_EGYPT = 818, /* Egypt */
|
||||
CTRY_EL_SALVADOR = 222, /* El Salvador */
|
||||
CTRY_ESTONIA = 233, /* Estonia */
|
||||
CTRY_FAEROE_ISLANDS = 234, /* Faeroe Islands */
|
||||
CTRY_FINLAND = 246, /* Finland */
|
||||
CTRY_FRANCE = 250, /* France */
|
||||
CTRY_FRANCE2 = 255, /* France2 */
|
||||
CTRY_GEORGIA = 268, /* Georgia */
|
||||
CTRY_GERMANY = 276, /* Germany */
|
||||
CTRY_GREECE = 300, /* Greece */
|
||||
CTRY_GUATEMALA = 320, /* Guatemala */
|
||||
CTRY_HONDURAS = 340, /* Honduras */
|
||||
CTRY_HONG_KONG = 344, /* Hong Kong S.A.R., P.R.C. */
|
||||
CTRY_HUNGARY = 348, /* Hungary */
|
||||
CTRY_ICELAND = 352, /* Iceland */
|
||||
CTRY_INDIA = 356, /* India */
|
||||
CTRY_INDONESIA = 360, /* Indonesia */
|
||||
CTRY_IRAN = 364, /* Iran */
|
||||
CTRY_IRAQ = 368, /* Iraq */
|
||||
CTRY_IRELAND = 372, /* Ireland */
|
||||
CTRY_ISRAEL = 376, /* Israel */
|
||||
CTRY_ISRAEL2 = 377, /* Israel2 */
|
||||
CTRY_ITALY = 380, /* Italy */
|
||||
CTRY_JAMAICA = 388, /* Jamaica */
|
||||
CTRY_JAPAN = 392, /* Japan */
|
||||
CTRY_JAPAN1 = 393, /* Japan (JP1) */
|
||||
CTRY_JAPAN2 = 394, /* Japan (JP0) */
|
||||
CTRY_JAPAN3 = 395, /* Japan (JP1-1) */
|
||||
CTRY_JAPAN4 = 396, /* Japan (JE1) */
|
||||
CTRY_JAPAN5 = 397, /* Japan (JE2) */
|
||||
CTRY_JAPAN6 = 399, /* Japan (JP6) */
|
||||
|
||||
CTRY_JAPAN7 = 4007, /* Japan (J7) */
|
||||
CTRY_JAPAN8 = 4008, /* Japan (J8) */
|
||||
CTRY_JAPAN9 = 4009, /* Japan (J9) */
|
||||
|
||||
CTRY_JAPAN10 = 4010, /* Japan (J10) */
|
||||
CTRY_JAPAN11 = 4011, /* Japan (J11) */
|
||||
CTRY_JAPAN12 = 4012, /* Japan (J12) */
|
||||
|
||||
CTRY_JAPAN13 = 4013, /* Japan (J13) */
|
||||
CTRY_JAPAN14 = 4014, /* Japan (J14) */
|
||||
CTRY_JAPAN15 = 4015, /* Japan (J15) */
|
||||
|
||||
CTRY_JAPAN16 = 4016, /* Japan (J16) */
|
||||
CTRY_JAPAN17 = 4017, /* Japan (J17) */
|
||||
CTRY_JAPAN18 = 4018, /* Japan (J18) */
|
||||
|
||||
CTRY_JAPAN19 = 4019, /* Japan (J19) */
|
||||
CTRY_JAPAN20 = 4020, /* Japan (J20) */
|
||||
CTRY_JAPAN21 = 4021, /* Japan (J21) */
|
||||
|
||||
CTRY_JAPAN22 = 4022, /* Japan (J22) */
|
||||
CTRY_JAPAN23 = 4023, /* Japan (J23) */
|
||||
CTRY_JAPAN24 = 4024, /* Japan (J24) */
|
||||
|
||||
CTRY_JAPAN25 = 4025, /* Japan (J25) */
|
||||
CTRY_JAPAN26 = 4026, /* Japan (J26) */
|
||||
CTRY_JAPAN27 = 4027, /* Japan (J27) */
|
||||
|
||||
CTRY_JAPAN28 = 4028, /* Japan (J28) */
|
||||
CTRY_JAPAN29 = 4029, /* Japan (J29) */
|
||||
CTRY_JAPAN30 = 4030, /* Japan (J30) */
|
||||
|
||||
CTRY_JAPAN31 = 4031, /* Japan (J31) */
|
||||
CTRY_JAPAN32 = 4032, /* Japan (J32) */
|
||||
CTRY_JAPAN33 = 4033, /* Japan (J33) */
|
||||
|
||||
CTRY_JAPAN34 = 4034, /* Japan (J34) */
|
||||
CTRY_JAPAN35 = 4035, /* Japan (J35) */
|
||||
CTRY_JAPAN36 = 4036, /* Japan (J36) */
|
||||
|
||||
CTRY_JAPAN37 = 4037, /* Japan (J37) */
|
||||
CTRY_JAPAN38 = 4038, /* Japan (J38) */
|
||||
CTRY_JAPAN39 = 4039, /* Japan (J39) */
|
||||
|
||||
CTRY_JAPAN40 = 4040, /* Japan (J40) */
|
||||
CTRY_JAPAN41 = 4041, /* Japan (J41) */
|
||||
CTRY_JAPAN42 = 4042, /* Japan (J42) */
|
||||
CTRY_JAPAN43 = 4043, /* Japan (J43) */
|
||||
CTRY_JAPAN44 = 4044, /* Japan (J44) */
|
||||
CTRY_JAPAN45 = 4045, /* Japan (J45) */
|
||||
CTRY_JAPAN46 = 4046, /* Japan (J46) */
|
||||
CTRY_JAPAN47 = 4047, /* Japan (J47) */
|
||||
CTRY_JAPAN48 = 4048, /* Japan (J48) */
|
||||
CTRY_JAPAN49 = 4049, /* Japan (J49) */
|
||||
|
||||
CTRY_JAPAN50 = 4050, /* Japan (J50) */
|
||||
CTRY_JAPAN51 = 4051, /* Japan (J51) */
|
||||
CTRY_JAPAN52 = 4052, /* Japan (J52) */
|
||||
CTRY_JAPAN53 = 4053, /* Japan (J53) */
|
||||
CTRY_JAPAN54 = 4054, /* Japan (J54) */
|
||||
|
||||
CTRY_JORDAN = 400, /* Jordan */
|
||||
CTRY_KAZAKHSTAN = 398, /* Kazakhstan */
|
||||
CTRY_KENYA = 404, /* Kenya */
|
||||
CTRY_KOREA_NORTH = 408, /* North Korea */
|
||||
CTRY_KOREA_ROC = 410, /* South Korea */
|
||||
CTRY_KOREA_ROC2 = 411, /* South Korea */
|
||||
CTRY_KOREA_ROC3 = 412, /* South Korea */
|
||||
CTRY_KUWAIT = 414, /* Kuwait */
|
||||
CTRY_LATVIA = 428, /* Latvia */
|
||||
CTRY_LEBANON = 422, /* Lebanon */
|
||||
CTRY_LIBYA = 434, /* Libya */
|
||||
CTRY_LIECHTENSTEIN = 438, /* Liechtenstein */
|
||||
CTRY_LITHUANIA = 440, /* Lithuania */
|
||||
CTRY_LUXEMBOURG = 442, /* Luxembourg */
|
||||
CTRY_MACAU = 446, /* Macau */
|
||||
CTRY_MACEDONIA = 807, /* the Former Yugoslav Republic of Macedonia */
|
||||
CTRY_MALAYSIA = 458, /* Malaysia */
|
||||
CTRY_MALTA = 470, /* Malta */
|
||||
CTRY_MEXICO = 484, /* Mexico */
|
||||
CTRY_MONACO = 492, /* Principality of Monaco */
|
||||
CTRY_MOROCCO = 504, /* Morocco */
|
||||
CTRY_NETHERLANDS = 528, /* Netherlands */
|
||||
CTRY_NETHERLANDS_ANT = 530, /* Netherlands-Antellis */
|
||||
CTRY_NEW_ZEALAND = 554, /* New Zealand */
|
||||
CTRY_NICARAGUA = 558, /* Nicaragua */
|
||||
CTRY_NORWAY = 578, /* Norway */
|
||||
CTRY_OMAN = 512, /* Oman */
|
||||
CTRY_PAKISTAN = 586, /* Islamic Republic of Pakistan */
|
||||
CTRY_PANAMA = 591, /* Panama */
|
||||
CTRY_PARAGUAY = 600, /* Paraguay */
|
||||
CTRY_PERU = 604, /* Peru */
|
||||
CTRY_PHILIPPINES = 608, /* Republic of the Philippines */
|
||||
CTRY_POLAND = 616, /* Poland */
|
||||
CTRY_PORTUGAL = 620, /* Portugal */
|
||||
CTRY_PUERTO_RICO = 630, /* Puerto Rico */
|
||||
CTRY_QATAR = 634, /* Qatar */
|
||||
CTRY_ROMANIA = 642, /* Romania */
|
||||
CTRY_RUSSIA = 643, /* Russia */
|
||||
CTRY_SAUDI_ARABIA = 682, /* Saudi Arabia */
|
||||
CTRY_SERBIA_MONT = 891, /* Serbia and Montenegro */
|
||||
CTRY_SINGAPORE = 702, /* Singapore */
|
||||
CTRY_SLOVAKIA = 703, /* Slovak Republic */
|
||||
CTRY_SLOVENIA = 705, /* Slovenia */
|
||||
CTRY_SOUTH_AFRICA = 710, /* South Africa */
|
||||
CTRY_SPAIN = 724, /* Spain */
|
||||
CTRY_SRILANKA = 144, /* Srilanka */
|
||||
CTRY_SWEDEN = 752, /* Sweden */
|
||||
CTRY_SWITZERLAND = 756, /* Switzerland */
|
||||
CTRY_SYRIA = 760, /* Syria */
|
||||
CTRY_TAIWAN = 158, /* Taiwan */
|
||||
CTRY_THAILAND = 764, /* Thailand */
|
||||
CTRY_TRINIDAD_Y_TOBAGO = 780, /* Trinidad y Tobago */
|
||||
CTRY_TUNISIA = 788, /* Tunisia */
|
||||
CTRY_TURKEY = 792, /* Turkey */
|
||||
CTRY_UAE = 784, /* U.A.E. */
|
||||
CTRY_UKRAINE = 804, /* Ukraine */
|
||||
CTRY_UNITED_KINGDOM = 826, /* United Kingdom */
|
||||
CTRY_UNITED_STATES = 840, /* United States */
|
||||
CTRY_UNITED_STATES_FCC49 = 842, /* United States (Public Safety)*/
|
||||
CTRY_URUGUAY = 858, /* Uruguay */
|
||||
CTRY_UZBEKISTAN = 860, /* Uzbekistan */
|
||||
CTRY_VENEZUELA = 862, /* Venezuela */
|
||||
CTRY_VIET_NAM = 704, /* Viet Nam */
|
||||
CTRY_YEMEN = 887, /* Yemen */
|
||||
CTRY_ZIMBABWE = 716 /* Zimbabwe */
|
||||
};
|
||||
|
||||
/* Enumerated Regulatory Domain Information 8 bit values indicate that
|
||||
* the regdomain is really a pair of unitary regdomains. 12 bit values
|
||||
* are the real unitary regdomains and are the only ones which have the
|
||||
* frequency bitmasks and flags set.
|
||||
*/
|
||||
enum EnumRd {
|
||||
/*
|
||||
* The following regulatory domain definitions are
|
||||
* found in the EEPROM. Each regulatory domain
|
||||
* can operate in either a 5GHz or 2.4GHz wireless mode or
|
||||
* both 5GHz and 2.4GHz wireless modes.
|
||||
* In general, the value holds no special
|
||||
* meaning and is used to decode into either specific
|
||||
* 2.4GHz or 5GHz wireless mode for that particular
|
||||
* regulatory domain.
|
||||
*/
|
||||
NO_ENUMRD = 0x00,
|
||||
NULL1_WORLD = 0x03, /* For 11b-only countries (no 11a allowed) */
|
||||
NULL1_ETSIB = 0x07, /* Israel */
|
||||
NULL1_ETSIC = 0x08,
|
||||
FCC1_FCCA = 0x10, /* USA */
|
||||
FCC1_WORLD = 0x11, /* Hong Kong */
|
||||
FCC4_FCCA = 0x12, /* USA - Public Safety */
|
||||
FCC5_FCCA = 0x13, /* USA - with no DFS (UNII-1 + UNII-3 only) */
|
||||
FCC6_FCCA = 0x14, /* Canada */
|
||||
|
||||
FCC2_FCCA = 0x20, /* Canada */
|
||||
FCC2_WORLD = 0x21, /* Australia & HK */
|
||||
FCC2_ETSIC = 0x22,
|
||||
FCC6_WORLD = 0x23, /* Australia */
|
||||
|
||||
FRANCE_RES = 0x31, /* Legacy France for OEM */
|
||||
FCC3_FCCA = 0x3A, /* USA & Canada w/5470 band, 11h, DFS enabled */
|
||||
FCC3_WORLD = 0x3B, /* USA & Canada w/5470 band, 11h, DFS enabled */
|
||||
|
||||
ETSI1_WORLD = 0x37,
|
||||
ETSI3_ETSIA = 0x32, /* France (optional) */
|
||||
ETSI2_WORLD = 0x35, /* Hungary & others */
|
||||
ETSI3_WORLD = 0x36, /* France & others */
|
||||
ETSI4_WORLD = 0x30,
|
||||
ETSI4_ETSIC = 0x38,
|
||||
ETSI5_WORLD = 0x39,
|
||||
ETSI6_WORLD = 0x34, /* Bulgaria */
|
||||
ETSI_RESERVED = 0x33, /* Reserved (Do not used) */
|
||||
|
||||
MKK1_MKKA = 0x40, /* Japan (JP1) */
|
||||
MKK1_MKKB = 0x41, /* Japan (JP0) */
|
||||
APL4_WORLD = 0x42, /* Singapore */
|
||||
MKK2_MKKA = 0x43, /* Japan with 4.9G channels */
|
||||
APL_RESERVED = 0x44, /* Reserved (Do not used) */
|
||||
APL2_WORLD = 0x45, /* Korea */
|
||||
APL2_APLC = 0x46,
|
||||
APL3_WORLD = 0x47,
|
||||
MKK1_FCCA = 0x48, /* Japan (JP1-1) */
|
||||
APL2_APLD = 0x49, /* Korea with 2.3G channels */
|
||||
MKK1_MKKA1 = 0x4A, /* Japan (JE1) */
|
||||
MKK1_MKKA2 = 0x4B, /* Japan (JE2) */
|
||||
MKK1_MKKC = 0x4C, /* Japan (MKK1_MKKA,except Ch14) */
|
||||
|
||||
APL3_FCCA = 0x50,
|
||||
APL1_WORLD = 0x52, /* Latin America */
|
||||
APL1_FCCA = 0x53,
|
||||
APL1_APLA = 0x54,
|
||||
APL1_ETSIC = 0x55,
|
||||
APL2_ETSIC = 0x56, /* Venezuela */
|
||||
APL2_FCCA = 0x57, /* new Latin America */
|
||||
APL5_WORLD = 0x58, /* Chile */
|
||||
APL6_WORLD = 0x5B, /* Singapore */
|
||||
APL7_FCCA = 0x5C, /* Taiwan 5.47 Band */
|
||||
APL8_WORLD = 0x5D, /* Malaysia 5GHz */
|
||||
APL9_WORLD = 0x5E, /* Korea 5GHz */
|
||||
|
||||
/*
|
||||
* World mode SKUs
|
||||
*/
|
||||
WOR0_WORLD = 0x60, /* World0 (WO0 SKU) */
|
||||
WOR1_WORLD = 0x61, /* World1 (WO1 SKU) */
|
||||
WOR2_WORLD = 0x62, /* World2 (WO2 SKU) */
|
||||
WOR3_WORLD = 0x63, /* World3 (WO3 SKU) */
|
||||
WOR4_WORLD = 0x64, /* World4 (WO4 SKU) */
|
||||
WOR5_ETSIC = 0x65, /* World5 (WO5 SKU) */
|
||||
|
||||
WOR01_WORLD = 0x66, /* World0-1 (WW0-1 SKU) */
|
||||
WOR02_WORLD = 0x67, /* World0-2 (WW0-2 SKU) */
|
||||
EU1_WORLD = 0x68, /* Same as World0-2 (WW0-2 SKU), except active scan ch1-13. No ch14 */
|
||||
|
||||
WOR9_WORLD = 0x69, /* World9 (WO9 SKU) */
|
||||
WORA_WORLD = 0x6A, /* WorldA (WOA SKU) */
|
||||
|
||||
MKK3_MKKB = 0x80, /* Japan UNI-1 even + MKKB */
|
||||
MKK3_MKKA2 = 0x81, /* Japan UNI-1 even + MKKA2 */
|
||||
MKK3_MKKC = 0x82, /* Japan UNI-1 even + MKKC */
|
||||
|
||||
MKK4_MKKB = 0x83, /* Japan UNI-1 even + UNI-2 + MKKB */
|
||||
MKK4_MKKA2 = 0x84, /* Japan UNI-1 even + UNI-2 + MKKA2 */
|
||||
MKK4_MKKC = 0x85, /* Japan UNI-1 even + UNI-2 + MKKC */
|
||||
|
||||
MKK5_MKKB = 0x86, /* Japan UNI-1 even + UNI-2 + mid-band + MKKB */
|
||||
MKK5_MKKA2 = 0x87, /* Japan UNI-1 even + UNI-2 + mid-band + MKKA2 */
|
||||
MKK5_MKKC = 0x88, /* Japan UNI-1 even + UNI-2 + mid-band + MKKC */
|
||||
|
||||
MKK6_MKKB = 0x89, /* Japan UNI-1 even + UNI-1 odd MKKB */
|
||||
MKK6_MKKA2 = 0x8A, /* Japan UNI-1 even + UNI-1 odd + MKKA2 */
|
||||
MKK6_MKKC = 0x8B, /* Japan UNI-1 even + UNI-1 odd + MKKC */
|
||||
|
||||
MKK7_MKKB = 0x8C, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + MKKB */
|
||||
MKK7_MKKA = 0x8D, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + MKKA2 */
|
||||
MKK7_MKKC = 0x8E, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + MKKC */
|
||||
|
||||
MKK8_MKKB = 0x8F, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + mid-band + MKKB */
|
||||
MKK8_MKKA2 = 0x90, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + mid-band + MKKA2 */
|
||||
MKK8_MKKC = 0x91, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + mid-band + MKKC */
|
||||
|
||||
MKK6_MKKA1 = 0xF8, /* Japan UNI-1 even + UNI-1 odd + MKKA1 */
|
||||
MKK6_FCCA = 0xF9, /* Japan UNI-1 even + UNI-1 odd + FCCA */
|
||||
MKK7_MKKA1 = 0xFA, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + MKKA1 */
|
||||
MKK7_FCCA = 0xFB, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + FCCA */
|
||||
MKK9_FCCA = 0xFC, /* Japan UNI-1 even + 4.9GHz + FCCA */
|
||||
MKK9_MKKA1 = 0xFD, /* Japan UNI-1 even + 4.9GHz + MKKA1 */
|
||||
MKK9_MKKC = 0xFE, /* Japan UNI-1 even + 4.9GHz + MKKC */
|
||||
MKK9_MKKA2 = 0xFF, /* Japan UNI-1 even + 4.9GHz + MKKA2 */
|
||||
|
||||
MKK10_FCCA = 0xD0, /* Japan UNI-1 even + UNI-2 + 4.9GHz + FCCA */
|
||||
MKK10_MKKA1 = 0xD1, /* Japan UNI-1 even + UNI-2 + 4.9GHz + MKKA1 */
|
||||
MKK10_MKKC = 0xD2, /* Japan UNI-1 even + UNI-2 + 4.9GHz + MKKC */
|
||||
MKK10_MKKA2 = 0xD3, /* Japan UNI-1 even + UNI-2 + 4.9GHz + MKKA2 */
|
||||
|
||||
MKK11_MKKA = 0xD4, /* Japan UNI-1 even + UNI-2 + Midband + 4.9GHz + MKKA */
|
||||
MKK11_FCCA = 0xD5, /* Japan UNI-1 even + UNI-2 + Midband + 4.9GHz + FCCA */
|
||||
MKK11_MKKA1 = 0xD6, /* Japan UNI-1 even + UNI-2 + Midband + 4.9GHz + MKKA1 */
|
||||
MKK11_MKKC = 0xD7, /* Japan UNI-1 even + UNI-2 + Midband + 4.9GHz + MKKC */
|
||||
MKK11_MKKA2 = 0xD8, /* Japan UNI-1 even + UNI-2 + Midband + 4.9GHz + MKKA2 */
|
||||
|
||||
MKK12_MKKA = 0xD9, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + Midband + 4.9GHz + MKKA */
|
||||
MKK12_FCCA = 0xDA, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + Midband + 4.9GHz + FCCA */
|
||||
MKK12_MKKA1 = 0xDB, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + Midband + 4.9GHz + MKKA1 */
|
||||
MKK12_MKKC = 0xDC, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + Midband + 4.9GHz + MKKC */
|
||||
MKK12_MKKA2 = 0xDD, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + Midband + 4.9GHz + MKKA2 */
|
||||
|
||||
/* Following definitions are used only by s/w to map old
|
||||
* Japan SKUs.
|
||||
*/
|
||||
MKK3_MKKA = 0xF0, /* Japan UNI-1 even + MKKA */
|
||||
MKK3_MKKA1 = 0xF1, /* Japan UNI-1 even + MKKA1 */
|
||||
MKK3_FCCA = 0xF2, /* Japan UNI-1 even + FCCA */
|
||||
MKK4_MKKA = 0xF3, /* Japan UNI-1 even + UNI-2 + MKKA */
|
||||
MKK4_MKKA1 = 0xF4, /* Japan UNI-1 even + UNI-2 + MKKA1 */
|
||||
MKK4_FCCA = 0xF5, /* Japan UNI-1 even + UNI-2 + FCCA */
|
||||
MKK9_MKKA = 0xF6, /* Japan UNI-1 even + 4.9GHz + MKKA*/
|
||||
MKK10_MKKA = 0xF7, /* Japan UNI-1 even + UNI-2 + 4.9GHz + MKKA */
|
||||
|
||||
/*
|
||||
* Regulator domains ending in a number (e.g. APL1,
|
||||
* MK1, ETSI4, etc) apply to 5GHz channel and power
|
||||
* information. Regulator domains ending in a letter
|
||||
* (e.g. APLA, FCCA, etc) apply to 2.4GHz channel and
|
||||
* power information.
|
||||
*/
|
||||
APL1 = 0x0150, /* LAT & Asia */
|
||||
APL2 = 0x0250, /* LAT & Asia */
|
||||
APL3 = 0x0350, /* Taiwan */
|
||||
APL4 = 0x0450, /* Jordan */
|
||||
APL5 = 0x0550, /* Chile */
|
||||
APL6 = 0x0650, /* Singapore */
|
||||
APL7 = 0x0750, /* Taiwan Middle */
|
||||
APL8 = 0x0850, /* Malaysia */
|
||||
APL9 = 0x0950, /* Korea (South) ROC 3 */
|
||||
|
||||
ETSI1 = 0x0130, /* Europe & others */
|
||||
ETSI2 = 0x0230, /* Europe & others */
|
||||
ETSI3 = 0x0330, /* Europe & others */
|
||||
ETSI4 = 0x0430, /* Europe & others */
|
||||
ETSI5 = 0x0530, /* Europe & others */
|
||||
ETSI6 = 0x0630, /* Europe & others */
|
||||
ETSIA = 0x0A30, /* France */
|
||||
ETSIB = 0x0B30, /* Israel */
|
||||
ETSIC = 0x0C30, /* Latin America */
|
||||
|
||||
FCC1 = 0x0110, /* US & others */
|
||||
FCC2 = 0x0120, /* Canada, Australia & New Zealand */
|
||||
FCC3 = 0x0160, /* US w/new middle band & DFS */
|
||||
FCC4 = 0x0165, /* US Public Safety */
|
||||
FCC5 = 0x0510, /* US no DFS */
|
||||
FCC6 = 0x0610, /* Canada & Australia */
|
||||
|
||||
FCCA = 0x0A10,
|
||||
|
||||
APLD = 0x0D50, /* South Korea */
|
||||
|
||||
MKK1 = 0x0140, /* Japan (UNI-1 odd)*/
|
||||
MKK2 = 0x0240, /* Japan (4.9 GHz + UNI-1 odd) */
|
||||
MKK3 = 0x0340, /* Japan (UNI-1 even) */
|
||||
MKK4 = 0x0440, /* Japan (UNI-1 even + UNI-2) */
|
||||
MKK5 = 0x0540, /* Japan (UNI-1 even + UNI-2 + mid-band) */
|
||||
MKK6 = 0x0640, /* Japan (UNI-1 odd + UNI-1 even) */
|
||||
MKK7 = 0x0740, /* Japan (UNI-1 odd + UNI-1 even + UNI-2 */
|
||||
MKK8 = 0x0840, /* Japan (UNI-1 odd + UNI-1 even + UNI-2 + mid-band) */
|
||||
MKK9 = 0x0940, /* Japan (UNI-1 even + 4.9 GHZ) */
|
||||
MKK10 = 0x0B40, /* Japan (UNI-1 even + UNI-2 + 4.9 GHZ) */
|
||||
MKK11 = 0x1140, /* Japan (UNI-1 even + UNI-2 + mid-band + 4.9 GHZ) */
|
||||
MKK12 = 0x1240, /* Japan (UNI-1 even + UNI-1 odd + UNI-2 + mid-band + 4.9 GHZ) */
|
||||
MKKA = 0x0A40, /* Japan */
|
||||
MKKC = 0x0A50,
|
||||
|
||||
NULL1 = 0x0198,
|
||||
WORLD = 0x0199,
|
||||
DEBUG_REG_DMN = 0x01ff,
|
||||
};
|
||||
|
||||
/* channelFlags */
|
||||
#define ZM_REG_FLAG_CHANNEL_CW_INT 0x0002 /* CW interference detected on channel */
|
||||
#define ZM_REG_FLAG_CHANNEL_TURBO 0x0010 /* Turbo Channel */
|
||||
#define ZM_REG_FLAG_CHANNEL_CCK 0x0020 /* CCK channel */
|
||||
#define ZM_REG_FLAG_CHANNEL_OFDM 0x0040 /* OFDM channel */
|
||||
#define ZM_REG_FLAG_CHANNEL_2GHZ 0x0080 /* 2 GHz spectrum channel. */
|
||||
#define ZM_REG_FLAG_CHANNEL_5GHZ 0x0100 /* 5 GHz spectrum channel */
|
||||
#define ZM_REG_FLAG_CHANNEL_PASSIVE 0x0200 /* Only passive scan allowed in the channel */
|
||||
#define ZM_REG_FLAG_CHANNEL_DYN 0x0400 /* dynamic CCK-OFDM channel */
|
||||
#define ZM_REG_FLAG_CHANNEL_XR 0x0800 /* XR channel */
|
||||
#define ZM_REG_FLAG_CHANNEL_CSA 0x1000 /* Channel by CSA(Channel Switch Announcement) */
|
||||
#define ZM_REG_FLAG_CHANNEL_STURBO 0x2000 /* Static turbo, no 11a-only usage */
|
||||
#define ZM_REG_FLAG_CHANNEL_HALF 0x4000 /* Half rate channel */
|
||||
#define ZM_REG_FLAG_CHANNEL_QUARTER 0x8000 /* Quarter rate channel */
|
||||
|
||||
/* channelFlags */
|
||||
#define CHANNEL_CW_INT 0x0002 /* CW interference detected on channel */
|
||||
#define CHANNEL_TURBO 0x0010 /* Turbo Channel */
|
||||
#define CHANNEL_CCK 0x0020 /* CCK channel */
|
||||
#define CHANNEL_OFDM 0x0040 /* OFDM channel */
|
||||
#define CHANNEL_2GHZ 0x0080 /* 2 GHz spectrum channel. */
|
||||
#define CHANNEL_5GHZ 0x0100 /* 5 GHz spectrum channel */
|
||||
#define CHANNEL_PASSIVE 0x0200 /* Only passive scan allowed in the channel */
|
||||
#define CHANNEL_DYN 0x0400 /* dynamic CCK-OFDM channel */
|
||||
#define CHANNEL_XR 0x0800 /* XR channel */
|
||||
#define CHANNEL_STURBO 0x2000 /* Static turbo, no 11a-only usage */
|
||||
#define CHANNEL_HALF 0x4000 /* Half rate channel */
|
||||
#define CHANNEL_QUARTER 0x8000 /* Quarter rate channel */
|
||||
#define CHANNEL_HT20 0x10000 /* HT20 channel */
|
||||
#define CHANNEL_HT40 0x20000 /* HT40 channel */
|
||||
#define CHANNEL_HT40U 0x40000 /* control channel can be upper channel */
|
||||
#define CHANNEL_HT40L 0x80000 /* control channel can be lower channel */
|
||||
|
||||
/* privFlags */
|
||||
#define ZM_REG_FLAG_CHANNEL_INTERFERENCE 0x01 /* Software use: channel interference
|
||||
used for as AR as well as RADAR
|
||||
interference detection */
|
||||
#define ZM_REG_FLAG_CHANNEL_DFS 0x02 /* DFS required on channel */
|
||||
#define ZM_REG_FLAG_CHANNEL_4MS_LIMIT 0x04 /* 4msec packet limit on this channel */
|
||||
#define ZM_REG_FLAG_CHANNEL_DFS_CLEAR 0x08 /* if channel has been checked for DFS */
|
||||
|
||||
#define CHANNEL_A (CHANNEL_5GHZ|CHANNEL_OFDM)
|
||||
#define CHANNEL_B (CHANNEL_2GHZ|CHANNEL_CCK)
|
||||
#define CHANNEL_PUREG (CHANNEL_2GHZ|CHANNEL_OFDM)
|
||||
#ifdef notdef
|
||||
#define CHANNEL_G (CHANNEL_2GHZ|CHANNEL_DYN)
|
||||
#else
|
||||
#define CHANNEL_G (CHANNEL_2GHZ|CHANNEL_OFDM)
|
||||
#endif
|
||||
#define CHANNEL_T (CHANNEL_5GHZ|CHANNEL_OFDM|CHANNEL_TURBO)
|
||||
#define CHANNEL_ST (CHANNEL_T|CHANNEL_STURBO)
|
||||
#define CHANNEL_108G (CHANNEL_2GHZ|CHANNEL_OFDM|CHANNEL_TURBO)
|
||||
#define CHANNEL_108A CHANNEL_T
|
||||
#define CHANNEL_X (CHANNEL_5GHZ|CHANNEL_OFDM|CHANNEL_XR)
|
||||
#define CHANNEL_G_HT (CHANNEL_2GHZ | CHANNEL_OFDM | CHANNEL_HT20)
|
||||
#define CHANNEL_A_HT (CHANNEL_5GHZ | CHANNEL_OFDM | CHANNEL_HT20)
|
||||
|
||||
#define CHANNEL_G_HT20 (CHANNEL_2GHZ|CHANNEL_HT20)
|
||||
#define CHANNEL_A_HT20 (CHANNEL_5GHZ|CHANNEL_HT20)
|
||||
#define CHANNEL_G_HT40 (CHANNEL_2GHZ|CHANNEL_HT20|CHANNEL_HT40)
|
||||
#define CHANNEL_A_HT40 (CHANNEL_5GHZ|CHANNEL_HT20|CHANNEL_HT40)
|
||||
#define CHANNEL_ALL \
|
||||
(CHANNEL_OFDM|CHANNEL_CCK| CHANNEL_2GHZ | CHANNEL_5GHZ | CHANNEL_TURBO | CHANNEL_HT20 | CHANNEL_HT40)
|
||||
#define CHANNEL_ALL_NOTURBO (CHANNEL_ALL &~ CHANNEL_TURBO)
|
||||
|
||||
enum {
|
||||
HAL_MODE_11A = 0x001, /* 11a channels */
|
||||
HAL_MODE_TURBO = 0x002, /* 11a turbo-only channels */
|
||||
HAL_MODE_11B = 0x004, /* 11b channels */
|
||||
HAL_MODE_PUREG = 0x008, /* 11g channels (OFDM only) */
|
||||
#ifdef notdef
|
||||
HAL_MODE_11G = 0x010, /* 11g channels (OFDM/CCK) */
|
||||
#else
|
||||
HAL_MODE_11G = 0x008, /* XXX historical */
|
||||
#endif
|
||||
HAL_MODE_108G = 0x020, /* 11a+Turbo channels */
|
||||
HAL_MODE_108A = 0x040, /* 11g+Turbo channels */
|
||||
HAL_MODE_XR = 0x100, /* XR channels */
|
||||
HAL_MODE_11A_HALF_RATE = 0x200, /* 11A half rate channels */
|
||||
HAL_MODE_11A_QUARTER_RATE = 0x400, /* 11A quarter rate channels */
|
||||
HAL_MODE_11NG = 0x4000, /* 11ng channels */
|
||||
HAL_MODE_11NA = 0x8000, /* 11na channels */
|
||||
HAL_MODE_ALL = 0xffff
|
||||
};
|
||||
|
||||
#endif /* #ifndef _HPREG_H */
|
1557
drivers/staging/otus/hal/hprw.c
Normal file
1557
drivers/staging/otus/hal/hprw.c
Normal file
File diff suppressed because it is too large
Load diff
1584
drivers/staging/otus/hal/hpusb.c
Normal file
1584
drivers/staging/otus/hal/hpusb.c
Normal file
File diff suppressed because it is too large
Load diff
437
drivers/staging/otus/hal/hpusb.h
Normal file
437
drivers/staging/otus/hal/hpusb.h
Normal file
|
@ -0,0 +1,437 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2005 ZyDAS Technology Corporation
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* Module Name : ud_defs.h */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module contains USB data structure definitions. */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* None */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#ifndef _HPUSB_H
|
||||
#define _HPUSB_H
|
||||
|
||||
#define ZM_OTUS_ENABLE_RETRY_FREQ_CHANGE
|
||||
#define ZM_BEACON_BUFFER_ADDRESS 0x117900
|
||||
|
||||
#define ZM_MAX_CMD_SIZE 64
|
||||
#define ZM_HAL_MAX_EEPROM_REQ 510
|
||||
#define ZM_HAL_MAX_EEPROM_PRQ 2
|
||||
|
||||
/* For USB STREAM mode */
|
||||
#ifdef ZM_DISABLE_AMSDU8K_SUPPORT
|
||||
#define ZM_MAX_USB_IN_TRANSFER_SIZE 4096
|
||||
#else
|
||||
#define ZM_MAX_USB_IN_TRANSFER_SIZE 8192
|
||||
#endif
|
||||
#define ZM_USB_STREAM_MODE_TAG_LEN 4
|
||||
#define ZM_USB_STREAM_MODE_TAG 0x4e00
|
||||
#define ZM_USB_MAX_EPINT_BUFFER 64
|
||||
|
||||
struct zsCmdQ
|
||||
{
|
||||
u16_t src;
|
||||
u16_t cmdLen;
|
||||
u8_t* buf;
|
||||
u32_t cmd[ZM_MAX_CMD_SIZE/4];
|
||||
};
|
||||
|
||||
struct zsCommand
|
||||
{
|
||||
u16_t delayWcmdCount;
|
||||
u32_t delayWcmdAddr[(ZM_CMD_QUEUE_SIZE-4)/4];
|
||||
u32_t delayWcmdVal[(ZM_CMD_QUEUE_SIZE-4)/4];
|
||||
};
|
||||
|
||||
struct zsHalRxInfo
|
||||
{
|
||||
u32_t currentRSSI[7]; /* RSSI combined */
|
||||
u32_t currentRxEVM[14];
|
||||
u32_t currentRxDataMT;
|
||||
u32_t currentRxDataMCS;
|
||||
u32_t currentRxDataBW;
|
||||
u32_t currentRxDataSG;
|
||||
};
|
||||
|
||||
struct zsHpPriv
|
||||
{
|
||||
u16_t hwFrequency;
|
||||
u8_t hwBw40;
|
||||
u8_t hwExtOffset;
|
||||
|
||||
u8_t disableDfsCh;
|
||||
|
||||
u32_t halCapability;
|
||||
|
||||
/* Fortunately the second loop can be disabled with a bit */
|
||||
/* called en_pd_dc_offset_thr */
|
||||
u8_t hwNotFirstInit;
|
||||
|
||||
/* command queue */
|
||||
u16_t cmdHead;
|
||||
u16_t cmdTail;
|
||||
#ifdef ZM_XP_USB_MULTCMD
|
||||
u16_t cmdSend; // Used for Mult send USB cmd
|
||||
#endif
|
||||
struct zsCmdQ cmdQ[ZM_CMD_QUEUE_SIZE];
|
||||
u16_t cmdPending;
|
||||
struct zsCommand cmd; /* buffer for delayed commands */
|
||||
u8_t ledMode[2];
|
||||
u32_t ctlBusy;
|
||||
u32_t extBusy;
|
||||
|
||||
/*
|
||||
* ANI & Radar support.
|
||||
*/
|
||||
u32_t procPhyErr; /* Process Phy errs */
|
||||
u8_t hasHwPhyCounters; /* Hardware has phy counters */
|
||||
u32_t aniPeriod; /* ani update list period */
|
||||
struct zsAniStats stats; /* various statistics */
|
||||
struct zsAniState *curani; /* cached last reference */
|
||||
struct zsAniState ani[50]; /* per-channel state */
|
||||
|
||||
/*
|
||||
* Ani tables that change between the 5416 and 5312.
|
||||
* These get set at attach time.
|
||||
* XXX don't belong here
|
||||
* XXX need better explanation
|
||||
*/
|
||||
s32_t totalSizeDesired[5];
|
||||
s32_t coarseHigh[5];
|
||||
s32_t coarseLow[5];
|
||||
s32_t firpwr[5];
|
||||
|
||||
/*
|
||||
* ANI related PHY register value.
|
||||
*/
|
||||
u32_t regPHYDesiredSZ;
|
||||
u32_t regPHYFindSig;
|
||||
u32_t regPHYAgcCtl1;
|
||||
u32_t regPHYSfcorr;
|
||||
u32_t regPHYSfcorrLow;
|
||||
u32_t regPHYTiming5;
|
||||
u32_t regPHYCckDetect;
|
||||
|
||||
u32_t eepromImage[1024];
|
||||
u32_t eepromImageIndex;
|
||||
u32_t eepromImageRdReq;
|
||||
|
||||
u8_t halReInit;
|
||||
|
||||
u8_t OpFlags;
|
||||
|
||||
u8_t tPow2xCck[4];
|
||||
u8_t tPow2x2g[4];
|
||||
u8_t tPow2x2g24HeavyClipOffset;
|
||||
u8_t tPow2x2gHt20[8];
|
||||
u8_t tPow2x2gHt40[8];
|
||||
u8_t tPow2x5g[4];
|
||||
u8_t tPow2x5gHt20[8];
|
||||
u8_t tPow2x5gHt40[8];
|
||||
|
||||
/* hwBBHeavyClip : used compatibility */
|
||||
/* 0 : dongle not support. */
|
||||
/* !0: support heavy clip. */
|
||||
u8_t hwBBHeavyClip;
|
||||
u8_t enableBBHeavyClip; /* 0=>force disable 1=>enable */
|
||||
u8_t doBBHeavyClip; /* set 1 if heavy clip need by each frequency switch */
|
||||
u32_t setValueHeavyClip; /* save setting value for heavy clip when completed routine */
|
||||
|
||||
/*
|
||||
* Rxdata RSSI, EVM, Rate etc...
|
||||
*/
|
||||
struct zsHalRxInfo halRxInfo;
|
||||
|
||||
u32_t usbSendBytes;
|
||||
u32_t usbAcSendBytes[4];
|
||||
|
||||
u16_t aggMaxDurationBE;
|
||||
u32_t aggPktNum;
|
||||
|
||||
u16_t txop[4];
|
||||
u16_t cwmin[4];
|
||||
u16_t cwmax[4];
|
||||
u8_t strongRSSI;
|
||||
u8_t rxStrongRSSI;
|
||||
|
||||
u8_t slotType; //0->20us, 1=>9us
|
||||
|
||||
#ifdef ZM_OTUS_RX_STREAM_MODE
|
||||
u16_t usbRxRemainLen;
|
||||
u16_t usbRxPktLen;
|
||||
u16_t usbRxPadLen;
|
||||
u16_t usbRxTransferLen;
|
||||
zbuf_t *remainBuf;
|
||||
#endif
|
||||
|
||||
u8_t dot11Mode;
|
||||
|
||||
u8_t ibssBcnEnabled;
|
||||
u32_t ibssBcnInterval;
|
||||
|
||||
// For re-issue the frequency change command
|
||||
u32_t latestFrequency;
|
||||
u8_t latestBw40;
|
||||
u8_t latestExtOffset;
|
||||
u8_t freqRetryCounter;
|
||||
|
||||
u8_t recordFreqRetryCounter;
|
||||
u8_t isSiteSurvey;
|
||||
u8_t coldResetNeedFreq;
|
||||
|
||||
u64_t camRollCallTable;
|
||||
u8_t currentAckRtsTpc;
|
||||
|
||||
/* #1 Save the initial value of the related RIFS register settings */
|
||||
//u32_t isInitialPhy;
|
||||
u32_t initDesiredSigSize;
|
||||
u32_t initAGC;
|
||||
u32_t initAgcControl;
|
||||
u32_t initSearchStartDelay;
|
||||
u32_t initRIFSSearchParams;
|
||||
u32_t initFastChannelChangeControl;
|
||||
|
||||
/* Dynamic SIFS for retransmission event */
|
||||
u8_t retransmissionEvent;
|
||||
u8_t latestSIFS;
|
||||
};
|
||||
|
||||
extern u32_t zfHpLoadEEPROMFromFW(zdev_t* dev);
|
||||
|
||||
|
||||
typedef u8_t A_UINT8;
|
||||
typedef s8_t A_INT8;
|
||||
typedef u16_t A_UINT16;
|
||||
typedef u32_t A_UINT32;
|
||||
#define __ATTRIB_PACK
|
||||
|
||||
#pragma pack (push, 1)
|
||||
|
||||
#define AR5416_EEP_VER 0xE
|
||||
#define AR5416_EEP_VER_MINOR_MASK 0xFFF
|
||||
#define AR5416_EEP_NO_BACK_VER 0x1
|
||||
#define AR5416_EEP_MINOR_VER_2 0x2 // Adds modal params txFrameToPaOn, txFrametoDataStart, ht40PowerInc
|
||||
#define AR5416_EEP_MINOR_VER_3 0x3 // Adds modal params bswAtten, bswMargin, swSettle and base OpFlags for HT20/40 Disable
|
||||
|
||||
// 16-bit offset location start of calibration struct
|
||||
#define AR5416_EEP_START_LOC 256
|
||||
#define AR5416_NUM_5G_CAL_PIERS 8
|
||||
#define AR5416_NUM_2G_CAL_PIERS 4
|
||||
#define AR5416_NUM_5G_20_TARGET_POWERS 8
|
||||
#define AR5416_NUM_5G_40_TARGET_POWERS 8
|
||||
#define AR5416_NUM_2G_CCK_TARGET_POWERS 3
|
||||
#define AR5416_NUM_2G_20_TARGET_POWERS 4
|
||||
#define AR5416_NUM_2G_40_TARGET_POWERS 4
|
||||
#define AR5416_NUM_CTLS 24
|
||||
#define AR5416_NUM_BAND_EDGES 8
|
||||
#define AR5416_NUM_PD_GAINS 4
|
||||
#define AR5416_PD_GAINS_IN_MASK 4
|
||||
#define AR5416_PD_GAIN_ICEPTS 5
|
||||
#define AR5416_EEPROM_MODAL_SPURS 5
|
||||
#define AR5416_MAX_RATE_POWER 63
|
||||
#define AR5416_NUM_PDADC_VALUES 128
|
||||
#define AR5416_NUM_RATES 16
|
||||
#define AR5416_BCHAN_UNUSED 0xFF
|
||||
#define AR5416_MAX_PWR_RANGE_IN_HALF_DB 64
|
||||
#define AR5416_OPFLAGS_11A 0x01
|
||||
#define AR5416_OPFLAGS_11G 0x02
|
||||
#define AR5416_OPFLAGS_5G_HT40 0x04
|
||||
#define AR5416_OPFLAGS_2G_HT40 0x08
|
||||
#define AR5416_OPFLAGS_5G_HT20 0x10
|
||||
#define AR5416_OPFLAGS_2G_HT20 0x20
|
||||
#define AR5416_EEPMISC_BIG_ENDIAN 0x01
|
||||
#define FREQ2FBIN(x,y) ((y) ? ((x) - 2300) : (((x) - 4800) / 5))
|
||||
#define AR5416_MAX_CHAINS 2
|
||||
#define AR5416_ANT_16S 25
|
||||
|
||||
#define AR5416_NUM_ANT_CHAIN_FIELDS 7
|
||||
#define AR5416_NUM_ANT_COMMON_FIELDS 4
|
||||
#define AR5416_SIZE_ANT_CHAIN_FIELD 3
|
||||
#define AR5416_SIZE_ANT_COMMON_FIELD 4
|
||||
#define AR5416_ANT_CHAIN_MASK 0x7
|
||||
#define AR5416_ANT_COMMON_MASK 0xf
|
||||
#define AR5416_CHAIN_0_IDX 0
|
||||
#define AR5416_CHAIN_1_IDX 1
|
||||
#define AR5416_CHAIN_2_IDX 2
|
||||
|
||||
|
||||
/* Capabilities Enum */
|
||||
typedef enum {
|
||||
EEPCAP_COMPRESS_DIS = 0x0001,
|
||||
EEPCAP_AES_DIS = 0x0002,
|
||||
EEPCAP_FASTFRAME_DIS = 0x0004,
|
||||
EEPCAP_BURST_DIS = 0x0008,
|
||||
EEPCAP_MAXQCU_M = 0x01F0,
|
||||
EEPCAP_MAXQCU_S = 4,
|
||||
EEPCAP_HEAVY_CLIP_EN = 0x0200,
|
||||
EEPCAP_KC_ENTRIES_M = 0xF000,
|
||||
EEPCAP_KC_ENTRIES_S = 12,
|
||||
} EEPROM_CAPABILITIES;
|
||||
|
||||
typedef enum Ar5416_Rates {
|
||||
rate6mb, rate9mb, rate12mb, rate18mb,
|
||||
rate24mb, rate36mb, rate48mb, rate54mb,
|
||||
rate1l, rate2l, rate2s, rate5_5l,
|
||||
rate5_5s, rate11l, rate11s, rateXr,
|
||||
rateHt20_0, rateHt20_1, rateHt20_2, rateHt20_3,
|
||||
rateHt20_4, rateHt20_5, rateHt20_6, rateHt20_7,
|
||||
rateHt40_0, rateHt40_1, rateHt40_2, rateHt40_3,
|
||||
rateHt40_4, rateHt40_5, rateHt40_6, rateHt40_7,
|
||||
rateDupCck, rateDupOfdm, rateExtCck, rateExtOfdm,
|
||||
Ar5416RateSize
|
||||
} AR5416_RATES;
|
||||
|
||||
typedef struct eepFlags {
|
||||
A_UINT8 opFlags;
|
||||
A_UINT8 eepMisc;
|
||||
} __ATTRIB_PACK EEP_FLAGS;
|
||||
|
||||
#define AR5416_CHECKSUM_LOCATION (AR5416_EEP_START_LOC + 1)
|
||||
typedef struct BaseEepHeader {
|
||||
A_UINT16 length;
|
||||
A_UINT16 checksum;
|
||||
A_UINT16 version;
|
||||
EEP_FLAGS opCapFlags;
|
||||
A_UINT16 regDmn[2];
|
||||
A_UINT8 macAddr[6];
|
||||
A_UINT8 rxMask;
|
||||
A_UINT8 txMask;
|
||||
A_UINT16 rfSilent;
|
||||
A_UINT16 blueToothOptions;
|
||||
A_UINT16 deviceCap;
|
||||
A_UINT32 binBuildNumber;
|
||||
A_UINT8 deviceType;
|
||||
A_UINT8 futureBase[33];
|
||||
} __ATTRIB_PACK BASE_EEP_HEADER; // 64 B
|
||||
|
||||
typedef struct spurChanStruct {
|
||||
A_UINT16 spurChan;
|
||||
A_UINT8 spurRangeLow;
|
||||
A_UINT8 spurRangeHigh;
|
||||
} __ATTRIB_PACK SPUR_CHAN;
|
||||
|
||||
typedef struct ModalEepHeader {
|
||||
A_UINT32 antCtrlChain[AR5416_MAX_CHAINS]; // 12
|
||||
A_UINT32 antCtrlCommon; // 4
|
||||
A_INT8 antennaGainCh[AR5416_MAX_CHAINS]; // 3
|
||||
A_UINT8 switchSettling; // 1
|
||||
A_UINT8 txRxAttenCh[AR5416_MAX_CHAINS]; // 3
|
||||
A_UINT8 rxTxMarginCh[AR5416_MAX_CHAINS]; // 3
|
||||
A_INT8 adcDesiredSize; // 1
|
||||
A_INT8 pgaDesiredSize; // 1
|
||||
A_UINT8 xlnaGainCh[AR5416_MAX_CHAINS]; // 3
|
||||
A_UINT8 txEndToXpaOff; // 1
|
||||
A_UINT8 txEndToRxOn; // 1
|
||||
A_UINT8 txFrameToXpaOn; // 1
|
||||
A_UINT8 thresh62; // 1
|
||||
A_INT8 noiseFloorThreshCh[AR5416_MAX_CHAINS]; // 3
|
||||
A_UINT8 xpdGain; // 1
|
||||
A_UINT8 xpd; // 1
|
||||
A_INT8 iqCalICh[AR5416_MAX_CHAINS]; // 1
|
||||
A_INT8 iqCalQCh[AR5416_MAX_CHAINS]; // 1
|
||||
A_UINT8 pdGainOverlap; // 1
|
||||
A_UINT8 ob; // 1
|
||||
A_UINT8 db; // 1
|
||||
A_UINT8 xpaBiasLvl; // 1
|
||||
A_UINT8 pwrDecreaseFor2Chain; // 1
|
||||
A_UINT8 pwrDecreaseFor3Chain; // 1 -> 48 B
|
||||
A_UINT8 txFrameToDataStart; // 1
|
||||
A_UINT8 txFrameToPaOn; // 1
|
||||
A_UINT8 ht40PowerIncForPdadc; // 1
|
||||
A_UINT8 bswAtten[AR5416_MAX_CHAINS]; // 3
|
||||
A_UINT8 bswMargin[AR5416_MAX_CHAINS]; // 3
|
||||
A_UINT8 swSettleHt40; // 1
|
||||
A_UINT8 futureModal[22]; //
|
||||
SPUR_CHAN spurChans[AR5416_EEPROM_MODAL_SPURS]; // 20 B
|
||||
} __ATTRIB_PACK MODAL_EEP_HEADER; // == 100 B
|
||||
|
||||
typedef struct calDataPerFreq {
|
||||
A_UINT8 pwrPdg[AR5416_NUM_PD_GAINS][AR5416_PD_GAIN_ICEPTS];
|
||||
A_UINT8 vpdPdg[AR5416_NUM_PD_GAINS][AR5416_PD_GAIN_ICEPTS];
|
||||
} __ATTRIB_PACK CAL_DATA_PER_FREQ;
|
||||
|
||||
typedef struct CalTargetPowerLegacy {
|
||||
A_UINT8 bChannel;
|
||||
A_UINT8 tPow2x[4];
|
||||
} __ATTRIB_PACK CAL_TARGET_POWER_LEG;
|
||||
|
||||
typedef struct CalTargetPowerHt {
|
||||
A_UINT8 bChannel;
|
||||
A_UINT8 tPow2x[8];
|
||||
} __ATTRIB_PACK CAL_TARGET_POWER_HT;
|
||||
|
||||
#if defined(ARCH_BIG_ENDIAN) || defined(BIG_ENDIAN)
|
||||
typedef struct CalCtlEdges {
|
||||
A_UINT8 bChannel;
|
||||
A_UINT8 flag :2,
|
||||
tPower :6;
|
||||
} __ATTRIB_PACK CAL_CTL_EDGES;
|
||||
#else
|
||||
typedef struct CalCtlEdges {
|
||||
A_UINT8 bChannel;
|
||||
A_UINT8 tPower :6,
|
||||
flag :2;
|
||||
} __ATTRIB_PACK CAL_CTL_EDGES;
|
||||
#endif
|
||||
|
||||
typedef struct CalCtlData {
|
||||
CAL_CTL_EDGES ctlEdges[AR5416_MAX_CHAINS][AR5416_NUM_BAND_EDGES];
|
||||
} __ATTRIB_PACK CAL_CTL_DATA;
|
||||
|
||||
typedef struct ar5416Eeprom {
|
||||
BASE_EEP_HEADER baseEepHeader; // 64 B
|
||||
A_UINT8 custData[64]; // 64 B
|
||||
MODAL_EEP_HEADER modalHeader[2]; // 200 B
|
||||
A_UINT8 calFreqPier5G[AR5416_NUM_5G_CAL_PIERS];
|
||||
A_UINT8 calFreqPier2G[AR5416_NUM_2G_CAL_PIERS];
|
||||
CAL_DATA_PER_FREQ calPierData5G[AR5416_MAX_CHAINS][AR5416_NUM_5G_CAL_PIERS];
|
||||
CAL_DATA_PER_FREQ calPierData2G[AR5416_MAX_CHAINS][AR5416_NUM_2G_CAL_PIERS];
|
||||
CAL_TARGET_POWER_LEG calTargetPower5G[AR5416_NUM_5G_20_TARGET_POWERS];
|
||||
CAL_TARGET_POWER_HT calTargetPower5GHT20[AR5416_NUM_5G_20_TARGET_POWERS];
|
||||
CAL_TARGET_POWER_HT calTargetPower5GHT40[AR5416_NUM_5G_40_TARGET_POWERS];
|
||||
CAL_TARGET_POWER_LEG calTargetPowerCck[AR5416_NUM_2G_CCK_TARGET_POWERS];
|
||||
CAL_TARGET_POWER_LEG calTargetPower2G[AR5416_NUM_2G_20_TARGET_POWERS];
|
||||
CAL_TARGET_POWER_HT calTargetPower2GHT20[AR5416_NUM_2G_20_TARGET_POWERS];
|
||||
CAL_TARGET_POWER_HT calTargetPower2GHT40[AR5416_NUM_2G_40_TARGET_POWERS];
|
||||
A_UINT8 ctlIndex[AR5416_NUM_CTLS];
|
||||
CAL_CTL_DATA ctlData[AR5416_NUM_CTLS];
|
||||
A_UINT8 padding;
|
||||
} __ATTRIB_PACK AR5416_EEPROM;
|
||||
|
||||
#pragma pack (pop)
|
||||
|
||||
typedef enum ConformanceTestLimits {
|
||||
FCC = 0x10,
|
||||
MKK = 0x40,
|
||||
ETSI = 0x30,
|
||||
SD_NO_CTL = 0xE0,
|
||||
NO_CTL = 0xFF,
|
||||
CTL_MODE_M = 0xF,
|
||||
CTL_11A = 0,
|
||||
CTL_11B = 1,
|
||||
CTL_11G = 2,
|
||||
CTL_TURBO = 3,
|
||||
CTL_108G = 4,
|
||||
CTL_2GHT20 = 5,
|
||||
CTL_5GHT20 = 6,
|
||||
CTL_2GHT40 = 7,
|
||||
CTL_5GHT40 = 8,
|
||||
} ATH_CTLS;
|
||||
|
||||
#endif /* #ifndef _HPUSB_H */
|
414
drivers/staging/otus/hal/otus.ini
Normal file
414
drivers/staging/otus/hal/otus.ini
Normal file
|
@ -0,0 +1,414 @@
|
|||
/* 8602 : update mismatch register between NDIS and ART */
|
||||
static const u32_t ar5416Modes[][6] = {
|
||||
/* Register A-20 A-20/40 G-20/40 G-20 G-Turbo */
|
||||
{0x9800, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0},
|
||||
{0x9804, 0x00000300, 0x000003c4, 0x000003c4, 0x00000300, 0},
|
||||
{0x9808, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x980c, 0xad848e19, 0xad848e19, 0xad848e19, 0xad848e19, 0},
|
||||
{0x9810, 0x7d14e000, 0x7d14e000, 0x7d14e000, 0x7d14e000, 0},
|
||||
{0x9814, 0x9c0a9f6b, 0x9c0a9f6b, 0x9c0a9f6b, 0x9c0a9f6b, 0},
|
||||
{0x9818, 0x00000090, 0x00000090, 0x00000090, 0x00000090, 0},
|
||||
{0x981c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9820, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0},
|
||||
{0x9824, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0},
|
||||
{0x9828, 0x0a020001, 0x0a020001, 0x0a020001, 0x0a020001, 0},
|
||||
{0x982c, 0x0000a000, 0x0000a000, 0x0000a000, 0x0000a000, 0},
|
||||
{0x9830, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9834, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0},
|
||||
{0x9838, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0},
|
||||
{0x983c, 0x00200400, 0x00200400, 0x00200400, 0x00200400, 0},
|
||||
{0x9840, 0x206a002e, 0x206a002e, 0x206a002e, 0x206a002e, 0},
|
||||
{0x9844, 0x1372161e, 0x13721c1e, 0x13721c24, 0x137216a4, 0},
|
||||
{0x9848, 0x001a6a65, 0x001a6a65, 0x00197a68, 0x00197a68, 0},
|
||||
{0x984c, 0x1284233c, 0x1284233c, 0x1284233c, 0x1284233c, 0},
|
||||
{0x9850, 0x6c48b4e4, 0x6c48b4e4, 0x6c48b0e4, 0x6c48b0e4, 0},
|
||||
{0x9854, 0x00000859, 0x00000859, 0x00000859, 0x00000859, 0},
|
||||
{0x9858, 0x7ec80d2e, 0x7ec80d2e, 0x7ec80d2e, 0x7ec80d2e, 0},
|
||||
{0x985c, 0x31395c5e, 0x31395c5e, 0x31395c5e, 0x31395c5e, 0},
|
||||
{0x9860, 0x0004dd10, 0x0004dd10, 0x0004dd20, 0x0004dd20, 0},
|
||||
{0x9868, 0x409a4190, 0x409a4190, 0x409a4190, 0x409a4190, 0},
|
||||
{0x986c, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0},
|
||||
{0x9900, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9904, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9908, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x990c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9914, 0x000007d0, 0x000007d0, 0x00000898, 0x00000898, 0},
|
||||
{0x9918, 0x00000118, 0x00000230, 0x00000268, 0x00000134, 0},
|
||||
{0x991c, 0x10000fff, 0x10000fff, 0x10000fff, 0x10000fff, 0},
|
||||
{0x9920, 0x0510081c, 0x0510081c, 0x0510001c, 0x0510001c, 0},
|
||||
{0x9924, 0xd0058a15, 0xd0058a15, 0xd0058a15, 0xd0058a15, 0},
|
||||
{0x9928, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0},
|
||||
{0x992c, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0},
|
||||
{0x9934, 0x3f3f3f3f, 0x3f3f3f3f, 0x3f3f3f3f, 0x3f3f3f3f, 0},
|
||||
{0x9938, 0x3f3f3f3f, 0x3f3f3f3f, 0x3f3f3f3f, 0x3f3f3f3f, 0},
|
||||
{0x993c, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0},
|
||||
{0x9944, 0xdfb81020, 0xdfb81020, 0xdfb81020, 0xdfb81020, 0},
|
||||
{0x9948, 0x9280b212, 0x9280b212, 0x9280b212, 0x9280b212, 0},
|
||||
{0x994c, 0x00020028, 0x00020028, 0x00020028, 0x00020028, 0},
|
||||
{0x9954, 0x5d50e188, 0x5d50e188, 0x5d50e188, 0x5d50e188, 0},
|
||||
{0x9958, 0x00081fff, 0x00081fff, 0x00081fff, 0x00081fff, 0},
|
||||
{0x9960, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40, 0},
|
||||
{0x9964, 0x00001120, 0x00001120, 0x00001120, 0x00001120, 0},
|
||||
{0x9970, 0x190fb515, 0x190fb515, 0x190fb515, 0x190fb515, 0},
|
||||
{0x9974, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9978, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0},
|
||||
{0x997c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9980, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9984, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9988, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x998c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9990, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9994, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9998, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x999c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x99a0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x99a4, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0},
|
||||
{0x99a8, 0x001fff00, 0x001fff00, 0x001fff00, 0x001fff00, 0},
|
||||
{0x99ac, 0x006f00c4, 0x006f00c4, 0x006f00c4, 0x006f00c4, 0},
|
||||
{0x99b0, 0x03051000, 0x03051000, 0x03051000, 0x03051000, 0},
|
||||
{0x99b4, 0x00000820, 0x00000820, 0x00000820, 0x00000820, 0},
|
||||
{0x99c0, 0x038919be, 0x038919be, 0x038919be, 0x038919be, 0},
|
||||
{0x99c4, 0x06336f77, 0x06336f77, 0x06336f77, 0x06336f77, 0},
|
||||
{0x99c8, 0x60f6532c, 0x60f6532c, 0x60f6532c, 0x60f6532c, 0},
|
||||
{0x99cc, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0x08f186c8, 0},
|
||||
{0x99d0, 0x00046384, 0x00046384, 0x00046384, 0x00046384, 0},
|
||||
{0x99d4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x99d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x99dc, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x99e0, 0x00000200, 0x00000200, 0x00000200, 0x00000200, 0},
|
||||
{0x99e4, 0x64646464, 0x64646464, 0x64646464, 0x64646464, 0},
|
||||
{0x99e8, 0x3c787878, 0x3c787878, 0x3c787878, 0x3c787878, 0},
|
||||
{0x99ec, 0x000000aa, 0x000000aa, 0x000000aa, 0x000000aa, 0},
|
||||
{0x99f0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x99fc, 0x00001042, 0x00001042, 0x00001042, 0x00001042, 0},
|
||||
{0x9a00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9a04, 0x00000040, 0x00000040, 0x00000040, 0x00000040, 0},
|
||||
{0x9a08, 0x00000080, 0x00000080, 0x00000080, 0x00000080, 0},
|
||||
{0x9a0c, 0x000001a1, 0x000001a1, 0x00000141, 0x00000141, 0},
|
||||
{0x9a10, 0x000001e1, 0x000001e1, 0x00000181, 0x00000181, 0},
|
||||
{0x9a14, 0x00000021, 0x00000021, 0x000001c1, 0x000001c1, 0},
|
||||
{0x9a18, 0x00000061, 0x00000061, 0x00000001, 0x00000001, 0},
|
||||
{0x9a1c, 0x00000168, 0x00000168, 0x00000041, 0x00000041, 0},
|
||||
{0x9a20, 0x000001a8, 0x000001a8, 0x000001a8, 0x000001a8, 0},
|
||||
{0x9a24, 0x000001e8, 0x000001e8, 0x000001e8, 0x000001e8, 0},
|
||||
{0x9a28, 0x00000028, 0x00000028, 0x00000028, 0x00000028, 0},
|
||||
{0x9a2c, 0x00000068, 0x00000068, 0x00000068, 0x00000068, 0},
|
||||
{0x9a30, 0x00000189, 0x00000189, 0x000000a8, 0x000000a8, 0},
|
||||
{0x9a34, 0x000001c9, 0x000001c9, 0x00000169, 0x00000169, 0},
|
||||
{0x9a38, 0x00000009, 0x00000009, 0x000001a9, 0x000001a9, 0},
|
||||
{0x9a3c, 0x00000049, 0x00000049, 0x000001e9, 0x000001e9, 0},
|
||||
{0x9a40, 0x00000089, 0x00000089, 0x00000029, 0x00000029, 0},
|
||||
{0x9a44, 0x00000170, 0x00000170, 0x00000069, 0x00000069, 0},
|
||||
{0x9a48, 0x000001b0, 0x000001b0, 0x00000190, 0x00000190, 0},
|
||||
{0x9a4c, 0x000001f0, 0x000001f0, 0x000001d0, 0x000001d0, 0},
|
||||
{0x9a50, 0x00000030, 0x00000030, 0x00000010, 0x00000010, 0},
|
||||
{0x9a54, 0x00000070, 0x00000070, 0x00000050, 0x00000050, 0},
|
||||
{0x9a58, 0x00000191, 0x00000191, 0x00000090, 0x00000090, 0},
|
||||
{0x9a5c, 0x000001d1, 0x000001d1, 0x00000151, 0x00000151, 0},
|
||||
{0x9a60, 0x00000011, 0x00000011, 0x00000191, 0x00000191, 0},
|
||||
{0x9a64, 0x00000051, 0x00000051, 0x000001d1, 0x000001d1, 0},
|
||||
{0x9a68, 0x00000091, 0x00000091, 0x00000011, 0x00000011, 0},
|
||||
{0x9a6c, 0x000001b8, 0x000001b8, 0x00000051, 0x00000051, 0},
|
||||
{0x9a70, 0x000001f8, 0x000001f8, 0x00000198, 0x00000198, 0},
|
||||
{0x9a74, 0x00000038, 0x00000038, 0x000001d8, 0x000001d8, 0},
|
||||
{0x9a78, 0x00000078, 0x00000078, 0x00000018, 0x00000018, 0},
|
||||
{0x9a7c, 0x00000199, 0x00000199, 0x00000058, 0x00000058, 0},
|
||||
{0x9a80, 0x000001d9, 0x000001d9, 0x00000098, 0x00000098, 0},
|
||||
{0x9a84, 0x00000019, 0x00000019, 0x00000159, 0x00000159, 0},
|
||||
{0x9a88, 0x00000059, 0x00000059, 0x00000199, 0x00000199, 0},
|
||||
{0x9a8c, 0x00000099, 0x00000099, 0x000001d9, 0x000001d9, 0},
|
||||
{0x9a90, 0x000000d9, 0x000000d9, 0x00000019, 0x00000019, 0},
|
||||
{0x9a94, 0x000000f9, 0x000000f9, 0x00000059, 0x00000059, 0},
|
||||
{0x9a98, 0x000000f9, 0x000000f9, 0x00000099, 0x00000099, 0},
|
||||
{0x9a9c, 0x000000f9, 0x000000f9, 0x000000d9, 0x000000d9, 0},
|
||||
{0x9aa0, 0x000000f9, 0x000000f9, 0x000000f9, 0x000000f9, 0},
|
||||
{0x9aa4, 0x000000f9, 0x000000f9, 0x000000f9, 0x000000f9, 0},
|
||||
{0x9aa8, 0x000000f9, 0x000000f9, 0x000000f9, 0x000000f9, 0},
|
||||
{0x9aac, 0x000000f9, 0x000000f9, 0x000000f9, 0x000000f9, 0},
|
||||
{0x9ab0, 0x000000f9, 0x000000f9, 0x000000f9, 0x000000f9, 0},
|
||||
{0x9ab4, 0x000000f9, 0x000000f9, 0x000000f9, 0x000000f9, 0},
|
||||
{0x9ab8, 0x000000f9, 0x000000f9, 0x000000f9, 0x000000f9, 0},
|
||||
{0x9abc, 0x000000f9, 0x000000f9, 0x000000f9, 0x000000f9, 0},
|
||||
{0x9ac0, 0x000000f9, 0x000000f9, 0x000000f9, 0x000000f9, 0},
|
||||
{0x9ac4, 0x000000f9, 0x000000f9, 0x000000f9, 0x000000f9, 0},
|
||||
{0x9ac8, 0x000000f9, 0x000000f9, 0x000000f9, 0x000000f9, 0},
|
||||
{0x9acc, 0x000000f9, 0x000000f9, 0x000000f9, 0x000000f9, 0},
|
||||
{0x9ad0, 0x000000f9, 0x000000f9, 0x000000f9, 0x000000f9, 0},
|
||||
{0x9ad4, 0x000000f9, 0x000000f9, 0x000000f9, 0x000000f9, 0},
|
||||
{0x9ad8, 0x000000f9, 0x000000f9, 0x000000f9, 0x000000f9, 0},
|
||||
{0x9adc, 0x000000f9, 0x000000f9, 0x000000f9, 0x000000f9, 0},
|
||||
{0x9ae0, 0x000000f9, 0x000000f9, 0x000000f9, 0x000000f9, 0},
|
||||
{0x9ae4, 0x000000f9, 0x000000f9, 0x000000f9, 0x000000f9, 0},
|
||||
{0x9ae8, 0x000000f9, 0x000000f9, 0x000000f9, 0x000000f9, 0},
|
||||
{0x9aec, 0x000000f9, 0x000000f9, 0x000000f9, 0x000000f9, 0},
|
||||
{0x9af0, 0x000000f9, 0x000000f9, 0x000000f9, 0x000000f9, 0},
|
||||
{0x9af4, 0x000000f9, 0x000000f9, 0x000000f9, 0x000000f9, 0},
|
||||
{0x9af8, 0x000000f9, 0x000000f9, 0x000000f9, 0x000000f9, 0},
|
||||
{0x9afc, 0x000000f9, 0x000000f9, 0x000000f9, 0x000000f9, 0},
|
||||
{0x9b00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9b04, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0},
|
||||
{0x9b08, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0},
|
||||
{0x9b0c, 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0},
|
||||
{0x9b10, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0},
|
||||
{0x9b14, 0x00000005, 0x00000005, 0x00000005, 0x00000005, 0},
|
||||
{0x9b18, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0},
|
||||
{0x9b1c, 0x00000009, 0x00000009, 0x00000009, 0x00000009, 0},
|
||||
{0x9b20, 0x0000000a, 0x0000000a, 0x0000000a, 0x0000000a, 0},
|
||||
{0x9b24, 0x0000000b, 0x0000000b, 0x0000000b, 0x0000000b, 0},
|
||||
{0x9b28, 0x0000000c, 0x0000000c, 0x0000000c, 0x0000000c, 0},
|
||||
{0x9b2c, 0x0000000d, 0x0000000d, 0x0000000d, 0x0000000d, 0},
|
||||
{0x9b30, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0},
|
||||
{0x9b34, 0x00000011, 0x00000011, 0x00000011, 0x00000011, 0},
|
||||
{0x9b38, 0x00000012, 0x00000012, 0x00000012, 0x00000012, 0},
|
||||
{0x9b3c, 0x00000013, 0x00000013, 0x00000013, 0x00000013, 0},
|
||||
{0x9b40, 0x00000014, 0x00000014, 0x00000014, 0x00000014, 0},
|
||||
{0x9b44, 0x00000015, 0x00000015, 0x00000015, 0x00000015, 0},
|
||||
{0x9b48, 0x00000018, 0x00000018, 0x00000018, 0x00000018, 0},
|
||||
{0x9b4c, 0x00000019, 0x00000019, 0x00000019, 0x00000019, 0},
|
||||
{0x9b50, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a, 0},
|
||||
{0x9b54, 0x0000001b, 0x0000001b, 0x0000001b, 0x0000001b, 0},
|
||||
{0x9b58, 0x0000001c, 0x0000001c, 0x0000001c, 0x0000001c, 0},
|
||||
{0x9b5c, 0x0000001d, 0x0000001d, 0x0000001d, 0x0000001d, 0},
|
||||
{0x9b60, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0},
|
||||
{0x9b64, 0x00000021, 0x00000021, 0x00000021, 0x00000021, 0},
|
||||
{0x9b68, 0x00000022, 0x00000022, 0x00000022, 0x00000022, 0},
|
||||
{0x9b6c, 0x00000023, 0x00000023, 0x00000023, 0x00000023, 0},
|
||||
{0x9b70, 0x00000024, 0x00000024, 0x00000024, 0x00000024, 0},
|
||||
{0x9b74, 0x00000025, 0x00000025, 0x00000025, 0x00000025, 0},
|
||||
{0x9b78, 0x00000028, 0x00000028, 0x00000028, 0x00000028, 0},
|
||||
{0x9b7c, 0x00000029, 0x00000029, 0x00000029, 0x00000029, 0},
|
||||
{0x9b80, 0x0000002a, 0x0000002a, 0x0000002a, 0x0000002a, 0},
|
||||
{0x9b84, 0x0000002b, 0x0000002b, 0x0000002b, 0x0000002b, 0},
|
||||
{0x9b88, 0x0000002c, 0x0000002c, 0x0000002c, 0x0000002c, 0},
|
||||
{0x9b8c, 0x0000002d, 0x0000002d, 0x0000002d, 0x0000002d, 0},
|
||||
{0x9b90, 0x00000030, 0x00000030, 0x00000030, 0x00000030, 0},
|
||||
{0x9b94, 0x00000031, 0x00000031, 0x00000031, 0x00000031, 0},
|
||||
{0x9b98, 0x00000032, 0x00000032, 0x00000032, 0x00000032, 0},
|
||||
{0x9b9c, 0x00000033, 0x00000033, 0x00000033, 0x00000033, 0},
|
||||
{0x9ba0, 0x00000034, 0x00000034, 0x00000034, 0x00000034, 0},
|
||||
{0x9ba4, 0x00000035, 0x00000035, 0x00000035, 0x00000035, 0},
|
||||
{0x9ba8, 0x00000035, 0x00000035, 0x00000035, 0x00000035, 0},
|
||||
{0x9bac, 0x00000035, 0x00000035, 0x00000035, 0x00000035, 0},
|
||||
{0x9bb0, 0x00000035, 0x00000035, 0x00000035, 0x00000035, 0},
|
||||
{0x9bb4, 0x00000035, 0x00000035, 0x00000035, 0x00000035, 0},
|
||||
{0x9bb8, 0x00000035, 0x00000035, 0x00000035, 0x00000035, 0},
|
||||
{0x9bbc, 0x00000035, 0x00000035, 0x00000035, 0x00000035, 0},
|
||||
{0x9bc0, 0x00000035, 0x00000035, 0x00000035, 0x00000035, 0},
|
||||
{0x9bc4, 0x00000035, 0x00000035, 0x00000035, 0x00000035, 0},
|
||||
{0x9bc8, 0x00000035, 0x00000035, 0x00000035, 0x00000035, 0},
|
||||
{0x9bcc, 0x00000035, 0x00000035, 0x00000035, 0x00000035, 0},
|
||||
{0x9bd0, 0x00000035, 0x00000035, 0x00000035, 0x00000035, 0},
|
||||
{0x9bd4, 0x00000035, 0x00000035, 0x00000035, 0x00000035, 0},
|
||||
{0x9bd8, 0x00000035, 0x00000035, 0x00000035, 0x00000035, 0},
|
||||
{0x9bdc, 0x00000035, 0x00000035, 0x00000035, 0x00000035, 0},
|
||||
{0x9be0, 0x00000035, 0x00000035, 0x00000035, 0x00000035, 0},
|
||||
{0x9be4, 0x00000035, 0x00000035, 0x00000035, 0x00000035, 0},
|
||||
{0x9be8, 0x00000035, 0x00000035, 0x00000035, 0x00000035, 0},
|
||||
{0x9bec, 0x00000035, 0x00000035, 0x00000035, 0x00000035, 0},
|
||||
{0x9bf0, 0x00000035, 0x00000035, 0x00000035, 0x00000035, 0},
|
||||
{0x9bf4, 0x00000035, 0x00000035, 0x00000035, 0x00000035, 0},
|
||||
{0x9bf8, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0},
|
||||
{0x9bfc, 0x0000001a, 0x0000001a, 0x0000001a, 0x0000001a, 0},
|
||||
{0x9c00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9c0c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9c10, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9c14, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9c18, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9c1c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9c20, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9c24, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9c28, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9c2c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9c30, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9c34, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9c38, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9c3c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9cf0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9cf4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9cf8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0x9cfc, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0xa200, 0x00000008, 0x00000008, 0x0000000e, 0x0000000e, 0},
|
||||
{0xa204, 0x00000440, 0x00000440, 0x00000440, 0x00000440, 0},
|
||||
{0xa208, 0xd6be4788, 0xd6be4788, 0xd03e4788, 0xd03e4788, 0},
|
||||
{0xa20c, 0x012e8160, 0x012e8160, 0x012a8160, 0x012a8160, 0},
|
||||
{0xa210, 0x40806333, 0x40806333, 0x40806333, 0x40806333, 0},
|
||||
{0xa214, 0x00106c10, 0x00106c10, 0x00106c10, 0x00106c10, 0},
|
||||
{0xa218, 0x009c4060, 0x009c4060, 0x009c4060, 0x009c4060, 0},
|
||||
{0xa21c, 0x1883800a, 0x1883800a, 0x1883800a, 0x1883800a, 0},
|
||||
{0xa220, 0x018830c6, 0x018830c6, 0x018830c6, 0x018830c6, 0},
|
||||
{0xa224, 0x00000400, 0x00000400, 0x00000400, 0x00000400, 0},
|
||||
{0xa228, 0x000009b5, 0x000009b5, 0x000009b5, 0x000009b5, 0},
|
||||
{0xa22c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0xa230, 0x00000108, 0x00000210, 0x00000210, 0x00000108, 0},
|
||||
{0xa234, 0x3f3f3f3f, 0x3f3f3f3f, 0x3f3f3f3f, 0x3f3f3f3f, 0},
|
||||
{0xa238, 0x3f3f3f3f, 0x3f3f3f3f, 0x3f3f3f3f, 0x3f3f3f3f, 0},
|
||||
{0xa23c, 0x13c889af, 0x13c889af, 0x13c889af, 0x13c889af, 0},
|
||||
{0xa240, 0x38490a20, 0x38490a20, 0x38490a20, 0x38490a20, 0},
|
||||
{0xa244, 0x00007bb6, 0x00007bb6, 0x00007bb6, 0x00007bb6, 0},
|
||||
{0xa248, 0x0fff3ffc, 0x0fff3ffc, 0x0fff3ffc, 0x0fff3ffc, 0},
|
||||
{0xa24c, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0},
|
||||
{0xa250, 0x0000a000, 0x0000a000, 0x0000a000, 0x0000a000, 0},
|
||||
{0xa254, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0xa258, 0x0cc75380, 0x0cc75380, 0x0cc75380, 0x0cc75380, 0},
|
||||
{0xa25c, 0x0f0f0f01, 0x0f0f0f01, 0x0f0f0f01, 0x0f0f0f01, 0},
|
||||
{0xa260, 0xdfa91f01, 0xdfa91f01, 0xdfa91f01, 0xdfa91f01, 0},
|
||||
{0xa264, 0x00418a11, 0x00418a11, 0x00418a11, 0x00418a11, 0},
|
||||
{0xa268, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0xa26c, 0x09249126, 0x09249126, 0x09249126, 0x09249126, 0},
|
||||
{0xa274, 0x0a1a9caa, 0x0a1a9caa, 0x0a1a7caa, 0x0a1a7caa, 0},
|
||||
{0xa278, 0x1ce739ce, 0x1ce739ce, 0x1ce739ce, 0x1ce739ce, 0},
|
||||
{0xa27c, 0x051701ce, 0x051701ce, 0x051701ce, 0x051701ce, 0},
|
||||
{0xa300, 0x18010000, 0x18010000, 0x18010000, 0x18010000, 0},
|
||||
{0xa304, 0x30032602, 0x30032602, 0x2e032402, 0x2e032402, 0},
|
||||
{0xa308, 0x48073e06, 0x48073e06, 0x4a0a3c06, 0x4a0a3c06, 0},
|
||||
{0xa30c, 0x560b4c0a, 0x560b4c0a, 0x621a540b, 0x621a540b, 0},
|
||||
{0xa310, 0x641a600f, 0x641a600f, 0x764f6c1b, 0x764f6c1b, 0},
|
||||
{0xa314, 0x7a4f6e1b, 0x7a4f6e1b, 0x845b7a5a, 0x845b7a5a, 0},
|
||||
{0xa318, 0x8c5b7e5a, 0x8c5b7e5a, 0x950f8ccf, 0x950f8ccf, 0},
|
||||
{0xa31c, 0x9d0f96cf, 0x9d0f96cf, 0xa5cf9b4f, 0xa5cf9b4f, 0},
|
||||
{0xa320, 0xb51fa69f, 0xb51fa69f, 0xbddfaf1f, 0xbddfaf1f, 0},
|
||||
{0xa324, 0xcb3fbd07, 0xcb3fbcbf, 0xd1ffc93f, 0xd1ffc93f, 0},
|
||||
{0xa328, 0x0000d7bf, 0x0000d7bf, 0x00000000, 0x00000000, 0},
|
||||
{0xa32c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0xa330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0xa334, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0xa338, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0xa33c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0xa340, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0xa344, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0xa348, 0x3fffffff, 0x3fffffff, 0x3fffffff, 0x3fffffff, 0},
|
||||
{0xa34c, 0x3fffffff, 0x3fffffff, 0x3fffffff, 0x3fffffff, 0},
|
||||
{0xa350, 0x3fffffff, 0x3fffffff, 0x3fffffff, 0x3fffffff, 0},
|
||||
{0xa354, 0x0003ffff, 0x0003ffff, 0x0003ffff, 0x0003ffff, 0},
|
||||
{0xa358, 0x79a8aa1f, 0x79a8aa1f, 0x79a8aa1f, 0x79a8aa1f, 0},
|
||||
{0xa388, 0x08000000, 0x08000000, 0x08000000, 0x08000000, 0},
|
||||
{0xa38c, 0x3f3f3f3f, 0x3f3f3f3f, 0x3f3f3f3f, 0x3f3f3f3f, 0},
|
||||
{0xa390, 0x3f3f3f3f, 0x3f3f3f3f, 0x3f3f3f3f, 0x3f3f3f3f, 0},
|
||||
{0xa394, 0x1ce739ce, 0x1ce739ce, 0x1ce739ce, 0x1ce739ce, 0},
|
||||
{0xa398, 0x000001ce, 0x000001ce, 0x000001ce, 0x000001ce, 0},
|
||||
{0xa39c, 0x00000007, 0x00000007, 0x00000007, 0x00000007, 0},
|
||||
{0xa3a0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0xa3a4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0xa3a8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0xa3ac, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0xa3b0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0xa3b4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0xa3b8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0xa3bc, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0xa3c0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0xa3c4, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0xa3c8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0xa3cc, 0x3f3f3f3f, 0x3f3f3f3f, 0x3f3f3f3f, 0x3f3f3f3f, 0},
|
||||
{0xa3d0, 0x3f3f3f3f, 0x3f3f3f3f, 0x3f3f3f3f, 0x3f3f3f3f, 0},
|
||||
{0xa3d4, 0x3f3f3f3f, 0x3f3f3f3f, 0x3f3f3f3f, 0x3f3f3f3f, 0},
|
||||
{0xa3d8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0},
|
||||
{0xa3dc, 0x1ce739ce, 0x1ce739ce, 0x1ce739ce, 0x1ce739ce, 0},
|
||||
{0xa3e0, 0x000000c0, 0x000000c0, 0x000000c0, 0x000000c0, 0},
|
||||
{0xa848, 0x00180a65, 0x00180a65, 0x00180a68, 0x00180a68, 0},
|
||||
{0xa920, 0x0510001c, 0x0510001c, 0x0510001c, 0x0510001c, 0},
|
||||
{0xa960, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40, 0},
|
||||
{0xb20c, 0x012e8160, 0x012e8160, 0x012a8160, 0x012a8160, 0},
|
||||
{0xb26c, 0x09249126, 0x09249126, 0x09249126, 0x09249126, 0},
|
||||
{0xb848, 0x00180a65, 0x00180a65, 0x00180a68, 0x00180a68, 0},
|
||||
{0xb920, 0x0510001c, 0x0510001c, 0x0510001c, 0x0510001c, 0},
|
||||
{0xb960, 0x00009b40, 0x00009b40, 0x00009b40, 0x00009b40, 0},
|
||||
{0xc20c, 0x012e8160, 0x012e8160, 0x012a8160, 0x012a8160, 0},
|
||||
{0xc26c, 0x09249126, 0x09249126, 0x09249126, 0x09249126, 0},
|
||||
//{0xc864, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0},
|
||||
{0xc864, 0x0001c600, 0x0001c600, 0x0001c600, 0x0001c600, 0},
|
||||
{0xc95c, 0x004b6a8e, 0x004b6a8e, 0x004b6a8e, 0x004b6a8e, 0},
|
||||
{0xc968, 0x000003ce, 0x000003ce, 0x000003ce, 0x000003ce, 0},
|
||||
{0xc9bc, 0x00181400, 0x00181400, 0x00181400, 0x00181400, 0},
|
||||
{0xd270, 0x00820820, 0x00820820, 0x00820820, 0x00820820, 0},
|
||||
{0xd35c, 0x066c420f, 0x066c420f, 0x066c420f, 0x066c420f, 0},
|
||||
{0xd360, 0x0f282207, 0x0f282207, 0x0f282207, 0x0f282207, 0},
|
||||
{0xd364, 0x17601685, 0x17601685, 0x17601685, 0x17601685, 0},
|
||||
{0xd368, 0x1f801104, 0x1f801104, 0x1f801104, 0x1f801104, 0},
|
||||
{0xd36c, 0x37a00c03, 0x37a00c03, 0x37a00c03, 0x37a00c03, 0},
|
||||
{0xd370, 0x3fc40883, 0x3fc40883, 0x3fc40883, 0x3fc40883, 0},
|
||||
{0xd374, 0x57c00803, 0x57c00803, 0x57c00803, 0x57c00803, 0},
|
||||
{0xd378, 0x5fd80682, 0x5fd80682, 0x5fd80682, 0x5fd80682, 0},
|
||||
{0xd37c, 0x7fe00482, 0x7fe00482, 0x7fe00482, 0x7fe00482, 0},
|
||||
{0xd380, 0x7f3c7bba, 0x7f3c7bba, 0x7f3c7bba, 0x7f3c7bba, 0},
|
||||
{0xd384, 0xf3307ff0, 0xf3307ff0, 0xf3307ff0, 0xf3307ff0, 0}
|
||||
};
|
||||
|
||||
|
||||
static const u32_t otusBank[][3] = {
|
||||
//# bank 0
|
||||
{0x98b0, 0x1e5795e5, 0x1e5795e5},
|
||||
{0x98e0, 0x02008020, 0x02008020},
|
||||
//# bank 1
|
||||
{0x98b0, 0x02108421, 0x02108421},
|
||||
{0x98ec, 0x00000008, 0x00000008},
|
||||
//# bank 2
|
||||
{0x98b0, 0x0e73ff17, 0x0e73ff17},
|
||||
{0x98e0, 0x00000420, 0x00000420},
|
||||
//# bank 3
|
||||
{0x98f0, 0x01400018, 0x01c00018},
|
||||
//# bank 4
|
||||
{0x98b0, 0x000001a1, 0x000001a1},
|
||||
{0x98e8, 0x00000001, 0x00000001},
|
||||
//# bank 5
|
||||
{0x98b0, 0x00000013, 0x00000013},
|
||||
{0x98e4, 0x00000002, 0x00000002},
|
||||
//# bank 6
|
||||
{0x98b0, 0x00000000, 0x00000000},
|
||||
{0x98b0, 0x00000000, 0x00000000},
|
||||
{0x98b0, 0x00000000, 0x00000000},
|
||||
{0x98b0, 0x00000000, 0x00000000},
|
||||
{0x98b0, 0x00000000, 0x00000000},
|
||||
{0x98b0, 0x00004000, 0x00004000},
|
||||
{0x98b0, 0x00006c00, 0x00006c00},
|
||||
{0x98b0, 0x00002c00, 0x00002c00},
|
||||
{0x98b0, 0x00004800, 0x00004800},
|
||||
{0x98b0, 0x00004000, 0x00004000},
|
||||
{0x98b0, 0x00006000, 0x00006000},
|
||||
{0x98b0, 0x00001000, 0x00001000},
|
||||
{0x98b0, 0x00004000, 0x00004000},
|
||||
{0x98b0, 0x00007c00, 0x00007c00},
|
||||
{0x98b0, 0x00007c00, 0x00007c00},
|
||||
{0x98b0, 0x00007c00, 0x00007c00},
|
||||
{0x98b0, 0x00007c00, 0x00007c00},
|
||||
{0x98b0, 0x00007c00, 0x00007c00},
|
||||
{0x98b0, 0x00087c00, 0x00087c00},
|
||||
{0x98b0, 0x00007c00, 0x00007c00},
|
||||
{0x98b0, 0x00005400, 0x00005400},
|
||||
{0x98b0, 0x00000c00, 0x00000c00},
|
||||
{0x98b0, 0x00001800, 0x00001800},
|
||||
{0x98b0, 0x00007c00, 0x00007c00},
|
||||
{0x98b0, 0x00006c00, 0x00006c00},
|
||||
{0x98b0, 0x00006c00, 0x00006c00},
|
||||
{0x98b0, 0x00007c00, 0x00007c00},
|
||||
{0x98b0, 0x00002c00, 0x00002c00},
|
||||
{0x98b0, 0x00003c00, 0x00003c00},
|
||||
{0x98b0, 0x00003800, 0x00003800},
|
||||
{0x98b0, 0x00001c00, 0x00001c00},
|
||||
{0x98b0, 0x00000800, 0x00000800},
|
||||
{0x98b0, 0x00000408, 0x00000408},
|
||||
{0x98b0, 0x00004c15, 0x00004c15},
|
||||
{0x98b0, 0x00004188, 0x00004188},
|
||||
{0x98b0, 0x0000201e, 0x0000201e},
|
||||
{0x98b0, 0x00010408, 0x00010408},
|
||||
{0x98b0, 0x00000801, 0x00000801},
|
||||
{0x98b0, 0x00000c08, 0x00000c08},
|
||||
{0x98b0, 0x0000181e, 0x0000181e},
|
||||
{0x98b0, 0x00001016, 0x00001016},
|
||||
{0x98b0, 0x00002800, 0x00002800},
|
||||
{0x98b0, 0x00004010, 0x00004010},
|
||||
{0x98b0, 0x0000081c, 0x0000081c},
|
||||
{0x98b0, 0x00000115, 0x00000115},
|
||||
{0x98b0, 0x00000015, 0x00000015},
|
||||
{0x98b0, 0x00000066, 0x00000066},
|
||||
{0x98b0, 0x0000001c, 0x0000001c},
|
||||
{0x98b0, 0x00000000, 0x00000000},
|
||||
{0x98b0, 0x00000004, 0x00000004},
|
||||
{0x98b0, 0x00000015, 0x00000015},
|
||||
{0x98b0, 0x0000001f, 0x0000001f},
|
||||
{0x98e0, 0x00000000, 0x00000400},
|
||||
//# bank 7
|
||||
{0x98b0, 0x000000a0, 0x000000a0},
|
||||
{0x98b0, 0x00000000, 0x00000000},
|
||||
{0x98b0, 0x00000040, 0x00000040},
|
||||
{0x98f0, 0x0000001c, 0x0000001c}
|
||||
};
|
2936
drivers/staging/otus/ioctl.c
Normal file
2936
drivers/staging/otus/ioctl.c
Normal file
File diff suppressed because it is too large
Load diff
60
drivers/staging/otus/oal_dt.h
Normal file
60
drivers/staging/otus/oal_dt.h
Normal file
|
@ -0,0 +1,60 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* Module Name : oal_dt.h */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module contains data type definition. */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* Platform dependent. */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#ifndef _OAL_DT_H
|
||||
#define _OAL_DT_H
|
||||
|
||||
/* Please include header files for buffer type in the beginning of this file */
|
||||
/* Please include header files for device type here */
|
||||
#include <linux/netdevice.h>
|
||||
|
||||
typedef unsigned long long u64_t;
|
||||
typedef unsigned int u32_t;
|
||||
typedef unsigned short u16_t;
|
||||
typedef unsigned char u8_t;
|
||||
typedef long long s64_t;
|
||||
typedef long s32_t;
|
||||
typedef short s16_t;
|
||||
typedef char s8_t;
|
||||
|
||||
#ifndef TRUE
|
||||
#define TRUE (1==1)
|
||||
#endif
|
||||
|
||||
#ifndef FALSE
|
||||
#define FALSE (1==0)
|
||||
#endif
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL 0
|
||||
#endif
|
||||
|
||||
/* Please include header files for buffer type in the beginning of this file */
|
||||
typedef struct sk_buff zbuf_t;
|
||||
|
||||
/* Please include header files for device type in the beginning of this file */
|
||||
typedef struct net_device zdev_t;
|
||||
|
||||
#endif /* #ifndef _OAL_DT_H */
|
135
drivers/staging/otus/oal_marc.h
Normal file
135
drivers/staging/otus/oal_marc.h
Normal file
|
@ -0,0 +1,135 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* Module Name : oal_marc.h */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module contains warpper definitions. */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* Platform dependent. */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#ifndef _OAL_MARC_H
|
||||
#define _OAL_MARC_H
|
||||
|
||||
#include "oal_dt.h"
|
||||
#include "usbdrv.h"
|
||||
|
||||
#define ZM_OS_LINUX_FUNC
|
||||
|
||||
/***** Critical section *****/
|
||||
/* Declare for critical section */
|
||||
#ifndef ZM_HALPLUS_LOCK
|
||||
#define zmw_get_wlan_dev(dev) struct zsWlanDev *wd = (struct zsWlanDev*) ((((struct usbdrv_private*)dev->priv)->wd))
|
||||
|
||||
#define zmw_declare_for_critical_section() unsigned long irqFlag;
|
||||
|
||||
/* Enter critical section */
|
||||
#define zmw_enter_critical_section(dev) \
|
||||
spin_lock_irqsave(&(((struct usbdrv_private *)(dev->priv))->cs_lock), irqFlag);
|
||||
|
||||
/* leave critical section */
|
||||
#define zmw_leave_critical_section(dev) \
|
||||
spin_unlock_irqrestore(&(((struct usbdrv_private *)(dev->priv))->cs_lock), irqFlag);
|
||||
#else
|
||||
#define zmw_get_wlan_dev(dev) struct zsWlanDev *wd = zfwGetWlanDev(dev);
|
||||
|
||||
/* Declare for critical section */
|
||||
#define zmw_declare_for_critical_section()
|
||||
|
||||
/* Enter critical section */
|
||||
#define zmw_enter_critical_section(dev) \
|
||||
zfwEnterCriticalSection(dev);
|
||||
|
||||
/* leave critical section */
|
||||
#define zmw_leave_critical_section(dev) \
|
||||
zfwLeaveCriticalSection(dev);
|
||||
#endif
|
||||
|
||||
/***** Byte order converting *****/
|
||||
#ifdef ZM_CONFIG_BIG_ENDIAN
|
||||
#define zmw_cpu_to_le32(v) (((v & 0xff000000) >> 24) | \
|
||||
((v & 0x00ff0000) >> 8) | \
|
||||
((v & 0x0000ff00) << 8) | \
|
||||
((v & 0x000000ff) << 24))
|
||||
|
||||
#define zmw_le32_to_cpu(v) (((v & 0xff000000) >> 24) | \
|
||||
((v & 0x00ff0000) >> 8) | \
|
||||
((v & 0x0000ff00) << 8) | \
|
||||
((v & 0x000000ff) << 24))
|
||||
|
||||
#define zmw_cpu_to_le16(v) (((v & 0xff00) >> 8) | \
|
||||
((v & 0x00ff) << 8))
|
||||
|
||||
#define zmw_le16_to_cpu(v) (((v & 0xff00) >> 8) | \
|
||||
((v & 0x00ff) << 8))
|
||||
#else
|
||||
#define zmw_cpu_to_le32(v) (v)
|
||||
#define zmw_le32_to_cpu(v) (v)
|
||||
#define zmw_cpu_to_le16(v) (v)
|
||||
#define zmw_le16_to_cpu(v) (v)
|
||||
#endif
|
||||
|
||||
/***** Buffer access *****/
|
||||
/* Called to read/write buffer */
|
||||
#ifndef ZM_HALPLUS_LOCK
|
||||
|
||||
#define zmw_buf_readb(dev, buf, offset) *(u8_t*)((u8_t*)buf->data+offset)
|
||||
#define zmw_buf_readh(dev, buf, offset) zmw_cpu_to_le16(*(u16_t*)((u8_t*)buf->data+offset))
|
||||
#define zmw_buf_writeb(dev, buf, offset, value) *(u8_t*)((u8_t*)buf->data+offset) = value
|
||||
#define zmw_buf_writeh(dev, buf, offset, value) *(u16_t*)((u8_t*)buf->data+offset) = zmw_cpu_to_le16(value)
|
||||
#define zmw_buf_get_buffer(dev, buf) (u8_t*)(buf->data)
|
||||
|
||||
#else
|
||||
|
||||
#define zmw_buf_readb(dev, buf, offset) zfwBufReadByte(dev, buf, offset)
|
||||
#define zmw_buf_readh(dev, buf, offset) zfwBufReadHalfWord(dev, buf, offset)
|
||||
#define zmw_buf_writeb(dev, buf, offset, value) zfwBufWriteByte(dev, buf, offset, value)
|
||||
#define zmw_buf_writeh(dev, buf, offset, value) zfwBufWriteHalfWord(dev, buf, offset, value)
|
||||
#define zmw_buf_get_buffer(dev, buf) zfwGetBuffer(dev, buf)
|
||||
|
||||
#endif
|
||||
|
||||
/***** Debug message *****/
|
||||
#if 0
|
||||
#define zm_debug_msg0(msg) printk("%s:%s\n", __FUNCTION__, msg);
|
||||
#define zm_debug_msg1(msg, val) printk("%s:%s%ld\n", __FUNCTION__, \
|
||||
msg, (u32_t)val);
|
||||
#define zm_debug_msg2(msg, val) printk("%s:%s%lxh\n", __FUNCTION__, \
|
||||
msg, (u32_t)val);
|
||||
#define zm_debug_msg_s(msg, val) printk("%s:%s%s\n", __FUNCTION__, \
|
||||
msg, val);
|
||||
#define zm_debug_msg_p(msg, val1, val2) printk("%s:%s%01ld.%02ld\n", __FUNCTION__, \
|
||||
msg, (val1/val2), (((val1*100)/val2)%100));
|
||||
#define zm_dbg(S) printk S
|
||||
#else
|
||||
#define zm_debug_msg0(msg)
|
||||
#define zm_debug_msg1(msg, val)
|
||||
#define zm_debug_msg2(msg, val)
|
||||
#define zm_debug_msg_s(msg, val)
|
||||
#define zm_debug_msg_p(msg, val1, val2)
|
||||
#define zm_dbg(S)
|
||||
#endif
|
||||
|
||||
#define zm_assert(expr) if(!(expr)) { \
|
||||
printk( "Atheors Assertion failed! %s,%s,%s,line=%d\n", \
|
||||
#expr,__FILE__,__FUNCTION__,__LINE__); \
|
||||
}
|
||||
|
||||
#define DbgPrint printk
|
||||
|
||||
#endif /* #ifndef _OAL_MARC_H */
|
1210
drivers/staging/otus/usbdrv.c
Normal file
1210
drivers/staging/otus/usbdrv.c
Normal file
File diff suppressed because it is too large
Load diff
257
drivers/staging/otus/usbdrv.h
Normal file
257
drivers/staging/otus/usbdrv.h
Normal file
|
@ -0,0 +1,257 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* */
|
||||
/* Module Name : usbdrv.h */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module contains network interface up/down related definition*/
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* Platform dependent. */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#ifndef _USBDRV_H
|
||||
#define _USBDRV_H
|
||||
|
||||
#define WLAN_USB 0
|
||||
#define WLAN_PCI 1
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/etherdevice.h>
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/version.h>
|
||||
#include <asm/uaccess.h>
|
||||
#include <linux/wireless.h>
|
||||
#include <linux/if_arp.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
|
||||
#include <asm/div64.h>
|
||||
#endif
|
||||
|
||||
#include "zdcompat.h"
|
||||
|
||||
#include "oal_dt.h"
|
||||
#include "oal_marc.h"
|
||||
#include "80211core/pub_zfi.h"
|
||||
//#include "pub_zfw.h"
|
||||
#include "80211core/pub_usb.h"
|
||||
|
||||
#include <linux/usb.h>
|
||||
/* Please include header files for device type in the beginning of this file */
|
||||
#define urb_t struct urb
|
||||
|
||||
#define usb_complete_t usb_complete_t
|
||||
#define pipe_t u32_t
|
||||
|
||||
/* USB Endpoint definition */
|
||||
#define USB_WLAN_TX_PIPE 1
|
||||
#define USB_WLAN_RX_PIPE 2
|
||||
#define USB_REG_IN_PIPE 3
|
||||
#define USB_REG_OUT_PIPE 4
|
||||
|
||||
#if (WLAN_HOSTIF == WLAN_USB)
|
||||
#include <linux/usb.h>
|
||||
#endif
|
||||
|
||||
#ifdef ZM_HOSTAPD_SUPPORT
|
||||
#include "athr_common.h"
|
||||
#endif
|
||||
|
||||
/**************************************************************************
|
||||
** Descriptor Data Structure
|
||||
***************************************************************************/
|
||||
struct driver_stats {
|
||||
struct net_device_stats net_stats;
|
||||
};
|
||||
|
||||
#define ZM_MAX_RX_BUFFER_SIZE 8192
|
||||
|
||||
#if ZM_USB_TX_STREAM_MODE == 1
|
||||
#define ZM_MAX_TX_AGGREGATE_NUM 4
|
||||
#define ZM_USB_TX_BUF_SIZE 8096
|
||||
#define ZM_MAX_TX_URB_NUM 4
|
||||
#else
|
||||
#define ZM_USB_TX_BUF_SIZE 2048
|
||||
#define ZM_MAX_TX_URB_NUM 8
|
||||
#endif
|
||||
#define ZM_USB_REG_MAX_BUF_SIZE 64
|
||||
#define ZM_MAX_RX_URB_NUM 16
|
||||
#define ZM_MAX_TX_BUF_NUM 128
|
||||
|
||||
typedef struct UsbTxQ
|
||||
{
|
||||
zbuf_t *buf;
|
||||
u8_t hdr[80];
|
||||
u16_t hdrlen;
|
||||
u8_t snap[8];
|
||||
u16_t snapLen;
|
||||
u8_t tail[16];
|
||||
u16_t tailLen;
|
||||
u16_t offset;
|
||||
} UsbTxQ_t;
|
||||
|
||||
|
||||
struct zdap_ioctl {
|
||||
u16_t cmd; /* Command to run */
|
||||
u32_t addr; /* Length of the data buffer */
|
||||
u32_t value; /* Pointer to the data buffer */
|
||||
u8_t data[0x100];
|
||||
};
|
||||
|
||||
#define ZM_OAL_MAX_STA_SUPPORT 16
|
||||
|
||||
struct usbdrv_private
|
||||
{
|
||||
//linux used
|
||||
struct net_device *device;
|
||||
#if (WLAN_HOSTIF == WLAN_PCI)
|
||||
struct pci_dev *pdev;
|
||||
#endif
|
||||
#if (WLAN_HOSTIF == WLAN_USB)
|
||||
struct usb_device *udev;
|
||||
struct usb_interface *interface;
|
||||
#endif
|
||||
struct driver_stats drv_stats;
|
||||
char ifname[IFNAMSIZ];
|
||||
int using_dac;
|
||||
u8_t rev_id; /* adapter PCI revision ID */
|
||||
rwlock_t isolate_lock;
|
||||
spinlock_t cs_lock;
|
||||
int driver_isolated;
|
||||
#if (WLAN_HOSTIF == WLAN_PCI)
|
||||
void *regp;
|
||||
#endif
|
||||
|
||||
/* timer for heart beat */
|
||||
struct timer_list hbTimer10ms;
|
||||
|
||||
/* For driver core */
|
||||
void* wd;
|
||||
|
||||
#if (WLAN_HOSTIF == WLAN_USB)
|
||||
u8_t txUsbBuf[ZM_MAX_TX_URB_NUM][ZM_USB_TX_BUF_SIZE];
|
||||
u8_t regUsbReadBuf[ZM_USB_REG_MAX_BUF_SIZE];
|
||||
u8_t regUsbWriteBuf[ZM_USB_REG_MAX_BUF_SIZE];
|
||||
urb_t *WlanTxDataUrb[ZM_MAX_TX_URB_NUM];
|
||||
urb_t *WlanRxDataUrb[ZM_MAX_RX_URB_NUM];
|
||||
urb_t *RegOutUrb;
|
||||
urb_t *RegInUrb;
|
||||
UsbTxQ_t UsbTxBufQ[ZM_MAX_TX_BUF_NUM];
|
||||
zbuf_t *UsbRxBufQ[ZM_MAX_RX_URB_NUM];
|
||||
u16_t TxBufHead;
|
||||
u16_t TxBufTail;
|
||||
u16_t TxBufCnt;
|
||||
u16_t TxUrbHead;
|
||||
u16_t TxUrbTail;
|
||||
u16_t TxUrbCnt;
|
||||
u16_t RxBufHead;
|
||||
u16_t RxBufTail;
|
||||
u16_t RxBufCnt;
|
||||
#endif
|
||||
|
||||
#if ZM_USB_STREAM_MODE == 1
|
||||
zbuf_t *reamin_buf;
|
||||
#endif
|
||||
|
||||
#ifdef ZM_HOSTAPD_SUPPORT
|
||||
struct athr_wlan_param athr_wpa_req;
|
||||
#endif
|
||||
struct sock *netlink_sk;
|
||||
u8_t DeviceOpened; //CWYang(+)
|
||||
u8_t supIe[50];
|
||||
u8_t supLen;
|
||||
struct ieee80211req_wpaie stawpaie[ZM_OAL_MAX_STA_SUPPORT];
|
||||
u8_t forwardMgmt;
|
||||
|
||||
struct zfCbUsbFuncTbl usbCbFunctions;
|
||||
|
||||
/* For keventd */
|
||||
u32_t flags;
|
||||
unsigned long kevent_flags;
|
||||
u16_t kevent_ready;
|
||||
|
||||
struct semaphore ioctl_sem;
|
||||
struct work_struct kevent;
|
||||
wait_queue_head_t wait_queue_event;
|
||||
#ifdef ZM_HALPLUS_LOCK
|
||||
unsigned long hal_irqFlag;
|
||||
#endif
|
||||
u16_t adapterState;
|
||||
};
|
||||
|
||||
/* WDS */
|
||||
#define ZM_WDS_PORT_NUMBER 6
|
||||
|
||||
struct zsWdsStruct
|
||||
{
|
||||
struct net_device* dev;
|
||||
u16_t openFlag;
|
||||
};
|
||||
|
||||
/* VAP */
|
||||
#define ZM_VAP_PORT_NUMBER 7
|
||||
|
||||
struct zsVapStruct
|
||||
{
|
||||
struct net_device* dev;
|
||||
u16_t openFlag;
|
||||
};
|
||||
|
||||
/***************************************/
|
||||
|
||||
#define ZM_IOCTL_REG_READ 0x01
|
||||
#define ZM_IOCTL_REG_WRITE 0x02
|
||||
#define ZM_IOCTL_MEM_DUMP 0x03
|
||||
#define ZM_IOCTL_REG_DUMP 0x05
|
||||
#define ZM_IOCTL_TXD_DUMP 0x06
|
||||
#define ZM_IOCTL_RXD_DUMP 0x07
|
||||
#define ZM_IOCTL_MEM_READ 0x0B
|
||||
#define ZM_IOCTL_MEM_WRITE 0x0C
|
||||
#define ZM_IOCTL_DMA_TEST 0x10
|
||||
#define ZM_IOCTL_REG_TEST 0x11
|
||||
#define ZM_IOCTL_TEST 0x80
|
||||
#define ZM_IOCTL_TALLY 0x81 //CWYang(+)
|
||||
#define ZM_IOCTL_RTS 0xA0
|
||||
#define ZM_IOCTL_MIX_MODE 0xA1
|
||||
#define ZM_IOCTL_FRAG 0xA2
|
||||
#define ZM_IOCTL_SCAN 0xA3
|
||||
#define ZM_IOCTL_KEY 0xA4
|
||||
#define ZM_IOCTL_RATE 0xA5
|
||||
#define ZM_IOCTL_ENCRYPTION_MODE 0xA6
|
||||
#define ZM_IOCTL_GET_TXCNT 0xA7
|
||||
#define ZM_IOCTL_GET_DEAGG_CNT 0xA8
|
||||
#define ZM_IOCTL_DURATION_MODE 0xA9
|
||||
#define ZM_IOCTL_SET_AES_KEY 0xAA
|
||||
#define ZM_IOCTL_SET_AES_MODE 0xAB
|
||||
#define ZM_IOCTL_SIGNAL_STRENGTH 0xAC //CWYang(+)
|
||||
#define ZM_IOCTL_SIGNAL_QUALITY 0xAD //CWYang(+)
|
||||
#define ZM_IOCTL_SET_PIBSS_MODE 0xAE
|
||||
|
||||
#define ZDAPIOCTL SIOCDEVPRIVATE
|
||||
|
||||
enum devState {
|
||||
Opened,
|
||||
Enabled,
|
||||
Disabled,
|
||||
Closed
|
||||
};
|
||||
|
||||
#endif /* _USBDRV_H */
|
||||
|
114
drivers/staging/otus/wrap_buf.c
Normal file
114
drivers/staging/otus/wrap_buf.c
Normal file
|
@ -0,0 +1,114 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* */
|
||||
/* Module Name : wrap_buf.c */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module contains wrapper functions for buffer management */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* Platform dependent. */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#include "oal_dt.h"
|
||||
#include "usbdrv.h"
|
||||
|
||||
|
||||
#include <linux/netlink.h>
|
||||
|
||||
#if WIRELESS_EXT > 12
|
||||
#include <net/iw_handler.h>
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/* Called to allocate buffer, must return a continue buffer space */
|
||||
zbuf_t* zfwBufAllocate(zdev_t* dev, u16_t len)
|
||||
{
|
||||
zbuf_t* buf;
|
||||
|
||||
/* Allocate SKB for packet*/
|
||||
buf = dev_alloc_skb(len);
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
|
||||
/* Called to free buffer, replace below 3 functions */
|
||||
void zfwBufFree(zdev_t* dev, zbuf_t* buf, u16_t status)
|
||||
{
|
||||
dev_kfree_skb_any(buf);
|
||||
}
|
||||
|
||||
/* Called to adjust buffer size and head pointer */
|
||||
u16_t zfwBufRemoveHead(zdev_t* dev, zbuf_t* buf, u16_t size)
|
||||
{
|
||||
//zm_assert(buf->len > size);
|
||||
|
||||
buf->data += size;
|
||||
buf->len -= size;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* return tail if head==NULL, called to chain multiple buffer together */
|
||||
/* Used to chain Rx buffer to form a frame. if the prepared Rx buffer */
|
||||
/* is greater than an ethernet frame(1518+32 byte), then this function */
|
||||
/* will only be called with head=NULL. */
|
||||
u16_t zfwBufChain(zdev_t* dev, zbuf_t** head, zbuf_t* tail)
|
||||
{
|
||||
|
||||
*head = tail;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* Called when doing infra-bss forwarding */
|
||||
u16_t zfwBufCopy(zdev_t* dev, zbuf_t* dst, zbuf_t* src)
|
||||
{
|
||||
memcpy(dst->data, src->data, src->len);
|
||||
dst->tail = dst->data;
|
||||
skb_put(dst, src->len);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* Called to adjust buffer size and tail pointer */
|
||||
u16_t zfwBufSetSize(zdev_t* dev, zbuf_t* buf, u16_t size)
|
||||
{
|
||||
#ifdef NET_SKBUFF_DATA_USES_OFFSET
|
||||
buf->tail = 0;
|
||||
buf->len = 0;
|
||||
#else
|
||||
buf->tail = buf->data;
|
||||
buf->len = 0;
|
||||
#endif
|
||||
|
||||
skb_put(buf, size);
|
||||
return 0;
|
||||
}
|
||||
|
||||
u16_t zfwBufGetSize(zdev_t* dev, zbuf_t* buf)
|
||||
{
|
||||
return buf->len;
|
||||
}
|
||||
|
||||
void zfwCopyBufContext(zdev_t* dev, zbuf_t* source, zbuf_t* dst)
|
||||
{
|
||||
}
|
101
drivers/staging/otus/wrap_dbg.c
Normal file
101
drivers/staging/otus/wrap_dbg.c
Normal file
|
@ -0,0 +1,101 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* Module Name : wrap_dbg.c */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module contains wrapper functions for debug functions */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* Platform dependent. */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#include "oal_dt.h"
|
||||
#include "usbdrv.h"
|
||||
|
||||
#include <linux/netlink.h>
|
||||
|
||||
#if WIRELESS_EXT > 12
|
||||
#include <net/iw_handler.h>
|
||||
#endif
|
||||
|
||||
void zfwDumpBuf(zdev_t* dev, zbuf_t* buf)
|
||||
{
|
||||
u16_t i;
|
||||
|
||||
for (i=0; i<buf->len; i++)
|
||||
{
|
||||
printk("%02x ", *(((u8_t*)buf->data)+i));
|
||||
if ((i&0xf)==0xf)
|
||||
{
|
||||
printk("\n");
|
||||
}
|
||||
}
|
||||
printk("\n");
|
||||
}
|
||||
|
||||
|
||||
void zfwDbgReadRegDone(zdev_t* dev, u32_t addr, u32_t val)
|
||||
{
|
||||
printk("Read addr:%x = %x\n", addr, val);
|
||||
}
|
||||
|
||||
void zfwDbgWriteRegDone(zdev_t* dev, u32_t addr, u32_t val)
|
||||
{
|
||||
printk("Write addr:%x = %x\n", addr, val);
|
||||
}
|
||||
|
||||
void zfwDbgReadTallyDone(zdev_t* dev)
|
||||
{
|
||||
//printk("Read Tall Done\n");
|
||||
}
|
||||
|
||||
void zfwDbgWriteEepromDone(zdev_t* dev, u32_t addr, u32_t val)
|
||||
{
|
||||
}
|
||||
|
||||
void zfwDbgQueryHwTxBusyDone(zdev_t* dev, u32_t val)
|
||||
{
|
||||
}
|
||||
|
||||
//For Evl ++
|
||||
void zfwDbgReadFlashDone(zdev_t* dev, u32_t addr, u32_t* rspdata, u32_t datalen)
|
||||
{
|
||||
printk("Read Flash addr:%x length:%x\n", addr, datalen);
|
||||
}
|
||||
|
||||
void zfwDbgProgrameFlashDone(zdev_t* dev)
|
||||
{
|
||||
printk("Program Flash Done\n");
|
||||
}
|
||||
|
||||
void zfwDbgProgrameFlashChkDone(zdev_t* dev)
|
||||
{
|
||||
printk("Program Flash Done\n");
|
||||
}
|
||||
|
||||
void zfwDbgGetFlashChkSumDone(zdev_t* dev, u32_t* rspdata)
|
||||
{
|
||||
printk("Get Flash ChkSum Done\n");
|
||||
}
|
||||
|
||||
void zfwDbgDownloadFwInitDone(zdev_t* dev)
|
||||
{
|
||||
printk("Download FW Init Done\n");
|
||||
}
|
||||
//For Evl --
|
||||
|
||||
/* Leave an empty line below to remove warning message on some compiler */
|
283
drivers/staging/otus/wrap_ev.c
Normal file
283
drivers/staging/otus/wrap_ev.c
Normal file
|
@ -0,0 +1,283 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* */
|
||||
/* Module Name : wrap_ev.c */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module contains wrapper functions for events */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* Platform dependent. */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#include "oal_dt.h"
|
||||
#include "usbdrv.h"
|
||||
|
||||
#include <linux/netlink.h>
|
||||
|
||||
#if WIRELESS_EXT > 12
|
||||
#include <net/iw_handler.h>
|
||||
#endif
|
||||
|
||||
|
||||
/***** Management *****/
|
||||
u16_t zfLnxAuthNotify(zdev_t* dev, u16_t* macAddr)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
u16_t zfLnxAsocNotify(zdev_t* dev, u16_t* macAddr, u8_t* body, u16_t bodySize, u16_t port)
|
||||
{
|
||||
//#ifdef ZM_HOSTAPD_SUPPORT
|
||||
struct usbdrv_private *macp = (struct usbdrv_private *)dev->priv;
|
||||
union iwreq_data wreq;
|
||||
u8_t *addr = (u8_t *) macAddr;
|
||||
u16_t i, j;
|
||||
|
||||
memset(&wreq, 0, sizeof(wreq));
|
||||
memcpy(wreq.addr.sa_data, macAddr, ETH_ALEN);
|
||||
wreq.addr.sa_family = ARPHRD_ETHER;
|
||||
printk(KERN_DEBUG "join_event of MAC: %02x:%02x:%02x:%02x:%02x:%02x\n",
|
||||
addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]);
|
||||
|
||||
for(i = 0; i < ZM_OAL_MAX_STA_SUPPORT; i++)
|
||||
{
|
||||
for(j = 0; j < IEEE80211_ADDR_LEN; j++)
|
||||
{
|
||||
if ((macp->stawpaie[i].wpa_macaddr[j] != 0) &&
|
||||
(macp->stawpaie[i].wpa_macaddr[j] != addr[j]))
|
||||
break;
|
||||
}
|
||||
if (j == 6)
|
||||
break;
|
||||
}
|
||||
if (i < ZM_OAL_MAX_STA_SUPPORT)
|
||||
{
|
||||
//printk("zfwAsocNotify - store wpa ie in macp, index = %d\n", i);
|
||||
memcpy(macp->stawpaie[i].wpa_macaddr, macAddr, IEEE80211_ADDR_LEN);
|
||||
memcpy(macp->stawpaie[i].wpa_ie, body, bodySize);
|
||||
}
|
||||
//if(macp->cardSetting.BssType == INFRASTRUCTURE_BSS) {
|
||||
// //wireless_send_event(macp->device, SIOCGIWSCAN, &wreq, NULL);
|
||||
// wireless_send_event(macp->device, SIOCGIWAP, &wreq, NULL);
|
||||
//}
|
||||
#if WIRELESS_EXT >= 15
|
||||
//else if(macp->cardSetting.BssType == AP_BSS) {
|
||||
// if (port == 0)
|
||||
// {
|
||||
wireless_send_event(dev, IWEVREGISTERED, &wreq, NULL);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// /* Check whether the VAP device is valid */
|
||||
// if (vap[port].dev != NULL)
|
||||
// {
|
||||
// wireless_send_event(vap[port].dev, IWEVREGISTERED, &wreq, NULL);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// printk(KERN_ERR "Can' find a valid VAP device, port: %d\n", port);
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
#endif
|
||||
//#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* Notification that a STA is disassociated from AP */
|
||||
/* AP mode only */
|
||||
u16_t zfLnxDisAsocNotify(zdev_t* dev, u8_t* macAddr, u16_t port)
|
||||
{
|
||||
union iwreq_data wreq;
|
||||
u8_t *addr = (u8_t *) macAddr;
|
||||
|
||||
memset(&wreq, 0, sizeof(wreq));
|
||||
memcpy(wreq.addr.sa_data, macAddr, ETH_ALEN);
|
||||
wreq.addr.sa_family = ARPHRD_ETHER;
|
||||
printk(KERN_DEBUG "zfwDisAsocNotify(), MAC: %02x:%02x:%02x:%02x:%02x:%02x\n",
|
||||
addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Notification that a STA is connect to AP */
|
||||
/* AP mode only */
|
||||
u16_t zfLnxApConnectNotify(zdev_t* dev, u8_t* macAddr, u16_t port)
|
||||
{
|
||||
union iwreq_data wreq;
|
||||
u8_t *addr = (u8_t *) macAddr;
|
||||
|
||||
memset(&wreq, 0, sizeof(wreq));
|
||||
memcpy(wreq.addr.sa_data, macAddr, ETH_ALEN);
|
||||
wreq.addr.sa_family = ARPHRD_ETHER;
|
||||
printk(KERN_DEBUG "zfwApConnectNotify(), MAC: %02x:%02x:%02x:%02x:%02x:%02x\n",
|
||||
addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void zfLnxConnectNotify(zdev_t* dev, u16_t status, u16_t* bssid)
|
||||
{
|
||||
union iwreq_data wreq;
|
||||
u8_t *addr = (u8_t *) bssid;
|
||||
struct usbdrv_private *macp = dev->priv;
|
||||
|
||||
if (bssid != NULL)
|
||||
{
|
||||
memset(&wreq, 0, sizeof(wreq));
|
||||
if (status == ZM_STATUS_MEDIA_CONNECT)
|
||||
memcpy(wreq.addr.sa_data, bssid, ETH_ALEN);
|
||||
wreq.addr.sa_family = ARPHRD_ETHER;
|
||||
|
||||
if (status == ZM_STATUS_MEDIA_CONNECT)
|
||||
{
|
||||
#ifdef ZM_CONFIG_BIG_ENDIAN
|
||||
printk(KERN_DEBUG "Connected to AP, MAC: %02x:%02x:%02x:%02x:%02x:%02x\n",
|
||||
addr[1], addr[0], addr[3], addr[2], addr[5], addr[4]);
|
||||
#else
|
||||
printk(KERN_DEBUG "Connected to AP, MAC: %02x:%02x:%02x:%02x:%02x:%02x\n",
|
||||
addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]);
|
||||
#endif
|
||||
|
||||
netif_start_queue(dev);
|
||||
}
|
||||
else if ((status == ZM_STATUS_MEDIA_DISCONNECT) ||
|
||||
(status == ZM_STATUS_MEDIA_DISABLED) ||
|
||||
(status == ZM_STATUS_MEDIA_CONNECTION_DISABLED) ||
|
||||
(status == ZM_STATUS_MEDIA_CONNECTION_RESET) ||
|
||||
(status == ZM_STATUS_MEDIA_RESET) ||
|
||||
(status == ZM_STATUS_MEDIA_DISCONNECT_DEAUTH) ||
|
||||
(status == ZM_STATUS_MEDIA_DISCONNECT_DISASOC) ||
|
||||
(status == ZM_STATUS_MEDIA_DISCONNECT_BEACON_MISS) ||
|
||||
(status == ZM_STATUS_MEDIA_DISCONNECT_NOT_FOUND) ||
|
||||
(status == ZM_STATUS_MEDIA_DISCONNECT_TIMEOUT))
|
||||
{
|
||||
printk(KERN_DEBUG "Disconnection Notify\n");
|
||||
|
||||
netif_stop_queue(dev);
|
||||
}
|
||||
|
||||
/* Save the connected status */
|
||||
macp->adapterState = status;
|
||||
|
||||
if(zfiWlanQueryWlanMode(dev) == ZM_MODE_INFRASTRUCTURE) {
|
||||
// //wireless_send_event(dev, SIOCGIWSCAN, &wreq, NULL);
|
||||
wireless_send_event(dev, SIOCGIWAP, &wreq, NULL);
|
||||
}
|
||||
#if WIRELESS_EXT >= 15
|
||||
else if(zfiWlanQueryWlanMode(dev) == ZM_MODE_AP) {
|
||||
//if (port == 0)
|
||||
//{
|
||||
wireless_send_event(dev, IWEVREGISTERED, &wreq, NULL);
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// /* Check whether the VAP device is valid */
|
||||
// if (vap[port].dev != NULL)
|
||||
// {
|
||||
// wireless_send_event(vap[port].dev, IWEVREGISTERED, &wreq, NULL);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// printk(KERN_ERR "Can' find a valid VAP device, port: %d\n", port);
|
||||
// }
|
||||
//}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
//return 0;
|
||||
}
|
||||
|
||||
void zfLnxScanNotify(zdev_t* dev, struct zsScanResult* result)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
void zfLnxStatisticsNotify(zdev_t* dev, struct zsStastics* result)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//void zfwMicFailureNotify(zdev_t* dev, u8_t* message, u16_t event)
|
||||
void zfLnxMicFailureNotify(zdev_t* dev, u16_t* addr, u16_t status)
|
||||
{
|
||||
static const char *tag = "MLME-MICHAELMICFAILURE.indication";
|
||||
union iwreq_data wrqu;
|
||||
char buf[128];
|
||||
|
||||
/* TODO: needed parameters: count, type, src address */
|
||||
//snprintf(buf, sizeof(buf), "%s(%scast addr=%s)", tag,
|
||||
// (status == ZM_MIC_GROUP_ERROR) ? "broad" : "uni",
|
||||
// ether_sprintf((u8_t *)addr));
|
||||
|
||||
if (zfiWlanQueryWlanMode(dev) == ZM_MODE_INFRASTRUCTURE)
|
||||
{
|
||||
strcpy(buf, tag);
|
||||
}
|
||||
|
||||
memset(&wrqu, 0, sizeof(wrqu));
|
||||
wrqu.data.length = strlen(buf);
|
||||
wireless_send_event(dev, IWEVCUSTOM, &wrqu, buf);
|
||||
}
|
||||
|
||||
|
||||
void zfLnxApMicFailureNotify(zdev_t* dev, u8_t* addr, zbuf_t* buf)
|
||||
{
|
||||
union iwreq_data wreq;
|
||||
|
||||
memset(&wreq, 0, sizeof(wreq));
|
||||
memcpy(wreq.addr.sa_data, addr, ETH_ALEN);
|
||||
wreq.addr.sa_family = ARPHRD_ETHER;
|
||||
printk(KERN_DEBUG "zfwApMicFailureNotify(), MAC: %02x:%02x:%02x:%02x:%02x:%02x\n",
|
||||
addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// status = 0 => partner lost
|
||||
// = 1 => partner alive
|
||||
//void zfwIbssPartnerNotify(zdev_t* dev, u8_t status)
|
||||
void zfLnxIbssPartnerNotify(zdev_t* dev, u16_t status, struct zsPartnerNotifyEvent *event)
|
||||
{
|
||||
}
|
||||
|
||||
void zfLnxMacAddressNotify(zdev_t* dev, u8_t* addr)
|
||||
{
|
||||
dev->dev_addr[0] = addr[0];
|
||||
dev->dev_addr[1] = addr[1];
|
||||
dev->dev_addr[2] = addr[2];
|
||||
dev->dev_addr[3] = addr[3];
|
||||
dev->dev_addr[4] = addr[4];
|
||||
dev->dev_addr[5] = addr[5];
|
||||
}
|
||||
|
||||
void zfLnxSendCompleteIndication(zdev_t* dev, zbuf_t* buf)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void zfLnxRestoreBufData(zdev_t* dev, zbuf_t* buf) {
|
||||
|
||||
}
|
||||
/* Leave an empty line below to remove warning message on some compiler */
|
101
drivers/staging/otus/wrap_mem.c
Normal file
101
drivers/staging/otus/wrap_mem.c
Normal file
|
@ -0,0 +1,101 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* Module Name : wrap_mem.c */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module contains wrapper functions for memory management */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* Platform dependent. */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#include "oal_dt.h"
|
||||
#include "usbdrv.h"
|
||||
|
||||
#include <linux/netlink.h>
|
||||
|
||||
#if WIRELESS_EXT > 12
|
||||
#include <net/iw_handler.h>
|
||||
#endif
|
||||
|
||||
/* Memory management */
|
||||
/* Called to allocate uncached memory, allocated memory must */
|
||||
/* in 4-byte boundary */
|
||||
void* zfwMemAllocate(zdev_t* dev, u32_t size)
|
||||
{
|
||||
void* mem = NULL;
|
||||
mem = kmalloc(size, GFP_ATOMIC);
|
||||
return mem;
|
||||
}
|
||||
|
||||
|
||||
/* Called to free allocated memory */
|
||||
void zfwMemFree(zdev_t* dev, void* mem, u32_t size)
|
||||
{
|
||||
kfree(mem);
|
||||
return;
|
||||
}
|
||||
|
||||
void zfwMemoryCopy(u8_t* dst, u8_t* src, u16_t length)
|
||||
{
|
||||
//u16_t i;
|
||||
|
||||
memcpy(dst, src, length);
|
||||
//for(i=0; i<length; i++)
|
||||
//{
|
||||
// dst[i] = src[i];
|
||||
//}
|
||||
return;
|
||||
}
|
||||
|
||||
void zfwZeroMemory(u8_t* va, u16_t length)
|
||||
{
|
||||
//u16_t i;
|
||||
memset(va, 0, length);
|
||||
//for(i=0; i<length; i++)
|
||||
//{
|
||||
// va[i] = 0;
|
||||
//}
|
||||
return;
|
||||
}
|
||||
|
||||
void zfwMemoryMove(u8_t* dst, u8_t* src, u16_t length)
|
||||
{
|
||||
memcpy(dst, src, length);
|
||||
return;
|
||||
}
|
||||
|
||||
u8_t zfwMemoryIsEqual(u8_t* m1, u8_t* m2, u16_t length)
|
||||
{
|
||||
//u16_t i;
|
||||
int ret;
|
||||
|
||||
ret = memcmp(m1, m2, length);
|
||||
|
||||
return ((ret==0)?TRUE:FALSE);
|
||||
//for(i=0; i<length; i++)
|
||||
//{
|
||||
// if ( m1[i] != m2[i] )
|
||||
// {
|
||||
// return FALSE;
|
||||
// }
|
||||
//}
|
||||
|
||||
//return TRUE;
|
||||
}
|
||||
|
||||
/* Leave an empty line below to remove warning message on some compiler */
|
108
drivers/staging/otus/wrap_mis.c
Normal file
108
drivers/staging/otus/wrap_mis.c
Normal file
|
@ -0,0 +1,108 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* */
|
||||
/* Module Name : wrap_mis.c */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module contains wrapper functions for misc functions */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* Platform dependent. */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#include "oal_dt.h"
|
||||
#include "usbdrv.h"
|
||||
|
||||
#include <linux/netlink.h>
|
||||
|
||||
#if WIRELESS_EXT > 12
|
||||
#include <net/iw_handler.h>
|
||||
#endif
|
||||
|
||||
//extern struct zsWdsStruct wds[ZM_WDS_PORT_NUMBER];
|
||||
extern struct zsVapStruct vap[ZM_VAP_PORT_NUMBER];
|
||||
extern u16_t zfLnxGetVapId(zdev_t* dev);
|
||||
|
||||
/* Simply return 0xffff if VAP function is not supported */
|
||||
u16_t zfwGetVapId(zdev_t* dev)
|
||||
{
|
||||
return zfLnxGetVapId(dev);
|
||||
}
|
||||
|
||||
void zfwSleep(zdev_t* dev, u32_t ms)
|
||||
{
|
||||
if (in_interrupt() == 0)
|
||||
{
|
||||
mdelay(ms);
|
||||
}
|
||||
else
|
||||
{
|
||||
int ii;
|
||||
int iter = 100000 * ms;
|
||||
|
||||
for (ii = 0; ii < iter; ii++)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef ZM_HALPLUS_LOCK
|
||||
asmlinkage struct zsWlanDev *zfwGetWlanDev(zdev_t* dev)
|
||||
{
|
||||
return ((struct zsWlanDev*)(((struct usbdrv_private*)dev->priv)->wd));
|
||||
}
|
||||
|
||||
asmlinkage void zfwEnterCriticalSection(zdev_t* dev)
|
||||
{
|
||||
spin_lock_irqsave(&(((struct usbdrv_private *)(dev->priv))->cs_lock),
|
||||
(((struct usbdrv_private *)(dev->priv))->hal_irqFlag));
|
||||
}
|
||||
|
||||
asmlinkage void zfwLeaveCriticalSection(zdev_t* dev)
|
||||
{
|
||||
spin_unlock_irqrestore(&(((struct usbdrv_private *)(dev->priv))->cs_lock),
|
||||
(((struct usbdrv_private *)(dev->priv))->hal_irqFlag));
|
||||
}
|
||||
|
||||
asmlinkage u8_t zfwBufReadByte(zdev_t* dev, zbuf_t* buf, u16_t offset)
|
||||
{
|
||||
return *(u8_t*)((u8_t*)buf->data+offset);
|
||||
}
|
||||
|
||||
asmlinkage u16_t zfwBufReadHalfWord(zdev_t* dev, zbuf_t* buf, u16_t offset)
|
||||
{
|
||||
return zmw_cpu_to_le16(*(u16_t*)((u8_t*)buf->data+offset));
|
||||
}
|
||||
|
||||
asmlinkage void zfwBufWriteByte(zdev_t* dev, zbuf_t* buf, u16_t offset, u8_t value)
|
||||
{
|
||||
*(u8_t*)((u8_t*)buf->data+offset) = value;
|
||||
}
|
||||
|
||||
asmlinkage void zfwBufWriteHalfWord(zdev_t* dev, zbuf_t* buf, u16_t offset, u16_t value)
|
||||
{
|
||||
*(u16_t*)((u8_t*)buf->data+offset) = zmw_cpu_to_le16(value);
|
||||
}
|
||||
|
||||
asmlinkage u8_t *zfwGetBuffer(zdev_t* dev, zbuf_t* buf)
|
||||
{
|
||||
return (u8_t*)(buf->data);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Leave an empty line below to remove warning message on some compiler */
|
178
drivers/staging/otus/wrap_pkt.c
Normal file
178
drivers/staging/otus/wrap_pkt.c
Normal file
|
@ -0,0 +1,178 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* */
|
||||
/* Module Name : wrap_pkt.c */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module contains wrapper functions for packet handling */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* Platform dependent. */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#include "oal_dt.h"
|
||||
#include "usbdrv.h"
|
||||
|
||||
#include <linux/netlink.h>
|
||||
|
||||
#if WIRELESS_EXT > 12
|
||||
#include <net/iw_handler.h>
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
//extern struct zsWdsStruct wds[ZM_WDS_PORT_NUMBER];
|
||||
extern struct zsVapStruct vap[ZM_VAP_PORT_NUMBER];
|
||||
|
||||
|
||||
/***** Rx *****/
|
||||
void zfLnxRecv80211(zdev_t* dev, zbuf_t* buf, struct zsAdditionInfo* addInfo)
|
||||
{
|
||||
u16_t frameType;
|
||||
u16_t frameCtrl;
|
||||
u16_t frameSubtype;
|
||||
zbuf_t *skb1;
|
||||
struct usbdrv_private *macp = dev->priv;
|
||||
|
||||
//frameCtrl = zmw_buf_readb(dev, buf, 0);
|
||||
frameCtrl = *(u8_t*)((u8_t*)buf->data);
|
||||
frameType = frameCtrl & 0xf;
|
||||
frameSubtype = frameCtrl & 0xf0;
|
||||
|
||||
if ((frameType == 0x0) && (macp->forwardMgmt))
|
||||
{
|
||||
switch (frameSubtype)
|
||||
{
|
||||
/* Beacon */
|
||||
case 0x80 :
|
||||
/* Probe response */
|
||||
case 0x50 :
|
||||
skb1 = skb_copy(buf, GFP_ATOMIC);
|
||||
if(skb1 != NULL)
|
||||
{
|
||||
skb1->dev = dev;
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22))
|
||||
skb1->mac.raw = skb1->data;
|
||||
#else
|
||||
skb1->mac_header = skb1->data;
|
||||
#endif
|
||||
skb1->ip_summed = CHECKSUM_NONE;
|
||||
skb1->pkt_type = PACKET_OTHERHOST;
|
||||
skb1->protocol = __constant_htons(0x0019); /* ETH_P_80211_RAW */
|
||||
netif_rx(skb1);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
zfiRecv80211(dev, buf, addInfo);
|
||||
return;
|
||||
}
|
||||
|
||||
#define ZM_AVOID_UDP_LARGE_PACKET_FAIL
|
||||
void zfLnxRecvEth(zdev_t* dev, zbuf_t* buf, u16_t port)
|
||||
{
|
||||
#ifdef ZM_AVOID_UDP_LARGE_PACKET_FAIL
|
||||
zbuf_t *new_buf;
|
||||
|
||||
//new_buf = dev_alloc_skb(2048);
|
||||
new_buf = dev_alloc_skb(buf->len);
|
||||
|
||||
#ifdef NET_SKBUFF_DATA_USES_OFFSET
|
||||
new_buf->tail = 0;
|
||||
new_buf->len = 0;
|
||||
#else
|
||||
new_buf->tail = new_buf->data;
|
||||
new_buf->len = 0;
|
||||
#endif
|
||||
|
||||
skb_put(new_buf, buf->len);
|
||||
memcpy(new_buf->data, buf->data, buf->len);
|
||||
|
||||
/* Free buffer */
|
||||
dev_kfree_skb_any(buf);
|
||||
|
||||
if (port == 0)
|
||||
{
|
||||
new_buf->dev = dev;
|
||||
new_buf->protocol = eth_type_trans(new_buf, dev);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* VAP */
|
||||
if (vap[0].dev != NULL)
|
||||
{
|
||||
new_buf->dev = vap[0].dev;
|
||||
new_buf->protocol = eth_type_trans(new_buf, vap[0].dev);
|
||||
}
|
||||
else
|
||||
{
|
||||
new_buf->dev = dev;
|
||||
new_buf->protocol = eth_type_trans(new_buf, dev);
|
||||
}
|
||||
}
|
||||
|
||||
new_buf->ip_summed = CHECKSUM_NONE;
|
||||
dev->last_rx = jiffies;
|
||||
|
||||
switch(netif_rx(new_buf))
|
||||
#else
|
||||
if (port == 0)
|
||||
{
|
||||
buf->dev = dev;
|
||||
buf->protocol = eth_type_trans(buf, dev);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* VAP */
|
||||
if (vap[0].dev != NULL)
|
||||
{
|
||||
buf->dev = vap[0].dev;
|
||||
buf->protocol = eth_type_trans(buf, vap[0].dev);
|
||||
}
|
||||
else
|
||||
{
|
||||
buf->dev = dev;
|
||||
buf->protocol = eth_type_trans(buf, dev);
|
||||
}
|
||||
}
|
||||
|
||||
buf->ip_summed = CHECKSUM_NONE;
|
||||
dev->last_rx = jiffies;
|
||||
|
||||
switch(netif_rx(buf))
|
||||
#endif
|
||||
{
|
||||
case NET_RX_BAD:
|
||||
case NET_RX_DROP:
|
||||
case NET_RX_CN_MOD:
|
||||
case NET_RX_CN_HIGH:
|
||||
break;
|
||||
default:
|
||||
((struct usbdrv_private*)(dev->priv))->
|
||||
drv_stats.net_stats.rx_packets++;
|
||||
((struct usbdrv_private*)(dev->priv))->
|
||||
drv_stats.net_stats.rx_bytes += buf->len;
|
||||
break;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/* Leave an empty line below to remove warning message on some compiler */
|
127
drivers/staging/otus/wrap_sec.c
Normal file
127
drivers/staging/otus/wrap_sec.c
Normal file
|
@ -0,0 +1,127 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* */
|
||||
/* Module Name : wrap_sec.c */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module contains wrapper functions for CENC. */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* Platform dependent. */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#include "oal_dt.h"
|
||||
#include "usbdrv.h"
|
||||
|
||||
#include <linux/netlink.h>
|
||||
|
||||
#if WIRELESS_EXT > 12
|
||||
#include <net/iw_handler.h>
|
||||
#endif
|
||||
|
||||
#ifdef ZM_ENABLE_CENC
|
||||
extern int zfLnxCencSendMsg(struct sock *netlink_sk, u_int8_t *msg, int len);
|
||||
|
||||
u16_t zfLnxCencAsocNotify(zdev_t* dev, u16_t* macAddr, u8_t* body, u16_t bodySize, u16_t port)
|
||||
{
|
||||
struct usbdrv_private *macp = (struct usbdrv_private *)dev->priv;
|
||||
struct zydas_cenc_sta_info cenc_info;
|
||||
//struct sock *netlink_sk;
|
||||
u8_t ie_len;
|
||||
int ii;
|
||||
|
||||
/* Create NETLINK socket */
|
||||
//netlink_sk = netlink_kernel_create(NETLINK_USERSOCK, NULL);
|
||||
|
||||
if (macp->netlink_sk == NULL)
|
||||
{
|
||||
printk(KERN_ERR "NETLINK Socket is NULL\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
memset(&cenc_info, 0, sizeof(cenc_info));
|
||||
|
||||
//memcpy(cenc_info.gsn, vap->iv_cencmsk_keys.wk_txiv, ZM_CENC_IV_LEN);
|
||||
zfiWlanQueryGSN(dev, cenc_info.gsn, port);
|
||||
cenc_info.datalen += ZM_CENC_IV_LEN;
|
||||
ie_len = body[1] + 2;
|
||||
memcpy(cenc_info.wie, body, ie_len);
|
||||
cenc_info.datalen += ie_len;
|
||||
|
||||
memcpy(cenc_info.sta_mac, macAddr, 6);
|
||||
cenc_info.msg_type = ZM_CENC_WAI_REQUEST;
|
||||
cenc_info.datalen += 6 + 2;
|
||||
|
||||
printk(KERN_ERR "===== zfwCencSendMsg, bodySize: %d =====\n", bodySize);
|
||||
|
||||
for(ii = 0; ii < bodySize; ii++)
|
||||
{
|
||||
printk(KERN_ERR "%02x ", body[ii]);
|
||||
|
||||
if ((ii & 0xf) == 0xf)
|
||||
{
|
||||
printk(KERN_ERR "\n");
|
||||
}
|
||||
}
|
||||
|
||||
zfLnxCencSendMsg(macp->netlink_sk, (u8_t *)&cenc_info, cenc_info.datalen+4);
|
||||
|
||||
/* Close NETLINK socket */
|
||||
//sock_release(netlink_sk);
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif //ZM_ENABLE_CENC
|
||||
|
||||
u8_t zfwCencHandleBeaconProbrespon(zdev_t* dev, u8_t *pWIEc,
|
||||
u8_t *pPeerSSIDc, u8_t *pPeerAddrc)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8_t zfwGetPktEncExemptionActionType(zdev_t* dev, zbuf_t* buf)
|
||||
{
|
||||
return ZM_ENCRYPTION_EXEMPT_NO_EXEMPTION;
|
||||
}
|
||||
|
||||
void copyToIntTxBuffer(zdev_t* dev, zbuf_t* buf, u8_t* src,
|
||||
u16_t offset, u16_t length)
|
||||
{
|
||||
u16_t i;
|
||||
|
||||
for(i=0; i<length;i++)
|
||||
{
|
||||
//zmw_tx_buf_writeb(dev, buf, offset+i, src[i]);
|
||||
*(u8_t*)((u8_t*)buf->data+offset+i) = src[i];
|
||||
}
|
||||
}
|
||||
|
||||
u16_t zfwStaAddIeWpaRsn(zdev_t* dev, zbuf_t* buf, u16_t offset, u8_t frameType)
|
||||
{
|
||||
struct usbdrv_private *macp = dev->priv;
|
||||
//zm_msg1_mm(ZM_LV_0, "CWY - add wpaie content Length : ", macp->supIe[1]);
|
||||
if (macp->supIe[1] != 0)
|
||||
{
|
||||
copyToIntTxBuffer(dev, buf, macp->supIe, offset, macp->supIe[1]+2);
|
||||
//memcpy(buf->data[offset], macp->supIe, macp->supIe[1]+2);
|
||||
offset += (macp->supIe[1]+2);
|
||||
}
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
/* Leave an empty line below to remove warning message on some compiler */
|
195
drivers/staging/otus/wrap_usb.c
Normal file
195
drivers/staging/otus/wrap_usb.c
Normal file
|
@ -0,0 +1,195 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* */
|
||||
/* Module Name : wrap_usb.c */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module contains wrapper functions for USB management */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* Platform dependent. */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#include "oal_dt.h"
|
||||
#include "usbdrv.h"
|
||||
|
||||
#include <linux/netlink.h>
|
||||
|
||||
#if WIRELESS_EXT > 12
|
||||
#include <net/iw_handler.h>
|
||||
#endif
|
||||
|
||||
extern void zfLnxInitUsbTxQ(zdev_t* dev);
|
||||
extern void zfLnxInitUsbRxQ(zdev_t* dev);
|
||||
extern u32_t zfLnxSubmitRegInUrb(zdev_t *dev);
|
||||
u32_t zfLnxUsbOut(zdev_t* dev, u8_t *hdr, u16_t hdrlen, u8_t *snap, u16_t snapLen,
|
||||
u8_t *tail, u16_t tailLen, zbuf_t *buf, u16_t offset);
|
||||
u32_t zfLnxUsbWriteReg(zdev_t* dev, u32_t* cmd, u16_t cmdLen);
|
||||
|
||||
void zfwUsbRegisterCallBack(zdev_t* dev, struct zfCbUsbFuncTbl *zfUsbFunc) {
|
||||
struct usbdrv_private *macp = (struct usbdrv_private *)dev->priv;
|
||||
|
||||
macp->usbCbFunctions.zfcbUsbRecv = zfUsbFunc->zfcbUsbRecv;
|
||||
macp->usbCbFunctions.zfcbUsbRegIn = zfUsbFunc->zfcbUsbRegIn;
|
||||
macp->usbCbFunctions.zfcbUsbOutComplete = zfUsbFunc->zfcbUsbOutComplete;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
u32_t zfwUsbGetFreeTxQSize(zdev_t* dev)
|
||||
{
|
||||
struct usbdrv_private *macp = (struct usbdrv_private *)dev->priv;
|
||||
u32_t freeTxQSize;
|
||||
unsigned long irqFlag;
|
||||
//zmw_declare_for_critical_section();
|
||||
|
||||
//zmw_enter_critical_section(dev);
|
||||
spin_lock_irqsave(&(((struct usbdrv_private *)(dev->priv))->cs_lock), irqFlag);
|
||||
|
||||
freeTxQSize = ZM_MAX_TX_BUF_NUM - macp->TxBufCnt;
|
||||
|
||||
//zmw_leave_critical_section(dev);
|
||||
spin_unlock_irqrestore(&(((struct usbdrv_private *)(dev->priv))->cs_lock), irqFlag);
|
||||
|
||||
return freeTxQSize;
|
||||
}
|
||||
|
||||
u32_t zfwUsbGetMaxTxQSize(zdev_t* dev)
|
||||
{
|
||||
return ZM_MAX_TX_BUF_NUM;
|
||||
}
|
||||
|
||||
u32_t zfwUsbEnableIntEpt(zdev_t *dev, u8_t endpt)
|
||||
{
|
||||
/* Initialize USB TxQ */
|
||||
zfLnxInitUsbTxQ(dev);
|
||||
|
||||
/* Initialize USB RxQ */
|
||||
zfLnxInitUsbRxQ(dev);
|
||||
|
||||
/* Initialize USB Register In URB */
|
||||
//zfwUsbSubmitRegIn(dev);
|
||||
/* Initialize USB Register In URB */
|
||||
zfLnxSubmitRegInUrb(dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int zfwUsbEnableRxEpt(zdev_t* dev, u8_t endpt)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
u32_t zfwUsbSubmitControl(zdev_t* dev, u8_t req, u16_t value, u16_t index, void *data, u32_t size)
|
||||
{
|
||||
int result = 0;
|
||||
u32_t ret = 0;
|
||||
struct usbdrv_private *macp = (struct usbdrv_private *)dev->priv;
|
||||
u8_t* buf;
|
||||
|
||||
if (size > 0)
|
||||
{
|
||||
buf = kmalloc(size, GFP_KERNEL);
|
||||
memcpy(buf, (u8_t*)data, size);
|
||||
}
|
||||
else
|
||||
{
|
||||
buf = NULL;
|
||||
}
|
||||
|
||||
#if 0
|
||||
printk(KERN_ERR "req = 0x%02x\n", req);
|
||||
printk(KERN_ERR "value = 0x%04x\n", value);
|
||||
printk(KERN_ERR "index = 0x%04x\n", index);
|
||||
printk(KERN_ERR "data = 0x%lx\n", (u32_t) data);
|
||||
printk(KERN_ERR "size = %ld\n", size);
|
||||
#endif
|
||||
|
||||
result = usb_control_msg(macp->udev, usb_sndctrlpipe(macp->udev, 0),
|
||||
req, USB_DIR_OUT | 0x40, value, index, buf, size, HZ);
|
||||
|
||||
if (result < 0)
|
||||
{
|
||||
printk("zfwUsbSubmitControl() failed, result=0x%x\n", result);
|
||||
ret = 1;
|
||||
}
|
||||
kfree(buf);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void zfwUsbCmd(zdev_t* dev, u8_t endpt, u32_t* cmd, u16_t cmdLen)
|
||||
{
|
||||
struct usbdrv_private *macp = (struct usbdrv_private *)dev->priv;
|
||||
u32_t ret;
|
||||
|
||||
//MPUsbCommand(dev, endpt, cmd, cmdLen);
|
||||
ret = zfLnxUsbWriteReg(dev, cmd, cmdLen);
|
||||
|
||||
/* if zfLnxUsbWriteReg() return error, free and allocate urb, resend again */
|
||||
if (ret != 0)
|
||||
{
|
||||
usb_free_urb(macp->RegOutUrb);
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) /* tune me! */
|
||||
macp->RegOutUrb = usb_alloc_urb(0, GFP_ATOMIC);
|
||||
#else
|
||||
macp->RegOutUrb = usb_alloc_urb(0);
|
||||
#endif
|
||||
ret = zfLnxUsbWriteReg(dev, cmd, cmdLen);
|
||||
}
|
||||
}
|
||||
|
||||
u32_t zfwUsbSend(zdev_t* dev, u8_t endpt, u8_t *hdr, u16_t hdrlen, u8_t *snap, u16_t snapLen,
|
||||
u8_t *tail, u16_t tailLen, zbuf_t *buf, u16_t offset)
|
||||
{
|
||||
u32_t status;
|
||||
|
||||
#ifdef ZM_CONFIG_BIG_ENDIAN
|
||||
u32_t ii = 0;
|
||||
u16_t *pc = NULL;
|
||||
|
||||
pc = (u16_t *)hdr;
|
||||
for(ii=0; ii<(hdrlen>>1); ii++)
|
||||
{
|
||||
pc[ii] = cpu_to_le16(pc[ii]);
|
||||
}
|
||||
|
||||
pc = (u16_t *)snap;
|
||||
for(ii=0; ii<(snapLen>>1); ii++)
|
||||
{
|
||||
pc[ii] = cpu_to_le16(pc[ii]);
|
||||
}
|
||||
|
||||
pc = (u16_t *)tail;
|
||||
for(ii=0; ii<(tailLen>>1); ii++)
|
||||
{
|
||||
pc[ii] = cpu_to_le16(pc[ii]);
|
||||
}
|
||||
#endif
|
||||
|
||||
status = zfLnxUsbOut(dev, hdr, hdrlen, snap, snapLen, tail, tailLen, buf, offset);
|
||||
if ( status == 0 )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Leave an empty line below to remove warning message on some compiler */
|
1207
drivers/staging/otus/wwrap.c
Normal file
1207
drivers/staging/otus/wwrap.c
Normal file
File diff suppressed because it is too large
Load diff
116
drivers/staging/otus/zdcompat.h
Normal file
116
drivers/staging/otus/zdcompat.h
Normal file
|
@ -0,0 +1,116 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* */
|
||||
/* Module Name : zdcompat.h */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module contains function defintion for compatibility. */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* Platform dependent. */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#ifndef _ZDCOMPAT_H
|
||||
#define _ZDCOMPAT_H
|
||||
|
||||
#ifndef KERNEL_VERSION
|
||||
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
|
||||
#endif
|
||||
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
|
||||
#ifndef INIT_TQUEUE
|
||||
#define INIT_TQUEUE(_tq, _routine, _data) \
|
||||
do { \
|
||||
(_tq)->next = NULL; \
|
||||
(_tq)->sync = 0; \
|
||||
PREPARE_TQUEUE((_tq), (_routine), (_data)); \
|
||||
} while (0)
|
||||
#define PREPARE_TQUEUE(_tq, _routine, _data) \
|
||||
do { \
|
||||
(_tq)->routine = _routine; \
|
||||
(_tq)->data = _data; \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#ifndef INIT_WORK
|
||||
#define work_struct tq_struct
|
||||
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0))
|
||||
#define schedule_work(a) queue_task(a, &tq_scheduler)
|
||||
#else
|
||||
#define schedule_work(a) schedule_task(a)
|
||||
#endif
|
||||
|
||||
#define flush_scheduled_work flush_scheduled_tasks
|
||||
#define INIT_WORK(_wq, _routine, _data) INIT_TQUEUE(_wq, _routine, _data)
|
||||
#define PREPARE_WORK(_wq, _routine, _data) PREPARE_TQUEUE(_wq, _routine, _data)
|
||||
#endif
|
||||
#endif // < 2.5 kernel
|
||||
|
||||
|
||||
#ifndef DECLARE_TASKLET
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0))
|
||||
#define tasklet_schedule(a) queue_task(a, &tq_scheduler)
|
||||
#else
|
||||
#define tasklet_schedule(a) schedule_task(a)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,38))
|
||||
typedef struct device netdevice_t;
|
||||
#elif (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,4))
|
||||
typedef struct net_device netdevice_t;
|
||||
#else
|
||||
#undef netdevice_t
|
||||
typedef struct net_device netdevice_t;
|
||||
#endif
|
||||
|
||||
#ifdef WIRELESS_EXT
|
||||
#if (WIRELESS_EXT < 13)
|
||||
struct iw_request_info
|
||||
{
|
||||
__u16 cmd; /* Wireless Extension command */
|
||||
__u16 flags; /* More to come ;-) */
|
||||
};
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* linux < 2.5.69 */
|
||||
#ifndef IRQ_NONE
|
||||
typedef void irqreturn_t;
|
||||
#define IRQ_NONE
|
||||
#define IRQ_HANDLED
|
||||
#define IRQ_RETVAL(x)
|
||||
#endif
|
||||
|
||||
#ifndef in_atomic
|
||||
#define in_atomic() 0
|
||||
#endif
|
||||
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) // fixme
|
||||
#define URB_ASYNC_UNLINK USB_ASYNC_UNLINK
|
||||
#else
|
||||
#define USB_QUEUE_BULK 0
|
||||
#endif
|
||||
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0))
|
||||
#define free_netdev(x) kfree(x)
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
295
drivers/staging/otus/zdusb.c
Normal file
295
drivers/staging/otus/zdusb.c
Normal file
|
@ -0,0 +1,295 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* */
|
||||
/* Module Name : zdusb.c */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module contains plug and play handling for USB device driver*/
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* Platform dependent. */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#include <linux/version.h>
|
||||
#ifdef MODVERSIONS
|
||||
#include <linux/modversions.h>
|
||||
#endif
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/usb.h>
|
||||
|
||||
#include "usbdrv.h"
|
||||
#include "zdusb.h"
|
||||
|
||||
int zfLnxAllocAllUrbs(struct usbdrv_private *macp);
|
||||
void zfLnxFreeAllUrbs(struct usbdrv_private *macp);
|
||||
void zfLnxUnlinkAllUrbs(struct usbdrv_private *macp);
|
||||
|
||||
MODULE_AUTHOR("Atheros Communications");
|
||||
MODULE_DESCRIPTION("Atheros 802.11n Wireless LAN adapter");
|
||||
MODULE_LICENSE("Dual BSD/GPL");
|
||||
|
||||
static const char driver_name[] = "Otus";
|
||||
|
||||
/* table of devices that work with this driver */
|
||||
static struct usb_device_id zd1221_ids [] = {
|
||||
{ USB_DEVICE(VENDOR_ATHR, PRODUCT_AR9170) },
|
||||
{ USB_DEVICE(VENDOR_DLINK, PRODUCT_DWA160A) },
|
||||
{ USB_DEVICE(0x0846, 0x9010) },
|
||||
{ } /* Terminating entry */
|
||||
};
|
||||
|
||||
MODULE_DEVICE_TABLE(usb, zd1221_ids);
|
||||
|
||||
extern u8_t zfLnxInitSetup(struct net_device *dev, struct usbdrv_private *macp);
|
||||
extern int usbdrv_close(struct net_device *dev);
|
||||
extern u8_t zfLnxClearStructs(struct net_device *dev);
|
||||
extern int zfWdsClose(struct net_device *dev);
|
||||
extern int zfUnregisterWdsDev(struct net_device* parentDev, u16_t wdsId);
|
||||
extern int zfLnxVapClose(struct net_device *dev);
|
||||
extern int zfLnxUnregisterVapDev(struct net_device* parentDev, u16_t vapId);
|
||||
|
||||
/* WDS */
|
||||
extern struct zsWdsStruct wds[ZM_WDS_PORT_NUMBER];
|
||||
|
||||
/* VAP */
|
||||
extern struct zsVapStruct vap[ZM_VAP_PORT_NUMBER];
|
||||
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
|
||||
static void *zfLnxProbe(struct usb_device *dev, unsigned int ifnum,
|
||||
const struct usb_device_id *id)
|
||||
{
|
||||
struct usb_interface *interface = &dev->actconfig->interface[ifnum];
|
||||
#else
|
||||
static int zfLnxProbe(struct usb_interface *interface,
|
||||
const struct usb_device_id *id)
|
||||
{
|
||||
struct usb_device *dev = interface_to_usbdev(interface);
|
||||
#endif
|
||||
|
||||
struct net_device *net = NULL;
|
||||
struct usbdrv_private *macp = NULL;
|
||||
int vendor_id, product_id;
|
||||
int result = 0;
|
||||
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
|
||||
usb_get_dev(dev);
|
||||
#endif
|
||||
|
||||
vendor_id = dev->descriptor.idVendor;
|
||||
product_id = dev->descriptor.idProduct;
|
||||
|
||||
#ifdef HMAC_DEBUG
|
||||
printk(KERN_NOTICE "vendor_id = %04x\n", vendor_id);
|
||||
printk(KERN_NOTICE "product_id = %04x\n", product_id);
|
||||
|
||||
if (dev->speed == USB_SPEED_HIGH)
|
||||
printk(KERN_NOTICE "USB 2.0 Host\n");
|
||||
else
|
||||
printk(KERN_NOTICE "USB 1.1 Host\n");
|
||||
#endif
|
||||
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
|
||||
if (usb_set_configuration(dev, dev->config[0].bConfigurationValue))
|
||||
{
|
||||
printk(KERN_ERR "usb_set_configuration() failed\n");
|
||||
result = -EIO;
|
||||
goto fail;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!(macp = kmalloc(sizeof(struct usbdrv_private), GFP_KERNEL)))
|
||||
{
|
||||
printk(KERN_ERR "out of memory allocating device structure\n");
|
||||
result = -ENOMEM;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
/* Zero the memory */
|
||||
memset(macp, 0, sizeof(struct usbdrv_private));
|
||||
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
|
||||
usb_inc_dev_use(dev);
|
||||
#endif
|
||||
|
||||
net = alloc_etherdev(0);
|
||||
|
||||
if (net == NULL)
|
||||
{
|
||||
printk(KERN_ERR "zfLnxProbe: Not able to alloc etherdev struct\n");
|
||||
result = -ENOMEM;
|
||||
goto fail1;
|
||||
}
|
||||
|
||||
strcpy(net->name, "ath%d");
|
||||
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24))
|
||||
SET_MODULE_OWNER(net);
|
||||
#endif
|
||||
|
||||
net->priv = macp; //kernel 2.6
|
||||
macp->udev = dev;
|
||||
macp->device = net;
|
||||
|
||||
/* set up the endpoint information */
|
||||
/* check out the endpoints */
|
||||
macp->interface = interface;
|
||||
|
||||
//init_waitqueue_head(&macp->regSet_wait);
|
||||
//init_waitqueue_head(&macp->iorwRsp_wait);
|
||||
//init_waitqueue_head(&macp->term_wait);
|
||||
|
||||
if (!zfLnxAllocAllUrbs(macp))
|
||||
{
|
||||
result = -ENOMEM;
|
||||
goto fail2;
|
||||
}
|
||||
|
||||
if (!zfLnxInitSetup(net, macp))
|
||||
{
|
||||
result = -EIO;
|
||||
goto fail3;
|
||||
}
|
||||
else
|
||||
{
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
|
||||
usb_set_intfdata(interface, macp);
|
||||
SET_NETDEV_DEV(net, &interface->dev);
|
||||
#endif
|
||||
|
||||
if (register_netdev(net) != 0)
|
||||
{
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
|
||||
usb_set_intfdata(interface, NULL);
|
||||
#endif
|
||||
goto fail3;
|
||||
}
|
||||
}
|
||||
|
||||
netif_carrier_off(net);
|
||||
goto done;
|
||||
|
||||
fail3:
|
||||
zfLnxFreeAllUrbs(macp);
|
||||
fail2:
|
||||
free_netdev(net); //kernel 2.6
|
||||
fail1:
|
||||
kfree(macp);
|
||||
|
||||
fail:
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
|
||||
usb_put_dev(dev);
|
||||
#endif
|
||||
macp = NULL;
|
||||
|
||||
done:
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
|
||||
return macp;
|
||||
#else
|
||||
return result;
|
||||
#endif
|
||||
}
|
||||
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
|
||||
static void zfLnxDisconnect(struct usb_device *dev, void *ptr)
|
||||
#else
|
||||
static void zfLnxDisconnect(struct usb_interface *interface)
|
||||
#endif
|
||||
{
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
|
||||
struct usbdrv_private *macp = (struct usbdrv_private *) usb_get_intfdata(interface);
|
||||
#else
|
||||
struct usbdrv_private *macp = (struct usbdrv_private *)ptr;
|
||||
#endif
|
||||
|
||||
printk(KERN_DEBUG "zfLnxDisconnect\n");
|
||||
|
||||
if (!macp)
|
||||
{
|
||||
printk(KERN_ERR "unregistering non-existant device\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (macp->driver_isolated)
|
||||
{
|
||||
if (macp->device->flags & IFF_UP)
|
||||
usbdrv_close(macp->device);
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* Close WDS */
|
||||
//zfWdsClose(wds[0].dev);
|
||||
/* Unregister WDS */
|
||||
//zfUnregisterWdsDev(macp->device, 0);
|
||||
|
||||
/* Close VAP */
|
||||
zfLnxVapClose(vap[0].dev);
|
||||
/* Unregister VAP */
|
||||
zfLnxUnregisterVapDev(macp->device, 0);
|
||||
#endif
|
||||
|
||||
zfLnxClearStructs(macp->device);
|
||||
|
||||
unregister_netdev(macp->device);
|
||||
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
|
||||
usb_dec_dev_use(dev);
|
||||
#else
|
||||
usb_put_dev(interface_to_usbdev(interface));
|
||||
#endif
|
||||
|
||||
//printk(KERN_ERR "3. zfLnxUnlinkAllUrbs\n");
|
||||
//zfLnxUnlinkAllUrbs(macp);
|
||||
|
||||
/* Free network interface */
|
||||
free_netdev(macp->device);
|
||||
|
||||
zfLnxFreeAllUrbs(macp);
|
||||
//zfLnxClearStructs(macp->device);
|
||||
kfree(macp);
|
||||
macp = NULL;
|
||||
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
|
||||
usb_set_intfdata(interface, NULL);
|
||||
#endif
|
||||
}
|
||||
|
||||
static struct usb_driver zd1221_driver = {
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,15))
|
||||
.owner = THIS_MODULE,
|
||||
#endif
|
||||
#endif
|
||||
.name = driver_name,
|
||||
.probe = zfLnxProbe,
|
||||
.disconnect = zfLnxDisconnect,
|
||||
.id_table = zd1221_ids,
|
||||
};
|
||||
|
||||
int __init zfLnxIinit(void)
|
||||
{
|
||||
printk(KERN_NOTICE "%s - version %s\n", DRIVER_NAME, VERSIONID);
|
||||
return usb_register(&zd1221_driver);
|
||||
}
|
||||
|
||||
void __exit zfLnxExit(void)
|
||||
{
|
||||
usb_deregister(&zd1221_driver);
|
||||
}
|
||||
|
||||
module_init(zfLnxIinit);
|
||||
module_exit(zfLnxExit);
|
43
drivers/staging/otus/zdusb.h
Normal file
43
drivers/staging/otus/zdusb.h
Normal file
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
* Copyright (c) 2007-2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/* */
|
||||
/* Module Name : zdusb.h */
|
||||
/* */
|
||||
/* Abstract */
|
||||
/* This module contains definitions for USB device driver */
|
||||
/* */
|
||||
/* NOTES */
|
||||
/* Platform dependent. */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#ifndef _ZDUSB_H
|
||||
#define _ZDUSB_H
|
||||
|
||||
#ifndef DRIVER_NAME
|
||||
#define DRIVER_NAME "arusb"
|
||||
#endif
|
||||
|
||||
#define VERSIONID "0.0.0.999"
|
||||
|
||||
/* Define these values to match your device */
|
||||
#define VENDOR_ATHR 0x0CF3 //Atheros
|
||||
#define PRODUCT_AR9170 0x9170
|
||||
|
||||
#define VENDOR_DLINK 0x07D1 //Dlink
|
||||
#define PRODUCT_DWA160A 0x3C10
|
||||
|
||||
#endif
|
Loading…
Reference in a new issue