/*+ * * Description: * This routine return max support rate of IES * * Parameters: * In: * pSupportRateIEs * pExtSupportRateIEs * * Out: * * Return Value: max support rate * -*/ BYTE VNTWIFIbyGetMaxSupportRate ( IN PWLAN_IE_SUPP_RATES pSupportRateIEs, IN PWLAN_IE_SUPP_RATES pExtSupportRateIEs ) { BYTE byMaxSupportRate = RATE_1M; BYTE bySupportRate = RATE_1M; UINT ii = 0; if (pSupportRateIEs) { for (ii = 0; ii < pSupportRateIEs->len; ii++) { bySupportRate = DATARATEbyGetRateIdx(pSupportRateIEs->abyRates[ii]); if (bySupportRate > byMaxSupportRate) { byMaxSupportRate = bySupportRate; } } } if (pExtSupportRateIEs) { for (ii = 0; ii < pExtSupportRateIEs->len; ii++) { bySupportRate = DATARATEbyGetRateIdx(pExtSupportRateIEs->abyRates[ii]); if (bySupportRate > byMaxSupportRate) { byMaxSupportRate = bySupportRate; } } } return byMaxSupportRate; }
/*+ * * Description: * This routine return max support rate of IES * * Parameters: * In: * pSupportRateIEs * pExtSupportRateIEs * * Out: * * Return Value: max support rate * -*/ unsigned char VNTWIFIbyGetMaxSupportRate ( PWLAN_IE_SUPP_RATES pSupportRateIEs, PWLAN_IE_SUPP_RATES pExtSupportRateIEs ) { unsigned char byMaxSupportRate = RATE_1M; unsigned char bySupportRate = RATE_1M; unsigned int ii = 0; if (pSupportRateIEs) { for (ii = 0; ii < pSupportRateIEs->len; ii++) { bySupportRate = DATARATEbyGetRateIdx(pSupportRateIEs->abyRates[ii]); if (bySupportRate > byMaxSupportRate) { byMaxSupportRate = bySupportRate; } } } if (pExtSupportRateIEs) { for (ii = 0; ii < pExtSupportRateIEs->len; ii++) { bySupportRate = DATARATEbyGetRateIdx(pExtSupportRateIEs->abyRates[ii]); if (bySupportRate > byMaxSupportRate) { byMaxSupportRate = bySupportRate; } } } return byMaxSupportRate; }
/*+ * * Description: * This routine return data rate of ACK packtet * * Parameters: * In: * byRxDataRate * pSupportRateIEs * pExtSupportRateIEs * * Out: * * Return Value: max support rate * -*/ BYTE VNTWIFIbyGetACKTxRate ( IN BYTE byRxDataRate, IN PWLAN_IE_SUPP_RATES pSupportRateIEs, IN PWLAN_IE_SUPP_RATES pExtSupportRateIEs ) { BYTE byMaxAckRate; BYTE byBasicRate; UINT ii; if (byRxDataRate <= RATE_11M) { byMaxAckRate = RATE_1M; } else { // 24M is mandatory for 802.11a and 802.11g byMaxAckRate = RATE_24M; } if (pSupportRateIEs) { for (ii = 0; ii < pSupportRateIEs->len; ii++) { if (pSupportRateIEs->abyRates[ii] & 0x80) { byBasicRate = DATARATEbyGetRateIdx(pSupportRateIEs->abyRates[ii]); if ((byBasicRate <= byRxDataRate) && (byBasicRate > byMaxAckRate)) { byMaxAckRate = byBasicRate; } } } } if (pExtSupportRateIEs) { for (ii = 0; ii < pExtSupportRateIEs->len; ii++) { if (pExtSupportRateIEs->abyRates[ii] & 0x80) { byBasicRate = DATARATEbyGetRateIdx(pExtSupportRateIEs->abyRates[ii]); if ((byBasicRate <= byRxDataRate) && (byBasicRate > byMaxAckRate)) { byMaxAckRate = byBasicRate; } } } } return byMaxAckRate; }