Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/iwm/if_iwm_mac_ctxt.c
Show First 20 Lines • Show All 162 Lines • ▼ Show 20 Lines | |||||
const uint8_t iwm_mvm_ac_to_tx_fifo[] = { | const uint8_t iwm_mvm_ac_to_tx_fifo[] = { | ||||
IWM_MVM_TX_FIFO_BE, | IWM_MVM_TX_FIFO_BE, | ||||
IWM_MVM_TX_FIFO_BK, | IWM_MVM_TX_FIFO_BK, | ||||
IWM_MVM_TX_FIFO_VI, | IWM_MVM_TX_FIFO_VI, | ||||
IWM_MVM_TX_FIFO_VO, | IWM_MVM_TX_FIFO_VO, | ||||
}; | }; | ||||
static int | |||||
iwm_is_basic_ridx(const struct ieee80211_rateset *rs, int ridx) | |||||
{ | |||||
uint16_t rate_idx; | |||||
int i; | |||||
rate_idx = iwm_ridx2rate(ridx); | |||||
for (i = 0; i < rs->rs_nrates; i++) | |||||
if (rs->rates[i].rs_index == rate_idx) | |||||
return (rs->rates[i].rs_basic); | |||||
return (0); | |||||
} | |||||
static void | static void | ||||
iwm_mvm_ack_rates(struct iwm_softc *sc, int is2ghz, | iwm_mvm_ack_rates(struct iwm_softc *sc, int is2ghz, | ||||
int *cck_rates, int *ofdm_rates, struct iwm_node *in) | int *cck_rates, int *ofdm_rates, struct iwm_node *in) | ||||
{ | { | ||||
int lowest_present_ofdm = 100; | int lowest_present_ofdm = 100; | ||||
int lowest_present_cck = 100; | int lowest_present_cck = 100; | ||||
uint8_t cck = 0; | uint8_t cck = 0; | ||||
uint8_t ofdm = 0; | uint8_t ofdm = 0; | ||||
int i; | int i; | ||||
struct ieee80211_rateset *rs = &in->in_ni.ni_rates; | struct ieee80211_rateset *rs = &in->in_ni.ni_rates; | ||||
if (is2ghz) { | if (is2ghz) { | ||||
for (i = IWM_FIRST_CCK_RATE; i <= IWM_LAST_CCK_RATE; i++) { | for (i = IWM_FIRST_CCK_RATE; i <= IWM_LAST_CCK_RATE; i++) { | ||||
if ((iwm_ridx2rate(rs, i) & IEEE80211_RATE_BASIC) == 0) | if (!iwm_is_basic_ridx(rs, i)) | ||||
continue; | continue; | ||||
cck |= (1 << i); | cck |= (1 << i); | ||||
if (lowest_present_cck > i) | if (lowest_present_cck > i) | ||||
lowest_present_cck = i; | lowest_present_cck = i; | ||||
} | } | ||||
} | } | ||||
for (i = IWM_FIRST_OFDM_RATE; i <= IWM_LAST_NON_HT_RATE; i++) { | for (i = IWM_FIRST_OFDM_RATE; i <= IWM_LAST_NON_HT_RATE; i++) { | ||||
if ((iwm_ridx2rate(rs, i) & IEEE80211_RATE_BASIC) == 0) | if (!iwm_is_basic_ridx(rs, i)) | ||||
continue; | continue; | ||||
ofdm |= (1 << (i - IWM_FIRST_OFDM_RATE)); | ofdm |= (1 << (i - IWM_FIRST_OFDM_RATE)); | ||||
if (lowest_present_ofdm > i) | if (lowest_present_ofdm > i) | ||||
lowest_present_ofdm = i; | lowest_present_ofdm = i; | ||||
} | } | ||||
/* | /* | ||||
* Now we've got the basic rates as bitmaps in the ofdm and cck | * Now we've got the basic rates as bitmaps in the ofdm and cck | ||||
▲ Show 20 Lines • Show All 356 Lines • Show Last 20 Lines |