diff options
author | Rémi Denis-Courmont <remi.denis-courmont@nokia.com> | 2009-07-21 01:57:59 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-07-23 17:58:19 -0700 |
commit | 2e2fb4b33d62c742019774c5e6e47711a3d60505 (patch) | |
tree | 6c08ace21696755d1e775bd6697ec992d507ccc6 /net | |
parent | c1dc13e9d0bc35a8d85bf4238c48c1b627d48f35 (diff) |
Phonet: account for dropped RX packets
Signed-off-by: Rémi Denis-Courmont <remi.denis-courmont@nokia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/phonet/pep.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/phonet/pep.c b/net/phonet/pep.c index eef833ea6d7..b8252d289cd 100644 --- a/net/phonet/pep.c +++ b/net/phonet/pep.c @@ -346,8 +346,10 @@ static int pipe_do_rcv(struct sock *sk, struct sk_buff *skb) break; case PNS_PEP_CTRL_REQ: - if (skb_queue_len(&pn->ctrlreq_queue) >= PNPIPE_CTRLREQ_MAX) + if (skb_queue_len(&pn->ctrlreq_queue) >= PNPIPE_CTRLREQ_MAX) { + atomic_inc(&sk->sk_drops); break; + } __skb_pull(skb, 4); queue = &pn->ctrlreq_queue; goto queue; @@ -358,10 +360,13 @@ static int pipe_do_rcv(struct sock *sk, struct sk_buff *skb) err = sock_queue_rcv_skb(sk, skb); if (!err) return 0; + if (err == -ENOMEM) + atomic_inc(&sk->sk_drops); break; } if (pn->rx_credits == 0) { + atomic_inc(&sk->sk_drops); err = -ENOBUFS; break; } |