For each transmission MAC waits for its "ack" if ack did not receive on time...it retransmit at time assigned by backoff time... in ns-2.34, MAC tries 7 times before declaring link break.
" I don't know that why is the following highlight line used in * Mac802_11::RetransmitDATA()* function? " It is the function responsible for that retransmission...I m talknig about ns-2.34...I hope mechanism is similar for ns-2.35. ________________________________ From: M Falahati <md.falah...@gmail.com> To: ns-users@ISI.EDU Sent: Thursday, 6 December 2012 2:55 AM Subject: [ns] Schedule the backoff timer in mac-802_11 Dear All, I'm studying on implementation of mac-802_11 in ns-2.35. I don't know that why is the following highlight line used in * Mac802_11::RetransmitDATA()* function? ====================================================================== *if((u_int32_t)ETHER_ADDR(mh->dh_ra) == MAC_BROADCAST) { Packet::free(pktTx_); pktTx_ = 0; rst_cw(); mhBackoff_.start(cw_, is_idle()); return; }* ====================================================================== I think that line runs following steps: 1- it invokes *BackoffTimer::start()* that because of *idle* parameter is zero, then *pause*_ parameter will set to one. 2- *tx_resume()* in the *Mac802_11::send_timer()* invokes *setTxState()*and changes *tx_state* to *MAC_IDLE* , then invokes *checkBackoffTimer()*. 3- *checkBackoffTimer()* invokes *mhBackoff_.resume()* and backoff timer will schedule with [0-CWMin] + DIFS value. Are above steps true? If answer is true,is it necessary to start backoff timer (with value between [0-CWMin] + DIFS) after sending a broadcast packet? Sincerely Yours.