net/cxgbe: support to offload flows to HASH region
[dpdk.git] / drivers / net / cxgbe / cxgbe_filter.h
index 7558793..7c469c8 100644 (file)
@@ -86,6 +86,7 @@ struct ch_filter_specification {
         * matching that doesn't exist as a (value, mask) tuple.
         */
        uint32_t type:1;        /* 0 => IPv4, 1 => IPv6 */
+       uint32_t cap:1;         /* 0 => LE-TCAM, 1 => Hash */
 
        /*
         * Packet dispatch information.  Ingress packets which match the
@@ -140,7 +141,9 @@ struct filter_entry {
        u32 locked:1;               /* filter is administratively locked */
        u32 pending:1;              /* filter action is pending FW reply */
        struct filter_ctx *ctx;     /* caller's completion hook */
+       struct clip_entry *clipt;   /* CLIP Table entry for IPv6 */
        struct rte_eth_dev *dev;    /* Port's rte eth device */
+       void *private;              /* For use by apps using filter_entry */
 
        /* This will store the actual tid */
        u32 tid;
@@ -215,6 +218,13 @@ int writable_filter(struct filter_entry *f);
 int cxgbe_set_filter(struct rte_eth_dev *dev, unsigned int filter_id,
                     struct ch_filter_specification *fs,
                     struct filter_ctx *ctx);
+int cxgbe_del_filter(struct rte_eth_dev *dev, unsigned int filter_id,
+                    struct ch_filter_specification *fs,
+                    struct filter_ctx *ctx);
 int cxgbe_alloc_ftid(struct adapter *adap, unsigned int family);
+int init_hash_filter(struct adapter *adap);
+void hash_filter_rpl(struct adapter *adap, const struct cpl_act_open_rpl *rpl);
 int validate_filter(struct adapter *adap, struct ch_filter_specification *fs);
+int cxgbe_get_filter_count(struct adapter *adapter, unsigned int fidx,
+                          u64 *c, bool get_byte);
 #endif /* _CXGBE_FILTER_H_ */