[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1210059485-691-1-git-send-email-gerrit@erg.abdn.ac.uk>
Date: Tue, 6 May 2008 08:38:01 +0100
From: Gerrit Renker <gerrit@....abdn.ac.uk>
To: acme@...hat.com
Cc: dccp@...r.kernel.org, netdev@...r.kernel.org
Subject: [DCCP/CCID-3] [PATCH 0/4]: Bug fixes and smaller TX socket
A small set of updates, including a bug fix and, by removing redundancies,
reducing the size of the CCID-3/4 socket by a further 18 bytes.
All changes have been uploaded to
git://eden-feed.erg.abdn.ac.uk/dccp_exp [dccp,ccid4]
and the `ccid4' subtree has been updated to mirror the changes to CCID-3.
Patch #1: Removes the ugly history-lookup function tfrc_tx_hist_rtt(), since
its complex passing of return values triggered ambiguous bug
warnings; further subsuming/replacing an earlier test tree patch.
The code format is thanks to an earlier suggestion by Arnaldo.
Patch #2: Removes some redundancies (32 lines) in ccid3_hc_tx_parse_options().
Patch #3: Allows ccid_hc_{tx,rx}_parse_options() to check the packet type on
which options where received, as necessitated by RFC 4340, 10.3.
Patch #4: Finds that the `options_received' sub-struct of ccid3_hc_tx_sock
is redundant, and removes it altogether. The conversion of received
options now happens directly, in ccid3_hc_tx_parse_options().
---------------------------------
***** Test Tree Update Note *****
---------------------------------
Work on the last patch further helped to fix an omission in an earlier test tree
patch entitled "[CCID-3]: Remove dead states". The difference below includes:
* the unnecessary test ("state != NO_FBACK") was removed (the timer
is first started when changing from NO_SENT => NO_FBACK and from
then on the state toggles between FBACK and NO_FBACK);
* the timer is instead disarmed when the socket is no longer in the
established state: when closing the connection, it is not necessary
to restart the nofeedback timer -- the connection is in its last
stages anyway, and the relevant retransmissions of Close or CloseReq
packets then happen as a matter of course;
* I think that the following BUG_ON in ccid3_hc_tx_no_feedback_timer(),
BUG_ON(hctx->p && !hctx->x_calc),
is now also redundant since, as long as the TX side receives feedback,
tx_packet_recv is called after tx_parse_options, so that p > 0 leads
to calling tfrc_calc_x().
--- b/net/dccp/ccids/ccid3.c
+++ b/net/dccp/ccids/ccid3.c
@@ -213,10 +213,13 @@ static void ccid3_hc_tx_no_feedback_timer(unsigned long
ccid3_pr_debug("%s(%p, state=%s) - entry \n", dccp_role(sk), sk,
ccid3_tx_state_name(hctx->state));
+ /* Ignore and do not restart after leaving the established state */
+ if ((1 << sk->sk_state) & ~(DCCPF_OPEN | DCCPF_PARTOPEN))
+ goto out;
+
+ /* Reset feedback state to "no feedback received" */
if (hctx->state == TFRC_SSTATE_FBACK)
ccid3_hc_tx_set_state(sk, TFRC_SSTATE_NO_FBACK);
- else if (hctx->state != TFRC_SSTATE_NO_FBACK)
- goto out;
/*
* Determine new allowed sending rate X as per draft rfc3448bis-00, 4.4
The University of Aberdeen is a charity registered in Scotland, No SC013683.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists