Phonet: restore flow control credits when sending fails
This patch restores the below flow control patch submitted by Rémi
Denis-Courmont, which accidentaly got lost due to Pipe controller patch
on Phonet.
commit 1a98214fee
Author: Rémi Denis-Courmont <remi.denis-courmont@nokia.com>
Date: Mon Aug 30 12:57:03 2010 +0000
Phonet: restore flow control credits when sending fails
Signed-off-by: Rémi Denis-Courmont <remi.denis-courmont@nokia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Kumar Sanghvi <kumar.sanghvi@stericsson.com>
Acked-by: Linus Walleij <linus.walleij@stericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
1020660189
Коммит
e1a5964f0c
|
@ -1288,6 +1288,7 @@ static int pipe_skb_send(struct sock *sk, struct sk_buff *skb)
|
|||
{
|
||||
struct pep_sock *pn = pep_sk(sk);
|
||||
struct pnpipehdr *ph;
|
||||
int err;
|
||||
#ifdef CONFIG_PHONET_PIPECTRLR
|
||||
struct sockaddr_pn spn = {
|
||||
.spn_family = AF_PHONET,
|
||||
|
@ -1314,10 +1315,15 @@ static int pipe_skb_send(struct sock *sk, struct sk_buff *skb)
|
|||
ph->message_id = PNS_PIPE_DATA;
|
||||
ph->pipe_handle = pn->pipe_handle;
|
||||
#ifdef CONFIG_PHONET_PIPECTRLR
|
||||
return pn_skb_send(sk, skb, &spn);
|
||||
err = pn_skb_send(sk, skb, &spn);
|
||||
#else
|
||||
return pn_skb_send(sk, skb, &pipe_srv);
|
||||
err = pn_skb_send(sk, skb, &pipe_srv);
|
||||
#endif
|
||||
|
||||
if (err && pn_flow_safe(pn->tx_fc))
|
||||
atomic_inc(&pn->tx_credits);
|
||||
return err;
|
||||
|
||||
}
|
||||
|
||||
static int pep_sendmsg(struct kiocb *iocb, struct sock *sk,
|
||||
|
|
Загрузка…
Ссылка в новой задаче