summaryrefslogtreecommitdiff
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
commit1eb35dd1c8098556de0c174f780cff15eb212d4f (patch)
tree5041c300eadaa3d1ea18f435f7c98ee17ddaee8b /package/b43/src/pio.c
parent1bca0cc51704b5ef57c5e3a9d7a1b80633486d16 (diff)
downloadmtk-20170518-1eb35dd1c8098556de0c174f780cff15eb212d4f.zip
mtk-20170518-1eb35dd1c8098556de0c174f780cff15eb212d4f.tar.gz
mtk-20170518-1eb35dd1c8098556de0c174f780cff15eb212d4f.tar.bz2
add b43 fixes from #2677
SVN-Revision: 9535
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 4ac91fd..67752a2 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);