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