#ifndef EXTERNAL_CONDITIONS_H_ #define EXTERNAL_CONDITIONS_H_ /* Definitions for the External Conditions */ #define EXTCOND(reg, bit) ((bit) | ((reg) << 4)) /* Wrap a condition in the EOI() wrapper to EOI it. * Example: jext EOI(COND_RADAR), jump_target */ #define EOI(ext_condition) ((ext_condition) | 0x80) /* Use extcond_eoi_only() to EOI a condition without jumping. * Example: extcond_eoi_only(COND_RADAR) */ #define extcond_eoi_only(ext_condition) \ jext EOI(ext_condition), __next_insn+; \ __next_insn:; /* RX condition register */ #define CONDREG_RX 0 #define COND_RX_IFS1 EXTCOND(CONDREG_RX, 1) /* FIXME: Inter Frame Space related */ #define COND_RX_IFS2 EXTCOND(CONDREG_RX, 2) /* FIXME: Inter Frame Space related */ #define COND_RX_FCS_GOOD EXTCOND(CONDREG_RX, 3) /* RX FCS good */ #define COND_RX_BADPLCP EXTCOND(CONDREG_RX, 5) /* Corrupt PLCP received */ #define COND_RX_COMPLETE EXTCOND(CONDREG_RX, 6) /* RX complete */ #define COND_RX_WME8 EXTCOND(CONDREG_RX, 8) /* FIXME: Maybe WME related */ #define COND_RX_ATIMWINEND EXTCOND(CONDREG_RX, 9) /* FIXME: ATIM window end? */ #define COND_RX_CRYPTBUSY EXTCOND(CONDREG_RX, 10) /* RX crypto engine busy */ #define COND_RX_FIFOBUSY EXTCOND(CONDREG_RX, 11) /* RX FIFO operating */ #define COND_RX_FIFOFULL EXTCOND(CONDREG_RX, 13) /* RX FIFO full */ #define COND_RX_PLCP EXTCOND(CONDREG_RX, 14) /* We received a valid PLCP header */ /* RXE/MAC match condition register (core rev < 5) */ #define CONDREG_RXE 1 /* TX condition register */ #define CONDREG_TX 2 #define COND_TX_NOW EXTCOND(CONDREG_TX, 0) /* TX should be done now */ #define COND_TX_POWER EXTCOND(CONDREG_TX, 1) /* FIXME: TX power related */ #define COND_TX_DONE EXTCOND(CONDREG_TX, 2) /* The PHY has finished transmitting all bits */ #define COND_TX_PMQ EXTCOND(CONDREG_TX, 3) /* FIXME: PMQ related? */ #define COND_MACEN EXTCOND(CONDREG_TX, 4) /* MAC enabled */ #define COND_TX_NAV EXTCOND(CONDREG_TX, 9) /* FIXME: NAV/slot update required? */ #define COND_TX_UNDERFLOW EXTCOND(CONDREG_TX, 11) /* TX underflow */ #define COND_TX_TBTTEXPIRE EXTCOND(CONDREG_TX, 12) /* FIXME: TBTT timer expired? */ #define COND_TX_PHYERR EXTCOND(CONDREG_TX, 13) /* Check for PHY TX errors needed */ #define COND_TX_FLUSH EXTCOND(CONDREG_TX, 14) /* TX flush requested */ #define COND_TX_BUSY EXTCOND(CONDREG_TX, 15) /* TX engine busy */ /* PHY condition register */ #define CONDREG_PHY 3 #define COND_PHY0 EXTCOND(CONDREG_PHY, 0) /* FIXME: Unknown meaning */ #define COND_PHY1 EXTCOND(CONDREG_PHY, 1) /* FIXME: Unknown meaning */ #define COND_RADAR EXTCOND(CONDREG_PHY, 2) /* Radar detected */ #define COND_PHY6 EXTCOND(CONDREG_PHY, 6) /* FIXME: Unknown meaning */ /* SPR_BRC condition register */ #define CONDREG_4 4 #define COND_NEED_BEACON EXTCOND(CONDREG_4, 0) /* Current transmission should TX a beacon */ #define COND_NEED_RESPONSEFR EXTCOND(CONDREG_4, 1) /* Transmission of a response frame is needed (ACK, CTS). */ #define COND_NEED_PROBE_RESP EXTCOND(CONDREG_4, 2) /* Current transmission should TX a probe response */ #define COND_CONTENTION_PARAM_MODIFIED EXTCOND(CONDREG_4, 3) /* Contention parameters has been modified */ #define COND_MORE_FRAGMENT EXTCOND(CONDREG_4, 4) /* Current transmission has more than one fragment */ #define COND_FRAME_BURST EXTCOND(CONDREG_4, 5) /* Use frame burst */ #define COND_REC_IN_PROGRESS EXTCOND(CONDREG_4, 6) /* The rx has not been completed yet */ #define COND_FRAME_NEED_ACK EXTCOND(CONDREG_4, 7) /* The frame need to be acknowledged */ #define COND_TX_ERROR EXTCOND(CONDREG_4, 8) /* Set when something goes wrong on transmission */ #define COND_RX_ERROR EXTCOND(CONDREG_4, 9) /* Set when something goes wrong on reception */ #define COND_TX_MULTICAST_FRAME EXTCOND(CONDREG_4, 10) /* Current transmission should TX a multicast frame */ #define COND_NEED_RTS EXTCOND(CONDREG_4, 11) /* Transmission of an RTS is needed */ #define COND_PROBE_RESP_LOADED EXTCOND(CONDREG_4, 12) /* Probe response was loaded into serializer */ /* PSM condition register */ #define CONDREG_PSM 5 #define COND_PSM(bit) EXTCOND(CONDREG_PSM, bit) /* RCM condition register */ #define CONDREG_RCM 6 #define COND_RX_RAMATCH EXTCOND(CONDREG_RCM, 0) /* RX RA match */ #define COND_RX_BSSMATCH EXTCOND(CONDREG_RCM, 6) /* RX BSS match */ /* Condition register 7 */ #define CONDREG_7 7 #define COND_TRUE EXTCOND(CONDREG_7, 15) /* Always true */ #endif /* EXTERNAL_CONDITIONS_H_ */ // vim: syntax=b43 ts=8