All of lore.kernel.org
 help / color / mirror / Atom feed
* [BlueZ PATCH v2 1/3] core: Add parmas to set interleaving durations
@ 2020-10-30  9:11 Howard Chung
  2020-10-30  9:11 ` [BlueZ PATCH v2 2/3] core: Add param to disable interleave scan Howard Chung
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Howard Chung @ 2020-10-30  9:11 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: luiz.dentz, mmandlik, mcchou, alainm, Howard Chung

This patch adds parameters to control the durations of allowlist scan
and no-filter scan when the kernel is doing interleaving scan.
---

Changes in v2:
- re-implement on new mgmt_tlv API

 src/adapter.c | 12 ++++++++++++
 src/btd.h     |  3 +++
 src/main.c    | 12 ++++++++++++
 src/main.conf |  7 +++++++
 4 files changed, 34 insertions(+)

diff --git a/src/adapter.c b/src/adapter.c
index cac90b01bdc0..bdfe41d7e88c 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -4342,6 +4342,18 @@ static void load_default_system_params(struct btd_adapter *adapter)
 			goto done;
 	}
 
+	if (btd_opts.defaults.le.advmon_allowlist_scan_duration) {
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x001d,
+				&btd_opts.defaults.le.advmon_allowlist_scan_duration))
+			goto done;
+	}
+
+	if (btd_opts.defaults.le.advmon_no_filter_scan_duration) {
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x001e,
+				&btd_opts.defaults.le.advmon_no_filter_scan_duration))
+			goto done;
+	}
+
 	err = mgmt_send_tlv(adapter->mgmt, MGMT_OP_SET_DEF_SYSTEM_CONFIG,
 			adapter->dev_id, tlv_list, NULL, NULL, NULL);
 
diff --git a/src/btd.h b/src/btd.h
index 4cd117538fda..b0df77fe3ab3 100644
--- a/src/btd.h
+++ b/src/btd.h
@@ -71,6 +71,9 @@ struct btd_le_defaults {
 	uint16_t	conn_latency;
 	uint16_t	conn_lsto;
 	uint16_t	autoconnect_timeout;
+
+	uint16_t	advmon_allowlist_scan_duration;
+	uint16_t	advmon_no_filter_scan_duration;
 };
 
 struct btd_defaults {
diff --git a/src/main.c b/src/main.c
index 0ae45015fbe8..47887a4059a1 100644
--- a/src/main.c
+++ b/src/main.c
@@ -114,6 +114,8 @@ static const char *le_options[] = {
 	"ConnectionLatency",
 	"ConnectionSupervisionTimeout",
 	"Autoconnecttimeout",
+	"AdvMonAllowlistScanDuration",
+	"AdvMonNoFilterScanDuration",
 	NULL
 };
 
@@ -497,6 +499,16 @@ static void parse_le_config(GKeyFile *config)
 		  sizeof(btd_opts.defaults.le.autoconnect_timeout),
 		  0x0001,
 		  0x4000},
+		{ "AdvMonAllowlistScanDuration",
+		  &btd_opts.defaults.le.advmon_allowlist_scan_duration,
+		  sizeof(btd_opts.defaults.le.advmon_allowlist_scan_duration),
+		  1,
+		  10000},
+		{ "AdvMonNoFilterScanDuration",
+		  &btd_opts.defaults.le.advmon_no_filter_scan_duration,
+		  sizeof(btd_opts.defaults.le.advmon_no_filter_scan_duration),
+		  1,
+		  10000},
 	};
 
 	if (btd_opts.mode == BT_MODE_BREDR)
diff --git a/src/main.conf b/src/main.conf
index 1b349821294b..a3f2020b04dc 100644
--- a/src/main.conf
+++ b/src/main.conf
@@ -160,6 +160,13 @@
 #ConnectionSupervisionTimeout=
 #Autoconnecttimeout=
 
+# Scan duration during interleaving scan. Only used when scanning for ADV
+# monitors. The units are msec.
+# Default: 300
+#AdvMonAllowlistScanDuration=
+# Default: 500
+#AdvMonNoFilterScanDuration=
+
 [GATT]
 # GATT attribute cache.
 # Possible values:
-- 
2.29.1.341.ge80a0c044ae-goog


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [BlueZ PATCH v2 2/3] core: Add param to disable interleave scan
  2020-10-30  9:11 [BlueZ PATCH v2 1/3] core: Add parmas to set interleaving durations Howard Chung
@ 2020-10-30  9:11 ` Howard Chung
  2020-10-30  9:11 ` [BlueZ PATCH v2 3/3] core: Fix mistakes of using mgmt_tlv_add_fixed Howard Chung
  2020-10-30 17:58 ` [BlueZ PATCH v2 1/3] core: Add parmas to set interleaving durations Luiz Augusto von Dentz
  2 siblings, 0 replies; 4+ messages in thread
From: Howard Chung @ 2020-10-30  9:11 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: luiz.dentz, mmandlik, mcchou, alainm, Howard Chung

This patch adds parameter to enable/disable the interleave scan feature.
---

Changes in v2:
- set enable_advmon_interleave_scan to uint8_t

 src/adapter.c | 6 ++++++
 src/btd.h     | 1 +
 src/main.c    | 7 +++++++
 src/main.conf | 6 ++++++
 4 files changed, 20 insertions(+)

diff --git a/src/adapter.c b/src/adapter.c
index bdfe41d7e88c..c7b2e0233639 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -4354,6 +4354,12 @@ static void load_default_system_params(struct btd_adapter *adapter)
 			goto done;
 	}
 
+	if (btd_opts.defaults.le.enable_advmon_interleave_scan != 0xFF) {
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x001f,
+				&btd_opts.defaults.le.enable_advmon_interleave_scan))
+			goto done;
+	}
+
 	err = mgmt_send_tlv(adapter->mgmt, MGMT_OP_SET_DEF_SYSTEM_CONFIG,
 			adapter->dev_id, tlv_list, NULL, NULL, NULL);
 
diff --git a/src/btd.h b/src/btd.h
index b0df77fe3ab3..c98414e35529 100644
--- a/src/btd.h
+++ b/src/btd.h
@@ -74,6 +74,7 @@ struct btd_le_defaults {
 
 	uint16_t	advmon_allowlist_scan_duration;
 	uint16_t	advmon_no_filter_scan_duration;
+	uint8_t		enable_advmon_interleave_scan;
 };
 
 struct btd_defaults {
diff --git a/src/main.c b/src/main.c
index 47887a4059a1..9bbfba2f09c0 100644
--- a/src/main.c
+++ b/src/main.c
@@ -116,6 +116,7 @@ static const char *le_options[] = {
 	"Autoconnecttimeout",
 	"AdvMonAllowlistScanDuration",
 	"AdvMonNoFilterScanDuration",
+	"EnableAdvMonInterleaveScan",
 	NULL
 };
 
@@ -509,6 +510,11 @@ static void parse_le_config(GKeyFile *config)
 		  sizeof(btd_opts.defaults.le.advmon_no_filter_scan_duration),
 		  1,
 		  10000},
+		{ "EnableAdvMonInterleaveScan",
+		  &btd_opts.defaults.le.enable_advmon_interleave_scan,
+		  sizeof(btd_opts.defaults.le.enable_advmon_interleave_scan),
+		  0,
+		  1},
 	};
 
 	if (btd_opts.mode == BT_MODE_BREDR)
@@ -761,6 +767,7 @@ static void init_defaults(void)
 	btd_opts.defaults.num_entries = 0;
 	btd_opts.defaults.br.page_scan_type = 0xFFFF;
 	btd_opts.defaults.br.scan_type = 0xFFFF;
+	btd_opts.defaults.le.enable_advmon_interleave_scan = 0xFF;
 
 	if (sscanf(VERSION, "%hhu.%hhu", &major, &minor) != 2)
 		return;
diff --git a/src/main.conf b/src/main.conf
index a3f2020b04dc..54f6a36bd991 100644
--- a/src/main.conf
+++ b/src/main.conf
@@ -167,6 +167,12 @@
 # Default: 500
 #AdvMonNoFilterScanDuration=
 
+# Enable/Disable Advertisement Monitor interleave scan for power saving.
+# 0: disable
+# 1: enable
+# Defaults to 1
+#EnableAdvMonInterleaveScan=
+
 [GATT]
 # GATT attribute cache.
 # Possible values:
-- 
2.29.1.341.ge80a0c044ae-goog


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [BlueZ PATCH v2 3/3] core: Fix mistakes of using mgmt_tlv_add_fixed
  2020-10-30  9:11 [BlueZ PATCH v2 1/3] core: Add parmas to set interleaving durations Howard Chung
  2020-10-30  9:11 ` [BlueZ PATCH v2 2/3] core: Add param to disable interleave scan Howard Chung
@ 2020-10-30  9:11 ` Howard Chung
  2020-10-30 17:58 ` [BlueZ PATCH v2 1/3] core: Add parmas to set interleaving durations Luiz Augusto von Dentz
  2 siblings, 0 replies; 4+ messages in thread
From: Howard Chung @ 2020-10-30  9:11 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: luiz.dentz, mmandlik, mcchou, alainm, Howard Chung

Fix mistakes on checking the result of mgmt_tlv_add_fixed.
---

(no changes since v1)

 src/adapter.c | 52 +++++++++++++++++++++++++--------------------------
 1 file changed, 26 insertions(+), 26 deletions(-)

diff --git a/src/adapter.c b/src/adapter.c
index c7b2e0233639..f4d05f3731df 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -4187,157 +4187,157 @@ static void load_default_system_params(struct btd_adapter *adapter)
 	}
 
 	if (btd_opts.defaults.br.page_scan_win) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x0002,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x0002,
 					&btd_opts.defaults.br.page_scan_win))
 			goto done;
 	}
 
 	if (btd_opts.defaults.br.scan_type != 0xFFFF) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x0003,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x0003,
 					&btd_opts.defaults.br.scan_type))
 			goto done;
 	}
 
 	if (btd_opts.defaults.br.scan_interval) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x0004,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x0004,
 					&btd_opts.defaults.br.scan_interval))
 			goto done;
 	}
 
 	if (btd_opts.defaults.br.scan_win) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x0005,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x0005,
 					&btd_opts.defaults.br.scan_win))
 			goto done;
 	}
 
 	if (btd_opts.defaults.br.link_supervision_timeout) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x0006,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x0006,
 			&btd_opts.defaults.br.link_supervision_timeout))
 			goto done;
 	}
 
 	if (btd_opts.defaults.br.page_timeout) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x0007,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x0007,
 					&btd_opts.defaults.br.page_timeout))
 			goto done;
 	}
 
 	if (btd_opts.defaults.br.min_sniff_interval) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x0008,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x0008,
 				&btd_opts.defaults.br.min_sniff_interval))
 			goto done;
 	}
 
 	if (btd_opts.defaults.br.max_sniff_interval) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x0009,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x0009,
 				&btd_opts.defaults.br.max_sniff_interval))
 			goto done;
 	}
 
 	if (btd_opts.defaults.le.min_adv_interval) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x000a,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x000a,
 				&btd_opts.defaults.le.min_adv_interval))
 			goto done;
 	}
 
 	if (btd_opts.defaults.le.max_adv_interval) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x000b,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x000b,
 				&btd_opts.defaults.le.max_adv_interval))
 			goto done;
 	}
 
 	if (btd_opts.defaults.le.adv_rotation_interval) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x000c,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x000c,
 				&btd_opts.defaults.le.adv_rotation_interval))
 			goto done;
 	}
 
 	if (btd_opts.defaults.le.scan_interval_autoconnect) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x000d,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x000d,
 			&btd_opts.defaults.le.scan_interval_autoconnect))
 			goto done;
 	}
 
 	if (btd_opts.defaults.le.scan_win_autoconnect) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x000e,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x000e,
 				&btd_opts.defaults.le.scan_win_autoconnect))
 			goto done;
 	}
 
 	if (btd_opts.defaults.le.scan_interval_suspend) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x000f,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x000f,
 				&btd_opts.defaults.le.scan_interval_suspend))
 			goto done;
 	}
 
 	if (btd_opts.defaults.le.scan_win_suspend) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x0010,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x0010,
 				&btd_opts.defaults.le.scan_win_suspend))
 			goto done;
 	}
 
 	if (btd_opts.defaults.le.scan_interval_discovery) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x0011,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x0011,
 				&btd_opts.defaults.le.scan_interval_discovery))
 			goto done;
 	}
 
 	if (btd_opts.defaults.le.scan_win_discovery) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x0012,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x0012,
 				&btd_opts.defaults.le.scan_win_discovery))
 			goto done;
 	}
 
 	if (btd_opts.defaults.le.scan_interval_adv_monitor) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x0013,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x0013,
 			&btd_opts.defaults.le.scan_interval_adv_monitor))
 			goto done;
 	}
 
 	if (btd_opts.defaults.le.scan_win_adv_monitor) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x0014,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x0014,
 				&btd_opts.defaults.le.scan_win_adv_monitor))
 			goto done;
 	}
 
 	if (btd_opts.defaults.le.scan_interval_connect) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x0015,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x0015,
 				&btd_opts.defaults.le.scan_interval_connect))
 			goto done;
 	}
 
 	if (btd_opts.defaults.le.scan_win_connect) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x0016,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x0016,
 				&btd_opts.defaults.le.scan_win_connect))
 			goto done;
 	}
 
 	if (btd_opts.defaults.le.min_conn_interval) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x0017,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x0017,
 				&btd_opts.defaults.le.min_conn_interval))
 			goto done;
 	}
 
 	if (btd_opts.defaults.le.max_conn_interval) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x0018,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x0018,
 				&btd_opts.defaults.le.max_conn_interval))
 			goto done;
 	}
 
 	if (btd_opts.defaults.le.conn_latency) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x0019,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x0019,
 					&btd_opts.defaults.le.conn_latency))
 			goto done;
 	}
 
 	if (btd_opts.defaults.le.conn_lsto) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x001a,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x001a,
 					&btd_opts.defaults.le.conn_lsto))
 			goto done;
 	}
 
 	if (btd_opts.defaults.le.autoconnect_timeout) {
-		if (mgmt_tlv_add_fixed(tlv_list, 0x001b,
+		if (!mgmt_tlv_add_fixed(tlv_list, 0x001b,
 				&btd_opts.defaults.le.autoconnect_timeout))
 			goto done;
 	}
-- 
2.29.1.341.ge80a0c044ae-goog


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [BlueZ PATCH v2 1/3] core: Add parmas to set interleaving durations
  2020-10-30  9:11 [BlueZ PATCH v2 1/3] core: Add parmas to set interleaving durations Howard Chung
  2020-10-30  9:11 ` [BlueZ PATCH v2 2/3] core: Add param to disable interleave scan Howard Chung
  2020-10-30  9:11 ` [BlueZ PATCH v2 3/3] core: Fix mistakes of using mgmt_tlv_add_fixed Howard Chung
@ 2020-10-30 17:58 ` Luiz Augusto von Dentz
  2 siblings, 0 replies; 4+ messages in thread
From: Luiz Augusto von Dentz @ 2020-10-30 17:58 UTC (permalink / raw)
  To: Howard Chung
  Cc: linux-bluetooth, Manish Mandlik, Miao-chen Chou, Alain Michaud

Hi Howard,

On Fri, Oct 30, 2020 at 2:11 AM Howard Chung <howardchung@google.com> wrote:
>
> This patch adds parameters to control the durations of allowlist scan
> and no-filter scan when the kernel is doing interleaving scan.
> ---
>
> Changes in v2:
> - re-implement on new mgmt_tlv API
>
>  src/adapter.c | 12 ++++++++++++
>  src/btd.h     |  3 +++
>  src/main.c    | 12 ++++++++++++
>  src/main.conf |  7 +++++++
>  4 files changed, 34 insertions(+)
>
> diff --git a/src/adapter.c b/src/adapter.c
> index cac90b01bdc0..bdfe41d7e88c 100644
> --- a/src/adapter.c
> +++ b/src/adapter.c
> @@ -4342,6 +4342,18 @@ static void load_default_system_params(struct btd_adapter *adapter)
>                         goto done;
>         }
>
> +       if (btd_opts.defaults.le.advmon_allowlist_scan_duration) {
> +               if (!mgmt_tlv_add_fixed(tlv_list, 0x001d,
> +                               &btd_opts.defaults.le.advmon_allowlist_scan_duration))
> +                       goto done;
> +       }
> +
> +       if (btd_opts.defaults.le.advmon_no_filter_scan_duration) {
> +               if (!mgmt_tlv_add_fixed(tlv_list, 0x001e,
> +                               &btd_opts.defaults.le.advmon_no_filter_scan_duration))
> +                       goto done;
> +       }
> +
>         err = mgmt_send_tlv(adapter->mgmt, MGMT_OP_SET_DEF_SYSTEM_CONFIG,
>                         adapter->dev_id, tlv_list, NULL, NULL, NULL);
>
> diff --git a/src/btd.h b/src/btd.h
> index 4cd117538fda..b0df77fe3ab3 100644
> --- a/src/btd.h
> +++ b/src/btd.h
> @@ -71,6 +71,9 @@ struct btd_le_defaults {
>         uint16_t        conn_latency;
>         uint16_t        conn_lsto;
>         uint16_t        autoconnect_timeout;
> +
> +       uint16_t        advmon_allowlist_scan_duration;
> +       uint16_t        advmon_no_filter_scan_duration;
>  };
>
>  struct btd_defaults {
> diff --git a/src/main.c b/src/main.c
> index 0ae45015fbe8..47887a4059a1 100644
> --- a/src/main.c
> +++ b/src/main.c
> @@ -114,6 +114,8 @@ static const char *le_options[] = {
>         "ConnectionLatency",
>         "ConnectionSupervisionTimeout",
>         "Autoconnecttimeout",
> +       "AdvMonAllowlistScanDuration",
> +       "AdvMonNoFilterScanDuration",
>         NULL
>  };
>
> @@ -497,6 +499,16 @@ static void parse_le_config(GKeyFile *config)
>                   sizeof(btd_opts.defaults.le.autoconnect_timeout),
>                   0x0001,
>                   0x4000},
> +               { "AdvMonAllowlistScanDuration",
> +                 &btd_opts.defaults.le.advmon_allowlist_scan_duration,
> +                 sizeof(btd_opts.defaults.le.advmon_allowlist_scan_duration),
> +                 1,
> +                 10000},
> +               { "AdvMonNoFilterScanDuration",
> +                 &btd_opts.defaults.le.advmon_no_filter_scan_duration,
> +                 sizeof(btd_opts.defaults.le.advmon_no_filter_scan_duration),
> +                 1,
> +                 10000},
>         };
>
>         if (btd_opts.mode == BT_MODE_BREDR)
> diff --git a/src/main.conf b/src/main.conf
> index 1b349821294b..a3f2020b04dc 100644
> --- a/src/main.conf
> +++ b/src/main.conf
> @@ -160,6 +160,13 @@
>  #ConnectionSupervisionTimeout=
>  #Autoconnecttimeout=
>
> +# Scan duration during interleaving scan. Only used when scanning for ADV
> +# monitors. The units are msec.
> +# Default: 300
> +#AdvMonAllowlistScanDuration=
> +# Default: 500
> +#AdvMonNoFilterScanDuration=
> +
>  [GATT]
>  # GATT attribute cache.
>  # Possible values:
> --
> 2.29.1.341.ge80a0c044ae-goog

Applied, thanks.

-- 
Luiz Augusto von Dentz

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-10-30 17:58 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-30  9:11 [BlueZ PATCH v2 1/3] core: Add parmas to set interleaving durations Howard Chung
2020-10-30  9:11 ` [BlueZ PATCH v2 2/3] core: Add param to disable interleave scan Howard Chung
2020-10-30  9:11 ` [BlueZ PATCH v2 3/3] core: Fix mistakes of using mgmt_tlv_add_fixed Howard Chung
2020-10-30 17:58 ` [BlueZ PATCH v2 1/3] core: Add parmas to set interleaving durations Luiz Augusto von Dentz

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.