tree:
https://github.com/nbd168/wireless mt76
head: f40ac0f3d3c0e2b17185e1707a3b4552e5187dd5
commit: 323d7daad36398ce73598b2c6f9b675539ff4300 [30/35] mt76: mt7615: introduce uni cmd
command types
reproduce:
# apt-get install sparse
# sparse version: v0.6.1-180-g0558317d-dirty
git checkout 323d7daad36398ce73598b2c6f9b675539ff4300
make ARCH=x86_64 allmodconfig
make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
> drivers/net/wireless/mediatek/mt76/mt7615/mcu.c:95:30: sparse:
sparse: incorrect type in assignment (different base types) @@ expected restricted
__le16 [usertype] cid @@ got pe] cid @@
> drivers/net/wireless/mediatek/mt76/mt7615/mcu.c:95:30: sparse: expected restricted
__le16 [usertype] cid
> drivers/net/wireless/mediatek/mt76/mt7615/mcu.c:95:30: sparse: got int mcu_cmd
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c:160:5: sparse: sparse: symbol
'mt7615_mcu_wait_response' was not declared. Should it be static?
vim +95 drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
51
52 void mt7615_mcu_fill_msg(struct mt7615_dev *dev, struct sk_buff *skb,
53 int cmd, int *wait_seq)
54 {
55 int txd_len, mcu_cmd = cmd & MCU_CMD_MASK;
56 struct mt7615_uni_txd *uni_txd;
57 struct mt7615_mcu_txd *mcu_txd;
58 u8 seq, q_idx, pkt_fmt;
59 __le32 *txd;
60 u32 val;
61
62 seq = ++dev->mt76.mcu.msg_seq & 0xf;
63 if (!seq)
64 seq = ++dev->mt76.mcu.msg_seq & 0xf;
65 if (wait_seq)
66 *wait_seq = seq;
67
68 txd_len = cmd & MCU_UNI_PREFIX ? sizeof(*uni_txd) : sizeof(*mcu_txd);
69 txd = (__le32 *)skb_push(skb, txd_len);
70
71 if (cmd != MCU_CMD_FW_SCATTER) {
72 q_idx = MT_TX_MCU_PORT_RX_Q0;
73 pkt_fmt = MT_TX_TYPE_CMD;
74 } else {
75 q_idx = MT_TX_MCU_PORT_RX_FWDL;
76 pkt_fmt = MT_TX_TYPE_FW;
77 }
78
79 val = FIELD_PREP(MT_TXD0_TX_BYTES, skb->len) |
80 FIELD_PREP(MT_TXD0_P_IDX, MT_TX_PORT_IDX_MCU) |
81 FIELD_PREP(MT_TXD0_Q_IDX, q_idx);
82 txd[0] = cpu_to_le32(val);
83
84 val = MT_TXD1_LONG_FORMAT |
85 FIELD_PREP(MT_TXD1_HDR_FORMAT, MT_HDR_FORMAT_CMD) |
86 FIELD_PREP(MT_TXD1_PKT_FMT, pkt_fmt);
87 txd[1] = cpu_to_le32(val);
88
89 if (cmd & MCU_UNI_PREFIX) {
90 uni_txd = (struct mt7615_uni_txd *)txd;
91 uni_txd->len = cpu_to_le16(skb->len - sizeof(uni_txd->txd));
92 uni_txd->option = MCU_CMD_UNI_EXT_ACK;
93 uni_txd->s2d_index = MCU_S2D_H2N;
94 uni_txd->pkt_type = MCU_PKT_ID;
95 uni_txd->cid = mcu_cmd;
96 uni_txd->seq =
seq;
97
98 return;
99 }
100
101 mcu_txd = (struct mt7615_mcu_txd *)txd;
102 mcu_txd->len = cpu_to_le16(skb->len - sizeof(mcu_txd->txd));
103 mcu_txd->pq_id = cpu_to_le16(MCU_PQ_ID(MT_TX_PORT_IDX_MCU, q_idx));
104 mcu_txd->s2d_index = MCU_S2D_H2N;
105 mcu_txd->pkt_type = MCU_PKT_ID;
106 mcu_txd->seq = seq;
107
108 if (cmd & MCU_FW_PREFIX) {
109 mcu_txd->set_query = MCU_Q_NA;
110 mcu_txd->cid = mcu_cmd;
111 } else {
112 mcu_txd->cid = MCU_CMD_EXT_CID;
113 mcu_txd->set_query = MCU_Q_SET;
114 mcu_txd->ext_cid = cmd;
115 mcu_txd->ext_cid_ack = 1;
116 }
117 }
118
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org