@@ -43,8 +43,6 @@ typedef union pktio_entry_u pktio_entry_t;
struct pktio_entry {
const pktio_ops_module_t *ops; /**< Implementation specific methods */
- uint8_t ops_data[ODP_PKTIO_ODPS_DATA_MAX_SIZE]; /**< IO operation
- specific data */
/* These two locks together lock the whole pktio device */
odp_ticketlock_t rxl; /**< RX ticketlock */
odp_ticketlock_t txl; /**< TX ticketlock */
@@ -97,6 +95,9 @@ struct pktio_entry {
odp_queue_t queue;
odp_pktout_queue_t pktout;
} out_queue[PKTIO_MAX_QUEUES];
+
+ uint8_t ops_data[ODP_PKTIO_ODPS_DATA_MIN_SIZE]; /**< IO operation
+ specific data */
};
union pktio_entry_u {
@@ -104,6 +105,8 @@ union pktio_entry_u {
uint8_t pad[ROUNDUP_CACHE_LINE(sizeof(struct pktio_entry))];
};
+#define ODP_PKTIO_ODPS_DATA_MAX_SIZE (sizeof(pktio_entry_t) - offsetof(struct pktio_entry, ops_data))
+
typedef struct {
odp_spinlock_t lock;
pktio_entry_t entries[ODP_CONFIG_PKTIO_ENTRIES];
@@ -85,8 +85,8 @@ typedef ODP_MODULE_CLASS(pktio_ops) {
odp_api_proto(pktio_ops, print) print;
} pktio_ops_module_t;
-/* Maximum size of pktio specific ops data.*/
-#define ODP_PKTIO_ODPS_DATA_MAX_SIZE 80000
+/* Minimum size of pktio specific ops data.*/
+#define ODP_PKTIO_ODPS_DATA_MIN_SIZE 80000
/* Extract pktio ops data from pktio entry structure */
#define odp_ops_data(_p, _mod) \