Coverage Report

Created: 2025-07-12 06:35

/src/openvswitch/lib/netdev-afxdp.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright (c) 2018, 2019 Nicira, Inc.
3
 *
4
 * Licensed under the Apache License, Version 2.0 (the "License");
5
 * you may not use this file except in compliance with the License.
6
 * You may obtain a copy of the License at:
7
 *
8
 *     http://www.apache.org/licenses/LICENSE-2.0
9
 *
10
 * Unless required by applicable law or agreed to in writing, software
11
 * distributed under the License is distributed on an "AS IS" BASIS,
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 * See the License for the specific language governing permissions and
14
 * limitations under the License.
15
 */
16
17
#ifndef NETDEV_AFXDP_H
18
#define NETDEV_AFXDP_H 1
19
20
#ifdef HAVE_AF_XDP
21
22
#include <stdint.h>
23
#include <stdbool.h>
24
25
/* These functions are Linux AF_XDP specific, so they should be used directly
26
 * only by Linux-specific code. */
27
28
enum afxdp_mode {
29
    OVS_AF_XDP_MODE_UNSPEC,
30
    OVS_AF_XDP_MODE_BEST_EFFORT,
31
    OVS_AF_XDP_MODE_NATIVE_ZC,
32
    OVS_AF_XDP_MODE_NATIVE,
33
    OVS_AF_XDP_MODE_GENERIC,
34
    OVS_AF_XDP_MODE_MAX,
35
};
36
37
struct dp_packet;
38
struct dp_packet_batch;
39
struct netdev;
40
struct netdev_afxdp_tx_lock;
41
struct netdev_custom_stats;
42
struct netdev_rxq;
43
struct netdev_stats;
44
struct smap;
45
struct xdp_umem;
46
struct xsk_socket_info;
47
48
int netdev_afxdp_rxq_construct(struct netdev_rxq *rxq_);
49
void netdev_afxdp_rxq_destruct(struct netdev_rxq *rxq_);
50
int netdev_afxdp_construct(struct netdev *netdev_);
51
void netdev_afxdp_destruct(struct netdev *netdev_);
52
int netdev_afxdp_verify_mtu_size(const struct netdev *netdev, int mtu);
53
54
int netdev_afxdp_rxq_recv(struct netdev_rxq *rxq_,
55
                          struct dp_packet_batch *batch,
56
                          int *qfill);
57
int netdev_afxdp_batch_send(struct netdev *netdev_, int qid,
58
                            struct dp_packet_batch *batch,
59
                            bool concurrent_txq);
60
int netdev_afxdp_set_config(struct netdev *netdev, const struct smap *args,
61
                            char **errp);
62
int netdev_afxdp_get_config(const struct netdev *netdev, struct smap *args);
63
int netdev_afxdp_get_stats(const struct netdev *netdev_,
64
                           struct netdev_stats *stats);
65
int netdev_afxdp_get_status(const struct netdev *netdev, struct smap *args);
66
int netdev_afxdp_get_custom_stats(const struct netdev *netdev,
67
                                  struct netdev_custom_stats *custom_stats);
68
69
70
void free_afxdp_buf(struct dp_packet *p);
71
int netdev_afxdp_reconfigure(struct netdev *netdev);
72
void signal_remove_xdp(struct netdev *netdev);
73
74
#else /* !HAVE_AF_XDP */
75
76
#include "openvswitch/compiler.h"
77
78
struct dp_packet;
79
80
static inline void
81
free_afxdp_buf(struct dp_packet *p OVS_UNUSED)
82
0
{
83
    /* Nothing. */
84
0
}
Unexecuted instantiation: packets.c:free_afxdp_buf
Unexecuted instantiation: dp-packet.c:free_afxdp_buf
85
86
#endif /* HAVE_AF_XDP */
87
#endif /* netdev-afxdp.h */