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

[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
#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_ */
...@@ -40,6 +40,7 @@ ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment