mirror of https://gitee.com/openkylin/linux.git
iwlwifi: introduce new rx structures used by 22560 RFH
22560 devices RFH uses different structures, which act similar to the legacy rxq management lists - free and used list. The iwl_rx_transfer_desc struct is part of the free list, and consists of pointers to the empty rb's the driver wants to pass to the fw. The iwl_rx_completion_desc struct is part of the used list, and consists of pointers to the buffer the fw filled up with new rx, both commands and data, for the host. Signed-off-by: Golan Ben Ami <golan.ben.ami@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
This commit is contained in:
parent
a0ec0169b7
commit
cf495496b6
|
@ -99,6 +99,106 @@ struct isr_statistics {
|
|||
u32 unhandled;
|
||||
};
|
||||
|
||||
#define IWL_CD_STTS_OPTIMIZED_POS 0
|
||||
#define IWL_CD_STTS_OPTIMIZED_MSK 0x01
|
||||
#define IWL_CD_STTS_TRANSFER_STATUS_POS 1
|
||||
#define IWL_CD_STTS_TRANSFER_STATUS_MSK 0x0E
|
||||
#define IWL_CD_STTS_WIFI_STATUS_POS 4
|
||||
#define IWL_CD_STTS_WIFI_STATUS_MSK 0xF0
|
||||
|
||||
/**
|
||||
* enum iwl_completion_desc_transfer_status - transfer status (bits 1-3)
|
||||
* @IWL_CD_STTS_END_TRANSFER: successful transfer complete.
|
||||
* In sniffer mode, when split is used, set in last CD completion. (RX)
|
||||
* @IWL_CD_STTS_OVERFLOW: In sniffer mode, when using split - used for
|
||||
* all CD completion. (RX)
|
||||
* @IWL_CD_STTS_ABORTED: CR abort / close flow. (RX)
|
||||
*/
|
||||
enum iwl_completion_desc_transfer_status {
|
||||
IWL_CD_STTS_UNUSED,
|
||||
IWL_CD_STTS_UNUSED_2,
|
||||
IWL_CD_STTS_END_TRANSFER,
|
||||
IWL_CD_STTS_OVERFLOW,
|
||||
IWL_CD_STTS_ABORTED,
|
||||
IWL_CD_STTS_ERROR,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum iwl_completion_desc_wifi_status - wifi status (bits 4-7)
|
||||
* @IWL_CD_STTS_VALID: the packet is valid (RX)
|
||||
* @IWL_CD_STTS_FCS_ERR: frame check sequence error (RX)
|
||||
* @IWL_CD_STTS_SEC_KEY_ERR: error handling the security key of rx (RX)
|
||||
* @IWL_CD_STTS_DECRYPTION_ERR: error decrypting the frame (RX)
|
||||
* @IWL_CD_STTS_DUP: duplicate packet (RX)
|
||||
* @IWL_CD_STTS_ICV_MIC_ERR: MIC error (RX)
|
||||
* @IWL_CD_STTS_INTERNAL_SNAP_ERR: problems removing the snap (RX)
|
||||
* @IWL_CD_STTS_SEC_PORT_FAIL: security port fail (RX)
|
||||
* @IWL_CD_STTS_BA_OLD_SN: block ack received old SN (RX)
|
||||
* @IWL_CD_STTS_QOS_NULL: QoS null packet (RX)
|
||||
* @IWL_CD_STTS_MAC_HDR_ERR: MAC header conversion error (RX)
|
||||
* @IWL_CD_STTS_MAX_RETRANS: reached max number of retransmissions (TX)
|
||||
* @IWL_CD_STTS_EX_LIFETIME: exceeded lifetime (TX)
|
||||
* @IWL_CD_STTS_NOT_USED: completed but not used (RX)
|
||||
* @IWL_CD_STTS_REPLAY_ERR: pn check failed, replay error (RX)
|
||||
*/
|
||||
enum iwl_completion_desc_wifi_status {
|
||||
IWL_CD_STTS_VALID,
|
||||
IWL_CD_STTS_FCS_ERR,
|
||||
IWL_CD_STTS_SEC_KEY_ERR,
|
||||
IWL_CD_STTS_DECRYPTION_ERR,
|
||||
IWL_CD_STTS_DUP,
|
||||
IWL_CD_STTS_ICV_MIC_ERR,
|
||||
IWL_CD_STTS_INTERNAL_SNAP_ERR,
|
||||
IWL_CD_STTS_SEC_PORT_FAIL,
|
||||
IWL_CD_STTS_BA_OLD_SN,
|
||||
IWL_CD_STTS_QOS_NULL,
|
||||
IWL_CD_STTS_MAC_HDR_ERR,
|
||||
IWL_CD_STTS_MAX_RETRANS,
|
||||
IWL_CD_STTS_EX_LIFETIME,
|
||||
IWL_CD_STTS_NOT_USED,
|
||||
IWL_CD_STTS_REPLAY_ERR,
|
||||
};
|
||||
|
||||
#define IWL_RX_TD_TYPE 0xff000000
|
||||
#define IWL_RX_TD_SIZE 0x00ffffff
|
||||
|
||||
/**
|
||||
* struct iwl_rx_transfer_desc - transfer descriptor
|
||||
* @type_n_size: buffer type (bit 0: external buff valid,
|
||||
* bit 1: optional footer valid, bit 2-7: reserved)
|
||||
* and buffer size
|
||||
* @addr: ptr to free buffer start address
|
||||
* @rbid: unique tag of the buffer
|
||||
* @reserved: reserved
|
||||
*/
|
||||
struct iwl_rx_transfer_desc {
|
||||
__le32 type_n_size;
|
||||
__le64 addr;
|
||||
__le16 rbid;
|
||||
__le16 reserved;
|
||||
} __packed;
|
||||
|
||||
#define IWL_RX_CD_SIZE 0xffffff00
|
||||
|
||||
/**
|
||||
* struct iwl_rx_completion_desc - completion descriptor
|
||||
* @type: buffer type (bit 0: external buff valid,
|
||||
* bit 1: optional footer valid, bit 2-7: reserved)
|
||||
* @status: status of the completion
|
||||
* @reserved1: reserved
|
||||
* @rbid: unique tag of the received buffer
|
||||
* @size: buffer size, masked by IWL_RX_CD_SIZE
|
||||
* @reserved2: reserved
|
||||
*/
|
||||
struct iwl_rx_completion_desc {
|
||||
u8 type;
|
||||
u8 status;
|
||||
__le16 reserved1;
|
||||
__le16 rbid;
|
||||
__le32 size;
|
||||
u8 reserved2[22];
|
||||
} __packed;
|
||||
|
||||
/**
|
||||
* struct iwl_rxq - Rx queue
|
||||
* @id: queue index
|
||||
|
|
Loading…
Reference in New Issue