Skip to content

Commit

Permalink
dp-packet: Add flow_mark support for non-DPDK case.
Browse files Browse the repository at this point in the history
Additionally, new API call 'dp_packet_set_flow_mark' is needed
for packet clone. Mostly for dummy HWOL implementation.

Acked-by: Flavio Leitner <fbl@sysclose.org>
Signed-off-by: Ilya Maximets <i.maximets@samsung.com>
Signed-off-by: Ian Stokes <ian.stokes@intel.com>
  • Loading branch information
igsilya authored and istokes committed Mar 13, 2019
1 parent 228355c commit 0f706b3
Showing 1 changed file with 21 additions and 2 deletions.
23 changes: 21 additions & 2 deletions lib/dp-packet.h
Expand Up @@ -50,6 +50,7 @@ enum OVS_PACKED_ENUM dp_packet_source {
/* Bit masks for the 'ol_flags' member of the 'dp_packet' structure. */
enum dp_packet_offload_mask {
DP_PACKET_OL_RSS_HASH_MASK = 0x1, /* Is the 'rss_hash' valid? */
DP_PACKET_OL_FLOW_MARK_MASK = 0x2, /* Is the 'flow_mark' valid? */
};
#endif

Expand All @@ -67,6 +68,7 @@ struct dp_packet {
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. */
#endif
enum dp_packet_source source; /* Source of memory allocated as 'base'. */

Expand Down Expand Up @@ -562,6 +564,13 @@ dp_packet_has_flow_mark(const struct dp_packet *p, uint32_t *mark)
return false;
}

static inline void
dp_packet_set_flow_mark(struct dp_packet *p, uint32_t mark)
{
p->mbuf.hash.fdir.hi = mark;
p->mbuf.ol_flags |= PKT_RX_FDIR_ID;
}

#else /* DPDK_NETDEV */

static inline void
Expand Down Expand Up @@ -670,11 +679,21 @@ dp_packet_l4_checksum_bad(const struct dp_packet *p OVS_UNUSED)
}

static inline bool
dp_packet_has_flow_mark(const struct dp_packet *p OVS_UNUSED,
uint32_t *mark OVS_UNUSED)
dp_packet_has_flow_mark(const struct dp_packet *p, uint32_t *mark)
{
if (p->ol_flags & DP_PACKET_OL_FLOW_MARK_MASK) {
*mark = p->flow_mark;
return true;
}
return false;
}

static inline void
dp_packet_set_flow_mark(struct dp_packet *p, uint32_t mark)
{
p->flow_mark = mark;
p->ol_flags |= DP_PACKET_OL_FLOW_MARK_MASK;
}
#endif /* DPDK_NETDEV */

static inline void
Expand Down

0 comments on commit 0f706b3

Please sign in to comment.