net: add rte prefix to ether structures
[dpdk.git] / drivers / net / i40e / rte_pmd_i40e.h
index 7ca37b1..faac9e2 100644 (file)
@@ -14,7 +14,7 @@
  *
  */
 
-#include <rte_ethdev.h>
+#include <rte_ethdev_driver.h>
 
 /**
  * Response sent back to i40e driver from user app after callback
@@ -66,7 +66,7 @@ enum rte_pmd_i40e_package_info {
        RTE_PMD_I40E_PKG_INFO_PCTYPE_LIST,
        RTE_PMD_I40E_PKG_INFO_PTYPE_NUM,
        RTE_PMD_I40E_PKG_INFO_PTYPE_LIST,
-       RTE_PMD_I40E_PKG_INFO_MAX = 0xFFFFFFFF
+       RTE_PMD_I40E_PKG_INFO_MAX = (int)0xFFFFFFFF
 };
 
 /**
@@ -270,7 +270,7 @@ struct rte_pmd_i40e_pkt_template_action {
 struct rte_pmd_i40e_pkt_template_input {
        /** the pctype used for raw packet template */
        uint16_t pctype;
-       /** the buffer conatining raw packet template */
+       /** the buffer containing raw packet template */
        void *packet;
        /** the length of buffer with raw packet template */
        uint32_t length;
@@ -289,6 +289,23 @@ struct rte_pmd_i40e_pkt_template_conf {
        uint32_t soft_id;
 };
 
+enum rte_pmd_i40e_inset_type {
+       INSET_NONE = 0,
+       INSET_HASH,
+       INSET_FDIR,
+       INSET_FDIR_FLX,
+};
+
+struct  rte_pmd_i40e_inset_mask {
+       uint8_t field_idx;
+       uint16_t mask;
+};
+
+struct rte_pmd_i40e_inset {
+       uint64_t inset;
+       struct rte_pmd_i40e_inset_mask mask[2];
+};
+
 /**
  * Add or remove raw packet template filter to Flow Director.
  *
@@ -297,7 +314,7 @@ struct rte_pmd_i40e_pkt_template_conf {
  * @param conf
  *   Specifies configuration parameters of raw packet template filter.
  * @param add
- *   Speicifes an action to be taken - add or remove raw packet template filter.
+ *   Specifies an action to be taken - add or remove raw packet template filter.
  * @return
  *   - (0) if successful.
  *   - (-ENODEV) if *port* invalid.
@@ -436,7 +453,25 @@ int rte_pmd_i40e_set_vf_multicast_promisc(uint16_t port,
  *   - (-EINVAL) if *vf* or *mac_addr* is invalid.
  */
 int rte_pmd_i40e_set_vf_mac_addr(uint16_t port, uint16_t vf_id,
-                                struct ether_addr *mac_addr);
+                                struct rte_ether_addr *mac_addr);
+
+/**
+ * Remove the VF MAC address.
+ *
+ * @param port
+ *   The port identifier of the Ethernet device.
+ * @param vf_id
+ *   VF id.
+ * @param mac_addr
+ *   VF MAC address.
+ * @return
+ *   - (0) if successful.
+ *   - (-ENODEV) if *port* invalid.
+ *   - (-EINVAL) if *vf* or *mac_addr* is invalid.
+ */
+int
+rte_pmd_i40e_remove_vf_mac_addr(uint16_t port, uint16_t vf_id,
+       struct rte_ether_addr *mac_addr);
 
 /**
  * Enable/Disable vf vlan strip for all queues in a pool
@@ -819,7 +854,7 @@ int rte_pmd_i40e_ptype_mapping_replace(uint16_t port,
  *   - (-EINVAL) if *vf* or *mac_addr* is invalid.
  */
 int rte_pmd_i40e_add_vf_mac_addr(uint16_t port, uint16_t vf_id,
-                                struct ether_addr *mac_addr);
+                                struct rte_ether_addr *mac_addr);
 
 #define RTE_PMD_I40E_PCTYPE_MAX                64
 #define RTE_PMD_I40E_FLOW_TYPE_MAX     64
@@ -889,7 +924,7 @@ int rte_pmd_i40e_flow_type_mapping_reset(uint16_t port);
  *    -ENOTSUP: i40e not supported for this port.
  */
 int rte_pmd_i40e_query_vfid_by_mac(uint16_t port,
-                                       const struct ether_addr *vf_mac);
+                                       const struct rte_ether_addr *vf_mac);
 
 /**
  * Do RSS queue region configuration for that port as
@@ -905,4 +940,125 @@ int rte_pmd_i40e_query_vfid_by_mac(uint16_t port,
 int rte_pmd_i40e_rss_queue_region_conf(uint16_t port_id,
                        enum rte_pmd_i40e_queue_region_op op_type, void *arg);
 
+int rte_pmd_i40e_cfg_hash_inset(uint16_t port,
+                               uint64_t pctype, uint64_t inset);
+
+/**
+ * Get input set
+ *
+ * @param port
+ *    The port identifier of the Ethernet device.
+ * @param pctype
+ *    HW pctype.
+ * @param inset
+ *    Buffer for input set info.
+ * @param inset_type
+ *    Type of input set.
+ * @return
+ *   - (0) if successful.
+ *   - (-ENODEV) if *port* invalid.
+ *   - (-EINVAL) if bad parameter.
+ *   - (-ENOTSUP) if operation not supported.
+ */
+int rte_pmd_i40e_inset_get(uint16_t port, uint8_t pctype,
+                          struct rte_pmd_i40e_inset *inset,
+                          enum rte_pmd_i40e_inset_type inset_type);
+
+/**
+ * Set input set
+ *
+ * @param port
+ *    The port identifier of the Ethernet device.
+ * @param pctype
+ *    HW pctype.
+ * @param inset
+ *    Input set info.
+ * @param inset_type
+ *    Type of input set.
+ * @return
+ *   - (0) if successful.
+ *   - (-ENODEV) if *port* invalid.
+ *   - (-EINVAL) if bad parameter.
+ *   - (-ENOTSUP) if operation not supported.
+ */
+int rte_pmd_i40e_inset_set(uint16_t port, uint8_t pctype,
+                          struct rte_pmd_i40e_inset *inset,
+                          enum rte_pmd_i40e_inset_type inset_type);
+
+/**
+ * Get bit value for some field index
+ *
+ * @param inset
+ *    Input set value.
+ * @param field_idx
+ *    Field index for input set.
+ * @return
+ *   - (1) if set.
+ *   - (0) if cleared.
+ */
+static inline int
+rte_pmd_i40e_inset_field_get(uint64_t inset, uint8_t field_idx)
+{
+       uint8_t bit_idx;
+
+       if (field_idx > 63)
+               return 0;
+
+       bit_idx = 63 - field_idx;
+       if (inset & (1ULL << bit_idx))
+               return 1;
+
+       return 0;
+}
+
+/**
+ * Set bit value for some field index
+ *
+ * @param inset
+ *    Input set value.
+ * @param field_idx
+ *    Field index for input set.
+ * @return
+ *   - (-1) if failed.
+ *   - (0) if success.
+ */
+static inline int
+rte_pmd_i40e_inset_field_set(uint64_t *inset, uint8_t field_idx)
+{
+       uint8_t bit_idx;
+
+       if (field_idx > 63)
+               return -1;
+
+       bit_idx = 63 - field_idx;
+       *inset = *inset | (1ULL << bit_idx);
+
+       return 0;
+}
+
+/**
+ * Clear bit value for some field index
+ *
+ * @param inset
+ *    Input set value.
+ * @param field_idx
+ *    Field index for input set.
+ * @return
+ *   - (-1) if failed.
+ *   - (0) if success.
+ */
+static inline int
+rte_pmd_i40e_inset_field_clear(uint64_t *inset, uint8_t field_idx)
+{
+       uint8_t bit_idx;
+
+       if (field_idx > 63)
+               return -1;
+
+       bit_idx = 63 - field_idx;
+       *inset = *inset & ~(1ULL << bit_idx);
+
+       return 0;
+}
+
 #endif /* _PMD_I40E_H_ */