On 11/11/2020 6:49 AM, Jiawen Wu wrote:
Add support to create operation for flow API.

Signed-off-by: Jiawen Wu <jiawe...@trustnetic.com>
---
  drivers/net/txgbe/txgbe_ethdev.h |   2 +
  drivers/net/txgbe/txgbe_fdir.c   |  27 ++++
  drivers/net/txgbe/txgbe_flow.c   | 257 +++++++++++++++++++++++++++++++
  3 files changed, 286 insertions(+)

diff --git a/drivers/net/txgbe/txgbe_ethdev.h b/drivers/net/txgbe/txgbe_ethdev.h
index a0a452c1a..a0a18d254 100644
--- a/drivers/net/txgbe/txgbe_ethdev.h
+++ b/drivers/net/txgbe/txgbe_ethdev.h
@@ -464,6 +464,8 @@ void txgbe_set_ivar_map(struct txgbe_hw *hw, int8_t 
direction,
   */
  int txgbe_fdir_configure(struct rte_eth_dev *dev);
  int txgbe_fdir_set_input_mask(struct rte_eth_dev *dev);
+int txgbe_fdir_set_flexbytes_offset(struct rte_eth_dev *dev,
+                                   uint16_t offset);
  int txgbe_fdir_filter_program(struct rte_eth_dev *dev,
                              struct txgbe_fdir_rule *rule,
                              bool del, bool update);
diff --git a/drivers/net/txgbe/txgbe_fdir.c b/drivers/net/txgbe/txgbe_fdir.c
index 2faf7fd84..2342cf681 100644
--- a/drivers/net/txgbe/txgbe_fdir.c
+++ b/drivers/net/txgbe/txgbe_fdir.c
@@ -270,6 +270,33 @@ txgbe_fdir_store_input_mask(struct rte_eth_dev *dev)
        return 0;
  }
+int
+txgbe_fdir_set_flexbytes_offset(struct rte_eth_dev *dev,
+                               uint16_t offset)
+{
+       struct txgbe_hw *hw = TXGBE_DEV_HW(dev);
+       int i;
+
+       for (i = 0; i < 64; i++) {
+               uint32_t flexreg, flex;
+               flexreg = rd32(hw, TXGBE_FDIRFLEXCFG(i / 4));
+               flex = TXGBE_FDIRFLEXCFG_BASE_MAC;
+               flex |= TXGBE_FDIRFLEXCFG_OFST(offset / 2);
+               flexreg &= ~(TXGBE_FDIRFLEXCFG_ALL(~0UL, i % 4));
+               flexreg |= TXGBE_FDIRFLEXCFG_ALL(flex, i % 4);
+               wr32(hw, TXGBE_FDIRFLEXCFG(i / 4), flexreg);
+       }
+
+       txgbe_flush(hw);
+       for (i = 0; i < TXGBE_FDIR_INIT_DONE_POLL; i++) {
+               if (rd32(hw, TXGBE_FDIRCTL) &
+                       TXGBE_FDIRCTL_INITDONE)
+                       break;
+               msec_delay(1);
+       }
+       return 0;
+}
+

Is this funtions should be added in the fdir patch?
Or when filter added together with rte_flow validate/create pieces, this won't be a problem anymore I guess.

Reply via email to