wl1271: Clean up firmware block allocation calculation
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>
This commit is contained in:
parent
ac5e1e39c1
commit
5c9417f165
@ -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);
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user