1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright (c) 2015-2018 Atomic Rules LLC
10 /* ************************************************************************* */
12 ark_ddm_verify(struct ark_ddm_t
*ddm
)
14 if (sizeof(struct ark_ddm_t
) != ARK_DDM_EXPECTED_SIZE
) {
15 PMD_DRV_LOG(ERR
, "ARK: DDM structure looks incorrect %d vs %zd\n",
16 ARK_DDM_EXPECTED_SIZE
, sizeof(struct ark_ddm_t
));
20 if (ddm
->cfg
.const0
!= ARK_DDM_CONST
) {
21 PMD_DRV_LOG(ERR
, "ARK: DDM module not found as expected 0x%08x\n",
29 ark_ddm_start(struct ark_ddm_t
*ddm
)
35 ark_ddm_stop(struct ark_ddm_t
*ddm
, const int wait
)
40 while (wait
&& (ddm
->cfg
.stop_flushed
& 0x01) == 0) {
50 ark_ddm_reset(struct ark_ddm_t
*ddm
)
54 /* reset only works if ddm has stopped properly. */
55 status
= ark_ddm_stop(ddm
, 1);
58 PMD_DEBUG_LOG(INFO
, "%s stop failed doing forced reset\n",
67 ark_ddm_setup(struct ark_ddm_t
*ddm
, rte_iova_t cons_addr
, uint32_t interval
)
69 ddm
->setup
.cons_write_index_addr
= cons_addr
;
70 ddm
->setup
.write_index_interval
= interval
/ 4; /* 4 ns period */
74 ark_ddm_stats_reset(struct ark_ddm_t
*ddm
)
76 ddm
->cfg
.tlp_stats_clear
= 1;
80 ark_ddm_dump(struct ark_ddm_t
*ddm
, const char *msg
)
82 PMD_FUNC_LOG(DEBUG
, "%s Stopped: %d\n", msg
,
83 ark_ddm_is_stopped(ddm
)
88 ark_ddm_dump_stats(struct ark_ddm_t
*ddm
, const char *msg
)
90 struct ark_ddm_stats_t
*stats
= &ddm
->stats
;
92 PMD_STATS_LOG(INFO
, "DDM Stats: %s"
93 ARK_SU64 ARK_SU64 ARK_SU64
95 "Bytes:", stats
->tx_byte_count
,
96 "Packets:", stats
->tx_pkt_count
,
97 "MBufs", stats
->tx_mbuf_count
);
101 ark_ddm_is_stopped(struct ark_ddm_t
*ddm
)
103 return (ddm
->cfg
.stop_flushed
& 0x01) != 0;
107 ark_ddm_queue_byte_count(struct ark_ddm_t
*ddm
)
109 return ddm
->queue_stats
.byte_count
;
113 ark_ddm_queue_pkt_count(struct ark_ddm_t
*ddm
)
115 return ddm
->queue_stats
.pkt_count
;
119 ark_ddm_queue_reset_stats(struct ark_ddm_t
*ddm
)
121 ddm
->queue_stats
.byte_count
= 1;