void ar5416Set11nTxDesc_20(struct ath_hal *ah, struct ath_tx_desc *ds, a_uint32_t pktLen, HAL_PKT_TYPE type, a_uint32_t txPower, a_uint32_t keyIx, HAL_KEY_TYPE keyType, a_uint32_t flags) { struct ar5416_desc *ads = AR5416DESC(ds); HALASSERT(isValidPktType(type)); HALASSERT(isValidKeyType(keyType)); if (txPower > 63) txPower = 63; ads->ds_ctl0 = (pktLen & AR_FrameLen) | (flags & HAL_TXDESC_VMF ? AR_VirtMoreFrag : 0) | SM(txPower, AR_XmitPower) | (flags & HAL_TXDESC_RTSENA ? AR_RTSEnable : 0) | (flags & HAL_TXDESC_VEOL ? AR_VEOL : 0) | (flags & HAL_TXDESC_CLRDMASK ? AR_ClrDestMask : 0) | (flags & HAL_TXDESC_INTREQ ? AR_TxIntrReq : 0) | (keyIx != HAL_TXKEYIX_INVALID ? AR_DestIdxValid : 0) | (flags & HAL_TXDESC_CTSENA ? AR_CTSEnable : 0); ads->ds_ctl1 = (keyIx != HAL_TXKEYIX_INVALID ? SM(keyIx, AR_DestIdx) : 0) | SM(type, AR_FrameType) | (flags & HAL_TXDESC_NOACK ? AR_NoAck : 0) | (flags & HAL_TXDESC_EXT_ONLY ? AR_ExtOnly : 0) | (flags & HAL_TXDESC_EXT_AND_CTL ? AR_ExtAndCtl : 0); ads->ds_ctl6 = SM(keyType, AR_EncrType); }
void ar5416Set11nTxDesc(struct ath_hal *ah, void *ds, u_int pktLen, HAL_PKT_TYPE type, u_int txPower, u_int key_ix, HAL_KEY_TYPE keyType, u_int flags) { struct ar5416_desc *ads = AR5416DESC(ds); u_int32_t ctl0, ctl1, ctl6; HALASSERT(isValidPktType(type)); HALASSERT(isValidKeyType(keyType)); /* * If descriptor-based tpc, tx power is controlled by * ar5416Set11nRateScenario(). * If not, what you put in the descriptor is ignored anyway. */ txPower = 0; ctl0 = (pktLen & AR_FrameLen) | (flags & HAL_TXDESC_VMF ? AR_VirtMoreFrag : 0) | SM(txPower, AR_XmitPower0) | (flags & HAL_TXDESC_VEOL ? AR_VEOL : 0) | (flags & HAL_TXDESC_CLRDMASK ? AR_ClrDestMask : 0) | (flags & HAL_TXDESC_INTREQ ? AR_TxIntrReq : 0) | (key_ix != HAL_TXKEYIX_INVALID ? AR_DestIdxValid : 0) | (flags & HAL_TXDESC_LOWRXCHAIN ? AR_LowRxChain : 0); ctl1 = (key_ix != HAL_TXKEYIX_INVALID ? SM(key_ix, AR_DestIdx) : 0) | SM(type, AR_FrameType) | (flags & HAL_TXDESC_NOACK ? AR_NoAck : 0) | (flags & HAL_TXDESC_EXT_ONLY ? AR_ExtOnly : 0) | (flags & HAL_TXDESC_EXT_AND_CTL ? AR_ExtAndCtl : 0); ctl6 = SM(keyType, AR_EncrType); ads->ds_ctl0 = ctl0; ads->ds_ctl1 = ctl1; ads->ds_ctl6 = ctl6; /* For Kite set the tx antenna selection */ if (AR_SREV_KITE(ah) || AR_SREV_K2(ah)) { /* FIXME: For now set the tx antenna to always 0, * till tx selection diverisity is implementated */ ads->ds_ctl8 = 0; ads->ds_ctl9 = 0; ads->ds_ctl10 = 0; ads->ds_ctl11 = 0; } }