Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

wl18xx: disable MCS_13 for wl18xx PG 1.0

There are some problems with MCS_13 in PG 1.0 hardware. So we disable
it when PG 1.0 is detected.

Signed-off-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>

+18
+18
drivers/net/wireless/ti/wl18xx/main.c
··· 588 588 WLCORE_QUIRK_FWLOG_NOT_IMPLEMENTED | 589 589 WLCORE_QUIRK_RX_BLOCKSIZE_ALIGN; 590 590 591 + /* PG 1.0 has some problems with MCS_13, so disable it */ 592 + wl->ht_cap.mcs.rx_mask[1] &= ~BIT(5); 593 + 591 594 /* TODO: need to blocksize alignment for RX/TX separately? */ 592 595 break; 593 596 default: ··· 917 914 skb->ip_summed = CHECKSUM_UNNECESSARY; 918 915 } 919 916 917 + /* 918 + * TODO: instead of having these two functions to get the rate mask, 919 + * we should modify the wlvif->rate_set instead 920 + */ 920 921 static u32 wl18xx_sta_get_ap_rate_mask(struct wl1271 *wl, 921 922 struct wl12xx_vif *wlvif) 922 923 { ··· 947 940 return CONF_TX_RATE_USE_WIDE_CHAN; 948 941 } else { 949 942 wl1271_debug(DEBUG_ACX, "using MIMO rate mask"); 943 + 944 + /* 945 + * PG 1.0 has some problems with MCS_13, so disable it 946 + * 947 + * TODO: instead of hacking this in here, we should 948 + * make it more general and change a bit in the 949 + * wlvif->rate_set instead. 950 + */ 951 + if (wl->chip.id == CHIP_ID_185x_PG10) 952 + return CONF_TX_MIMO_RATES & ~CONF_HW_BIT_RATE_MCS_13; 953 + 950 954 return CONF_TX_MIMO_RATES; 951 955 } 952 956 }