Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 79b122dc authored by Eliad Peller's avatar Eliad Peller Committed by Luciano Coelho
Browse files

wl12xx: update rx/tx



Update the rx/tx descriptors according to the new fw api
(fw >= 6/7.3.0.0.75)

Signed-off-by: default avatarEliad Peller <eliad@wizery.com>
Signed-off-by: default avatarLuciano Coelho <coelho@ti.com>
parent a4e02f33
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -86,7 +86,7 @@
 * Bits 3-5 - process_id tag (AP mode FW)
 * Bits 6-7 - reserved
 */
#define WL1271_RX_DESC_STATUS_MASK      0x07
#define WL1271_RX_DESC_STATUS_MASK      0x03

#define WL1271_RX_DESC_SUCCESS          0x00
#define WL1271_RX_DESC_DECRYPT_FAIL     0x01
@@ -121,10 +121,7 @@ struct wl1271_rx_descriptor {
	u8  snr;
	__le32 timestamp;
	u8  packet_class;
	union {
		u8  process_id; /* STA FW */
		u8  hlid; /* AP FW */
	} __packed;
	u8  hlid;
	u8  pad_len;
	u8  reserved;
} __packed;
+11 −4
Original line number Diff line number Diff line
@@ -276,9 +276,9 @@ static void wl1271_tx_fill_hdr(struct wl1271 *wl, struct sk_buff *skb,
			wl->session_counter << TX_HW_ATTR_OFST_SESSION_COUNTER;
	}

	if (wl->bss_type != BSS_TYPE_AP_BSS) {
		desc->aid = hlid;
	desc->hlid = hlid;

	if (wl->bss_type != BSS_TYPE_AP_BSS) {
		/* if the packets are destined for AP (have a STA entry)
		   send them with AP rate policies, otherwise use default
		   basic rates */
@@ -287,7 +287,6 @@ static void wl1271_tx_fill_hdr(struct wl1271 *wl, struct sk_buff *skb,
		else
			rate_idx = ACX_TX_BASIC_RATE;
	} else {
		desc->hlid = hlid;
		switch (hlid) {
		case WL1271_AP_GLOBAL_HLID:
			rate_idx = ACX_TX_AP_MODE_MGMT_RATE;
@@ -375,7 +374,15 @@ static int wl1271_prepare_tx_frame(struct wl1271 *wl, struct sk_buff *skb,
	if (wl->bss_type == BSS_TYPE_AP_BSS)
		hlid = wl1271_tx_get_hlid(skb);
	else
		hlid = TX_HW_DEFAULT_AID;
		if (test_bit(WL1271_FLAG_STA_ASSOCIATED, &wl->flags))
			hlid = wl->sta_hlid;
		else
			hlid = wl->dev_hlid;

	if (hlid == WL12XX_INVALID_LINK_ID) {
		wl1271_error("invalid hlid. dropping skb 0x%p", skb);
		return -EINVAL;
	}

	ret = wl1271_tx_allocate(wl, skb, extra, buf_offset, hlid);
	if (ret < 0)
+4 −10
Original line number Diff line number Diff line
@@ -29,9 +29,6 @@

#define TX_HW_MGMT_PKT_LIFETIME_TU       2000
#define TX_HW_AP_MODE_PKT_LIFETIME_TU    8000
/* The chipset reference driver states, that the "aid" value 1
 * is for infra-BSS, but is still always used */
#define TX_HW_DEFAULT_AID                1

#define TX_HW_ATTR_SAVE_RETRIES          BIT(0)
#define TX_HW_ATTR_HEADER_PAD            BIT(1)
@@ -116,12 +113,8 @@ struct wl1271_tx_hw_descr {
	u8 id;
	/* The packet TID value (as User-Priority) */
	u8 tid;
	union {
		/* STA - Identifier of the remote STA in IBSS, 1 in infra-BSS */
		u8 aid;
		/* AP - host link ID (HLID) */
	/* host link ID (HLID) */
	u8 hlid;
	} __packed;
	u8 reserved;
} __packed;

@@ -133,7 +126,8 @@ enum wl1271_tx_hw_res_status {
	TX_TIMEOUT          = 4,
	TX_KEY_NOT_FOUND    = 5,
	TX_PEER_NOT_FOUND   = 6,
	TX_SESSION_MISMATCH = 7
	TX_SESSION_MISMATCH = 7,
	TX_LINK_NOT_VALID   = 8,
};

struct wl1271_tx_hw_res_descr {
+1 −1
Original line number Diff line number Diff line
@@ -159,7 +159,7 @@ extern u32 wl12xx_debug_level;
#define WL1271_AP_BSS_INDEX        0
#define WL1271_AP_DEF_BEACON_EXP   20

#define ACX_TX_DESCRIPTORS         32
#define ACX_TX_DESCRIPTORS         16

#define WL1271_AGGR_BUFFER_SIZE (4 * PAGE_SIZE)