On 20/08/10 07:15, Gerrit Renker wrote:
sudo $TC qdisc add dev $IF root handle 1: htb default 10
sudo $TC class add dev $IF parent 1: classid 1:10 htb rate $up_rate
sudo $TC filter add dev $IF protocol ip parent 1:0 prio 1 u32 match ip
dst $dest flowid 1:10
sudo $TC qdisc add dev $IF parent 1:10 handle 40: sfq perturb 10 limit 2
taken from http://lartc.org/howto/, we receive many errors like this:
[27799.691275] BUG: err=1 after ccid_hc_tx_packet_sent at
/build/buildd/linux-2.6.32/net/dccp/output.c:307/dccp_write_xmit()
[27799.691288]<IRQ> [<ffffffffa0441db5>] dccp_write_xmit+0x165/0x310
[dccp]
[27799.691308] [<ffffffffa0443ac0>] ? dccp_write_xmit_timer+0x0/0x80 [dccp]
[27799.691315] [<ffffffffa0443b3a>] dccp_write_xmit_timer+0x7a/0x80 [dccp]
We found that they are triggered by the following code in net/dccp/output.c:
306 err = dccp_transmit_skb(sk, skb);
307 ccid_hc_tx_packet_sent(dp->dccps_hc_tx_ccid, sk, 0, len);
308 if (err)
309 DCCP_BUG("err=%d after ccid_hc_tx_packet_sent",
310 err);
Is there a way to fix to workaround that?
The 'err = 1' is triggered because the qdisc can refuse to take a packet, so that
#define NET_XMIT_DROP 0x01 /* skb dropped */
is returned. Thus what you are seeing is not a real bug, but rather a misplaced
BUG statement.
I haven't verified this, but I am almost sure that the problem is rectified in the
DCCP test tree which I would like to encourage you to use for all testing, since it
Thank you for your answer. I have not yet tested with DCCP test tree
indeed, but I see that the code involved is there too, i.e.:
306 err = dccp_transmit_skb(sk, skb);
307 ccid_hc_tx_packet_sent(dp->dccps_hc_tx_ccid, sk, 0, len);
308 if (err)
309 DCCP_BUG("err=%d after ccid_hc_tx_packet_sent",
310 err);
and in dccp_transmit_skb():
139 err = icsk->icsk_af_ops->queue_xmit(skb);
140 return net_xmit_eval(err);
--
Eugen
--
To unsubscribe from this list: send the line "unsubscribe dccp" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html