diff mbox series

[BlueZ,1/4] mgmt: Add support for Mesh in the kernel

Message ID 20220922203852.494315-2-brian.gix@intel.com
State New
Headers show
Series Mesh demon switched to using kernel Mesh MGMT | expand

Commit Message

Brian Gix Sept. 22, 2022, 8:38 p.m. UTC
These commands and events allow User space apps to test for Mesh
support, and request incoming mesh packets be delivered and request
outbound mesh packets to be sent. This is the basis for sharing
one controller between the legacy bluetoothd daemon and the mesh
bluetooth-meshd daemon.
---
 doc/mgmt-api.txt | 192 ++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 157 insertions(+), 35 deletions(-)

Comments

bluez.test.bot@gmail.com Sept. 22, 2022, 9:32 p.m. UTC | #1
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=679601

---Test result---

Test Summary:
CheckPatch                    FAIL      6.13 seconds
GitLint                       PASS      3.99 seconds
Prep - Setup ELL              PASS      27.65 seconds
Build - Prep                  PASS      0.86 seconds
Build - Configure             PASS      9.01 seconds
Build - Make                  FAIL      111.00 seconds
Make Check                    FAIL      1136.95 seconds
Make Check w/Valgrind         FAIL      85.66 seconds
Make Distcheck                FAIL      11.62 seconds
Build w/ext ELL - Configure   PASS      8.98 seconds
Build w/ext ELL - Make        FAIL      39.83 seconds
Incremental Build w/ patches  FAIL      354.58 seconds
Scan Build                    FAIL      633.10 seconds

Details
##############################
Test: CheckPatch - FAIL
Desc: Run checkpatch.pl script with rule in .checkpatch.conf
Output:
[BlueZ,1/4] mgmt: Add support for Mesh in the kernel
WARNING:REPEATED_WORD: Possible repeated word: 'command'
#282: FILE: doc/mgmt-api.txt:5146:
+	the Set Mesh Receiver command command, specifying which AD Types to

/github/workspace/src/12985789.patch total: 0 errors, 1 warnings, 222 lines checked

NOTE: For some of the reported defects, checkpatch may be able to
      mechanically convert to the typical style using --fix or --fix-inplace.

/github/workspace/src/12985789.patch has style problems, please review.

NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO

NOTE: If any of the errors are false positives, please report
      them to the maintainer, see CHECKPATCH in MAINTAINERS.

[BlueZ,3/4] mesh: Improve PB-ADV timing for reliability
WARNING:TYPO_SPELLING: 'dependant' may be misspelled - perhaps 'dependent'?
#66: 
Because provisioning is not speed dependant, Timing on outbound PB-ADV
                                  ^^^^^^^^^

/github/workspace/src/12985788.patch total: 0 errors, 1 warnings, 33 lines checked

NOTE: For some of the reported defects, checkpatch may be able to
      mechanically convert to the typical style using --fix or --fix-inplace.

/github/workspace/src/12985788.patch has style problems, please review.

NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO

NOTE: If any of the errors are false positives, please report
      them to the maintainer, see CHECKPATCH in MAINTAINERS.

[BlueZ,4/4] mesh: Add new kernel MGMT based IO transport
WARNING:LEADING_SPACE: please, no spaces at the start of a line
#698: FILE: mesh/mesh-mgmt.c:36:
+       0x76, 0x6e, 0xf3, 0xe8, 0x24, 0x5f, 0x05, 0xbf, /* UUID - Mesh */$

WARNING:LEADING_SPACE: please, no spaces at the start of a line
#699: FILE: mesh/mesh-mgmt.c:37:
+       0x8d, 0x4d, 0x03, 0x7a, 0xd7, 0x63, 0xe4, 0x2c,$

WARNING:LEADING_SPACE: please, no spaces at the start of a line
#700: FILE: mesh/mesh-mgmt.c:38:
+       0x01,                                           /* Action - enable */$

/github/workspace/src/12985790.patch total: 0 errors, 3 warnings, 806 lines checked

NOTE: For some of the reported defects, checkpatch may be able to
      mechanically convert to the typical style using --fix or --fix-inplace.

/github/workspace/src/12985790.patch has style problems, please review.

NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO

NOTE: If any of the errors are false positives, please report
      them to the maintainer, see CHECKPATCH in MAINTAINERS.


##############################
Test: Build - Make - FAIL
Desc: Build the BlueZ source tree
Output:
tools/mgmt-tester.c: In function ‘main’:
tools/mgmt-tester.c:12470:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
12470 | int main(int argc, char *argv[])
      |     ^~~~
mesh/mesh-io.c:27:10: fatal error: mesh/mesh-io-mgmt.h: No such file or directory
   27 | #include "mesh/mesh-io-mgmt.h"
      |          ^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [Makefile:7491: mesh/mesh-io.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:4451: all] Error 2


##############################
Test: Make Check - FAIL
Desc: Run 'make check'
Output:
unit/test-avdtp.c: In function ‘main’:
unit/test-avdtp.c:766:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
  766 | int main(int argc, char *argv[])
      |     ^~~~
unit/test-avrcp.c: In function ‘main’:
unit/test-avrcp.c:989:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
  989 | int main(int argc, char *argv[])
      |     ^~~~
mesh/mesh-io.c:27:10: fatal error: mesh/mesh-io-mgmt.h: No such file or directory
   27 | #include "mesh/mesh-io-mgmt.h"
      |          ^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [Makefile:7491: mesh/mesh-io.o] Error 1
make: *** [Makefile:11588: 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:12470:5: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
12470 | int main(int argc, char *argv[])
      |     ^~~~
mesh/mesh-io.c:27:10: fatal error: mesh/mesh-io-mgmt.h: No such file or directory
   27 | #include "mesh/mesh-io-mgmt.h"
      |          ^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [Makefile:7491: mesh/mesh-io.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:4451: all] Error 2


##############################
Test: Make Distcheck - FAIL
Desc: Run distcheck to check the distribution
Output:
make[2]: *** No rule to make target 'mesh/mesh-io-mgmt.h', needed by 'distdir-am'.  Stop.
make[1]: *** [Makefile:11421: distdir] Error 2
make: *** [Makefile:11497: dist] Error 2


##############################
Test: Build w/ext ELL - Make - FAIL
Desc: Build BlueZ source with '--enable-external-ell' configuration
Output:
mesh/mesh-io.c:27:10: fatal error: mesh/mesh-io-mgmt.h: No such file or directory
   27 | #include "mesh/mesh-io-mgmt.h"
      |          ^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [Makefile:7491: mesh/mesh-io.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:4451: all] Error 2


##############################
Test: Incremental Build w/ patches - FAIL
Desc: Incremental build per patch in the series
Output:
mesh/mesh-io.c:27:10: fatal error: mesh/mesh-io-mgmt.h: No such file or directory
   27 | #include "mesh/mesh-io-mgmt.h"
      |          ^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [Makefile:7491: mesh/mesh-io.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:4451: all] Error 2


##############################
Test: Scan Build - FAIL
Desc: Run Scan Build with patches
Output:
tools/btpclient.c:2494:3: warning: Value stored to 'reply' is never read
                reply = l_dbus_message_new_error(ag.pending_req,
                ^       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
In file included from unit/test-mesh-crypto.c:20:
In file included from ./mesh/crypto.c:18:
In file included from ./ell/ell.h:1:
./ell/util.h:187:9: warning: 1st function call argument is an uninitialized value
        return L_BE32_TO_CPU(L_GET_UNALIGNED((const uint32_t *) ptr));
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./ell/util.h:89:28: note: expanded from macro 'L_BE32_TO_CPU'
#define L_BE32_TO_CPU(val) bswap_32(val)
                           ^~~~~~~~~~~~~
/usr/include/byteswap.h:34:21: note: expanded from macro 'bswap_32'
#define bswap_32(x) __bswap_32 (x)
                    ^~~~~~~~~~~~~~
unit/test-mesh-crypto.c:965:11: warning: The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage
                key_aid |= KEY_ID_AKF;
                ~~~~~~~ ^
unit/test-mesh-crypto.c:1008:2: warning: 4th function call argument is an uninitialized value
        verify_uint8("NID", 0, keys->net_nid, nid);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
unit/test-mesh-crypto.c:1289:6: warning: Branch condition evaluates to a garbage value
        if (ctl) {
            ^~~
unit/test-mesh-crypto.c:1509:7: warning: Branch condition evaluates to a garbage value
                if (net_ctl) {
                    ^~~~~~~
unit/test-mesh-crypto.c:1763:2: warning: 1st function call argument is an uninitialized value
        l_put_be64(cmac_tmp, cmac);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~
6 warnings generated.
src/advertising.c:898:2: warning: Null pointer passed to 2nd parameter expecting 'nonnull'
        memcpy(cp->data + adv_data_len, scan_rsp, scan_rsp_len);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
mesh/mesh-io.c:27:10: fatal error: mesh/mesh-io-mgmt.h: No such file or directory
   27 | #include "mesh/mesh-io-mgmt.h"
      |          ^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [Makefile:7491: mesh/mesh-io.o] Error 1
make: *** [Makefile:4451: all] Error 2




---
Regards,
Linux Bluetooth
diff mbox series

Patch

diff --git a/doc/mgmt-api.txt b/doc/mgmt-api.txt
index 23ea42228..90d612ed8 100644
--- a/doc/mgmt-api.txt
+++ b/doc/mgmt-api.txt
@@ -3861,45 +3861,132 @@  Add Advertisement Patterns Monitor With RSSI Threshold Command
 				Invalid Parameters
 
 
-Set Quality Report Command
-==========================
+Set Mesh Receiver Command
+=========================
 
 	Command Code:		0x0057
 	Controller Index:	<controller id>
-	Command Parameters:	Quality_Report (1 Octet)
-	Return Parameters:	Current_Settings (4 Octets)
+	Command Parameters:	Enable (1 Octets)
+				Window (2 Octets)
+				Period (2 Octets)
+				Num AD Types (1 Octets)
+				AD Types { }
 
-	This command is used to enable and disable the controller's quality
-	report feature. The allowed values for the Quality_Report command
-	parameter are 0x00 and 0x01. All other values will return Invalid
-	Parameters.
+	This command Enables or Disables Mesh Receiving. When enabled passive
+	scanning remains enabled for this controller.
+
+	The Window/Period values are used to set the Scan Parameters when no
+	other scanning is being done.
+
+	Num AD Types and AD Types parameter, filter Advertising and Scan
+	responses by AD type. Reponses that do not contain at least one of the
+	requested AD types will be ignored. Otherwise they will be delivered
+	with the Mesh Device Found event.
+
+	Possible errors:	Failed
+				No Resources
+				Invalid Parameters
+
+
+Read Mesh Features Command
+==========================
+
+	Command Code:		0x0058
+	Controller Index:	<controller id>
+	Command Parameters:
+	Return Parameters:	Index (2 Octets)
+				Max Handles (1 Octets)
+				Used Handles (1 Octets)
+				Handle { }
 
-	The value 0x00 disables the Quality Report, and the value 0x01
-	enables the Quality Report feature.
+	This command is used to both verify that Outbound Mesh packet
+	support is enabled, and to indicate the number of packets that
+	can and are simultaneously queued.
 
-	This command is only available for the controllers that support
-	either AOSP Bluetooth quality report or Intel telemetry event.
-	It is supported if the supported_settings indicate support for it.
+	Index identifies the HCI Controller that this information is valid for.
 
-	This command requires to use a valid controller index. Otherwise,
-	an Invalid Index status will be returned.
+	Max Handles indicates the maximum number of packets that may be queued.
 
-	The command is sent to the controller to enable/disable the quality
-	report feature, and generates a Command Complete event on success.
-	If the controller failed to execute the action, a Failed status will
-	be returned.
+	Used Handles indicates the number of packets awaiting transmission.
 
-	The quality report state is maintained by the kernel over the adapter
-	power cycle. When the adapter is powered off, the quality report
-	feature is disabled by the kernel. When the adapter is powered on, it
-	is enabled again by the kernel if it was enabled before.
+	Handle is an array of the currently outstanding packets.
 
 	Possible errors:	Failed
-				Invalid Index
+				No Resources
 				Invalid Parameters
-				Not Supported
 
 
+Transmit Mesh Packet Command
+============================
+
+	Command Code:		0x0059
+	Controller Index:	<controller id>
+	Command Parameters:	Addr (6 octets)
+				Addr Type (1 Octets)
+				Instant (8 Octets)
+				Delay (2 Octets)
+				Count (1 Octets)
+				Data Length (1 Octets)
+				Data (variable)
+
+	Return Parameters:	Handle (1 Octets)
+
+	This command sends a Mesh Packet as a NONCONN LE Advertisement.
+
+	The Addr + Addr Type parameters specifify the address to use in the
+	outbound advertising packet. If BD_ADDR_ANY and LE_RANDOM is set, the
+	kernel will create a single use non-resolvable address.
+
+	The Instant parameter is used in combination with the Delay
+	parameter, to finely time the sending of the Advertising packet. It
+	should be set to the Instant value tag of a received incoming
+	Mesh Device Found Event. It is only useful in POLL-RESPONSE situations
+	where a response must be sent within a negotiated time window. The value
+	of the Instant parameter should not be interpreted by the host, and
+	only has meaning to the controller.
+
+	The Delay parameter, if 0x0000, will cause the packet to be sent
+	at the earliest opportunity. If non-Zero, and the controller supports
+	delayed delivery, the Instant and Delay parameters will be used
+	to delay the outbound packet. While the Instant is not defined, the
+	Delay is specified in milliseconds.
+
+	The Count parameter must be sent to a non-Zero value indicating the
+	number of times this packet will be sent before transmission completes.
+	If the Delay parameter is non-Zero, then Count must be 1 only.
+
+	The Data parameter is an octet array of the AD Type and Mesh Packet.
+
+	This command will return immediately, and if it succeeds, will generate
+	a Mesh Packet Transmission Complete event when after the packet has been
+	sent.
+
+	Possible errors:	Failed
+				Busy
+				No Resources
+				Invalid Parameters
+
+
+Cancel Transmit Mesh Packet Command
+===================================
+
+	Command Code:		0x005A
+	Controller Index:	<controller id>
+	Command Parameters:	Handle (1 Octets)
+
+	This command may be used to cancel an outbound transmission request.
+
+	The Handle parameter is the returned handle from a successful Transmit
+	Mesh Packet request. If Zero is specified as the handle, all outstanding
+	send requests are canceled.
+
+	For each mesh packet canceled, the Mesh Packet Transmission Complete
+	event will be generated, regardless of whether the packet was sent
+	successfully.
+
+	Possible errors:	Failed
+				Invalid Parameters
+
 Command Complete Event
 ======================
 
@@ -5022,20 +5109,55 @@  Advertisement Monitor Device Lost Event
 	This event will be sent to all management sockets.
 
 
-Quality Report Event
-====================
+Mesh Device Found Event
+=======================
 
 	Event code:		0x0031
 	Controller Index:	<controller_id>
-	Event Parameters:	Quality_Spec (1 Octet)
-				Report_Len (2 Octets)
-				Report (0-65535 Octets)
+	Event Parameters:	Address (6 Octets)
+				Address_Type (1 Octet)
+				RSSI (1 Octet)
+				Instant (8 Octets)
+				Flags (4 Octets)
+				AD_Data_Length (2 Octets)
+				AD_Data (0-65535 Octets)
 
-	This event carries the Bluetooth quality report sent by the
-	controller.
+	This event indicates that the controller has received an Advertisement
+	or Scan Result containing an AD Type matching the Mesh scan set.
+
+	The address of the sending device is returned, and must be a valid LE
+	Address_Type.
+
+	Possible values for the Address_Type parameter:
+		0	Reserved (not in use)
+		1	LE Public
+		2	LE Random
+
+	The RSSI field is a signed octet, and is the RSSI reported by the
+	receiving controller.
+
+	The Instant field is 64 bit value that represents the instant in time
+	the packet was received. It's value is not intended to be interpretted
+	by the host, and is only useful if the host wants to make a timed
+	response to the received packet. (i.e. a Poll/Response)
+
+	AD_Length and AD_Data contains the Info structure of Advertising and
+	Scan rsults. To receive this event, AD filters must be requested with
+	the Set Mesh Receiver command command, specifying which AD Types to
+	return. All AD structures will be received in this event if any of the
+	filtered AD Types are present.
+
+	This event will be sent to all management sockets.
+
+
+Mesh Packet Transmit Complete Event
+===================================
+
+	Event code:		0x0032
+	Controller Index:	<controller_id>
+	Event Parameters:	Handle (1 Octets)
 
-	Possible values for the Quality_Spec parameter:
-		0	AOSP Bluetooth Quality Report Event
-		1	Intel Telemetry Event
+	This event indicates that a requested outbound Mesh packet has
+	completed and no longer occupies a transmit slot.
 
 	This event will be sent to all management sockets.