From: kernel test robot <lkp@intel.com>
To: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev
Subject: Re: [RFC v2] Bluetooth: MGMT: Make MGMT_OP_LOAD_CONN_PARAM update existing connection
Date: Fri, 10 May 2024 18:02:09 +0800 [thread overview]
Message-ID: <202405101700.NwHcUWrt-lkp@intel.com> (raw)
In-Reply-To: <20240509225043.1357933-1-luiz.dentz@gmail.com>
Hi Luiz,
[This is a private test report for your RFC patch.]
kernel test robot noticed the following build errors:
[auto build test ERROR on bluetooth-next/master]
[also build test ERROR on bluetooth/master linus/master v6.9-rc7 next-20240510]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Luiz-Augusto-von-Dentz/Bluetooth-MGMT-Make-MGMT_OP_LOAD_CONN_PARAM-update-existing-connection/20240510-065108
base: https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git master
patch link: https://lore.kernel.org/r/20240509225043.1357933-1-luiz.dentz%40gmail.com
patch subject: [RFC v2] Bluetooth: MGMT: Make MGMT_OP_LOAD_CONN_PARAM update existing connection
config: arm-defconfig (https://download.01.org/0day-ci/archive/20240510/202405101700.NwHcUWrt-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240510/202405101700.NwHcUWrt-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/202405101700.NwHcUWrt-lkp@intel.com/
All error/warnings (new ones prefixed by >>):
>> net/bluetooth/mgmt.c:7881:2: error: use of undeclared identifier 'conn'
conn = hci_conn_hash_lookup_le(hdev, params->addr.bdaddr,
^
>> net/bluetooth/mgmt.c:7881:52: error: no member named 'bdaddr' in 'bdaddr_t'
conn = hci_conn_hash_lookup_le(hdev, params->addr.bdaddr,
~~~~~~~~~~~~ ^
net/bluetooth/mgmt.c:7883:7: error: use of undeclared identifier 'conn'; did you mean 'down'?
if (!conn)
^~~~
down
include/linux/semaphore.h:44:13: note: 'down' declared here
extern void down(struct semaphore *sem);
^
>> net/bluetooth/mgmt.c:7883:7: warning: address of function 'down' will always evaluate to 'true' [-Wpointer-bool-conversion]
if (!conn)
~^~~~
net/bluetooth/mgmt.c:7883:7: note: prefix with the address-of operator to silence this warning
if (!conn)
^
&
>> net/bluetooth/mgmt.c:7884:20: error: expected ';' after return statement
return -ECANCELED
^
;
>> net/bluetooth/mgmt.c:7960:13: error: use of undeclared identifier 'params'; did you mean 'param'?
if (!i && params == 1) {
^~~~~~
param
net/bluetooth/mgmt.c:7926:27: note: 'param' declared here
struct mgmt_conn_param *param = &cp->params[i];
^
net/bluetooth/mgmt.c:7986:14: error: use of undeclared identifier 'params'
params->addr.bdaddr,
^
>> net/bluetooth/mgmt.c:7992:15: error: no member named 'le_supervision_timeout' in 'struct hci_conn'; did you mean 'le_supv_timeout'?
conn->le_supervision_timeout != timeout))
^~~~~~~~~~~~~~~~~~~~~~
le_supv_timeout
include/net/bluetooth/hci_core.h:712:9: note: 'le_supv_timeout' declared here
__u16 le_supv_timeout;
^
>> net/bluetooth/mgmt.c:7994:10: error: use of undeclared identifier 'hci_params'; did you mean 'hci_param'?
hci_params, NULL);
^~~~~~~~~~
hci_param
net/bluetooth/mgmt.c:7927:27: note: 'hci_param' declared here
struct hci_conn_params *hci_param;
^
>> net/bluetooth/mgmt.c:7999:2: error: expected parameter declarator
hci_dev_unlock(hdev);
^
include/net/bluetooth/hci_core.h:1615:40: note: expanded from macro 'hci_dev_unlock'
#define hci_dev_unlock(d) mutex_unlock(&d->lock)
^
>> net/bluetooth/mgmt.c:7999:2: error: expected ')'
include/net/bluetooth/hci_core.h:1615:40: note: expanded from macro 'hci_dev_unlock'
#define hci_dev_unlock(d) mutex_unlock(&d->lock)
^
net/bluetooth/mgmt.c:7999:2: note: to match this '('
include/net/bluetooth/hci_core.h:1615:39: note: expanded from macro 'hci_dev_unlock'
#define hci_dev_unlock(d) mutex_unlock(&d->lock)
^
>> net/bluetooth/mgmt.c:7999:2: error: type specifier missing, defaults to 'int' [-Werror,-Wimplicit-int]
hci_dev_unlock(hdev);
^
include/net/bluetooth/hci_core.h:1615:27: note: expanded from macro 'hci_dev_unlock'
#define hci_dev_unlock(d) mutex_unlock(&d->lock)
^
>> net/bluetooth/mgmt.c:7999:2: error: this function declaration is not a prototype [-Werror,-Wstrict-prototypes]
include/net/bluetooth/hci_core.h:1615:39: note: expanded from macro 'hci_dev_unlock'
#define hci_dev_unlock(d) mutex_unlock(&d->lock)
^
>> net/bluetooth/mgmt.c:7999:2: error: conflicting types for 'mutex_unlock'
include/net/bluetooth/hci_core.h:1615:27: note: expanded from macro 'hci_dev_unlock'
#define hci_dev_unlock(d) mutex_unlock(&d->lock)
^
include/linux/mutex.h:165:13: note: previous declaration is here
extern void mutex_unlock(struct mutex *lock);
^
>> net/bluetooth/mgmt.c:8001:2: error: expected identifier or '('
return mgmt_cmd_complete(sk, hdev->id, MGMT_OP_LOAD_CONN_PARAM, 0,
^
>> net/bluetooth/mgmt.c:8003:1: error: extraneous closing brace ('}')
}
^
1 warning and 15 errors generated.
--
>> net/bluetooth/hci_sync.c:6716:5: warning: no previous prototype for function 'hci_le_conn_update_sync' [-Wmissing-prototypes]
int hci_le_conn_update_sync(struct hci_dev *hdev, struct hci_conn *conn,
^
net/bluetooth/hci_sync.c:6716:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int hci_le_conn_update_sync(struct hci_dev *hdev, struct hci_conn *conn,
^
static
1 warning generated.
vim +/conn +7881 net/bluetooth/mgmt.c
7876
7877 static int conn_update_sync(struct hci_dev *hdev, void *data)
7878 {
7879 struct hci_conn_params *params = data;
7880
> 7881 conn = hci_conn_hash_lookup_le(hdev, params->addr.bdaddr,
7882 params->addr_type);
> 7883 if (!conn)
> 7884 return -ECANCELED
7885
7886 return hci_le_conn_update_sync(hdev, conn, params);
7887 }
7888
7889 static int load_conn_param(struct sock *sk, struct hci_dev *hdev, void *data,
7890 u16 len)
7891 {
7892 struct mgmt_cp_load_conn_param *cp = data;
7893 const u16 max_param_count = ((U16_MAX - sizeof(*cp)) /
7894 sizeof(struct mgmt_conn_param));
7895 u16 param_count, expected_len;
7896 int i;
7897
7898 if (!lmp_le_capable(hdev))
7899 return mgmt_cmd_status(sk, hdev->id, MGMT_OP_LOAD_CONN_PARAM,
7900 MGMT_STATUS_NOT_SUPPORTED);
7901
7902 param_count = __le16_to_cpu(cp->param_count);
7903 if (param_count > max_param_count) {
7904 bt_dev_err(hdev, "load_conn_param: too big param_count value %u",
7905 param_count);
7906 return mgmt_cmd_status(sk, hdev->id, MGMT_OP_LOAD_CONN_PARAM,
7907 MGMT_STATUS_INVALID_PARAMS);
7908 }
7909
7910 expected_len = struct_size(cp, params, param_count);
7911 if (expected_len != len) {
7912 bt_dev_err(hdev, "load_conn_param: expected %u bytes, got %u bytes",
7913 expected_len, len);
7914 return mgmt_cmd_status(sk, hdev->id, MGMT_OP_LOAD_CONN_PARAM,
7915 MGMT_STATUS_INVALID_PARAMS);
7916 }
7917
7918 bt_dev_dbg(hdev, "param_count %u", param_count);
7919
7920 hci_dev_lock(hdev);
7921
7922 if (i > 1)
7923 hci_conn_params_clear_disabled(hdev);
7924
7925 for (i = 0; i < param_count; i++) {
7926 struct mgmt_conn_param *param = &cp->params[i];
7927 struct hci_conn_params *hci_param;
7928 u16 min, max, latency, timeout;
7929 u8 addr_type;
7930 bool update;
7931
7932 bt_dev_dbg(hdev, "Adding %pMR (type %u)", ¶m->addr.bdaddr,
7933 param->addr.type);
7934
7935 if (param->addr.type == BDADDR_LE_PUBLIC) {
7936 addr_type = ADDR_LE_DEV_PUBLIC;
7937 } else if (param->addr.type == BDADDR_LE_RANDOM) {
7938 addr_type = ADDR_LE_DEV_RANDOM;
7939 } else {
7940 bt_dev_err(hdev, "ignoring invalid connection parameters");
7941 continue;
7942 }
7943
7944 min = le16_to_cpu(param->min_interval);
7945 max = le16_to_cpu(param->max_interval);
7946 latency = le16_to_cpu(param->latency);
7947 timeout = le16_to_cpu(param->timeout);
7948
7949 bt_dev_dbg(hdev, "min 0x%04x max 0x%04x latency 0x%04x timeout 0x%04x",
7950 min, max, latency, timeout);
7951
7952 if (hci_check_conn_params(min, max, latency, timeout) < 0) {
7953 bt_dev_err(hdev, "ignoring invalid connection parameters");
7954 continue;
7955 }
7956
7957 /* Detect when the loading is for an existing parameter then
7958 * attempt to trigger the connection update procedure.
7959 */
> 7960 if (!i && params == 1) {
7961 hci_param = hci_conn_params_lookup(hdev,
7962 ¶m->addr.bdaddr,
7963 addr_type);
7964 if (hci_param)
7965 update = true;
7966 else
7967 hci_conn_params_clear_disabled(hdev);
7968 }
7969
7970 hci_param = hci_conn_params_add(hdev, ¶m->addr.bdaddr,
7971 addr_type);
7972 if (!hci_param) {
7973 bt_dev_err(hdev, "failed to add connection parameters");
7974 continue;
7975 }
7976
7977 hci_param->conn_min_interval = min;
7978 hci_param->conn_max_interval = max;
7979 hci_param->conn_latency = latency;
7980 hci_param->supervision_timeout = timeout;
7981
7982 if (update) {
7983 struct hci_conn *conn;
7984
7985 conn = hci_conn_hash_lookup_le(hdev,
7986 params->addr.bdaddr,
7987 addr_type);
7988 if (conn && conn->role == HCI_ROLE_MASTER &&
7989 (conn->le_conn_min_interval != min ||
7990 conn->le_conn_max_interval != max ||
7991 conn->le_conn_latency != latency ||
> 7992 conn->le_supervision_timeout != timeout))
7993 hci_cmd_sync_queue(hdev, conn_update_sync,
> 7994 hci_params, NULL);
7995 }
7996 }
7997 }
7998
> 7999 hci_dev_unlock(hdev);
8000
> 8001 return mgmt_cmd_complete(sk, hdev->id, MGMT_OP_LOAD_CONN_PARAM, 0,
8002 NULL, 0);
> 8003 }
8004
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
parent reply other threads:[~2024-05-10 10:03 UTC|newest]
Thread overview: expand[flat|nested] mbox.gz Atom feed
[parent not found: <20240509225043.1357933-1-luiz.dentz@gmail.com>]
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=202405101700.NwHcUWrt-lkp@intel.com \
--to=lkp@intel.com \
--cc=llvm@lists.linux.dev \
--cc=luiz.dentz@gmail.com \
--cc=oe-kbuild-all@lists.linux.dev \
/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 read-only IMAP folder(s) and NNTP newsgroup(s).