Lines Matching +full:rates +full:- +full:ru
1 /* SPDX-License-Identifier: ISC */
91 #define mt76_is_usb(dev) ((dev)->bus->type == MT76_BUS_USB)
92 #define mt76_is_mmio(dev) ((dev)->bus->type == MT76_BUS_MMIO)
93 #define mt76_is_sdio(dev) ((dev)->bus->type == MT76_BUS_SDIO)
704 u8 ru:4; member
973 /* per-phy stats. */
1072 s8 ru[7][12]; member
1103 #define __mt76_rr(dev, ...) (dev)->bus->rr((dev), __VA_ARGS__)
1104 #define __mt76_wr(dev, ...) (dev)->bus->wr((dev), __VA_ARGS__)
1105 #define __mt76_rmw(dev, ...) (dev)->bus->rmw((dev), __VA_ARGS__)
1106 #define __mt76_wr_copy(dev, ...) (dev)->bus->write_copy((dev), __VA_ARGS__)
1107 #define __mt76_rr_copy(dev, ...) (dev)->bus->read_copy((dev), __VA_ARGS__)
1112 #define mt76_rr(dev, ...) (dev)->mt76.bus->rr(&((dev)->mt76), __VA_ARGS__)
1113 #define mt76_wr(dev, ...) (dev)->mt76.bus->wr(&((dev)->mt76), __VA_ARGS__)
1114 #define mt76_rmw(dev, ...) (dev)->mt76.bus->rmw(&((dev)->mt76), __VA_ARGS__)
1115 #define mt76_wr_copy(dev, ...) (dev)->mt76.bus->write_copy(&((dev)->mt76), __VA_ARGS__)
1116 #define mt76_rr_copy(dev, ...) (dev)->mt76.bus->read_copy(&((dev)->mt76), __VA_ARGS__)
1117 #define mt76_wr_rp(dev, ...) (dev)->mt76.bus->wr_rp(&((dev)->mt76), __VA_ARGS__)
1118 #define mt76_rd_rp(dev, ...) (dev)->mt76.bus->rd_rp(&((dev)->mt76), __VA_ARGS__)
1121 #define mt76_mcu_restart(dev, ...) (dev)->mt76.mcu_ops->mcu_restart(&((dev)->mt76))
1135 #define mt76_hw(dev) (dev)->mphy.hw
1140 #define mt76_poll(dev, ...) __mt76_poll(&((dev)->mt76), __VA_ARGS__)
1145 #define mt76_poll_msec(dev, ...) ____mt76_poll_msec(&((dev)->mt76), __VA_ARGS__, 10)
1146 #define mt76_poll_msec_tick(dev, ...) ____mt76_poll_msec(&((dev)->mt76), __VA_ARGS__)
1154 return dev->rev >> 16; in mt76_chip()
1159 return dev->rev & 0xffff; in mt76_rev()
1191 #define mt76xx_chip(dev) mt76_chip(&((dev)->mt76))
1192 #define mt76xx_rev(dev) mt76_rev(&((dev)->mt76))
1194 #define mt76_init_queues(dev, ...) (dev)->mt76.queue_ops->init(&((dev)->mt76), __VA_ARGS__)
1195 #define mt76_queue_alloc(dev, ...) (dev)->mt76.queue_ops->alloc(&((dev)->mt76), __VA_ARGS__)
1196 #define mt76_tx_queue_skb_raw(dev, ...) (dev)->mt76.queue_ops->tx_queue_skb_raw(&((dev)->mt76), __V…
1197 #define mt76_tx_queue_skb(dev, ...) (dev)->mt76.queue_ops->tx_queue_skb(&((dev)->mphy), __VA_ARGS__)
1198 #define mt76_queue_rx_reset(dev, ...) (dev)->mt76.queue_ops->rx_reset(&((dev)->mt76), __VA_ARGS__)
1199 #define mt76_queue_tx_cleanup(dev, ...) (dev)->mt76.queue_ops->tx_cleanup(&((dev)->mt76), __VA_ARGS…
1200 #define mt76_queue_rx_cleanup(dev, ...) (dev)->mt76.queue_ops->rx_cleanup(&((dev)->mt76), __VA_ARGS…
1201 #define mt76_queue_kick(dev, ...) (dev)->mt76.queue_ops->kick(&((dev)->mt76), __VA_ARGS__)
1202 #define mt76_queue_reset(dev, ...) (dev)->mt76.queue_ops->reset_q(&((dev)->mt76), __VA_ARGS__)
1205 for (i = 0; i < ARRAY_SIZE((dev)->q_rx); i++) \
1206 if ((dev)->q_rx[i].ndesc)
1210 rcu_dereference_protected(p, lockdep_is_held(&(dev)->mutex))
1216 struct ieee80211_rate *rates, int n_rates);
1227 struct ieee80211_rate *rates, int n_rates);
1233 return mt76_register_debugfs_fops(&dev->phy, NULL); in mt76_register_debugfs()
1255 q = mt76_init_queue(phy->dev, qid, idx, n_desc, ring_base, wed, flags); in mt76_init_tx_queue()
1259 phy->q_tx[qid] = q; in mt76_init_tx_queue()
1273 dev->q_mcu[qid] = q; in mt76_init_mcu_queue()
1281 if ((phy_idx == MT_BAND1 && dev->phys[phy_idx]) || in mt76_dev_phy()
1282 (phy_idx == MT_BAND2 && dev->phys[phy_idx])) in mt76_dev_phy()
1283 return dev->phys[phy_idx]; in mt76_dev_phy()
1285 return &dev->phy; in mt76_dev_phy()
1291 return mt76_dev_phy(dev, phy_idx)->hw; in mt76_phy_hw()
1297 return (u8 *)t - dev->drv->txwi_size; in mt76_get_txwi_ptr()
1300 /* increment with wrap-around */
1303 return (val + 1) & (size - 1); in mt76_incr()
1306 /* decrement with wrap-around */
1309 return (val - 1) & (size - 1); in mt76_decr()
1327 if (!wcid || !wcid->sta) in wcid_to_sta()
1330 if (wcid->def_wcid) in wcid_to_sta()
1331 ptr = wcid->def_wcid; in wcid_to_sta()
1339 sizeof(IEEE80211_SKB_CB(skb)->status.status_driver_data)); in mt76_tx_skb_cb()
1340 return ((void *)IEEE80211_SKB_CB(skb)->status.status_driver_data); in mt76_tx_skb_cb()
1346 u8 *data = skb->data; in mt76_skb_get_hdr()
1352 mstat = *((struct mt76_rx_status *)skb->cb); in mt76_skb_get_hdr()
1370 memmove(skb->data, skb->data + 2, len); in mt76_insert_hdr_pad()
1372 skb->data[len] = 0; in mt76_insert_hdr_pad()
1373 skb->data[len + 1] = 0; in mt76_insert_hdr_pad()
1387 u8 idx = nss - 1; in mt76_tx_power_nss_delta()
1395 return phy->test.state != MT76_TM_STATE_OFF; in mt76_testmode_enabled()
1408 for (i = 0; i < ARRAY_SIZE(dev->phys); i++) { in mt76_is_testmode_skb()
1409 struct mt76_phy *phy = dev->phys[i]; in mt76_is_testmode_skb()
1411 if (phy && skb == phy->test.tx_skb) { in mt76_is_testmode_skb()
1412 *hw = dev->phys[i]->hw; in mt76_is_testmode_skb()
1455 __acquires(&dev->status_lock);
1457 __releases(&dev->status_lock);
1547 if (disable || phy->test.state == MT76_TM_STATE_OFF) in mt76_testmode_reset()
1560 u8 phy_idx = (info->hw_queue & MT_TX_HW_QUEUE_PHY) >> 2; in mt76_tx_status_get_hw()
1563 info->hw_queue &= ~MT_TX_HW_QUEUE_PHY; in mt76_tx_status_get_hw()
1596 return urb->status && in mt76u_urb_error()
1597 urb->status != -ECONNRESET && in mt76u_urb_error()
1598 urb->status != -ESHUTDOWN && in mt76u_urb_error()
1599 urb->status != -ENOENT; in mt76u_urb_error()
1606 struct usb_interface *uintf = to_usb_interface(dev->dev); in mt76u_bulk_msg()
1608 struct mt76_usb *usb = &dev->usb; in mt76u_bulk_msg()
1612 pipe = usb_rcvbulkpipe(udev, usb->in_ep[ep]); in mt76u_bulk_msg()
1614 pipe = usb_sndbulkpipe(udev, usb->out_ep[ep]); in mt76u_bulk_msg()
1692 int max_len = 4096 - dev->mcu_ops->headroom; in mt76_mcu_send_firmware()
1727 for (i = 0; i < ARRAY_SIZE(dev->q_rx); i++) { in mt76_queue_is_rx()
1728 if (q == &dev->q_rx[i]) in mt76_queue_is_rx()
1737 return (q->flags & MT_QFLAG_WED) && in mt76_queue_is_wed_tx_free()
1738 FIELD_GET(MT_QFLAG_WED_TYPE, q->flags) == MT76_WED_Q_TXFREE; in mt76_queue_is_wed_tx_free()
1743 return q->flags & MT_QFLAG_WED_RRO; in mt76_queue_is_wed_rro()
1749 FIELD_GET(MT_QFLAG_WED_TYPE, q->flags) == MT76_WED_RRO_Q_IND; in mt76_queue_is_wed_rro_ind()
1755 (FIELD_GET(MT_QFLAG_WED_TYPE, q->flags) == MT76_WED_RRO_Q_DATA || in mt76_queue_is_wed_rro_data()
1756 FIELD_GET(MT_QFLAG_WED_TYPE, q->flags) == MT76_WED_RRO_Q_MSDU_PG); in mt76_queue_is_wed_rro_data()
1761 if (!(q->flags & MT_QFLAG_WED)) in mt76_queue_is_wed_rx()
1764 return FIELD_GET(MT_QFLAG_WED_TYPE, q->flags) == MT76_WED_Q_RX || in mt76_queue_is_wed_rx()
1781 page_pool_put_full_page(page->pp, page, allow_direct); in mt76_put_page_pool_buf()
1789 page = page_pool_dev_alloc_frag(q->page_pool, offset, size); in mt76_get_page_pool_buf()
1798 spin_lock_bh(&dev->token_lock); in mt76_set_tx_blocked()
1800 spin_unlock_bh(&dev->token_lock); in mt76_set_tx_blocked()
1808 spin_lock_bh(&dev->token_lock); in mt76_token_get()
1809 token = idr_alloc(&dev->token, *ptxwi, 0, dev->token_size, GFP_ATOMIC); in mt76_token_get()
1810 spin_unlock_bh(&dev->token_lock); in mt76_token_get()
1820 spin_lock_bh(&dev->token_lock); in mt76_token_put()
1821 txwi = idr_remove(&dev->token, token); in mt76_token_put()
1822 spin_unlock_bh(&dev->token_lock); in mt76_token_put()
1834 struct mt76_vif_link *mlink = (struct mt76_vif_link *)vif->drv_priv; in mt76_vif_init()
1836 mlink->mvif = mvif; in mt76_vif_init()
1837 rcu_assign_pointer(mvif->link[0], mlink); in mt76_vif_init()
1845 struct mt76_vif_link *mlink = (struct mt76_vif_link *)vif->drv_priv; in mt76_vif_link()
1846 struct mt76_vif_data *mvif = mlink->mvif; in mt76_vif_link()
1848 return mt76_dereference(mvif->link[link_id], dev); in mt76_vif_link()
1855 struct mt76_vif_link *mlink = (struct mt76_vif_link *)vif->drv_priv; in mt76_vif_conf_link()
1856 struct mt76_vif_data *mvif = mlink->mvif; in mt76_vif_conf_link()
1858 if (link_conf == &vif->bss_conf) in mt76_vif_conf_link()
1861 return mt76_dereference(mvif->link[link_conf->link_id], dev); in mt76_vif_conf_link()
1869 if (!mlink->ctx) in mt76_vif_link_phy()
1872 ctx = (struct mt76_chanctx *)mlink->ctx->drv_priv; in mt76_vif_link_phy()
1874 return ctx->phy; in mt76_vif_link_phy()