Bug 206199

Summary: [patch] dev/bwn suppressing "bwn0: unsupported rate 0" messages
Product: Base System Reporter: Mugenga Marius <mugius.0x101.freebsd>
Component: kernAssignee: freebsd-wireless (Nobody) <wireless>
Status: New ---    
Severity: Affects Some People Keywords: patch
Priority: ---    
Version: 10.2-RELEASE   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
The patch file none

Description Mugenga Marius 2016-01-13 13:00:32 UTC
Created attachment 165497 [details]
The patch file

Background:
-----------
https://forums.freebsd.org/threads/minor-nuisance-issue-bwn0-unsupported-rate-0.41355/

Original code:
--------------
https://svnweb.freebsd.org/base/release/10.2.0/sys/dev/bwn/if_bwn.c?view=markup#l9635

9635 	        else {
9636 	                rix = ieee80211_ratectl_rate(ni, NULL, 0);
9637 	                rate = ni->ni_txrate;
9638 	
9639 	                if (rix > 0)
9640 	                        rate_fb = ni->ni_rates.rs_rates[rix - 1] &
9641 	                            IEEE80211_RATE_VAL;
9642 	                else
9643 	                        rate_fb = rate;
9644 	        }

Explanation:
------------
The ni->ni_rates.rs_rates container is supposed to house the negotiated rates in increasing magnitude.
The rix variable contains the size of this container.
The original code is trying to get the last element in the container (supposed to be the highest rate).
After a few tests though, it turned out that this container has some filler elements of value "0" at its end. So, the last element in the container is not necessarily the highest rate.
Comment 1 Mugenga Marius 2016-02-02 09:11:51 UTC
A cleaner solution would be review D5165.