Rafał Miłecki ─ Zajec

First b43 N-PHY benchmarks and improvements

From the first moment of enabling support for N-PHYs devices we were suffering from PHY errors and low TX performance. Fortunately some quick tests has shown that forcing rate to some of CCK values (1M, 2M, 5.5M, 11M) silences most of the PHY errors. On the other hard switching to any OFDM rate (anything except 1/2/5.5/11) stops transmission completely and produces PHY errors. So we knew that our two problems were related and we got some clue.

The good news is that Larry figured out that there is some special field in TX header that should be correctly filled for LP-PHY and N-PHY devices. The great news is that implementing support for filling this field made OFDM transmission possible :) So with the patch that was just submitted to linux-wireless, we can finally achieve some normal speeds with b43 :)

As part of testing my patch I made some benchmarks for clean b43, patched b43 and wl See the charts for results.

In case of 14e4:4329 I couldn't use DMA at all with b43, tests were performed in pio mode. You can see that with patch applied we can finally transmit on all rates, but performance is still poor, especially in comparison to wl. My plan is to fix DMA problems and then compare b43 with wl again.

This card was 14e4:4328 and you can see performance greatly improved after applying TX header patch. We can transmit on OFDM rates and we are close to wl's performance. It looks like patch decreased performance for CCK rates by 1-2%, we will have to live with that.

The worst case is about 14e4:432b, however I guess it applies to all devices with PHYs 3+. Even with patch applied we still can not transmit on OFDM rates. It will need more investigation :(

Tests were performed with WRT160NL router, iperf server was running on another machine connected by cable to it.