Lines Matching full:pl
263 if (t->pl.probe_count < SCTP_MAX_PROBES) in sctp_transport_pl_send()
266 t->pl.last_rtx_chunks = t->asoc->rtx_data_chunks; in sctp_transport_pl_send()
267 t->pl.probe_count = 0; in sctp_transport_pl_send()
268 if (t->pl.state == SCTP_PL_BASE) { in sctp_transport_pl_send()
269 if (t->pl.probe_size == SCTP_BASE_PLPMTU) { /* BASE_PLPMTU Confirmation Failed */ in sctp_transport_pl_send()
270 t->pl.state = SCTP_PL_ERROR; /* Base -> Error */ in sctp_transport_pl_send()
272 t->pl.pmtu = SCTP_MIN_PLPMTU; in sctp_transport_pl_send()
273 t->pathmtu = t->pl.pmtu + sctp_transport_pl_hlen(t); in sctp_transport_pl_send()
276 } else if (t->pl.state == SCTP_PL_SEARCH) { in sctp_transport_pl_send()
277 if (t->pl.pmtu == t->pl.probe_size) { /* Black Hole Detected */ in sctp_transport_pl_send()
278 t->pl.state = SCTP_PL_BASE; /* Search -> Base */ in sctp_transport_pl_send()
279 t->pl.probe_size = SCTP_BASE_PLPMTU; in sctp_transport_pl_send()
280 t->pl.probe_high = 0; in sctp_transport_pl_send()
282 t->pl.pmtu = SCTP_BASE_PLPMTU; in sctp_transport_pl_send()
283 t->pathmtu = t->pl.pmtu + sctp_transport_pl_hlen(t); in sctp_transport_pl_send()
286 t->pl.probe_high = t->pl.probe_size; in sctp_transport_pl_send()
287 t->pl.probe_size = t->pl.pmtu; in sctp_transport_pl_send()
289 } else if (t->pl.state == SCTP_PL_COMPLETE) { in sctp_transport_pl_send()
290 if (t->pl.pmtu == t->pl.probe_size) { /* Black Hole Detected */ in sctp_transport_pl_send()
291 t->pl.state = SCTP_PL_BASE; /* Search Complete -> Base */ in sctp_transport_pl_send()
292 t->pl.probe_size = SCTP_BASE_PLPMTU; in sctp_transport_pl_send()
294 t->pl.pmtu = SCTP_BASE_PLPMTU; in sctp_transport_pl_send()
295 t->pathmtu = t->pl.pmtu + sctp_transport_pl_hlen(t); in sctp_transport_pl_send()
301 if (t->pl.state == SCTP_PL_COMPLETE && t->pl.raise_count < 30 && in sctp_transport_pl_send()
302 !t->pl.probe_count && t->pl.last_rtx_chunks == t->asoc->rtx_data_chunks) { in sctp_transport_pl_send()
303 t->pl.raise_count++; in sctp_transport_pl_send()
308 __func__, t, t->pl.state, t->pl.pmtu, t->pl.probe_size, t->pl.probe_high); in sctp_transport_pl_send()
310 t->pl.probe_count++; in sctp_transport_pl_send()
317 __func__, t, t->pl.state, t->pl.pmtu, t->pl.probe_size, t->pl.probe_high); in sctp_transport_pl_recv()
319 t->pl.last_rtx_chunks = t->asoc->rtx_data_chunks; in sctp_transport_pl_recv()
320 t->pl.pmtu = t->pl.probe_size; in sctp_transport_pl_recv()
321 t->pl.probe_count = 0; in sctp_transport_pl_recv()
322 if (t->pl.state == SCTP_PL_BASE) { in sctp_transport_pl_recv()
323 t->pl.state = SCTP_PL_SEARCH; /* Base -> Search */ in sctp_transport_pl_recv()
324 t->pl.probe_size += SCTP_PL_BIG_STEP; in sctp_transport_pl_recv()
325 } else if (t->pl.state == SCTP_PL_ERROR) { in sctp_transport_pl_recv()
326 t->pl.state = SCTP_PL_SEARCH; /* Error -> Search */ in sctp_transport_pl_recv()
328 t->pl.pmtu = t->pl.probe_size; in sctp_transport_pl_recv()
329 t->pathmtu = t->pl.pmtu + sctp_transport_pl_hlen(t); in sctp_transport_pl_recv()
331 t->pl.probe_size += SCTP_PL_BIG_STEP; in sctp_transport_pl_recv()
332 } else if (t->pl.state == SCTP_PL_SEARCH) { in sctp_transport_pl_recv()
333 if (!t->pl.probe_high) { in sctp_transport_pl_recv()
334 t->pl.probe_size = min(t->pl.probe_size + SCTP_PL_BIG_STEP, in sctp_transport_pl_recv()
338 t->pl.probe_size += SCTP_PL_MIN_STEP; in sctp_transport_pl_recv()
339 if (t->pl.probe_size >= t->pl.probe_high) { in sctp_transport_pl_recv()
340 t->pl.probe_high = 0; in sctp_transport_pl_recv()
341 t->pl.raise_count = 0; in sctp_transport_pl_recv()
342 t->pl.state = SCTP_PL_COMPLETE; /* Search -> Search Complete */ in sctp_transport_pl_recv()
344 t->pl.probe_size = t->pl.pmtu; in sctp_transport_pl_recv()
345 t->pathmtu = t->pl.pmtu + sctp_transport_pl_hlen(t); in sctp_transport_pl_recv()
348 } else if (t->pl.state == SCTP_PL_COMPLETE && t->pl.raise_count == 30) { in sctp_transport_pl_recv()
350 t->pl.state = SCTP_PL_SEARCH; /* Search Complete -> Search */ in sctp_transport_pl_recv()
351 t->pl.probe_size += SCTP_PL_MIN_STEP; in sctp_transport_pl_recv()
354 return t->pl.state == SCTP_PL_COMPLETE; in sctp_transport_pl_recv()
360 __func__, t, t->pl.state, t->pl.pmtu, t->pl.probe_size, pmtu); in sctp_transport_pl_toobig()
362 if (pmtu < SCTP_MIN_PLPMTU || pmtu >= t->pl.probe_size) in sctp_transport_pl_toobig()
365 if (t->pl.state == SCTP_PL_BASE) { in sctp_transport_pl_toobig()
367 t->pl.state = SCTP_PL_ERROR; /* Base -> Error */ in sctp_transport_pl_toobig()
369 t->pl.pmtu = SCTP_MIN_PLPMTU; in sctp_transport_pl_toobig()
370 t->pathmtu = t->pl.pmtu + sctp_transport_pl_hlen(t); in sctp_transport_pl_toobig()
372 } else if (t->pl.state == SCTP_PL_SEARCH) { in sctp_transport_pl_toobig()
373 if (pmtu >= SCTP_BASE_PLPMTU && pmtu < t->pl.pmtu) { in sctp_transport_pl_toobig()
374 t->pl.state = SCTP_PL_BASE; /* Search -> Base */ in sctp_transport_pl_toobig()
375 t->pl.probe_size = SCTP_BASE_PLPMTU; in sctp_transport_pl_toobig()
376 t->pl.probe_count = 0; in sctp_transport_pl_toobig()
378 t->pl.probe_high = 0; in sctp_transport_pl_toobig()
379 t->pl.pmtu = SCTP_BASE_PLPMTU; in sctp_transport_pl_toobig()
380 t->pathmtu = t->pl.pmtu + sctp_transport_pl_hlen(t); in sctp_transport_pl_toobig()
381 } else if (pmtu > t->pl.pmtu && pmtu < t->pl.probe_size) { in sctp_transport_pl_toobig()
382 t->pl.probe_size = pmtu; in sctp_transport_pl_toobig()
383 t->pl.probe_count = 0; in sctp_transport_pl_toobig()
387 } else if (t->pl.state == SCTP_PL_COMPLETE) { in sctp_transport_pl_toobig()
388 if (pmtu >= SCTP_BASE_PLPMTU && pmtu < t->pl.pmtu) { in sctp_transport_pl_toobig()
389 t->pl.state = SCTP_PL_BASE; /* Complete -> Base */ in sctp_transport_pl_toobig()
390 t->pl.probe_size = SCTP_BASE_PLPMTU; in sctp_transport_pl_toobig()
391 t->pl.probe_count = 0; in sctp_transport_pl_toobig()
393 t->pl.probe_high = 0; in sctp_transport_pl_toobig()
394 t->pl.pmtu = SCTP_BASE_PLPMTU; in sctp_transport_pl_toobig()
395 t->pathmtu = t->pl.pmtu + sctp_transport_pl_hlen(t); in sctp_transport_pl_toobig()