Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 315277
b: refs/heads/master
c: a9a741a
h: refs/heads/master
i:
  315275: a9d6270
v: v3
  • Loading branch information
Eric Lapuyade authored and John W. Linville committed Jul 9, 2012
1 parent c1ff436 commit b1ee043
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 9 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c32cdbd84ffe289a1386eccb794b047a8366913d
refs/heads/master: a9a741a7e2e6337ae5c030e78827c233c08902a7
2 changes: 2 additions & 0 deletions trunk/include/net/nfc/hci.h
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,8 @@ void nfc_hci_unregister_device(struct nfc_hci_dev *hdev);
void nfc_hci_set_clientdata(struct nfc_hci_dev *hdev, void *clientdata);
void *nfc_hci_get_clientdata(struct nfc_hci_dev *hdev);

void nfc_hci_driver_failure(struct nfc_hci_dev *hdev, int err);

/* Host IDs */
#define NFC_HCI_HOST_CONTROLLER_ID 0x00
#define NFC_HCI_TERMINAL_HOST_ID 0x01
Expand Down
8 changes: 8 additions & 0 deletions trunk/net/nfc/hci/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -717,6 +717,14 @@ void *nfc_hci_get_clientdata(struct nfc_hci_dev *hdev)
}
EXPORT_SYMBOL(nfc_hci_get_clientdata);

void nfc_hci_driver_failure(struct nfc_hci_dev *hdev, int err)
{
/* TODO: lower layer has permanent failure.
* complete potential HCI command or send an empty tag discovered event
*/
}
EXPORT_SYMBOL(nfc_hci_driver_failure);

void nfc_hci_recv_frame(struct nfc_hci_dev *hdev, struct sk_buff *skb)
{
struct hcp_packet *packet;
Expand Down
19 changes: 11 additions & 8 deletions trunk/net/nfc/hci/shdlc.c
Original file line number Diff line number Diff line change
Expand Up @@ -523,10 +523,6 @@ static void nfc_shdlc_handle_send_queue(struct nfc_shdlc *shdlc)

r = shdlc->ops->xmit(shdlc, skb);
if (r < 0) {
/*
* TODO: Cannot send, shdlc machine is dead, we
* must propagate the information up to HCI.
*/
shdlc->hard_fault = r;
break;
}
Expand Down Expand Up @@ -590,6 +586,11 @@ static void nfc_shdlc_sm_work(struct work_struct *work)
skb_queue_purge(&shdlc->ack_pending_q);
break;
case SHDLC_CONNECTING:
if (shdlc->hard_fault) {
nfc_shdlc_connect_complete(shdlc, shdlc->hard_fault);
break;
}

if (shdlc->connect_tries++ < 5)
r = nfc_shdlc_connect_initiate(shdlc);
else
Expand All @@ -610,6 +611,11 @@ static void nfc_shdlc_sm_work(struct work_struct *work)
}

nfc_shdlc_handle_rcv_queue(shdlc);

if (shdlc->hard_fault) {
nfc_shdlc_connect_complete(shdlc, shdlc->hard_fault);
break;
}
break;
case SHDLC_CONNECTED:
nfc_shdlc_handle_rcv_queue(shdlc);
Expand Down Expand Up @@ -637,10 +643,7 @@ static void nfc_shdlc_sm_work(struct work_struct *work)
}

if (shdlc->hard_fault) {
/*
* TODO: Handle hard_fault that occured during
* this invocation of the shdlc worker
*/
nfc_hci_driver_failure(shdlc->hdev, shdlc->hard_fault);
}
break;
default:
Expand Down

0 comments on commit b1ee043

Please sign in to comment.