Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 65299d6c authored by Arnaldo Carvalho de Melo's avatar Arnaldo Carvalho de Melo Committed by David S. Miller
Browse files

[CCID3]: Introduce include/linux/tfrc.h



Moving the TFRC sender and receiver variables to separate structs, so
that we can copy these structs to userspace thru getsockopt,
dccp_diag, etc.

Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@mandriva.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent ae31c339
Loading
Loading
Loading
Loading

include/linux/tfrc.h

0 → 100644
+35 −0
Original line number Original line Diff line number Diff line
#ifndef _LINUX_TFRC_H_
#define _LINUX_TFRC_H_
/*
 *  include/linux/tfrc.h
 *
 *  Copyright (c) 2005 The University of Waikato, Hamilton, New Zealand.
 *  Copyright (c) 2005 Ian McDonald <iam4@cs.waikato.ac.nz>
 *  Copyright (c) 2005 Arnaldo Carvalho de Melo <acme@conectiva.com.br>
 *  Copyright (c) 2003 Nils-Erik Mattsson, Joacim Haggmark, Magnus Erixzon
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 */

#include <linux/types.h>

struct tfrc_rx_info {
  	__u32 tfrcrx_x_recv;
	__u32 tfrcrx_rtt;
  	__u32 tfrcrx_p;
};

struct tfrc_tx_info {
	__u32 tfrctx_x;
	__u32 tfrctx_x_recv;
	__u32 tfrctx_x_calc;
	__u32 tfrctx_rtt;
	__u32 tfrctx_p;
	__u32 tfrctx_rto;
	__u32 tfrctx_ipi;
};

#endif /* _LINUX_TFRC_H_ */
+13 −10
Original line number Original line Diff line number Diff line
@@ -40,6 +40,7 @@
#include <linux/list.h>
#include <linux/list.h>
#include <linux/time.h>
#include <linux/time.h>
#include <linux/types.h>
#include <linux/types.h>
#include <linux/tfrc.h>


#define TFRC_MIN_PACKET_SIZE	   16
#define TFRC_MIN_PACKET_SIZE	   16
#define TFRC_STD_PACKET_SIZE	  256
#define TFRC_STD_PACKET_SIZE	  256
@@ -93,12 +94,15 @@ struct ccid3_options_received {
  * @ccid3hctx_hist - Packet history
  * @ccid3hctx_hist - Packet history
  */
  */
struct ccid3_hc_tx_sock {
struct ccid3_hc_tx_sock {
	u32				ccid3hctx_x;
	struct tfrc_tx_info		ccid3hctx_tfrc;
	u32				ccid3hctx_x_recv;
#define ccid3hctx_x			ccid3hctx_tfrc.tfrctx_x
	u32				ccid3hctx_x_calc;
#define ccid3hctx_x_recv		ccid3hctx_tfrc.tfrctx_x_recv
#define ccid3hctx_x_calc		ccid3hctx_tfrc.tfrctx_x_calc
#define ccid3hctx_rtt			ccid3hctx_tfrc.tfrctx_rtt
#define ccid3hctx_p			ccid3hctx_tfrc.tfrctx_p
#define ccid3hctx_t_rto			ccid3hctx_tfrc.tfrctx_rto
#define ccid3hctx_t_ipi			ccid3hctx_tfrc.tfrctx_ipi
	u16				ccid3hctx_s;
	u16				ccid3hctx_s;
	u32				ccid3hctx_rtt;
	u32				ccid3hctx_p;
  	u8				ccid3hctx_state;
  	u8				ccid3hctx_state;
	u8				ccid3hctx_last_win_count;
	u8				ccid3hctx_last_win_count;
	u8				ccid3hctx_idle;
	u8				ccid3hctx_idle;
@@ -106,19 +110,19 @@ struct ccid3_hc_tx_sock {
	struct timer_list		ccid3hctx_no_feedback_timer;
	struct timer_list		ccid3hctx_no_feedback_timer;
	struct timeval			ccid3hctx_t_ld;
	struct timeval			ccid3hctx_t_ld;
	struct timeval			ccid3hctx_t_nom;
	struct timeval			ccid3hctx_t_nom;
	u32				ccid3hctx_t_rto;
	u32				ccid3hctx_t_ipi;
	u32				ccid3hctx_delta;
	u32				ccid3hctx_delta;
	struct list_head		ccid3hctx_hist;
	struct list_head		ccid3hctx_hist;
	struct ccid3_options_received	ccid3hctx_options_received;
	struct ccid3_options_received	ccid3hctx_options_received;
};
};


struct ccid3_hc_rx_sock {
struct ccid3_hc_rx_sock {
	struct tfrc_rx_info	ccid3hcrx_tfrc;
#define ccid3hcrx_x_recv	ccid3hcrx_tfrc.tfrcrx_x_recv
#define ccid3hcrx_rtt		ccid3hcrx_tfrc.tfrcrx_rtt
#define ccid3hcrx_p		ccid3hcrx_tfrc.tfrcrx_p
  	u64			ccid3hcrx_seqno_last_counter:48,
  	u64			ccid3hcrx_seqno_last_counter:48,
				ccid3hcrx_state:8,
				ccid3hcrx_state:8,
				ccid3hcrx_last_counter:4;
				ccid3hcrx_last_counter:4;
	u32			ccid3hcrx_rtt;
  	u32			ccid3hcrx_p;
  	u32			ccid3hcrx_bytes_recv;
  	u32			ccid3hcrx_bytes_recv;
  	struct timeval		ccid3hcrx_tstamp_last_feedback;
  	struct timeval		ccid3hcrx_tstamp_last_feedback;
  	struct timeval		ccid3hcrx_tstamp_last_ack;
  	struct timeval		ccid3hcrx_tstamp_last_ack;
@@ -127,7 +131,6 @@ struct ccid3_hc_rx_sock {
  	u16			ccid3hcrx_s;
  	u16			ccid3hcrx_s;
  	u32			ccid3hcrx_pinv;
  	u32			ccid3hcrx_pinv;
  	u32			ccid3hcrx_elapsed_time;
  	u32			ccid3hcrx_elapsed_time;
  	u32			ccid3hcrx_x_recv;
};
};


static inline struct ccid3_hc_tx_sock *ccid3_hc_tx_sk(const struct sock *sk)
static inline struct ccid3_hc_tx_sock *ccid3_hc_tx_sk(const struct sock *sk)