New upstream version 17.11.5
[deb_dpdk.git] / drivers / net / i40e / i40e_rxtx.c
index 8b4f612..fb35d12 100644 (file)
                PKT_TX_OUTER_IP_CKSUM)
 
 #define I40E_TX_OFFLOAD_MASK (  \
+               PKT_TX_OUTER_IPV4 |     \
+               PKT_TX_OUTER_IPV6 |     \
+               PKT_TX_IPV4 |           \
+               PKT_TX_IPV6 |           \
                PKT_TX_IP_CKSUM |       \
                PKT_TX_L4_MASK |        \
                PKT_TX_OUTER_IP_CKSUM | \
                I40E_TX_IEEE1588_TMST)
 
 #define I40E_TX_OFFLOAD_NOTSUP_MASK \
-               (PKT_TX_OFFLOAD_MASK ^ I40E_TX_OFFLOAD_MASK)
+               ~(PKT_TX_OFFLOAD_MASK & I40E_TX_OFFLOAD_MASK)
 
 static uint16_t i40e_xmit_pkts_simple(void *tx_queue,
                                      struct rte_mbuf **tx_pkts,
@@ -1473,13 +1477,10 @@ i40e_prep_pkts(__rte_unused void *tx_queue, struct rte_mbuf **tx_pkts,
                m = tx_pkts[i];
                ol_flags = m->ol_flags;
 
-               /**
-                * m->nb_segs is uint8_t, so nb_segs is always less than
-                * I40E_TX_MAX_SEG.
-                * We check only a condition for nb_segs > I40E_TX_MAX_MTU_SEG.
-                */
+               /* Check for m->nb_segs to not exceed the limits. */
                if (!(ol_flags & PKT_TX_TCP_SEG)) {
-                       if (m->nb_segs > I40E_TX_MAX_MTU_SEG) {
+                       if (m->nb_segs > I40E_TX_MAX_SEG ||
+                           m->nb_segs > I40E_TX_MAX_MTU_SEG) {
                                rte_errno = -EINVAL;
                                return i;
                        }
@@ -2752,6 +2753,7 @@ i40e_fdir_setup_rx_resources(struct i40e_pf *pf)
        rxq->vsi = pf->fdir.fdir_vsi;
 
        rxq->rx_ring_phys_addr = rz->iova;
+       memset(rz->addr, 0, I40E_FDIR_NUM_RX_DESC * sizeof(union i40e_rx_desc));
        rxq->rx_ring = (union i40e_rx_desc *)rz->addr;
 
        /*