Commit 9c809f88 authored by Arik Nemtsov's avatar Arik Nemtsov Committed by Luciano Coelho

wl18xx: implement hw op for getting rx buffer data alignment

Implement the HW op for getting alignment state in wl18xx. The FW aligns
the Rx Ethernet payload data.
Signed-off-by: default avatarArik Nemtsov <arik@wizery.com>
Signed-off-by: default avatarLuciano Coelho <coelho@ti.com>
parent 7cfefd1f
...@@ -27,6 +27,8 @@ ...@@ -27,6 +27,8 @@
#include "../wlcore/io.h" #include "../wlcore/io.h"
#include "../wlcore/acx.h" #include "../wlcore/acx.h"
#include "../wlcore/tx.h" #include "../wlcore/tx.h"
#include "../wlcore/rx.h"
#include "../wlcore/io.h"
#include "../wlcore/boot.h" #include "../wlcore/boot.h"
#include "reg.h" #include "reg.h"
...@@ -447,6 +449,16 @@ wl18xx_set_tx_desc_data_len(struct wl1271 *wl, struct wl1271_tx_hw_descr *desc, ...@@ -447,6 +449,16 @@ wl18xx_set_tx_desc_data_len(struct wl1271 *wl, struct wl1271_tx_hw_descr *desc,
desc->wl18xx_mem.total_mem_blocks); desc->wl18xx_mem.total_mem_blocks);
} }
static enum wl_rx_buf_align
wl18xx_get_rx_buf_align(struct wl1271 *wl, u32 rx_desc)
{
if (rx_desc & RX_BUF_PADDED_PAYLOAD)
return WLCORE_RX_BUF_PADDED;
return WLCORE_RX_BUF_ALIGNED;
}
static struct wlcore_ops wl18xx_ops = { static struct wlcore_ops wl18xx_ops = {
.identify_chip = wl18xx_identify_chip, .identify_chip = wl18xx_identify_chip,
.boot = wl18xx_boot, .boot = wl18xx_boot,
...@@ -455,6 +467,7 @@ static struct wlcore_ops wl18xx_ops = { ...@@ -455,6 +467,7 @@ static struct wlcore_ops wl18xx_ops = {
.calc_tx_blocks = wl18xx_calc_tx_blocks, .calc_tx_blocks = wl18xx_calc_tx_blocks,
.set_tx_desc_blocks = wl18xx_set_tx_desc_blocks, .set_tx_desc_blocks = wl18xx_set_tx_desc_blocks,
.set_tx_desc_data_len = wl18xx_set_tx_desc_data_len, .set_tx_desc_data_len = wl18xx_set_tx_desc_data_len,
.get_rx_buf_align = wl18xx_get_rx_buf_align,
}; };
int __devinit wl18xx_probe(struct platform_device *pdev) int __devinit wl18xx_probe(struct platform_device *pdev)
......
...@@ -102,6 +102,9 @@ ...@@ -102,6 +102,9 @@
/* If set, the start of IP payload is not 4 bytes aligned */ /* If set, the start of IP payload is not 4 bytes aligned */
#define RX_BUF_UNALIGNED_PAYLOAD BIT(20) #define RX_BUF_UNALIGNED_PAYLOAD BIT(20)
/* If set, the buffer was padded by the FW to be 4 bytes aligned */
#define RX_BUF_PADDED_PAYLOAD BIT(30)
/* Describes the alignment state of a Rx buffer */ /* Describes the alignment state of a Rx buffer */
enum wl_rx_buf_align { enum wl_rx_buf_align {
WLCORE_RX_BUF_ALIGNED, WLCORE_RX_BUF_ALIGNED,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment