net/octeontx2: setup link config based on BP level
[dpdk.git] / drivers / net / octeontx / base / octeontx_pki_var.h
index def6cbb..4445369 100644 (file)
@@ -1,33 +1,5 @@
-/*
- *   BSD LICENSE
- *
- *   Copyright (C) Cavium Inc. 2017. All rights reserved.
- *
- *   Redistribution and use in source and binary forms, with or without
- *   modification, are permitted provided that the following conditions
- *   are met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in
- *       the documentation and/or other materials provided with the
- *       distribution.
- *     * Neither the name of Cavium networks nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2017 Cavium, Inc
  */
 
 #ifndef __OCTEONTX_PKI_VAR_H__
@@ -35,8 +7,17 @@
 
 #include <rte_byteorder.h>
 
-#define OCTTX_PACKET_WQE_SKIP          128
-#define OCTTX_PACKET_FIRST_SKIP                240
+#define OCTTX_PACKET_WQE_SKIP                  128
+#define OCTTX_PACKET_FIRST_SKIP_MAXREGVAL      496
+#define OCTTX_PACKET_FIRST_SKIP_MAXLEN         512
+#define OCTTX_PACKET_FIRST_SKIP_ADJUST(x)                              \
+               (RTE_MIN(x, OCTTX_PACKET_FIRST_SKIP_MAXREGVAL))
+#define OCTTX_PACKET_FIRST_SKIP_SUM(p)                                 \
+                               (OCTTX_PACKET_WQE_SKIP                  \
+                               + rte_pktmbuf_priv_size(p)              \
+                               + RTE_PKTMBUF_HEADROOM)
+#define OCTTX_PACKET_FIRST_SKIP(p)                                     \
+       OCTTX_PACKET_FIRST_SKIP_ADJUST(OCTTX_PACKET_FIRST_SKIP_SUM(p))
 #define OCTTX_PACKET_LATER_SKIP                128
 
 /* WQE descriptor */
@@ -234,4 +215,36 @@ enum lf_type_e {
        LF_UDP_VXLAN    = OCCTX_PKI_LTYPE_UDP_VXLAN,
        LF_NVGRE        = OCCTX_PKI_LTYPE_NVGRE,
 };
+
+/* Word 0 of HW segment buflink structure */
+typedef union octtx_pki_buflink_w0_u {
+       uint64_t v;
+       struct {
+               uint64_t        size:16;
+               uint64_t        rsvd1:15;
+               uint64_t        invfree:1;
+               /** Aura number of the next segment */
+               uint64_t        aura:16;
+               uint64_t        sw:9;
+               uint64_t        later_invfree:1;
+               uint64_t        rsvd2:5;
+               /** 1 if aura number is set */
+               uint64_t        has_aura:1;
+       } s;
+} octtx_pki_buflink_w0_t;
+
+/* Word 1 of HW segment buflink structure */
+typedef union octtx_pki_buflink_w1_u {
+       uint64_t v;
+       struct {
+               uint64_t        addr;
+       } s;
+} octtx_pki_buflink_w1_t;
+
+/* HW structure linking packet segments into singly linked list */
+typedef struct octtx_pki_buflink_s {
+       octtx_pki_buflink_w0_t    w0; /* Word 0 of the buflink */
+       octtx_pki_buflink_w1_t    w1; /* Word 1 of the buflink */
+} octtx_pki_buflink_t;
+
 #endif /* __OCTEONTX_PKI_VAR_H__ */