Hello everybody, we found a strange behavior problem with the b43 driver. We begin investigating this when doing some access tests with several boards: we discovered that the Broadcom boards usually acquire the channel usage with higher priority when the b43 driver is used as respect to other vendor boards.
After investigating we saw that the intra-queue contention procedure is carried out by the firmware which stores information, such as AIFS and current backoffs for each queue, inside the shared memory. The AIFS for each queue is used to compute the initial backoff so that internal contention usually gives more priority to VO queue (smallest AIFS) and less to background (biggest AIFS). AIFS parameters are initialized by the driver which is told to use a 22 words long structures. The firmware instead use 16 words structures: this means that AIFS parameters initialized by the driver do not match the corresponding values read by the firmware. We saw that the firmware reads (2,0,0,0) instead of (2,2,3,7) which results in very short backoff procedures. Has anyone noticed similar behavior? For the sake of clarity, I'm referring to latest (30 minutes ago) version of wireless-git and broadcom-wl-4.150.10.5 driver version. I verified that all ucode5.s, ucode9.s, ucode11.s, ucode13.s and ucode14.s firmwares use 16 words structures, and the driver instead still uses 22 words long structures. Probably the attached patch sorts out the problem. I also noticed that the specs say that these structures are 16 words: could not someone read 16 as 0x16 that finally became 0x16 = 22? Cheers, FG --- b43.h.old 2008-09-10 21:12:59.000000000 +0200 +++ b43.h 2008-09-10 21:13:09.000000000 +0200 @@ -569,7 +569,7 @@ #define B43_QOS_VOICE B43_QOS_PARAMS(3) /* QOS parameter hardware data structure offsets. */ -#define B43_NR_QOSPARAMS 22 +#define B43_NR_QOSPARAMS 16 enum { B43_QOSPARAM_TXOP = 0, B43_QOSPARAM_CWMIN, _______________________________________________ Bcm43xx-dev mailing list Bcm43xx-dev@lists.berlios.de https://lists.berlios.de/mailman/listinfo/bcm43xx-dev