summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Ortiz <sameo@linux.intel.com>2013-05-28 15:03:17 +0200
committerSamuel Ortiz <sameo@linux.intel.com>2013-06-14 13:45:08 +0200
commit2635a4bdfa8d513c531fa7d7a0ccafc1d6a9ff85 (patch)
treecc690bb58440f1c59d86952ff4b0bc477e6a179b
parentb4011239a08e7e6c2c6e970dfa9e8ecb73139261 (diff)
downloadop-kernel-dev-2635a4bdfa8d513c531fa7d7a0ccafc1d6a9ff85.zip
op-kernel-dev-2635a4bdfa8d513c531fa7d7a0ccafc1d6a9ff85.tar.gz
NFC: llcp: Do not send pending Tx frames when the remote is not ready
When we receive a RNR, the remote is busy processing the last received frame. We set a local flag for that, and we should send a SYMM when it is set instead of sending any pending frame. Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
-rw-r--r--net/nfc/llcp_core.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/nfc/llcp_core.c b/net/nfc/llcp_core.c
index 44730f0..47746a0 100644
--- a/net/nfc/llcp_core.c
+++ b/net/nfc/llcp_core.c
@@ -721,6 +721,9 @@ static void nfc_llcp_tx_work(struct work_struct *work)
if (llcp_sock == NULL && nfc_llcp_ptype(skb) == LLCP_PDU_I) {
kfree_skb(skb);
nfc_llcp_send_symm(local->dev);
+ } else if (llcp_sock && !llcp_sock->remote_ready) {
+ skb_queue_head(&local->tx_queue, skb);
+ nfc_llcp_send_symm(local->dev);
} else {
struct sk_buff *copy_skb = NULL;
u8 ptype = nfc_llcp_ptype(skb);
OpenPOWER on IntegriCloud