[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ns] mac-802_11.cc error



Hi,

Just a suggestion...I agree that's a bug 
in the code. But I think what needs to be 
modified is the if(pktTx_) statement 
instead of the if(pktRTS_) statement.

Regards,

Alan



On Thu, 20 Sep 2001, Stefan Rank wrote:

> Hi,
> 
> in the specification 9.2.5.4 after successful RTS/CTS, the transmission
> of data has to be deferred for an interval of sifs_. In my simulation
> results data transmission is always deferred for an interval of difs_
> 
> void
> Mac802_11::tx_resume()
> {
> 	assert(mhSend_.busy() == 0);
> 	assert(mhDefer_.busy() == 0);
> 
> 	if(pktCTRL_) {
> 		/*
> 		 *  Need to send a CTS or ACK.
> 		 */
> 		mhDefer_.start(sifs_);
> 	} else if(pktRTS_) {
> 		if(mhBackoff_.busy() == 0)
> 
> //
> //After successful RTS/CTS this sould be mhDefer_.start(sifs_); 
> //
> 			mhDefer_.start(difs_);    
> 
> 
> 	} else if(pktTx_) {
> 		if(mhBackoff_.busy() == 0)
>       			mhDefer_.start(difs_);
> 	} else if(callback_) {
> 		Handler *h = callback_;
> 		callback_ = 0;
> 		h->handle((Event*) 0);
> 	}
> 	SET_TX_STATE(MAC_IDLE);
> }
> 
> Changing this line only results in Data always being transmitted after
> an interval of sifs_ even if there is no preceding RTS/CTS.
> 
> Could anybody please fix this? 
> 
> Thanks
> 
> Stefan
>