Commit 8e138e79 authored by Gerrit Renker's avatar Gerrit Renker Committed by David S. Miller

[CCID3]: Use a function to update p_inv, and p is never used

This patch
 1) concentrates previously scattered computation of p_inv into one function;
 2) removes the `p' element of the CCID3 RX sock (it is redundant);
 3) makes the tfrc_rx_info structure standalone, only used on demand.
Signed-off-by: default avatarGerrit Renker <gerrit@erg.abdn.ac.uk>
Signed-off-by: default avatarIan McDonald <ian.mcdonald@jandi.co.nz>
Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 17159b0b
...@@ -917,6 +917,7 @@ static int ccid3_hc_rx_getsockopt(struct sock *sk, const int optname, int len, ...@@ -917,6 +917,7 @@ static int ccid3_hc_rx_getsockopt(struct sock *sk, const int optname, int len,
u32 __user *optval, int __user *optlen) u32 __user *optval, int __user *optlen)
{ {
const struct ccid3_hc_rx_sock *hcrx; const struct ccid3_hc_rx_sock *hcrx;
struct tfrc_rx_info rx_info;
const void *val; const void *val;
/* Listen socks doesn't have a private CCID block */ /* Listen socks doesn't have a private CCID block */
...@@ -926,10 +927,14 @@ static int ccid3_hc_rx_getsockopt(struct sock *sk, const int optname, int len, ...@@ -926,10 +927,14 @@ static int ccid3_hc_rx_getsockopt(struct sock *sk, const int optname, int len,
hcrx = ccid3_hc_rx_sk(sk); hcrx = ccid3_hc_rx_sk(sk);
switch (optname) { switch (optname) {
case DCCP_SOCKOPT_CCID_RX_INFO: case DCCP_SOCKOPT_CCID_RX_INFO:
if (len < sizeof(hcrx->ccid3hcrx_tfrc)) if (len < sizeof(rx_info))
return -EINVAL; return -EINVAL;
len = sizeof(hcrx->ccid3hcrx_tfrc); rx_info.tfrcrx_x_recv = hcrx->ccid3hcrx_x_recv;
val = &hcrx->ccid3hcrx_tfrc; rx_info.tfrcrx_rtt = hcrx->ccid3hcrx_rtt;
rx_info.tfrcrx_p = hcrx->ccid3hcrx_pinv == 0 ? ~0U :
scaled_div(1, hcrx->ccid3hcrx_pinv);
len = sizeof(rx_info);
val = &rx_info;
break; break;
default: default:
return -ENOPROTOOPT; return -ENOPROTOOPT;
......
...@@ -139,6 +139,8 @@ enum ccid3_hc_rx_states { ...@@ -139,6 +139,8 @@ enum ccid3_hc_rx_states {
* @ccid3hcrx_last_counter - Tracks window counter (RFC 4342, 8.1) * @ccid3hcrx_last_counter - Tracks window counter (RFC 4342, 8.1)
* @ccid3hcrx_state - Receiver state, one of %ccid3_hc_rx_states * @ccid3hcrx_state - Receiver state, one of %ccid3_hc_rx_states
* @ccid3hcrx_bytes_recv - Total sum of DCCP payload bytes * @ccid3hcrx_bytes_recv - Total sum of DCCP payload bytes
* @ccid3hcrx_x_recv - Receiver estimate of send rate (RFC 3448, sec. 4.3)
* @ccid3hcrx_rtt - Receiver estimate of RTT
* @ccid3hcrx_tstamp_last_feedback - Time at which last feedback was sent * @ccid3hcrx_tstamp_last_feedback - Time at which last feedback was sent
* @ccid3hcrx_tstamp_last_ack - Time at which last feedback was sent * @ccid3hcrx_tstamp_last_ack - Time at which last feedback was sent
* @ccid3hcrx_hist - Packet history (loss detection + RTT sampling) * @ccid3hcrx_hist - Packet history (loss detection + RTT sampling)
...@@ -147,13 +149,11 @@ enum ccid3_hc_rx_states { ...@@ -147,13 +149,11 @@ enum ccid3_hc_rx_states {
* @ccid3hcrx_pinv - Inverse of Loss Event Rate (RFC 4342, sec. 8.5) * @ccid3hcrx_pinv - Inverse of Loss Event Rate (RFC 4342, sec. 8.5)
*/ */
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
u8 ccid3hcrx_last_counter:4; u8 ccid3hcrx_last_counter:4;
enum ccid3_hc_rx_states ccid3hcrx_state:8; enum ccid3_hc_rx_states ccid3hcrx_state:8;
u32 ccid3hcrx_bytes_recv; u32 ccid3hcrx_bytes_recv;
u32 ccid3hcrx_x_recv;
u32 ccid3hcrx_rtt;
ktime_t ccid3hcrx_tstamp_last_feedback; ktime_t ccid3hcrx_tstamp_last_feedback;
struct tfrc_rx_hist ccid3hcrx_hist; struct tfrc_rx_hist ccid3hcrx_hist;
struct tfrc_loss_hist ccid3hcrx_li_hist; struct tfrc_loss_hist ccid3hcrx_li_hist;
......
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