static void
dp_packet_init__(struct dp_packet *b, size_t allocated, enum dp_packet_source source)
{
- b->allocated = allocated;
+ dp_packet_set_allocated(b, allocated);
b->source = source;
b->l2_pad_size = 0;
b->l2_5_ofs = b->l3_ofs = b->l4_ofs = UINT16_MAX;
OVS_NOT_REACHED();
}
- b->allocated = new_allocated;
+ dp_packet_set_allocated(b, new_allocated);
dp_packet_set_base(b, new_base);
new_data = (char *) new_base + new_headroom;
ds_init(&s);
ds_put_format(&s, "size=%"PRIu32", allocated=%"PRIu32", head=%"PRIuSIZE", tail=%"PRIuSIZE"\n",
- dp_packet_size(b), b->allocated,
+ dp_packet_size(b), dp_packet_get_allocated(b),
dp_packet_headroom(b), dp_packet_tailroom(b));
ds_put_hex_dump(&s, dp_packet_data(b), MIN(dp_packet_size(b), maxbytes), 0, false);
return ds_cstr(&s);
struct rte_mbuf mbuf; /* DPDK mbuf */
#else
void *base_; /* First byte of allocated space. */
+ 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 rss_hash; /* Packet hash. */
#endif
- uint32_t allocated; /* Number of bytes allocated. */
-
enum dp_packet_source source; /* Source of memory allocated as 'base'. */
uint8_t l2_pad_size; /* Detected l2 padding size.
* Padding is non-pullable. */
static inline uint32_t dp_packet_size(const struct dp_packet *);
static inline void dp_packet_set_size(struct dp_packet *, uint32_t);
+static inline uint16_t dp_packet_get_allocated(const struct dp_packet *);
+static inline void dp_packet_set_allocated(struct dp_packet *, uint16_t);
+
void * dp_packet_resize_l2(struct dp_packet *, int increment);
void * dp_packet_resize_l2_5(struct dp_packet *, int increment);
static inline void * dp_packet_l2(const struct dp_packet *);
* not necessarily in use) in 'b'. */
static inline void *dp_packet_end(const struct dp_packet *b)
{
- return (char *) dp_packet_base(b) + b->allocated;
+ return (char *) dp_packet_base(b) + dp_packet_get_allocated(b);
}
/* Returns the number of bytes of headroom in 'b', that is, the number of bytes
b->mbuf.data_off = v;
}
+static inline uint16_t dp_packet_get_allocated(const struct dp_packet *b)
+{
+ return b->mbuf.buf_len;
+}
+
+static inline void dp_packet_set_allocated(struct dp_packet *b, uint16_t s)
+{
+ b->mbuf.buf_len = s;
+}
#else
static inline void * dp_packet_base(const struct dp_packet *b)
{
b->data_ofs = v;
}
+static inline uint16_t dp_packet_get_allocated(const struct dp_packet *b)
+{
+ return b->allocated_;
+}
+
+static inline void dp_packet_set_allocated(struct dp_packet *b, uint16_t s)
+{
+ b->allocated_ = s;
+}
#endif
static inline void * dp_packet_data(const struct dp_packet *b)