summaryrefslogtreecommitdiffstats
path: root/package/mac80211/patches/848-brcmsmac-some-more-fixes-for-different-core-revs.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/mac80211/patches/848-brcmsmac-some-more-fixes-for-different-core-revs.patch')
-rw-r--r--package/mac80211/patches/848-brcmsmac-some-more-fixes-for-different-core-revs.patch73
1 files changed, 73 insertions, 0 deletions
diff --git a/package/mac80211/patches/848-brcmsmac-some-more-fixes-for-different-core-revs.patch b/package/mac80211/patches/848-brcmsmac-some-more-fixes-for-different-core-revs.patch
new file mode 100644
index 000000000..c5cf2fd67
--- /dev/null
+++ b/package/mac80211/patches/848-brcmsmac-some-more-fixes-for-different-core-revs.patch
@@ -0,0 +1,73 @@
+--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
++++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
+@@ -270,7 +270,7 @@ struct brcms_c_bit_desc {
+ */
+
+ /* Starting corerev for the fifo size table */
+-#define XMTFIFOTBL_STARTREV 20
++#define XMTFIFOTBL_STARTREV 10
+
+ struct d11init {
+ __le16 addr;
+@@ -334,6 +334,26 @@ const u8 wlc_prio2prec_map[] = {
+ };
+
+ static const u16 xmtfifo_sz[][NFIFO] = {
++ /* corerev 10: */
++ {0, 0, 0, 0, 0, 0},
++ /* corerev 11: */
++ {0, 0, 0, 0, 0, 0},
++ /* corerev 12: */
++ {0, 0, 0, 0, 0, 0},
++ /* corerev 13: */
++ {0, 0, 0, 0, 0, 0},
++ /* corerev 14: */
++ {0, 0, 0, 0, 0, 0},
++ /* corerev 15: */
++ {0, 0, 0, 0, 0, 0},
++ /* corerev 16: */
++ {0, 0, 0, 0, 0, 0},
++ /* corerev 17: 5120, 49152, 49152, 5376, 4352, 1280 */
++ {20, 192, 192, 21, 17, 5},
++ /* corerev 18: */
++ {0, 0, 0, 0, 0, 0},
++ /* corerev 19: */
++ {0, 0, 0, 0, 0, 0},
+ /* corerev 20: 5120, 49152, 49152, 5376, 4352, 1280 */
+ {20, 192, 192, 21, 17, 5},
+ /* corerev 21: 2304, 14848, 5632, 3584, 3584, 1280 */
+@@ -344,6 +364,18 @@ static const u16 xmtfifo_sz[][NFIFO] = {
+ {20, 192, 192, 21, 17, 5},
+ /* corerev 24: 2304, 14848, 5632, 3584, 3584, 1280 */
+ {9, 58, 22, 14, 14, 5},
++ /* corerev 25: */
++ {0, 0, 0, 0, 0, 0},
++ /* corerev 26: */
++ {0, 0, 0, 0, 0, 0},
++ /* corerev 27: */
++ {0, 0, 0, 0, 0, 0},
++ /* corerev 28: 5120, 49152, 49152, 5376, 4352, 1280 */
++ {20, 192, 192, 21, 17, 5},
++ /* corerev 29: */
++ {0, 0, 0, 0, 0, 0},
++ /* corerev 30: */
++ {0, 0, 0, 0, 0, 0},
+ };
+
+ #ifdef DEBUG
+@@ -4611,8 +4643,15 @@ static int brcms_b_attach(struct brcms_c
+ wlc_hw->machwcap_backup = wlc_hw->machwcap;
+
+ /* init tx fifo size */
++ WARN_ON((wlc_hw->corerev - XMTFIFOTBL_STARTREV) < 0 ||
++ (wlc_hw->corerev - XMTFIFOTBL_STARTREV) >
++ ARRAY_SIZE(xmtfifo_sz));
+ wlc_hw->xmtfifo_sz =
+ xmtfifo_sz[(wlc_hw->corerev - XMTFIFOTBL_STARTREV)];
++ pr_err("use fifi: %i, %i, %i, %i, %i, %i\n",
++ wlc_hw->xmtfifo_sz[0], wlc_hw->xmtfifo_sz[1],
++ wlc_hw->xmtfifo_sz[2], wlc_hw->xmtfifo_sz[3],
++ wlc_hw->xmtfifo_sz[4], wlc_hw->xmtfifo_sz[5]);
+
+ /* Get a phy for this band */
+ wlc_hw->band->pi =