|
a/src/policies/DIF/RMT/MaxQueue/UpstreamNotifier/UpstreamNotifier.cc |
|
b/src/policies/DIF/RMT/MaxQueue/UpstreamNotifier/UpstreamNotifier.cc |
|
... |
|
... |
35 |
{ // (N-1)-port output queues are filling up => stop accepting more PDUs
|
35 |
{ // (N-1)-port output queues are filling up => stop accepting more PDUs
|
36 |
notifySenderOfCongestion(queue->getLastPDU());
|
36 |
notifySenderOfCongestion(queue->getLastPDU());
|
37 |
}
|
37 |
}
|
38 |
}
|
38 |
}
|
39 |
|
39 |
|
40 |
// extended version:
|
|
|
41 |
// !!! CURRENTLY NOT WORKING, will be available in the next release.
|
|
|
42 |
// When an output buffer is overflowing, disable reading data from the input
|
|
|
43 |
// buffer sending data to it. When the input buffer starts to overflow as well,
|
|
|
44 |
// send out the notification.
|
|
|
45 |
|
|
|
46 |
// if (queue->getLength() >= queue->getMaxLength())
|
|
|
47 |
// {
|
|
|
48 |
// if (queue->getType() == RMTQueue::OUTPUT)
|
|
|
49 |
// {
|
|
|
50 |
// disableSenderPortDrain(queue->getLastPDU());
|
|
|
51 |
// }
|
|
|
52 |
// else if (queue->getType() == RMTQueue::INPUT)
|
|
|
53 |
// {
|
|
|
54 |
// notifySenderOfCongestion(queue->getLastPDU());
|
|
|
55 |
// }
|
|
|
56 |
// }
|
|
|
57 |
// else if ((queue->getLength() == queue->getThreshLength()) &&
|
|
|
58 |
// port->hasBlockedInput())
|
|
|
59 |
// { // the output buffers are keeping up again, continue receiving on input
|
|
|
60 |
// port->unblockInput();
|
|
|
61 |
// }
|
|
|
62 |
|
|
|
63 |
return false;
|
40 |
return false;
|
64 |
}
|
41 |
}
|
65 |
|
42 |
|