Commit 67b67e36 authored by Gerrit Renker's avatar Gerrit Renker Committed by David S. Miller

ccid: ccid-2/3 code cosmetics

This patch collects cosmetics-only changes to separate these from
code changes:
 * update with regard to CodingStyle and whitespace changes,
 * documentation:
   - adding/revising comments,
   - remove CCID-3 RX socket documentation which is either
     duplicate or refers to fields that no longer exist,
 * expand embedded tfrc_tx_info struct inline for consistency,
   removing indirections via #define.
Signed-off-by: default avatarGerrit Renker <gerrit@erg.abdn.ac.uk>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 21dc3301
...@@ -193,8 +193,8 @@ static void ccid2_hc_tx_rto_expire(unsigned long data) ...@@ -193,8 +193,8 @@ static void ccid2_hc_tx_rto_expire(unsigned long data)
hc->tx_ssthresh = hc->tx_cwnd / 2; hc->tx_ssthresh = hc->tx_cwnd / 2;
if (hc->tx_ssthresh < 2) if (hc->tx_ssthresh < 2)
hc->tx_ssthresh = 2; hc->tx_ssthresh = 2;
hc->tx_cwnd = 1; hc->tx_cwnd = 1;
hc->tx_pipe = 0; hc->tx_pipe = 0;
/* clear state about stuff we sent */ /* clear state about stuff we sent */
hc->tx_seqt = hc->tx_seqh; hc->tx_seqt = hc->tx_seqh;
......
...@@ -218,9 +218,9 @@ static void ccid3_hc_tx_no_feedback_timer(unsigned long data) ...@@ -218,9 +218,9 @@ static void ccid3_hc_tx_no_feedback_timer(unsigned long data)
/* /*
* Determine new allowed sending rate X as per draft rfc3448bis-00, 4.4 * Determine new allowed sending rate X as per draft rfc3448bis-00, 4.4
* RTO is 0 if and only if no feedback has been received yet.
*/ */
if (hc->tx_t_rto == 0 || /* no feedback received yet */ if (hc->tx_t_rto == 0 || hc->tx_p == 0) {
hc->tx_p == 0) {
/* halve send rate directly */ /* halve send rate directly */
hc->tx_x = max(hc->tx_x / 2, hc->tx_x = max(hc->tx_x / 2,
...@@ -256,7 +256,7 @@ static void ccid3_hc_tx_no_feedback_timer(unsigned long data) ...@@ -256,7 +256,7 @@ static void ccid3_hc_tx_no_feedback_timer(unsigned long data)
* Set new timeout for the nofeedback timer. * Set new timeout for the nofeedback timer.
* See comments in packet_recv() regarding the value of t_RTO. * See comments in packet_recv() regarding the value of t_RTO.
*/ */
if (unlikely(hc->tx_t_rto == 0)) /* no feedback yet */ if (unlikely(hc->tx_t_rto == 0)) /* no feedback received yet */
t_nfb = TFRC_INITIAL_TIMEOUT; t_nfb = TFRC_INITIAL_TIMEOUT;
else else
t_nfb = max(hc->tx_t_rto, 2 * hc->tx_t_ipi); t_nfb = max(hc->tx_t_rto, 2 * hc->tx_t_ipi);
...@@ -372,7 +372,7 @@ static void ccid3_hc_tx_packet_sent(struct sock *sk, int more, ...@@ -372,7 +372,7 @@ static void ccid3_hc_tx_packet_sent(struct sock *sk, int more,
static void ccid3_hc_tx_packet_recv(struct sock *sk, struct sk_buff *skb) static void ccid3_hc_tx_packet_recv(struct sock *sk, struct sk_buff *skb)
{ {
struct ccid3_hc_tx_sock *hc = ccid3_hc_tx_sk(sk); struct ccid3_hc_tx_sock *hc = ccid3_hc_tx_sk(sk);
struct ccid3_options_received *opt_recv; struct ccid3_options_received *opt_recv = &hc->tx_options_received;
ktime_t now; ktime_t now;
unsigned long t_nfb; unsigned long t_nfb;
u32 pinv, r_sample; u32 pinv, r_sample;
...@@ -386,7 +386,6 @@ static void ccid3_hc_tx_packet_recv(struct sock *sk, struct sk_buff *skb) ...@@ -386,7 +386,6 @@ static void ccid3_hc_tx_packet_recv(struct sock *sk, struct sk_buff *skb)
hc->tx_state != TFRC_SSTATE_NO_FBACK) hc->tx_state != TFRC_SSTATE_NO_FBACK)
return; return;
opt_recv = &hc->tx_options_received;
now = ktime_get_real(); now = ktime_get_real();
/* Estimate RTT from history if ACK number is valid */ /* Estimate RTT from history if ACK number is valid */
...@@ -489,11 +488,9 @@ static int ccid3_hc_tx_parse_options(struct sock *sk, unsigned char option, ...@@ -489,11 +488,9 @@ static int ccid3_hc_tx_parse_options(struct sock *sk, unsigned char option,
int rc = 0; int rc = 0;
const struct dccp_sock *dp = dccp_sk(sk); const struct dccp_sock *dp = dccp_sk(sk);
struct ccid3_hc_tx_sock *hc = ccid3_hc_tx_sk(sk); struct ccid3_hc_tx_sock *hc = ccid3_hc_tx_sk(sk);
struct ccid3_options_received *opt_recv; struct ccid3_options_received *opt_recv = &hc->tx_options_received;
__be32 opt_val; __be32 opt_val;
opt_recv = &hc->tx_options_received;
if (opt_recv->ccid3or_seqno != dp->dccps_gsr) { if (opt_recv->ccid3or_seqno != dp->dccps_gsr) {
opt_recv->ccid3or_seqno = dp->dccps_gsr; opt_recv->ccid3or_seqno = dp->dccps_gsr;
opt_recv->ccid3or_loss_event_rate = ~0; opt_recv->ccid3or_loss_event_rate = ~0;
...@@ -582,6 +579,7 @@ static int ccid3_hc_tx_getsockopt(struct sock *sk, const int optname, int len, ...@@ -582,6 +579,7 @@ static int ccid3_hc_tx_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_tx_sock *hc; const struct ccid3_hc_tx_sock *hc;
struct tfrc_tx_info tfrc;
const void *val; const void *val;
/* Listen socks doesn't have a private CCID block */ /* Listen socks doesn't have a private CCID block */
...@@ -591,10 +589,17 @@ static int ccid3_hc_tx_getsockopt(struct sock *sk, const int optname, int len, ...@@ -591,10 +589,17 @@ static int ccid3_hc_tx_getsockopt(struct sock *sk, const int optname, int len,
hc = ccid3_hc_tx_sk(sk); hc = ccid3_hc_tx_sk(sk);
switch (optname) { switch (optname) {
case DCCP_SOCKOPT_CCID_TX_INFO: case DCCP_SOCKOPT_CCID_TX_INFO:
if (len < sizeof(hc->tx_tfrc)) if (len < sizeof(tfrc))
return -EINVAL; return -EINVAL;
len = sizeof(hc->tx_tfrc); tfrc.tfrctx_x = hc->tx_x;
val = &hc->tx_tfrc; tfrc.tfrctx_x_recv = hc->tx_x_recv;
tfrc.tfrctx_x_calc = hc->tx_x_calc;
tfrc.tfrctx_rtt = hc->tx_rtt;
tfrc.tfrctx_p = hc->tx_p;
tfrc.tfrctx_rto = hc->tx_t_rto;
tfrc.tfrctx_ipi = hc->tx_t_ipi;
len = sizeof(tfrc);
val = &tfrc;
break; break;
default: default:
return -ENOPROTOOPT; return -ENOPROTOOPT;
...@@ -749,10 +754,11 @@ static u32 ccid3_first_li(struct sock *sk) ...@@ -749,10 +754,11 @@ static u32 ccid3_first_li(struct sock *sk)
x_recv = scaled_div32(hc->rx_bytes_recv, delta); x_recv = scaled_div32(hc->rx_bytes_recv, delta);
if (x_recv == 0) { /* would also trigger divide-by-zero */ if (x_recv == 0) { /* would also trigger divide-by-zero */
DCCP_WARN("X_recv==0\n"); DCCP_WARN("X_recv==0\n");
if ((x_recv = hc->rx_x_recv) == 0) { if (hc->rx_x_recv == 0) {
DCCP_BUG("stored value of X_recv is zero"); DCCP_BUG("stored value of X_recv is zero");
return ~0U; return ~0U;
} }
x_recv = hc->rx_x_recv;
} }
fval = scaled_div(hc->rx_s, hc->rx_rtt); fval = scaled_div(hc->rx_s, hc->rx_rtt);
......
...@@ -95,14 +95,13 @@ enum ccid3_hc_tx_states { ...@@ -95,14 +95,13 @@ enum ccid3_hc_tx_states {
* @tx_options_received: Parsed set of retrieved options * @tx_options_received: Parsed set of retrieved options
*/ */
struct ccid3_hc_tx_sock { struct ccid3_hc_tx_sock {
struct tfrc_tx_info tx_tfrc; u64 tx_x;
#define tx_x tx_tfrc.tfrctx_x u64 tx_x_recv;
#define tx_x_recv tx_tfrc.tfrctx_x_recv u32 tx_x_calc;
#define tx_x_calc tx_tfrc.tfrctx_x_calc u32 tx_rtt;
#define tx_rtt tx_tfrc.tfrctx_rtt u32 tx_p;
#define tx_p tx_tfrc.tfrctx_p u32 tx_t_rto;
#define tx_t_rto tx_tfrc.tfrctx_rto u32 tx_t_ipi;
#define tx_t_ipi tx_tfrc.tfrctx_ipi
u16 tx_s; u16 tx_s;
enum ccid3_hc_tx_states tx_state:8; enum ccid3_hc_tx_states tx_state:8;
u8 tx_last_win_count; u8 tx_last_win_count;
...@@ -131,16 +130,12 @@ enum ccid3_hc_rx_states { ...@@ -131,16 +130,12 @@ enum ccid3_hc_rx_states {
/** /**
* struct ccid3_hc_rx_sock - CCID3 receiver half-connection socket * struct ccid3_hc_rx_sock - CCID3 receiver half-connection socket
* @rx_x_recv: Receiver estimate of send rate (RFC 3448 4.3)
* @rx_rtt: Receiver estimate of rtt (non-standard)
* @rx_p: Current loss event rate (RFC 3448 5.4)
* @rx_last_counter: Tracks window counter (RFC 4342, 8.1) * @rx_last_counter: Tracks window counter (RFC 4342, 8.1)
* @rx_state: Receiver state, one of %ccid3_hc_rx_states * @rx_state: Receiver state, one of %ccid3_hc_rx_states
* @rx_bytes_recv: Total sum of DCCP payload bytes * @rx_bytes_recv: Total sum of DCCP payload bytes
* @rx_x_recv: Receiver estimate of send rate (RFC 3448, sec. 4.3) * @rx_x_recv: Receiver estimate of send rate (RFC 3448, sec. 4.3)
* @rx_rtt: Receiver estimate of RTT * @rx_rtt: Receiver estimate of RTT
* @rx_tstamp_last_feedback: Time at which last feedback was sent * @rx_tstamp_last_feedback: Time at which last feedback was sent
* @rx_tstamp_last_ack: Time at which last feedback was sent
* @rx_hist: Packet history (loss detection + RTT sampling) * @rx_hist: Packet history (loss detection + RTT sampling)
* @rx_li_hist: Loss Interval database * @rx_li_hist: Loss Interval database
* @rx_s: Received packet size in bytes * @rx_s: Received packet size in bytes
......
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