linux-next: manual merge of the bluetooth tree with the origin tree

Mark Brown <[email protected]>
Newsgroups org.kernel.vger.linux-next,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
Hi all,

Today's linux-next merge of the bluetooth tree got a conflict in:

  include/net/bluetooth/hci_core.h

between commit:

  af24e338bf5da ("Bluetooth: ISO: fix race of kfree vs kref_get_unless_zero")

from the origin tree and commit:

  d740cf77461a4 ("Bluetooth: add annotations for l2cap_data locking context")

from the bluetooth tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

diff --combined include/net/bluetooth/hci_core.h
index 3df59849dcbea,e07418a5adce7..0000000000000
--- a/include/net/bluetooth/hci_core.h
+++ b/include/net/bluetooth/hci_core.h
@@@ -416,6 -416,7 +416,7 @@@ struct hci_dev 
  	__u16		le_conn_max_interval;
  	__u16		le_conn_latency;
  	__u16		le_supv_timeout;
+ 	__u16		le_min_rate_interval;
  	__u16		le_def_tx_len;
  	__u16		le_def_tx_time;
  	__u16		le_max_tx_len;
@@@ -645,6 -646,8 +646,8 @@@
  	int (*setup)(struct hci_dev *hdev);
  	int (*shutdown)(struct hci_dev *hdev);
  	int (*send)(struct hci_dev *hdev, struct sk_buff *skb);
+ 	/* Handle HCI_EV_VENDOR; return true if handled, false otherwise */
+ 	bool (*handle_ev_vendor)(struct hci_dev *hdev, struct sk_buff *skb);
  	void (*notify)(struct hci_dev *hdev, unsigned int evt);
  	void (*hw_error)(struct hci_dev *hdev, u8 code);
  	int (*post_init)(struct hci_dev *hdev);
@@@ -720,6 -723,11 +723,11 @@@ struct hci_conn 
  	__u16		le_conn_interval;
  	__u16		le_conn_latency;
  	__u16		le_supv_timeout;
+ 	__u16		le_rate_interval;
+ 	__u16		le_subrate;
+ 	__u16		le_rate_latency;
+ 	__u16		le_cont_num;
+ 	__u16		le_rate_supv_timeout;
  	__u8		le_adv_data[HCI_MAX_EXT_AD_LENGTH];
  	__u8		le_adv_data_len;
  	__u8		le_per_adv_data[HCI_MAX_PER_AD_TOT_LEN];
@@@ -769,7 -777,7 +777,7 @@@
  	struct hci_dev	*hdev;
  
  	spinlock_t	proto_lock; /* lock guarding protocol data */
- 	void		*l2cap_data;
+ 	void		*l2cap_data __guarded_by(&proto_lock, &hdev->lock);
  	void		*sco_data;
  	void		*iso_data __guarded_by(&proto_lock);
  
@@@ -812,6 -820,14 +820,14 @@@ struct hci_conn_params 
  	u16 conn_latency;
  	u16 supervision_timeout;
  
+ 	u16 rate_min_interval;
+ 	u16 rate_max_interval;
+ 	u16 subrate_min;
+ 	u16 subrate_max;
+ 	u16 max_latency;
+ 	u16 cont_num;
+ 	u16 rate_supv_timeout;
+ 
  	enum {
  		HCI_AUTO_CONN_DISABLED,
  		HCI_AUTO_CONN_REPORT,
@@@ -1771,7 -1787,13 +1787,13 @@@ int hci_register_suspend_notifier(struc
  int hci_unregister_suspend_notifier(struct hci_dev *hdev);
  int hci_suspend_dev(struct hci_dev *hdev);
  int hci_resume_dev(struct hci_dev *hdev);
- int hci_reset_dev(struct hci_dev *hdev);
+ int __hci_reset_dev(struct hci_dev *hdev, u8 hw_err_code);
+ 
+ static inline int hci_reset_dev(struct hci_dev *hdev)
+ {
+ 	return __hci_reset_dev(hdev, 0);
+ }
+ 
  int hci_recv_frame(struct hci_dev *hdev, struct sk_buff *skb);
  int hci_recv_diag(struct hci_dev *hdev, struct sk_buff *skb);
  __printf(2, 3) void hci_set_hw_info(struct hci_dev *hdev, const char *fmt, ...);
@@@ -2079,6 -2101,11 +2101,11 @@@ void hci_conn_del_sysfs(struct hci_con
  #define le_cs_host_capable(dev) \
  	((dev)->le_features[5] & HCI_LE_CS_HOST)
  
+ #define le_sci_capable(dev) \
+ 	((dev)->le_features[9] & HCI_LE_SCI)
+ #define le_sci_enabled(dev) \
+ 	(le_enabled(dev) && le_sci_capable(dev))
+ 
  #define mws_transport_config_capable(dev) (((dev)->commands[30] & 0x08) && \
  	(!hci_test_quirk((dev), HCI_QUIRK_BROKEN_MWS_TRANSPORT_CONFIG)))
  
@@@ -2494,6 -2521,8 +2521,8 @@@ void mgmt_advertising_removed(struct so
  int mgmt_phy_configuration_changed(struct hci_dev *hdev, struct sock *skip);
  void mgmt_adv_monitor_device_lost(struct hci_dev *hdev, u16 handle,
  				  bdaddr_t *bdaddr, u8 addr_type);
+ void mgmt_conn_subrate_notify(struct hci_dev *hdev, struct hci_conn *conn,
+ 			      u8 status);
  
  int hci_abort_conn(struct hci_conn *conn, u8 reason);
  void hci_le_conn_update(struct hci_conn *conn, u16 min, u16 max, u16 latency,
signature.asc (application/pgp-signature, 488 B)
-----BEGIN PGP SIGNATURE-----

iQEzBAABCgAdFiEEreZoqmdXGLWf4p/qJNaLcl1Uh9AFAmpzSkYACgkQJNaLcl1U
h9CT7gf/Vyz5t0/z+2U8FyUHf7CsqDDK+z7ZNYk2wtWG920I2wjW8vXJzpAGPUfq
gRQbQz7WZhnZC114sBq6HbsLkg3vNXUCVfWkv5agZb/aLnS1NcUb50nSfW6ulrPB
XeZ9/q97tsDxS3cpkXMF2Ymq2/SIL3YrDNB+l8BHbk7M2oQpepRFFdt0oUYYMjYU
Idp3JJl6ijgYvxA8RI4k9nxJKhSrLHCVC7rsIj3cR1IRoR8N9ZuyYHjjY+HKuHvT
7QRlKSMrHHXEKzrZoIwzNU35qw4rO4j1FZVdKCjGKp7vreDneWHf6zEtG/UHVFm6
WGlmN0k0wzkb0v3ZxUZ2lIQJ6aD3+g==
=Pgsm
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.