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-mt79...
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/c3c0bafc670577a5135220f8c35fd845b...
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(a)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