Please can any one insert comments for this part of the source code for NS-2 program that use EDCF protocol than DCF .The EDCF initiate 4 queues in each station than one and modify on some parameters (CWmin,CWmax,AIFS)these parameters using for assign priority for each queue. PLEASE i need help. I JUST want to know where the code add the 4 queues and modify on their parameters.
void
PriQ::pri_recv(Packet *p, Handler *h)
{
Scheduler &s = Scheduler::instance();
level = PKT_LEVEL(p);
struct hdr_cmn *ch = HDR_CMN(p);
/* target_handle() is necessary to give the target to class Queue.
* Otherwise the target is not known in class Queue
* when dequeing packet (
*/
pri_[level].target_handle(target_);
pri_[level].recv(p,h);
}
void
PriQ::recvHighPriority(Packet *p, Handler *)
// insert packet at front of queue
{
pri_[cntl].q_->enqueHead(p);
pri_[cntl].target_handle(target_);
if (pri_[cntl].q_->length() >= qlim_)
{
Packet *to_drop = pri_[cntl].q_->lookup(pri_[cntl].q_->length()-1);
pri_[cntl].q_->remove(to_drop);
drop(to_drop);
}
if (!pri_[cntl].blocked()) {
/*
* We're not blocked. Get a packet and send it on.
* We perform an extra check because the queue
* might drop the packet even if it was
* previously empty! (e.g., RED can do this.)
*/
p = pri_[cntl].deque();
if (p != 0) {
pri_[cntl].block();
pri_[cntl].recvHighPri(p);
//target_->recv(p, &qh_); <- done in d-tail.cc
}
}
}
void
PriQ::filter(PacketFilter filter, void * data)
// apply filter to each packet in queue,
// - if filter returns 0 leave packet in queue
// - if filter returns 1 remove packet from queue
{
int i = 0;
while (i < pri_[cntl].q_->length())
{
Packet *p = pri_[cntl].q_->lookup(i);
if (filter(p,data))
{
pri_[cntl].q_->remove(p); // decrements q len
}
else i++;
}
}
/*
* Called at the end of the simulation to purge the IFQ.
*/
void
PriQ::Terminate()
{
for(int i = 0; i< MAX_PRI; i++){
Packet *p;
while((p = pri_[i].deque())) {
drop(p, DROP_END_OF_SIMULATION);
//drop(p);