Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit af775223 authored by Christophe Ricard's avatar Christophe Ricard Committed by Samuel Ortiz
Browse files

NFC: hci: Change nfc_hci_send_response gate parameter to pipe



As there can be several pipes connected to the same gate, we need
to know which pipe ID to use when sending an HCI response. A gate
ID is not enough.

Instead of changing the nfc_hci_send_response() API to something
not aligned with the rest of the HCI API, we call nfc_hci_hcp_message_tx
directly.

Signed-off-by: default avatarChristophe Ricard <christophe-h.ricard@st.com>
Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
parent 118278f2
Loading
Loading
Loading
Loading
+0 −2
Original line number Original line Diff line number Diff line
@@ -260,8 +260,6 @@ int nfc_hci_send_cmd(struct nfc_hci_dev *hdev, u8 gate, u8 cmd,
int nfc_hci_send_cmd_async(struct nfc_hci_dev *hdev, u8 gate, u8 cmd,
int nfc_hci_send_cmd_async(struct nfc_hci_dev *hdev, u8 gate, u8 cmd,
			   const u8 *param, size_t param_len,
			   const u8 *param, size_t param_len,
			   data_exchange_cb_t cb, void *cb_context);
			   data_exchange_cb_t cb, void *cb_context);
int nfc_hci_send_response(struct nfc_hci_dev *hdev, u8 gate, u8 response,
			  const u8 *param, size_t param_len);
int nfc_hci_send_event(struct nfc_hci_dev *hdev, u8 gate, u8 event,
int nfc_hci_send_event(struct nfc_hci_dev *hdev, u8 gate, u8 event,
		       const u8 *param, size_t param_len);
		       const u8 *param, size_t param_len);
int nfc_hci_target_discovered(struct nfc_hci_dev *hdev, u8 gate);
int nfc_hci_target_discovered(struct nfc_hci_dev *hdev, u8 gate);
+0 −17
Original line number Original line Diff line number Diff line
@@ -116,23 +116,6 @@ int nfc_hci_send_event(struct nfc_hci_dev *hdev, u8 gate, u8 event,
}
}
EXPORT_SYMBOL(nfc_hci_send_event);
EXPORT_SYMBOL(nfc_hci_send_event);


int nfc_hci_send_response(struct nfc_hci_dev *hdev, u8 gate, u8 response,
			  const u8 *param, size_t param_len)
{
	u8 pipe;

	pr_debug("\n");

	pipe = hdev->gate2pipe[gate];
	if (pipe == NFC_HCI_INVALID_PIPE)
		return -EADDRNOTAVAIL;

	return nfc_hci_hcp_message_tx(hdev, pipe, NFC_HCI_HCP_RESPONSE,
				      response, param, param_len, NULL, NULL,
				      0);
}
EXPORT_SYMBOL(nfc_hci_send_response);

/*
/*
 * Execute an hci command sent to gate.
 * Execute an hci command sent to gate.
 * skb will contain response data if success. skb can be NULL if you are not
 * skb will contain response data if success. skb can be NULL if you are not
+8 −4
Original line number Original line Diff line number Diff line
@@ -209,7 +209,8 @@ void nfc_hci_cmd_received(struct nfc_hci_dev *hdev, u8 pipe, u8 cmd,


		local_gate = skb->data[3];
		local_gate = skb->data[3];
		new_pipe = skb->data[4];
		new_pipe = skb->data[4];
		nfc_hci_send_response(hdev, gate, NFC_HCI_ANY_OK, NULL, 0);
		nfc_hci_hcp_message_tx(hdev, pipe, NFC_HCI_HCP_RESPONSE,
				       NFC_HCI_ANY_OK, NULL, 0, NULL, NULL, 0);


		/* save the new created pipe and bind with local gate,
		/* save the new created pipe and bind with local gate,
		 * the description for skb->data[3] is destination gate id
		 * the description for skb->data[3] is destination gate id
@@ -223,11 +224,14 @@ void nfc_hci_cmd_received(struct nfc_hci_dev *hdev, u8 pipe, u8 cmd,
		 * open it
		 * open it
		 */
		 */
		if (gate != 0xff)
		if (gate != 0xff)
			nfc_hci_send_response(hdev, gate, NFC_HCI_ANY_OK,
			nfc_hci_hcp_message_tx(hdev, pipe, NFC_HCI_HCP_RESPONSE,
					      &gate_opened, 1);
					       NFC_HCI_ANY_OK, &gate_opened, 1,
					       NULL, NULL, 0);
		break;
		break;
	case NFC_HCI_ADM_NOTIFY_ALL_PIPE_CLEARED:
	case NFC_HCI_ADM_NOTIFY_ALL_PIPE_CLEARED:
		nfc_hci_send_response(hdev, gate, NFC_HCI_ANY_OK, NULL, 0);
		nfc_hci_hcp_message_tx(hdev, pipe, NFC_HCI_HCP_RESPONSE,
				       NFC_HCI_ANY_OK, NULL, 0, NULL, NULL, 0);

		break;
		break;
	default:
	default:
		pr_info("Discarded unknown cmd %x to gate %x\n", cmd, gate);
		pr_info("Discarded unknown cmd %x to gate %x\n", cmd, gate);