net/dpaa2: optimize fd reset in Tx path
authorHemant Agrawal <hemant.agrawal@nxp.com>
Fri, 12 Oct 2018 10:04:23 +0000 (15:34 +0530)
committerThomas Monjalon <thomas@monjalon.net>
Tue, 16 Oct 2018 12:54:26 +0000 (14:54 +0200)
various field of FD structure was getting reset in scattered
fashion. This patch align them in single macro.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
drivers/net/dpaa2/dpaa2_rxtx.c

index f158c7b..efbeebe 100644 (file)
@@ -210,6 +210,12 @@ enum qbman_fd_format {
 #define DPAA2_RESET_FD_CTRL(fd)         ((fd)->simple.ctrl = 0)
 
 #define        DPAA2_SET_FD_ASAL(fd, asal)     ((fd)->simple.ctrl |= (asal << 16))
+
+#define DPAA2_RESET_FD_FLC(fd) do {    \
+       (fd)->simple.flc_lo = 0;        \
+       (fd)->simple.flc_hi = 0;        \
+} while (0)
+
 #define DPAA2_SET_FD_FLC(fd, addr)     do { \
        (fd)->simple.flc_lo = lower_32_bits((size_t)(addr));    \
        (fd)->simple.flc_hi = upper_32_bits((uint64_t)(addr));  \
index e96e848..fcd48b3 100644 (file)
@@ -30,7 +30,9 @@
        DPAA2_SET_FD_LEN(_fd, _mbuf->data_len); \
        DPAA2_SET_ONLY_FD_BPID(_fd, _bpid); \
        DPAA2_SET_FD_OFFSET(_fd, _mbuf->data_off); \
-       DPAA2_SET_FD_ASAL(_fd, DPAA2_ASAL_VAL); \
+       DPAA2_SET_FD_FRC(_fd, 0);               \
+       DPAA2_RESET_FD_CTRL(_fd);               \
+       DPAA2_RESET_FD_FLC(_fd);                \
 } while (0)
 
 static inline void __attribute__((hot))
@@ -689,7 +691,6 @@ dpaa2_dev_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
        /*Prepare enqueue descriptor*/
        qbman_eq_desc_clear(&eqdesc);
        qbman_eq_desc_set_no_orp(&eqdesc, DPAA2_EQ_RESP_ERR_FQ);
-       qbman_eq_desc_set_response(&eqdesc, 0, 0);
        qbman_eq_desc_set_qd(&eqdesc, priv->qdid,
                             dpaa2_q->flow_id, dpaa2_q->tc_index);
        /*Clear the unused FD fields before sending*/
@@ -717,9 +718,6 @@ dpaa2_dev_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
                                (*bufs)->seqn = DPAA2_INVALID_MBUF_SEQN;
                        }
 
-                       fd_arr[loop].simple.frc = 0;
-                       DPAA2_RESET_FD_CTRL((&fd_arr[loop]));
-                       DPAA2_SET_FD_FLC((&fd_arr[loop]), (size_t)NULL);
                        if (likely(RTE_MBUF_DIRECT(*bufs))) {
                                mp = (*bufs)->pool;
                                /* Check the basic scenario and set