qcacld-3.0: Add frag_header to support pre-wdi2.0 platform
wdi2.0 feature adds extra 2 bytes to frag_header and thus hdr_len to IPA HW also adds 2 bytes. This change breaks pre-wdi2.0 platform with WiFi FW discarding all TX traffic since packet payload is with an extra 2-byte offset. Fix is to add frag_header structure with pre-wdi2.0 pattern. Change-Id: I467a05bab4111a305ae23250c61cecc050821611 CRs-Fixed: 2047714
This commit is contained in:
parent
00e328c7e9
commit
80055eb33c
@ -179,11 +179,20 @@ struct wlan_ipa_tx_hdr {
|
|||||||
* @reserved1: Reserved not used
|
* @reserved1: Reserved not used
|
||||||
* @reserved2: Reserved not used
|
* @reserved2: Reserved not used
|
||||||
*/
|
*/
|
||||||
|
#if defined (QCA_WIFI_3_0) || defined (CONFIG_LITHIUM)
|
||||||
struct frag_header {
|
struct frag_header {
|
||||||
uint16_t length;
|
uint16_t length;
|
||||||
uint32_t reserved1;
|
uint32_t reserved1;
|
||||||
uint32_t reserved2;
|
uint32_t reserved2;
|
||||||
} qdf_packed;
|
} qdf_packed;
|
||||||
|
#else
|
||||||
|
struct frag_header {
|
||||||
|
uint32_t
|
||||||
|
length:16,
|
||||||
|
reserved16:16;
|
||||||
|
uint32_t reserved2;
|
||||||
|
} qdf_packed;
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct ipa_header - ipa header type registered to IPA hardware
|
* struct ipa_header - ipa header type registered to IPA hardware
|
||||||
|
@ -77,6 +77,7 @@
|
|||||||
#include <ol_txrx_ipa.h>
|
#include <ol_txrx_ipa.h>
|
||||||
|
|
||||||
/* For Tx pipes, use Ethernet-II Header format */
|
/* For Tx pipes, use Ethernet-II Header format */
|
||||||
|
#ifdef QCA_WIFI_3_0
|
||||||
struct ol_txrx_ipa_uc_tx_hdr ipa_uc_tx_hdr = {
|
struct ol_txrx_ipa_uc_tx_hdr ipa_uc_tx_hdr = {
|
||||||
{
|
{
|
||||||
0x0000,
|
0x0000,
|
||||||
@ -92,6 +93,22 @@ struct ol_txrx_ipa_uc_tx_hdr ipa_uc_tx_hdr = {
|
|||||||
0x0008
|
0x0008
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
#else
|
||||||
|
struct ol_txrx_ipa_uc_tx_hdr ipa_uc_tx_hdr = {
|
||||||
|
{
|
||||||
|
0x00000000,
|
||||||
|
0x00000000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
0x00000000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{0x00, 0x03, 0x7f, 0xaa, 0xbb, 0xcc},
|
||||||
|
{0x00, 0x03, 0x7f, 0xdd, 0xee, 0xff},
|
||||||
|
0x0008
|
||||||
|
}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ol_txrx_ipa_uc_get_resource() - Client request resource information
|
* ol_txrx_ipa_uc_get_resource() - Client request resource information
|
||||||
|
@ -29,11 +29,20 @@
|
|||||||
* @reserved2: Reserved not used
|
* @reserved2: Reserved not used
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
#ifdef QCA_WIFI_3_0
|
||||||
struct frag_header {
|
struct frag_header {
|
||||||
uint16_t length;
|
uint16_t length;
|
||||||
uint32_t reserved1;
|
uint32_t reserved1;
|
||||||
uint32_t reserved2;
|
uint32_t reserved2;
|
||||||
} __packed;
|
} __packed;
|
||||||
|
#else
|
||||||
|
struct frag_header {
|
||||||
|
uint32_t
|
||||||
|
length:16,
|
||||||
|
reserved16:16;
|
||||||
|
uint32_t reserved2;
|
||||||
|
} __packed;
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct ipa_header - ipa header type registered to IPA hardware
|
* struct ipa_header - ipa header type registered to IPA hardware
|
||||||
|
Loading…
Reference in New Issue
Block a user