2008/2/26, Gerrit Renker <[EMAIL PROTECTED]>:
> Hi Leandro,
>
> thank you for paying attention and looking closely. Btw - this was not
> copied to the list?
I just forgot to copy to the list and I was thinking that I just
git-pull the latest dccp branch in a wrong way. I'm playing attention
to all your patches since I have (since a month ago) to backport the
patches to kernel 2.6.21, which I use in Nokia N800/N810 devices that
run linux. I'm using this devices to experiment DCCP and provide an
up-to-date DCCP implementation for them. Before you ask: I have to use
2.6.21 because there are some issues regarding to some proprietary
code like the wifi driver that just work in 2.6.21.
>
>
> | > --- a/net/dccp/output.c
> | > +++ b/net/dccp/output.c
> | > @@ -292,6 +292,8 @@ void dccp_write_xmit(struct sock *sk, in
> | > if (err)
> | > DCCP_BUG("err=%d after
> ccid_hc_tx_packet_sent",
> | > err);
> | > + if (dp->dccps_sync_scheduled)
> | > + dccp_send_sync(sk, dp->dccps_gsr,
> DCCP_PKT_SYNC);
> |
> | These two lines are not appearing in the latest version of the dccp
> | branch of you git tree. BTW, this is totally different. Did I do
> | something wrong while pulling the branch or since this is a
> | resubmission of your patch, you had to assume that code (nowadays
> | modified)? In my version, this function uses a switch statement:
> |
> | 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))) {
> | int rc = ccid_hc_tx_send_packet(dp->dccps_hc_tx_ccid, sk,
> skb);
> |
> | switch (ccid_packet_dequeue_eval(rc)) {
> | case CCID_PACKET_WILL_DEQUEUE_LATER:
> | return;
> | case CCID_PACKET_DELAY:
> | sk_reset_timer(sk, &dp->dccps_xmit_timer, (jiffies
> +
> |
> msecs_to_jiffies(rc)));
> | return;
> | case CCID_PACKET_SEND_AT_ONCE:
> | dccp_xmit_packet(sk);
> | break;
> | case CCID_PACKET_ERR:
> | skb_dequeue(&sk->sk_write_queue);
> | kfree_skb(skb);
> | dccp_pr_debug("packet discarded due to err=%d\n",
> rc);
> | }
> | }
> | }
>
> And this is correct -- the `sync_scheduled' is now executed within
> dccp_xmit_packet(), a few lines above this function in net/dccp/output.c:
Yes, I just check this function and certified these changes.
>
> static void dccp_xmit_packet(struct sock *sk)
> {
> // <snip>
> // ...
>
> /*
> * If the CCID needs to transfer additional header options
> out-of-band
> * (e.g. Ack Vectors or feature-negotiation options), it
> activates the
> * flag to schedule a Sync. The Sync will automatically
> incorporate all
> * currently valid header options so that this backlog is now
> cleared.
> */
>
> if (dp->dccps_sync_scheduled)
> dccp_send_sync(sk, dp->dccps_gsr, DCCP_PKT_SYNC);
> }
>
>
> The seeming contradiction comes from the order among the patches: the
> out-of-band mechanism is introduced earlier, as part of the Ack Vector
> patches. After the Ack Vector patches there is an update for the
> dequeueing interface, which stops CCID-2 from polling. If you remove the
> three following patches from the top of your git tree, you will get the
> state as described above:
>
> [CCID2]: Stop polling
> [CCID]: Refine the wait-for-ccid mechanism
> [DCCP]: Extend CCID packet dequeueing interface
>
> The last one introduces the new interface and shifts the sync_scheduled.
>
Yes, I also backport these patches last week for 2.6.21 linux omap kernel.
>
> Gerrit
>
By the way, I had some issues to solve and I have just finish the
modifications in the dccp plugin for gstreamer today. I will just now
write the release notes, submit the new .tar.gz2 to the
garage.maemo.org (as the previous version) and I will let you know the
link to download it. Thank you for your feedback.
Leandro.
-
To unsubscribe from this list: send the line "unsubscribe dccp" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html