aboutsummaryrefslogtreecommitdiffstats
path: root/package/b43/src/pio.c
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2007-11-11 11:44:59 +0000
committerFelix Fietkau <nbd@openwrt.org>2007-11-11 11:44:59 +0000
commitd5345b5f7a4a8f9ec4c1b4b9801a19b4ffd5d547 (patch)
tree082bbcfc88019a856d9da9d8a7022f3ce3b8fc26 /package/b43/src/pio.c
parent62ccdcedae255174a46ef74d2e0a887f16ddb30f (diff)
downloadmaster-187ad058-d5345b5f7a4a8f9ec4c1b4b9801a19b4ffd5d547.tar.gz
master-187ad058-d5345b5f7a4a8f9ec4c1b4b9801a19b4ffd5d547.tar.bz2
master-187ad058-d5345b5f7a4a8f9ec4c1b4b9801a19b4ffd5d547.zip
add b43 fixes from #2677
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@9535 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/b43/src/pio.c')
-rw-r--r--package/b43/src/pio.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/package/b43/src/pio.c b/package/b43/src/pio.c
index 4ac91fdd35..67752a28eb 100644
--- a/package/b43/src/pio.c
+++ b/package/b43/src/pio.c
@@ -60,7 +60,7 @@ static u16 tx_get_next_word(const u8 * txhdr,
source = packet;
i -= txhdr_size;
}
- ret = le16_to_cpu(*((u16 *) (source + i)));
+ ret = le16_to_cpu(*((__le16 *)(source + i)));
*pos += 2;
return ret;
@@ -104,7 +104,7 @@ static u16 generate_cookie(struct b43_pioqueue *queue,
struct b43_pio_txpacket *packet)
{
u16 cookie = 0x0000;
- int packetindex;
+ u16 packetindex;
/* We use the upper 4 bits for the PIO
* controller ID and the lower 12 bits
@@ -125,7 +125,7 @@ static u16 generate_cookie(struct b43_pioqueue *queue,
default:
B43_WARN_ON(1);
}
- packetindex = pio_txpacket_getindex(packet);
+ packetindex = packet->index;
B43_WARN_ON(packetindex & ~0x0FFF);
cookie |= (u16) packetindex;
@@ -286,6 +286,7 @@ static void setup_txqueues(struct b43_pioqueue *queue)
packet->queue = queue;
INIT_LIST_HEAD(&packet->list);
+ packet->index = i;
list_add(&packet->list, &queue->txfree);
}
@@ -518,9 +519,10 @@ static void pio_rx_error(struct b43_pioqueue *queue,
void b43_pio_rx(struct b43_pioqueue *queue)
{
- u16 preamble[21] = { 0 };
+ __le16 preamble[21] = { 0 };
struct b43_rxhdr_fw4 *rxhdr;
- u16 tmp, len, macstat;
+ u16 tmp, len;
+ u32 macstat;
int i, preamble_readwords;
struct sk_buff *skb;
@@ -537,7 +539,7 @@ void b43_pio_rx(struct b43_pioqueue *queue)
}
b43dbg(queue->dev->wl, "PIO RX timed out\n");
return;
- data_ready:
+data_ready:
len = b43_pio_read(queue, B43_PIO_RXDATA);
if (unlikely(len > 0x700)) {
@@ -558,7 +560,7 @@ void b43_pio_rx(struct b43_pioqueue *queue)
preamble[i + 1] = cpu_to_le16(tmp);
}
rxhdr = (struct b43_rxhdr_fw4 *)preamble;
- macstat = le16_to_cpu(rxhdr->mac_status);
+ macstat = le32_to_cpu(rxhdr->mac_status);
if (macstat & B43_RX_MAC_FCSERR) {
pio_rx_error(queue,
(queue->mmio_base == B43_MMIO_PIO1_BASE),
@@ -583,7 +585,7 @@ void b43_pio_rx(struct b43_pioqueue *queue)
skb_put(skb, len);
for (i = 0; i < len - 1; i += 2) {
tmp = b43_pio_read(queue, B43_PIO_RXDATA);
- *((u16 *) (skb->data + i)) = cpu_to_le16(tmp);
+ *((__le16 *)(skb->data + i)) = cpu_to_le16(tmp);
}
if (len % 2) {
tmp = b43_pio_read(queue, B43_PIO_RXDATA);