[Vortex] vortex_channel_update_incoming_buffer question

Mikhail Dmitrievsky mishadm at mail.ru
Tue Oct 14 09:32:17 CEST 2008


Hello All!

I have a question about code in vortex_channel_update_incoming_buffer where we decide to send SEQ frame or not:

vortex_channel.c, lines near 3365:

/* check we have filled half window size advertised */
/*	if ((new_max_seq_no_accepted - channel->max_seq_no_accepted) < (window_size / 2)) { */
        if ((consumed_seqno - (channel->max_seq_no_accepted - window_size)) < (window_size / 2)) {

Can anyone explain why we use window_size/2 magic number? I read discussion at http://drakken.dbc.mtview.ca.us/pipermail/beepwg/2006-January/001605.html about sending SEQ frames and now i don't understand why we use window_size/2.

I got a problem with this code then i change window_size. After some time of exchanging between listener and initiator one of them hangs up. It always happend at different time, so it is very hard to catch this bug. Now I know if i change 

        if ((consumed_seqno - (channel->max_seq_no_accepted - window_size)) < (window_size / 2)) {

to

        if ((consumed_seqno - (channel->max_seq_no_accepted - 4096)) < (4096 / 2)) {

all works fine, but i really don't understand why.

WBR, Mikhail



More information about the Vortex mailing list