提交 79b122dc 编写于 作者: E Eliad Peller 提交者: Luciano Coelho

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: NEliad Peller <eliad@wizery.com>
Signed-off-by: NLuciano Coelho <coelho@ti.com>
上级 a4e02f33
...@@ -86,7 +86,7 @@ ...@@ -86,7 +86,7 @@
* Bits 3-5 - process_id tag (AP mode FW) * Bits 3-5 - process_id tag (AP mode FW)
* Bits 6-7 - reserved * 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_SUCCESS 0x00
#define WL1271_RX_DESC_DECRYPT_FAIL 0x01 #define WL1271_RX_DESC_DECRYPT_FAIL 0x01
...@@ -121,10 +121,7 @@ struct wl1271_rx_descriptor { ...@@ -121,10 +121,7 @@ struct wl1271_rx_descriptor {
u8 snr; u8 snr;
__le32 timestamp; __le32 timestamp;
u8 packet_class; u8 packet_class;
union { u8 hlid;
u8 process_id; /* STA FW */
u8 hlid; /* AP FW */
} __packed;
u8 pad_len; u8 pad_len;
u8 reserved; u8 reserved;
} __packed; } __packed;
......
...@@ -276,9 +276,9 @@ static void wl1271_tx_fill_hdr(struct wl1271 *wl, struct sk_buff *skb, ...@@ -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; wl->session_counter << TX_HW_ATTR_OFST_SESSION_COUNTER;
} }
if (wl->bss_type != BSS_TYPE_AP_BSS) { desc->hlid = hlid;
desc->aid = hlid;
if (wl->bss_type != BSS_TYPE_AP_BSS) {
/* if the packets are destined for AP (have a STA entry) /* if the packets are destined for AP (have a STA entry)
send them with AP rate policies, otherwise use default send them with AP rate policies, otherwise use default
basic rates */ basic rates */
...@@ -287,7 +287,6 @@ static void wl1271_tx_fill_hdr(struct wl1271 *wl, struct sk_buff *skb, ...@@ -287,7 +287,6 @@ static void wl1271_tx_fill_hdr(struct wl1271 *wl, struct sk_buff *skb,
else else
rate_idx = ACX_TX_BASIC_RATE; rate_idx = ACX_TX_BASIC_RATE;
} else { } else {
desc->hlid = hlid;
switch (hlid) { switch (hlid) {
case WL1271_AP_GLOBAL_HLID: case WL1271_AP_GLOBAL_HLID:
rate_idx = ACX_TX_AP_MODE_MGMT_RATE; 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, ...@@ -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) if (wl->bss_type == BSS_TYPE_AP_BSS)
hlid = wl1271_tx_get_hlid(skb); hlid = wl1271_tx_get_hlid(skb);
else 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); ret = wl1271_tx_allocate(wl, skb, extra, buf_offset, hlid);
if (ret < 0) if (ret < 0)
......
...@@ -29,9 +29,6 @@ ...@@ -29,9 +29,6 @@
#define TX_HW_MGMT_PKT_LIFETIME_TU 2000 #define TX_HW_MGMT_PKT_LIFETIME_TU 2000
#define TX_HW_AP_MODE_PKT_LIFETIME_TU 8000 #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_SAVE_RETRIES BIT(0)
#define TX_HW_ATTR_HEADER_PAD BIT(1) #define TX_HW_ATTR_HEADER_PAD BIT(1)
...@@ -116,12 +113,8 @@ struct wl1271_tx_hw_descr { ...@@ -116,12 +113,8 @@ struct wl1271_tx_hw_descr {
u8 id; u8 id;
/* The packet TID value (as User-Priority) */ /* The packet TID value (as User-Priority) */
u8 tid; u8 tid;
union { /* host link ID (HLID) */
/* STA - Identifier of the remote STA in IBSS, 1 in infra-BSS */ u8 hlid;
u8 aid;
/* AP - host link ID (HLID) */
u8 hlid;
} __packed;
u8 reserved; u8 reserved;
} __packed; } __packed;
...@@ -133,7 +126,8 @@ enum wl1271_tx_hw_res_status { ...@@ -133,7 +126,8 @@ enum wl1271_tx_hw_res_status {
TX_TIMEOUT = 4, TX_TIMEOUT = 4,
TX_KEY_NOT_FOUND = 5, TX_KEY_NOT_FOUND = 5,
TX_PEER_NOT_FOUND = 6, TX_PEER_NOT_FOUND = 6,
TX_SESSION_MISMATCH = 7 TX_SESSION_MISMATCH = 7,
TX_LINK_NOT_VALID = 8,
}; };
struct wl1271_tx_hw_res_descr { struct wl1271_tx_hw_res_descr {
......
...@@ -159,7 +159,7 @@ extern u32 wl12xx_debug_level; ...@@ -159,7 +159,7 @@ extern u32 wl12xx_debug_level;
#define WL1271_AP_BSS_INDEX 0 #define WL1271_AP_BSS_INDEX 0
#define WL1271_AP_DEF_BEACON_EXP 20 #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) #define WL1271_AGGR_BUFFER_SIZE (4 * PAGE_SIZE)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册