summaryrefslogtreecommitdiffstats
path: root/src/dpdk/drivers/net/ixgbe
diff options
context:
space:
mode:
authorIdo Barnea <ibarnea@cisco.com>2016-07-19 10:12:20 +0300
committerIdo Barnea <ibarnea@cisco.com>2016-07-24 14:01:11 +0300
commit8b0119ed99f893106a560ccb9db31c99e1d293eb (patch)
tree7e3eb6ef214af20fa975f28779a28479bfd73d5a /src/dpdk/drivers/net/ixgbe
parent3c106ce73a4a54863ed1c3df47c09eb1e63fadaf (diff)
dpdk0716 move:DPDK file patches
Diffstat (limited to 'src/dpdk/drivers/net/ixgbe')
-rw-r--r--src/dpdk/drivers/net/ixgbe/base/ixgbe_osdep.h2
-rw-r--r--src/dpdk/drivers/net/ixgbe/ixgbe_fdir.c18
-rw-r--r--src/dpdk/drivers/net/ixgbe/ixgbe_rxtx.c3
3 files changed, 21 insertions, 2 deletions
diff --git a/src/dpdk/drivers/net/ixgbe/base/ixgbe_osdep.h b/src/dpdk/drivers/net/ixgbe/base/ixgbe_osdep.h
index 31cc1bef..06d1ee1c 100644
--- a/src/dpdk/drivers/net/ixgbe/base/ixgbe_osdep.h
+++ b/src/dpdk/drivers/net/ixgbe/base/ixgbe_osdep.h
@@ -108,7 +108,9 @@ typedef int16_t s16;
typedef uint32_t u32;
typedef int32_t s32;
typedef uint64_t u64;
+#ifndef __cplusplus
typedef int bool;
+#endif
#define mb() rte_mb()
#define wmb() rte_wmb()
diff --git a/src/dpdk/drivers/net/ixgbe/ixgbe_fdir.c b/src/dpdk/drivers/net/ixgbe/ixgbe_fdir.c
index 861c7cbe..c38ac97b 100644
--- a/src/dpdk/drivers/net/ixgbe/ixgbe_fdir.c
+++ b/src/dpdk/drivers/net/ixgbe/ixgbe_fdir.c
@@ -248,8 +248,13 @@ configure_fdir_flags(const struct rte_fdir_conf *conf, uint32_t *fdirctrl)
return -EINVAL;
};
+#define TREX_PATCH
+#ifdef TREX_PATCH
+ *fdirctrl |= (conf->flexbytes_offset << IXGBE_FDIRCTRL_FLEX_SHIFT);
+#else
*fdirctrl |= (IXGBE_DEFAULT_FLEXBYTES_OFFSET / sizeof(uint16_t)) <<
IXGBE_FDIRCTRL_FLEX_SHIFT;
+#endif
if (conf->mode >= RTE_FDIR_MODE_PERFECT &&
conf->mode <= RTE_FDIR_MODE_PERFECT_TUNNEL) {
@@ -515,7 +520,7 @@ ixgbe_set_fdir_flex_conf(struct rte_eth_dev *dev,
uint16_t i;
fdirm = IXGBE_READ_REG(hw, IXGBE_FDIRM);
-
+#ifndef TREX_PATCH
if (conf == NULL) {
PMD_DRV_LOG(ERR, "NULL pointer.");
return -EINVAL;
@@ -556,6 +561,11 @@ ixgbe_set_fdir_flex_conf(struct rte_eth_dev *dev,
return -EINVAL;
}
}
+#else
+ fdirm &= ~IXGBE_FDIRM_FLEX;
+ flexbytes = 1;
+ // fdirctrl gets flex_bytes_offset in configure_fdir_flags
+#endif
IXGBE_WRITE_REG(hw, IXGBE_FDIRM, fdirm);
info->mask.flex_bytes_mask = flexbytes ? UINT16_MAX : 0;
info->flex_bytes_offset = (uint8_t)((*fdirctrl &
@@ -587,6 +597,9 @@ ixgbe_fdir_configure(struct rte_eth_dev *dev)
hw->mac.type != ixgbe_mac_X550EM_x &&
hw->mac.type != ixgbe_mac_X550EM_a &&
mode != RTE_FDIR_MODE_SIGNATURE &&
+#ifdef TREX_PATCH
+ mode != RTE_FDIR_MODE_PERFECT_MAC_VLAN &&
+#endif
mode != RTE_FDIR_MODE_PERFECT)
return -ENOSYS;
@@ -1134,11 +1147,14 @@ ixgbe_add_del_fdir_filter(struct rte_eth_dev *dev,
return err;
if (is_perfect) {
+#ifndef TREX_PATCH
+ // No reason not to use IPV6 in perfect filters. It is working.
if (input.formatted.flow_type & IXGBE_ATR_L4TYPE_IPV6_MASK) {
PMD_DRV_LOG(ERR, "IPv6 is not supported in"
" perfect mode!");
return -ENOTSUP;
}
+#endif
fdirhash = atr_compute_perfect_hash_82599(&input,
dev->data->dev_conf.fdir_conf.pballoc);
fdirhash |= fdir_filter->soft_id <<
diff --git a/src/dpdk/drivers/net/ixgbe/ixgbe_rxtx.c b/src/dpdk/drivers/net/ixgbe/ixgbe_rxtx.c
index 8a306b06..a018e926 100644
--- a/src/dpdk/drivers/net/ixgbe/ixgbe_rxtx.c
+++ b/src/dpdk/drivers/net/ixgbe/ixgbe_rxtx.c
@@ -4913,7 +4913,8 @@ ixgbe_dev_rx_queue_stop(struct rte_eth_dev *dev, uint16_t rx_queue_id)
rxdctl = IXGBE_READ_REG(hw, IXGBE_RXDCTL(rxq->reg_idx));
} while (--poll_ms && (rxdctl & IXGBE_RXDCTL_ENABLE));
if (!poll_ms)
- PMD_INIT_LOG(ERR, "Could not disable Rx Queue %d",
+ // TREX_PATCH - changed log level from ERR to DEBUG
+ PMD_INIT_LOG(DEBUG, "Could not disable Rx Queue %d",
rx_queue_id);
rte_delay_us(RTE_IXGBE_WAIT_100_US);