summaryrefslogtreecommitdiffstats
path: root/net/atm/common.c
diff options
context:
space:
mode:
authorEric Dumazet <eric.dumazet@gmail.com>2009-06-18 04:06:12 +0200
committerDavid S. Miller <davem@davemloft.net>2009-06-18 09:29:12 +0200
commit81e2a3d5b75cbf0b42428b9d5a7cc7c85be9e7a7 (patch)
treecac92ad222a84f30e129b569cb489652a0ca44ef /net/atm/common.c
parentnet: correct off-by-one write allocations reports (diff)
downloadlinux-81e2a3d5b75cbf0b42428b9d5a7cc7c85be9e7a7.tar.xz
linux-81e2a3d5b75cbf0b42428b9d5a7cc7c85be9e7a7.zip
atm: sk_wmem_alloc initial value is one
commit 2b85a34e911bf483c27cfdd124aeb1605145dc80 (net: No more expensive sock_hold()/sock_put() on each tx) changed initial sk_wmem_alloc value. This broke net/atm since this protocol assumed a null initial value. This patch makes necessary changes. Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/atm/common.c')
-rw-r--r--net/atm/common.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/net/atm/common.c b/net/atm/common.c
index d34edbe754c8..c1c97936192c 100644
--- a/net/atm/common.c
+++ b/net/atm/common.c
@@ -62,15 +62,15 @@ static struct sk_buff *alloc_tx(struct atm_vcc *vcc,unsigned int size)
struct sk_buff *skb;
struct sock *sk = sk_atm(vcc);
- if (atomic_read(&sk->sk_wmem_alloc) && !atm_may_send(vcc, size)) {
+ if (sk_wmem_alloc_get(sk) && !atm_may_send(vcc, size)) {
pr_debug("Sorry: wmem_alloc = %d, size = %d, sndbuf = %d\n",
- atomic_read(&sk->sk_wmem_alloc), size,
+ sk_wmem_alloc_get(sk), size,
sk->sk_sndbuf);
return NULL;
}
- while (!(skb = alloc_skb(size,GFP_KERNEL))) schedule();
- pr_debug("AlTx %d += %d\n", atomic_read(&sk->sk_wmem_alloc),
- skb->truesize);
+ while (!(skb = alloc_skb(size, GFP_KERNEL)))
+ schedule();
+ pr_debug("AlTx %d += %d\n", sk_wmem_alloc_get(sk), skb->truesize);
atomic_add(skb->truesize, &sk->sk_wmem_alloc);
return skb;
}
@@ -145,7 +145,7 @@ int vcc_create(struct net *net, struct socket *sock, int protocol, int family)
memset(&vcc->local,0,sizeof(struct sockaddr_atmsvc));
memset(&vcc->remote,0,sizeof(struct sockaddr_atmsvc));
vcc->qos.txtp.max_sdu = 1 << 16; /* for meta VCs */
- atomic_set(&sk->sk_wmem_alloc, 0);
+ atomic_set(&sk->sk_wmem_alloc, 1);
atomic_set(&sk->sk_rmem_alloc, 0);
vcc->push = NULL;
vcc->pop = NULL;