net/dpaa: add packet dump for debugging
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com> Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
This commit is contained in:
parent
8cffdcbe85
commit
05ba55bc2b
@ -618,6 +618,39 @@ static int dpaa_tx_queue_init(struct qman_fq *fq,
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef RTE_LIBRTE_DPAA_DEBUG_DRIVER
|
||||
/* Initialise a DEBUG FQ ([rt]x_error, rx_default). */
|
||||
static int dpaa_debug_queue_init(struct qman_fq *fq, uint32_t fqid)
|
||||
{
|
||||
struct qm_mcc_initfq opts;
|
||||
int ret;
|
||||
|
||||
PMD_INIT_FUNC_TRACE();
|
||||
|
||||
ret = qman_reserve_fqid(fqid);
|
||||
if (ret) {
|
||||
DPAA_PMD_ERR("Reserve debug fqid %d failed with ret: %d",
|
||||
fqid, ret);
|
||||
return -EINVAL;
|
||||
}
|
||||
/* "map" this Rx FQ to one of the interfaces Tx FQID */
|
||||
DPAA_PMD_DEBUG("Creating debug fq %p, fqid %d", fq, fqid);
|
||||
ret = qman_create_fq(fqid, QMAN_FQ_FLAG_NO_ENQUEUE, fq);
|
||||
if (ret) {
|
||||
DPAA_PMD_ERR("create debug fqid %d failed with ret: %d",
|
||||
fqid, ret);
|
||||
return ret;
|
||||
}
|
||||
opts.we_mask = QM_INITFQ_WE_DESTWQ | QM_INITFQ_WE_FQCTRL;
|
||||
opts.fqd.dest.wq = DPAA_IF_DEBUG_PRIORITY;
|
||||
ret = qman_init_fq(fq, 0, &opts);
|
||||
if (ret)
|
||||
DPAA_PMD_ERR("init debug fqid %d failed with ret: %d",
|
||||
fqid, ret);
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Initialise a network interface */
|
||||
static int
|
||||
dpaa_dev_init(struct rte_eth_dev *eth_dev)
|
||||
@ -692,6 +725,15 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev)
|
||||
}
|
||||
dpaa_intf->nb_tx_queues = num_cores;
|
||||
|
||||
#ifdef RTE_LIBRTE_DPAA_DEBUG_DRIVER
|
||||
dpaa_debug_queue_init(&dpaa_intf->debug_queues[
|
||||
DPAA_DEBUG_FQ_RX_ERROR], fman_intf->fqid_rx_err);
|
||||
dpaa_intf->debug_queues[DPAA_DEBUG_FQ_RX_ERROR].dpaa_intf = dpaa_intf;
|
||||
dpaa_debug_queue_init(&dpaa_intf->debug_queues[
|
||||
DPAA_DEBUG_FQ_TX_ERROR], fman_intf->fqid_tx_err);
|
||||
dpaa_intf->debug_queues[DPAA_DEBUG_FQ_TX_ERROR].dpaa_intf = dpaa_intf;
|
||||
#endif
|
||||
|
||||
DPAA_PMD_DEBUG("All frame queues created");
|
||||
|
||||
/* Get the initial configuration for flow control */
|
||||
|
@ -85,6 +85,31 @@
|
||||
(_fd)->bpid = _bpid; \
|
||||
} while (0)
|
||||
|
||||
#if (defined RTE_LIBRTE_DPAA_DEBUG_DRIVER)
|
||||
void dpaa_display_frame(const struct qm_fd *fd)
|
||||
{
|
||||
int ii;
|
||||
char *ptr;
|
||||
|
||||
printf("%s::bpid %x addr %08x%08x, format %d off %d, len %d stat %x\n",
|
||||
__func__, fd->bpid, fd->addr_hi, fd->addr_lo, fd->format,
|
||||
fd->offset, fd->length20, fd->status);
|
||||
|
||||
ptr = (char *)rte_dpaa_mem_ptov(fd->addr);
|
||||
ptr += fd->offset;
|
||||
printf("%02x ", *ptr);
|
||||
for (ii = 1; ii < fd->length20; ii++) {
|
||||
printf("%02x ", *ptr);
|
||||
if ((ii % 16) == 0)
|
||||
printf("\n");
|
||||
ptr++;
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
#else
|
||||
#define dpaa_display_frame(a)
|
||||
#endif
|
||||
|
||||
static inline void dpaa_slow_parsing(struct rte_mbuf *m __rte_unused,
|
||||
uint64_t prs __rte_unused)
|
||||
{
|
||||
@ -353,6 +378,7 @@ static inline struct rte_mbuf *dpaa_eth_fd_to_mbuf(struct qm_fd *fd,
|
||||
return dpaa_eth_sg_to_mbuf(fd, ifid);
|
||||
|
||||
/* Ignoring case when format != qm_fd_contig */
|
||||
dpaa_display_frame(fd);
|
||||
ptr = rte_dpaa_mem_ptov(fd->addr);
|
||||
/* Ignoring case when ptr would be NULL. That is only possible incase
|
||||
* of a corrupted packet
|
||||
|
Loading…
Reference in New Issue
Block a user