wlcore: avoid using NET_IP_ALIGN for RX alignment
authorEyal Shapira <eyal@wizery.com>
Mon, 11 Jun 2012 14:59:55 +0000 (17:59 +0300)
committerLuciano Coelho <coelho@ti.com>
Wed, 13 Jun 2012 18:44:10 +0000 (21:44 +0300)
NET_IP_ALIGN can be overriden on different architectures
and therefore cannot be used in the RX path to account
for the 2 bytes added for alignment (either by the FW
in the case of 18xx or by the host for 12xx).
Instead use an internal define.

Signed-off-by: Eyal Shapira <eyal@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
drivers/net/wireless/ti/wlcore/rx.c
drivers/net/wireless/ti/wlcore/rx.h

index 78200dc..a1db4e0 100644 (file)
@@ -127,7 +127,7 @@ static int wl1271_rx_handle_data(struct wl1271 *wl, u8 *data, u32 length,
        }
 
        if (rx_align == WLCORE_RX_BUF_UNALIGNED)
-               reserved = NET_IP_ALIGN;
+               reserved = RX_BUF_ALIGN;
 
        /* the data read starts with the descriptor */
        desc = (struct wl1271_rx_descriptor *) data;
@@ -175,7 +175,7 @@ static int wl1271_rx_handle_data(struct wl1271 *wl, u8 *data, u32 length,
         */
        memcpy(buf, data + sizeof(*desc), pkt_data_len);
        if (rx_align == WLCORE_RX_BUF_PADDED)
-               skb_pull(skb, NET_IP_ALIGN);
+               skb_pull(skb, RX_BUF_ALIGN);
 
        *hlid = desc->hlid;
 
index 9be7801..4324a42 100644 (file)
 /* If set, the buffer was padded by the FW to be 4 bytes aligned */
 #define RX_BUF_PADDED_PAYLOAD        BIT(30)
 
+/*
+ * Account for the padding inserted by the FW in case of RX_ALIGNMENT
+ * or for fixing alignment in case the packet wasn't aligned.
+ */
+#define RX_BUF_ALIGN                 2
+
 /* Describes the alignment state of a Rx buffer */
 enum wl_rx_buf_align {
        WLCORE_RX_BUF_ALIGNED,