From: Eric Lapuyade Date: Wed, 2 May 2012 09:23:11 +0000 (+0200) Subject: NFC: Handle SHDLC RSET frames from an SHDLC connected chip X-Git-Tag: v3.6-rc1~125^2~57^2~155 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=5018e490c372d5ed0e0ced2f2471140bf5ba9b32;p=~emulex%2Finfiniband.git NFC: Handle SHDLC RSET frames from an SHDLC connected chip shdlc reset may leave HCI in an inconsistent state by loosing parts of HCI frames. Handle this case by reporting an unrecoverable error to HCI. Signed-off-by: Eric Lapuyade Signed-off-by: Samuel Ortiz --- diff --git a/net/nfc/hci/shdlc.c b/net/nfc/hci/shdlc.c index 18d1536df5f..6f840c18c89 100644 --- a/net/nfc/hci/shdlc.c +++ b/net/nfc/hci/shdlc.c @@ -404,12 +404,12 @@ static void nfc_shdlc_rcv_u_frame(struct nfc_shdlc *shdlc, r = nfc_shdlc_connect_send_ua(shdlc); nfc_shdlc_connect_complete(shdlc, r); } - } else if (shdlc->state > SHDLC_NEGOCIATING) { + } else if (shdlc->state == SHDLC_CONNECTED) { /* - * TODO: Chip wants to reset link - * send ua, empty skb lists, reset counters - * propagate info to HCI layer + * Chip wants to reset link. This is unexpected and + * unsupported. */ + shdlc->hard_fault = -ECONNRESET; } break; case U_FRAME_UA: