Lines Matching +full:ieee80211 +full:- +full:freq +full:- +full:limit

1 // SPDX-License-Identifier: GPL-2.0-or-later
3 Copyright (C) 2004 - 2009 Ivo van Doorn <[email protected]>
14 #include <linux/crc-itu-t.h>
57 mutex_lock(&rt2x00dev->csr_mutex); in rt73usb_bbp_write()
73 mutex_unlock(&rt2x00dev->csr_mutex); in rt73usb_bbp_write()
82 mutex_lock(&rt2x00dev->csr_mutex); in rt73usb_bbp_read()
105 mutex_unlock(&rt2x00dev->csr_mutex); in rt73usb_bbp_read()
115 mutex_lock(&rt2x00dev->csr_mutex); in rt73usb_rf_write()
138 mutex_unlock(&rt2x00dev->csr_mutex); in rt73usb_rf_write()
192 (enabled && led->rt2x00dev->curr_band == NL80211_BAND_5GHZ); in rt73usb_brightness_set()
194 (enabled && led->rt2x00dev->curr_band == NL80211_BAND_2GHZ); in rt73usb_brightness_set()
196 if (led->type == LED_TYPE_RADIO) { in rt73usb_brightness_set()
197 rt2x00_set_field16(&led->rt2x00dev->led_mcu_reg, in rt73usb_brightness_set()
200 rt2x00usb_vendor_request_sw(led->rt2x00dev, USB_LED_CONTROL, in rt73usb_brightness_set()
201 0, led->rt2x00dev->led_mcu_reg, in rt73usb_brightness_set()
203 } else if (led->type == LED_TYPE_ASSOC) { in rt73usb_brightness_set()
204 rt2x00_set_field16(&led->rt2x00dev->led_mcu_reg, in rt73usb_brightness_set()
206 rt2x00_set_field16(&led->rt2x00dev->led_mcu_reg, in rt73usb_brightness_set()
209 rt2x00usb_vendor_request_sw(led->rt2x00dev, USB_LED_CONTROL, in rt73usb_brightness_set()
210 0, led->rt2x00dev->led_mcu_reg, in rt73usb_brightness_set()
212 } else if (led->type == LED_TYPE_QUALITY) { in rt73usb_brightness_set()
214 * The brightness is divided into 6 levels (0 - 5), in rt73usb_brightness_set()
218 rt2x00usb_vendor_request_sw(led->rt2x00dev, USB_LED_CONTROL, in rt73usb_brightness_set()
220 led->rt2x00dev->led_mcu_reg, in rt73usb_brightness_set()
233 reg = rt2x00usb_register_read(led->rt2x00dev, MAC_CSR14); in rt73usb_blink_set()
236 rt2x00usb_register_write(led->rt2x00dev, MAC_CSR14, reg); in rt73usb_blink_set()
245 led->rt2x00dev = rt2x00dev; in rt73usb_init_led()
246 led->type = type; in rt73usb_init_led()
247 led->led_dev.brightness_set = rt73usb_brightness_set; in rt73usb_init_led()
248 led->led_dev.blink_set = rt73usb_blink_set; in rt73usb_init_led()
249 led->flags = LED_INITIALIZED; in rt73usb_init_led()
265 if (crypto->cmd == SET_KEY) { in rt73usb_config_shared_key()
276 mask = (0xf << crypto->bssidx); in rt73usb_config_shared_key()
282 return -ENOSPC; in rt73usb_config_shared_key()
284 key->hw_key_idx += reg ? ffz(reg) : 0; in rt73usb_config_shared_key()
289 memcpy(key_entry.key, crypto->key, in rt73usb_config_shared_key()
291 memcpy(key_entry.tx_mic, crypto->tx_mic, in rt73usb_config_shared_key()
293 memcpy(key_entry.rx_mic, crypto->rx_mic, in rt73usb_config_shared_key()
296 reg = SHARED_KEY_ENTRY(key->hw_key_idx); in rt73usb_config_shared_key()
307 if (key->hw_key_idx < 8) { in rt73usb_config_shared_key()
308 field.bit_offset = (3 * key->hw_key_idx); in rt73usb_config_shared_key()
312 rt2x00_set_field32(&reg, field, crypto->cipher); in rt73usb_config_shared_key()
315 field.bit_offset = (3 * (key->hw_key_idx - 8)); in rt73usb_config_shared_key()
319 rt2x00_set_field32(&reg, field, crypto->cipher); in rt73usb_config_shared_key()
326 * inside the ieee80211 frame either, but requires it in rt73usb_config_shared_key()
332 key->flags |= IEEE80211_KEY_FLAG_GENERATE_IV; in rt73usb_config_shared_key()
336 * SEC_CSR0 contains only single-bit fields to indicate in rt73usb_config_shared_key()
341 mask = 1 << key->hw_key_idx; in rt73usb_config_shared_key()
344 if (crypto->cmd == SET_KEY) in rt73usb_config_shared_key()
346 else if (crypto->cmd == DISABLE_KEY) in rt73usb_config_shared_key()
362 if (crypto->cmd == SET_KEY) { in rt73usb_config_pairwise_key()
374 key->hw_key_idx = 32; in rt73usb_config_pairwise_key()
377 return -ENOSPC; in rt73usb_config_pairwise_key()
380 key->hw_key_idx += reg ? ffz(reg) : 0; in rt73usb_config_pairwise_key()
385 memcpy(key_entry.key, crypto->key, in rt73usb_config_pairwise_key()
387 memcpy(key_entry.tx_mic, crypto->tx_mic, in rt73usb_config_pairwise_key()
389 memcpy(key_entry.rx_mic, crypto->rx_mic, in rt73usb_config_pairwise_key()
392 reg = PAIRWISE_KEY_ENTRY(key->hw_key_idx); in rt73usb_config_pairwise_key()
400 memcpy(&addr_entry, crypto->address, ETH_ALEN); in rt73usb_config_pairwise_key()
401 addr_entry.cipher = crypto->cipher; in rt73usb_config_pairwise_key()
403 reg = PAIRWISE_TA_ENTRY(key->hw_key_idx); in rt73usb_config_pairwise_key()
413 reg |= (1 << crypto->bssidx); in rt73usb_config_pairwise_key()
419 * inside the ieee80211 frame either, but requires it in rt73usb_config_pairwise_key()
425 key->flags |= IEEE80211_KEY_FLAG_GENERATE_IV; in rt73usb_config_pairwise_key()
429 * SEC_CSR2 and SEC_CSR3 contain only single-bit fields to indicate in rt73usb_config_pairwise_key()
434 if (key->hw_key_idx < 32) { in rt73usb_config_pairwise_key()
435 mask = 1 << key->hw_key_idx; in rt73usb_config_pairwise_key()
438 if (crypto->cmd == SET_KEY) in rt73usb_config_pairwise_key()
440 else if (crypto->cmd == DISABLE_KEY) in rt73usb_config_pairwise_key()
444 mask = 1 << (key->hw_key_idx - 32); in rt73usb_config_pairwise_key()
447 if (crypto->cmd == SET_KEY) in rt73usb_config_pairwise_key()
449 else if (crypto->cmd == DISABLE_KEY) in rt73usb_config_pairwise_key()
476 !test_bit(CONFIG_MONITORING, &rt2x00dev->flags)); in rt73usb_config_filter()
478 !test_bit(CONFIG_MONITORING, &rt2x00dev->flags) && in rt73usb_config_filter()
479 !rt2x00dev->intf_ap_count); in rt73usb_config_filter()
501 rt2x00_set_field32(&reg, TXRX_CSR9_TSF_SYNC, conf->sync); in rt73usb_config_intf()
506 reg = le32_to_cpu(conf->mac[1]); in rt73usb_config_intf()
508 conf->mac[1] = cpu_to_le32(reg); in rt73usb_config_intf()
511 conf->mac, sizeof(conf->mac)); in rt73usb_config_intf()
515 reg = le32_to_cpu(conf->bssid[1]); in rt73usb_config_intf()
517 conf->bssid[1] = cpu_to_le32(reg); in rt73usb_config_intf()
520 conf->bssid, sizeof(conf->bssid)); in rt73usb_config_intf()
539 !!erp->short_preamble); in rt73usb_config_erp()
545 erp->basic_rates); in rt73usb_config_erp()
550 erp->beacon_int * 16); in rt73usb_config_erp()
556 rt2x00_set_field32(&reg, MAC_CSR9_SLOT_TIME, erp->slot_time); in rt73usb_config_erp()
560 rt2x00_set_field32(&reg, MAC_CSR8_SIFS, erp->sifs); in rt73usb_config_erp()
562 rt2x00_set_field32(&reg, MAC_CSR8_EIFS, erp->eifs); in rt73usb_config_erp()
584 switch (ant->rx) { in rt73usb_config_antenna_5x()
588 (rt2x00dev->curr_band != NL80211_BAND_5GHZ); in rt73usb_config_antenna_5x()
594 if (rt2x00dev->curr_band == NL80211_BAND_5GHZ) in rt73usb_config_antenna_5x()
603 if (rt2x00dev->curr_band == NL80211_BAND_5GHZ) in rt73usb_config_antenna_5x()
633 switch (ant->rx) { in rt73usb_config_antenna_2x()
656 * value[0] -> non-LNA
657 * value[1] -> LNA
696 BUG_ON(ant->rx == ANTENNA_SW_DIVERSITY || in rt73usb_config_ant()
697 ant->tx == ANTENNA_SW_DIVERSITY); in rt73usb_config_ant()
699 if (rt2x00dev->curr_band == NL80211_BAND_5GHZ) { in rt73usb_config_ant()
713 (rt2x00dev->curr_band == NL80211_BAND_2GHZ)); in rt73usb_config_ant()
715 (rt2x00dev->curr_band == NL80211_BAND_5GHZ)); in rt73usb_config_ant()
731 if (libconf->conf->chandef.chan->band == NL80211_BAND_2GHZ) { in rt73usb_config_lna_gain()
736 lna_gain -= rt2x00_get_field16(eeprom, EEPROM_RSSI_OFFSET_BG_1); in rt73usb_config_lna_gain()
739 lna_gain -= rt2x00_get_field16(eeprom, EEPROM_RSSI_OFFSET_A_1); in rt73usb_config_lna_gain()
742 rt2x00dev->lna_gain = lna_gain; in rt73usb_config_lna_gain()
752 rt2x00_set_field32(&rf->rf3, RF3_TXPOWER, TXPOWER_TO_DEV(txpower)); in rt73usb_config_channel()
753 rt2x00_set_field32(&rf->rf4, RF4_FREQ_OFFSET, rt2x00dev->freq_offset); in rt73usb_config_channel()
763 r94 += txpower - MAX_TXPOWER; in rt73usb_config_channel()
764 else if (txpower < MIN_TXPOWER && txpower >= (MIN_TXPOWER - r94)) in rt73usb_config_channel()
768 rt73usb_rf_write(rt2x00dev, 1, rf->rf1); in rt73usb_config_channel()
769 rt73usb_rf_write(rt2x00dev, 2, rf->rf2); in rt73usb_config_channel()
770 rt73usb_rf_write(rt2x00dev, 3, rf->rf3 & ~0x00000004); in rt73usb_config_channel()
771 rt73usb_rf_write(rt2x00dev, 4, rf->rf4); in rt73usb_config_channel()
773 rt73usb_rf_write(rt2x00dev, 1, rf->rf1); in rt73usb_config_channel()
774 rt73usb_rf_write(rt2x00dev, 2, rf->rf2); in rt73usb_config_channel()
775 rt73usb_rf_write(rt2x00dev, 3, rf->rf3 | 0x00000004); in rt73usb_config_channel()
776 rt73usb_rf_write(rt2x00dev, 4, rf->rf4); in rt73usb_config_channel()
778 rt73usb_rf_write(rt2x00dev, 1, rf->rf1); in rt73usb_config_channel()
779 rt73usb_rf_write(rt2x00dev, 2, rf->rf2); in rt73usb_config_channel()
780 rt73usb_rf_write(rt2x00dev, 3, rf->rf3 & ~0x00000004); in rt73usb_config_channel()
781 rt73usb_rf_write(rt2x00dev, 4, rf->rf4); in rt73usb_config_channel()
809 libconf->conf->long_frame_max_tx_count); in rt73usb_config_retry_limit()
811 libconf->conf->short_frame_max_tx_count); in rt73usb_config_retry_limit()
819 (libconf->conf->flags & IEEE80211_CONF_PS) ? in rt73usb_config_ps()
826 rt2x00dev->beacon_int - 10); in rt73usb_config_ps()
828 libconf->conf->listen_interval - 1); in rt73usb_config_ps()
861 rt73usb_config_channel(rt2x00dev, &libconf->rf, in rt73usb_config()
862 libconf->conf->power_level); in rt73usb_config()
865 rt73usb_config_txpower(rt2x00dev, libconf->conf->power_level); in rt73usb_config()
884 qual->rx_failed = rt2x00_get_field32(reg, STA_CSR0_FCS_ERROR); in rt73usb_link_stats()
890 qual->false_cca = rt2x00_get_field32(reg, STA_CSR1_FALSE_CCA_ERROR); in rt73usb_link_stats()
896 if (qual->vgc_level != vgc_level) { in rt73usb_set_vgc()
898 qual->vgc_level = vgc_level; in rt73usb_set_vgc()
899 qual->vgc_level_reg = vgc_level; in rt73usb_set_vgc()
918 if (rt2x00dev->curr_band == NL80211_BAND_5GHZ) { in rt73usb_link_tuner()
927 if (qual->rssi > -82) { in rt73usb_link_tuner()
930 } else if (qual->rssi > -84) { in rt73usb_link_tuner()
948 if (!rt2x00dev->intf_associated) in rt73usb_link_tuner()
952 * Special big-R17 for very short distance in rt73usb_link_tuner()
954 if (qual->rssi > -35) { in rt73usb_link_tuner()
960 * Special big-R17 for short distance in rt73usb_link_tuner()
962 if (qual->rssi >= -58) { in rt73usb_link_tuner()
968 * Special big-R17 for middle-short distance in rt73usb_link_tuner()
970 if (qual->rssi >= -66) { in rt73usb_link_tuner()
976 * Special mid-R17 for middle distance in rt73usb_link_tuner()
978 if (qual->rssi >= -74) { in rt73usb_link_tuner()
985 * Lower up_bound when rssi is weaker then -74 dBm. in rt73usb_link_tuner()
987 up_bound -= 2 * (-74 - qual->rssi); in rt73usb_link_tuner()
991 if (qual->vgc_level > up_bound) { in rt73usb_link_tuner()
999 * r17 does not yet exceed upper limit, continue and base in rt73usb_link_tuner()
1002 if ((qual->false_cca > 512) && (qual->vgc_level < up_bound)) in rt73usb_link_tuner()
1004 min_t(u8, qual->vgc_level + 4, up_bound)); in rt73usb_link_tuner()
1005 else if ((qual->false_cca < 100) && (qual->vgc_level > low_bound)) in rt73usb_link_tuner()
1007 max_t(u8, qual->vgc_level - 4, low_bound)); in rt73usb_link_tuner()
1015 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; in rt73usb_start_queue()
1018 switch (queue->qid) { in rt73usb_start_queue()
1038 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; in rt73usb_stop_queue()
1041 switch (queue->qid) { in rt73usb_stop_queue()
1084 fw_crc = (data[len - 2] << 8 | data[len - 1]); in rt73usb_check_firmware()
1087 * Use the crc itu-t algorithm. in rt73usb_check_firmware()
1089 crc = crc_itu_t(0, data, len - 2); in rt73usb_check_firmware()
1115 return -EBUSY; in rt73usb_load_firmware()
1219 if (rt2x00dev->ops->lib->set_device_state(rt2x00dev, STATE_AWAKE)) in rt73usb_init_registers()
1220 return -EBUSY; in rt73usb_init_registers()
1298 return -EACCES; in rt73usb_wait_bbp_ready()
1309 return -EACCES; in rt73usb_init_bbp()
1360 return -EIO; in rt73usb_enable_radio()
1404 return -EBUSY; in rt73usb_set_state()
1430 retval = -ENOTSUPP; in rt73usb_set_device_state()
1447 struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb); in rt73usb_write_tx_desc()
1448 __le32 *txd = (__le32 *) entry->skb->data; in rt73usb_write_tx_desc()
1456 test_bit(ENTRY_TXD_BURST, &txdesc->flags)); in rt73usb_write_tx_desc()
1459 test_bit(ENTRY_TXD_MORE_FRAG, &txdesc->flags)); in rt73usb_write_tx_desc()
1461 test_bit(ENTRY_TXD_ACK, &txdesc->flags)); in rt73usb_write_tx_desc()
1463 test_bit(ENTRY_TXD_REQ_TIMESTAMP, &txdesc->flags)); in rt73usb_write_tx_desc()
1465 (txdesc->rate_mode == RATE_MODE_OFDM)); in rt73usb_write_tx_desc()
1466 rt2x00_set_field32(&word, TXD_W0_IFS, txdesc->u.plcp.ifs); in rt73usb_write_tx_desc()
1468 test_bit(ENTRY_TXD_RETRY_MODE, &txdesc->flags)); in rt73usb_write_tx_desc()
1470 test_bit(ENTRY_TXD_ENCRYPT_MMIC, &txdesc->flags)); in rt73usb_write_tx_desc()
1472 test_bit(ENTRY_TXD_ENCRYPT_PAIRWISE, &txdesc->flags)); in rt73usb_write_tx_desc()
1473 rt2x00_set_field32(&word, TXD_W0_KEY_INDEX, txdesc->key_idx); in rt73usb_write_tx_desc()
1474 rt2x00_set_field32(&word, TXD_W0_DATABYTE_COUNT, txdesc->length); in rt73usb_write_tx_desc()
1476 test_bit(ENTRY_TXD_BURST, &txdesc->flags)); in rt73usb_write_tx_desc()
1477 rt2x00_set_field32(&word, TXD_W0_CIPHER_ALG, txdesc->cipher); in rt73usb_write_tx_desc()
1481 rt2x00_set_field32(&word, TXD_W1_HOST_Q_ID, entry->queue->qid); in rt73usb_write_tx_desc()
1482 rt2x00_set_field32(&word, TXD_W1_AIFSN, entry->queue->aifs); in rt73usb_write_tx_desc()
1483 rt2x00_set_field32(&word, TXD_W1_CWMIN, entry->queue->cw_min); in rt73usb_write_tx_desc()
1484 rt2x00_set_field32(&word, TXD_W1_CWMAX, entry->queue->cw_max); in rt73usb_write_tx_desc()
1485 rt2x00_set_field32(&word, TXD_W1_IV_OFFSET, txdesc->iv_offset); in rt73usb_write_tx_desc()
1487 test_bit(ENTRY_TXD_GENERATE_SEQ, &txdesc->flags)); in rt73usb_write_tx_desc()
1491 rt2x00_set_field32(&word, TXD_W2_PLCP_SIGNAL, txdesc->u.plcp.signal); in rt73usb_write_tx_desc()
1492 rt2x00_set_field32(&word, TXD_W2_PLCP_SERVICE, txdesc->u.plcp.service); in rt73usb_write_tx_desc()
1494 txdesc->u.plcp.length_low); in rt73usb_write_tx_desc()
1496 txdesc->u.plcp.length_high); in rt73usb_write_tx_desc()
1499 if (test_bit(ENTRY_TXD_ENCRYPT, &txdesc->flags)) { in rt73usb_write_tx_desc()
1500 _rt2x00_desc_write(txd, 3, skbdesc->iv[0]); in rt73usb_write_tx_desc()
1501 _rt2x00_desc_write(txd, 4, skbdesc->iv[1]); in rt73usb_write_tx_desc()
1506 TXPOWER_TO_DEV(entry->queue->rt2x00dev->tx_power)); in rt73usb_write_tx_desc()
1513 skbdesc->flags |= SKBDESC_DESC_IN_SKB; in rt73usb_write_tx_desc()
1514 skbdesc->desc = txd; in rt73usb_write_tx_desc()
1515 skbdesc->desc_len = TXD_DESC_SIZE; in rt73usb_write_tx_desc()
1524 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt73usb_write_beacon()
1541 skb_push(entry->skb, TXD_DESC_SIZE); in rt73usb_write_beacon()
1542 memset(entry->skb->data, 0, TXD_DESC_SIZE); in rt73usb_write_beacon()
1557 padding_len = roundup(entry->skb->len, 4) - entry->skb->len; in rt73usb_write_beacon()
1558 if (padding_len && skb_pad(entry->skb, padding_len)) { in rt73usb_write_beacon()
1561 entry->skb = NULL; in rt73usb_write_beacon()
1566 beacon_base = HW_BEACON_OFFSET(entry->entry_idx); in rt73usb_write_beacon()
1567 rt2x00usb_register_multiwrite(rt2x00dev, beacon_base, entry->skb->data, in rt73usb_write_beacon()
1568 entry->skb->len + padding_len); in rt73usb_write_beacon()
1573 * For Wi-Fi faily generated beacons between participating stations. in rt73usb_write_beacon()
1584 dev_kfree_skb(entry->skb); in rt73usb_write_beacon()
1585 entry->skb = NULL; in rt73usb_write_beacon()
1590 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt73usb_clear_beacon()
1606 beacon_base = HW_BEACON_OFFSET(entry->entry_idx); in rt73usb_clear_beacon()
1623 length = roundup(entry->skb->len, 4); in rt73usb_get_tx_data_len()
1624 length += (4 * !(length % entry->queue->usb_maxpacket)); in rt73usb_get_tx_data_len()
1634 u8 offset = rt2x00dev->lna_gain; in rt73usb_agc_to_rssi()
1652 if (rt2x00dev->curr_band == NL80211_BAND_5GHZ) { in rt73usb_agc_to_rssi()
1664 return rt2x00_get_field32(rxd_w1, RXD_W1_RSSI_AGC) * 2 - offset; in rt73usb_agc_to_rssi()
1670 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt73usb_fill_rxdone()
1671 struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb); in rt73usb_fill_rxdone()
1672 __le32 *rxd = (__le32 *)entry->skb->data; in rt73usb_fill_rxdone()
1677 * Copy descriptor to the skbdesc->desc buffer, making it safe from moving of in rt73usb_fill_rxdone()
1680 memcpy(skbdesc->desc, rxd, skbdesc->desc_len); in rt73usb_fill_rxdone()
1681 rxd = (__le32 *)skbdesc->desc; in rt73usb_fill_rxdone()
1690 rxdesc->flags |= RX_FLAG_FAILED_FCS_CRC; in rt73usb_fill_rxdone()
1692 rxdesc->cipher = rt2x00_get_field32(word0, RXD_W0_CIPHER_ALG); in rt73usb_fill_rxdone()
1693 rxdesc->cipher_status = rt2x00_get_field32(word0, RXD_W0_CIPHER_ERROR); in rt73usb_fill_rxdone()
1695 if (rxdesc->cipher != CIPHER_NONE) { in rt73usb_fill_rxdone()
1696 rxdesc->iv[0] = _rt2x00_desc_read(rxd, 2); in rt73usb_fill_rxdone()
1697 rxdesc->iv[1] = _rt2x00_desc_read(rxd, 3); in rt73usb_fill_rxdone()
1698 rxdesc->dev_flags |= RXDONE_CRYPTO_IV; in rt73usb_fill_rxdone()
1700 rxdesc->icv = _rt2x00_desc_read(rxd, 4); in rt73usb_fill_rxdone()
1701 rxdesc->dev_flags |= RXDONE_CRYPTO_ICV; in rt73usb_fill_rxdone()
1708 rxdesc->flags |= RX_FLAG_IV_STRIPPED; in rt73usb_fill_rxdone()
1714 rxdesc->flags |= RX_FLAG_MMIC_STRIPPED; in rt73usb_fill_rxdone()
1716 if (rxdesc->cipher_status == RX_CRYPTO_SUCCESS) in rt73usb_fill_rxdone()
1717 rxdesc->flags |= RX_FLAG_DECRYPTED; in rt73usb_fill_rxdone()
1718 else if (rxdesc->cipher_status == RX_CRYPTO_FAIL_MIC) in rt73usb_fill_rxdone()
1719 rxdesc->flags |= RX_FLAG_MMIC_ERROR; in rt73usb_fill_rxdone()
1728 rxdesc->signal = rt2x00_get_field32(word1, RXD_W1_SIGNAL); in rt73usb_fill_rxdone()
1729 rxdesc->rssi = rt73usb_agc_to_rssi(rt2x00dev, word1); in rt73usb_fill_rxdone()
1730 rxdesc->size = rt2x00_get_field32(word0, RXD_W0_DATABYTE_COUNT); in rt73usb_fill_rxdone()
1733 rxdesc->dev_flags |= RXDONE_SIGNAL_PLCP; in rt73usb_fill_rxdone()
1735 rxdesc->dev_flags |= RXDONE_SIGNAL_BITRATE; in rt73usb_fill_rxdone()
1737 rxdesc->dev_flags |= RXDONE_MY_BSS; in rt73usb_fill_rxdone()
1742 skb_pull(entry->skb, entry->queue->desc_size); in rt73usb_fill_rxdone()
1743 skb_trim(entry->skb, rxdesc->size); in rt73usb_fill_rxdone()
1755 rt2x00usb_eeprom_read(rt2x00dev, rt2x00dev->eeprom, EEPROM_SIZE); in rt73usb_validate_eeprom()
1806 rt2x00_eeprom_dbg(rt2x00dev, "Freq: 0x%04x\n", word); in rt73usb_validate_eeprom()
1817 if (value < -10 || value > 10) in rt73usb_validate_eeprom()
1820 if (value < -10 || value > 10) in rt73usb_validate_eeprom()
1833 if (value < -10 || value > 10) in rt73usb_validate_eeprom()
1836 if (value < -10 || value > 10) in rt73usb_validate_eeprom()
1865 return -ENODEV; in rt73usb_init_eeprom()
1873 return -ENODEV; in rt73usb_init_eeprom()
1879 rt2x00dev->default_ant.tx = in rt73usb_init_eeprom()
1881 rt2x00dev->default_ant.rx = in rt73usb_init_eeprom()
1888 __set_bit(CAPABILITY_FRAME_TYPE, &rt2x00dev->cap_flags); in rt73usb_init_eeprom()
1894 __set_bit(CAPABILITY_HW_BUTTON, &rt2x00dev->cap_flags); in rt73usb_init_eeprom()
1900 rt2x00dev->freq_offset = rt2x00_get_field16(eeprom, EEPROM_FREQ_OFFSET); in rt73usb_init_eeprom()
1908 __set_bit(CAPABILITY_EXTERNAL_LNA_A, &rt2x00dev->cap_flags); in rt73usb_init_eeprom()
1909 __set_bit(CAPABILITY_EXTERNAL_LNA_BG, &rt2x00dev->cap_flags); in rt73usb_init_eeprom()
1918 rt73usb_init_led(rt2x00dev, &rt2x00dev->led_radio, LED_TYPE_RADIO); in rt73usb_init_eeprom()
1919 rt73usb_init_led(rt2x00dev, &rt2x00dev->led_assoc, LED_TYPE_ASSOC); in rt73usb_init_eeprom()
1921 rt73usb_init_led(rt2x00dev, &rt2x00dev->led_qual, in rt73usb_init_eeprom()
1924 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_LED_MODE, value); in rt73usb_init_eeprom()
1925 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_GPIO_0, in rt73usb_init_eeprom()
1928 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_GPIO_1, in rt73usb_init_eeprom()
1931 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_GPIO_2, in rt73usb_init_eeprom()
1934 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_GPIO_3, in rt73usb_init_eeprom()
1937 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_GPIO_4, in rt73usb_init_eeprom()
1940 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_ACT, in rt73usb_init_eeprom()
1942 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_READY_BG, in rt73usb_init_eeprom()
1945 rt2x00_set_field16(&rt2x00dev->led_mcu_reg, MCU_LEDCS_POLARITY_READY_A, in rt73usb_init_eeprom()
2091 struct hw_mode_spec *spec = &rt2x00dev->spec; in rt73usb_probe_hw_mode()
2105 ieee80211_hw_set(rt2x00dev->hw, PS_NULLFUNC_STACK); in rt73usb_probe_hw_mode()
2106 ieee80211_hw_set(rt2x00dev->hw, SIGNAL_DBM); in rt73usb_probe_hw_mode()
2107 ieee80211_hw_set(rt2x00dev->hw, SUPPORTS_PS); in rt73usb_probe_hw_mode()
2109 SET_IEEE80211_DEV(rt2x00dev->hw, rt2x00dev->dev); in rt73usb_probe_hw_mode()
2110 SET_IEEE80211_PERM_ADDR(rt2x00dev->hw, in rt73usb_probe_hw_mode()
2117 spec->supported_bands = SUPPORT_BAND_2GHZ; in rt73usb_probe_hw_mode()
2118 spec->supported_rates = SUPPORT_RATE_CCK | SUPPORT_RATE_OFDM; in rt73usb_probe_hw_mode()
2121 spec->num_channels = ARRAY_SIZE(rf_vals_bg_2528); in rt73usb_probe_hw_mode()
2122 spec->channels = rf_vals_bg_2528; in rt73usb_probe_hw_mode()
2124 spec->supported_bands |= SUPPORT_BAND_5GHZ; in rt73usb_probe_hw_mode()
2125 spec->num_channels = ARRAY_SIZE(rf_vals_5226); in rt73usb_probe_hw_mode()
2126 spec->channels = rf_vals_5226; in rt73usb_probe_hw_mode()
2128 spec->num_channels = 14; in rt73usb_probe_hw_mode()
2129 spec->channels = rf_vals_5225_2527; in rt73usb_probe_hw_mode()
2131 spec->supported_bands |= SUPPORT_BAND_5GHZ; in rt73usb_probe_hw_mode()
2132 spec->num_channels = ARRAY_SIZE(rf_vals_5225_2527); in rt73usb_probe_hw_mode()
2133 spec->channels = rf_vals_5225_2527; in rt73usb_probe_hw_mode()
2139 info = kcalloc(spec->num_channels, sizeof(*info), GFP_KERNEL); in rt73usb_probe_hw_mode()
2141 return -ENOMEM; in rt73usb_probe_hw_mode()
2143 spec->channels_info = info; in rt73usb_probe_hw_mode()
2151 if (spec->num_channels > 14) { in rt73usb_probe_hw_mode()
2153 for (i = 14; i < spec->num_channels; i++) { in rt73usb_probe_hw_mode()
2156 TXPOWER_FROM_DEV(tx_power[i - 14]); in rt73usb_probe_hw_mode()
2198 __set_bit(CAPABILITY_CONTROL_FILTERS, &rt2x00dev->cap_flags); in rt73usb_probe_hw()
2203 __set_bit(REQUIRE_FIRMWARE, &rt2x00dev->cap_flags); in rt73usb_probe_hw()
2205 __set_bit(CAPABILITY_HW_CRYPTO, &rt2x00dev->cap_flags); in rt73usb_probe_hw()
2206 __set_bit(CAPABILITY_LINK_TUNING, &rt2x00dev->cap_flags); in rt73usb_probe_hw()
2207 __set_bit(REQUIRE_PS_AUTOWAKE, &rt2x00dev->cap_flags); in rt73usb_probe_hw()
2212 rt2x00dev->rssi_offset = DEFAULT_RSSI_OFFSET; in rt73usb_probe_hw()
2218 * IEEE80211 stack callback functions.
2225 struct rt2x00_dev *rt2x00dev = hw->priv; in rt73usb_conf_tx()
2257 rt2x00_set_field32(&reg, field, queue->txop); in rt73usb_conf_tx()
2265 rt2x00_set_field32(&reg, field, queue->aifs); in rt73usb_conf_tx()
2269 rt2x00_set_field32(&reg, field, queue->cw_min); in rt73usb_conf_tx()
2273 rt2x00_set_field32(&reg, field, queue->cw_max); in rt73usb_conf_tx()
2281 struct rt2x00_dev *rt2x00dev = hw->priv; in rt73usb_get_tsf()
2356 switch (queue->qid) { in rt73usb_queue_init()
2358 queue->limit = 32; in rt73usb_queue_init()
2359 queue->data_size = DATA_FRAME_SIZE; in rt73usb_queue_init()
2360 queue->desc_size = RXD_DESC_SIZE; in rt73usb_queue_init()
2361 queue->priv_size = sizeof(struct queue_entry_priv_usb); in rt73usb_queue_init()
2368 queue->limit = 32; in rt73usb_queue_init()
2369 queue->data_size = DATA_FRAME_SIZE; in rt73usb_queue_init()
2370 queue->desc_size = TXD_DESC_SIZE; in rt73usb_queue_init()
2371 queue->priv_size = sizeof(struct queue_entry_priv_usb); in rt73usb_queue_init()
2375 queue->limit = 4; in rt73usb_queue_init()
2376 queue->data_size = MGMT_FRAME_SIZE; in rt73usb_queue_init()
2377 queue->desc_size = TXINFO_SIZE; in rt73usb_queue_init()
2378 queue->priv_size = sizeof(struct queue_entry_priv_usb); in rt73usb_queue_init()
2449 /* D-Link */
2464 /* Huawei-3Com */