dma.c (68f0f2690e183306b52671a9ad09fb31808b0500) | dma.c (e90354e0452d33f3dc77d7f5c0ff7033f97e1fbf) |
---|---|
1// SPDX-License-Identifier: ISC 2/* Copyright (C) 2019 MediaTek Inc. 3 * 4 * Author: Ryder Lee <ryder.lee@mediatek.com> 5 * Roy Luo <royluo@google.com> 6 * Lorenzo Bianconi <lorenzo@kernel.org> 7 * Felix Fietkau <nbd@nbd.name> 8 */ --- 80 unchanged lines hidden (view full) --- 89 } 90 91 ret = mt7615_init_tx_queue(dev, &dev->mt76.q_tx[MT_TXQ_MCU], 92 MT7615_TXQ_MCU, 93 MT7615_TX_MCU_RING_SIZE); 94 return 0; 95} 96 | 1// SPDX-License-Identifier: ISC 2/* Copyright (C) 2019 MediaTek Inc. 3 * 4 * Author: Ryder Lee <ryder.lee@mediatek.com> 5 * Roy Luo <royluo@google.com> 6 * Lorenzo Bianconi <lorenzo@kernel.org> 7 * Felix Fietkau <nbd@nbd.name> 8 */ --- 80 unchanged lines hidden (view full) --- 89 } 90 91 ret = mt7615_init_tx_queue(dev, &dev->mt76.q_tx[MT_TXQ_MCU], 92 MT7615_TXQ_MCU, 93 MT7615_TX_MCU_RING_SIZE); 94 return 0; 95} 96 |
97void mt7615_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q, 98 struct sk_buff *skb) 99{ 100 struct mt7615_dev *dev = container_of(mdev, struct mt7615_dev, mt76); 101 __le32 *rxd = (__le32 *)skb->data; 102 __le32 *end = (__le32 *)&skb->data[skb->len]; 103 enum rx_pkt_type type; 104 u16 flag; 105 106 type = FIELD_GET(MT_RXD0_PKT_TYPE, le32_to_cpu(rxd[0])); 107 flag = FIELD_GET(MT_RXD0_PKT_FLAG, le32_to_cpu(rxd[0])); 108 if (type == PKT_TYPE_RX_EVENT && flag == 0x1) 109 type = PKT_TYPE_NORMAL_MCU; 110 111 switch (type) { 112 case PKT_TYPE_TXS: 113 for (rxd++; rxd + 7 <= end; rxd += 7) 114 mt7615_mac_add_txs(dev, rxd); 115 dev_kfree_skb(skb); 116 break; 117 case PKT_TYPE_TXRX_NOTIFY: 118 mt7615_mac_tx_free(dev, skb); 119 break; 120 case PKT_TYPE_RX_EVENT: 121 mt7615_mcu_rx_event(dev, skb); 122 break; 123 case PKT_TYPE_NORMAL_MCU: 124 case PKT_TYPE_NORMAL: 125 if (!mt7615_mac_fill_rx(dev, skb)) { 126 mt76_rx(&dev->mt76, q, skb); 127 return; 128 } 129 /* fall through */ 130 default: 131 dev_kfree_skb(skb); 132 break; 133 } 134} 135 | |
136static void 137mt7615_tx_cleanup(struct mt7615_dev *dev) 138{ 139 int i; 140 141 mt76_queue_tx_cleanup(dev, MT_TXQ_MCU, false); 142 if (is_mt7615(&dev->mt76)) { 143 mt76_queue_tx_cleanup(dev, MT_TXQ_BE, false); --- 185 unchanged lines hidden --- | 97static void 98mt7615_tx_cleanup(struct mt7615_dev *dev) 99{ 100 int i; 101 102 mt76_queue_tx_cleanup(dev, MT_TXQ_MCU, false); 103 if (is_mt7615(&dev->mt76)) { 104 mt76_queue_tx_cleanup(dev, MT_TXQ_BE, false); --- 185 unchanged lines hidden --- |