mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-29 15:43:59 +08:00
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: Arik Nemtsov <arik@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
This commit is contained in:
parent
7cfefd1f2a
commit
9c809f8883
@ -27,6 +27,8 @@
|
||||
#include "../wlcore/io.h"
|
||||
#include "../wlcore/acx.h"
|
||||
#include "../wlcore/tx.h"
|
||||
#include "../wlcore/rx.h"
|
||||
#include "../wlcore/io.h"
|
||||
#include "../wlcore/boot.h"
|
||||
|
||||
#include "reg.h"
|
||||
@ -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);
|
||||
}
|
||||
|
||||
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 = {
|
||||
.identify_chip = wl18xx_identify_chip,
|
||||
.boot = wl18xx_boot,
|
||||
@ -455,6 +467,7 @@ static struct wlcore_ops wl18xx_ops = {
|
||||
.calc_tx_blocks = wl18xx_calc_tx_blocks,
|
||||
.set_tx_desc_blocks = wl18xx_set_tx_desc_blocks,
|
||||
.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)
|
||||
|
@ -102,6 +102,9 @@
|
||||
/* If set, the start of IP payload is not 4 bytes aligned */
|
||||
#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 */
|
||||
enum wl_rx_buf_align {
|
||||
WLCORE_RX_BUF_ALIGNED,
|
||||
|
Loading…
Reference in New Issue
Block a user