Merge branch 'master' of git://github.com/chunkeey/carl9170fw
authorChristian Lamparter <chunkeey@googlemail.com>
Fri, 6 Jul 2012 23:39:08 +0000 (01:39 +0200)
committerChristian Lamparter <chunkeey@googlemail.com>
Fri, 6 Jul 2012 23:39:08 +0000 (01:39 +0200)
carlfw/src/wlan.c
toolchain/Makefile

index 50c48f9d27d5f440bb5e6a9d5c14eb1719cb7448..e581fa8ddea34db0095a4d9d2516cf5eba89056e 100644 (file)
@@ -345,6 +345,16 @@ static bool wlan_tx_status(struct dma_queue *queue,
        /* update hangcheck */
        fw.wlan.last_super_num[qidx] = 0;
 
+       /*
+        * Note:
+        * There could be a corner case when the TXFAIL is set
+        * even though the frame was properly ACKed by the peer:
+        *   a BlockAckReq with the immediate policy will cause
+        *   the receiving peer to produce a BlockACK unfortunately
+        *   the MAC in this chip seems to be expecting a legacy
+        *   ACK and marks the BAR as failed!
+        */
+
        if (!!(desc->ctrl & AR9170_CTRL_FAIL)) {
                txfail = !!(desc->ctrl & AR9170_CTRL_TXFAIL);
 
@@ -554,7 +564,7 @@ static void wlan_send_buffered_ba(void)
        baf->f.hdr.phy.mcs = AR9170_TXRX_PHY_RATE_OFDM_6M;
 
        /* format outgoing BA */
-       ba->frame_control = cpu_to_le16(IEEE80211_FTYPE_CTL | IEEE80211_STYPE_NULLFUNC);
+       ba->frame_control = cpu_to_le16(IEEE80211_FTYPE_CTL | IEEE80211_STYPE_BACK);
        ba->duration = cpu_to_le16(0);
        memcpy(ba->ta, ctx->ta, 6);
        memcpy(ba->ra, ctx->ra, 6);
@@ -566,11 +576,7 @@ static void wlan_send_buffered_ba(void)
         */
        memset(ba->bitmap, 0x0, sizeof(ba->bitmap));
 
-       /*
-        * NB:
-        * not entirely sure if this is 100% correct?!
-        */
-       ba->control = ctx->control | cpu_to_le16(1);
+       ba->control = ctx->control;
        ba->start_seq_num = ctx->start_seq_num;
        wlan_tx_fw(&baf->s, NULL);
 }
@@ -625,13 +631,7 @@ static void handle_bar(struct dma_desc *desc __unused, struct ieee80211_hdr *hdr
        /* Brilliant! The BAR provides all necessary MACs! */
        memcpy(ctx->ra, bar->ta, 6);
        memcpy(ctx->ta, bar->ra, 6);
-
-       /*
-        * NB:
-        * not entirely sure if this is 100% correct to force the
-        * imm ack bit or not...
-        */
-       ctx->control = bar->control | cpu_to_le16(1);
+       ctx->control = bar->control;
        ctx->start_seq_num = bar->start_seq_num;
 }
 
index 75cebb9ac1fdc3cc9b39f3f52fddc9761ab910db..23843a7eefaeaeb61bdb4006dc9bcafa37c3b04c 100644 (file)
@@ -6,9 +6,9 @@ NEWLIB_VER=1.20.0
 NEWLIB_URL=ftp://sources.redhat.com/pub/newlib/newlib-$(NEWLIB_VER).tar.gz
 NEWLIB_TAR=newlib-$(NEWLIB_VER).tar.gz
 
-GCC_VER=4.6.3
-GCC_URL=http://mirrors.kernel.org/gnu/gcc/gcc-$(GCC_VER)/gcc-core-$(GCC_VER).tar.bz2
-GCC_TAR=gcc-core-$(GCC_VER).tar.bz2
+GCC_VER=4.7.1
+GCC_URL=http://mirrors.kernel.org/gnu/gcc/gcc-$(GCC_VER)/gcc-$(GCC_VER).tar.bz2
+GCC_TAR=gcc-$(GCC_VER).tar.bz2
 
 BASEDIR=$(shell pwd)