net/octeontx2: add security in Tx
authorArchana Muniganti <marchana@marvell.com>
Tue, 4 Feb 2020 11:17:23 +0000 (16:47 +0530)
committerAkhil Goyal <akhil.goyal@nxp.com>
Wed, 5 Feb 2020 14:20:51 +0000 (15:20 +0100)
Added new flag for SECURITY in compiler optimized Tx fastpath
framework. With this, compiler autogenerates functions which
have security enabled.

Signed-off-by: Ankur Dwivedi <adwivedi@marvell.com>
Signed-off-by: Anoob Joseph <anoobj@marvell.com>
Signed-off-by: Archana Muniganti <marchana@marvell.com>
Signed-off-by: Tejasree Kondoj <ktejasree@marvell.com>
Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
drivers/event/octeontx2/otx2_evdev.c
drivers/event/octeontx2/otx2_evdev.h
drivers/event/octeontx2/otx2_worker.c
drivers/event/octeontx2/otx2_worker_dual.c
drivers/net/octeontx2/otx2_ethdev.c
drivers/net/octeontx2/otx2_tx.c
drivers/net/octeontx2/otx2_tx.h

index f6c641a..d20213d 100644 (file)
@@ -177,35 +177,37 @@ SSO_RX_ADPTR_ENQ_FASTPATH_FUNC
        };
 
        /* Tx modes */
-       const event_tx_adapter_enqueue ssogws_tx_adptr_enq[2][2][2][2][2][2] = {
-#define T(name, f5, f4, f3, f2, f1, f0, sz, flags)                     \
-               [f5][f4][f3][f2][f1][f0] =  otx2_ssogws_tx_adptr_enq_ ## name,
+       const event_tx_adapter_enqueue
+               ssogws_tx_adptr_enq[2][2][2][2][2][2][2] = {
+#define T(name, f6, f5, f4, f3, f2, f1, f0, sz, flags)                 \
+               [f6][f5][f4][f3][f2][f1][f0] =                          \
+                       otx2_ssogws_tx_adptr_enq_ ## name,
 SSO_TX_ADPTR_ENQ_FASTPATH_FUNC
 #undef T
        };
 
        const event_tx_adapter_enqueue
-               ssogws_tx_adptr_enq_seg[2][2][2][2][2][2] = {
-#define T(name, f5, f4, f3, f2, f1, f0, sz, flags)                     \
-               [f5][f4][f3][f2][f1][f0] =                              \
+               ssogws_tx_adptr_enq_seg[2][2][2][2][2][2][2] = {
+#define T(name, f6, f5, f4, f3, f2, f1, f0, sz, flags)                 \
+               [f6][f5][f4][f3][f2][f1][f0] =                          \
                        otx2_ssogws_tx_adptr_enq_seg_ ## name,
 SSO_TX_ADPTR_ENQ_FASTPATH_FUNC
 #undef T
        };
 
        const event_tx_adapter_enqueue
-               ssogws_dual_tx_adptr_enq[2][2][2][2][2][2] = {
-#define T(name, f5, f4, f3, f2, f1, f0, sz, flags)                     \
-               [f5][f4][f3][f2][f1][f0] =                              \
+               ssogws_dual_tx_adptr_enq[2][2][2][2][2][2][2] = {
+#define T(name, f6, f5, f4, f3, f2, f1, f0, sz, flags)                 \
+               [f6][f5][f4][f3][f2][f1][f0] =                          \
                        otx2_ssogws_dual_tx_adptr_enq_ ## name,
 SSO_TX_ADPTR_ENQ_FASTPATH_FUNC
 #undef T
        };
 
        const event_tx_adapter_enqueue
-               ssogws_dual_tx_adptr_enq_seg[2][2][2][2][2][2] = {
-#define T(name, f5, f4, f3, f2, f1, f0, sz, flags)                     \
-               [f5][f4][f3][f2][f1][f0] =                              \
+               ssogws_dual_tx_adptr_enq_seg[2][2][2][2][2][2][2] = {
+#define T(name, f6, f5, f4, f3, f2, f1, f0, sz, flags)                 \
+               [f6][f5][f4][f3][f2][f1][f0] =                          \
                        otx2_ssogws_dual_tx_adptr_enq_seg_ ## name,
 SSO_TX_ADPTR_ENQ_FASTPATH_FUNC
 #undef T
@@ -290,8 +292,9 @@ SSO_TX_ADPTR_ENQ_FASTPATH_FUNC
        }
 
        if (dev->tx_offloads & NIX_TX_MULTI_SEG_F) {
-               /* [TSMP] [MBUF_NOFF] [VLAN] [OL3_L4_CSUM] [L3_L4_CSUM] */
+               /* [SEC] [TSMP] [MBUF_NOFF] [VLAN] [OL3_L4_CSUM] [L3_L4_CSUM] */
                event_dev->txa_enqueue = ssogws_tx_adptr_enq_seg
+                       [!!(dev->tx_offloads & NIX_TX_OFFLOAD_SECURITY_F)]
                        [!!(dev->tx_offloads & NIX_TX_OFFLOAD_TSO_F)]
                        [!!(dev->tx_offloads & NIX_TX_OFFLOAD_TSTAMP_F)]
                        [!!(dev->tx_offloads & NIX_TX_OFFLOAD_MBUF_NOFF_F)]
@@ -300,6 +303,7 @@ SSO_TX_ADPTR_ENQ_FASTPATH_FUNC
                        [!!(dev->tx_offloads & NIX_TX_OFFLOAD_L3_L4_CSUM_F)];
        } else {
                event_dev->txa_enqueue = ssogws_tx_adptr_enq
+                       [!!(dev->tx_offloads & NIX_TX_OFFLOAD_SECURITY_F)]
                        [!!(dev->tx_offloads & NIX_TX_OFFLOAD_TSO_F)]
                        [!!(dev->tx_offloads & NIX_TX_OFFLOAD_TSTAMP_F)]
                        [!!(dev->tx_offloads & NIX_TX_OFFLOAD_MBUF_NOFF_F)]
@@ -440,8 +444,10 @@ SSO_TX_ADPTR_ENQ_FASTPATH_FUNC
                }
 
                if (dev->tx_offloads & NIX_TX_MULTI_SEG_F) {
-               /* [TSMP] [MBUF_NOFF] [VLAN] [OL3_L4_CSUM] [L3_L4_CSUM] */
+               /* [SEC] [TSMP] [MBUF_NOFF] [VLAN] [OL3_L4_CSUM] [L3_L4_CSUM] */
                        event_dev->txa_enqueue = ssogws_dual_tx_adptr_enq_seg
+                               [!!(dev->tx_offloads &
+                                               NIX_TX_OFFLOAD_SECURITY_F)]
                                [!!(dev->tx_offloads & NIX_TX_OFFLOAD_TSO_F)]
                                [!!(dev->tx_offloads & NIX_TX_OFFLOAD_TSTAMP_F)]
                                [!!(dev->tx_offloads &
@@ -454,6 +460,8 @@ SSO_TX_ADPTR_ENQ_FASTPATH_FUNC
                                                NIX_TX_OFFLOAD_L3_L4_CSUM_F)];
                } else {
                        event_dev->txa_enqueue = ssogws_dual_tx_adptr_enq
+                               [!!(dev->tx_offloads &
+                                               NIX_TX_OFFLOAD_SECURITY_F)]
                                [!!(dev->tx_offloads & NIX_TX_OFFLOAD_TSO_F)]
                                [!!(dev->tx_offloads & NIX_TX_OFFLOAD_TSTAMP_F)]
                                [!!(dev->tx_offloads &
index 5a44fd3..3b47782 100644 (file)
@@ -335,7 +335,7 @@ uint16_t otx2_ssogws_dual_deq_seg_timeout_burst_ ##name(void *port,        \
 SSO_RX_ADPTR_ENQ_FASTPATH_FUNC
 #undef R
 
-#define T(name, f5, f4, f3, f2, f1, f0, sz, flags)                          \
+#define T(name, f6, f5, f4, f3, f2, f1, f0, sz, flags)                      \
 uint16_t otx2_ssogws_tx_adptr_enq_ ## name(void *port, struct rte_event ev[],\
                                           uint16_t nb_events);              \
 uint16_t otx2_ssogws_tx_adptr_enq_seg_ ## name(void *port,                  \
index 12445d9..8bec59e 100644 (file)
@@ -267,7 +267,7 @@ otx2_ssogws_enq_fwd_burst(void *port, const struct rte_event ev[],
        return 1;
 }
 
-#define T(name, f5, f4, f3, f2, f1, f0, sz, flags)                     \
+#define T(name, f6, f5, f4, f3, f2, f1, f0, sz, flags)                 \
 uint16_t __hot                                                         \
 otx2_ssogws_tx_adptr_enq_ ## name(void *port, struct rte_event ev[],   \
                                  uint16_t nb_events)                   \
@@ -281,7 +281,7 @@ otx2_ssogws_tx_adptr_enq_ ## name(void *port, struct rte_event ev[],        \
 SSO_TX_ADPTR_ENQ_FASTPATH_FUNC
 #undef T
 
-#define T(name, f5, f4, f3, f2, f1, f0, sz, flags)                     \
+#define T(name, f6, f5, f4, f3, f2, f1, f0, sz, flags)                 \
 uint16_t __hot                                                         \
 otx2_ssogws_tx_adptr_enq_seg_ ## name(void *port, struct rte_event ev[],\
                                      uint16_t nb_events)               \
index 22a4889..3cba09c 100644 (file)
@@ -307,7 +307,7 @@ otx2_ssogws_dual_deq_seg_timeout_burst_ ##name(void *port,          \
 SSO_RX_ADPTR_ENQ_FASTPATH_FUNC
 #undef R
 
-#define T(name, f5, f4, f3, f2, f1, f0, sz, flags)                     \
+#define T(name, f6, f5, f4, f3, f2, f1, f0, sz, flags)                 \
 uint16_t __hot                                                         \
 otx2_ssogws_dual_tx_adptr_enq_ ## name(void *port,                     \
                                       struct rte_event ev[],           \
@@ -324,7 +324,7 @@ otx2_ssogws_dual_tx_adptr_enq_ ## name(void *port,                  \
 SSO_TX_ADPTR_ENQ_FASTPATH_FUNC
 #undef T
 
-#define T(name, f5, f4, f3, f2, f1, f0, sz, flags)                     \
+#define T(name, f6, f5, f4, f3, f2, f1, f0, sz, flags)                 \
 uint16_t __hot                                                         \
 otx2_ssogws_dual_tx_adptr_enq_seg_ ## name(void *port,                 \
                                           struct rte_event ev[],       \
index 48d599f..e18435d 100644 (file)
@@ -706,6 +706,9 @@ nix_tx_offload_flags(struct rte_eth_dev *eth_dev)
                          NIX_TX_OFFLOAD_OL3_OL4_CSUM_F |
                          NIX_TX_OFFLOAD_L3_L4_CSUM_F);
 
+       if (conf & DEV_TX_OFFLOAD_SECURITY)
+               flags |= NIX_TX_OFFLOAD_SECURITY_F;
+
        if ((dev->rx_offloads & DEV_RX_OFFLOAD_TIMESTAMP))
                flags |= NIX_TX_OFFLOAD_TSTAMP_F;
 
index 5011460..4f2036c 100644 (file)
@@ -946,7 +946,7 @@ nix_xmit_pkts_vector(void *tx_queue, struct rte_mbuf **tx_pkts,
 }
 #endif
 
-#define T(name, f5, f4, f3, f2, f1, f0, sz, flags)                     \
+#define T(name, f6, f5, f4, f3, f2, f1, f0, sz, flags)                 \
 static uint16_t __rte_noinline __hot                                   \
 otx2_nix_xmit_pkts_ ## name(void *tx_queue,                            \
                        struct rte_mbuf **tx_pkts, uint16_t pkts)       \
@@ -963,7 +963,7 @@ otx2_nix_xmit_pkts_ ## name(void *tx_queue,                         \
 NIX_TX_FASTPATH_MODES
 #undef T
 
-#define T(name, f5, f4, f3, f2, f1, f0, sz, flags)                     \
+#define T(name, f6, f5, f4, f3, f2, f1, f0, sz, flags)                 \
 static uint16_t __rte_noinline __hot                                   \
 otx2_nix_xmit_pkts_mseg_ ## name(void *tx_queue,                       \
                        struct rte_mbuf **tx_pkts, uint16_t pkts)       \
@@ -981,7 +981,7 @@ otx2_nix_xmit_pkts_mseg_ ## name(void *tx_queue,                    \
 NIX_TX_FASTPATH_MODES
 #undef T
 
-#define T(name, f5, f4, f3, f2, f1, f0, sz, flags)                     \
+#define T(name, f6, f5, f4, f3, f2, f1, f0, sz, flags)                 \
 static uint16_t __rte_noinline __hot                                   \
 otx2_nix_xmit_pkts_vec_ ## name(void *tx_queue,                                \
                        struct rte_mbuf **tx_pkts, uint16_t pkts)       \
@@ -1001,12 +1001,13 @@ NIX_TX_FASTPATH_MODES
 
 static inline void
 pick_tx_func(struct rte_eth_dev *eth_dev,
-            const eth_tx_burst_t tx_burst[2][2][2][2][2][2])
+            const eth_tx_burst_t tx_burst[2][2][2][2][2][2][2])
 {
        struct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev);
 
-       /* [TSTMP] [NOFF] [VLAN] [OL3_OL4_CSUM] [IL3_IL4_CSUM] */
+       /* [SEC] [TSTMP] [NOFF] [VLAN] [OL3_OL4_CSUM] [IL3_IL4_CSUM] */
        eth_dev->tx_pkt_burst = tx_burst
+               [!!(dev->tx_offload_flags & NIX_TX_OFFLOAD_SECURITY_F)]
                [!!(dev->tx_offload_flags & NIX_TX_OFFLOAD_TSO_F)]
                [!!(dev->tx_offload_flags & NIX_TX_OFFLOAD_TSTAMP_F)]
                [!!(dev->tx_offload_flags & NIX_TX_OFFLOAD_MBUF_NOFF_F)]
@@ -1020,25 +1021,25 @@ otx2_eth_set_tx_function(struct rte_eth_dev *eth_dev)
 {
        struct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev);
 
-       const eth_tx_burst_t nix_eth_tx_burst[2][2][2][2][2][2] = {
-#define T(name, f5, f4, f3, f2, f1, f0, sz, flags)                     \
-       [f5][f4][f3][f2][f1][f0] =  otx2_nix_xmit_pkts_ ## name,
+       const eth_tx_burst_t nix_eth_tx_burst[2][2][2][2][2][2][2] = {
+#define T(name, f6, f5, f4, f3, f2, f1, f0, sz, flags)                 \
+       [f6][f5][f4][f3][f2][f1][f0] =  otx2_nix_xmit_pkts_ ## name,
 
 NIX_TX_FASTPATH_MODES
 #undef T
        };
 
-       const eth_tx_burst_t nix_eth_tx_burst_mseg[2][2][2][2][2][2] = {
-#define T(name, f5, f4, f3, f2, f1, f0, sz, flags)                     \
-       [f5][f4][f3][f2][f1][f0] =  otx2_nix_xmit_pkts_mseg_ ## name,
+       const eth_tx_burst_t nix_eth_tx_burst_mseg[2][2][2][2][2][2][2] = {
+#define T(name, f6, f5, f4, f3, f2, f1, f0, sz, flags)                 \
+       [f6][f5][f4][f3][f2][f1][f0] =  otx2_nix_xmit_pkts_mseg_ ## name,
 
 NIX_TX_FASTPATH_MODES
 #undef T
        };
 
-       const eth_tx_burst_t nix_eth_tx_vec_burst[2][2][2][2][2][2] = {
-#define T(name, f5, f4, f3, f2, f1, f0, sz, flags)                     \
-       [f5][f4][f3][f2][f1][f0] =  otx2_nix_xmit_pkts_vec_ ## name,
+       const eth_tx_burst_t nix_eth_tx_vec_burst[2][2][2][2][2][2][2] = {
+#define T(name, f6, f5, f4, f3, f2, f1, f0, sz, flags)                 \
+       [f6][f5][f4][f3][f2][f1][f0] =  otx2_nix_xmit_pkts_vec_ ## name,
 
 NIX_TX_FASTPATH_MODES
 #undef T
index 04e859b..3c43170 100644 (file)
@@ -12,6 +12,7 @@
 #define NIX_TX_OFFLOAD_MBUF_NOFF_F     BIT(3)
 #define NIX_TX_OFFLOAD_TSTAMP_F                BIT(4)
 #define NIX_TX_OFFLOAD_TSO_F           BIT(5)
+#define NIX_TX_OFFLOAD_SECURITY_F      BIT(6)
 
 /* Flags to control xmit_prepare function.
  * Defining it from backwards to denote its been
@@ -470,136 +471,274 @@ otx2_nix_xmit_mseg_one(uint64_t *cmd, void *lmt_addr,
 #define NOFF_F       NIX_TX_OFFLOAD_MBUF_NOFF_F
 #define TSP_F        NIX_TX_OFFLOAD_TSTAMP_F
 #define TSO_F        NIX_TX_OFFLOAD_TSO_F
+#define TX_SEC_F     NIX_TX_OFFLOAD_SECURITY_F
 
-/* [TSO] [TSTMP] [NOFF] [VLAN] [OL3OL4CSUM] [L3L4CSUM] */
+/* [SEC] [TSO] [TSTMP] [NOFF] [VLAN] [OL3OL4CSUM] [L3L4CSUM] */
 #define NIX_TX_FASTPATH_MODES                                          \
-T(no_offload,                          0, 0, 0, 0, 0, 0,       4,      \
+T(no_offload,                          0, 0, 0, 0, 0, 0, 0,    4,      \
                NIX_TX_OFFLOAD_NONE)                                    \
-T(l3l4csum,                            0, 0, 0, 0, 0, 1,       4,      \
+T(l3l4csum,                            0, 0, 0, 0, 0, 0, 1,    4,      \
                L3L4CSUM_F)                                             \
-T(ol3ol4csum,                          0, 0, 0, 0, 1, 0,       4,      \
+T(ol3ol4csum,                          0, 0, 0, 0, 0, 1, 0,    4,      \
                OL3OL4CSUM_F)                                           \
-T(ol3ol4csum_l3l4csum,                 0, 0, 0, 0, 1, 1,       4,      \
+T(ol3ol4csum_l3l4csum,                 0, 0, 0, 0, 0, 1, 1,    4,      \
                OL3OL4CSUM_F | L3L4CSUM_F)                              \
-T(vlan,                                        0, 0, 0, 1, 0, 0,       6,      \
+T(vlan,                                        0, 0, 0, 0, 1, 0, 0,    6,      \
                VLAN_F)                                                 \
-T(vlan_l3l4csum,                       0, 0, 0, 1, 0, 1,       6,      \
+T(vlan_l3l4csum,                       0, 0, 0, 0, 1, 0, 1,    6,      \
                VLAN_F | L3L4CSUM_F)                                    \
-T(vlan_ol3ol4csum,                     0, 0, 0, 1, 1, 0,       6,      \
+T(vlan_ol3ol4csum,                     0, 0, 0, 0, 1, 1, 0,    6,      \
                VLAN_F | OL3OL4CSUM_F)                                  \
-T(vlan_ol3ol4csum_l3l4csum,            0, 0, 0, 1, 1, 1,       6,      \
+T(vlan_ol3ol4csum_l3l4csum,            0, 0, 0, 0, 1, 1, 1,    6,      \
                VLAN_F | OL3OL4CSUM_F | L3L4CSUM_F)                     \
-T(noff,                                        0, 0, 1, 0, 0, 0,       4,      \
+T(noff,                                        0, 0, 0, 1, 0, 0, 0,    4,      \
                NOFF_F)                                                 \
-T(noff_l3l4csum,                       0, 0, 1, 0, 0, 1,       4,      \
+T(noff_l3l4csum,                       0, 0, 0, 1, 0, 0, 1,    4,      \
                NOFF_F | L3L4CSUM_F)                                    \
-T(noff_ol3ol4csum,                     0, 0, 1, 0, 1, 0,       4,      \
+T(noff_ol3ol4csum,                     0, 0, 0, 1, 0, 1, 0,    4,      \
                NOFF_F | OL3OL4CSUM_F)                                  \
-T(noff_ol3ol4csum_l3l4csum,            0, 0, 1, 0, 1, 1,       4,      \
+T(noff_ol3ol4csum_l3l4csum,            0, 0, 0, 1, 0, 1, 1,    4,      \
                NOFF_F | OL3OL4CSUM_F | L3L4CSUM_F)                     \
-T(noff_vlan,                           0, 0, 1, 1, 0, 0,       6,      \
+T(noff_vlan,                           0, 0, 0, 1, 1, 0, 0,    6,      \
                NOFF_F | VLAN_F)                                        \
-T(noff_vlan_l3l4csum,                  0, 0, 1, 1, 0, 1,       6,      \
+T(noff_vlan_l3l4csum,                  0, 0, 0, 1, 1, 0, 1,    6,      \
                NOFF_F | VLAN_F | L3L4CSUM_F)                           \
-T(noff_vlan_ol3ol4csum,                        0, 0, 1, 1, 1, 0,       6,      \
+T(noff_vlan_ol3ol4csum,                        0, 0, 0, 1, 1, 1, 0,    6,      \
                NOFF_F | VLAN_F | OL3OL4CSUM_F)                         \
-T(noff_vlan_ol3ol4csum_l3l4csum,       0, 0, 1, 1, 1, 1,       6,      \
+T(noff_vlan_ol3ol4csum_l3l4csum,       0, 0, 0, 1, 1, 1, 1,    6,      \
                NOFF_F | VLAN_F | OL3OL4CSUM_F | L3L4CSUM_F)            \
-T(ts,                                  0, 1, 0, 0, 0, 0,       8,      \
+T(ts,                                  0, 0, 1, 0, 0, 0, 0,    8,      \
                TSP_F)                                                  \
-T(ts_l3l4csum,                         0, 1, 0, 0, 0, 1,       8,      \
+T(ts_l3l4csum,                         0, 0, 1, 0, 0, 0, 1,    8,      \
                TSP_F | L3L4CSUM_F)                                     \
-T(ts_ol3ol4csum,                       0, 1, 0, 0, 1, 0,       8,      \
+T(ts_ol3ol4csum,                       0, 0, 1, 0, 0, 1, 0,    8,      \
                TSP_F | OL3OL4CSUM_F)                                   \
-T(ts_ol3ol4csum_l3l4csum,              0, 1, 0, 0, 1, 1,       8,      \
+T(ts_ol3ol4csum_l3l4csum,              0, 0, 1, 0, 0, 1, 1,    8,      \
                TSP_F | OL3OL4CSUM_F | L3L4CSUM_F)                      \
-T(ts_vlan,                             0, 1, 0, 1, 0, 0,       8,      \
+T(ts_vlan,                             0, 0, 1, 0, 1, 0, 0,    8,      \
                TSP_F | VLAN_F)                                         \
-T(ts_vlan_l3l4csum,                    0, 1, 0, 1, 0, 1,       8,      \
+T(ts_vlan_l3l4csum,                    0, 0, 1, 0, 1, 0, 1,    8,      \
                TSP_F | VLAN_F | L3L4CSUM_F)                            \
-T(ts_vlan_ol3ol4csum,                  0, 1, 0, 1, 1, 0,       8,      \
+T(ts_vlan_ol3ol4csum,                  0, 0, 1, 0, 1, 1, 0,    8,      \
                TSP_F | VLAN_F | OL3OL4CSUM_F)                          \
-T(ts_vlan_ol3ol4csum_l3l4csum,         0, 1, 0, 1, 1, 1,       8,      \
+T(ts_vlan_ol3ol4csum_l3l4csum,         0, 0, 1, 0, 1, 1, 1,    8,      \
                TSP_F | VLAN_F | OL3OL4CSUM_F | L3L4CSUM_F)             \
-T(ts_noff,                             0, 1, 1, 0, 0, 0,       8,      \
+T(ts_noff,                             0, 0, 1, 1, 0, 0, 0,    8,      \
                TSP_F | NOFF_F)                                         \
-T(ts_noff_l3l4csum,                    0, 1, 1, 0, 0, 1,       8,      \
+T(ts_noff_l3l4csum,                    0, 0, 1, 1, 0, 0, 1,    8,      \
                TSP_F | NOFF_F | L3L4CSUM_F)                            \
-T(ts_noff_ol3ol4csum,                  0, 1, 1, 0, 1, 0,       8,      \
+T(ts_noff_ol3ol4csum,                  0, 0, 1, 1, 0, 1, 0,    8,      \
                TSP_F | NOFF_F | OL3OL4CSUM_F)                          \
-T(ts_noff_ol3ol4csum_l3l4csum,         0, 1, 1, 0, 1, 1,       8,      \
+T(ts_noff_ol3ol4csum_l3l4csum,         0, 0, 1, 1, 0, 1, 1,    8,      \
                TSP_F | NOFF_F | OL3OL4CSUM_F | L3L4CSUM_F)             \
-T(ts_noff_vlan,                                0, 1, 1, 1, 0, 0,       8,      \
+T(ts_noff_vlan,                                0, 0, 1, 1, 1, 0, 0,    8,      \
                TSP_F | NOFF_F | VLAN_F)                                \
-T(ts_noff_vlan_l3l4csum,               0, 1, 1, 1, 0, 1,       8,      \
+T(ts_noff_vlan_l3l4csum,               0, 0, 1, 1, 1, 0, 1,    8,      \
                TSP_F | NOFF_F | VLAN_F | L3L4CSUM_F)                   \
-T(ts_noff_vlan_ol3ol4csum,             0, 1, 1, 1, 1, 0,       8,      \
+T(ts_noff_vlan_ol3ol4csum,             0, 0, 1, 1, 1, 1, 0,    8,      \
                TSP_F | NOFF_F | VLAN_F | OL3OL4CSUM_F)                 \
-T(ts_noff_vlan_ol3ol4csum_l3l4csum,    0, 1, 1, 1, 1, 1,       8,      \
+T(ts_noff_vlan_ol3ol4csum_l3l4csum,    0, 0, 1, 1, 1, 1, 1,    8,      \
                TSP_F | NOFF_F | VLAN_F | OL3OL4CSUM_F | L3L4CSUM_F)    \
                                                                        \
-T(tso,                                 1, 0, 0, 0, 0, 0,       6,      \
+T(tso,                                 0, 1, 0, 0, 0, 0, 0,    6,      \
                TSO_F)                                                  \
-T(tso_l3l4csum,                                1, 0, 0, 0, 0, 1,       6,      \
+T(tso_l3l4csum,                                0, 1, 0, 0, 0, 0, 1,    6,      \
                TSO_F | L3L4CSUM_F)                                     \
-T(tso_ol3ol4csum,                      1, 0, 0, 0, 1, 0,       6,      \
+T(tso_ol3ol4csum,                      0, 1, 0, 0, 0, 1, 0,    6,      \
                TSO_F | OL3OL4CSUM_F)                                   \
-T(tso_ol3ol4csum_l3l4csum,             1, 0, 0, 0, 1, 1,       6,      \
+T(tso_ol3ol4csum_l3l4csum,             0, 1, 0, 0, 0, 1, 1,    6,      \
                TSO_F | OL3OL4CSUM_F | L3L4CSUM_F)                      \
-T(tso_vlan,                            1, 0, 0, 1, 0, 0,       6,      \
+T(tso_vlan,                            0, 1, 0, 0, 1, 0, 0,    6,      \
                TSO_F | VLAN_F)                                         \
-T(tso_vlan_l3l4csum,                   1, 0, 0, 1, 0, 1,       6,      \
+T(tso_vlan_l3l4csum,                   0, 1, 0, 0, 1, 0, 1,    6,      \
                TSO_F | VLAN_F | L3L4CSUM_F)                            \
-T(tso_vlan_ol3ol4csum,                 1, 0, 0, 1, 1, 0,       6,      \
+T(tso_vlan_ol3ol4csum,                 0, 1, 0, 0, 1, 1, 0,    6,      \
                TSO_F | VLAN_F | OL3OL4CSUM_F)                          \
-T(tso_vlan_ol3ol4csum_l3l4csum,                1, 0, 0, 1, 1, 1,       6,      \
+T(tso_vlan_ol3ol4csum_l3l4csum,                0, 1, 0, 0, 1, 1, 1,    6,      \
                TSO_F | VLAN_F | OL3OL4CSUM_F | L3L4CSUM_F)             \
-T(tso_noff,                            1, 0, 1, 0, 0, 0,       6,      \
+T(tso_noff,                            0, 1, 0, 1, 0, 0, 0,    6,      \
                TSO_F | NOFF_F)                                         \
-T(tso_noff_l3l4csum,                   1, 0, 1, 0, 0, 1,       6,      \
+T(tso_noff_l3l4csum,                   0, 1, 0, 1, 0, 0, 1,    6,      \
                TSO_F | NOFF_F | L3L4CSUM_F)                            \
-T(tso_noff_ol3ol4csum,                 1, 0, 1, 0, 1, 0,       6,      \
+T(tso_noff_ol3ol4csum,                 0, 1, 0, 1, 0, 1, 0,    6,      \
                TSO_F | NOFF_F | OL3OL4CSUM_F)                          \
-T(tso_noff_ol3ol4csum_l3l4csum,                1, 0, 1, 0, 1, 1,       6,      \
+T(tso_noff_ol3ol4csum_l3l4csum,                0, 1, 0, 1, 0, 1, 1,    6,      \
                TSO_F | NOFF_F | OL3OL4CSUM_F | L3L4CSUM_F)             \
-T(tso_noff_vlan,                       1, 0, 1, 1, 0, 0,       6,      \
+T(tso_noff_vlan,                       0, 1, 0, 1, 1, 0, 0,    6,      \
                TSO_F | NOFF_F | VLAN_F)                                \
-T(tso_noff_vlan_l3l4csum,              1, 0, 1, 1, 0, 1,       6,      \
+T(tso_noff_vlan_l3l4csum,              0, 1, 0, 1, 1, 0, 1,    6,      \
                TSO_F | NOFF_F | VLAN_F | L3L4CSUM_F)                   \
-T(tso_noff_vlan_ol3ol4csum,            1, 0, 1, 1, 1, 0,       6,      \
+T(tso_noff_vlan_ol3ol4csum,            0, 1, 0, 1, 1, 1, 0,    6,      \
                TSO_F | NOFF_F | VLAN_F | OL3OL4CSUM_F)                 \
-T(tso_noff_vlan_ol3ol4csum_l3l4csum,   1, 0, 1, 1, 1, 1,       6,      \
+T(tso_noff_vlan_ol3ol4csum_l3l4csum,   0, 1, 0, 1, 1, 1, 1,    6,      \
                TSO_F | NOFF_F | VLAN_F | OL3OL4CSUM_F | L3L4CSUM_F)    \
-T(tso_ts,                              1, 1, 0, 0, 0, 0,       8,      \
+T(tso_ts,                              0, 1, 1, 0, 0, 0, 0,    8,      \
                TSO_F | TSP_F)                                          \
-T(tso_ts_l3l4csum,                     1, 1, 0, 0, 0, 1,       8,      \
+T(tso_ts_l3l4csum,                     0, 1, 1, 0, 0, 0, 1,    8,      \
                TSO_F | TSP_F | L3L4CSUM_F)                             \
-T(tso_ts_ol3ol4csum,                   1, 1, 0, 0, 1, 0,       8,      \
+T(tso_ts_ol3ol4csum,                   0, 1, 1, 0, 0, 1, 0,    8,      \
                TSO_F | TSP_F | OL3OL4CSUM_F)                           \
-T(tso_ts_ol3ol4csum_l3l4csum,          1, 1, 0, 0, 1, 1,       8,      \
+T(tso_ts_ol3ol4csum_l3l4csum,          0, 1, 1, 0, 0, 1, 1,    8,      \
                TSO_F | TSP_F | OL3OL4CSUM_F | L3L4CSUM_F)              \
-T(tso_ts_vlan,                         1, 1, 0, 1, 0, 0,       8,      \
+T(tso_ts_vlan,                         0, 1, 1, 0, 1, 0, 0,    8,      \
                TSO_F | TSP_F | VLAN_F)                                 \
-T(tso_ts_vlan_l3l4csum,                        1, 1, 0, 1, 0, 1,       8,      \
+T(tso_ts_vlan_l3l4csum,                        0, 1, 1, 0, 1, 0, 1,    8,      \
                TSO_F | TSP_F | VLAN_F | L3L4CSUM_F)                    \
-T(tso_ts_vlan_ol3ol4csum,              1, 1, 0, 1, 1, 0,       8,      \
+T(tso_ts_vlan_ol3ol4csum,              0, 1, 1, 0, 1, 1, 0,    8,      \
                TSO_F | TSP_F | VLAN_F | OL3OL4CSUM_F)                  \
-T(tso_ts_vlan_ol3ol4csum_l3l4csum,     1, 1, 0, 1, 1, 1,       8,      \
+T(tso_ts_vlan_ol3ol4csum_l3l4csum,     0, 1, 1, 0, 1, 1, 1,    8,      \
                TSO_F | TSP_F | VLAN_F | OL3OL4CSUM_F | L3L4CSUM_F)     \
-T(tso_ts_noff,                         1, 1, 1, 0, 0, 0,       8,      \
+T(tso_ts_noff,                         0, 1, 1, 1, 0, 0, 0,    8,      \
                TSO_F | TSP_F | NOFF_F)                                 \
-T(tso_ts_noff_l3l4csum,                        1, 1, 1, 0, 0, 1,       8,      \
+T(tso_ts_noff_l3l4csum,                        0, 1, 1, 1, 0, 0, 1,    8,      \
                TSO_F | TSP_F | NOFF_F | L3L4CSUM_F)                    \
-T(tso_ts_noff_ol3ol4csum,              1, 1, 1, 0, 1, 0,       8,      \
+T(tso_ts_noff_ol3ol4csum,              0, 1, 1, 1, 0, 1, 0,    8,      \
                TSO_F | TSP_F | NOFF_F | OL3OL4CSUM_F)                  \
-T(tso_ts_noff_ol3ol4csum_l3l4csum,     1, 1, 1, 0, 1, 1,       8,      \
+T(tso_ts_noff_ol3ol4csum_l3l4csum,     0, 1, 1, 1, 0, 1, 1,    8,      \
                TSO_F | TSP_F | NOFF_F | OL3OL4CSUM_F | L3L4CSUM_F)     \
-T(tso_ts_noff_vlan,                    1, 1, 1, 1, 0, 0,       8,      \
+T(tso_ts_noff_vlan,                    0, 1, 1, 1, 1, 0, 0,    8,      \
                TSO_F | TSP_F | NOFF_F | VLAN_F)                        \
-T(tso_ts_noff_vlan_l3l4csum,           1, 1, 1, 1, 0, 1,       8,      \
+T(tso_ts_noff_vlan_l3l4csum,           0, 1, 1, 1, 1, 0, 1,    8,      \
                TSO_F | TSP_F | NOFF_F | VLAN_F | L3L4CSUM_F)           \
-T(tso_ts_noff_vlan_ol3ol4csum,         1, 1, 1, 1, 1, 0,       8,      \
+T(tso_ts_noff_vlan_ol3ol4csum,         0, 1, 1, 1, 1, 1, 0,    8,      \
                TSO_F | TSP_F | NOFF_F | VLAN_F | OL3OL4CSUM_F)         \
-T(tso_ts_noff_vlan_ol3ol4csum_l3l4csum,        1, 1, 1, 1, 1, 1,       8,      \
-               TSO_F | TSP_F | NOFF_F | VLAN_F | OL3OL4CSUM_F | L3L4CSUM_F)
+T(tso_ts_noff_vlan_ol3ol4csum_l3l4csum,        0, 1, 1, 1, 1, 1, 1,    8,      \
+               TSO_F | TSP_F | NOFF_F | VLAN_F | OL3OL4CSUM_F |        \
+               L3L4CSUM_F)                                             \
+T(sec,                                 1, 0, 0, 0, 0, 0, 0,    8,      \
+               TX_SEC_F)                                               \
+T(sec_l3l4csum,                                1, 0, 0, 0, 0, 0, 1,    8,      \
+               TX_SEC_F | L3L4CSUM_F)                                  \
+T(sec_ol3ol4csum,                      1, 0, 0, 0, 0, 1, 0,    8,      \
+               TX_SEC_F | OL3OL4CSUM_F)                                \
+T(sec_ol3ol4csum_l3l4csum,             1, 0, 0, 0, 0, 1, 1,    8,      \
+               TX_SEC_F | OL3OL4CSUM_F | L3L4CSUM_F)                   \
+T(sec_vlan,                            1, 0, 0, 0, 1, 0, 0,    8,      \
+               TX_SEC_F | VLAN_F)                                      \
+T(sec_vlan_l3l4csum,                   1, 0, 0, 0, 1, 0, 1,    8,      \
+               TX_SEC_F | VLAN_F | L3L4CSUM_F)                         \
+T(sec_vlan_ol3ol4csum,                 1, 0, 0, 0, 1, 1, 0,    8,      \
+               TX_SEC_F | VLAN_F | OL3OL4CSUM_F)                       \
+T(sec_vlan_ol3ol4csum_l3l4csum,                1, 0, 0, 0, 1, 1, 1,    8,      \
+               TX_SEC_F | VLAN_F | OL3OL4CSUM_F | L3L4CSUM_F)          \
+T(sec_noff,                            1, 0, 0, 1, 0, 0, 0,    8,      \
+               TX_SEC_F | NOFF_F)                                      \
+T(sec_noff_l3l4csum,                   1, 0, 0, 1, 0, 0, 1,    8,      \
+               TX_SEC_F | NOFF_F | L3L4CSUM_F)                         \
+T(sec_noff_ol3ol4csum,                 1, 0, 0, 1, 0, 1, 0,    8,      \
+               TX_SEC_F | NOFF_F | OL3OL4CSUM_F)                       \
+T(sec_noff_ol3ol4csum_l3l4csum,                1, 0, 0, 1, 0, 1, 1,    8,      \
+               TX_SEC_F | NOFF_F | OL3OL4CSUM_F | L3L4CSUM_F)          \
+T(sec_noff_vlan,                       1, 0, 0, 1, 1, 0, 0,    8,      \
+               TX_SEC_F | NOFF_F | VLAN_F)                             \
+T(sec_noff_vlan_l3l4csum,              1, 0, 0, 1, 1, 0, 1,    8,      \
+               TX_SEC_F | NOFF_F | VLAN_F | L3L4CSUM_F)                \
+T(sec_noff_vlan_ol3ol4csum,            1, 0, 0, 1, 1, 1, 0,    8,      \
+               TX_SEC_F | NOFF_F | VLAN_F | OL3OL4CSUM_F)              \
+T(sec_noff_vlan_ol3ol4csum_l3l4csum,   1, 0, 0, 1, 1, 1, 1,    8,      \
+               TX_SEC_F | NOFF_F | VLAN_F | OL3OL4CSUM_F | L3L4CSUM_F) \
+T(sec_ts,                              1, 0, 1, 0, 0, 0, 0,    8,      \
+               TX_SEC_F | TSP_F)                                       \
+T(sec_ts_l3l4csum,                     1, 0, 1, 0, 0, 0, 1,    8,      \
+               TX_SEC_F | TSP_F | L3L4CSUM_F)                          \
+T(sec_ts_ol3ol4csum,                   1, 0, 1, 0, 0, 1, 0,    8,      \
+               TX_SEC_F | TSP_F | OL3OL4CSUM_F)                        \
+T(sec_ts_ol3ol4csum_l3l4csum,          1, 0, 1, 0, 0, 1, 1,    8,      \
+               TX_SEC_F | TSP_F | OL3OL4CSUM_F | L3L4CSUM_F)           \
+T(sec_ts_vlan,                         1, 0, 1, 0, 1, 0, 0,    8,      \
+               TX_SEC_F | TSP_F | VLAN_F)                              \
+T(sec_ts_vlan_l3l4csum,                        1, 0, 1, 0, 1, 0, 1,    8,      \
+               TX_SEC_F | TSP_F | VLAN_F | L3L4CSUM_F)                 \
+T(sec_ts_vlan_ol3ol4csum,              1, 0, 1, 0, 1, 1, 0,    8,      \
+               TX_SEC_F | TSP_F | VLAN_F | OL3OL4CSUM_F)               \
+T(sec_ts_vlan_ol3ol4csum_l3l4csum,     1, 0, 1, 0, 1, 1, 1,    8,      \
+               TX_SEC_F | TSP_F | VLAN_F | OL3OL4CSUM_F | L3L4CSUM_F)  \
+T(sec_ts_noff,                         1, 0, 1, 1, 0, 0, 0,    8,      \
+               TX_SEC_F | TSP_F | NOFF_F)                              \
+T(sec_ts_noff_l3l4csum,                        1, 0, 1, 1, 0, 0, 1,    8,      \
+               TX_SEC_F | TSP_F | NOFF_F | L3L4CSUM_F)                 \
+T(sec_ts_noff_ol3ol4csum,              1, 0, 1, 1, 0, 1, 0,    8,      \
+               TX_SEC_F | TSP_F | NOFF_F | OL3OL4CSUM_F)               \
+T(sec_ts_noff_ol3ol4csum_l3l4csum,     1, 0, 1, 1, 0, 1, 1,    8,      \
+               TX_SEC_F | TSP_F | NOFF_F | OL3OL4CSUM_F | L3L4CSUM_F)  \
+T(sec_ts_noff_vlan,                    1, 0, 1, 1, 1, 0, 0,    8,      \
+               TX_SEC_F | TSP_F | NOFF_F | VLAN_F)                     \
+T(sec_ts_noff_vlan_l3l4csum,           1, 0, 1, 1, 1, 0, 1,    8,      \
+               TX_SEC_F | TSP_F | NOFF_F | VLAN_F | L3L4CSUM_F)        \
+T(sec_ts_noff_vlan_ol3ol4csum,         1, 0, 1, 1, 1, 1, 0,    8,      \
+               TX_SEC_F | TSP_F | NOFF_F | VLAN_F | OL3OL4CSUM_F)      \
+T(sec_ts_noff_vlan_ol3ol4csum_l3l4csum,        1, 0, 1, 1, 1, 1, 1,    8,      \
+               TX_SEC_F | TSP_F | NOFF_F | VLAN_F | OL3OL4CSUM_F |     \
+               L3L4CSUM_F)                                             \
+T(sec_tso,                             1, 1, 0, 0, 0, 0, 0,    8,      \
+               TX_SEC_F | TSO_F)                                       \
+T(sec_tso_l3l4csum,                    1, 1, 0, 0, 0, 0, 1,    8,      \
+               TX_SEC_F | TSO_F | L3L4CSUM_F)                          \
+T(sec_tso_ol3ol4csum,                  1, 1, 0, 0, 0, 1, 0,    8,      \
+               TX_SEC_F | TSO_F | OL3OL4CSUM_F)                        \
+T(sec_tso_ol3ol4csum_l3l4csum,         1, 1, 0, 0, 0, 1, 1,    8,      \
+               TX_SEC_F | TSO_F | OL3OL4CSUM_F | L3L4CSUM_F)           \
+T(sec_tso_vlan,                                1, 1, 0, 0, 1, 0, 0,    8,      \
+               TX_SEC_F | TSO_F | VLAN_F)                              \
+T(sec_tso_vlan_l3l4csum,               1, 1, 0, 0, 1, 0, 1,    8,      \
+               TX_SEC_F | TSO_F | VLAN_F | L3L4CSUM_F)                 \
+T(sec_tso_vlan_ol3ol4csum,             1, 1, 0, 0, 1, 1, 0,    8,      \
+               TX_SEC_F | TSO_F | VLAN_F | OL3OL4CSUM_F)               \
+T(sec_tso_vlan_ol3ol4csum_l3l4csum,    1, 1, 0, 0, 1, 1, 1,    8,      \
+               TX_SEC_F | TSO_F | VLAN_F | OL3OL4CSUM_F | L3L4CSUM_F)  \
+T(sec_tso_noff,                                1, 1, 0, 1, 0, 0, 0,    8,      \
+               TX_SEC_F | TSO_F | NOFF_F)                              \
+T(sec_tso_noff_l3l4csum,               1, 1, 0, 1, 0, 0, 1,    8,      \
+               TX_SEC_F | TSO_F | NOFF_F | L3L4CSUM_F)                 \
+T(sec_tso_noff_ol3ol4csum,             1, 1, 0, 1, 0, 1, 0,    8,      \
+               TX_SEC_F | TSO_F | NOFF_F | OL3OL4CSUM_F)               \
+T(sec_tso_noff_ol3ol4csum_l3l4csum,    1, 1, 0, 1, 0, 1, 1,    8,      \
+               TX_SEC_F | TSO_F | NOFF_F | OL3OL4CSUM_F | L3L4CSUM_F)  \
+T(sec_tso_noff_vlan,                   1, 1, 0, 1, 1, 0, 0,    8,      \
+               TX_SEC_F | TSO_F | NOFF_F | VLAN_F)                     \
+T(sec_tso_noff_vlan_l3l4csum,          1, 1, 0, 1, 1, 0, 1,    8,      \
+               TX_SEC_F | TSO_F | NOFF_F | VLAN_F | L3L4CSUM_F)        \
+T(sec_tso_noff_vlan_ol3ol4csum,                1, 1, 0, 1, 1, 1, 0,    8,      \
+               TX_SEC_F | TSO_F | NOFF_F | VLAN_F | OL3OL4CSUM_F)      \
+T(sec_tso_noff_vlan_ol3ol4csum_l3l4csum,                               \
+                                       1, 1, 0, 1, 1, 1, 1,    8,      \
+               TX_SEC_F | TSO_F | NOFF_F | VLAN_F | OL3OL4CSUM_F |     \
+               L3L4CSUM_F)                                             \
+T(sec_tso_ts,                          1, 1, 1, 0, 0, 0, 0,    8,      \
+               TX_SEC_F | TSO_F | TSP_F)                               \
+T(sec_tso_ts_l3l4csum,                 1, 1, 1, 0, 0, 0, 1,    8,      \
+               TX_SEC_F | TSO_F | TSP_F | L3L4CSUM_F)                  \
+T(sec_tso_ts_ol3ol4csum,               1, 1, 1, 0, 0, 1, 0,    8,      \
+               TX_SEC_F | TSO_F | TSP_F | OL3OL4CSUM_F)                \
+T(sec_tso_ts_ol3ol4csum_l3l4csum,      1, 1, 1, 0, 0, 1, 1,    8,      \
+               TX_SEC_F | TSO_F | TSP_F | OL3OL4CSUM_F | L3L4CSUM_F)   \
+T(sec_tso_ts_vlan,                     1, 1, 1, 0, 1, 0, 0,    8,      \
+               TX_SEC_F | TSO_F | TSP_F | VLAN_F)                      \
+T(sec_tso_ts_vlan_l3l4csum,            1, 1, 1, 0, 1, 0, 1,    8,      \
+               TX_SEC_F | TSO_F | TSP_F | VLAN_F | L3L4CSUM_F)         \
+T(sec_tso_ts_vlan_ol3ol4csum,          1, 1, 1, 0, 1, 1, 0,    8,      \
+               TX_SEC_F | TSO_F | TSP_F | VLAN_F | OL3OL4CSUM_F)       \
+T(sec_tso_ts_vlan_ol3ol4csum_l3l4csum, 1, 1, 1, 0, 1, 1, 1,    8,      \
+               TX_SEC_F | TSO_F | TSP_F | VLAN_F | OL3OL4CSUM_F |      \
+               L3L4CSUM_F)                                             \
+T(sec_tso_ts_noff,                     1, 1, 1, 1, 0, 0, 0,    8,      \
+               TX_SEC_F | TSO_F | TSP_F | NOFF_F)                      \
+T(sec_tso_ts_noff_l3l4csum,            1, 1, 1, 1, 0, 0, 1,    8,      \
+               TX_SEC_F | TSO_F | TSP_F | NOFF_F | L3L4CSUM_F)         \
+T(sec_tso_ts_noff_ol3ol4csum,          1, 1, 1, 1, 0, 1, 0,    8,      \
+               TX_SEC_F | TSO_F | TSP_F | NOFF_F | OL3OL4CSUM_F)       \
+T(sec_tso_ts_noff_ol3ol4csum_l3l4csum, 1, 1, 1, 1, 0, 1, 1,    8,      \
+               TX_SEC_F | TSO_F | TSP_F | NOFF_F | OL3OL4CSUM_F |      \
+               L3L4CSUM_F)                                             \
+T(sec_tso_ts_noff_vlan,                        1, 1, 1, 1, 1, 0, 0,    8,      \
+               TX_SEC_F | TSO_F | TSP_F | NOFF_F | VLAN_F)             \
+T(sec_tso_ts_noff_vlan_l3l4csum,       1, 1, 1, 1, 1, 0, 1,    8,      \
+               TX_SEC_F | TSO_F | TSP_F | NOFF_F | VLAN_F | L3L4CSUM_F)\
+T(sec_tso_ts_noff_vlan_ol3ol4csum,     1, 1, 1, 1, 1, 1, 0,    8,      \
+               TX_SEC_F | TSO_F | TSP_F | NOFF_F | VLAN_F |            \
+               OL3OL4CSUM_F)                                           \
+T(sec_tso_ts_noff_vlan_ol3ol4csum_l3l4csum,                            \
+                                       1, 1, 1, 1, 1, 1, 1,    8,      \
+               TX_SEC_F | TSO_F | TSP_F | NOFF_F | VLAN_F |            \
+               OL3OL4CSUM_F | L3L4CSUM_F)
 #endif /* __OTX2_TX_H__ */