Merge branch 'mlx5-next' of git://git.kernel.org/pub/scm/linux/kernel/git/mellanox...
[sfrench/cifs-2.6.git] / drivers / net / ethernet / intel / ixgbevf / ixgbevf.h
index 56a1031dcc074deccaa65eb6e2eaac3800016175..e399e1c0c54ab178648632cbe187e50d7bd5f0f3 100644 (file)
@@ -14,6 +14,7 @@
 #include <net/xdp.h>
 
 #include "vf.h"
+#include "ipsec.h"
 
 #define IXGBE_MAX_TXD_PWR      14
 #define IXGBE_MAX_DATA_PER_TXD BIT(IXGBE_MAX_TXD_PWR)
@@ -163,6 +164,7 @@ struct ixgbevf_ring {
 #define IXGBE_TX_FLAGS_VLAN            BIT(1)
 #define IXGBE_TX_FLAGS_TSO             BIT(2)
 #define IXGBE_TX_FLAGS_IPV4            BIT(3)
+#define IXGBE_TX_FLAGS_IPSEC           BIT(4)
 #define IXGBE_TX_FLAGS_VLAN_MASK       0xffff0000
 #define IXGBE_TX_FLAGS_VLAN_PRIO_MASK  0x0000e000
 #define IXGBE_TX_FLAGS_VLAN_SHIFT      16
@@ -338,6 +340,7 @@ struct ixgbevf_adapter {
        struct ixgbevf_ring *tx_ring[MAX_TX_QUEUES]; /* One per active queue */
        u64 restart_queue;
        u32 tx_timeout_count;
+       u64 tx_ipsec;
 
        /* RX */
        int num_rx_queues;
@@ -348,6 +351,7 @@ struct ixgbevf_adapter {
        u64 alloc_rx_page_failed;
        u64 alloc_rx_buff_failed;
        u64 alloc_rx_page;
+       u64 rx_ipsec;
 
        struct msix_entry *msix_entries;
 
@@ -384,6 +388,10 @@ struct ixgbevf_adapter {
        u8 rss_indir_tbl[IXGBEVF_X550_VFRETA_SIZE];
        u32 flags;
 #define IXGBEVF_FLAGS_LEGACY_RX                BIT(1)
+
+#ifdef CONFIG_XFRM
+       struct ixgbevf_ipsec *ipsec;
+#endif /* CONFIG_XFRM */
 };
 
 enum ixbgevf_state_t {
@@ -451,6 +459,31 @@ int ethtool_ioctl(struct ifreq *ifr);
 
 extern void ixgbevf_write_eitr(struct ixgbevf_q_vector *q_vector);
 
+#ifdef CONFIG_XFRM_OFFLOAD
+void ixgbevf_init_ipsec_offload(struct ixgbevf_adapter *adapter);
+void ixgbevf_stop_ipsec_offload(struct ixgbevf_adapter *adapter);
+void ixgbevf_ipsec_restore(struct ixgbevf_adapter *adapter);
+void ixgbevf_ipsec_rx(struct ixgbevf_ring *rx_ring,
+                     union ixgbe_adv_rx_desc *rx_desc,
+                     struct sk_buff *skb);
+int ixgbevf_ipsec_tx(struct ixgbevf_ring *tx_ring,
+                    struct ixgbevf_tx_buffer *first,
+                    struct ixgbevf_ipsec_tx_data *itd);
+#else
+static inline void ixgbevf_init_ipsec_offload(struct ixgbevf_adapter *adapter)
+{ }
+static inline void ixgbevf_stop_ipsec_offload(struct ixgbevf_adapter *adapter)
+{ }
+static inline void ixgbevf_ipsec_restore(struct ixgbevf_adapter *adapter) { }
+static inline void ixgbevf_ipsec_rx(struct ixgbevf_ring *rx_ring,
+                                   union ixgbe_adv_rx_desc *rx_desc,
+                                   struct sk_buff *skb) { }
+static inline int ixgbevf_ipsec_tx(struct ixgbevf_ring *tx_ring,
+                                  struct ixgbevf_tx_buffer *first,
+                                  struct ixgbevf_ipsec_tx_data *itd)
+{ return 0; }
+#endif /* CONFIG_XFRM_OFFLOAD */
+
 void ixgbe_napi_add_all(struct ixgbevf_adapter *adapter);
 void ixgbe_napi_del_all(struct ixgbevf_adapter *adapter);