eal/x86: move header file for vector instructions
[dpdk.git] / lib / librte_lpm / rte_lpm.h
index d35565d..e318769 100644 (file)
@@ -46,7 +46,7 @@
 #include <rte_branch_prediction.h>
 #include <rte_memory.h>
 #include <rte_common.h>
-#include <rte_common_vect.h>
+#include <rte_vect.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -132,8 +132,6 @@ struct rte_lpm_rule_info {
 
 /** @internal LPM structure. */
 struct rte_lpm {
-       TAILQ_ENTRY(rte_lpm) next;      /**< Next in list. */
-
        /* LPM metadata. */
        char name[RTE_LPM_NAMESIZE];        /**< Name of the lpm. */
        int mem_location; /**< @deprecated @see RTE_LPM_HEAP and RTE_LPM_MEMZONE. */
@@ -165,7 +163,6 @@ struct rte_lpm {
  *   to an appropriate values. Possible rte_errno values include:
  *    - E_RTE_NO_CONFIG - function could not get pointer to rte_config structure
  *    - E_RTE_SECONDARY - function was called from a secondary process instance
- *    - E_RTE_NO_TAILQ - no tailq list could be got for the lpm object list
  *    - EINVAL - invalid parameter passed to function
  *    - ENOSPC - the maximum number of memzones has already been allocated
  *    - EEXIST - a memzone with the same name already exists
@@ -215,6 +212,25 @@ rte_lpm_free(struct rte_lpm *lpm);
 int
 rte_lpm_add(struct rte_lpm *lpm, uint32_t ip, uint8_t depth, uint8_t next_hop);
 
+/**
+ * Check if a rule is present in the LPM table,
+ * and provide its next hop if it is.
+ *
+ * @param lpm
+ *   LPM object handle
+ * @param ip
+ *   IP of the rule to be searched
+ * @param depth
+ *   Depth of the rule to searched
+ * @param next_hop
+ *   Next hop of the rule (valid only if it is found)
+ * @return
+ *   1 if the rule exists, 0 if it does not, a negative value on failure
+ */
+int
+rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
+uint8_t *next_hop);
+
 /**
  * Delete a rule from the LPM table.
  *
@@ -403,7 +419,7 @@ rte_lpm_lookupx4(const struct rte_lpm *lpm, __m128i ip, uint16_t hop[4],
        tbl[3] = *(const uint16_t *)&lpm->tbl24[idx >> 32];
 
        /* get 4 indexes for tbl8[]. */
-       i8.m = _mm_and_si128(ip, mask8);
+       i8.x = _mm_and_si128(ip, mask8);
 
        pt = (uint64_t)tbl[0] |
                (uint64_t)tbl[1] << 16 |