• Shanyu Zhao's avatar
    mac80211: fix rts threshold check · a2c40249
    Shanyu Zhao authored
    Currently whenever rts thresold is set, every packet will use RTS
    protection no matter its size exceeds the threshold or not. This is
    due to a bug in the rts threshold check.
    	if (len > tx->local->hw.wiphy->rts_threshold) {
    		txrc.rts = rts = true;
    	}
    Basically it is comparing an int (len) and a u32 (rts_threshold),
    and the variable len is assigned as:
    	len = min_t(int, tx->skb->len + FCS_LEN,
    			 tx->local->hw.wiphy->frag_threshold);
    However, when frag_threshold is "-1", len is always "-1", which is
    0xffffffff therefore rts is always set to true.
    
    CC: stable@kernel.org
    Signed-off-by: default avatarShanyu Zhao <shanyu.zhao@intel.com>
    Reviewed-by: default avatarJohannes Berg <johannes@sipsolutions.net>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    a2c40249
tx.c 68.3 KB