net/ixgbe/base: update X550 SFP identification
[dpdk.git] / drivers / net / cxgbe / cxgbe_filter.h
index 27421a4..83d647d 100644 (file)
@@ -77,6 +77,7 @@ struct ch_filter_tuple {
  * Filter specification
  */
 struct ch_filter_specification {
+       void *private;
        /* Administrative fields for filter. */
        uint32_t hitcnts:1;     /* count filter hits in TCB */
        uint32_t prio:1;        /* filter has priority over active/server */
@@ -98,6 +99,11 @@ struct ch_filter_specification {
        uint32_t dirsteer:1;    /* 0 => RSS, 1 => steer to iq */
        uint32_t iq:10;         /* ingress queue */
 
+       uint32_t eport:2;       /* egress port to switch packet out */
+       uint32_t newvlan:2;     /* rewrite VLAN Tag */
+       uint8_t dmac[ETHER_ADDR_LEN];   /* new destination MAC address */
+       uint16_t vlan;          /* VLAN Tag to insert */
+
        /* Filter rule value/mask pairs. */
        struct ch_filter_tuple val;
        struct ch_filter_tuple mask;
@@ -105,7 +111,14 @@ struct ch_filter_specification {
 
 enum {
        FILTER_PASS = 0,        /* default */
-       FILTER_DROP
+       FILTER_DROP,
+       FILTER_SWITCH
+};
+
+enum {
+       VLAN_REMOVE = 1,
+       VLAN_INSERT,
+       VLAN_REWRITE
 };
 
 enum filter_type {
@@ -141,6 +154,8 @@ 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 l2t_entry *l2t;      /* Layer Two Table entry for dmac */
        struct rte_eth_dev *dev;    /* Port's rte eth device */
        void *private;              /* For use by apps using filter_entry */
 
@@ -222,7 +237,10 @@ int cxgbe_del_filter(struct rte_eth_dev *dev, unsigned int filter_id,
                     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);
+void hash_del_filter_rpl(struct adapter *adap,
+                        const struct cpl_abort_rpl_rss *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);
+                          u64 *c, int hash, bool get_byte);
 #endif /* _CXGBE_FILTER_H_ */