Hi Joseph,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on bluetooth-next/master]
[also build test ERROR on next-20210813]
[cannot apply to bluetooth/master v5.14-rc5]
[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]
url:
https://github.com/0day-ci/linux/commits/Joseph-Hwang/Bluetooth-btusb-dis...
base:
https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git
master
config: m68k-allmodconfig (attached as .config)
compiler: m68k-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
#
https://github.com/0day-ci/linux/commit/7a3d3d918d33f8f8796cb27e1f137c56c...
git remote add linux-review
https://github.com/0day-ci/linux
git fetch --no-tags linux-review
Joseph-Hwang/Bluetooth-btusb-disable-Intel-link-statistics-telemetry-events/20210814-005423
git checkout 7a3d3d918d33f8f8796cb27e1f137c56c2afaeac
# save the attached .config to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir
ARCH=m68k SHELL=/bin/bash net/bluetooth/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All error/warnings (new ones prefixed by >>):
net/bluetooth/mgmt.c: In function 'set_exp_feature':
> net/bluetooth/mgmt.c:4084:12: error: invalid storage class for
function 'get_device_flags'
4084 | static int get_device_flags(struct
sock *sk, struct hci_dev *hdev, void *data,
| ^~~~~~~~~~~~~~~~
> net/bluetooth/mgmt.c:4084:1: warning: ISO C90 forbids mixed
declarations and code [-Wdeclaration-after-statement]
4084 | static int
get_device_flags(struct sock *sk, struct hci_dev *hdev, void *data,
| ^~~~~~
> net/bluetooth/mgmt.c:4134:13: error: invalid storage class for
function 'device_flags_changed'
4134 | static void
device_flags_changed(struct sock *sk, struct hci_dev *hdev,
| ^~~~~~~~~~~~~~~~~~~~
> net/bluetooth/mgmt.c:4148:12: error: invalid storage class for
function 'set_device_flags'
4148 | static int set_device_flags(struct
sock *sk, struct hci_dev *hdev, void *data,
| ^~~~~~~~~~~~~~~~
> net/bluetooth/mgmt.c:4206:13: error: invalid storage class for
function 'mgmt_adv_monitor_added'
4206 | static void
mgmt_adv_monitor_added(struct sock *sk, struct hci_dev *hdev,
| ^~~~~~~~~~~~~~~~~~~~~~
> net/bluetooth/mgmt.c:4236:12: error: invalid storage class for
function 'read_adv_mon_features'
4236 | static int
read_adv_mon_features(struct sock *sk, struct hci_dev *hdev,
| ^~~~~~~~~~~~~~~~~~~~~
> net/bluetooth/mgmt.c:4324:12: error: invalid storage class for
function '__add_adv_patterns_monitor'
4324 | static int
__add_adv_patterns_monitor(struct sock *sk, struct hci_dev *hdev,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
> net/bluetooth/mgmt.c:4388:13: error: invalid storage class for
function 'parse_adv_monitor_rssi'
4388 | static void
parse_adv_monitor_rssi(struct adv_monitor *m,
| ^~~~~~~~~~~~~~~~~~~~~~
> net/bluetooth/mgmt.c:4413:11: error: invalid storage class for
function 'parse_adv_monitor_pattern'
4413 | static u8
parse_adv_monitor_pattern(struct adv_monitor *m, u8 pattern_count,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
> net/bluetooth/mgmt.c:4444:12: error: invalid storage class for
function 'add_adv_patterns_monitor'
4444 | static int
add_adv_patterns_monitor(struct sock *sk, struct hci_dev *hdev,
| ^~~~~~~~~~~~~~~~~~~~~~~~
> net/bluetooth/mgmt.c:4481:12: error: invalid storage class for
function 'add_adv_patterns_monitor_rssi'
4481 | static int
add_adv_patterns_monitor_rssi(struct sock *sk, struct hci_dev *hdev,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> net/bluetooth/mgmt.c:4549:12: error: invalid storage class for
function 'remove_adv_monitor'
4549 | static int
remove_adv_monitor(struct sock *sk, struct hci_dev *hdev,
| ^~~~~~~~~~~~~~~~~~
> net/bluetooth/mgmt.c:4614:13: error: invalid storage class for
function 'read_local_oob_data_complete'
4614 | static void
read_local_oob_data_complete(struct hci_dev *hdev, u8 status,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> net/bluetooth/mgmt.c:4673:12: error: invalid storage class for
function 'read_local_oob_data'
4673 | static int
read_local_oob_data(struct sock *sk, struct hci_dev *hdev,
| ^~~~~~~~~~~~~~~~~~~
> net/bluetooth/mgmt.c:4724:12: error: invalid storage class for
function 'add_remote_oob_data'
4724 | static int
add_remote_oob_data(struct sock *sk, struct hci_dev *hdev,
| ^~~~~~~~~~~~~~~~~~~
> net/bluetooth/mgmt.c:4832:12: error: invalid storage class for
function 'remove_remote_oob_data'
4832 | static int
remove_remote_oob_data(struct sock *sk, struct hci_dev *hdev,
| ^~~~~~~~~~~~~~~~~~~~~~
> net/bluetooth/mgmt.c:4899:13: error: invalid storage class for
function 'discovery_type_is_valid'
4899 | static bool
discovery_type_is_valid(struct hci_dev *hdev, uint8_t type,
| ^~~~~~~~~~~~~~~~~~~~~~~
> net/bluetooth/mgmt.c:4926:12: error: invalid storage class for
function 'start_discovery_internal'
4926 | static int
start_discovery_internal(struct sock *sk, struct hci_dev *hdev,
| ^~~~~~~~~~~~~~~~~~~~~~~~
> net/bluetooth/mgmt.c:4994:12: error: invalid storage class for
function 'start_discovery'
4994 | static int start_discovery(struct sock
*sk, struct hci_dev *hdev,
| ^~~~~~~~~~~~~~~
> net/bluetooth/mgmt.c:5001:12: error: invalid storage class for
function 'start_limited_discovery'
5001 | static int
start_limited_discovery(struct sock *sk, struct hci_dev *hdev,
| ^~~~~~~~~~~~~~~~~~~~~~~
net/bluetooth/mgmt.c:5009:12: error: invalid storage class for function
'service_discovery_cmd_complete'
5009 | static int service_discovery_cmd_complete(struct mgmt_pending_cmd *cmd,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
net/bluetooth/mgmt.c:5016:12: error: invalid storage class for function
'start_service_discovery'
5016 | static int start_service_discovery(struct sock *sk, struct hci_dev *hdev,
| ^~~~~~~~~~~~~~~~~~~~~~~
net/bluetooth/mgmt.c:5148:12: error: invalid storage class for function
'stop_discovery'
5148 | static int stop_discovery(struct sock *sk, struct hci_dev *hdev, void *data,
| ^~~~~~~~~~~~~~
net/bluetooth/mgmt.c:5190:12: error: invalid storage class for function
'confirm_name'
5190 | static int confirm_name(struct sock *sk, struct hci_dev *hdev, void *data,
| ^~~~~~~~~~~~
net/bluetooth/mgmt.c:5232:12: error: invalid storage class for function
'block_device'
5232 | static int block_device(struct sock *sk, struct hci_dev *hdev, void *data,
| ^~~~~~~~~~~~
net/bluetooth/mgmt.c:5268:12: error: invalid storage class for function
'unblock_device'
5268 | static int unblock_device(struct sock *sk, struct hci_dev *hdev, void *data,
| ^~~~~~~~~~~~~~
net/bluetooth/mgmt.c:5304:12: error: invalid storage class for function
'set_device_id'
5304 | static int set_device_id(struct sock *sk, struct hci_dev *hdev, void *data,
| ^~~~~~~~~~~~~
net/bluetooth/mgmt.c:5339:13: error: invalid storage class for function
'enable_advertising_instance'
5339 | static void enable_advertising_instance(struct hci_dev *hdev, u8 status,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
net/bluetooth/mgmt.c:5345:13: error: invalid storage class for function
'set_advertising_complete'
5345 | static void set_advertising_complete(struct hci_dev *hdev, u8 status,
| ^~~~~~~~~~~~~~~~~~~~~~~~
net/bluetooth/mgmt.c:5419:12: error: invalid storage class for function
'set_advertising'
5419 | static int set_advertising(struct sock *sk, struct hci_dev *hdev, void *data,
| ^~~~~~~~~~~~~~~
net/bluetooth/mgmt.c:5538:12: error: invalid storage class for function
'set_static_address'
5538 | static int set_static_address(struct sock *sk, struct hci_dev *hdev,
| ^~~~~~~~~~~~~~~~~~
net/bluetooth/mgmt.c:5582:12: error: invalid storage class for function
'set_scan_params'
5582 | static int set_scan_params(struct sock *sk, struct hci_dev *hdev,
| ^~~~~~~~~~~~~~~
net/bluetooth/mgmt.c:5639:13: error: invalid storage class for function
'fast_connectable_complete'
5639 | static void fast_connectable_complete(struct hci_dev *hdev, u8 status,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
net/bluetooth/mgmt.c:5673:12: error: invalid storage class for function
'set_fast_connectable'
5673 | static int set_fast_connectable(struct sock *sk, struct hci_dev *hdev,
| ^~~~~~~~~~~~~~~~~~~~
net/bluetooth/mgmt.c:5738:13: error: invalid storage class for function
'set_bredr_complete'
5738 | static void set_bredr_complete(struct hci_dev *hdev, u8 status, u16 opcode)
| ^~~~~~~~~~~~~~~~~~
net/bluetooth/mgmt.c:5770:12: error: invalid storage class for function
'set_bredr'
5770 | static int set_bredr(struct sock *sk, struct hci_dev *hdev, void *data, u16
len)
| ^~~~~~~~~
net/bluetooth/mgmt.c:5882:13: error: invalid storage class for function
'sc_enable_complete'
5882 | static void sc_enable_complete(struct hci_dev *hdev, u8 status, u16 opcode)
| ^~~~~~~~~~~~~~~~~~
net/bluetooth/mgmt.c:5927:12: error: invalid storage class for function
'set_secure_conn'
5927 | static int set_secure_conn(struct sock *sk, struct hci_dev *hdev,
| ^~~~~~~~~~~~~~~
net/bluetooth/mgmt.c:6015:12: error: invalid storage class for function
'set_debug_keys'
6015 | static int set_debug_keys(struct sock *sk, struct hci_dev *hdev,
| ^~~~~~~~~~~~~~
net/bluetooth/mgmt.c:6062:12: error: invalid storage class for function
'set_privacy'
6062 | static int set_privacy(struct sock *sk, struct hci_dev *hdev, void *cp_data,
| ^~~~~~~~~~~
net/bluetooth/mgmt.c:6119:13: error: invalid storage class for function
'irk_is_valid'
6119 | static bool irk_is_valid(struct mgmt_irk_info *irk)
| ^~~~~~~~~~~~
net/bluetooth/mgmt.c:6135:12: error: invalid storage class for function
'load_irks'
6135 | static int load_irks(struct sock *sk, struct hci_dev *hdev, void *cp_data,
| ^~~~~~~~~
net/bluetooth/mgmt.c:6206:13: error: invalid storage class for function
'ltk_is_valid'
6206 | static bool ltk_is_valid(struct mgmt_ltk_info *key)
| ^~~~~~~~~~~~
net/bluetooth/mgmt.c:6225:12: error: invalid storage class for function
'load_long_term_keys'
6225 | static int load_long_term_keys(struct sock *sk, struct hci_dev *hdev,
| ^~~~~~~~~~~~~~~~~~~
net/bluetooth/mgmt.c:6321:12: error: invalid storage class for function
'conn_info_cmd_complete'
6321 | static int conn_info_cmd_complete(struct mgmt_pending_cmd *cmd, u8 status)
| ^~~~~~~~~~~~~~~~~~~~~~
net/bluetooth/mgmt.c:6348:13: error: invalid storage class for function
'conn_info_refresh_complete'
6348 | static void conn_info_refresh_complete(struct hci_dev *hdev, u8 hci_status,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
net/bluetooth/mgmt.c:6402:12: error: invalid storage class for function
'get_conn_info'
6402 | static int get_conn_info(struct sock *sk, struct hci_dev *hdev, void *data,
| ^~~~~~~~~~~~~
net/bluetooth/mgmt.c:6523:12: error: invalid storage class for function
'clock_info_cmd_complete'
6523 | static int clock_info_cmd_complete(struct mgmt_pending_cmd *cmd, u8 status)
| ^~~~~~~~~~~~~~~~~~~~~~~
net/bluetooth/mgmt.c:6559:13: error: invalid storage class for function
'get_clock_info_complete'
6559 | static void get_clock_info_complete(struct hci_dev *hdev, u8 status, u16
opcode)
| ^~~~~~~~~~~~~~~~~~~~~~~
net/bluetooth/mgmt.c:6591:12: error: invalid storage class for function
'get_clock_info'
6591 | static int get_clock_info(struct sock *sk, struct hci_dev *hdev, void *data,
| ^~~~~~~~~~~~~~
net/bluetooth/mgmt.c:6667:13: error: invalid storage class for function
'is_connected'
6667 | static bool is_connected(struct hci_dev *hdev, bdaddr_t *addr, u8 type)
| ^~~~~~~~~~~~
net/bluetooth/mgmt.c:6685:12: error: invalid storage class for function
'hci_conn_params_set'
6685 | static int hci_conn_params_set(struct hci_dev *hdev, bdaddr_t *addr,
| ^~~~~~~~~~~~~~~~~~~
net/bluetooth/mgmt.c:6729:13: error: invalid storage class for function
'device_added'
6729 | static void device_added(struct sock *sk, struct hci_dev *hdev,
vim +/get_device_flags +4084 net/bluetooth/mgmt.c
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4083
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 @4084 static int get_device_flags(struct
sock *sk, struct hci_dev *hdev, void *data,
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4085 u16 data_len)
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4086 {
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4087 struct mgmt_cp_get_device_flags
*cp = data;
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4088 struct mgmt_rp_get_device_flags
rp;
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4089 struct bdaddr_list_with_flags
*br_params;
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4090 struct hci_conn_params *params;
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4091 u32 supported_flags =
SUPPORTED_DEVICE_FLAGS();
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4092 u32 current_flags = 0;
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4093 u8 status =
MGMT_STATUS_INVALID_PARAMS;
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4094
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4095 bt_dev_dbg(hdev, "Get device
flags %pMR (type 0x%x)\n",
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4096 &cp->addr.bdaddr,
cp->addr.type);
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4097
3ca33e3fb4f919 Abhishek Pandit-Subedi 2020-06-19 4098 hci_dev_lock(hdev);
3ca33e3fb4f919 Abhishek Pandit-Subedi 2020-06-19 4099
02ce2c2c24024a Tedd Ho-Jeong An 2021-05-26 4100 memset(&rp, 0, sizeof(rp));
02ce2c2c24024a Tedd Ho-Jeong An 2021-05-26 4101
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4102 if (cp->addr.type ==
BDADDR_BREDR) {
3d4f9c00492b4e Archie Pusaka 2021-06-04 4103 br_params =
hci_bdaddr_list_lookup_with_flags(&hdev->accept_list,
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4104
&cp->addr.bdaddr,
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4105 cp->addr.type);
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4106 if (!br_params)
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4107 goto done;
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4108
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4109 current_flags =
br_params->current_flags;
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4110 } else {
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4111 params =
hci_conn_params_lookup(hdev, &cp->addr.bdaddr,
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4112
le_addr_type(cp->addr.type));
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4113
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4114 if (!params)
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4115 goto done;
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4116
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4117 current_flags =
params->current_flags;
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4118 }
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4119
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4120 bacpy(&rp.addr.bdaddr,
&cp->addr.bdaddr);
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4121 rp.addr.type = cp->addr.type;
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4122 rp.supported_flags =
cpu_to_le32(supported_flags);
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4123 rp.current_flags =
cpu_to_le32(current_flags);
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4124
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4125 status = MGMT_STATUS_SUCCESS;
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4126
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4127 done:
3ca33e3fb4f919 Abhishek Pandit-Subedi 2020-06-19 4128 hci_dev_unlock(hdev);
3ca33e3fb4f919 Abhishek Pandit-Subedi 2020-06-19 4129
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4130 return mgmt_cmd_complete(sk,
hdev->id, MGMT_OP_GET_DEVICE_FLAGS, status,
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4131 &rp, sizeof(rp));
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4132 }
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4133
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 @4134 static void
device_flags_changed(struct sock *sk, struct hci_dev *hdev,
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4135 bdaddr_t *bdaddr, u8
bdaddr_type,
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4136 u32 supported_flags, u32
current_flags)
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4137 {
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4138 struct
mgmt_ev_device_flags_changed ev;
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4139
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4140 bacpy(&ev.addr.bdaddr,
bdaddr);
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4141 ev.addr.type = bdaddr_type;
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4142 ev.supported_flags =
cpu_to_le32(supported_flags);
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4143 ev.current_flags =
cpu_to_le32(current_flags);
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4144
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4145
mgmt_event(MGMT_EV_DEVICE_FLAGS_CHANGED, hdev, &ev, sizeof(ev), sk);
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4146 }
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4147
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 @4148 static int set_device_flags(struct
sock *sk, struct hci_dev *hdev, void *data,
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4149 u16 len)
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4150 {
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4151 struct mgmt_cp_set_device_flags
*cp = data;
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4152 struct bdaddr_list_with_flags
*br_params;
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4153 struct hci_conn_params *params;
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4154 u8 status =
MGMT_STATUS_INVALID_PARAMS;
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4155 u32 supported_flags =
SUPPORTED_DEVICE_FLAGS();
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4156 u32 current_flags =
__le32_to_cpu(cp->current_flags);
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4157
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4158 bt_dev_dbg(hdev, "Set device
flags %pMR (type 0x%x) = 0x%x",
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4159 &cp->addr.bdaddr,
cp->addr.type,
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4160
__le32_to_cpu(current_flags));
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4161
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4162 if ((supported_flags |
current_flags) != supported_flags) {
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4163 bt_dev_warn(hdev, "Bad flag
given (0x%x) vs supported (0x%0x)",
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4164 current_flags,
supported_flags);
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4165 goto done;
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4166 }
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4167
3ca33e3fb4f919 Abhishek Pandit-Subedi 2020-06-19 4168 hci_dev_lock(hdev);
3ca33e3fb4f919 Abhishek Pandit-Subedi 2020-06-19 4169
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4170 if (cp->addr.type ==
BDADDR_BREDR) {
3d4f9c00492b4e Archie Pusaka 2021-06-04 4171 br_params =
hci_bdaddr_list_lookup_with_flags(&hdev->accept_list,
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4172
&cp->addr.bdaddr,
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4173 cp->addr.type);
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4174
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4175 if (br_params) {
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4176 br_params->current_flags =
current_flags;
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4177 status = MGMT_STATUS_SUCCESS;
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4178 } else {
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4179 bt_dev_warn(hdev, "No such
BR/EDR device %pMR (0x%x)",
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4180 &cp->addr.bdaddr,
cp->addr.type);
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4181 }
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4182 } else {
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4183 params =
hci_conn_params_lookup(hdev, &cp->addr.bdaddr,
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4184
le_addr_type(cp->addr.type));
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4185 if (params) {
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4186 params->current_flags =
current_flags;
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4187 status = MGMT_STATUS_SUCCESS;
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4188 } else {
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4189 bt_dev_warn(hdev, "No such
LE device %pMR (0x%x)",
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4190 &cp->addr.bdaddr,
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4191
le_addr_type(cp->addr.type));
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4192 }
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4193 }
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4194
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4195 done:
3ca33e3fb4f919 Abhishek Pandit-Subedi 2020-06-19 4196 hci_dev_unlock(hdev);
3ca33e3fb4f919 Abhishek Pandit-Subedi 2020-06-19 4197
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4198 if (status ==
MGMT_STATUS_SUCCESS)
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4199 device_flags_changed(sk, hdev,
&cp->addr.bdaddr, cp->addr.type,
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4200 supported_flags,
current_flags);
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4201
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4202 return mgmt_cmd_complete(sk,
hdev->id, MGMT_OP_SET_DEVICE_FLAGS, status,
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4203 &cp->addr,
sizeof(cp->addr));
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4204 }
4c54bf2b093bb2 Abhishek Pandit-Subedi 2020-06-17 4205
b52729f27b1e39 Miao-chen Chou 2020-06-17 @4206 static void
mgmt_adv_monitor_added(struct sock *sk, struct hci_dev *hdev,
b52729f27b1e39 Miao-chen Chou 2020-06-17 4207 u16 handle)
b52729f27b1e39 Miao-chen Chou 2020-06-17 4208 {
b52729f27b1e39 Miao-chen Chou 2020-06-17 4209 struct mgmt_ev_adv_monitor_added
ev;
b52729f27b1e39 Miao-chen Chou 2020-06-17 4210
b52729f27b1e39 Miao-chen Chou 2020-06-17 4211 ev.monitor_handle =
cpu_to_le16(handle);
b52729f27b1e39 Miao-chen Chou 2020-06-17 4212
b52729f27b1e39 Miao-chen Chou 2020-06-17 4213
mgmt_event(MGMT_EV_ADV_MONITOR_ADDED, hdev, &ev, sizeof(ev), sk);
b52729f27b1e39 Miao-chen Chou 2020-06-17 4214 }
b52729f27b1e39 Miao-chen Chou 2020-06-17 4215
66bd095ab5d408 Archie Pusaka 2021-01-22 4216 void
mgmt_adv_monitor_removed(struct hci_dev *hdev, u16 handle)
cdde92e230719f Miao-chen Chou 2020-06-17 4217 {
66bd095ab5d408 Archie Pusaka 2021-01-22 4218 struct
mgmt_ev_adv_monitor_removed ev;
66bd095ab5d408 Archie Pusaka 2021-01-22 4219 struct mgmt_pending_cmd *cmd;
66bd095ab5d408 Archie Pusaka 2021-01-22 4220 struct sock *sk_skip = NULL;
66bd095ab5d408 Archie Pusaka 2021-01-22 4221 struct mgmt_cp_remove_adv_monitor
*cp;
66bd095ab5d408 Archie Pusaka 2021-01-22 4222
66bd095ab5d408 Archie Pusaka 2021-01-22 4223 cmd =
pending_find(MGMT_OP_REMOVE_ADV_MONITOR, hdev);
66bd095ab5d408 Archie Pusaka 2021-01-22 4224 if (cmd) {
66bd095ab5d408 Archie Pusaka 2021-01-22 4225 cp = cmd->param;
66bd095ab5d408 Archie Pusaka 2021-01-22 4226
66bd095ab5d408 Archie Pusaka 2021-01-22 4227 if (cp->monitor_handle)
66bd095ab5d408 Archie Pusaka 2021-01-22 4228 sk_skip = cmd->sk;
66bd095ab5d408 Archie Pusaka 2021-01-22 4229 }
cdde92e230719f Miao-chen Chou 2020-06-17 4230
cdde92e230719f Miao-chen Chou 2020-06-17 4231 ev.monitor_handle =
cpu_to_le16(handle);
cdde92e230719f Miao-chen Chou 2020-06-17 4232
66bd095ab5d408 Archie Pusaka 2021-01-22 4233
mgmt_event(MGMT_EV_ADV_MONITOR_REMOVED, hdev, &ev, sizeof(ev), sk_skip);
cdde92e230719f Miao-chen Chou 2020-06-17 4234 }
cdde92e230719f Miao-chen Chou 2020-06-17 4235
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 @4236 static int
read_adv_mon_features(struct sock *sk, struct hci_dev *hdev,
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4237 void *data, u16 len)
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4238 {
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4239 struct adv_monitor *monitor =
NULL;
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4240 struct
mgmt_rp_read_adv_monitor_features *rp = NULL;
cafd472a10ff3b Peilin Ye 2020-09-09 4241 int handle, err;
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4242 size_t rp_size = 0;
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4243 __u32 supported = 0;
a2a4dedf88ab2f Archie Pusaka 2021-01-22 4244 __u32 enabled = 0;
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4245 __u16 num_handles = 0;
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4246 __u16
handles[HCI_MAX_ADV_MONITOR_NUM_HANDLES];
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4247
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4248 BT_DBG("request for
%s", hdev->name);
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4249
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4250 hci_dev_lock(hdev);
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4251
a2a4dedf88ab2f Archie Pusaka 2021-01-22 4252 if
(msft_monitor_supported(hdev))
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4253 supported |=
MGMT_ADV_MONITOR_FEATURE_MASK_OR_PATTERNS;
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4254
a2a4dedf88ab2f Archie Pusaka 2021-01-22 4255
idr_for_each_entry(&hdev->adv_monitors_idr, monitor, handle)
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4256 handles[num_handles++] =
monitor->handle;
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4257
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4258 hci_dev_unlock(hdev);
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4259
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4260 rp_size = sizeof(*rp) +
(num_handles * sizeof(u16));
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4261 rp = kmalloc(rp_size,
GFP_KERNEL);
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4262 if (!rp)
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4263 return -ENOMEM;
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4264
a2a4dedf88ab2f Archie Pusaka 2021-01-22 4265 /* All supported features are
currently enabled */
a2a4dedf88ab2f Archie Pusaka 2021-01-22 4266 enabled = supported;
a2a4dedf88ab2f Archie Pusaka 2021-01-22 4267
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4268 rp->supported_features =
cpu_to_le32(supported);
a2a4dedf88ab2f Archie Pusaka 2021-01-22 4269 rp->enabled_features =
cpu_to_le32(enabled);
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4270 rp->max_num_handles =
cpu_to_le16(HCI_MAX_ADV_MONITOR_NUM_HANDLES);
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4271 rp->max_num_patterns =
HCI_MAX_ADV_MONITOR_NUM_PATTERNS;
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4272 rp->num_handles =
cpu_to_le16(num_handles);
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4273 if (num_handles)
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4274 memcpy(&rp->handles,
&handles, (num_handles * sizeof(u16)));
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4275
cafd472a10ff3b Peilin Ye 2020-09-09 4276 err = mgmt_cmd_complete(sk,
hdev->id,
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4277
MGMT_OP_READ_ADV_MONITOR_FEATURES,
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4278 MGMT_STATUS_SUCCESS, rp,
rp_size);
cafd472a10ff3b Peilin Ye 2020-09-09 4279
cafd472a10ff3b Peilin Ye 2020-09-09 4280 kfree(rp);
cafd472a10ff3b Peilin Ye 2020-09-09 4281
cafd472a10ff3b Peilin Ye 2020-09-09 4282 return err;
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4283 }
e5e1e7fd470ccf Miao-chen Chou 2020-06-17 4284
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org