txdma分析.docx

上传人:b****6 文档编号:4776611 上传时间:2022-12-08 格式:DOCX 页数:18 大小:29.04KB
下载 相关 举报
txdma分析.docx_第1页
第1页 / 共18页
txdma分析.docx_第2页
第2页 / 共18页
txdma分析.docx_第3页
第3页 / 共18页
txdma分析.docx_第4页
第4页 / 共18页
txdma分析.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

txdma分析.docx

《txdma分析.docx》由会员分享,可在线阅读,更多相关《txdma分析.docx(18页珍藏版)》请在冰豆网上搜索。

txdma分析.docx

txdma分析

(一)主要数据结构

structath_softc{

structath_hal*sc_ah;/*AtherosHAL*/

structath_descdmasc_txdma;/*TXdescriptors*/

ath_bufheadsc_txbuf;/*transmitbuffer*/

structath_descdmasc_txsdma;

structath_buf*sc_rxbufptr;

structath_rx_status*sc_rxsptr;

u_intsc_txqsetup;/*h/wqueuessetup*/

structath_txqsc_txq[HAL_NUM_TX_QUEUES];

HAL_TXQ_INFOsc_beacon_qi;/*adhoconly:

beaconqueueparameters*/

u_int32_tsc_txdesclen;/*Txdescriptorlength*/

structath_descdmasc_bdma;/*beacondescriptors*/

ath_bufheadsc_bbuf;/*beaconbuffers*/

u_intsc_bhalq;/*HALqforoutgoingbeacons*/

}

/*ReceiveFIFOmanagement*/

structath_rx_edma{

wbuf_t*rxfifo;

u_int8_trxfifoheadindex;

u_int8_trxfifotailindex;

u_int8_trxfifodepth;/*countofRXBPspushedintofifo*/

u_int32_trxfifohwsize;/*RxFIFOsizefromHAL*/

ath_bufheadrxqueue;

spinlock_trxqlock;

};

/*TransmitControlDescriptor*/

structar9300_txc{

u_int32_tds_info;/*descriptorinformation*/

u_int32_tds_link;/*linkpointer*/

u_int32_tds_data0;/*datapointerto1stbuffer*/

u_int32_tds_ctl3;/*DMAcontrol3*/

u_int32_tds_data1;/*datapointerto2ndbuffer*/

u_int32_tds_ctl5;/*DMAcontrol5*/

u_int32_tds_data2;/*datapointerto3rdbuffer*/

u_int32_tds_ctl7;/*DMAcontrol7*/

u_int32_tds_data3;/*datapointerto4thbuffer*/

u_int32_tds_ctl9;/*DMAcontrol9*/

u_int32_tds_ctl10;/*DMAcontrol10*/

u_int32_tds_ctl11;/*DMAcontrol11*/

u_int32_tds_ctl12;/*DMAcontrol12*/

u_int32_tds_ctl13;/*DMAcontrol13*/

u_int32_tds_ctl14;/*DMAcontrol14*/

u_int32_tds_ctl15;/*DMAcontrol15*/

u_int32_tds_ctl16;/*DMAcontrol16*/

u_int32_tds_ctl17;/*DMAcontrol17*/

u_int32_tds_ctl18;/*DMAcontrol18*/

u_int32_tds_ctl19;/*DMAcontrol19*/

u_int32_tds_ctl20;/*DMAcontrol20*/

u_int32_tds_ctl21;/*DMAcontrol21*/

u_int32_tds_ctl22;/*DMAcontrol22*/

u_int32_tds_pad[9];/*padtocacheline(128bytes/32dwords)*/

};

structath_desc{

/*

*Thefollowingdefinitionsarepasseddirectly

*thehardwareandmanagedbytheHAL.Drivers

*shouldnottouchthoseelementsmarkedopaque.

*/

u_int32_tds_link;/*physaddressofnextdescriptor*/

u_int32_tds_data;/*physaddressofdatabuffer*/

u_int32_tds_ctl0;/*opaqueDMAcontrol0*/

u_int32_tds_ctl1;/*opaqueDMAcontrol1*/

u_int32_tds_hw[20];/*opaqueh/wregion*/

/*

*Theremainingdefinitionsaremanagedbysoftware;

*thesearevalidonlyaftertherx/txprocessdescriptor

*methodsreturnanon-EINPROGRESScode.

*/

union{

structath_tx_statustx;/*xmitstatus*/

structath_rx_statusrx;/*recvstatus*/

void*stats;

}ds_us;

void*ds_vdata;/*virtualaddrofdatabuffer*/

}__packed;

structath_txq{

u_intaxq_qnum;/*hardwareqnumber*/

u_int32_t*axq_link;/*linkptrinlastTXdesc*/

TAILQ_HEAD(,ath_buf)axq_q;/*transmitqueue*/

spinlock_taxq_lock;/*lockonqandlink*/

unsignedlongaxq_lockflags;/*intrstatewhenmustcli*/

u_intaxq_depth;/*queuedepth*/

#ifATH_TX_BUF_FLOW_CNTL

u_intaxq_minfree;/*Numberoffreetx_bufsrequiredincommonbufpool*/

u_intaxq_num_buf_used;/*Numberofusedtx_bufforthisq*/

#endif

u_int8_taxq_aggr_depth;/*aggregatesqueued*/

u_int32_taxq_totalqueued;/*totaleverqueued*/

u_intaxq_intrcnt;/*counttodetermineifdescriptor

*shouldgenerateintonthistxq.

*/

/*

*StateforpatchingupCTSwhenbursting.

*/

structath_buf*axq_linkbuf;/*virtualaddroflastbuffer*/

structath_desc*axq_lastdsWithCTS;/*firstdescofthelastdescriptor

*thatcontainsCTS

*/

structath_desc*axq_gatingds;/*finaldescofthegatingdesc

*thatdetermineswhetherlastdsWithCTShas

*beenDMA'edornot

*/

/*

*Stagingqueueforframesawaitingafast-framepairing.

*/

TAILQ_HEAD(axq_headtype,ath_buf)axq_stageq;

TAILQ_HEAD(,ath_atx_ac)axq_acq;

#ifdefATH_SUPERG_COMP

/*scratchcompressionbuffer*/

char*axq_compbuf;/*scratchcompbuffer*/

dma_addr_taxq_compbufp;/*scratchcompbuffer(phys)*/

u_intaxq_compbufsz;/*scratchcompbuffersize*/

OS_DMA_MEM_CONTEXT(axq_dmacontext)

#endif

#ifdefATH_SWRETRY

u_intaxq_destmask:

1;/*Destinationmaskforthisqueue*/

#endif

#ifATH_TX_POLL

intaxq_lastq_tick;/*tickswhenlastpacketqueued*/

#endif

TAILQ_HEAD(,ath_buf)axq_fifo[HAL_TXFIFO_DEPTH];

u_int8_taxq_headindex;

u_int8_taxq_tailindex;

u_intirq_shared:

1;/*Thisqueueissharedbytheirq_handler()*/

/*BEGIN:

addedbySGR_TEAM2011/11/29for:

tx完成中断丢失*/

#ifATH_HW_TXQ_STUCK_WAR

u_int8_ttx_done_stuck_count;

#endif

/*END:

addedbySGR_TEAM2011/11/29for:

tx完成中断丢失*/

};

/*

*peraccess-categoryaggregatetxstateforadestination*/

typedefstructath_atx_ac{

intsched;/*dest-acisscheduled*/

intqnum;/*H/WqueuenumberassociatedwiththisAC*/

inthwqcnt;/*countofpktsonhwqueue*/

#ifATH_SUPPORT_VOWEXT

uint16_tmax_sch_penality;/*MaxScheudingpenalityfothisac*/

uint16_tsch_penality_cnt;/*Currentpendingschedulingpenalitycount*/

#endif

TAILQ_ENTRY(ath_atx_ac)ac_qelem;/*round-robintxqentry*/

TAILQ_HEAD(,ath_atx_tid)tid_q;/*queueofTIDswithbuffers*/

intfiltered;/*acisfiltered*/

TAILQ_ENTRY(ath_atx_ac)fltr_qelem;/*handlehwqfiltering*/

TAILQ_HEAD(,ath_atx_tid)fltr_q;/*queueofTIDsbeingfiltered*/

}ath_atx_ac_t;

/*

*perTIDaggregatetxstateforadestination

*/

typedefstructath_atx_tid{

inttidno;/*TIDnumber*/

u_int16_tseq_start;/*startingseqofBAwindow*/

u_int16_tseq_next;/*nextseqtobeused*/

u_int16_tbaw_size;/*BAwindowsize*/

#ifdefATH_HTC_TX_SCHED

u_int8_ttid_buf_cnt;

u_int8_tpad0;

#endif

intbaw_head;/*firstun-ackedtxbuffer*/

intbaw_tail;/*nextunusedtxbufferslot*/

u_int16_tsched:

1,/*TIDisscheduled*/

filtered:

1,/*TIDhasfilteredpkts*/

min_depth:

2;/*numpktsthatcanbequeuedtoh/w*/

intpaused;/*TIDispaused*/

intcleanup_inprogress;/*thisTID'saggrbeingtorndown*/

TAILQ_HEAD(ath_tid_bq,ath_buf)buf_q;/*pendingbuffers*/

TAILQ_ENTRY(ath_atx_tid)tid_qelem;/*round-robintidentry*/

TAILQ_HEAD(,ath_buf)fltr_q;/*filteredbuffers*/

TAILQ_ENTRY(ath_atx_tid)fltr_qelem;/*handlehwqfiltering*/

structath_node*an;/*parentnodestructure*/

structath_atx_ac*ac;/*parentaccesscategory*/

u_int32_ttx_buf_bitmap[TX_BUF_BITMAP_WORDS];/*activetxframes*/

/*

*ADDBAstate

*/

u_int32_taddba_exchangecomplete:

1,

addba_amsdusupported:

1;

int32_taddba_exchangeinprogress;

structath_timeraddba_requesttimer;

intaddba_exchangeattempts;

u_int16_taddba_exchangestatuscode;

#ifdefVOW_TIDSCHED

intqw;

TAILQ_ENTRY(ath_atx_tid)wrr_tid_qelem;/*round-robintidentry*/

#endif

}ath_atx_tid_t;

structath_buf{

TAILQ_ENTRY(ath_buf)bf_list;

structath_buf*bf_lastbf;/*lastbufofthisunit(aframeoranaggregate)*/

structath_buf*bf_lastfrm;/*lastbufofthisframe*/

structath_buf*bf_next;/*nextsubframeintheaggregate*/

structath_buf*bf_rifslast;/*lastbufforRIFSburst*/

void*bf_mpdu;/*enclosingframestructure*/

void*bf_vdata;/*virtualaddrofdatabuffer*/

void*bf_node;/*pointertothenode*/

void*bf_desc;/*virtualaddrofdesc*/

dma_addr_tbf_daddr;/*physicaladdrofdesc*/

dma_addr_tbf_buf_addr[ATH_MAX_MAPS];/*physicaladdrofdatabuffer*/

u_int32_tbf_buf_len[ATH_MAX_MAPS];/*lenofdata*/

u_int32_tbf_status;

u_int32_tbf_flags;/*txdescriptorflags*/

#ifATH_SUPPORT_IQUE&&ATH_SUPPORT_IQUE_EXT

u_int32_tbf_txduration;/*Txdurationofthisbuf*/

#endif

u_int16_tbf_avail_buf;

u_int16_tbf_reftxpower;/*referencetxpower*/

structath_buf_statebf_state;/*bufferstate*/

OS_DMA_MEM_CONTEXT(bf_dmacontext)/*OSSpecificDMAcontext*/

#if1//BR_RATECTRL_STAT_SUPPORT

intbf_rate_set_type;//yangzhicong2012-10-06APbridge

#endif

};

structath_buf_state{

intbfs_nframes;/*#framesinaggregate*/

u_int16_tbfs_al;/*lengthofaggregate*/

u_int16_tbfs_frmlen;/*lengthofframe*/

intbfs_seqno;/*sequencenumber*/

intbfs_tidno;/*tidofthisframe*/

intbfs_retries;/*currentretries*/

structath_rc_seriesbfs_rcs[4];/*rateseries*/

intbfs_useminrate:

1;/*useminrate*/

intbfs_ismcast:

1;/*ismcastpacket*/

intbfs_isdata:

1;/*isadataframe/aggregate*/

intbfs_isaggr:

1;/*isanaggregate*/

intbfs_isampdu:

1;/*isana-mpdu,aggregateornot*/

intbfs_ht:

1;/*isanHTframe*/

intbfs_isretried:

1;/*isretried*/

intbfs_isxretried:

1;/*isexcessiveretried*/

intbfs_shpreamble:

1;/*isshortpreamble*/

intbfs_isbar:

1;/*isaBAR*/

intbfs_ispspoll:

1;/*isaPS-Poll*/

intbfs_aggrburst:

1;/*isaaggrburst*/

intbfs_calcairtime:

1;/*requestsairtimebecalculatedwhensetfortxframe*/

#ifdefATH_SUPPORT_UAPSD

intbfs_qosnulleosp:

1;/*isQoSnullEOSPframe*/

#endif

intbfs_ispaprd:

1;/*isPAPRDframe*/

intbfs_isswaborted:

1;/*istheframemarkedasswaborted*/

#ifATH_SUPPORT_CFEND

intbfs_iscfend:

1;/*isQoSnullEOSPframe*/

#endif

#ifdefATH_SWRETRY

intbfs_isswretry:

1;/*istheframemarkedforswretry*/

intbfs_swretries;/*numberofswretriesmade*/

intbfs_totaltries;/*totaltriesincludinghwretries*/

#endif

intbfs_qnum;/*h/wqueuenumber*/

intbfs_rifsburst_elem;/*RIFSburst/bar*/

intbfs_nrifsubframes;/*#ofelementsinburst*/

HAL_KEY_TYPEbfs_keytype;/*keytypeusetoencryptthisframe*/

u_int8_tbfs_txbfstatus;/*forTxBF,txbfstatusfromTXS*/

};

structath_rc_series{

u_int

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 中国风

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1