1. ICE_SW_LKUP_LAST need to be handled correctly in
ice_aq_alloc_free_vsi_list and ice_update_vsi_list_rule
2. ICE_SW_LKUP_ETHERTYPE_MAC need to be handled correctly in
ice_update_vsi_lkup_fltr
3. free package segment pointer during ice_deinit_hw

Fixes: c7dd15931183 ("net/ice/base: add virtual switch code")
Fixes: 453d087ccaff ("net/ice/base: add common functions")

Signed-off-by: Paul M Stillwell Jr <paul.m.stillwell...@intel.com>
Signed-off-by: Qi Zhang <qi.z.zh...@intel.com>
---
 drivers/net/ice/base/ice_common.c | 1 +
 drivers/net/ice/base/ice_switch.c | 8 ++++++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ice/base/ice_common.c 
b/drivers/net/ice/base/ice_common.c
index 015db11e0..4085ccc12 100644
--- a/drivers/net/ice/base/ice_common.c
+++ b/drivers/net/ice/base/ice_common.c
@@ -938,6 +938,7 @@ void ice_deinit_hw(struct ice_hw *hw)
 
        ice_sched_cleanup_all(hw);
        ice_sched_clear_agg(hw);
+       ice_free_seg(hw);
 
        if (hw->port_info) {
                ice_free(hw, hw->port_info);
diff --git a/drivers/net/ice/base/ice_switch.c 
b/drivers/net/ice/base/ice_switch.c
index a0c39b5d7..e47c1d845 100644
--- a/drivers/net/ice/base/ice_switch.c
+++ b/drivers/net/ice/base/ice_switch.c
@@ -792,7 +792,8 @@ ice_aq_alloc_free_vsi_list(struct ice_hw *hw, u16 
*vsi_list_id,
            lkup_type == ICE_SW_LKUP_ETHERTYPE ||
            lkup_type == ICE_SW_LKUP_ETHERTYPE_MAC ||
            lkup_type == ICE_SW_LKUP_PROMISC ||
-           lkup_type == ICE_SW_LKUP_PROMISC_VLAN) {
+           lkup_type == ICE_SW_LKUP_PROMISC_VLAN ||
+           lkup_type == ICE_SW_LKUP_LAST) {
                sw_buf->res_type = CPU_TO_LE16(ICE_AQC_RES_TYPE_VSI_LIST_REP);
        } else if (lkup_type == ICE_SW_LKUP_VLAN) {
                sw_buf->res_type =
@@ -1492,7 +1493,8 @@ ice_update_vsi_list_rule(struct ice_hw *hw, u16 
*vsi_handle_arr, u16 num_vsi,
            lkup_type == ICE_SW_LKUP_ETHERTYPE ||
            lkup_type == ICE_SW_LKUP_ETHERTYPE_MAC ||
            lkup_type == ICE_SW_LKUP_PROMISC ||
-           lkup_type == ICE_SW_LKUP_PROMISC_VLAN)
+           lkup_type == ICE_SW_LKUP_PROMISC_VLAN ||
+           lkup_type == ICE_SW_LKUP_LAST)
                type = remove ? ICE_AQC_SW_RULES_T_VSI_LIST_CLEAR :
                                ICE_AQC_SW_RULES_T_VSI_LIST_SET;
        else if (lkup_type == ICE_SW_LKUP_VLAN)
@@ -3388,6 +3390,8 @@ ice_remove_vsi_lkup_fltr(struct ice_hw *hw, u16 
vsi_handle,
                break;
        case ICE_SW_LKUP_ETHERTYPE:
        case ICE_SW_LKUP_ETHERTYPE_MAC:
+               ice_remove_eth_mac(hw, &remove_list_head);
+               break;
        case ICE_SW_LKUP_DFLT:
                ice_debug(hw, ICE_DBG_SW,
                          "Remove filters for this lookup type hasn't been 
implemented yet\n");
-- 
2.13.6

Reply via email to