Lines Matching refs:lp
34 * http://tcp-lp-mod.sourceforge.net/
61 * struct lp
77 struct lp {
98 struct lp *lp = inet_csk_ca(sk);
100 lp->flag = 0;
101 lp->sowd = 0;
102 lp->owd_min = 0xffffffff;
103 lp->owd_max = 0;
104 lp->owd_max_rsv = 0;
105 lp->remote_hz = 0;
106 lp->remote_ref_time = 0;
107 lp->local_ref_time = 0;
108 lp->last_drop = 0;
109 lp->inference = 0;
121 struct lp *lp = inet_csk_ca(sk);
123 if (!(lp->flag & LP_WITHIN_INF))
137 struct lp *lp = inet_csk_ca(sk);
138 s64 rhz = lp->remote_hz << 6; /* remote HZ << 6 */
143 if (lp->remote_ref_time == 0 || lp->local_ref_time == 0)
147 if (tp->rx_opt.rcv_tsval == lp->remote_ref_time ||
148 tp->rx_opt.rcv_tsecr == lp->local_ref_time)
152 (tp->rx_opt.rcv_tsval - lp->remote_ref_time) /
153 (tp->rx_opt.rcv_tsecr - lp->local_ref_time);
166 lp->flag |= LP_VALID_RHZ;
168 lp->flag &= ~LP_VALID_RHZ;
171 lp->remote_ref_time = tp->rx_opt.rcv_tsval;
172 lp->local_ref_time = tp->rx_opt.rcv_tsecr;
190 struct lp *lp = inet_csk_ca(sk);
193 lp->remote_hz = tcp_lp_remote_hz_estimator(sk);
195 if (lp->flag & LP_VALID_RHZ) {
197 tp->rx_opt.rcv_tsval * (LP_RESOL / lp->remote_hz) -
204 lp->flag |= LP_VALID_OWD;
206 lp->flag &= ~LP_VALID_OWD;
223 struct lp *lp = inet_csk_ca(sk);
227 if (!(lp->flag & LP_VALID_RHZ) || !(lp->flag & LP_VALID_OWD))
231 if (mowd < lp->owd_min)
232 lp->owd_min = mowd;
236 if (mowd > lp->owd_max) {
237 if (mowd > lp->owd_max_rsv) {
238 if (lp->owd_max_rsv == 0)
239 lp->owd_max = mowd;
241 lp->owd_max = lp->owd_max_rsv;
242 lp->owd_max_rsv = mowd;
244 lp->owd_max = mowd;
248 if (lp->sowd != 0) {
249 mowd -= lp->sowd >> 3; /* m is now error in owd est */
250 lp->sowd += mowd; /* owd = 7/8 owd + 1/8 new */
252 lp->sowd = mowd << 3; /* take the measured time be owd */
267 struct lp *lp = inet_csk_ca(sk);
277 lp->inference = 3 * delta;
280 if (lp->last_drop && (now - lp->last_drop < lp->inference))
281 lp->flag |= LP_WITHIN_INF;
283 lp->flag &= ~LP_WITHIN_INF;
286 if (lp->sowd >> 3 <
287 lp->owd_min + 15 * (lp->owd_max - lp->owd_min) / 100)
288 lp->flag |= LP_WITHIN_THR;
290 lp->flag &= ~LP_WITHIN_THR;
292 pr_debug("TCP-LP: %05o|%5u|%5u|%15u|%15u|%15u\n", lp->flag,
293 tp->snd_cwnd, lp->remote_hz, lp->owd_min, lp->owd_max,
294 lp->sowd >> 3);
296 if (lp->flag & LP_WITHIN_THR)
302 lp->owd_min = lp->sowd >> 3;
303 lp->owd_max = lp->sowd >> 2;
304 lp->owd_max_rsv = lp->sowd >> 2;
308 if (lp->flag & LP_WITHIN_INF)
317 lp->last_drop = now;
328 .name = "lp"
333 BUILD_BUG_ON(sizeof(struct lp) > ICSK_CA_PRIV_SIZE);