Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 20 Jul 2005 22:03:49 -0500
From:      Sam Pierson <samuel.pierson@gmail.com>
To:        FreeBSD Hackers <freebsd-hackers@freebsd.org>
Subject:   Atheros, hardware access layer, collisions
Message-ID:  <d9204e4c0507202003231add5a@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
Hey all,

I'm working on a project that requires creating a single packet
collision between hosts, so I've been digging around in=20
/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=20
level.  I think I have to disable the retransmission of frames=20
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=09CHANNEL_BUSY=090x0004=09/* Busy, occupied or overlap with adjoin =
chan */

(earlier in the file...)
typedef enum {
=09TXQ_FLAG_TXOKINT_ENABLE=09    =3D 0x0001,    /* enable TXOK interrupt */
=09TXQ_FLAG_TXERRINT_ENABLE    =3D 0x0001,    /* enable TXERR interrupt */
=09TXQ_FLAG_TXDESCINT_ENABLE   =3D 0x0002,    /* enable TXDESC interrupt */
=09TXQ_FLAG_TXEOLINT_ENABLE    =3D 0x0004,    /* enable TXEOL interrupt */
=09TXQ_FLAG_TXURNINT_ENABLE    =3D 0x0008,    /* enable TXURN interrupt */
=09TXQ_FLAG_BACKOFF_DISABLE    =3D 0x0010,    /* disable Post Backoff  */
=09TXQ_FLAG_COMPRESSION_ENABLE =3D 0x0020,    /* compression enabled */
=09TXQ_FLAG_RDYTIME_EXP_POLICY_ENABLE =3D 0x0040, /* enable ready time
=09=09=09=09=09=09=09expiry policy */
=09TXQ_FLAG_FRAG_BURST_BACKOFF_ENABLE =3D 0x0080, /* enable backoff while
=09=09=09=09=09=09=09sending 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. =20

Thanks,

Sam



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?d9204e4c0507202003231add5a>