numam-dpdk/drivers/net/softnic/rte_eth_softnic.h
David Marchand 18218713bf enforce experimental tag at beginning of declarations
Putting a '__attribute__((deprecated))' in the middle of a function
prototype does not result in the expected result with gcc (while clang
is fine with this syntax).

$ cat deprecated.c
void * __attribute__((deprecated)) incorrect() { return 0; }
__attribute__((deprecated)) void *correct(void) { return 0; }
int main(int argc, char *argv[]) { incorrect(); correct(); return 0; }
$ gcc -o deprecated.o -c deprecated.c
deprecated.c: In function ‘main’:
deprecated.c:3:1: warning: ‘correct’ is deprecated (declared at
deprecated.c:2) [-Wdeprecated-declarations]
 int main(int argc, char *argv[]) { incorrect(); correct(); return 0; }
 ^

Move the tag on a separate line and make it the first thing of function
prototypes.
This is not perfect but we will trust reviewers to catch the other not
so easy to detect patterns.

sed -i \
     -e '/^\([^#].*\)\?__rte_experimental */{' \
     -e 's//\1/; s/ *$//; i\' \
     -e __rte_experimental \
     -e '/^$/d}' \
     $(git grep -l __rte_experimental -- '*.h')

Special mention for rte_mbuf_data_addr_default():

There is either a bug or a (not yet understood) issue with gcc.
gcc won't drop this inline when unused and rte_mbuf_data_addr_default()
calls rte_mbuf_buf_addr() which itself is experimental.
This results in a build warning when not accepting experimental apis
from sources just including rte_mbuf.h.

For this specific case, we hide the call to rte_mbuf_buf_addr() under
the ALLOW_EXPERIMENTAL_API flag.

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Signed-off-by: David Marchand <david.marchand@redhat.com>
2019-06-29 19:04:48 +02:00

87 lines
2.3 KiB
C

/* SPDX-License-Identifier: BSD-3-Clause
* Copyright(c) 2017 Intel Corporation
*/
#ifndef __INCLUDE_RTE_ETH_SOFTNIC_H__
#define __INCLUDE_RTE_ETH_SOFTNIC_H__
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
/** Firmware. */
#ifndef SOFTNIC_FIRMWARE
#define SOFTNIC_FIRMWARE "firmware.cli"
#endif
/** TCP connection port (0 = no connectivity). */
#ifndef SOFTNIC_CONN_PORT
#define SOFTNIC_CONN_PORT 0
#endif
/** NUMA node ID. */
#ifndef SOFTNIC_CPU_ID
#define SOFTNIC_CPU_ID 0
#endif
/**
* Service cores:
*
* 0 = The current device is run explicitly by the application. The firmware
* creates one or several pipelines for the current device and maps them to
* CPU cores that should not be service cores. The application is required
* to call rte_pmd_softnic_run() for the current device on each of these CPU
* cores in order to make the current device work.
*
* 1 = The current device is run on the service cores transparently to the
* application. The firmware creates one or several pipelines for the
* current device and maps them to CPU cores that should be service cores.
* Each of these service cores is calling rte_pmd_softnic_run() for the
* current device in order to make the current device work. The application
* is not allowed to call rte_pmd_softnic_run() for the current device.
*/
#ifndef SOFTNIC_SC
#define SOFTNIC_SC 1
#endif
/** Traffic Manager: Number of scheduler queues. */
#ifndef SOFTNIC_TM_N_QUEUES
#define SOFTNIC_TM_N_QUEUES (64 * 1024)
#endif
/** Traffic Manager: Scheduler queue size (per traffic class). */
#ifndef SOFTNIC_TM_QUEUE_SIZE
#define SOFTNIC_TM_QUEUE_SIZE 64
#endif
/**
* Soft NIC run.
*
* @param port_id
* Port ID of the Soft NIC device.
* @return
* Zero on success, error code otherwise.
*/
int
rte_pmd_softnic_run(uint16_t port_id);
/**
* Soft NIC manage.
*
* @param port_id
* Port ID of the Soft NIC device.
* @return
* Zero on success, error code otherwise.
*/
__rte_experimental
int
rte_pmd_softnic_manage(uint16_t port_id);
#ifdef __cplusplus
}
#endif
#endif /* __INCLUDE_RTE_ETH_SOFTNIC_H__ */