net/softnic: promote manage API
[dpdk.git] / drivers / net / softnic / rte_eth_softnic.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2017 Intel Corporation
3  */
4
5 #ifndef __INCLUDE_RTE_ETH_SOFTNIC_H__
6 #define __INCLUDE_RTE_ETH_SOFTNIC_H__
7
8 #include <stdint.h>
9
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13
14 /** Firmware. */
15 #ifndef SOFTNIC_FIRMWARE
16 #define SOFTNIC_FIRMWARE                                   "firmware.cli"
17 #endif
18
19 /** TCP connection port (0 = no connectivity). */
20 #ifndef SOFTNIC_CONN_PORT
21 #define SOFTNIC_CONN_PORT                                  0
22 #endif
23
24 /** NUMA node ID. */
25 #ifndef SOFTNIC_CPU_ID
26 #define SOFTNIC_CPU_ID                                     0
27 #endif
28
29 /**
30  * Service cores:
31  *
32  * 0 = The current device is run explicitly by the application. The firmware
33  *     creates one or several pipelines for the current device and maps them to
34  *     CPU cores that should not be service cores. The application is required
35  *     to call rte_pmd_softnic_run() for the current device on each of these CPU
36  *     cores in order to make the current device work.
37  *
38  * 1 = The current device is run on the service cores transparently to the
39  *     application. The firmware creates one or several pipelines for the
40  *     current device and maps them to CPU cores that should be service cores.
41  *     Each of these service cores is calling rte_pmd_softnic_run() for the
42  *     current device in order to make the current device work. The application
43  *     is not allowed to call rte_pmd_softnic_run() for the current device.
44  */
45 #ifndef SOFTNIC_SC
46 #define SOFTNIC_SC                                         1
47 #endif
48
49 /** Traffic Manager: Number of scheduler queues. */
50 #ifndef SOFTNIC_TM_N_QUEUES
51 #define SOFTNIC_TM_N_QUEUES                                (64 * 1024)
52 #endif
53
54 /** Traffic Manager: Scheduler queue size (per traffic class). */
55 #ifndef SOFTNIC_TM_QUEUE_SIZE
56 #define SOFTNIC_TM_QUEUE_SIZE                              64
57 #endif
58
59 /**
60  * Soft NIC run.
61  *
62  * @param port_id
63  *    Port ID of the Soft NIC device.
64  * @return
65  *    Zero on success, error code otherwise.
66  */
67 int
68 rte_pmd_softnic_run(uint16_t port_id);
69
70 /**
71  * Soft NIC manage.
72  *
73  * @param port_id
74  *    Port ID of the Soft NIC device.
75  * @return
76  *    Zero on success, error code otherwise.
77  */
78 int
79 rte_pmd_softnic_manage(uint16_t port_id);
80
81 #ifdef __cplusplus
82 }
83 #endif
84
85 #endif /* __INCLUDE_RTE_ETH_SOFTNIC_H__ */