app/eventdev: add ethernet device setup helpers
[dpdk.git] / drivers / net / mlx5 / mlx5_rxtx_vec_neon.h
index 661fbf1..e11565f 100644 (file)
@@ -222,7 +222,7 @@ txq_scatter_v(struct mlx5_txq_data *txq, struct rte_mbuf **pkts,
  * Send burst of packets with Enhanced MPW. If it encounters a multi-seg packet,
  * it returns to make it processed by txq_scatter_v(). All the packets in
  * the pkts list should be single segment packets having same offload flags.
- * This must be checked by txq_check_multiseg() and txq_calc_offload().
+ * This must be checked by txq_count_contig_single_seg() and txq_calc_offload().
  *
  * @param txq
  *   Pointer to TX queue structure.
@@ -583,11 +583,15 @@ rxq_cq_to_ptype_oflags_v(struct mlx5_rxq_data *rxq,
        if (rxq->mark) {
                const uint32x4_t ft_def = vdupq_n_u32(MLX5_FLOW_MARK_DEFAULT);
                const uint32x4_t fdir_flags = vdupq_n_u32(PKT_RX_FDIR);
-               const uint32x4_t fdir_id_flags = vdupq_n_u32(PKT_RX_FDIR_ID);
+               uint32x4_t fdir_id_flags = vdupq_n_u32(PKT_RX_FDIR_ID);
+               uint32x4_t invalid_mask;
 
                /* Check if flow tag is non-zero then set PKT_RX_FDIR. */
-               ol_flags = vorrq_u32(ol_flags, vbicq_u32(fdir_flags,
-                                                        vceqzq_u32(flow_tag)));
+               invalid_mask = vceqzq_u32(flow_tag);
+               ol_flags = vorrq_u32(ol_flags,
+                                    vbicq_u32(fdir_flags, invalid_mask));
+               /* Mask out invalid entries. */
+               fdir_id_flags = vbicq_u32(fdir_id_flags, invalid_mask);
                /* Check if flow tag MLX5_FLOW_MARK_DEFAULT. */
                ol_flags = vorrq_u32(ol_flags,
                                     vbicq_u32(fdir_id_flags,
@@ -658,12 +662,16 @@ rxq_cq_to_ptype_oflags_v(struct mlx5_rxq_data *rxq,
  *   Array to store received packets.
  * @param pkts_n
  *   Maximum number of packets in array.
+ * @param[out] err
+ *   Pointer to a flag. Set non-zero value if pkts array has at least one error
+ *   packet to handle.
  *
  * @return
  *   Number of packets received including errors (<= pkts_n).
  */
 static inline uint16_t
-rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, uint16_t pkts_n)
+rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, uint16_t pkts_n,
+           uint64_t *err)
 {
        const uint16_t q_n = 1 << rxq->cqe_n;
        const uint16_t q_mask = q_n - 1;
@@ -963,8 +971,7 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, uint16_t pkts_n)
                opcode = vceq_u16(resp_err_check, opcode);
                opcode = vbic_u16(opcode, invalid_mask);
                /* D.4 mark if any error is set */
-               rxq->pending_err |=
-                       !!vget_lane_u64(vreinterpret_u64_u16(opcode), 0);
+               *err |= vget_lane_u64(vreinterpret_u64_u16(opcode), 0);
                /* C.4 fill in mbuf - rearm_data and packet_type. */
                rxq_cq_to_ptype_oflags_v(rxq, ptype_info, flow_tag,
                                         opcode, &elts[pos]);