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_FLOW_CONTROL_MODE	0x0c66
 | 
			
		||||
struct hci_rp_read_flow_control_mode {
 | 
			
		||||
	__u8     status;
 | 
			
		||||
	__u8     mode;
 | 
			
		||||
} __packed;
 | 
			
		||||
 | 
			
		||||
#define HCI_OP_WRITE_LE_HOST_SUPPORTED	0x0c6d
 | 
			
		||||
struct hci_cp_write_le_host_supported {
 | 
			
		||||
	__u8 le;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -170,6 +170,8 @@ struct hci_dev {
 | 
			
		|||
	__u32		amp_max_flush_to;
 | 
			
		||||
	__u32		amp_be_flush_to;
 | 
			
		||||
 | 
			
		||||
	__u8		flow_ctl_mode;
 | 
			
		||||
 | 
			
		||||
	unsigned int	auto_accept_delay;
 | 
			
		||||
 | 
			
		||||
	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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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)
 | 
			
		||||
{
 | 
			
		||||
	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);
 | 
			
		||||
		break;
 | 
			
		||||
 | 
			
		||||
	case HCI_OP_READ_FLOW_CONTROL_MODE:
 | 
			
		||||
		hci_cc_read_flow_control_mode(hdev, skb);
 | 
			
		||||
		break;
 | 
			
		||||
 | 
			
		||||
	case HCI_OP_READ_LOCAL_AMP_INFO:
 | 
			
		||||
		hci_cc_read_local_amp_info(hdev, skb);
 | 
			
		||||
		break;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue