vtnet: expose features via sysctl tree
Right now the 64-bit flags field needs to be casted to a 32-bit field, because clang warns if more than 32-bits are used. Once clang is fixed, this restriction will be removed and more bits will be added. Reviewed by: markj, Timo Völker MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D54288
This commit is contained in:
@@ -22,7 +22,7 @@
|
|||||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
.\" SUCH DAMAGE.
|
.\" SUCH DAMAGE.
|
||||||
.\"
|
.\"
|
||||||
.Dd December 18, 2025
|
.Dd December 19, 2025
|
||||||
.Dt VTNET 4
|
.Dt VTNET 4
|
||||||
.Os
|
.Os
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
@@ -274,6 +274,8 @@ The maximum number of supported virtqueue pairs.
|
|||||||
.It Va dev.vtnet. Ns Ar X Ns Va .flags
|
.It Va dev.vtnet. Ns Ar X Ns Va .flags
|
||||||
The flags of the interface.
|
The flags of the interface.
|
||||||
Mostly for debugging purposes.
|
Mostly for debugging purposes.
|
||||||
|
.It Va dev.vtnet. Ns Ar X Ns Va .features
|
||||||
|
The features of the interface as defined by the virtio specification.
|
||||||
.El
|
.El
|
||||||
.Sh SEE ALSO
|
.Sh SEE ALSO
|
||||||
.Xr arp 4 ,
|
.Xr arp 4 ,
|
||||||
|
|||||||
@@ -4399,6 +4399,21 @@ vtnet_setup_stat_sysctl(struct sysctl_ctx_list *ctx,
|
|||||||
"Times the transmit interrupt task rescheduled itself");
|
"Times the transmit interrupt task rescheduled itself");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
vtnet_sysctl_features(SYSCTL_HANDLER_ARGS)
|
||||||
|
{
|
||||||
|
struct sbuf sb;
|
||||||
|
struct vtnet_softc *sc = (struct vtnet_softc *)arg1;
|
||||||
|
int error;
|
||||||
|
|
||||||
|
sbuf_new_for_sysctl(&sb, NULL, 0, req);
|
||||||
|
sbuf_printf(&sb, "%b", (uint32_t)sc->vtnet_features,
|
||||||
|
VIRTIO_NET_FEATURE_BITS);
|
||||||
|
error = sbuf_finish(&sb);
|
||||||
|
sbuf_delete(&sb);
|
||||||
|
return (error);
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
vtnet_sysctl_flags(SYSCTL_HANDLER_ARGS)
|
vtnet_sysctl_flags(SYSCTL_HANDLER_ARGS)
|
||||||
{
|
{
|
||||||
@@ -4437,6 +4452,9 @@ vtnet_setup_sysctl(struct vtnet_softc *sc)
|
|||||||
SYSCTL_ADD_INT(ctx, child, OID_AUTO, "act_vq_pairs",
|
SYSCTL_ADD_INT(ctx, child, OID_AUTO, "act_vq_pairs",
|
||||||
CTLFLAG_RD, &sc->vtnet_act_vq_pairs, 0,
|
CTLFLAG_RD, &sc->vtnet_act_vq_pairs, 0,
|
||||||
"Number of active virtqueue pairs");
|
"Number of active virtqueue pairs");
|
||||||
|
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "features",
|
||||||
|
CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
|
||||||
|
vtnet_sysctl_features, "A", "Features");
|
||||||
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "flags",
|
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "flags",
|
||||||
CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
|
CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0,
|
||||||
vtnet_sysctl_flags, "A", "Flags");
|
vtnet_sysctl_flags, "A", "Flags");
|
||||||
|
|||||||
@@ -57,6 +57,14 @@
|
|||||||
#define VIRTIO_NET_F_CTRL_MAC_ADDR (1ULL << 23) /* Set MAC address */
|
#define VIRTIO_NET_F_CTRL_MAC_ADDR (1ULL << 23) /* Set MAC address */
|
||||||
#define VIRTIO_NET_F_SPEED_DUPLEX (1ULL << 63) /* Device set linkspeed and duplex */
|
#define VIRTIO_NET_F_SPEED_DUPLEX (1ULL << 63) /* Device set linkspeed and duplex */
|
||||||
|
|
||||||
|
/* virtio net feature flag descriptions for use with printf(9) %b identifier. */
|
||||||
|
#define VIRTIO_NET_FEATURE_BITS \
|
||||||
|
"\20\200CSUM\201GUEST_CSUM\202CTRL_GUEST_OFFLOADS\203MTU\205MAC\206GSO" \
|
||||||
|
"\207GUEST_TSO4\210GUEST_TSO6\211GUEST_ECN\212GUEST_UFO\213HOST_TSO4" \
|
||||||
|
"\214HOST_TSO6\215HOST_ECN\216HOST_UFO\217MRG_RXBUF\220STATUS\221CTRL_VQ" \
|
||||||
|
"\222CTRL_RX\223CTRL_VLAN\224CTRL_RX_EXTRA\225GUEST_ANNOUNCE\226MQ" \
|
||||||
|
"\227CTRL_MAC_ADDR\277SPEED_DUPLEX"
|
||||||
|
|
||||||
#define VIRTIO_NET_S_LINK_UP 1 /* Link is up */
|
#define VIRTIO_NET_S_LINK_UP 1 /* Link is up */
|
||||||
#define VIRTIO_NET_S_ANNOUNCE 2 /* Announcement is needed */
|
#define VIRTIO_NET_S_ANNOUNCE 2 /* Announcement is needed */
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user