2022-10-14 02:06:49

by Tedd Ho-Jeong An

[permalink] [raw]
Subject: [BlueZ PATCH] monitor: Fix incorrect vendor name for vendor cmd and evt

From: Tedd Ho-Jeong An <[email protected]>

This patch fixes the issue that the vendor name for all vendor HCI
command and event are display as Microsoft.
---
monitor/packet.c | 37 ++++++++++++++++++++++++++++---------
1 file changed, 28 insertions(+), 9 deletions(-)

diff --git a/monitor/packet.c b/monitor/packet.c
index 692012029..d11d8808d 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -9821,7 +9821,7 @@ static const char *get_supported_command(int bit)
return NULL;
}

-static const char *current_vendor_str(void)
+static const char *current_vendor_str(uint16_t ocf)
{
uint16_t manufacturer, msft_opcode;

@@ -9833,7 +9833,8 @@ static const char *current_vendor_str(void)
msft_opcode = BT_HCI_CMD_NOP;
}

- if (msft_opcode != BT_HCI_CMD_NOP)
+ if (msft_opcode != BT_HCI_CMD_NOP &&
+ cmd_opcode_ocf(msft_opcode) == ocf)
return "Microsoft";

switch (manufacturer) {
@@ -9891,9 +9892,6 @@ static const struct vendor_evt *current_vendor_evt(const void *data,
msft_opcode = BT_HCI_CMD_NOP;
}

- if (msft_opcode != BT_HCI_CMD_NOP)
- return NULL;
-
switch (manufacturer) {
case 2:
return intel_vendor_evt(data, consumed_size);
@@ -9904,6 +9902,27 @@ static const struct vendor_evt *current_vendor_evt(const void *data,
return NULL;
}

+static const char *current_vendor_evt_str(void)
+{
+ uint16_t manufacturer;
+
+ if (index_current < MAX_INDEX)
+ manufacturer = index_list[index_current].manufacturer;
+ else
+ manufacturer = fallback_manufacturer;
+
+ switch (manufacturer) {
+ case 2:
+ return "Intel";
+ case 15:
+ return "Broadcom";
+ case 93:
+ return "Realtek";
+ }
+
+ return NULL;
+}
+
static void inquiry_complete_evt(uint16_t index, const void *data, uint8_t size)
{
const struct bt_hci_evt_inquiry_complete *evt = data;
@@ -10084,7 +10103,7 @@ static void cmd_complete_evt(uint16_t index, const void *data, uint8_t size)
const struct vendor_ocf *vnd = current_vendor_ocf(ocf);

if (vnd) {
- const char *str = current_vendor_str();
+ const char *str = current_vendor_str(ocf);

if (str) {
snprintf(vendor_str, sizeof(vendor_str),
@@ -10176,7 +10195,7 @@ static void cmd_status_evt(uint16_t index, const void *data, uint8_t size)
const struct vendor_ocf *vnd = current_vendor_ocf(ocf);

if (vnd) {
- const char *str = current_vendor_str();
+ const char *str = current_vendor_str(ocf);

if (str) {
snprintf(vendor_str, sizeof(vendor_str),
@@ -11618,7 +11637,7 @@ static void vendor_evt(uint16_t index, const void *data, uint8_t size)
const struct vendor_evt *vnd = current_vendor_evt(data, &consumed_size);

if (vnd) {
- const char *str = current_vendor_str();
+ const char *str = current_vendor_evt_str();

if (str) {
snprintf(vendor_str, sizeof(vendor_str),
@@ -12020,7 +12039,7 @@ void packet_hci_command(struct timeval *tv, struct ucred *cred, uint16_t index,
const struct vendor_ocf *vnd = current_vendor_ocf(ocf);

if (vnd) {
- const char *str = current_vendor_str();
+ const char *str = current_vendor_str(ocf);

if (str) {
snprintf(vendor_str, sizeof(vendor_str),
--
2.34.1


2022-10-14 03:51:00

by bluez.test.bot

[permalink] [raw]
Subject: RE: [BlueZ] monitor: Fix incorrect vendor name for vendor cmd and evt

This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=685253

---Test result---

Test Summary:
CheckPatch PASS 1.06 seconds
GitLint PASS 0.74 seconds
Prep - Setup ELL PASS 26.18 seconds
Build - Prep PASS 0.67 seconds
Build - Configure PASS 8.13 seconds
Build - Make FAIL 145.92 seconds
Make Check FAIL 12.59 seconds
Make Check w/Valgrind FAIL 111.94 seconds
Make Distcheck PASS 233.42 seconds
Build w/ext ELL - Configure PASS 8.18 seconds
Build w/ext ELL - Make FAIL 54.77 seconds
Incremental Build w/ patches PASS 0.00 seconds
Scan Build FAIL 472.04 seconds

Details
##############################
Test: Build - Make - FAIL
Desc: Build the BlueZ source tree
Output:
tools/mgmt-tester.c: In function ‘main’:
tools/mgmt-tester.c:12514:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
12514 | int main(int argc, char *argv[])
| ^~~~
monitor/packet.c: In function ‘current_vendor_evt’:
monitor/packet.c:9881:25: error: variable ‘msft_opcode’ set but not used [-Werror=unused-but-set-variable]
9881 | uint16_t manufacturer, msft_opcode;
| ^~~~~~~~~~~
cc1: all warnings being treated as errors
make[1]: *** [Makefile:7490: monitor/packet.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:4450: all] Error 2


##############################
Test: Make Check - FAIL
Desc: Run 'make check'
Output:
monitor/packet.c: In function ‘current_vendor_evt’:
monitor/packet.c:9881:25: error: variable ‘msft_opcode’ set but not used [-Werror=unused-but-set-variable]
9881 | uint16_t manufacturer, msft_opcode;
| ^~~~~~~~~~~
cc1: all warnings being treated as errors
make[1]: *** [Makefile:7490: monitor/packet.o] Error 1
make: *** [Makefile:11587: check] Error 2


##############################
Test: Make Check w/Valgrind - FAIL
Desc: Run 'make check' with Valgrind
Output:
tools/mgmt-tester.c: In function ‘main’:
tools/mgmt-tester.c:12514:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
12514 | int main(int argc, char *argv[])
| ^~~~
monitor/packet.c: In function ‘current_vendor_evt’:
monitor/packet.c:9881:25: error: variable ‘msft_opcode’ set but not used [-Werror=unused-but-set-variable]
9881 | uint16_t manufacturer, msft_opcode;
| ^~~~~~~~~~~
cc1: all warnings being treated as errors
make[1]: *** [Makefile:7490: monitor/packet.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:4450: all] Error 2


##############################
Test: Build w/ext ELL - Make - FAIL
Desc: Build BlueZ source with '--enable-external-ell' configuration
Output:
monitor/packet.c: In function ‘current_vendor_evt’:
monitor/packet.c:9881:25: error: variable ‘msft_opcode’ set but not used [-Werror=unused-but-set-variable]
9881 | uint16_t manufacturer, msft_opcode;
| ^~~~~~~~~~~
cc1: all warnings being treated as errors
make[1]: *** [Makefile:7490: monitor/packet.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:4450: all] Error 2


##############################
Test: Scan Build - FAIL
Desc: Run Scan Build with patches
Output:
monitor/packet.c: In function ‘current_vendor_evt’:
monitor/packet.c:9881:25: error: variable ‘msft_opcode’ set but not used [-Werror=unused-but-set-variable]
9881 | uint16_t manufacturer, msft_opcode;
| ^~~~~~~~~~~
cc1: all warnings being treated as errors
make[1]: *** [Makefile:7490: monitor/packet.o] Error 1
make: *** [Makefile:4450: all] Error 2




---
Regards,
Linux Bluetooth