net: dpaa2-eth: add trace points on XSK events
Define the dpaa2_tx_xsk_fd and dpaa2_rx_xsk_fd trace events for the XSK zero-copy Rx and Tx path. Also, define the dpaa2_eth_buf as an event class so that both dpaa2_eth_buf_seed and dpaa2_xsk_buf_seed traces can derive from the same class. Signed-off-by: Robert-Ionut Alexa <robert-ionut.alexa@nxp.com> Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
4a7f6c5ac9
commit
3817b2ac71
@ -73,6 +73,14 @@ DEFINE_EVENT(dpaa2_eth_fd, dpaa2_tx_fd,
|
||||
TP_ARGS(netdev, fd)
|
||||
);
|
||||
|
||||
/* Tx (egress) XSK fd */
|
||||
DEFINE_EVENT(dpaa2_eth_fd, dpaa2_tx_xsk_fd,
|
||||
TP_PROTO(struct net_device *netdev,
|
||||
const struct dpaa2_fd *fd),
|
||||
|
||||
TP_ARGS(netdev, fd)
|
||||
);
|
||||
|
||||
/* Rx fd */
|
||||
DEFINE_EVENT(dpaa2_eth_fd, dpaa2_rx_fd,
|
||||
TP_PROTO(struct net_device *netdev,
|
||||
@ -81,6 +89,14 @@ DEFINE_EVENT(dpaa2_eth_fd, dpaa2_rx_fd,
|
||||
TP_ARGS(netdev, fd)
|
||||
);
|
||||
|
||||
/* Rx XSK fd */
|
||||
DEFINE_EVENT(dpaa2_eth_fd, dpaa2_rx_xsk_fd,
|
||||
TP_PROTO(struct net_device *netdev,
|
||||
const struct dpaa2_fd *fd),
|
||||
|
||||
TP_ARGS(netdev, fd)
|
||||
);
|
||||
|
||||
/* Tx confirmation fd */
|
||||
DEFINE_EVENT(dpaa2_eth_fd, dpaa2_tx_conf_fd,
|
||||
TP_PROTO(struct net_device *netdev,
|
||||
@ -90,57 +106,81 @@ DEFINE_EVENT(dpaa2_eth_fd, dpaa2_tx_conf_fd,
|
||||
);
|
||||
|
||||
/* Log data about raw buffers. Useful for tracing DPBP content. */
|
||||
TRACE_EVENT(dpaa2_eth_buf_seed,
|
||||
/* Trace function prototype */
|
||||
TP_PROTO(struct net_device *netdev,
|
||||
/* virtual address and size */
|
||||
void *vaddr,
|
||||
size_t size,
|
||||
/* dma map address and size */
|
||||
dma_addr_t dma_addr,
|
||||
size_t map_size,
|
||||
/* buffer pool id, if relevant */
|
||||
u16 bpid),
|
||||
DECLARE_EVENT_CLASS(dpaa2_eth_buf,
|
||||
/* Trace function prototype */
|
||||
TP_PROTO(struct net_device *netdev,
|
||||
/* virtual address and size */
|
||||
void *vaddr,
|
||||
size_t size,
|
||||
/* dma map address and size */
|
||||
dma_addr_t dma_addr,
|
||||
size_t map_size,
|
||||
/* buffer pool id, if relevant */
|
||||
u16 bpid),
|
||||
|
||||
/* Repeat argument list here */
|
||||
TP_ARGS(netdev, vaddr, size, dma_addr, map_size, bpid),
|
||||
/* Repeat argument list here */
|
||||
TP_ARGS(netdev, vaddr, size, dma_addr, map_size, bpid),
|
||||
|
||||
/* A structure containing the relevant information we want
|
||||
* to record. Declare name and type for each normal element,
|
||||
* name, type and size for arrays. Use __string for variable
|
||||
* length strings.
|
||||
*/
|
||||
TP_STRUCT__entry(
|
||||
__field(void *, vaddr)
|
||||
__field(size_t, size)
|
||||
__field(dma_addr_t, dma_addr)
|
||||
__field(size_t, map_size)
|
||||
__field(u16, bpid)
|
||||
__string(name, netdev->name)
|
||||
),
|
||||
/* A structure containing the relevant information we want
|
||||
* to record. Declare name and type for each normal element,
|
||||
* name, type and size for arrays. Use __string for variable
|
||||
* length strings.
|
||||
*/
|
||||
TP_STRUCT__entry(
|
||||
__field(void *, vaddr)
|
||||
__field(size_t, size)
|
||||
__field(dma_addr_t, dma_addr)
|
||||
__field(size_t, map_size)
|
||||
__field(u16, bpid)
|
||||
__string(name, netdev->name)
|
||||
),
|
||||
|
||||
/* The function that assigns values to the above declared
|
||||
* fields
|
||||
*/
|
||||
TP_fast_assign(
|
||||
__entry->vaddr = vaddr;
|
||||
__entry->size = size;
|
||||
__entry->dma_addr = dma_addr;
|
||||
__entry->map_size = map_size;
|
||||
__entry->bpid = bpid;
|
||||
__assign_str(name, netdev->name);
|
||||
),
|
||||
/* The function that assigns values to the above declared
|
||||
* fields
|
||||
*/
|
||||
TP_fast_assign(
|
||||
__entry->vaddr = vaddr;
|
||||
__entry->size = size;
|
||||
__entry->dma_addr = dma_addr;
|
||||
__entry->map_size = map_size;
|
||||
__entry->bpid = bpid;
|
||||
__assign_str(name, netdev->name);
|
||||
),
|
||||
|
||||
/* This is what gets printed when the trace event is
|
||||
* triggered.
|
||||
*/
|
||||
TP_printk(TR_BUF_FMT,
|
||||
__get_str(name),
|
||||
__entry->vaddr,
|
||||
__entry->size,
|
||||
&__entry->dma_addr,
|
||||
__entry->map_size,
|
||||
__entry->bpid)
|
||||
/* This is what gets printed when the trace event is
|
||||
* triggered.
|
||||
*/
|
||||
TP_printk(TR_BUF_FMT,
|
||||
__get_str(name),
|
||||
__entry->vaddr,
|
||||
__entry->size,
|
||||
&__entry->dma_addr,
|
||||
__entry->map_size,
|
||||
__entry->bpid)
|
||||
);
|
||||
|
||||
/* Main memory buff seeding */
|
||||
DEFINE_EVENT(dpaa2_eth_buf, dpaa2_eth_buf_seed,
|
||||
TP_PROTO(struct net_device *netdev,
|
||||
void *vaddr,
|
||||
size_t size,
|
||||
dma_addr_t dma_addr,
|
||||
size_t map_size,
|
||||
u16 bpid),
|
||||
|
||||
TP_ARGS(netdev, vaddr, size, dma_addr, map_size, bpid)
|
||||
);
|
||||
|
||||
/* UMEM buff seeding on AF_XDP fast path */
|
||||
DEFINE_EVENT(dpaa2_eth_buf, dpaa2_xsk_buf_seed,
|
||||
TP_PROTO(struct net_device *netdev,
|
||||
void *vaddr,
|
||||
size_t size,
|
||||
dma_addr_t dma_addr,
|
||||
size_t map_size,
|
||||
u16 bpid),
|
||||
|
||||
TP_ARGS(netdev, vaddr, size, dma_addr, map_size, bpid)
|
||||
);
|
||||
|
||||
/* If only one event of a certain type needs to be declared, use TRACE_EVENT().
|
||||
|
@ -1731,6 +1731,12 @@ static int dpaa2_eth_add_bufs(struct dpaa2_eth_priv *priv,
|
||||
goto err_map;
|
||||
|
||||
buf_array[i] = addr;
|
||||
|
||||
trace_dpaa2_xsk_buf_seed(priv->net_dev,
|
||||
xdp_buffs[i]->data_hard_start,
|
||||
DPAA2_ETH_RX_BUF_RAW_SIZE,
|
||||
addr, priv->rx_buf_size,
|
||||
ch->bp->bpid);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -113,6 +113,8 @@ static void dpaa2_xsk_rx(struct dpaa2_eth_priv *priv,
|
||||
void *vaddr;
|
||||
u32 xdp_act;
|
||||
|
||||
trace_dpaa2_rx_xsk_fd(priv->net_dev, fd);
|
||||
|
||||
vaddr = dpaa2_iova_to_virt(priv->iommu_domain, addr);
|
||||
percpu_stats = this_cpu_ptr(priv->percpu_stats);
|
||||
|
||||
@ -416,6 +418,8 @@ bool dpaa2_xsk_tx(struct dpaa2_eth_priv *priv,
|
||||
batch = i;
|
||||
break;
|
||||
}
|
||||
|
||||
trace_dpaa2_tx_xsk_fd(priv->net_dev, &fds[i]);
|
||||
}
|
||||
|
||||
/* Enqueue all the created FDs */
|
||||
|
Loading…
x
Reference in New Issue
Block a user