mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	wireless: set correct mandatory rate flags
According to IEEE Std 802.11-2016 (16.2.3.4 Long PHY SIGNAL field) all of the following rates are mandatory for a HR/DSSS PHY: 1 Mb/s, 2 Mb/s, 5.5 Mb/s and 11 Mb/s. Set IEEE80211_RATE_MANDATORY_B flag for all of these instead of just 1 Mb/s to correctly reflect this. Signed-off-by: Richard Schütz <rschuetz@uni-koblenz.de> [johannes: use switch statement] Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
		
							parent
							
								
									d405fd8cc8
								
							
						
					
					
						commit
						1bd773c077
					
				
					 1 changed files with 14 additions and 16 deletions
				
			
		| 
						 | 
					@ -157,32 +157,30 @@ static void set_mandatory_flags_band(struct ieee80211_supported_band *sband)
 | 
				
			||||||
	case NL80211_BAND_2GHZ:
 | 
						case NL80211_BAND_2GHZ:
 | 
				
			||||||
		want = 7;
 | 
							want = 7;
 | 
				
			||||||
		for (i = 0; i < sband->n_bitrates; i++) {
 | 
							for (i = 0; i < sband->n_bitrates; i++) {
 | 
				
			||||||
			if (sband->bitrates[i].bitrate == 10) {
 | 
								switch (sband->bitrates[i].bitrate) {
 | 
				
			||||||
 | 
								case 10:
 | 
				
			||||||
 | 
								case 20:
 | 
				
			||||||
 | 
								case 55:
 | 
				
			||||||
 | 
								case 110:
 | 
				
			||||||
				sband->bitrates[i].flags |=
 | 
									sband->bitrates[i].flags |=
 | 
				
			||||||
					IEEE80211_RATE_MANDATORY_B |
 | 
										IEEE80211_RATE_MANDATORY_B |
 | 
				
			||||||
					IEEE80211_RATE_MANDATORY_G;
 | 
										IEEE80211_RATE_MANDATORY_G;
 | 
				
			||||||
				want--;
 | 
									want--;
 | 
				
			||||||
			}
 | 
									break;
 | 
				
			||||||
 | 
								case 60:
 | 
				
			||||||
			if (sband->bitrates[i].bitrate == 20 ||
 | 
								case 120:
 | 
				
			||||||
			    sband->bitrates[i].bitrate == 55 ||
 | 
								case 240:
 | 
				
			||||||
			    sband->bitrates[i].bitrate == 110 ||
 | 
					 | 
				
			||||||
			    sband->bitrates[i].bitrate == 60 ||
 | 
					 | 
				
			||||||
			    sband->bitrates[i].bitrate == 120 ||
 | 
					 | 
				
			||||||
			    sband->bitrates[i].bitrate == 240) {
 | 
					 | 
				
			||||||
				sband->bitrates[i].flags |=
 | 
									sband->bitrates[i].flags |=
 | 
				
			||||||
					IEEE80211_RATE_MANDATORY_G;
 | 
										IEEE80211_RATE_MANDATORY_G;
 | 
				
			||||||
				want--;
 | 
									want--;
 | 
				
			||||||
			}
 | 
									/* fall through */
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
			if (sband->bitrates[i].bitrate != 10 &&
 | 
					 | 
				
			||||||
			    sband->bitrates[i].bitrate != 20 &&
 | 
					 | 
				
			||||||
			    sband->bitrates[i].bitrate != 55 &&
 | 
					 | 
				
			||||||
			    sband->bitrates[i].bitrate != 110)
 | 
					 | 
				
			||||||
				sband->bitrates[i].flags |=
 | 
									sband->bitrates[i].flags |=
 | 
				
			||||||
					IEEE80211_RATE_ERP_G;
 | 
										IEEE80211_RATE_ERP_G;
 | 
				
			||||||
 | 
									break;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		WARN_ON(want != 0 && want != 3 && want != 6);
 | 
							WARN_ON(want != 0 && want != 3);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case NL80211_BAND_60GHZ:
 | 
						case NL80211_BAND_60GHZ:
 | 
				
			||||||
		/* check for mandatory HT MCS 1..4 */
 | 
							/* check for mandatory HT MCS 1..4 */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue