tree: https://github.com/nbd168/wireless mt76 head: 61a1f99dd1e3c145fce9d601b52e7adb8f37322a commit: 223fd4f843081059bc8f8d8ba6363bfcc2e5848f [10/100] mt76: mt7915: rework tx rate reporting config: x86_64-randconfig-r033-20210618 (attached as .config) compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project d1baf2895467735ab14f4b3415fce204c0cc8e7f) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install x86_64 cross compiling tool for clang build # apt-get install binutils-x86-64-linux-gnu # https://github.com/nbd168/wireless/commit/223fd4f843081059bc8f8d8ba6363bfcc2e5848f git remote add nbd168-wireless https://github.com/nbd168/wireless git fetch --no-tags nbd168-wireless mt76 git checkout 223fd4f843081059bc8f8d8ba6363bfcc2e5848f # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All warnings (new ones prefixed by >>): >> drivers/net/wireless/mediatek/mt76/mt7915/mac.c:1169:6: warning: variable 'stat' set but not used [-Wunused-but-set-variable] u8 stat; ^ >> drivers/net/wireless/mediatek/mt76/mt7915/mac.c:1257:21: warning: variable 'dev' set but not used [-Wunused-but-set-variable] struct mt7915_dev *dev; ^ 2 warnings generated. vim +/stat +1169 drivers/net/wireless/mediatek/mt76/mt7915/mac.c e57b7901469fc0 Ryder Lee 2020-04-25 1139 338330bd26b1fe Felix Fietkau 2021-05-07 1140 static void 338330bd26b1fe Felix Fietkau 2021-05-07 1141 mt7915_mac_tx_free(struct mt7915_dev *dev, struct sk_buff *skb) e57b7901469fc0 Ryder Lee 2020-04-25 1142 { e57b7901469fc0 Ryder Lee 2020-04-25 1143 struct mt7915_tx_free *free = (struct mt7915_tx_free *)skb->data; e57b7901469fc0 Ryder Lee 2020-04-25 1144 struct mt76_dev *mdev = &dev->mt76; 4c430774e01b06 Lorenzo Bianconi 2020-11-13 1145 struct mt76_phy *mphy_ext = mdev->phy2; e57b7901469fc0 Ryder Lee 2020-04-25 1146 struct mt76_txwi_cache *txwi; e57b7901469fc0 Ryder Lee 2020-04-25 1147 struct ieee80211_sta *sta = NULL; 660915d052c606 Felix Fietkau 2020-09-01 1148 LIST_HEAD(free_list); 660915d052c606 Felix Fietkau 2020-09-01 1149 struct sk_buff *tmp; e57b7901469fc0 Ryder Lee 2020-04-25 1150 u8 i, count; 5342758d5522db Felix Fietkau 2020-11-21 1151 bool wake = false; e57b7901469fc0 Ryder Lee 2020-04-25 1152 f8a667a9af9198 Felix Fietkau 2020-08-22 1153 /* clean DMA queues and unmap buffers first */ 91990519298e23 Lorenzo Bianconi 2020-11-11 1154 mt76_queue_tx_cleanup(dev, dev->mphy.q_tx[MT_TXQ_PSD], false); 91990519298e23 Lorenzo Bianconi 2020-11-11 1155 mt76_queue_tx_cleanup(dev, dev->mphy.q_tx[MT_TXQ_BE], false); 4c430774e01b06 Lorenzo Bianconi 2020-11-13 1156 if (mphy_ext) { 4c430774e01b06 Lorenzo Bianconi 2020-11-13 1157 mt76_queue_tx_cleanup(dev, mphy_ext->q_tx[MT_TXQ_PSD], false); 4c430774e01b06 Lorenzo Bianconi 2020-11-13 1158 mt76_queue_tx_cleanup(dev, mphy_ext->q_tx[MT_TXQ_BE], false); 4c430774e01b06 Lorenzo Bianconi 2020-11-13 1159 } f8a667a9af9198 Felix Fietkau 2020-08-22 1160 e57b7901469fc0 Ryder Lee 2020-04-25 1161 /* e57b7901469fc0 Ryder Lee 2020-04-25 1162 * TODO: MT_TX_FREE_LATENCY is msdu time from the TXD is queued into PLE, e57b7901469fc0 Ryder Lee 2020-04-25 1163 * to the time ack is received or dropped by hw (air + hw queue time). e57b7901469fc0 Ryder Lee 2020-04-25 1164 * Should avoid accessing WTBL to get Tx airtime, and use it instead. e57b7901469fc0 Ryder Lee 2020-04-25 1165 */ e57b7901469fc0 Ryder Lee 2020-04-25 1166 count = FIELD_GET(MT_TX_FREE_MSDU_CNT, le16_to_cpu(free->ctrl)); e57b7901469fc0 Ryder Lee 2020-04-25 1167 for (i = 0; i < count; i++) { e57b7901469fc0 Ryder Lee 2020-04-25 1168 u32 msdu, info = le32_to_cpu(free->info[i]); e57b7901469fc0 Ryder Lee 2020-04-25 @1169 u8 stat; e57b7901469fc0 Ryder Lee 2020-04-25 1170 e57b7901469fc0 Ryder Lee 2020-04-25 1171 /* e57b7901469fc0 Ryder Lee 2020-04-25 1172 * 1'b1: new wcid pair. e57b7901469fc0 Ryder Lee 2020-04-25 1173 * 1'b0: msdu_id with the same 'wcid pair' as above. e57b7901469fc0 Ryder Lee 2020-04-25 1174 */ e57b7901469fc0 Ryder Lee 2020-04-25 1175 if (info & MT_TX_FREE_PAIR) { e57b7901469fc0 Ryder Lee 2020-04-25 1176 struct mt7915_sta *msta; 1daf2522fa1604 Felix Fietkau 2020-07-26 1177 struct mt7915_phy *phy; e57b7901469fc0 Ryder Lee 2020-04-25 1178 struct mt76_wcid *wcid; e57b7901469fc0 Ryder Lee 2020-04-25 1179 u16 idx; e57b7901469fc0 Ryder Lee 2020-04-25 1180 e57b7901469fc0 Ryder Lee 2020-04-25 1181 count++; e57b7901469fc0 Ryder Lee 2020-04-25 1182 idx = FIELD_GET(MT_TX_FREE_WLAN_ID, info); e57b7901469fc0 Ryder Lee 2020-04-25 1183 wcid = rcu_dereference(dev->mt76.wcid[idx]); e57b7901469fc0 Ryder Lee 2020-04-25 1184 sta = wcid_to_sta(wcid); e57b7901469fc0 Ryder Lee 2020-04-25 1185 if (!sta) e57b7901469fc0 Ryder Lee 2020-04-25 1186 continue; e57b7901469fc0 Ryder Lee 2020-04-25 1187 e57b7901469fc0 Ryder Lee 2020-04-25 1188 msta = container_of(wcid, struct mt7915_sta, wcid); 1daf2522fa1604 Felix Fietkau 2020-07-26 1189 phy = msta->vif->phy; 1daf2522fa1604 Felix Fietkau 2020-07-26 1190 spin_lock_bh(&dev->sta_poll_lock); 1daf2522fa1604 Felix Fietkau 2020-07-26 1191 if (list_empty(&msta->stats_list)) 1daf2522fa1604 Felix Fietkau 2020-07-26 1192 list_add_tail(&msta->stats_list, &phy->stats_list); 1daf2522fa1604 Felix Fietkau 2020-07-26 1193 if (list_empty(&msta->poll_list)) 1daf2522fa1604 Felix Fietkau 2020-07-26 1194 list_add_tail(&msta->poll_list, &dev->sta_poll_list); 1daf2522fa1604 Felix Fietkau 2020-07-26 1195 spin_unlock_bh(&dev->sta_poll_lock); 6425791d350301 Felix Fietkau 2020-09-27 1196 continue; e57b7901469fc0 Ryder Lee 2020-04-25 1197 } e57b7901469fc0 Ryder Lee 2020-04-25 1198 e57b7901469fc0 Ryder Lee 2020-04-25 1199 msdu = FIELD_GET(MT_TX_FREE_MSDU_ID, info); e57b7901469fc0 Ryder Lee 2020-04-25 1200 stat = FIELD_GET(MT_TX_FREE_STATUS, info); e57b7901469fc0 Ryder Lee 2020-04-25 1201 d089692bc7938a Lorenzo Bianconi 2021-04-20 1202 txwi = mt76_token_release(mdev, msdu, &wake); e57b7901469fc0 Ryder Lee 2020-04-25 1203 if (!txwi) e57b7901469fc0 Ryder Lee 2020-04-25 1204 continue; e57b7901469fc0 Ryder Lee 2020-04-25 1205 223fd4f8430810 Felix Fietkau 2021-05-07 1206 mt7915_txwi_free(dev, txwi, sta, &free_list); e57b7901469fc0 Ryder Lee 2020-04-25 1207 } 0f1c443ca9cfa0 Felix Fietkau 2020-08-20 1208 0f1c443ca9cfa0 Felix Fietkau 2020-08-20 1209 mt7915_mac_sta_poll(dev); 5342758d5522db Felix Fietkau 2020-11-21 1210 d089692bc7938a Lorenzo Bianconi 2021-04-20 1211 if (wake) d089692bc7938a Lorenzo Bianconi 2021-04-20 1212 mt76_set_tx_blocked(&dev->mt76, false); 5342758d5522db Felix Fietkau 2020-11-21 1213 781eef5b34c57d Felix Fietkau 2020-07-24 1214 mt76_worker_schedule(&dev->mt76.tx_worker); 660915d052c606 Felix Fietkau 2020-09-01 1215 660915d052c606 Felix Fietkau 2020-09-01 1216 napi_consume_skb(skb, 1); 660915d052c606 Felix Fietkau 2020-09-01 1217 660915d052c606 Felix Fietkau 2020-09-01 1218 list_for_each_entry_safe(skb, tmp, &free_list, list) { 660915d052c606 Felix Fietkau 2020-09-01 1219 skb_list_del_init(skb); 660915d052c606 Felix Fietkau 2020-09-01 1220 napi_consume_skb(skb, 1); 660915d052c606 Felix Fietkau 2020-09-01 1221 } e57b7901469fc0 Ryder Lee 2020-04-25 1222 } e57b7901469fc0 Ryder Lee 2020-04-25 1223 338330bd26b1fe Felix Fietkau 2021-05-07 1224 void mt7915_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q, 338330bd26b1fe Felix Fietkau 2021-05-07 1225 struct sk_buff *skb) 338330bd26b1fe Felix Fietkau 2021-05-07 1226 { 338330bd26b1fe Felix Fietkau 2021-05-07 1227 struct mt7915_dev *dev = container_of(mdev, struct mt7915_dev, mt76); 338330bd26b1fe Felix Fietkau 2021-05-07 1228 __le32 *rxd = (__le32 *)skb->data; 338330bd26b1fe Felix Fietkau 2021-05-07 1229 enum rx_pkt_type type; 338330bd26b1fe Felix Fietkau 2021-05-07 1230 338330bd26b1fe Felix Fietkau 2021-05-07 1231 type = FIELD_GET(MT_RXD0_PKT_TYPE, le32_to_cpu(rxd[0])); 338330bd26b1fe Felix Fietkau 2021-05-07 1232 338330bd26b1fe Felix Fietkau 2021-05-07 1233 switch (type) { 338330bd26b1fe Felix Fietkau 2021-05-07 1234 case PKT_TYPE_TXRX_NOTIFY: 338330bd26b1fe Felix Fietkau 2021-05-07 1235 mt7915_mac_tx_free(dev, skb); 338330bd26b1fe Felix Fietkau 2021-05-07 1236 break; 338330bd26b1fe Felix Fietkau 2021-05-07 1237 case PKT_TYPE_RX_EVENT: 338330bd26b1fe Felix Fietkau 2021-05-07 1238 mt7915_mcu_rx_event(dev, skb); 338330bd26b1fe Felix Fietkau 2021-05-07 1239 break; 338330bd26b1fe Felix Fietkau 2021-05-07 1240 case PKT_TYPE_TXRXV: 338330bd26b1fe Felix Fietkau 2021-05-07 1241 mt7915_mac_fill_rx_vector(dev, skb); 338330bd26b1fe Felix Fietkau 2021-05-07 1242 break; 338330bd26b1fe Felix Fietkau 2021-05-07 1243 case PKT_TYPE_NORMAL: 338330bd26b1fe Felix Fietkau 2021-05-07 1244 if (!mt7915_mac_fill_rx(dev, skb)) { 338330bd26b1fe Felix Fietkau 2021-05-07 1245 mt76_rx(&dev->mt76, q, skb); 338330bd26b1fe Felix Fietkau 2021-05-07 1246 return; 338330bd26b1fe Felix Fietkau 2021-05-07 1247 } 338330bd26b1fe Felix Fietkau 2021-05-07 1248 fallthrough; 338330bd26b1fe Felix Fietkau 2021-05-07 1249 default: 338330bd26b1fe Felix Fietkau 2021-05-07 1250 dev_kfree_skb(skb); 338330bd26b1fe Felix Fietkau 2021-05-07 1251 break; 338330bd26b1fe Felix Fietkau 2021-05-07 1252 } 338330bd26b1fe Felix Fietkau 2021-05-07 1253 } 338330bd26b1fe Felix Fietkau 2021-05-07 1254 d80e52c7b6c4d3 Felix Fietkau 2020-08-23 1255 void mt7915_tx_complete_skb(struct mt76_dev *mdev, struct mt76_queue_entry *e) e57b7901469fc0 Ryder Lee 2020-04-25 1256 { e57b7901469fc0 Ryder Lee 2020-04-25 @1257 struct mt7915_dev *dev; e57b7901469fc0 Ryder Lee 2020-04-25 1258 e57b7901469fc0 Ryder Lee 2020-04-25 1259 if (!e->txwi) { e57b7901469fc0 Ryder Lee 2020-04-25 1260 dev_kfree_skb_any(e->skb); e57b7901469fc0 Ryder Lee 2020-04-25 1261 return; e57b7901469fc0 Ryder Lee 2020-04-25 1262 } e57b7901469fc0 Ryder Lee 2020-04-25 1263 e57b7901469fc0 Ryder Lee 2020-04-25 1264 dev = container_of(mdev, struct mt7915_dev, mt76); e57b7901469fc0 Ryder Lee 2020-04-25 1265 e57b7901469fc0 Ryder Lee 2020-04-25 1266 /* error path */ e57b7901469fc0 Ryder Lee 2020-04-25 1267 if (e->skb == DMA_DUMMY_DATA) { e57b7901469fc0 Ryder Lee 2020-04-25 1268 struct mt76_txwi_cache *t; e57b7901469fc0 Ryder Lee 2020-04-25 1269 struct mt7915_txp *txp; e57b7901469fc0 Ryder Lee 2020-04-25 1270 e57b7901469fc0 Ryder Lee 2020-04-25 1271 txp = mt7915_txwi_to_txp(mdev, e->txwi); d089692bc7938a Lorenzo Bianconi 2021-04-20 1272 t = mt76_token_put(mdev, le16_to_cpu(txp->token)); e57b7901469fc0 Ryder Lee 2020-04-25 1273 e->skb = t ? t->skb : NULL; e57b7901469fc0 Ryder Lee 2020-04-25 1274 } e57b7901469fc0 Ryder Lee 2020-04-25 1275 223fd4f8430810 Felix Fietkau 2021-05-07 1276 if (e->skb) 223fd4f8430810 Felix Fietkau 2021-05-07 1277 mt76_tx_complete_skb(mdev, e->wcid, e->skb); e57b7901469fc0 Ryder Lee 2020-04-25 1278 } e57b7901469fc0 Ryder Lee 2020-04-25 1279 :::::: The code at line 1169 was first introduced by commit :::::: e57b7901469fc0b021930b83a8094baaf3d81b09 mt76: add mac80211 driver for MT7915 PCIe-based chipsets :::::: TO: Ryder Lee :::::: CC: Felix Fietkau --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org