wl1271: Clean up firmware block allocation calculation
authorJuuso Oikarinen <juuso.oikarinen@nokia.com>
Mon, 22 Feb 2010 06:38:39 +0000 (08:38 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 9 Mar 2010 20:03:04 +0000 (15:03 -0500)
This patch simplifies the required block count calculation. Though it
introduces a division operator, it greatly simplifies the formula.

Signed-off-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Reviewed-by: Teemu Paasikivi <ext-teemu.3.paasikivi@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/wl12xx/wl1271_tx.c
drivers/net/wireless/wl12xx/wl1271_tx.h

index a32d3014781d24bba9ff9bbfb93d4746e13f7e82..d3ed63e92cf4fa5fa7ce23d938eff996de64f67c 100644 (file)
@@ -46,7 +46,7 @@ static int wl1271_tx_allocate(struct wl1271 *wl, struct sk_buff *skb, u32 extra)
 {
        struct wl1271_tx_hw_descr *desc;
        u32 total_len = skb->len + sizeof(struct wl1271_tx_hw_descr) + extra;
-       u32 total_blocks, excluded;
+       u32 total_blocks;
        int id, ret = -EBUSY;
 
        /* allocate free identifier for the packet */
@@ -56,12 +56,8 @@ static int wl1271_tx_allocate(struct wl1271 *wl, struct sk_buff *skb, u32 extra)
 
        /* approximate the number of blocks required for this packet
           in the firmware */
-       /* FIXME: try to figure out what is done here and make it cleaner */
-       total_blocks = (total_len + 20) >> TX_HW_BLOCK_SHIFT_DIV;
-       excluded = (total_blocks << 2) + ((total_len + 20) & 0xff) + 34;
-       total_blocks += (excluded > 252) ? 2 : 1;
-       total_blocks += TX_HW_BLOCK_SPARE;
-
+       total_blocks = total_len + TX_HW_BLOCK_SIZE - 1;
+       total_blocks = total_blocks / TX_HW_BLOCK_SIZE + TX_HW_BLOCK_SPARE;
        if (total_blocks <= wl->tx_blocks_available) {
                desc = (struct wl1271_tx_hw_descr *)skb_push(
                        skb, total_len - skb->len);
index ca92bd811292af1fe5c9542910fdf61f3ee997d7..8b9f6b4f5652c6d861345d7056e50185e5d64f44 100644 (file)
@@ -26,7 +26,7 @@
 #define __WL1271_TX_H__
 
 #define TX_HW_BLOCK_SPARE                2
-#define TX_HW_BLOCK_SHIFT_DIV            8
+#define TX_HW_BLOCK_SIZE                 252
 
 #define TX_HW_MGMT_PKT_LIFETIME_TU       2000
 /* The chipset reference driver states, that the "aid" value 1