Atheros, hardware access layer, collisions

Sam Pierson samuel.pierson at gmail.com
Thu Jul 21 03:04:55 GMT 2005


Hey all,

I'm working on a project that requires creating a single packet
collision between hosts, so I've been digging around in 
/sys/contrib/dev/ath for awhile now.  I successfully disabled the
CTS and RTS control frames from being transmitted, which
was the first step.  I believe now the application is sending
packets, creating a collision.

I think there is still collision detection happening on the hardware 
level.  I think I have to disable the retransmission of frames 
which are lost due to collisions.  Here's my reasoning:  In the lab, two
hosts are sending packets to the middle guy at the same time.
After examining the traffic on the middle guy, one packet will
arrive before the other one (sometimes in different order) and
the second packet comes 500-1200us after the first.  From this,
I think some retransmission is happening because of collision,
since the results are seemingly random.  Can anyone help me
determine what I should zero out from the drivers?  I'm not sure,
but these look like the important ones:
>From ah.h (/contrib/dev/ath/)

#define	CHANNEL_BUSY	0x0004	/* Busy, occupied or overlap with adjoin chan */

(earlier in the file...)
typedef enum {
	TXQ_FLAG_TXOKINT_ENABLE	    = 0x0001,    /* enable TXOK interrupt */
	TXQ_FLAG_TXERRINT_ENABLE    = 0x0001,    /* enable TXERR interrupt */
	TXQ_FLAG_TXDESCINT_ENABLE   = 0x0002,    /* enable TXDESC interrupt */
	TXQ_FLAG_TXEOLINT_ENABLE    = 0x0004,    /* enable TXEOL interrupt */
	TXQ_FLAG_TXURNINT_ENABLE    = 0x0008,    /* enable TXURN interrupt */
	TXQ_FLAG_BACKOFF_DISABLE    = 0x0010,    /* disable Post Backoff  */
	TXQ_FLAG_COMPRESSION_ENABLE = 0x0020,    /* compression enabled */
	TXQ_FLAG_RDYTIME_EXP_POLICY_ENABLE = 0x0040, /* enable ready time
							expiry policy */
	TXQ_FLAG_FRAG_BURST_BACKOFF_ENABLE = 0x0080, /* enable backoff while
							sending fragment burst*/
} HAL_TX_QUEUE_FLAGS;


Does zeroing out frag_burst_backoff_enable do anything for me?  I'm still
trying many configurations and recompiling this to my kernel is very time
consuming.  

Thanks,

Sam


More information about the freebsd-hackers mailing list