DPDK patches and discussions
 help / color / mirror / Atom feed
From: Qi Zhang <qi.z.zhang@intel.com>
To: wenzhuo.lu@intel.com, qiming.yang@intel.com
Cc: dev@dpdk.org, paul.m.stillwell.jr@intel.com,
	ferruh.yigit@intel.com, Qi Zhang <qi.z.zhang@intel.com>
Subject: [dpdk-dev] [PATCH v4 14/38] net/ice/base: add MAC filter with marker and counter
Date: Mon, 25 Mar 2019 13:44:28 +0800	[thread overview]
Message-ID: <20190325054452.2616-15-qi.z.zhang@intel.com> (raw)
In-Reply-To: <20190325054452.2616-1-qi.z.zhang@intel.com>

1. ice_add_mac_with_sw_marker - add filter with software marker.
2. ice_add_mac_with_counter - add filter with counter enabled.

Signed-off-by: Paul M Stillwell Jr <paul.m.stillwell.jr@intel.com>
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Reviewed-by: Qiming Yang <qiming.yang@intel.com>
Reviewed-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
---
 drivers/net/ice/base/ice_switch.c | 328 ++++++++++++++++++++++++++++++++++++++
 drivers/net/ice/base/ice_switch.h |   5 +
 2 files changed, 333 insertions(+)

diff --git a/drivers/net/ice/base/ice_switch.c b/drivers/net/ice/base/ice_switch.c
index e4024a0b0..bfcb33ea6 100644
--- a/drivers/net/ice/base/ice_switch.c
+++ b/drivers/net/ice/base/ice_switch.c
@@ -1338,6 +1338,95 @@ ice_add_marker_act(struct ice_hw *hw, struct ice_fltr_mgmt_list_entry *m_ent,
 	return status;
 }
 
+/**
+ * ice_add_counter_act - add/update filter rule with counter action
+ * @hw: pointer to the hardware structure
+ * @m_ent: the management entry for which counter needs to be added
+ * @counter_id: VLAN counter ID returned as part of allocate resource
+ * @l_id: large action resource ID
+ */
+static enum ice_status
+ice_add_counter_act(struct ice_hw *hw, struct ice_fltr_mgmt_list_entry *m_ent,
+		    u16 counter_id, u16 l_id)
+{
+	struct ice_aqc_sw_rules_elem *lg_act;
+	struct ice_aqc_sw_rules_elem *rx_tx;
+	enum ice_status status;
+	/* 2 actions will be added while adding a large action counter */
+	const int num_acts = 2;
+	u16 lg_act_size;
+	u16 rules_size;
+	u16 f_rule_id;
+	u32 act;
+	u16 id;
+
+	if (m_ent->fltr_info.lkup_type != ICE_SW_LKUP_MAC)
+		return ICE_ERR_PARAM;
+
+	/* Create two back-to-back switch rules and submit them to the HW using
+	 * one memory buffer:
+	 * 1. Large Action
+	 * 2. Look up Tx Rx
+	 */
+	lg_act_size = (u16)ICE_SW_RULE_LG_ACT_SIZE(num_acts);
+	rules_size = lg_act_size + ICE_SW_RULE_RX_TX_ETH_HDR_SIZE;
+	lg_act = (struct ice_aqc_sw_rules_elem *)ice_malloc(hw,
+								 rules_size);
+	if (!lg_act)
+		return ICE_ERR_NO_MEMORY;
+
+	rx_tx = (struct ice_aqc_sw_rules_elem *)
+		((u8 *)lg_act + lg_act_size);
+
+	/* Fill in the first switch rule i.e. large action */
+	lg_act->type = CPU_TO_LE16(ICE_AQC_SW_RULES_T_LG_ACT);
+	lg_act->pdata.lg_act.index = CPU_TO_LE16(l_id);
+	lg_act->pdata.lg_act.size = CPU_TO_LE16(num_acts);
+
+	/* First action VSI forwarding or VSI list forwarding depending on how
+	 * many VSIs
+	 */
+	id = (m_ent->vsi_count > 1) ?  m_ent->fltr_info.fwd_id.vsi_list_id :
+		m_ent->fltr_info.fwd_id.hw_vsi_id;
+
+	act = ICE_LG_ACT_VSI_FORWARDING | ICE_LG_ACT_VALID_BIT;
+	act |= (id << ICE_LG_ACT_VSI_LIST_ID_S) &
+		ICE_LG_ACT_VSI_LIST_ID_M;
+	if (m_ent->vsi_count > 1)
+		act |= ICE_LG_ACT_VSI_LIST;
+	lg_act->pdata.lg_act.act[0] = CPU_TO_LE32(act);
+
+	/* Second action counter ID */
+	act = ICE_LG_ACT_STAT_COUNT;
+	act |= (counter_id << ICE_LG_ACT_STAT_COUNT_S) &
+		ICE_LG_ACT_STAT_COUNT_M;
+	lg_act->pdata.lg_act.act[1] = CPU_TO_LE32(act);
+
+	/* call the fill switch rule to fill the lookup Tx Rx structure */
+	ice_fill_sw_rule(hw, &m_ent->fltr_info, rx_tx,
+			 ice_aqc_opc_update_sw_rules);
+
+	act = ICE_SINGLE_ACT_PTR;
+	act |= (l_id << ICE_SINGLE_ACT_PTR_VAL_S) & ICE_SINGLE_ACT_PTR_VAL_M;
+	rx_tx->pdata.lkup_tx_rx.act = CPU_TO_LE32(act);
+
+	/* Use the filter rule ID of the previously created rule with single
+	 * act. Once the update happens, hardware will treat this as large
+	 * action
+	 */
+	f_rule_id = m_ent->fltr_info.fltr_rule_id;
+	rx_tx->pdata.lkup_tx_rx.index = CPU_TO_LE16(f_rule_id);
+
+	status = ice_aq_sw_rules(hw, lg_act, rules_size, 2,
+				 ice_aqc_opc_update_sw_rules, NULL);
+	if (!status) {
+		m_ent->lg_act_idx = l_id;
+		m_ent->counter_index = counter_id;
+	}
+
+	ice_free(hw, lg_act);
+	return status;
+}
 
 /**
  * ice_create_vsi_list_map
@@ -3419,6 +3508,245 @@ enum ice_status ice_free_vlan_res_counter(struct ice_hw *hw, u16 counter_id)
 }
 
 /**
+ * ice_alloc_res_lg_act - add large action resource
+ * @hw: pointer to the hardware structure
+ * @l_id: large action ID to fill it in
+ * @num_acts: number of actions to hold with a large action entry
+ */
+static enum ice_status
+ice_alloc_res_lg_act(struct ice_hw *hw, u16 *l_id, u16 num_acts)
+{
+	struct ice_aqc_alloc_free_res_elem *sw_buf;
+	enum ice_status status;
+	u16 buf_len;
+
+	if (num_acts > ICE_MAX_LG_ACT || num_acts == 0)
+		return ICE_ERR_PARAM;
+
+	/* Allocate resource for large action */
+	buf_len = sizeof(*sw_buf);
+	sw_buf = (struct ice_aqc_alloc_free_res_elem *)
+		ice_malloc(hw, buf_len);
+	if (!sw_buf)
+		return ICE_ERR_NO_MEMORY;
+
+	sw_buf->num_elems = CPU_TO_LE16(1);
+
+	/* If num_acts is 1, use ICE_AQC_RES_TYPE_WIDE_TABLE_1.
+	 * If num_acts is 2, use ICE_AQC_RES_TYPE_WIDE_TABLE_3.
+	 * If num_acts is greater than 2, then use
+	 * ICE_AQC_RES_TYPE_WIDE_TABLE_4.
+	 * The num_acts cannot exceed 4. This was ensured at the
+	 * beginning of the function.
+	 */
+	if (num_acts == 1)
+		sw_buf->res_type = CPU_TO_LE16(ICE_AQC_RES_TYPE_WIDE_TABLE_1);
+	else if (num_acts == 2)
+		sw_buf->res_type = CPU_TO_LE16(ICE_AQC_RES_TYPE_WIDE_TABLE_2);
+	else
+		sw_buf->res_type = CPU_TO_LE16(ICE_AQC_RES_TYPE_WIDE_TABLE_4);
+
+	status = ice_aq_alloc_free_res(hw, 1, sw_buf, buf_len,
+				       ice_aqc_opc_alloc_res, NULL);
+	if (!status)
+		*l_id = LE16_TO_CPU(sw_buf->elem[0].e.sw_resp);
+
+	ice_free(hw, sw_buf);
+	return status;
+}
+
+/**
+ * ice_add_mac_with_sw_marker - add filter with sw marker
+ * @hw: pointer to the hardware structure
+ * @f_info: filter info structure containing the MAC filter information
+ * @sw_marker: sw marker to tag the Rx descriptor with
+ */
+enum ice_status
+ice_add_mac_with_sw_marker(struct ice_hw *hw, struct ice_fltr_info *f_info,
+			   u16 sw_marker)
+{
+	struct ice_switch_info *sw = hw->switch_info;
+	struct ice_fltr_mgmt_list_entry *m_entry;
+	struct ice_fltr_list_entry fl_info;
+	struct LIST_HEAD_TYPE l_head;
+	struct ice_lock *rule_lock;	/* Lock to protect filter rule list */
+	enum ice_status ret;
+	bool entry_exists;
+	u16 lg_act_id;
+
+	if (f_info->fltr_act != ICE_FWD_TO_VSI)
+		return ICE_ERR_PARAM;
+
+	if (f_info->lkup_type != ICE_SW_LKUP_MAC)
+		return ICE_ERR_PARAM;
+
+	if (sw_marker == ICE_INVAL_SW_MARKER_ID)
+		return ICE_ERR_PARAM;
+
+	if (!ice_is_vsi_valid(hw, f_info->vsi_handle))
+		return ICE_ERR_PARAM;
+	f_info->fwd_id.hw_vsi_id = ice_get_hw_vsi_num(hw, f_info->vsi_handle);
+
+	/* Add filter if it doesn't exist so then the adding of large
+	 * action always results in update
+	 */
+
+	INIT_LIST_HEAD(&l_head);
+	fl_info.fltr_info = *f_info;
+	LIST_ADD(&fl_info.list_entry, &l_head);
+
+	entry_exists = false;
+	ret = ice_add_mac(hw, &l_head);
+	if (ret == ICE_ERR_ALREADY_EXISTS)
+		entry_exists = true;
+	else if (ret)
+		return ret;
+
+	rule_lock = &sw->recp_list[ICE_SW_LKUP_MAC].filt_rule_lock;
+	ice_acquire_lock(rule_lock);
+	/* Get the book keeping entry for the filter */
+	m_entry = ice_find_rule_entry(hw, ICE_SW_LKUP_MAC, f_info);
+	if (!m_entry)
+		goto exit_error;
+
+	/* If counter action was enabled for this rule then don't enable
+	 * sw marker large action
+	 */
+	if (m_entry->counter_index != ICE_INVAL_COUNTER_ID) {
+		ret = ICE_ERR_PARAM;
+		goto exit_error;
+	}
+
+	/* if same marker was added before */
+	if (m_entry->sw_marker_id == sw_marker) {
+		ret = ICE_ERR_ALREADY_EXISTS;
+		goto exit_error;
+	}
+
+	/* Allocate a hardware table entry to hold large act. Three actions
+	 * for marker based large action
+	 */
+	ret = ice_alloc_res_lg_act(hw, &lg_act_id, 3);
+	if (ret)
+		goto exit_error;
+
+	if (lg_act_id == ICE_INVAL_LG_ACT_INDEX)
+		goto exit_error;
+
+	/* Update the switch rule to add the marker action */
+	ret = ice_add_marker_act(hw, m_entry, sw_marker, lg_act_id);
+	if (!ret) {
+		ice_release_lock(rule_lock);
+		return ret;
+	}
+
+exit_error:
+	ice_release_lock(rule_lock);
+	/* only remove entry if it did not exist previously */
+	if (!entry_exists)
+		ret = ice_remove_mac(hw, &l_head);
+
+	return ret;
+}
+
+/**
+ * ice_add_mac_with_counter - add filter with counter enabled
+ * @hw: pointer to the hardware structure
+ * @f_info: pointer to filter info structure containing the MAC filter
+ *          information
+ */
+enum ice_status
+ice_add_mac_with_counter(struct ice_hw *hw, struct ice_fltr_info *f_info)
+{
+	struct ice_switch_info *sw = hw->switch_info;
+	struct ice_fltr_mgmt_list_entry *m_entry;
+	struct ice_fltr_list_entry fl_info;
+	struct LIST_HEAD_TYPE l_head;
+	struct ice_lock *rule_lock;	/* Lock to protect filter rule list */
+	enum ice_status ret;
+	bool entry_exist;
+	u16 counter_id;
+	u16 lg_act_id;
+
+	if (f_info->fltr_act != ICE_FWD_TO_VSI)
+		return ICE_ERR_PARAM;
+
+	if (f_info->lkup_type != ICE_SW_LKUP_MAC)
+		return ICE_ERR_PARAM;
+
+	if (!ice_is_vsi_valid(hw, f_info->vsi_handle))
+		return ICE_ERR_PARAM;
+	f_info->fwd_id.hw_vsi_id = ice_get_hw_vsi_num(hw, f_info->vsi_handle);
+
+	entry_exist = false;
+
+	rule_lock = &sw->recp_list[ICE_SW_LKUP_MAC].filt_rule_lock;
+
+	/* Add filter if it doesn't exist so then the adding of large
+	 * action always results in update
+	 */
+	INIT_LIST_HEAD(&l_head);
+
+	fl_info.fltr_info = *f_info;
+	LIST_ADD(&fl_info.list_entry, &l_head);
+
+	ret = ice_add_mac(hw, &l_head);
+	if (ret == ICE_ERR_ALREADY_EXISTS)
+		entry_exist = true;
+	else if (ret)
+		return ret;
+
+	ice_acquire_lock(rule_lock);
+	m_entry = ice_find_rule_entry(hw, ICE_SW_LKUP_MAC, f_info);
+	if (!m_entry) {
+		ret = ICE_ERR_BAD_PTR;
+		goto exit_error;
+	}
+
+	/* Don't enable counter for a filter for which sw marker was enabled */
+	if (m_entry->sw_marker_id != ICE_INVAL_SW_MARKER_ID) {
+		ret = ICE_ERR_PARAM;
+		goto exit_error;
+	}
+
+	/* If a counter was already enabled then don't need to add again */
+	if (m_entry->counter_index != ICE_INVAL_COUNTER_ID) {
+		ret = ICE_ERR_ALREADY_EXISTS;
+		goto exit_error;
+	}
+
+	/* Allocate a hardware table entry to VLAN counter */
+	ret = ice_alloc_vlan_res_counter(hw, &counter_id);
+	if (ret)
+		goto exit_error;
+
+	/* Allocate a hardware table entry to hold large act. Two actions for
+	 * counter based large action
+	 */
+	ret = ice_alloc_res_lg_act(hw, &lg_act_id, 2);
+	if (ret)
+		goto exit_error;
+
+	if (lg_act_id == ICE_INVAL_LG_ACT_INDEX)
+		goto exit_error;
+
+	/* Update the switch rule to add the counter action */
+	ret = ice_add_counter_act(hw, m_entry, counter_id, lg_act_id);
+	if (!ret) {
+		ice_release_lock(rule_lock);
+		return ret;
+	}
+
+exit_error:
+	ice_release_lock(rule_lock);
+	/* only remove entry if it did not exist previously */
+	if (!entry_exist)
+		ret = ice_remove_mac(hw, &l_head);
+
+	return ret;
+}
+
+/**
  * ice_replay_vsi_fltr - Replay filters for requested VSI
  * @hw: pointer to the hardware structure
  * @vsi_handle: driver VSI handle
diff --git a/drivers/net/ice/base/ice_switch.h b/drivers/net/ice/base/ice_switch.h
index 0d70b38f4..b396a486c 100644
--- a/drivers/net/ice/base/ice_switch.h
+++ b/drivers/net/ice/base/ice_switch.h
@@ -377,6 +377,11 @@ enum ice_status
 ice_remove_mac_vlan(struct ice_hw *hw, struct LIST_HEAD_TYPE *v_list);
 #endif /* !NO_MACVLAN_SUPPORT */
 
+enum ice_status
+ice_add_mac_with_sw_marker(struct ice_hw *hw, struct ice_fltr_info *f_info,
+			   u16 sw_marker);
+enum ice_status
+ice_add_mac_with_counter(struct ice_hw *hw, struct ice_fltr_info *f_info);
 void ice_remove_vsi_fltr(struct ice_hw *hw, u16 vsi_handle);
 
 
-- 
2.13.6

  parent reply	other threads:[~2019-03-25  5:43 UTC|newest]

Thread overview: 213+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-28  5:56 [dpdk-dev] [PATCH 00/37] share code update Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 01/37] net/ice/base: add switch resource allocation and free Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 02/37] net/ice/base: improve comments Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 03/37] net/ice/base: add two helper functions Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 04/37] net/ice/base: add helper macros Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 05/37] net/ice/base: allow package copy to be used after resets Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 06/37] net/ice/base: code clean Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 07/37] net/ice/base: declare functions as external Qi Zhang
2019-03-01 10:30   ` Ferruh Yigit
2019-03-04  7:24     ` Zhang, Qi Z
2019-02-28  5:56 ` [dpdk-dev] [PATCH 08/37] net/ice/base: add more APIs in switch module Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 09/37] net/ice/base: add VSI queue context framework Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 10/37] net/ice/base: add APIs to add remove ethertype filter Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 11/37] net/ice/base: add APIs to get allocated resources Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 12/37] net/ice/base: add APIs to alloc/free VLAN resource counter Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 13/37] net/ice/base: add APIs to get VSI promiscuous mode Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 14/37] net/ice/base: add MAC filter with marker and counter Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 15/37] net/ice/base: add two helper functions for flow management Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 16/37] net/ice/base: minor fix Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 17/37] net/ice/base: update macros Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 18/37] net/ice/base: code clean Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 19/37] net/ice/base: enable VSI queue context Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 20/37] net/ice/base: ensure only valid bits are set Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 21/37] net/ice/base: enhance get link status command Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 22/37] net/ice/base: add RSS key related macro and structures Qi Zhang
2019-02-28 16:54   ` Greenwalt, Paul
2019-02-28  5:56 ` [dpdk-dev] [PATCH 23/37] net/ice/base: do not write TCAM entries back Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 24/37] net/ice/base: remove local VSIG allocations Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 25/37] net/ice/base: minor fix Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 26/37] net/ice/base: update copyright time Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 27/37] net/ice/base: resolve static analysis reported issues Qi Zhang
2019-03-01 10:36   ` Ferruh Yigit
2019-03-04  1:54     ` Zhang, Qi Z
2019-02-28  5:56 ` [dpdk-dev] [PATCH 28/37] net/ice/base: return config error without queue to disable Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 29/37] net/ice/base: add function to check FW recovery mode Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 30/37] net/ice/base: change profile id reference counting Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 31/37] net/ice/base: add DCB support Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 32/37] net/ice/base: add FDIR support Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 33/37] net/ice/base: change profile priority for RSS reply Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 34/37] net/ice/base: remove duplicate resource allocations Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 35/37] net/ice/base: minor fix Qi Zhang
2019-02-28  5:56 ` [dpdk-dev] [PATCH 36/37] net/ice/base: increase prototol offset size Qi Zhang
2019-03-01 11:19   ` Ferruh Yigit
2019-03-04  6:03     ` Zhang, Qi Z
2019-02-28  5:56 ` [dpdk-dev] [PATCH 37/37] net/ice/base: revert the workaround for resource allocation Qi Zhang
2019-03-07 12:58 ` [dpdk-dev] [PATCH v2 00/37] ice share code update Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 01/37] net/ice/base: add switch resource allocation and free Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 02/37] net/ice/base: improve comments Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 03/37] net/ice/base: add two helper functions Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 04/37] net/ice/base: add helper macros Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 05/37] net/ice/base: allow package copy to be used after resets Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 06/37] net/ice/base: code clean Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 07/37] net/ice/base: declare functions as external Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 08/37] net/ice/base: add more APIs in switch module Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 09/37] net/ice/base: add VSI queue context framework Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 10/37] net/ice/base: add APIs to add remove ethertype filter Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 11/37] net/ice/base: add APIs to get allocated resources Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 12/37] net/ice/base: add APIs to alloc/free resource counter Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 13/37] net/ice/base: add APIs to get VSI promiscuous mode Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 14/37] net/ice/base: add MAC filter with marker and counter Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 15/37] net/ice/base: add two helper functions for flow management Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 16/37] net/ice/base: minor fix Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 17/37] net/ice/base: update macros Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 18/37] net/ice/base: code clean Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 19/37] net/ice/base: enable VSI queue context Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 20/37] net/ice/base: ensure only valid bits are set Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 21/37] net/ice/base: enhance get link status command Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 22/37] net/ice/base: add RSS key related macro and structures Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 23/37] net/ice/base: do not write TCAM entries back Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 24/37] net/ice/base: remove local VSIG allocations Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 25/37] net/ice/base: minor fix Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 26/37] net/ice/base: update copyright time Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 27/37] net/ice/base: fix static analysis reported issues Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 28/37] net/ice/base: return config error without queue to disable Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 29/37] net/ice/base: add function to check FW recovery mode Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 30/37] net/ice/base: change profile id reference counting Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 31/37] net/ice/base: add DCB support Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 32/37] net/ice/base: add FDIR support Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 33/37] net/ice/base: change profile priority for RSS reply Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 34/37] net/ice/base: fix duplicate resource allocations Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 35/37] net/ice/base: minor fix Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 36/37] net/ice/base: increase prototol offset size Qi Zhang
2019-03-07 12:58   ` [dpdk-dev] [PATCH v2 37/37] net/ice/base: revert the workaround for resource allocation Qi Zhang
2019-03-11  7:04 ` [dpdk-dev] [PATCH v3 00/38] ice share code update Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 01/38] net/ice/base: add switch resource allocation and free Qi Zhang
2019-03-15  0:46     ` Yang, Qiming
2019-03-15  0:46       ` Yang, Qiming
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 02/38] net/ice/base: improve comments Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 03/38] net/ice/base: add two helper functions Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 04/38] net/ice/base: add helper macros Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 05/38] net/ice/base: allow package copy to be used after resets Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 06/38] net/ice/base: code clean Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 07/38] net/ice/base: declare functions as external Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 08/38] net/ice/base: add more APIs in switch module Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 09/38] net/ice/base: add VSI queue context framework Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 10/38] net/ice/base: add APIs to add remove ethertype filter Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 11/38] net/ice/base: add APIs to get allocated resources Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 12/38] net/ice/base: add APIs to alloc/free resource counter Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 13/38] net/ice/base: add APIs to get VSI promiscuous mode Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 14/38] net/ice/base: add MAC filter with marker and counter Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 15/38] net/ice/base: add two helper functions for flow management Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 16/38] net/ice/base: minor fix Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 17/38] net/ice/base: update macros Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 18/38] net/ice/base: code clean Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 19/38] net/ice/base: enable VSI queue context Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 20/38] net/ice/base: ensure only valid bits are set Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 21/38] net/ice/base: enhance get link status command Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 22/38] net/ice/base: add RSS key related macro and structures Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 23/38] net/ice/base: do not write TCAM entries back Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 24/38] net/ice/base: remove local VSIG allocations Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 25/38] net/ice/base: minor fix Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 26/38] net/ice/base: update copyright time Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 27/38] net/ice/base: fix static analysis reported issues Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 28/38] net/ice/base: return config error without queue to disable Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 29/38] net/ice/base: add function to check FW recovery mode Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 30/38] net/ice/base: change profile id reference counting Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 31/38] net/ice/base: add DCB support Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 32/38] net/ice/base: add FDIR support Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 33/38] net/ice/base: change profile priority for RSS reply Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 34/38] net/ice/base: fix duplicate resource allocations Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 35/38] net/ice/base: minor fix Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 36/38] net/ice/base: increase prototol offset size Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 37/38] net/ice/base: revert the workaround for resource allocation Qi Zhang
2019-03-11  7:04   ` [dpdk-dev] [PATCH v3 38/38] net/ice/base: fix set UDP PTYPEs Qi Zhang
2019-03-11  7:27     ` Zhang, Qi Z
2019-03-18  8:37   ` [dpdk-dev] [PATCH v3 00/38] ice share code update Yang, Qiming
2019-03-18  8:37     ` Yang, Qiming
2019-03-19  3:28   ` Lu, Wenzhuo
2019-03-19  3:28     ` Lu, Wenzhuo
2019-03-25  5:44 ` [dpdk-dev] [PATCH v4 " Qi Zhang
2019-03-25  5:44   ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 01/38] net/ice/base: add switch resource allocation and free Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 02/38] net/ice/base: improve comments Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 03/38] net/ice/base: add two helper functions Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 04/38] net/ice/base: add helper macros Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 05/38] net/ice/base: allow package copy to be used after resets Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 06/38] net/ice/base: clean code Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 07/38] net/ice/base: declare functions as external Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 08/38] net/ice/base: add more APIs in switch module Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 09/38] net/ice/base: add VSI queue context framework Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 10/38] net/ice/base: add APIs to add remove ethertype filter Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 11/38] net/ice/base: add APIs to get allocated resources Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 12/38] net/ice/base: add APIs to alloc/free resource counter Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 13/38] net/ice/base: add APIs to get VSI promiscuous mode Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` Qi Zhang [this message]
2019-03-25  5:44     ` [dpdk-dev] [PATCH v4 14/38] net/ice/base: add MAC filter with marker and counter Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 15/38] net/ice/base: add two helper functions for flow management Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 16/38] net/ice/base: fix minor issues Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 17/38] net/ice/base: update macros Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 18/38] net/ice/base: clean code Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 19/38] net/ice/base: enable VSI queue context Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 20/38] net/ice/base: ensure only valid bits are set Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 21/38] net/ice/base: enhance get link status command Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 22/38] net/ice/base: add RSS key related macro and structures Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 23/38] net/ice/base: do not write TCAM entries back Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 24/38] net/ice/base: remove local VSIG allocations Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 25/38] net/ice/base: fix minor issues Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 26/38] net/ice/base: update copyright time Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 27/38] net/ice/base: fix Klockwork analysis reported issues Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 28/38] net/ice/base: return config error without queue to disable Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 29/38] net/ice/base: add function to check FW recovery mode Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 30/38] net/ice/base: change profile id reference counting Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 31/38] net/ice/base: add DCB support Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 32/38] net/ice/base: add FDIR support Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 33/38] net/ice/base: change profile priority for RSS reply Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 34/38] net/ice/base: fix duplicate resource allocations Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 35/38] net/ice/base: fix minor issues Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 36/38] net/ice/base: increase prototol offset size Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 37/38] net/ice/base: revert the workaround for resource allocation Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  5:44   ` [dpdk-dev] [PATCH v4 38/38] net/ice/base: rework on bit ops Qi Zhang
2019-03-25  5:44     ` Qi Zhang
2019-03-25  7:07   ` [dpdk-dev] [PATCH v4 00/38] ice share code update Zhang, Qi Z
2019-03-25  7:07     ` Zhang, Qi Z
2019-03-31 17:06     ` Thomas Monjalon
2019-03-31 17:06       ` Thomas Monjalon
2019-04-01  5:42       ` Zhang, Qi Z
2019-04-01  5:42         ` Zhang, Qi Z

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190325054452.2616-15-qi.z.zhang@intel.com \
    --to=qi.z.zhang@intel.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=paul.m.stillwell.jr@intel.com \
    --cc=qiming.yang@intel.com \
    --cc=wenzhuo.lu@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).