Branch data Line data Source code
1 : : /* SPDX-License-Identifier: BSD-3-Clause 2 : : * Copyright(C) 2023 Marvell. 3 : : */ 4 : : 5 : : #include <eal_export.h> 6 : : #include <rte_common.h> 7 : : #include <rte_pmd_cnxk_eventdev.h> 8 : : #include <rte_eventdev.h> 9 : : 10 : : #include "roc_api.h" 11 : : 12 : : struct pwords { 13 : : uint64_t u[5]; 14 : : }; 15 : : 16 : : RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_pmd_cnxk_eventdev_wait_head, 23.11) 17 : : void 18 : 0 : rte_pmd_cnxk_eventdev_wait_head(uint8_t dev, uint8_t port) 19 : : { 20 : 0 : struct pwords *w = rte_event_fp_ops[dev].data[port]; 21 : : uint8_t vws; 22 : : 23 [ # # ]: 0 : if (w->u[1] & 0x3) { 24 : 0 : roc_sso_hws_head_wait(w->u[0]); 25 : : } else { 26 : : /* Dual WS case */ 27 : 0 : vws = (w->u[4] >> 8) & 0x1; 28 : 0 : roc_sso_hws_head_wait(w->u[vws]); 29 : : } 30 : 0 : } 31 : : 32 : : 33 : : RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_pmd_cnxk_eventdev_is_head, 23.11) 34 : : uint8_t 35 : 0 : rte_pmd_cnxk_eventdev_is_head(uint8_t dev, uint8_t port) 36 : : { 37 : 0 : struct pwords *w = rte_event_fp_ops[dev].data[port]; 38 : : uintptr_t base; 39 : : uint8_t vws; 40 : : 41 [ # # ]: 0 : if (w->u[1] & 0x3) { 42 : 0 : base = w->u[0]; 43 : : } else { 44 : : /* Dual WS case */ 45 : 0 : vws = (w->u[4] >> 8) & 0x1; 46 : 0 : base = w->u[vws]; 47 : : } 48 : : 49 : 0 : return roc_sso_hws_is_head(base); 50 : : }