/* SPDX-License-Identifier: GPL-2.0-only
*
* Copyright ( c ) 2021 , MediaTek Inc .
* Copyright ( c ) 2021 - 2022 , Intel Corporation .
*
* Authors :
* Haijun Liu < haijun . liu @ mediatek . com >
* Eliot Lee < eliot . lee @ intel . com >
* Ricardo Martinez < ricardo . martinez @ linux . intel . com >
*
* Contributors :
* Amir Hanania < amir . hanania @ intel . com >
* Moises Veleta < moises . veleta @ intel . com >
* Sreehari Kancharla < sreehari . kancharla @ intel . com >
*/
#ifndef __T7XX_HIF_DPMA_RX_H__
#define __T7XX_HIF_DPMA_RX_H__
#include <linux/bits.h>
#include <linux/types.h>
#include "t7xx_hif_dpmaif.h"
#define NETIF_MASK GENMASK(4 , 0 )
#define PKT_TYPE_IP4 0
#define PKT_TYPE_IP6 1
/* Structure of DL PIT */
struct dpmaif_pit {
__le32 header;
union {
struct {
__le32 data_addr_l;
__le32 data_addr_h;
__le32 footer;
} pd;
struct {
__le32 params_1;
__le32 params_2;
__le32 params_3;
} msg;
};
};
/* PIT header fields */
#define PD_PIT_DATA_LEN GENMASK(31 , 16 )
#define PD_PIT_BUFFER_ID GENMASK(15 , 3 )
#define PD_PIT_BUFFER_TYPE BIT(2 )
#define PD_PIT_CONT BIT(1 )
#define PD_PIT_PACKET_TYPE BIT(0 )
/* PIT footer fields */
#define PD_PIT_DLQ_DONE GENMASK(31 , 30 )
#define PD_PIT_ULQ_DONE GENMASK(29 , 24 )
#define PD_PIT_HEADER_OFFSET GENMASK(23 , 19 )
#define PD_PIT_BI_F GENMASK(18 , 17 )
#define PD_PIT_IG BIT(16 )
#define PD_PIT_RES GENMASK(15 , 11 )
#define PD_PIT_H_BID GENMASK(10 , 8 )
#define PD_PIT_PIT_SEQ GENMASK(7 , 0 )
#define MSG_PIT_DP BIT(31 )
#define MSG_PIT_RES GENMASK(30 , 27 )
#define MSG_PIT_NETWORK_TYPE GENMASK(26 , 24 )
#define MSG_PIT_CHANNEL_ID GENMASK(23 , 16 )
#define MSG_PIT_RES2 GENMASK(15 , 12 )
#define MSG_PIT_HPC_IDX GENMASK(11 , 8 )
#define MSG_PIT_SRC_QID GENMASK(7 , 5 )
#define MSG_PIT_ERROR_BIT BIT(4 )
#define MSG_PIT_CHECKSUM GENMASK(3 , 2 )
#define MSG_PIT_CONT BIT(1 )
#define MSG_PIT_PACKET_TYPE BIT(0 )
#define MSG_PIT_HP_IDX GENMASK(31 , 27 )
#define MSG_PIT_CMD GENMASK(26 , 24 )
#define MSG_PIT_RES3 GENMASK(23 , 21 )
#define MSG_PIT_FLOW GENMASK(20 , 16 )
#define MSG_PIT_COUNT GENMASK(15 , 0 )
#define MSG_PIT_HASH GENMASK(31 , 24 )
#define MSG_PIT_RES4 GENMASK(23 , 18 )
#define MSG_PIT_PRO GENMASK(17 , 16 )
#define MSG_PIT_VBID GENMASK(15 , 3 )
#define MSG_PIT_RES5 GENMASK(2 , 0 )
#define MSG_PIT_DLQ_DONE GENMASK(31 , 30 )
#define MSG_PIT_ULQ_DONE GENMASK(29 , 24 )
#define MSG_PIT_IP BIT(23 )
#define MSG_PIT_RES6 BIT(22 )
#define MSG_PIT_MR GENMASK(21 , 20 )
#define MSG_PIT_RES7 GENMASK(19 , 17 )
#define MSG_PIT_IG BIT(16 )
#define MSG_PIT_RES8 GENMASK(15 , 11 )
#define MSG_PIT_H_BID GENMASK(10 , 8 )
#define MSG_PIT_PIT_SEQ GENMASK(7 , 0 )
int t7xx_dpmaif_rxq_init(struct dpmaif_rx_queue *queue);
void t7xx_dpmaif_rx_clear(struct dpmaif_ctrl *dpmaif_ctrl);
int t7xx_dpmaif_bat_rel_wq_alloc(struct dpmaif_ctrl *dpmaif_ctrl);
int t7xx_dpmaif_rx_buf_alloc(struct dpmaif_ctrl *dpmaif_ctrl,
const struct dpmaif_bat_request *bat_req,
const unsigned int q_num, const unsigned int buf_cnt,
const bool initial);
int t7xx_dpmaif_rx_frag_alloc(struct dpmaif_ctrl *dpmaif_ctrl, struct dpmaif_bat_request *bat_req,
const unsigned int buf_cnt, const bool first_time);
void t7xx_dpmaif_rx_stop(struct dpmaif_ctrl *dpmaif_ctrl);
void t7xx_dpmaif_irq_rx_done(struct dpmaif_ctrl *dpmaif_ctrl, const unsigned int que_mask);
void t7xx_dpmaif_rxq_free(struct dpmaif_rx_queue *queue);
void t7xx_dpmaif_bat_wq_rel(struct dpmaif_ctrl *dpmaif_ctrl);
int t7xx_dpmaif_bat_alloc(const struct dpmaif_ctrl *dpmaif_ctrl, struct dpmaif_bat_request *bat_req,
const enum bat_type buf_type);
void t7xx_dpmaif_bat_free(const struct dpmaif_ctrl *dpmaif_ctrl,
struct dpmaif_bat_request *bat_req);
int t7xx_dpmaif_napi_rx_poll(struct napi_struct *napi, const int budget);
#endif /* __T7XX_HIF_DPMA_RX_H__ */
Messung V0.5 in Prozent C=96 H=100 G=97
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-10-11)
¤
*© Formatika GbR, Deutschland