Bluetooth: Add HCI Read Flow Control Mode function
Upstream Code Aurora function with minor trivial fixes. Origin: git://codeaurora.org/kernel/msm.git Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com> Acked-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
This commit is contained in:
		
					parent
					
						
							
								4f957a7601
							
						
					
				
			
			
				commit
				
					
						1e89cffb44
					
				
			
		
					 3 changed files with 27 additions and 0 deletions
				
			
		| 
						 | 
					@ -677,6 +677,12 @@ struct hci_rp_read_local_oob_data {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define HCI_OP_READ_INQ_RSP_TX_POWER	0x0c58
 | 
					#define HCI_OP_READ_INQ_RSP_TX_POWER	0x0c58
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define HCI_OP_READ_FLOW_CONTROL_MODE	0x0c66
 | 
				
			||||||
 | 
					struct hci_rp_read_flow_control_mode {
 | 
				
			||||||
 | 
						__u8     status;
 | 
				
			||||||
 | 
						__u8     mode;
 | 
				
			||||||
 | 
					} __packed;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define HCI_OP_WRITE_LE_HOST_SUPPORTED	0x0c6d
 | 
					#define HCI_OP_WRITE_LE_HOST_SUPPORTED	0x0c6d
 | 
				
			||||||
struct hci_cp_write_le_host_supported {
 | 
					struct hci_cp_write_le_host_supported {
 | 
				
			||||||
	__u8 le;
 | 
						__u8 le;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -170,6 +170,8 @@ struct hci_dev {
 | 
				
			||||||
	__u32		amp_max_flush_to;
 | 
						__u32		amp_max_flush_to;
 | 
				
			||||||
	__u32		amp_be_flush_to;
 | 
						__u32		amp_be_flush_to;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						__u8		flow_ctl_mode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	unsigned int	auto_accept_delay;
 | 
						unsigned int	auto_accept_delay;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	unsigned long	quirks;
 | 
						unsigned long	quirks;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -717,6 +717,21 @@ static void hci_cc_read_local_ext_features(struct hci_dev *hdev,
 | 
				
			||||||
	hci_req_complete(hdev, HCI_OP_READ_LOCAL_EXT_FEATURES, rp->status);
 | 
						hci_req_complete(hdev, HCI_OP_READ_LOCAL_EXT_FEATURES, rp->status);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void hci_cc_read_flow_control_mode(struct hci_dev *hdev,
 | 
				
			||||||
 | 
											struct sk_buff *skb)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct hci_rp_read_flow_control_mode *rp = (void *) skb->data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						BT_DBG("%s status 0x%x", hdev->name, rp->status);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (rp->status)
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						hdev->flow_ctl_mode = rp->mode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						hci_req_complete(hdev, HCI_OP_READ_FLOW_CONTROL_MODE, rp->status);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void hci_cc_read_buffer_size(struct hci_dev *hdev, struct sk_buff *skb)
 | 
					static void hci_cc_read_buffer_size(struct hci_dev *hdev, struct sk_buff *skb)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct hci_rp_read_buffer_size *rp = (void *) skb->data;
 | 
						struct hci_rp_read_buffer_size *rp = (void *) skb->data;
 | 
				
			||||||
| 
						 | 
					@ -1998,6 +2013,10 @@ static inline void hci_cmd_complete_evt(struct hci_dev *hdev, struct sk_buff *sk
 | 
				
			||||||
		hci_cc_write_ca_timeout(hdev, skb);
 | 
							hci_cc_write_ca_timeout(hdev, skb);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						case HCI_OP_READ_FLOW_CONTROL_MODE:
 | 
				
			||||||
 | 
							hci_cc_read_flow_control_mode(hdev, skb);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	case HCI_OP_READ_LOCAL_AMP_INFO:
 | 
						case HCI_OP_READ_LOCAL_AMP_INFO:
 | 
				
			||||||
		hci_cc_read_local_amp_info(hdev, skb);
 | 
							hci_cc_read_local_amp_info(hdev, skb);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue