summaryrefslogtreecommitdiff
path: root/net/dccp/output.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2010-12-08 10:01:00 -0800
committerDavid S. Miller <davem@davemloft.net>2010-12-08 10:01:00 -0800
commita2d4b65d477aad1fe8c7218781a031fa9cf5abfc (patch)
tree940fa997e1a2897999bf92361e80162d6bdbbaad /net/dccp/output.c
parent01b0c5cfb23f19837650aa53495ace6d0fd7d3f8 (diff)
parent04910265078f08a73208beab70ed2a3cce4a919f (diff)
downloadlinux-a2d4b65d477aad1fe8c7218781a031fa9cf5abfc.tar.gz
linux-a2d4b65d477aad1fe8c7218781a031fa9cf5abfc.tar.xz
Merge branch 'dccp' of git://eden-feed.erg.abdn.ac.uk/net-next-2.6
Diffstat (limited to 'net/dccp/output.c')
-rw-r--r--net/dccp/output.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/net/dccp/output.c b/net/dccp/output.c
index d96dd9d362ae..784d30210543 100644
--- a/net/dccp/output.c
+++ b/net/dccp/output.c
@@ -242,7 +242,7 @@ static void dccp_xmit_packet(struct sock *sk)
{
int err, len;
struct dccp_sock *dp = dccp_sk(sk);
- struct sk_buff *skb = skb_dequeue(&sk->sk_write_queue);
+ struct sk_buff *skb = dccp_qpolicy_pop(sk);
if (unlikely(skb == NULL))
return;
@@ -345,7 +345,7 @@ void dccp_write_xmit(struct sock *sk)
struct dccp_sock *dp = dccp_sk(sk);
struct sk_buff *skb;
- while ((skb = skb_peek(&sk->sk_write_queue))) {
+ while ((skb = dccp_qpolicy_top(sk))) {
int rc = ccid_hc_tx_send_packet(dp->dccps_hc_tx_ccid, sk, skb);
switch (ccid_packet_dequeue_eval(rc)) {
@@ -359,8 +359,7 @@ void dccp_write_xmit(struct sock *sk)
dccp_xmit_packet(sk);
break;
case CCID_PACKET_ERR:
- skb_dequeue(&sk->sk_write_queue);
- kfree_skb(skb);
+ dccp_qpolicy_drop(sk, skb);
dccp_pr_debug("packet discarded due to err=%d\n", rc);
}
}