Lines Matching refs:pl

266 	if (t->pl.probe_count < SCTP_MAX_PROBES)
269 t->pl.probe_count = 0;
270 if (t->pl.state == SCTP_PL_BASE) {
271 if (t->pl.probe_size == SCTP_BASE_PLPMTU) { /* BASE_PLPMTU Confirmation Failed */
272 t->pl.state = SCTP_PL_ERROR; /* Base -> Error */
274 t->pl.pmtu = SCTP_BASE_PLPMTU;
275 t->pathmtu = t->pl.pmtu + sctp_transport_pl_hlen(t);
278 } else if (t->pl.state == SCTP_PL_SEARCH) {
279 if (t->pl.pmtu == t->pl.probe_size) { /* Black Hole Detected */
280 t->pl.state = SCTP_PL_BASE; /* Search -> Base */
281 t->pl.probe_size = SCTP_BASE_PLPMTU;
282 t->pl.probe_high = 0;
284 t->pl.pmtu = SCTP_BASE_PLPMTU;
285 t->pathmtu = t->pl.pmtu + sctp_transport_pl_hlen(t);
288 t->pl.probe_high = t->pl.probe_size;
289 t->pl.probe_size = t->pl.pmtu;
291 } else if (t->pl.state == SCTP_PL_COMPLETE) {
292 if (t->pl.pmtu == t->pl.probe_size) { /* Black Hole Detected */
293 t->pl.state = SCTP_PL_BASE; /* Search Complete -> Base */
294 t->pl.probe_size = SCTP_BASE_PLPMTU;
296 t->pl.pmtu = SCTP_BASE_PLPMTU;
297 t->pathmtu = t->pl.pmtu + sctp_transport_pl_hlen(t);
304 __func__, t, t->pl.state, t->pl.pmtu, t->pl.probe_size, t->pl.probe_high);
305 t->pl.probe_count++;
311 __func__, t, t->pl.state, t->pl.pmtu, t->pl.probe_size, t->pl.probe_high);
313 t->pl.pmtu = t->pl.probe_size;
314 t->pl.probe_count = 0;
315 if (t->pl.state == SCTP_PL_BASE) {
316 t->pl.state = SCTP_PL_SEARCH; /* Base -> Search */
317 t->pl.probe_size += SCTP_PL_BIG_STEP;
318 } else if (t->pl.state == SCTP_PL_ERROR) {
319 t->pl.state = SCTP_PL_SEARCH; /* Error -> Search */
321 t->pl.pmtu = t->pl.probe_size;
322 t->pathmtu = t->pl.pmtu + sctp_transport_pl_hlen(t);
324 t->pl.probe_size += SCTP_PL_BIG_STEP;
325 } else if (t->pl.state == SCTP_PL_SEARCH) {
326 if (!t->pl.probe_high) {
327 if (t->pl.probe_size < SCTP_MAX_PLPMTU) {
328 t->pl.probe_size = min(t->pl.probe_size + SCTP_PL_BIG_STEP,
332 t->pl.probe_high = SCTP_MAX_PLPMTU;
334 t->pl.probe_size += SCTP_PL_MIN_STEP;
335 if (t->pl.probe_size >= t->pl.probe_high) {
336 t->pl.probe_high = 0;
337 t->pl.state = SCTP_PL_COMPLETE; /* Search -> Search Complete */
339 t->pl.probe_size = t->pl.pmtu;
340 t->pathmtu = t->pl.pmtu + sctp_transport_pl_hlen(t);
344 } else if (t->pl.state == SCTP_PL_COMPLETE) {
346 t->pl.state = SCTP_PL_SEARCH; /* Search Complete -> Search */
347 t->pl.probe_size = min(t->pl.probe_size + SCTP_PL_MIN_STEP, SCTP_MAX_PLPMTU);
350 return t->pl.state == SCTP_PL_COMPLETE;
356 __func__, t, t->pl.state, t->pl.pmtu, t->pl.probe_size, pmtu);
358 if (pmtu < SCTP_MIN_PLPMTU || pmtu >= t->pl.probe_size)
361 if (t->pl.state == SCTP_PL_BASE) {
363 t->pl.state = SCTP_PL_ERROR; /* Base -> Error */
365 t->pl.pmtu = SCTP_BASE_PLPMTU;
366 t->pathmtu = t->pl.pmtu + sctp_transport_pl_hlen(t);
369 } else if (t->pl.state == SCTP_PL_SEARCH) {
370 if (pmtu >= SCTP_BASE_PLPMTU && pmtu < t->pl.pmtu) {
371 t->pl.state = SCTP_PL_BASE; /* Search -> Base */
372 t->pl.probe_size = SCTP_BASE_PLPMTU;
373 t->pl.probe_count = 0;
375 t->pl.probe_high = 0;
376 t->pl.pmtu = SCTP_BASE_PLPMTU;
377 t->pathmtu = t->pl.pmtu + sctp_transport_pl_hlen(t);
379 } else if (pmtu > t->pl.pmtu && pmtu < t->pl.probe_size) {
380 t->pl.probe_size = pmtu;
381 t->pl.probe_count = 0;
383 } else if (t->pl.state == SCTP_PL_COMPLETE) {
384 if (pmtu >= SCTP_BASE_PLPMTU && pmtu < t->pl.pmtu) {
385 t->pl.state = SCTP_PL_BASE; /* Complete -> Base */
386 t->pl.probe_size = SCTP_BASE_PLPMTU;
387 t->pl.probe_count = 0;
389 t->pl.probe_high = 0;
390 t->pl.pmtu = SCTP_BASE_PLPMTU;
391 t->pathmtu = t->pl.pmtu + sctp_transport_pl_hlen(t);