[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: Gerrit Renker <gerrit@erg.abdn.ac.uk> Signed-off-by: Ian McDonald <ian.mcdonald@jandi.co.nz> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
此提交包含在:
@@ -917,6 +917,7 @@ static int ccid3_hc_rx_getsockopt(struct sock *sk, const int optname, int len,
|
||||
u32 __user *optval, int __user *optlen)
|
||||
{
|
||||
const struct ccid3_hc_rx_sock *hcrx;
|
||||
struct tfrc_rx_info rx_info;
|
||||
const void *val;
|
||||
|
||||
/* 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,
|
||||
hcrx = ccid3_hc_rx_sk(sk);
|
||||
switch (optname) {
|
||||
case DCCP_SOCKOPT_CCID_RX_INFO:
|
||||
if (len < sizeof(hcrx->ccid3hcrx_tfrc))
|
||||
if (len < sizeof(rx_info))
|
||||
return -EINVAL;
|
||||
len = sizeof(hcrx->ccid3hcrx_tfrc);
|
||||
val = &hcrx->ccid3hcrx_tfrc;
|
||||
rx_info.tfrcrx_x_recv = hcrx->ccid3hcrx_x_recv;
|
||||
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;
|
||||
default:
|
||||
return -ENOPROTOOPT;
|
||||
|
新增問題並參考
封鎖使用者