2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-22 01:51:26 +00:00

dp-packet: Remove direct access to DPDK offloads.

Now that every use of ol_flags have been reworked, we can remove helper
and additional field in dp_packet when not building with DPDK.

Signed-off-by: David Marchand <david.marchand@redhat.com>
Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
This commit is contained in:
David Marchand 2025-06-17 09:21:01 +02:00 committed by Ilya Maximets
parent cf7b86db1f
commit b8032fac2c
4 changed files with 2 additions and 36 deletions

View File

@ -56,11 +56,6 @@ dp_packet_gso_seg_new(const struct dp_packet *p, size_t hdr_len,
seg->has_mark = p->has_mark;
*dp_packet_flow_mark_ptr(seg) = *dp_packet_flow_mark_ptr(p);
/* The segment should inherit all the offloading flags from the
* original packet, except for the TCP segmentation, external
* buffer and indirect buffer flags. */
*dp_packet_ol_flags_ptr(seg) = *dp_packet_ol_flags_ptr(p)
& DP_PACKET_OL_SUPPORTED_MASK;
seg->offloads = p->offloads;
return seg;

View File

@ -198,9 +198,6 @@ dp_packet_clone_with_headroom(const struct dp_packet *buffer, size_t headroom)
sizeof(struct dp_packet) -
offsetof(struct dp_packet, l2_pad_size));
*dp_packet_ol_flags_ptr(new_buffer) = *dp_packet_ol_flags_ptr(buffer);
*dp_packet_ol_flags_ptr(new_buffer) &= DP_PACKET_OL_SUPPORTED_MASK;
dp_packet_set_tso_segsz(new_buffer, dp_packet_get_tso_segsz(buffer));
if (dp_packet_rss_valid(buffer)) {

View File

@ -49,14 +49,6 @@ enum OVS_PACKED_ENUM dp_packet_source {
#define DP_PACKET_CONTEXT_SIZE 64
#ifdef DPDK_NETDEV
#define DEF_OL_FLAG(NAME, DPDK_DEF, GENERIC_DEF) NAME = DPDK_DEF
#else
#define DEF_OL_FLAG(NAME, DPDK_DEF, GENERIC_DEF) NAME = GENERIC_DEF
#endif
#define DP_PACKET_OL_SUPPORTED_MASK 0
/* Bit masks for the 'offloads' member of the 'dp_packet' structure. */
enum OVS_PACKED_ENUM dp_packet_offload_mask {
/* Bad IP checksum in the packet. */
@ -133,7 +125,6 @@ struct dp_packet {
uint16_t allocated_; /* Number of bytes allocated. */
uint16_t data_ofs; /* First byte actually in use. */
uint32_t size_; /* Number of bytes in use. */
uint32_t ol_flags; /* Offloading flags. */
uint32_t rss_hash; /* Packet hash. */
uint32_t flow_mark; /* Packet flow mark. */
uint16_t tso_segsz; /* TCP segment size. */
@ -623,12 +614,6 @@ dp_packet_get_nd_payload(const struct dp_packet *b)
}
#ifdef DPDK_NETDEV
static inline uint64_t *
dp_packet_ol_flags_ptr(const struct dp_packet *b)
{
return CONST_CAST(uint64_t *, &b->mbuf.ol_flags);
}
static inline uint32_t *
dp_packet_rss_ptr(const struct dp_packet *b)
{
@ -642,12 +627,6 @@ dp_packet_flow_mark_ptr(const struct dp_packet *b)
}
#else
static inline uint32_t *
dp_packet_ol_flags_ptr(const struct dp_packet *b)
{
return CONST_CAST(uint32_t *, &b->ol_flags);
}
static inline uint32_t *
dp_packet_rss_ptr(const struct dp_packet *b)
{
@ -1043,7 +1022,6 @@ dp_packet_rss_valid(const struct dp_packet *p)
static inline void
dp_packet_reset_offload(struct dp_packet *p)
{
*dp_packet_ol_flags_ptr(p) &= ~DP_PACKET_OL_SUPPORTED_MASK;
p->has_hash = p->has_mark = false;
p->offloads = 0;
}

View File

@ -7164,9 +7164,7 @@ netdev_linux_prepend_vnet_hdr(struct dp_packet *b, int mtu)
vnet->gso_type = VIRTIO_NET_HDR_GSO_TCPV6;
} else {
VLOG_ERR_RL(&rl, "Unknown gso_type for TSO packet. "
"Flags: %#"PRIx64", Offloads: %"PRIu32,
(uint64_t) *dp_packet_ol_flags_ptr(b),
b->offloads);
"Offloads: %"PRIu32, b->offloads);
return EINVAL;
}
} else {
@ -7265,9 +7263,7 @@ netdev_linux_prepend_vnet_hdr(struct dp_packet *b, int mtu)
/* This should only happen when a new L4 proto
* is not covered in above checks. */
VLOG_WARN_RL(&rl, "Unsupported L4 checksum offload. "
"Flags: %"PRIu64", Offloads: %"PRIu32,
(uint64_t)*dp_packet_ol_flags_ptr(b),
b->offloads);
"Offloads: %"PRIu32, b->offloads);
vnet->csum_start = vnet->csum_offset = (OVS_FORCE __virtio16) 0;
vnet->flags = 0;
}