From patchwork Tue Sep 8 18:28:47 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivo Calado X-Patchwork-Id: 33140 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@bilbo.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from ozlabs.org (ozlabs.org [203.10.76.45]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "mx.ozlabs.org", Issuer "CA Cert Signing Authority" (verified OK)) by bilbo.ozlabs.org (Postfix) with ESMTPS id D34D2B7079 for ; Wed, 9 Sep 2009 04:29:45 +1000 (EST) Received: by ozlabs.org (Postfix) id C7CAEDDD04; Wed, 9 Sep 2009 04:29:45 +1000 (EST) Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by ozlabs.org (Postfix) with ESMTP id 5A728DDD0C for ; Wed, 9 Sep 2009 04:29:45 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752360AbZIHS2z (ORCPT ); Tue, 8 Sep 2009 14:28:55 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752358AbZIHS2y (ORCPT ); Tue, 8 Sep 2009 14:28:54 -0400 Received: from mail.embedded.ufcg.edu.br ([150.165.63.2]:18702 "EHLO mail.embedded.ufcg.edu.br" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752320AbZIHS2x (ORCPT ); Tue, 8 Sep 2009 14:28:53 -0400 Received: from [192.168.1.102] (darkside.embedded.ufcg.edu.br [192.168.1.102]) by mail.embedded.ufcg.edu.br (Postfix) with ESMTP id A80EE1E0042; Tue, 8 Sep 2009 15:28:35 -0300 (BRT) Message-ID: <4AA6A25F.4060100@embedded.ufcg.edu.br> Date: Tue, 08 Sep 2009 15:28:47 -0300 From: Ivo Calado User-Agent: Thunderbird 2.0.0.22 (X11/20090605) MIME-Version: 1.0 To: dccp@vger.kernel.org CC: netdev@vger.kernel.org Subject: [PATCH 2/5] Implement loss counting on TFRC-SP receiver Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Implement loss counting on TFRC-SP receiver. Consider transmission's hole size as loss count. Changes: - Adds field li_losses to tfrc_loss_interval to track loss count per interval - Adds field num_losses to tfrc_rx_hist, used to store loss count per loss event - Adds dccp_loss_count function to net/dccp/dccp.h, responsible for loss count using sequence numbers Signed-off-by: Ivo Calado, Erivaldo Xavier, Leandro Sales , , --- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Index: dccp_tree_work4/net/dccp/ccids/lib/loss_interval_sp.c =================================================================== --- dccp_tree_work4.orig/net/dccp/ccids/lib/loss_interval_sp.c 2009-09-03 22:58:17.000000000 -0300 +++ dccp_tree_work4/net/dccp/ccids/lib/loss_interval_sp.c 2009-09-03 23:00:24.000000000 -0300 @@ -187,6 +187,7 @@ s64 len = dccp_delta_seqno(cur->li_seqno, cong_evt_seqno); if ((len <= 0) || (!tfrc_lh_closed_check(cur, cong_evt->tfrchrx_ccval))) { + cur->li_losses += rh->num_losses; return false; } @@ -204,6 +205,7 @@ cur->li_seqno = cong_evt_seqno; cur->li_ccval = cong_evt->tfrchrx_ccval; cur->li_is_closed = false; + cur->li_losses = rh->num_losses; if (++lh->counter == 1) lh->i_mean = cur->li_length = (*calc_first_li)(sk); Index: dccp_tree_work4/net/dccp/ccids/lib/loss_interval_sp.h =================================================================== --- dccp_tree_work4.orig/net/dccp/ccids/lib/loss_interval_sp.h 2009-09-03 22:58:17.000000000 -0300 +++ dccp_tree_work4/net/dccp/ccids/lib/loss_interval_sp.h 2009-09-03 23:00:24.000000000 -0300 @@ -30,12 +30,14 @@ * @li_ccval: The CCVal belonging to @li_seqno * @li_is_closed: Whether @li_seqno is older than 1 RTT * @li_length: Loss interval sequence length + * @li_losses: Number of losses counted on this interval */ struct tfrc_loss_interval { u64 li_seqno:48, li_ccval:4, li_is_closed:1; u32 li_length; + u32 li_losses; }; /* Index: dccp_tree_work4/net/dccp/ccids/lib/packet_history_sp.c =================================================================== --- dccp_tree_work4.orig/net/dccp/ccids/lib/packet_history_sp.c 2009-09-03 22:58:17.000000000 -0300 +++ dccp_tree_work4/net/dccp/ccids/lib/packet_history_sp.c 2009-09-03 23:00:24.000000000 -0300 @@ -244,6 +244,7 @@ h->loss_count = 3; tfrc_sp_rx_hist_entry_from_skb(tfrc_rx_hist_entry(h, 3), skb, n3); + h->num_losses = dccp_loss_count(s2, s3, n3); return 1; } @@ -257,6 +258,7 @@ tfrc_sp_rx_hist_entry_from_skb(tfrc_rx_hist_entry(h, 2), skb, n3); h->loss_count = 3; + h->num_losses = dccp_loss_count(s1, s3, n3); return 1; } @@ -293,6 +295,7 @@ h->loss_start = tfrc_rx_hist_index(h, 3); tfrc_sp_rx_hist_entry_from_skb(tfrc_rx_hist_entry(h, 1), skb, n3); h->loss_count = 3; + h->num_losses = dccp_loss_count(s0, s3, n3); return 1; } Index: dccp_tree_work4/net/dccp/ccids/lib/packet_history_sp.h =================================================================== --- dccp_tree_work4.orig/net/dccp/ccids/lib/packet_history_sp.h 2009-09-03 22:58:17.000000000 -0300 +++ dccp_tree_work4/net/dccp/ccids/lib/packet_history_sp.h 2009-09-03 22:58:29.000000000 -0300 @@ -113,6 +113,7 @@ u32 packet_size, bytes_recvd; ktime_t bytes_start; + u8 num_losses; }; /* Index: dccp_tree_work4/net/dccp/dccp.h =================================================================== --- dccp_tree_work4.orig/net/dccp/dccp.h 2009-09-03 22:58:17.000000000 -0300 +++ dccp_tree_work4/net/dccp/dccp.h 2009-09-03 22:58:29.000000000 -0300 @@ -168,6 +168,21 @@ return (u64)delta <= ndp + 1; } +static inline u64 dccp_loss_count(const u64 s1, const u64 s2, const u64 ndp) +{ + s64 delta, count; + + delta = dccp_delta_seqno(s1, s2); + WARN_ON(delta < 0); + + count = ndp + 1; + count -= delta; + + count = (count > 0) ? count : 0; + + return (u64) count; +} + enum { DCCP_MIB_NUM = 0, DCCP_MIB_ACTIVEOPENS, /* ActiveOpens */