Adds linux-generic internal api's and modify internal structs to support
configuring packet pool to CoS.

Signed-off-by: Balasubramanian Manoharan <[email protected]>
---
 platform/linux-generic/include/odp_classification_datamodel.h | 1 +
 platform/linux-generic/include/odp_classification_internal.h  | 3 +++
 platform/linux-generic/include/odp_packet_internal.h          | 8 +++++++-
 platform/linux-generic/include/odp_packet_io_internal.h       | 4 ++++
 platform/linux-generic/include/odp_packet_socket.h            | 2 ++
 5 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/platform/linux-generic/include/odp_classification_datamodel.h 
b/platform/linux-generic/include/odp_classification_datamodel.h
index 4358fca..3569e9c 100644
--- a/platform/linux-generic/include/odp_classification_datamodel.h
+++ b/platform/linux-generic/include/odp_classification_datamodel.h
@@ -67,6 +67,7 @@ Class Of Service
 struct cos_s {
        queue_entry_t *queue;           /* Associated Queue */
        pool_entry_t *pool;             /* Associated Buffer pool */
+       odp_pool_t pool_id;             /* Associated pool handle */
        union pmr_u *pmr;               /* Chained PMR */
        union cos_u *linked_cos;        /* CoS linked with the PMR */
        uint32_t valid;                 /* validity Flag */
diff --git a/platform/linux-generic/include/odp_classification_internal.h 
b/platform/linux-generic/include/odp_classification_internal.h
index 5593280..7e46986 100644
--- a/platform/linux-generic/include/odp_classification_internal.h
+++ b/platform/linux-generic/include/odp_classification_internal.h
@@ -61,6 +61,9 @@ This function calls Classifier module internal functions for 
a given packet and
 enqueues the packet to specific Queue based on PMR and CoS selected.
 **/
 int packet_classifier(odp_pktio_t pktio, odp_packet_t pkt);
+
+int _odp_packet_classifier(pktio_entry_t *entry, odp_packet_t pkt);
+
 /**
 Packet IO classifier init
 
diff --git a/platform/linux-generic/include/odp_packet_internal.h 
b/platform/linux-generic/include/odp_packet_internal.h
index 6f1521c..12e9cca 100644
--- a/platform/linux-generic/include/odp_packet_internal.h
+++ b/platform/linux-generic/include/odp_packet_internal.h
@@ -28,6 +28,8 @@ extern "C" {
 #include <odp/crypto.h>
 #include <odp_crypto_internal.h>
 
+#define PACKET_JUMBO_LEN       (9 * 1024)
+
 /**
  * Packet input & protocol flags
  */
@@ -243,7 +245,7 @@ void packet_parse_l2(odp_packet_hdr_t *pkt_hdr);
 int packet_parse_full(odp_packet_hdr_t *pkt_hdr);
 
 /* Reset parser metadata for a new parse */
-void packet_parse_reset(odp_packet_t pkt);
+void packet_parse_reset(odp_packet_hdr_t *pkt_hdr);
 
 /* Convert a packet handle to a buffer handle */
 odp_buffer_t _odp_packet_to_buffer(odp_packet_t pkt);
@@ -251,6 +253,10 @@ odp_buffer_t _odp_packet_to_buffer(odp_packet_t pkt);
 /* Convert a buffer handle to a packet handle */
 odp_packet_t _odp_packet_from_buffer(odp_buffer_t buf);
 
+int _odp_parse_common(odp_packet_hdr_t *pkt_hdr, const uint8_t *parseptr);
+
+int _odp_cls_parse(odp_packet_hdr_t *pkt_hdr, const uint8_t *parseptr);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/platform/linux-generic/include/odp_packet_io_internal.h 
b/platform/linux-generic/include/odp_packet_io_internal.h
index a46c6fe..1f79f9c 100644
--- a/platform/linux-generic/include/odp_packet_io_internal.h
+++ b/platform/linux-generic/include/odp_packet_io_internal.h
@@ -86,6 +86,7 @@ struct pktio_entry {
        classifier_t cls;               /**< classifier linked with this pktio*/
        char name[PKTIO_NAME_LEN];      /**< name of pktio provided to
                                           pktio_open() */
+       odp_pktio_t id;
        odp_pktio_param_t param;
 };
 
@@ -118,6 +119,9 @@ typedef struct pktio_if_ops {
        int (*mac_get)(pktio_entry_t *pktio_entry, void *mac_addr);
 } pktio_if_ops_t;
 
+int _odp_packet_cls_enq(pktio_entry_t *pktio_entry, uint8_t *base,
+                       uint16_t buf_len, odp_packet_t *pkt_ret);
+
 extern void *pktio_entry_ptr[];
 
 static inline int pktio_to_id(odp_pktio_t pktio)
diff --git a/platform/linux-generic/include/odp_packet_socket.h 
b/platform/linux-generic/include/odp_packet_socket.h
index a5e0eb3..1eaafb7 100644
--- a/platform/linux-generic/include/odp_packet_socket.h
+++ b/platform/linux-generic/include/odp_packet_socket.h
@@ -44,6 +44,8 @@ typedef struct {
        int sockfd; /**< socket descriptor */
        odp_pool_t pool; /**< pool to alloc packets from */
        unsigned char if_mac[ETH_ALEN]; /**< IF eth mac addr */
+       uint8_t *cache_ptr[ODP_PACKET_SOCKET_MAX_BURST_RX];
+       odp_shm_t shm;
 } pkt_sock_t;
 
 /** packet mmap ring */
-- 
1.9.1

_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to