When troubleshooting some DPDK driver bug^Wbehavior, it is handy to get ol_flags and all (outer_)?l[2-4]_len mbufs fields.
Signed-off-by: David Marchand <[email protected]> --- lib/netdev-dpdk.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c index 45b9f48964..6c95519a61 100644 --- a/lib/netdev-dpdk.c +++ b/lib/netdev-dpdk.c @@ -2615,6 +2615,7 @@ netdev_dpdk_batch_init_packet_fields(struct dp_packet_batch *batch) static bool netdev_dpdk_prep_hwol_packet(struct netdev_dpdk *dev, struct rte_mbuf *mbuf) { + static struct vlog_rate_limit prep_rl = VLOG_RATE_LIMIT_INIT(5, 5); struct dp_packet *pkt = CONTAINER_OF(mbuf, struct dp_packet, mbuf); uint64_t unexpected = mbuf->ol_flags & RTE_MBUF_F_TX_OFFLOAD_MASK; const struct ip_header *ip; @@ -2772,6 +2773,18 @@ netdev_dpdk_prep_hwol_packet(struct netdev_dpdk *dev, struct rte_mbuf *mbuf) } } + if (OVS_UNLIKELY(!VLOG_DROP_DBG(&prep_rl))) { + char flags[BUFSIZ]; + + if (rte_get_tx_ol_flag_list(mbuf->ol_flags, flags, sizeof flags)) { + ovs_strlcpy(flags, "...", sizeof flags); + } + VLOG_DBG("%s: prepared mbuf lengths %u, %u, %u, %u, %u, %u, segsz %u," + " flags %s", dev->up.name, mbuf->pkt_len, mbuf->outer_l2_len, + mbuf->outer_l3_len, mbuf->l2_len, mbuf->l3_len, mbuf->l4_len, + mbuf->tso_segsz, flags); + } + return true; } -- 2.51.0 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
