@@ -16,6 +16,7 @@ extern "C" {
typedef struct {
odp_pktio_type_t type;
int fanout;
+ int headroom;
} socket_params_t;
#ifdef __cplusplus
@@ -80,7 +80,7 @@ int setup_pkt_sock(pkt_sock_t * const pkt_sock, const char *netdev,
odp_buffer_pool_t pool);
int setup_pkt_sock_mmap(pkt_sock_mmap_t * const pkt_sock, const char *netdev,
- odp_buffer_pool_t pool, int fanout);
+ odp_buffer_pool_t pool, socket_params_t *sock_params);
/**
* Close a packet socket
@@ -220,7 +220,7 @@ odp_pktio_t odp_pktio_open(const char *dev, odp_buffer_pool_t pool,
break;
case ODP_PKTIO_TYPE_SOCKET_MMAP:
res = setup_pkt_sock_mmap(&pktio_entry->s.pkt_sock_mmap, dev,
- pool, params->sock_params.fanout);
+ pool, ¶ms->sock_params);
if (res == -1) {
close_pkt_sock_mmap(&pktio_entry->s.pkt_sock_mmap);
free_pktio_entry(id);
@@ -34,8 +34,8 @@
#include <errno.h>
#include <sys/syscall.h>
-#include <odp_packet_socket.h>
#include <odp_packet_internal.h>
+#include <odp_packet_socket.h>
#include <odp_hints.h>
#include <helper/odp_eth.h>
@@ -760,7 +760,7 @@ static int mmap_store_hw_addr(pkt_sock_mmap_t * const pkt_sock,
* ODP_PACKET_SOCKET_MMAP:
*/
int setup_pkt_sock_mmap(pkt_sock_mmap_t * const pkt_sock, const char *netdev,
- odp_buffer_pool_t pool, int fanout)
+ odp_buffer_pool_t pool, socket_params_t *sock_params)
{
odp_packet_t pkt;
uint8_t *pkt_buf;
@@ -781,6 +781,7 @@ int setup_pkt_sock_mmap(pkt_sock_mmap_t * const pkt_sock, const char *netdev,
l2_hdr = ETHBUF_ALIGN(pkt_buf);
/* Store eth buffer offset for pkt buffers from this pool */
pkt_sock->frame_offset = (uintptr_t)l2_hdr - (uintptr_t)pkt_buf;
+ pkt_sock->frame_offset += sock_params->headroom;
odp_packet_free(pkt);
@@ -815,7 +816,7 @@ int setup_pkt_sock_mmap(pkt_sock_mmap_t * const pkt_sock, const char *netdev,
return -1;
}
- if (fanout) {
+ if (sock_params->fanout) {
ret = set_pkt_sock_fanout_mmap(pkt_sock, if_idx);
if (ret != 0)
return -1;