From: kernel test robot <lkp@intel.com>
To: sean.wang@mediatek.com, nbd@nbd.name, lorenzo.bianconi@redhat.com
Cc: kbuild-all@lists.01.org, sean.wang@mediatek.com,
Soul.Huang@mediatek.com, YN.Chen@mediatek.com,
robin.chiu@mediatek.com, ch.yeh@mediatek.com,
Eric.Liang@mediatek.com, ryder.lee@mediatek.com,
linux-wireless@vger.kernel.org
Subject: Re: [PATCH net-next v1] mt76: mt7921: introduce mt7921e support
Date: Fri, 11 Dec 2020 03:37:32 +0800 [thread overview]
Message-ID: <202012110319.Rgqeubb4-lkp@intel.com> (raw)
In-Reply-To: <b24467915685771645abfd61adcbbf1341313dda.1607596773.git.objelf@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 22642 bytes --]
Hi,
I love your patch! Perhaps something to improve:
[auto build test WARNING on net-next/master]
url: https://github.com/0day-ci/linux/commits/sean-wang-mediatek-com/mt76-mt7921-introduce-mt7921e-support/20201210-190523
base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git a7105e3472bf6bb3099d1293ea7d70e7783aa582
config: parisc-allyesconfig (attached as .config)
compiler: hppa-linux-gcc (GCC) 9.3.0
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
# https://github.com/0day-ci/linux/commit/c3c0bafc670577a5135220f8c35fd845b9fbdd90
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review sean-wang-mediatek-com/mt76-mt7921-introduce-mt7921e-support/20201210-190523
git checkout c3c0bafc670577a5135220f8c35fd845b9fbdd90
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=parisc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c: In function 'mt7921_mcu_send_message':
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:338:25: error: 'MT_MCUQ_WM' undeclared (first use in this function); did you mean 'MT_MCU_CMD'?
338 | enum mt76_txq_id txq = MT_MCUQ_WM;
| ^~~~~~~~~~
| MT_MCU_CMD
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:338:25: note: each undeclared identifier is reported only once for each function it appears in
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:346:11: error: 'struct mt76_mcu' has no member named 'timeout'
346 | mdev->mcu.timeout = 20 * HZ;
| ^
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:353:9: error: 'MT_MCUQ_FWDL' undeclared (first use in this function); did you mean 'MT_TXQ_FWDL'?
353 | txq = MT_MCUQ_FWDL;
| ^~~~~~~~~~~~
| MT_TXQ_FWDL
In file included from drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h:9,
from drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:6:
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:429:42: error: 'struct mt76_dev' has no member named 'q_mcu'; did you mean 'mcu'?
429 | return mt76_tx_queue_skb_raw(dev, mdev->q_mcu[txq], skb, 0);
| ^~~~~
drivers/net/wireless/mediatek/mt76/mt7921/../mt76.h:752:97: note: in definition of macro 'mt76_tx_queue_skb_raw'
752 | #define mt76_tx_queue_skb_raw(dev, ...) (dev)->mt76.queue_ops->tx_queue_skb_raw(&((dev)->mt76), __VA_ARGS__)
| ^~~~~~~~~~~
>> drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:338:19: warning: variable 'txq' set but not used [-Wunused-but-set-variable]
338 | enum mt76_txq_id txq = MT_MCUQ_WM;
| ^~~
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c: In function 'mt7921_mcu_add_key':
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:882:9: error: implicit declaration of function 'mt76_mcu_skb_send_msg'; did you mean 'mt76_mcu_send_msg'? [-Werror=implicit-function-declaration]
882 | return mt76_mcu_skb_send_msg(&dev->mt76, skb,
| ^~~~~~~~~~~~~~~~~~~~~
| mt76_mcu_send_msg
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c: In function 'mt7921_mcu_wtbl_hdr_trans_tlv':
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:1433:15: error: 'MT_WCID_FLAG_4ADDR' undeclared (first use in this function); did you mean 'MT_WCID_FLAG_PS'?
1433 | if (test_bit(MT_WCID_FLAG_4ADDR, &msta->wcid.flags)) {
| ^~~~~~~~~~~~~~~~~~
| MT_WCID_FLAG_PS
In file included from drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h:9,
from drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:6:
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c: In function 'mt7921_mcu_start_firmware':
drivers/net/wireless/mediatek/mt76/mt7921/../mt76.h:693:42: error: 'struct mt76_dev' has no member named 'mt76'
693 | #define mt76_mcu_send_msg(dev, ...) (dev)->mt76.mcu_ops->mcu_send_msg(&((dev)->mt76), __VA_ARGS__)
| ^~
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:1469:9: note: in expansion of macro 'mt76_mcu_send_msg'
1469 | return mt76_mcu_send_msg(&dev->mt76, MCU_CMD_FW_START_REQ, &req,
| ^~~~~~~~~~~~~~~~~
drivers/net/wireless/mediatek/mt76/mt7921/../mt76.h:693:78: error: 'struct mt76_dev' has no member named 'mt76'
693 | #define mt76_mcu_send_msg(dev, ...) (dev)->mt76.mcu_ops->mcu_send_msg(&((dev)->mt76), __VA_ARGS__)
| ^~
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:1469:9: note: in expansion of macro 'mt76_mcu_send_msg'
1469 | return mt76_mcu_send_msg(&dev->mt76, MCU_CMD_FW_START_REQ, &req,
| ^~~~~~~~~~~~~~~~~
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c: In function 'mt7921_mcu_restart':
drivers/net/wireless/mediatek/mt76/mt7921/../mt76.h:693:42: error: 'struct mt76_dev' has no member named 'mt76'
693 | #define mt76_mcu_send_msg(dev, ...) (dev)->mt76.mcu_ops->mcu_send_msg(&((dev)->mt76), __VA_ARGS__)
| ^~
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:1482:9: note: in expansion of macro 'mt76_mcu_send_msg'
1482 | return mt76_mcu_send_msg(dev, MCU_CMD_NIC_POWER_CTRL, &req,
| ^~~~~~~~~~~~~~~~~
drivers/net/wireless/mediatek/mt76/mt7921/../mt76.h:693:78: error: 'struct mt76_dev' has no member named 'mt76'
693 | #define mt76_mcu_send_msg(dev, ...) (dev)->mt76.mcu_ops->mcu_send_msg(&((dev)->mt76), __VA_ARGS__)
| ^~
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:1482:9: note: in expansion of macro 'mt76_mcu_send_msg'
1482 | return mt76_mcu_send_msg(dev, MCU_CMD_NIC_POWER_CTRL, &req,
| ^~~~~~~~~~~~~~~~~
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c: In function 'mt7921_mcu_patch_sem_ctrl':
drivers/net/wireless/mediatek/mt76/mt7921/../mt76.h:693:42: error: 'struct mt76_dev' has no member named 'mt76'
693 | #define mt76_mcu_send_msg(dev, ...) (dev)->mt76.mcu_ops->mcu_send_msg(&((dev)->mt76), __VA_ARGS__)
| ^~
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:1494:9: note: in expansion of macro 'mt76_mcu_send_msg'
1494 | return mt76_mcu_send_msg(&dev->mt76, MCU_CMD_PATCH_SEM_CONTROL, &req,
| ^~~~~~~~~~~~~~~~~
drivers/net/wireless/mediatek/mt76/mt7921/../mt76.h:693:78: error: 'struct mt76_dev' has no member named 'mt76'
693 | #define mt76_mcu_send_msg(dev, ...) (dev)->mt76.mcu_ops->mcu_send_msg(&((dev)->mt76), __VA_ARGS__)
| ^~
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:1494:9: note: in expansion of macro 'mt76_mcu_send_msg'
1494 | return mt76_mcu_send_msg(&dev->mt76, MCU_CMD_PATCH_SEM_CONTROL, &req,
| ^~~~~~~~~~~~~~~~~
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c: In function 'mt7921_mcu_start_patch':
drivers/net/wireless/mediatek/mt76/mt7921/../mt76.h:693:42: error: 'struct mt76_dev' has no member named 'mt76'
693 | #define mt76_mcu_send_msg(dev, ...) (dev)->mt76.mcu_ops->mcu_send_msg(&((dev)->mt76), __VA_ARGS__)
| ^~
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:1507:9: note: in expansion of macro 'mt76_mcu_send_msg'
1507 | return mt76_mcu_send_msg(&dev->mt76, MCU_CMD_PATCH_FINISH_REQ, &req,
| ^~~~~~~~~~~~~~~~~
drivers/net/wireless/mediatek/mt76/mt7921/../mt76.h:693:78: error: 'struct mt76_dev' has no member named 'mt76'
693 | #define mt76_mcu_send_msg(dev, ...) (dev)->mt76.mcu_ops->mcu_send_msg(&((dev)->mt76), __VA_ARGS__)
| ^~
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:1507:9: note: in expansion of macro 'mt76_mcu_send_msg'
1507 | return mt76_mcu_send_msg(&dev->mt76, MCU_CMD_PATCH_FINISH_REQ, &req,
| ^~~~~~~~~~~~~~~~~
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c: In function 'mt7921_mcu_init_download':
drivers/net/wireless/mediatek/mt76/mt7921/../mt76.h:693:42: error: 'struct mt76_dev' has no member named 'mt76'
693 | #define mt76_mcu_send_msg(dev, ...) (dev)->mt76.mcu_ops->mcu_send_msg(&((dev)->mt76), __VA_ARGS__)
| ^~
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:1544:9: note: in expansion of macro 'mt76_mcu_send_msg'
1544 | return mt76_mcu_send_msg(&dev->mt76, attr, &req, sizeof(req), true);
| ^~~~~~~~~~~~~~~~~
drivers/net/wireless/mediatek/mt76/mt7921/../mt76.h:693:78: error: 'struct mt76_dev' has no member named 'mt76'
693 | #define mt76_mcu_send_msg(dev, ...) (dev)->mt76.mcu_ops->mcu_send_msg(&((dev)->mt76), __VA_ARGS__)
| ^~
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:1544:9: note: in expansion of macro 'mt76_mcu_send_msg'
1544 | return mt76_mcu_send_msg(&dev->mt76, attr, &req, sizeof(req), true);
| ^~~~~~~~~~~~~~~~~
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c: In function 'mt7921_load_patch':
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:1603:9: error: implicit declaration of function 'mt76_mcu_send_firmware'; did you mean 'mt7921_mcu_start_firmware'? [-Werror=implicit-function-declaration]
1603 | ret = mt76_mcu_send_firmware(&dev->mt76, MCU_CMD_FW_SCATTER,
| ^~~~~~~~~~~~~~~~~~~~~~
| mt7921_mcu_start_firmware
In file included from drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h:9,
from drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:6:
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c: In function 'mt7921_load_firmware':
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:1756:39: error: 'struct mt76_dev' has no member named 'q_mcu'; did you mean 'mcu'?
1756 | mt76_queue_tx_cleanup(dev, dev->mt76.q_mcu[MT_MCUQ_FWDL], false);
| ^~~~~
drivers/net/wireless/mediatek/mt76/mt7921/../mt76.h:755:91: note: in definition of macro 'mt76_queue_tx_cleanup'
755 | #define mt76_queue_tx_cleanup(dev, ...) (dev)->mt76.queue_ops->tx_cleanup(&((dev)->mt76), __VA_ARGS__)
| ^~~~~~~~~~~
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:1756:45: error: 'MT_MCUQ_FWDL' undeclared (first use in this function); did you mean 'MT_TXQ_FWDL'?
1756 | mt76_queue_tx_cleanup(dev, dev->mt76.q_mcu[MT_MCUQ_FWDL], false);
| ^~~~~~~~~~~~
drivers/net/wireless/mediatek/mt76/mt7921/../mt76.h:755:91: note: in definition of macro 'mt76_queue_tx_cleanup'
755 | #define mt76_queue_tx_cleanup(dev, ...) (dev)->mt76.queue_ops->tx_cleanup(&((dev)->mt76), __VA_ARGS__)
| ^~~~~~~~~~~
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c: In function 'mt7921_mcu_fw_log_2_host':
--
drivers/net/wireless/mediatek/mt76/mt7921/mac.c: In function 'mt7921_set_tx_blocked':
drivers/net/wireless/mediatek/mt76/mt7921/mac.c:779:10: error: 'struct mt76_phy' has no member named 'q_tx'
779 | q = mphy->q_tx[0];
| ^~
drivers/net/wireless/mediatek/mt76/mt7921/mac.c:780:20: error: 'struct mt76_queue' has no member named 'blocked'; did you mean 'lock'?
780 | if (blocked == q->blocked)
| ^~~~~~~
| lock
drivers/net/wireless/mediatek/mt76/mt7921/mac.c:783:5: error: 'struct mt76_queue' has no member named 'blocked'; did you mean 'lock'?
783 | q->blocked = blocked;
| ^~~~~~~
| lock
drivers/net/wireless/mediatek/mt76/mt7921/mac.c:785:13: error: 'struct mt76_phy' has no member named 'q_tx'
785 | q2 = mphy2->q_tx[0];
| ^~
drivers/net/wireless/mediatek/mt76/mt7921/mac.c:786:7: error: 'struct mt76_queue' has no member named 'blocked'; did you mean 'lock'?
786 | q2->blocked = blocked;
| ^~~~~~~
| lock
In file included from drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h:9,
from drivers/net/wireless/mediatek/mt76/mt7921/mac.c:6:
drivers/net/wireless/mediatek/mt76/mt7921/mac.c: In function 'mt7921_mac_tx_free':
drivers/net/wireless/mediatek/mt76/mt7921/mac.c:925:38: error: 'struct mt76_phy' has no member named 'q_tx'
925 | mt76_queue_tx_cleanup(dev, dev->mphy.q_tx[MT_TXQ_PSD], false);
| ^
drivers/net/wireless/mediatek/mt76/mt7921/../mt76.h:755:91: note: in definition of macro 'mt76_queue_tx_cleanup'
755 | #define mt76_queue_tx_cleanup(dev, ...) (dev)->mt76.queue_ops->tx_cleanup(&((dev)->mt76), __VA_ARGS__)
| ^~~~~~~~~~~
drivers/net/wireless/mediatek/mt76/mt7921/mac.c:926:38: error: 'struct mt76_phy' has no member named 'q_tx'
926 | mt76_queue_tx_cleanup(dev, dev->mphy.q_tx[MT_TXQ_BE], false);
| ^
drivers/net/wireless/mediatek/mt76/mt7921/../mt76.h:755:91: note: in definition of macro 'mt76_queue_tx_cleanup'
755 | #define mt76_queue_tx_cleanup(dev, ...) (dev)->mt76.queue_ops->tx_cleanup(&((dev)->mt76), __VA_ARGS__)
| ^~~~~~~~~~~
drivers/net/wireless/mediatek/mt76/mt7921/mac.c:928:38: error: 'struct mt76_phy' has no member named 'q_tx'
928 | mt76_queue_tx_cleanup(dev, mphy_ext->q_tx[MT_TXQ_PSD], false);
| ^~
drivers/net/wireless/mediatek/mt76/mt7921/../mt76.h:755:91: note: in definition of macro 'mt76_queue_tx_cleanup'
755 | #define mt76_queue_tx_cleanup(dev, ...) (dev)->mt76.queue_ops->tx_cleanup(&((dev)->mt76), __VA_ARGS__)
| ^~~~~~~~~~~
drivers/net/wireless/mediatek/mt76/mt7921/mac.c:929:38: error: 'struct mt76_phy' has no member named 'q_tx'
929 | mt76_queue_tx_cleanup(dev, mphy_ext->q_tx[MT_TXQ_BE], false);
| ^~
drivers/net/wireless/mediatek/mt76/mt7921/../mt76.h:755:91: note: in definition of macro 'mt76_queue_tx_cleanup'
755 | #define mt76_queue_tx_cleanup(dev, ...) (dev)->mt76.queue_ops->tx_cleanup(&((dev)->mt76), __VA_ARGS__)
| ^~~~~~~~~~~
>> drivers/net/wireless/mediatek/mt76/mt7921/mac.c:946:23: warning: variable 'phy' set but not used [-Wunused-but-set-variable]
946 | struct mt7921_phy *phy;
| ^~~
drivers/net/wireless/mediatek/mt76/mt7921/mac.c:974:16: error: 'struct mt76_phy' has no member named 'q_tx'
974 | dev->mphy.q_tx[0]->blocked)
| ^
In file included from drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h:9,
from drivers/net/wireless/mediatek/mt76/mt7921/mac.c:6:
drivers/net/wireless/mediatek/mt76/mt7921/mac.c: In function 'mt7921_dma_reset':
drivers/net/wireless/mediatek/mt76/mt7921/mac.c:1224:39: error: 'struct mt76_dev' has no member named 'q_mcu'; did you mean 'mcu'?
1224 | mt76_queue_tx_cleanup(dev, dev->mt76.q_mcu[MT_MCUQ_WA], true);
| ^~~~~
drivers/net/wireless/mediatek/mt76/mt7921/../mt76.h:755:91: note: in definition of macro 'mt76_queue_tx_cleanup'
755 | #define mt76_queue_tx_cleanup(dev, ...) (dev)->mt76.queue_ops->tx_cleanup(&((dev)->mt76), __VA_ARGS__)
| ^~~~~~~~~~~
drivers/net/wireless/mediatek/mt76/mt7921/mac.c:1224:45: error: 'MT_MCUQ_WA' undeclared (first use in this function); did you mean 'MT_RXQ_MCU_WA'?
1224 | mt76_queue_tx_cleanup(dev, dev->mt76.q_mcu[MT_MCUQ_WA], true);
| ^~~~~~~~~~
drivers/net/wireless/mediatek/mt76/mt7921/../mt76.h:755:91: note: in definition of macro 'mt76_queue_tx_cleanup'
755 | #define mt76_queue_tx_cleanup(dev, ...) (dev)->mt76.queue_ops->tx_cleanup(&((dev)->mt76), __VA_ARGS__)
| ^~~~~~~~~~~
drivers/net/wireless/mediatek/mt76/mt7921/mac.c:1224:45: note: each undeclared identifier is reported only once for each function it appears in
1224 | mt76_queue_tx_cleanup(dev, dev->mt76.q_mcu[MT_MCUQ_WA], true);
| ^~~~~~~~~~
drivers/net/wireless/mediatek/mt76/mt7921/../mt76.h:755:91: note: in definition of macro 'mt76_queue_tx_cleanup'
755 | #define mt76_queue_tx_cleanup(dev, ...) (dev)->mt76.queue_ops->tx_cleanup(&((dev)->mt76), __VA_ARGS__)
| ^~~~~~~~~~~
drivers/net/wireless/mediatek/mt76/mt7921/mac.c:1226:39: error: 'struct mt76_phy' has no member named 'q_tx'
1226 | mt76_queue_tx_cleanup(dev, phy->mt76->q_tx[i], true);
| ^~
drivers/net/wireless/mediatek/mt76/mt7921/../mt76.h:755:91: note: in definition of macro 'mt76_queue_tx_cleanup'
755 | #define mt76_queue_tx_cleanup(dev, ...) (dev)->mt76.queue_ops->tx_cleanup(&((dev)->mt76), __VA_ARGS__)
| ^~~~~~~~~~~
drivers/net/wireless/mediatek/mt76/mt7921/mac.c:1228:39: error: 'struct mt76_phy' has no member named 'q_tx'
1228 | mt76_queue_tx_cleanup(dev, mphy_ext->q_tx[i], true);
| ^~
drivers/net/wireless/mediatek/mt76/mt7921/../mt76.h:755:91: note: in definition of macro 'mt76_queue_tx_cleanup'
755 | #define mt76_queue_tx_cleanup(dev, ...) (dev)->mt76.queue_ops->tx_cleanup(&((dev)->mt76), __VA_ARGS__)
| ^~~~~~~~~~~
vim +/txq +338 drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
331
332 static int
333 mt7921_mcu_send_message(struct mt76_dev *mdev, struct sk_buff *skb,
334 int cmd, int *wait_seq)
335 {
336 struct mt7921_dev *dev = container_of(mdev, struct mt7921_dev, mt76);
337 int txd_len, mcu_cmd = cmd & MCU_CMD_MASK;
> 338 enum mt76_txq_id txq = MT_MCUQ_WM;
339 struct mt7921_uni_txd *uni_txd;
340 struct mt7921_mcu_txd *mcu_txd;
341 u8 seq, pkt_fmt, qidx;
342 __le32 *txd;
343 u32 val;
344
345 /* TODO: make dynamic based on msg type */
346 mdev->mcu.timeout = 20 * HZ;
347
348 seq = ++dev->mt76.mcu.msg_seq & 0xf;
349 if (!seq)
350 seq = ++dev->mt76.mcu.msg_seq & 0xf;
351
352 if (cmd == MCU_CMD_FW_SCATTER) {
353 txq = MT_MCUQ_FWDL;
354 goto exit;
355 }
356
357 txd_len = cmd & MCU_UNI_PREFIX ? sizeof(*uni_txd) : sizeof(*mcu_txd);
358 txd = (__le32 *)skb_push(skb, txd_len);
359
360 if (test_bit(MT76_STATE_MCU_RUNNING, &dev->mphy.state)) {
361 qidx = MT_TX_MCU_PORT_RX_Q0;
362 pkt_fmt = MT_TX_TYPE_CMD;
363 } else {
364 qidx = MT_TX_MCU_PORT_RX_Q0;
365 pkt_fmt = MT_TX_TYPE_CMD;
366 }
367
368 val = FIELD_PREP(MT_TXD0_TX_BYTES, skb->len) |
369 FIELD_PREP(MT_TXD0_PKT_FMT, pkt_fmt) |
370 FIELD_PREP(MT_TXD0_Q_IDX, qidx);
371 txd[0] = cpu_to_le32(val);
372
373 val = MT_TXD1_LONG_FORMAT |
374 FIELD_PREP(MT_TXD1_HDR_FORMAT, MT_HDR_FORMAT_CMD);
375 txd[1] = cpu_to_le32(val);
376
377 if (cmd & MCU_UNI_PREFIX) {
378 uni_txd = (struct mt7921_uni_txd *)txd;
379 uni_txd->len = cpu_to_le16(skb->len - sizeof(uni_txd->txd));
380 uni_txd->option = MCU_CMD_UNI_EXT_ACK;
381 uni_txd->cid = cpu_to_le16(mcu_cmd);
382 uni_txd->s2d_index = MCU_S2D_H2N;
383 uni_txd->pkt_type = MCU_PKT_ID;
384 uni_txd->seq = seq;
385
386 goto exit;
387 }
388
389 mcu_txd = (struct mt7921_mcu_txd *)txd;
390 mcu_txd->len = cpu_to_le16(skb->len - sizeof(mcu_txd->txd));
391 mcu_txd->pq_id = cpu_to_le16(MCU_PQ_ID(MT_TX_PORT_IDX_MCU, qidx));
392 mcu_txd->pkt_type = MCU_PKT_ID;
393 mcu_txd->seq = seq;
394
395 switch (cmd & ~MCU_CMD_MASK) {
396 case MCU_FW_PREFIX:
397 mcu_txd->set_query = MCU_Q_NA;
398 mcu_txd->cid = mcu_cmd;
399 break;
400 case MCU_CE_PREFIX:
401 if (cmd & MCU_QUERY_MASK)
402 mcu_txd->set_query = MCU_Q_QUERY;
403 else
404 mcu_txd->set_query = MCU_Q_SET;
405 mcu_txd->cid = mcu_cmd;
406 break;
407 default:
408 mcu_txd->cid = MCU_CMD_EXT_CID;
409 if (cmd & MCU_QUERY_PREFIX || cmd == MCU_EXT_CMD_EFUSE_ACCESS)
410 mcu_txd->set_query = MCU_Q_QUERY;
411 else
412 mcu_txd->set_query = MCU_Q_SET;
413 mcu_txd->ext_cid = mcu_cmd;
414 mcu_txd->ext_cid_ack = 1;
415 break;
416 }
417
418 if (cmd == MCU_EXT_CMD_MWDS_SUPPORT)
419 mcu_txd->s2d_index = MCU_S2D_H2C;
420 else
421 mcu_txd->s2d_index = MCU_S2D_H2N;
422 WARN_ON(cmd == MCU_EXT_CMD_EFUSE_ACCESS &&
423 mcu_txd->set_query != MCU_Q_QUERY);
424
425 exit:
426 if (wait_seq)
427 *wait_seq = seq;
428
429 return mt76_tx_queue_skb_raw(dev, mdev->q_mcu[txq], skb, 0);
430 }
431
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 67344 bytes --]
next prev parent reply other threads:[~2020-12-10 19:39 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-10 11:00 [PATCH net-next v1] mt76: mt7921: introduce mt7921e support sean.wang
2020-12-10 19:37 ` kernel test robot [this message]
2020-12-11 18:14 ` Kalle Valo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202012110319.Rgqeubb4-lkp@intel.com \
--to=lkp@intel.com \
--cc=Eric.Liang@mediatek.com \
--cc=Soul.Huang@mediatek.com \
--cc=YN.Chen@mediatek.com \
--cc=ch.yeh@mediatek.com \
--cc=kbuild-all@lists.01.org \
--cc=linux-wireless@vger.kernel.org \
--cc=lorenzo.bianconi@redhat.com \
--cc=nbd@nbd.name \
--cc=robin.chiu@mediatek.com \
--cc=ryder.lee@mediatek.com \
--cc=sean.wang@mediatek.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).