From: kernel test robot <lkp@intel.com>
To: Calvin Owens <calvin@wbinvd.org>
Cc: oe-kbuild-all@lists.linux.dev, linux-bluetooth@vger.kernel.org,
Luiz Augusto von Dentz <luiz.von.dentz@intel.com>,
Paul Menzel <pmenzel@molgen.mpg.de>
Subject: [bluetooth-next:master 83/84] drivers/bluetooth/btmtksdio.c:442:33: error: array type has incomplete element type 'struct h4_recv_pkt'
Date: Sat, 30 Aug 2025 04:34:06 +0800 [thread overview]
Message-ID: <202508300413.OnIedvRh-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git master
head: 02925b3b935e2203077ec974b93bf2d5f84ab754
commit: 0e272fc7e17d429b018d4f2d9c5cacab10f5fab5 [83/84] Bluetooth: remove duplicate h4_recv_buf() in header
config: nios2-randconfig-002-20250830 (https://download.01.org/0day-ci/archive/20250830/202508300413.OnIedvRh-lkp@intel.com/config)
compiler: nios2-linux-gcc (GCC) 8.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250830/202508300413.OnIedvRh-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202508300413.OnIedvRh-lkp@intel.com/
All error/warnings (new ones prefixed by >>):
>> drivers/bluetooth/btmtksdio.c:442:33: error: array type has incomplete element type 'struct h4_recv_pkt'
static const struct h4_recv_pkt mtk_recv_pkts[] = {
^~~~~~~~~~~~~
>> drivers/bluetooth/btmtksdio.c:443:4: error: 'H4_RECV_ACL' undeclared here (not in a function); did you mean 'IP_RECVTTL'?
{ H4_RECV_ACL, .recv = btmtksdio_recv_acl },
^~~~~~~~~~~
IP_RECVTTL
>> drivers/bluetooth/btmtksdio.c:443:22: error: field name not in record or union initializer
{ H4_RECV_ACL, .recv = btmtksdio_recv_acl },
^
drivers/bluetooth/btmtksdio.c:443:22: note: (near initialization for 'mtk_recv_pkts')
>> drivers/bluetooth/btmtksdio.c:444:4: error: 'H4_RECV_SCO' undeclared here (not in a function)
{ H4_RECV_SCO, .recv = hci_recv_frame },
^~~~~~~~~~~
drivers/bluetooth/btmtksdio.c:444:22: error: field name not in record or union initializer
{ H4_RECV_SCO, .recv = hci_recv_frame },
^
drivers/bluetooth/btmtksdio.c:444:22: note: (near initialization for 'mtk_recv_pkts')
>> drivers/bluetooth/btmtksdio.c:445:4: error: 'H4_RECV_EVENT' undeclared here (not in a function); did you mean 'BPF_PERF_EVENT'?
{ H4_RECV_EVENT, .recv = btmtksdio_recv_event },
^~~~~~~~~~~~~
BPF_PERF_EVENT
drivers/bluetooth/btmtksdio.c:445:22: error: field name not in record or union initializer
{ H4_RECV_EVENT, .recv = btmtksdio_recv_event },
^
drivers/bluetooth/btmtksdio.c:445:22: note: (near initialization for 'mtk_recv_pkts')
In file included from include/linux/cleanup.h:5,
from include/linux/irqflags.h:17,
from include/asm-generic/cmpxchg.h:15,
from ./arch/nios2/include/generated/asm/cmpxchg.h:1,
from include/asm-generic/atomic.h:12,
from ./arch/nios2/include/generated/asm/atomic.h:1,
from include/linux/atomic.h:7,
from drivers/bluetooth/btmtksdio.c:14:
drivers/bluetooth/btmtksdio.c: In function 'btmtksdio_rx_packet':
include/linux/compiler.h:197:82: error: expression in static assertion is not an integer
#define __BUILD_BUG_ON_ZERO_MSG(e, msg, ...) ((int)sizeof(struct {_Static_assert(!(e), msg);}))
^
include/linux/compiler.h:202:28: note: in expansion of macro '__BUILD_BUG_ON_ZERO_MSG'
#define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(!__is_array(a), \
^~~~~~~~~~~~~~~~~~~~~~~
include/linux/array_size.h:11:59: note: in expansion of macro '__must_be_array'
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
^~~~~~~~~~~~~~~
drivers/bluetooth/btmtksdio.c:451:19: note: in expansion of macro 'ARRAY_SIZE'
int pkts_count = ARRAY_SIZE(mtk_recv_pkts);
^~~~~~~~~~
>> drivers/bluetooth/btmtksdio.c:493:34: error: invalid use of undefined type 'struct h4_recv_pkt'
if (sdio_hdr->bt_type == (&pkts[i])->type)
^
>> drivers/bluetooth/btmtksdio.c:493:34: error: dereferencing pointer to incomplete type 'const struct h4_recv_pkt'
drivers/bluetooth/btmtksdio.c:504:23: error: invalid use of undefined type 'struct h4_recv_pkt'
if (skb->len < (&pkts[i])->hlen) {
^
drivers/bluetooth/btmtksdio.c:509:16: error: invalid use of undefined type 'struct h4_recv_pkt'
switch ((&pkts[i])->lsize) {
^
drivers/bluetooth/btmtksdio.c:511:26: error: invalid use of undefined type 'struct h4_recv_pkt'
dlen = skb->data[(&pkts[i])->loff];
^
drivers/bluetooth/btmtksdio.c:515:15: error: invalid use of undefined type 'struct h4_recv_pkt'
(&pkts[i])->loff);
^
drivers/bluetooth/btmtksdio.c:521:30: error: invalid use of undefined type 'struct h4_recv_pkt'
pad_size = skb->len - (&pkts[i])->hlen - dlen;
^
drivers/bluetooth/btmtksdio.c:533:8: error: invalid use of undefined type 'struct h4_recv_pkt'
(&pkts[i])->recv(bdev->hdev, skb);
^
At top level:
>> drivers/bluetooth/btmtksdio.c:442:33: warning: 'mtk_recv_pkts' defined but not used [-Wunused-variable]
static const struct h4_recv_pkt mtk_recv_pkts[] = {
^~~~~~~~~~~~~
vim +442 drivers/bluetooth/btmtksdio.c
db57b625912abc Sean Wang 2021-11-20 441
9aebfd4a2200ab Sean Wang 2019-03-08 @442 static const struct h4_recv_pkt mtk_recv_pkts[] = {
db57b625912abc Sean Wang 2021-11-20 @443 { H4_RECV_ACL, .recv = btmtksdio_recv_acl },
9aebfd4a2200ab Sean Wang 2019-03-08 @444 { H4_RECV_SCO, .recv = hci_recv_frame },
9aebfd4a2200ab Sean Wang 2019-03-08 @445 { H4_RECV_EVENT, .recv = btmtksdio_recv_event },
9aebfd4a2200ab Sean Wang 2019-03-08 446 };
9aebfd4a2200ab Sean Wang 2019-03-08 447
9aebfd4a2200ab Sean Wang 2019-03-08 448 static int btmtksdio_rx_packet(struct btmtksdio_dev *bdev, u16 rx_size)
9aebfd4a2200ab Sean Wang 2019-03-08 449 {
9aebfd4a2200ab Sean Wang 2019-03-08 450 const struct h4_recv_pkt *pkts = mtk_recv_pkts;
9aebfd4a2200ab Sean Wang 2019-03-08 451 int pkts_count = ARRAY_SIZE(mtk_recv_pkts);
9aebfd4a2200ab Sean Wang 2019-03-08 452 struct mtkbtsdio_hdr *sdio_hdr;
9aebfd4a2200ab Sean Wang 2019-03-08 453 int err, i, pad_size;
9aebfd4a2200ab Sean Wang 2019-03-08 454 struct sk_buff *skb;
9aebfd4a2200ab Sean Wang 2019-03-08 455 u16 dlen;
9aebfd4a2200ab Sean Wang 2019-03-08 456
9aebfd4a2200ab Sean Wang 2019-03-08 457 if (rx_size < sizeof(*sdio_hdr))
9aebfd4a2200ab Sean Wang 2019-03-08 458 return -EILSEQ;
9aebfd4a2200ab Sean Wang 2019-03-08 459
9aebfd4a2200ab Sean Wang 2019-03-08 460 /* A SDIO packet is exactly containing a Bluetooth packet */
9aebfd4a2200ab Sean Wang 2019-03-08 461 skb = bt_skb_alloc(rx_size, GFP_KERNEL);
9aebfd4a2200ab Sean Wang 2019-03-08 462 if (!skb)
9aebfd4a2200ab Sean Wang 2019-03-08 463 return -ENOMEM;
9aebfd4a2200ab Sean Wang 2019-03-08 464
9aebfd4a2200ab Sean Wang 2019-03-08 465 skb_put(skb, rx_size);
9aebfd4a2200ab Sean Wang 2019-03-08 466
9aebfd4a2200ab Sean Wang 2019-03-08 467 err = sdio_readsb(bdev->func, skb->data, MTK_REG_CRDR, rx_size);
9aebfd4a2200ab Sean Wang 2019-03-08 468 if (err < 0)
9aebfd4a2200ab Sean Wang 2019-03-08 469 goto err_kfree_skb;
9aebfd4a2200ab Sean Wang 2019-03-08 470
9aebfd4a2200ab Sean Wang 2019-03-08 471 sdio_hdr = (void *)skb->data;
9aebfd4a2200ab Sean Wang 2019-03-08 472
9aebfd4a2200ab Sean Wang 2019-03-08 473 /* We assume the default error as -EILSEQ simply to make the error path
9aebfd4a2200ab Sean Wang 2019-03-08 474 * be cleaner.
9aebfd4a2200ab Sean Wang 2019-03-08 475 */
9aebfd4a2200ab Sean Wang 2019-03-08 476 err = -EILSEQ;
9aebfd4a2200ab Sean Wang 2019-03-08 477
9aebfd4a2200ab Sean Wang 2019-03-08 478 if (rx_size != le16_to_cpu(sdio_hdr->len)) {
9aebfd4a2200ab Sean Wang 2019-03-08 479 bt_dev_err(bdev->hdev, "Rx size in sdio header is mismatched ");
9aebfd4a2200ab Sean Wang 2019-03-08 480 goto err_kfree_skb;
9aebfd4a2200ab Sean Wang 2019-03-08 481 }
9aebfd4a2200ab Sean Wang 2019-03-08 482
9aebfd4a2200ab Sean Wang 2019-03-08 483 hci_skb_pkt_type(skb) = sdio_hdr->bt_type;
9aebfd4a2200ab Sean Wang 2019-03-08 484
9aebfd4a2200ab Sean Wang 2019-03-08 485 /* Remove MediaTek SDIO header */
9aebfd4a2200ab Sean Wang 2019-03-08 486 skb_pull(skb, sizeof(*sdio_hdr));
9aebfd4a2200ab Sean Wang 2019-03-08 487
9aebfd4a2200ab Sean Wang 2019-03-08 488 /* We have to dig into the packet to get payload size and then know how
9aebfd4a2200ab Sean Wang 2019-03-08 489 * many padding bytes at the tail, these padding bytes should be removed
9aebfd4a2200ab Sean Wang 2019-03-08 490 * before the packet is indicated to the core layer.
9aebfd4a2200ab Sean Wang 2019-03-08 491 */
9aebfd4a2200ab Sean Wang 2019-03-08 492 for (i = 0; i < pkts_count; i++) {
9aebfd4a2200ab Sean Wang 2019-03-08 @493 if (sdio_hdr->bt_type == (&pkts[i])->type)
9aebfd4a2200ab Sean Wang 2019-03-08 494 break;
9aebfd4a2200ab Sean Wang 2019-03-08 495 }
9aebfd4a2200ab Sean Wang 2019-03-08 496
9aebfd4a2200ab Sean Wang 2019-03-08 497 if (i >= pkts_count) {
9aebfd4a2200ab Sean Wang 2019-03-08 498 bt_dev_err(bdev->hdev, "Invalid bt type 0x%02x",
9aebfd4a2200ab Sean Wang 2019-03-08 499 sdio_hdr->bt_type);
9aebfd4a2200ab Sean Wang 2019-03-08 500 goto err_kfree_skb;
9aebfd4a2200ab Sean Wang 2019-03-08 501 }
9aebfd4a2200ab Sean Wang 2019-03-08 502
9aebfd4a2200ab Sean Wang 2019-03-08 503 /* Remaining bytes cannot hold a header*/
9aebfd4a2200ab Sean Wang 2019-03-08 504 if (skb->len < (&pkts[i])->hlen) {
9aebfd4a2200ab Sean Wang 2019-03-08 505 bt_dev_err(bdev->hdev, "The size of bt header is mismatched");
9aebfd4a2200ab Sean Wang 2019-03-08 506 goto err_kfree_skb;
9aebfd4a2200ab Sean Wang 2019-03-08 507 }
9aebfd4a2200ab Sean Wang 2019-03-08 508
9aebfd4a2200ab Sean Wang 2019-03-08 509 switch ((&pkts[i])->lsize) {
9aebfd4a2200ab Sean Wang 2019-03-08 510 case 1:
9aebfd4a2200ab Sean Wang 2019-03-08 511 dlen = skb->data[(&pkts[i])->loff];
9aebfd4a2200ab Sean Wang 2019-03-08 512 break;
9aebfd4a2200ab Sean Wang 2019-03-08 513 case 2:
9aebfd4a2200ab Sean Wang 2019-03-08 514 dlen = get_unaligned_le16(skb->data +
9aebfd4a2200ab Sean Wang 2019-03-08 515 (&pkts[i])->loff);
9aebfd4a2200ab Sean Wang 2019-03-08 516 break;
9aebfd4a2200ab Sean Wang 2019-03-08 517 default:
9aebfd4a2200ab Sean Wang 2019-03-08 518 goto err_kfree_skb;
9aebfd4a2200ab Sean Wang 2019-03-08 519 }
9aebfd4a2200ab Sean Wang 2019-03-08 520
9aebfd4a2200ab Sean Wang 2019-03-08 521 pad_size = skb->len - (&pkts[i])->hlen - dlen;
9aebfd4a2200ab Sean Wang 2019-03-08 522
9aebfd4a2200ab Sean Wang 2019-03-08 523 /* Remaining bytes cannot hold a payload */
9aebfd4a2200ab Sean Wang 2019-03-08 524 if (pad_size < 0) {
9aebfd4a2200ab Sean Wang 2019-03-08 525 bt_dev_err(bdev->hdev, "The size of bt payload is mismatched");
9aebfd4a2200ab Sean Wang 2019-03-08 526 goto err_kfree_skb;
9aebfd4a2200ab Sean Wang 2019-03-08 527 }
9aebfd4a2200ab Sean Wang 2019-03-08 528
9aebfd4a2200ab Sean Wang 2019-03-08 529 /* Remove padding bytes */
9aebfd4a2200ab Sean Wang 2019-03-08 530 skb_trim(skb, skb->len - pad_size);
9aebfd4a2200ab Sean Wang 2019-03-08 531
9aebfd4a2200ab Sean Wang 2019-03-08 532 /* Complete frame */
9aebfd4a2200ab Sean Wang 2019-03-08 533 (&pkts[i])->recv(bdev->hdev, skb);
9aebfd4a2200ab Sean Wang 2019-03-08 534
bcaa7d72dffddf Sean Wang 2019-04-18 535 bdev->hdev->stat.byte_rx += rx_size;
bcaa7d72dffddf Sean Wang 2019-04-18 536
9aebfd4a2200ab Sean Wang 2019-03-08 537 return 0;
9aebfd4a2200ab Sean Wang 2019-03-08 538
9aebfd4a2200ab Sean Wang 2019-03-08 539 err_kfree_skb:
9aebfd4a2200ab Sean Wang 2019-03-08 540 kfree_skb(skb);
9aebfd4a2200ab Sean Wang 2019-03-08 541
9aebfd4a2200ab Sean Wang 2019-03-08 542 return err;
9aebfd4a2200ab Sean Wang 2019-03-08 543 }
9aebfd4a2200ab Sean Wang 2019-03-08 544
:::::: The code at line 442 was first introduced by commit
:::::: 9aebfd4a2200ab8075e44379c758bccefdc589bb Bluetooth: mediatek: add support for MediaTek MT7663S and MT7668S SDIO devices
:::::: TO: Sean Wang <sean.wang@mediatek.com>
:::::: CC: Marcel Holtmann <marcel@holtmann.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next reply other threads:[~2025-08-29 20:35 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-29 20:34 kernel test robot [this message]
2025-08-30 0:50 ` [PATCH] Bluetooth: btmtksdio: Fix build after header cleanup Calvin Owens
2025-08-30 1:20 ` bluez.test.bot
2025-08-30 5:11 ` [PATCH] " Paul Menzel
2025-08-30 19:32 ` Calvin Owens
2025-09-02 15:29 ` Luiz Augusto von Dentz
2025-09-02 15:43 ` [PATCH v2] Bluetooth: " Calvin Owens
2025-09-02 16:20 ` patchwork-bot+bluetooth
2025-09-03 14:04 ` Calvin Owens
2025-09-03 14:06 ` [PATCH v3] " Calvin Owens
2025-09-03 14:17 ` [v3] " bluez.test.bot
2025-09-03 15:29 ` [PATCH v3] " Paul Menzel
2025-09-04 16:30 ` patchwork-bot+bluetooth
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=202508300413.OnIedvRh-lkp@intel.com \
--to=lkp@intel.com \
--cc=calvin@wbinvd.org \
--cc=linux-bluetooth@vger.kernel.org \
--cc=luiz.von.dentz@intel.com \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=pmenzel@molgen.mpg.de \
/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).