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/223fd4f843081059bc8f8d8ba6363bf...
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 <lkp(a)intel.com>
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 <ryder.lee(a)mediatek.com>
:::::: CC: Felix Fietkau <nbd(a)nbd.name>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org