I have now updated the CCID4 subtree with regard to the latest changes in the
CCID3 module:
* rx_update_s() becomes obsolete
* instead, the `s' value is set to payload_size (first packet) or
* set to tfrc_ewma() (all further data packets).
Furthermore (and this has been updated for CCID3 also) Arnaldo has introduced
a better handling of the conditional compilation in the dccp_tfrc_lib; this has
also been added. The interdiff is below.
I did some testing with these Kconfig options and the build process seems to
work
exactly as expected: ie. if either CCID3=y or CCID4=y then TFRC_LIB=y; if either
CCID3_DEBUG=y or CCID4_DEBUG=y then TFRC_DEBUG=y.
Also as promised some sanity testing; results are in follow-up email.
-----------------> Inter-diff to previous version <-----------------------------
--- a/net/dccp/ccids/Kconfig
+++ b/net/dccp/ccids/Kconfig
@@ -109,8 +109,8 @@ config IP_DCCP_CCID3_RTO
config IP_DCCP_CCID4
tristate "CCID4 (TCP-Friendly, Small Packet Variant) (EXPERIMENTAL)"
- depends on IP_DCCP
def_tristate IP_DCCP
+ select IP_DCCP_TFRC_LIB
---help---
CCID-4 denotes Congestion Control Identifier 4, the Small-Packet
variant of TCP-Friendly Rate Control (TFRC), in the Datagram
@@ -115,5 +189,5 @@ config IP_DCCP_TFRC_LIB
config IP_DCCP_TFRC_DEBUG
bool
depends on IP_DCCP_TFRC_LIB
- default y if IP_DCCP_CCID3_DEBUG
+ default y if (IP_DCCP_CCID3_DEBUG || IP_DCCP_CCID4_DEBUG)
--- a/net/dccp/ccids/ccid4.c
+++ b/net/dccp/ccids/ccid4.c
@@ -593,12 +593,6 @@ static void ccid4_hc_rx_set_state(struct sock *sk,
hcrx->tfrchcrx_state = state;
}
-static inline void ccid4_hc_rx_update_s(struct tfrc_hc_rx_sock *hcrx, int len)
-{
- if (likely(len > 0)) /* don't update on empty packets (e.g. ACKs) */
- hcrx->tfrchcrx_s = tfrc_ewma(hcrx->tfrchcrx_s, len, 9);
-}
-
static void ccid4_hc_rx_send_feedback(struct sock *sk, struct sk_buff *skb,
enum tfrc_fback_type fbtype)
{
@@ -725,8 +719,8 @@ static void ccid4_hc_rx_packet_recv(struct sock *sk, struct
sk_buff *skb)
if (unlikely(hcrx->tfrchcrx_state == TFRC_RSTATE_NO_DATA)) {
if (is_data_packet) {
do_feedback = FBACK_INITIAL;
+ hcrx->tfrchcrx_s = payload_size;
ccid4_hc_rx_set_state(sk, TFRC_RSTATE_DATA);
- ccid4_hc_rx_update_s(hcrx, payload_size);
}
goto update_records;
}
@@ -735,7 +729,10 @@ static void ccid4_hc_rx_packet_recv(struct sock *sk,
struct sk_buff *skb)
goto done_receiving;
if (is_data_packet) {
- ccid4_hc_rx_update_s(hcrx, payload_size);
+ /*
+ * Update moving-average of s and the sum of received payload
bytes
+ */
+ hcrx->tfrchcrx_s = tfrc_ewma(hcrx->tfrchcrx_s, payload_size, 9);
hcrx->tfrchcrx_bytes_recv += payload_size;
}
--
-
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