get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/54670/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 54670,
    "url": "http://patches.dpdk.org/api/patches/54670/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20190611155221.2703-14-leyi.rong@intel.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20190611155221.2703-14-leyi.rong@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20190611155221.2703-14-leyi.rong@intel.com",
    "date": "2019-06-11T15:51:28",
    "name": "[v2,13/66] net/ice/base: move RSS replay list",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "50c244a2e043ebc2251f9e64a5bfc65d594c74c9",
    "submitter": {
        "id": 1204,
        "url": "http://patches.dpdk.org/api/people/1204/?format=api",
        "name": "Leyi Rong",
        "email": "leyi.rong@intel.com"
    },
    "delegate": {
        "id": 1540,
        "url": "http://patches.dpdk.org/api/users/1540/?format=api",
        "username": "qzhan15",
        "first_name": "Qi",
        "last_name": "Zhang",
        "email": "qi.z.zhang@intel.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20190611155221.2703-14-leyi.rong@intel.com/mbox/",
    "series": [
        {
            "id": 4981,
            "url": "http://patches.dpdk.org/api/series/4981/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=4981",
            "date": "2019-06-11T15:51:15",
            "name": "shared code update",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/4981/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/54670/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/54670/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 7DFEB1C4CE;\n\tTue, 11 Jun 2019 17:54:12 +0200 (CEST)",
            "from mga02.intel.com (mga02.intel.com [134.134.136.20])\n\tby dpdk.org (Postfix) with ESMTP id 1CA1E1C464\n\tfor <dev@dpdk.org>; Tue, 11 Jun 2019 17:53:54 +0200 (CEST)",
            "from orsmga001.jf.intel.com ([10.7.209.18])\n\tby orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t11 Jun 2019 08:53:54 -0700",
            "from lrong-srv-03.sh.intel.com ([10.67.119.177])\n\tby orsmga001.jf.intel.com with ESMTP; 11 Jun 2019 08:53:53 -0700"
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "From": "Leyi Rong <leyi.rong@intel.com>",
        "To": "qi.z.zhang@intel.com",
        "Cc": "dev@dpdk.org, Leyi Rong <leyi.rong@intel.com>,\n\tVignesh Sridhar <vignesh.sridhar@intel.com>,\n\tHenry Tieman <henry.w.tieman@intel.com>,\n\tPaul M Stillwell Jr <paul.m.stillwell.jr@intel.com>",
        "Date": "Tue, 11 Jun 2019 23:51:28 +0800",
        "Message-Id": "<20190611155221.2703-14-leyi.rong@intel.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20190611155221.2703-1-leyi.rong@intel.com>",
        "References": "<20190604054248.68510-1-leyi.rong@intel.com>\n\t<20190611155221.2703-1-leyi.rong@intel.com>",
        "Subject": "[dpdk-dev] [PATCH v2 13/66] net/ice/base: move RSS replay list",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "1. Move the RSS list pointer and lock from the VSI context to the ice_hw\nstructure. This is to ensure that the RSS configurations added to the\nlist prior to reset and maintained until the PF is unloaded. This will\nensure that the configuration list is unaffected by VFRs that would\ndestroy the VSI context. This will allow the replay of RSS entries for\nVF VSI, as against current method of re-adding default configurations\nand also eliminates the need to re-allocate the RSS list and lock post-VFR.\n2. Align RSS flow functions to the new position of the RSS list and lock.\n3. Adding bitmap for flow type status.\n\nSigned-off-by: Vignesh Sridhar <vignesh.sridhar@intel.com>\nSigned-off-by: Henry Tieman <henry.w.tieman@intel.com>\nSigned-off-by: Paul M Stillwell Jr <paul.m.stillwell.jr@intel.com>\nSigned-off-by: Leyi Rong <leyi.rong@intel.com>\n---\n drivers/net/ice/base/ice_flow.c   | 100 +++++++++++++++++-------------\n drivers/net/ice/base/ice_flow.h   |   4 +-\n drivers/net/ice/base/ice_switch.c |   6 +-\n drivers/net/ice/base/ice_switch.h |   2 -\n drivers/net/ice/base/ice_type.h   |   3 +\n 5 files changed, 63 insertions(+), 52 deletions(-)",
    "diff": "diff --git a/drivers/net/ice/base/ice_flow.c b/drivers/net/ice/base/ice_flow.c\nindex d97fe1fc7..dccd7d3c7 100644\n--- a/drivers/net/ice/base/ice_flow.c\n+++ b/drivers/net/ice/base/ice_flow.c\n@@ -1605,27 +1605,32 @@ ice_flow_set_rss_seg_info(struct ice_flow_seg_info *segs, u64 hash_fields,\n }\n \n /**\n- * ice_rem_all_rss_vsi_ctx - remove all RSS configurations from VSI context\n+ * ice_rem_vsi_rss_list - remove VSI from RSS list\n  * @hw: pointer to the hardware structure\n  * @vsi_handle: software VSI handle\n  *\n+ * Remove the VSI from all RSS configurations in the list.\n  */\n-void ice_rem_all_rss_vsi_ctx(struct ice_hw *hw, u16 vsi_handle)\n+void ice_rem_vsi_rss_list(struct ice_hw *hw, u16 vsi_handle)\n {\n \tstruct ice_rss_cfg *r, *tmp;\n \n-\tif (!ice_is_vsi_valid(hw, vsi_handle) ||\n-\t    LIST_EMPTY(&hw->vsi_ctx[vsi_handle]->rss_list_head))\n+\tif (LIST_EMPTY(&hw->rss_list_head))\n \t\treturn;\n \n-\tice_acquire_lock(&hw->vsi_ctx[vsi_handle]->rss_locks);\n-\tLIST_FOR_EACH_ENTRY_SAFE(r, tmp,\n-\t\t\t\t &hw->vsi_ctx[vsi_handle]->rss_list_head,\n+\tice_acquire_lock(&hw->rss_locks);\n+\tLIST_FOR_EACH_ENTRY_SAFE(r, tmp, &hw->rss_list_head,\n \t\t\t\t ice_rss_cfg, l_entry) {\n-\t\tLIST_DEL(&r->l_entry);\n-\t\tice_free(hw, r);\n+\t\tif (ice_is_bit_set(r->vsis, vsi_handle)) {\n+\t\t\tice_clear_bit(vsi_handle, r->vsis);\n+\n+\t\t\tif (!ice_is_any_bit_set(r->vsis, ICE_MAX_VSI)) {\n+\t\t\t\tLIST_DEL(&r->l_entry);\n+\t\t\t\tice_free(hw, r);\n+\t\t\t}\n+\t\t}\n \t}\n-\tice_release_lock(&hw->vsi_ctx[vsi_handle]->rss_locks);\n+\tice_release_lock(&hw->rss_locks);\n }\n \n /**\n@@ -1667,7 +1672,7 @@ enum ice_status ice_rem_vsi_rss_cfg(struct ice_hw *hw, u16 vsi_handle)\n }\n \n /**\n- * ice_rem_rss_cfg_vsi_ctx - remove RSS configuration from VSI context\n+ * ice_rem_rss_list - remove RSS configuration from list\n  * @hw: pointer to the hardware structure\n  * @vsi_handle: software VSI handle\n  * @prof: pointer to flow profile\n@@ -1675,8 +1680,7 @@ enum ice_status ice_rem_vsi_rss_cfg(struct ice_hw *hw, u16 vsi_handle)\n  * Assumption: lock has already been acquired for RSS list\n  */\n static void\n-ice_rem_rss_cfg_vsi_ctx(struct ice_hw *hw, u16 vsi_handle,\n-\t\t\tstruct ice_flow_prof *prof)\n+ice_rem_rss_list(struct ice_hw *hw, u16 vsi_handle, struct ice_flow_prof *prof)\n {\n \tstruct ice_rss_cfg *r, *tmp;\n \n@@ -1684,20 +1688,22 @@ ice_rem_rss_cfg_vsi_ctx(struct ice_hw *hw, u16 vsi_handle,\n \t * hash configurations associated to the flow profile. If found\n \t * remove from the RSS entry list of the VSI context and delete entry.\n \t */\n-\tLIST_FOR_EACH_ENTRY_SAFE(r, tmp,\n-\t\t\t\t &hw->vsi_ctx[vsi_handle]->rss_list_head,\n+\tLIST_FOR_EACH_ENTRY_SAFE(r, tmp, &hw->rss_list_head,\n \t\t\t\t ice_rss_cfg, l_entry) {\n \t\tif (r->hashed_flds == prof->segs[prof->segs_cnt - 1].match &&\n \t\t    r->packet_hdr == prof->segs[prof->segs_cnt - 1].hdrs) {\n-\t\t\tLIST_DEL(&r->l_entry);\n-\t\t\tice_free(hw, r);\n+\t\t\tice_clear_bit(vsi_handle, r->vsis);\n+\t\t\tif (!ice_is_any_bit_set(r->vsis, ICE_MAX_VSI)) {\n+\t\t\t\tLIST_DEL(&r->l_entry);\n+\t\t\t\tice_free(hw, r);\n+\t\t\t}\n \t\t\treturn;\n \t\t}\n \t}\n }\n \n /**\n- * ice_add_rss_vsi_ctx - add RSS configuration to VSI context\n+ * ice_add_rss_list - add RSS configuration to list\n  * @hw: pointer to the hardware structure\n  * @vsi_handle: software VSI handle\n  * @prof: pointer to flow profile\n@@ -1705,16 +1711,17 @@ ice_rem_rss_cfg_vsi_ctx(struct ice_hw *hw, u16 vsi_handle,\n  * Assumption: lock has already been acquired for RSS list\n  */\n static enum ice_status\n-ice_add_rss_vsi_ctx(struct ice_hw *hw, u16 vsi_handle,\n-\t\t    struct ice_flow_prof *prof)\n+ice_add_rss_list(struct ice_hw *hw, u16 vsi_handle, struct ice_flow_prof *prof)\n {\n \tstruct ice_rss_cfg *r, *rss_cfg;\n \n-\tLIST_FOR_EACH_ENTRY(r, &hw->vsi_ctx[vsi_handle]->rss_list_head,\n+\tLIST_FOR_EACH_ENTRY(r, &hw->rss_list_head,\n \t\t\t    ice_rss_cfg, l_entry)\n \t\tif (r->hashed_flds == prof->segs[prof->segs_cnt - 1].match &&\n-\t\t    r->packet_hdr == prof->segs[prof->segs_cnt - 1].hdrs)\n+\t\t    r->packet_hdr == prof->segs[prof->segs_cnt - 1].hdrs) {\n+\t\t\tice_set_bit(vsi_handle, r->vsis);\n \t\t\treturn ICE_SUCCESS;\n+\t\t}\n \n \trss_cfg = (struct ice_rss_cfg *)ice_malloc(hw, sizeof(*rss_cfg));\n \tif (!rss_cfg)\n@@ -1722,8 +1729,9 @@ ice_add_rss_vsi_ctx(struct ice_hw *hw, u16 vsi_handle,\n \n \trss_cfg->hashed_flds = prof->segs[prof->segs_cnt - 1].match;\n \trss_cfg->packet_hdr = prof->segs[prof->segs_cnt - 1].hdrs;\n-\tLIST_ADD_TAIL(&rss_cfg->l_entry,\n-\t\t      &hw->vsi_ctx[vsi_handle]->rss_list_head);\n+\tice_set_bit(vsi_handle, rss_cfg->vsis);\n+\n+\tLIST_ADD_TAIL(&rss_cfg->l_entry, &hw->rss_list_head);\n \n \treturn ICE_SUCCESS;\n }\n@@ -1785,7 +1793,7 @@ ice_add_rss_cfg_sync(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,\n \tif (prof) {\n \t\tstatus = ice_flow_disassoc_prof(hw, blk, prof, vsi_handle);\n \t\tif (!status)\n-\t\t\tice_rem_rss_cfg_vsi_ctx(hw, vsi_handle, prof);\n+\t\t\tice_rem_rss_list(hw, vsi_handle, prof);\n \t\telse\n \t\t\tgoto exit;\n \n@@ -1806,7 +1814,7 @@ ice_add_rss_cfg_sync(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,\n \tif (prof) {\n \t\tstatus = ice_flow_assoc_prof(hw, blk, prof, vsi_handle);\n \t\tif (!status)\n-\t\t\tstatus = ice_add_rss_vsi_ctx(hw, vsi_handle, prof);\n+\t\t\tstatus = ice_add_rss_list(hw, vsi_handle, prof);\n \t\tgoto exit;\n \t}\n \n@@ -1828,7 +1836,7 @@ ice_add_rss_cfg_sync(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,\n \t\tgoto exit;\n \t}\n \n-\tstatus = ice_add_rss_vsi_ctx(hw, vsi_handle, prof);\n+\tstatus = ice_add_rss_list(hw, vsi_handle, prof);\n \n exit:\n \tice_free(hw, segs);\n@@ -1856,9 +1864,9 @@ ice_add_rss_cfg(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,\n \t    !ice_is_vsi_valid(hw, vsi_handle))\n \t\treturn ICE_ERR_PARAM;\n \n-\tice_acquire_lock(&hw->vsi_ctx[vsi_handle]->rss_locks);\n+\tice_acquire_lock(&hw->rss_locks);\n \tstatus = ice_add_rss_cfg_sync(hw, vsi_handle, hashed_flds, addl_hdrs);\n-\tice_release_lock(&hw->vsi_ctx[vsi_handle]->rss_locks);\n+\tice_release_lock(&hw->rss_locks);\n \n \treturn status;\n }\n@@ -1905,7 +1913,7 @@ ice_rem_rss_cfg_sync(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,\n \t/* Remove RSS configuration from VSI context before deleting\n \t * the flow profile.\n \t */\n-\tice_rem_rss_cfg_vsi_ctx(hw, vsi_handle, prof);\n+\tice_rem_rss_list(hw, vsi_handle, prof);\n \n \tif (!ice_is_any_bit_set(prof->vsis, ICE_MAX_VSI))\n \t\tstatus = ice_flow_rem_prof_sync(hw, blk, prof);\n@@ -2066,15 +2074,15 @@ ice_rem_rss_cfg(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,\n \t    !ice_is_vsi_valid(hw, vsi_handle))\n \t\treturn ICE_ERR_PARAM;\n \n-\tice_acquire_lock(&hw->vsi_ctx[vsi_handle]->rss_locks);\n+\tice_acquire_lock(&hw->rss_locks);\n \tstatus = ice_rem_rss_cfg_sync(hw, vsi_handle, hashed_flds, addl_hdrs);\n-\tice_release_lock(&hw->vsi_ctx[vsi_handle]->rss_locks);\n+\tice_release_lock(&hw->rss_locks);\n \n \treturn status;\n }\n \n /**\n- * ice_replay_rss_cfg - remove RSS configurations associated with VSI\n+ * ice_replay_rss_cfg - replay RSS configurations associated with VSI\n  * @hw: pointer to the hardware structure\n  * @vsi_handle: software VSI handle\n  */\n@@ -2086,15 +2094,18 @@ enum ice_status ice_replay_rss_cfg(struct ice_hw *hw, u16 vsi_handle)\n \tif (!ice_is_vsi_valid(hw, vsi_handle))\n \t\treturn ICE_ERR_PARAM;\n \n-\tice_acquire_lock(&hw->vsi_ctx[vsi_handle]->rss_locks);\n-\tLIST_FOR_EACH_ENTRY(r, &hw->vsi_ctx[vsi_handle]->rss_list_head,\n+\tice_acquire_lock(&hw->rss_locks);\n+\tLIST_FOR_EACH_ENTRY(r, &hw->rss_list_head,\n \t\t\t    ice_rss_cfg, l_entry) {\n-\t\tstatus = ice_add_rss_cfg_sync(hw, vsi_handle, r->hashed_flds,\n-\t\t\t\t\t      r->packet_hdr);\n-\t\tif (status)\n-\t\t\tbreak;\n+\t\tif (ice_is_bit_set(r->vsis, vsi_handle)) {\n+\t\t\tstatus = ice_add_rss_cfg_sync(hw, vsi_handle,\n+\t\t\t\t\t\t      r->hashed_flds,\n+\t\t\t\t\t\t      r->packet_hdr);\n+\t\t\tif (status)\n+\t\t\t\tbreak;\n+\t\t}\n \t}\n-\tice_release_lock(&hw->vsi_ctx[vsi_handle]->rss_locks);\n+\tice_release_lock(&hw->rss_locks);\n \n \treturn status;\n }\n@@ -2116,14 +2127,15 @@ u64 ice_get_rss_cfg(struct ice_hw *hw, u16 vsi_handle, u32 hdrs)\n \tif (hdrs == ICE_FLOW_SEG_HDR_NONE || !ice_is_vsi_valid(hw, vsi_handle))\n \t\treturn ICE_HASH_INVALID;\n \n-\tice_acquire_lock(&hw->vsi_ctx[vsi_handle]->rss_locks);\n-\tLIST_FOR_EACH_ENTRY(r, &hw->vsi_ctx[vsi_handle]->rss_list_head,\n+\tice_acquire_lock(&hw->rss_locks);\n+\tLIST_FOR_EACH_ENTRY(r, &hw->rss_list_head,\n \t\t\t    ice_rss_cfg, l_entry)\n-\t\tif (r->packet_hdr == hdrs) {\n+\t\tif (ice_is_bit_set(r->vsis, vsi_handle) &&\n+\t\t    r->packet_hdr == hdrs) {\n \t\t\trss_cfg = r;\n \t\t\tbreak;\n \t\t}\n-\tice_release_lock(&hw->vsi_ctx[vsi_handle]->rss_locks);\n+\tice_release_lock(&hw->rss_locks);\n \n \treturn rss_cfg ? rss_cfg->hashed_flds : ICE_HASH_INVALID;\n }\ndiff --git a/drivers/net/ice/base/ice_flow.h b/drivers/net/ice/base/ice_flow.h\nindex f0c74a348..4fa13064e 100644\n--- a/drivers/net/ice/base/ice_flow.h\n+++ b/drivers/net/ice/base/ice_flow.h\n@@ -270,6 +270,8 @@ struct ice_flow_prof {\n \n struct ice_rss_cfg {\n \tstruct LIST_ENTRY_TYPE l_entry;\n+\t/* bitmap of VSIs added to the RSS entry */\n+\tice_declare_bitmap(vsis, ICE_MAX_VSI);\n \tu64 hashed_flds;\n \tu32 packet_hdr;\n };\n@@ -338,7 +340,7 @@ ice_flow_set_fld_prefix(struct ice_flow_seg_info *seg, enum ice_flow_field fld,\n void\n ice_flow_add_fld_raw(struct ice_flow_seg_info *seg, u16 off, u8 len,\n \t\t     u16 val_loc, u16 mask_loc);\n-void ice_rem_all_rss_vsi_ctx(struct ice_hw *hw, u16 vsi_handle);\n+void ice_rem_vsi_rss_list(struct ice_hw *hw, u16 vsi_handle);\n enum ice_status ice_replay_rss_cfg(struct ice_hw *hw, u16 vsi_handle);\n enum ice_status\n ice_add_avf_rss_cfg(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds);\ndiff --git a/drivers/net/ice/base/ice_switch.c b/drivers/net/ice/base/ice_switch.c\nindex 3719ac4bb..7cccaf4d3 100644\n--- a/drivers/net/ice/base/ice_switch.c\n+++ b/drivers/net/ice/base/ice_switch.c\n@@ -686,10 +686,7 @@ static void ice_clear_vsi_ctx(struct ice_hw *hw, u16 vsi_handle)\n \n \tvsi = ice_get_vsi_ctx(hw, vsi_handle);\n \tif (vsi) {\n-\t\tif (!LIST_EMPTY(&vsi->rss_list_head))\n-\t\t\tice_rem_all_rss_vsi_ctx(hw, vsi_handle);\n \t\tice_clear_vsi_q_ctx(hw, vsi_handle);\n-\t\tice_destroy_lock(&vsi->rss_locks);\n \t\tice_free(hw, vsi);\n \t\thw->vsi_ctx[vsi_handle] = NULL;\n \t}\n@@ -740,8 +737,7 @@ ice_add_vsi(struct ice_hw *hw, u16 vsi_handle, struct ice_vsi_ctx *vsi_ctx,\n \t\t\treturn ICE_ERR_NO_MEMORY;\n \t\t}\n \t\t*tmp_vsi_ctx = *vsi_ctx;\n-\t\tice_init_lock(&tmp_vsi_ctx->rss_locks);\n-\t\tINIT_LIST_HEAD(&tmp_vsi_ctx->rss_list_head);\n+\n \t\tice_save_vsi_ctx(hw, vsi_handle, tmp_vsi_ctx);\n \t} else {\n \t\t/* update with new HW VSI num */\ndiff --git a/drivers/net/ice/base/ice_switch.h b/drivers/net/ice/base/ice_switch.h\nindex e3fb0434d..2f140a86d 100644\n--- a/drivers/net/ice/base/ice_switch.h\n+++ b/drivers/net/ice/base/ice_switch.h\n@@ -32,8 +32,6 @@ struct ice_vsi_ctx {\n \tu8 alloc_from_pool;\n \tu16 num_lan_q_entries[ICE_MAX_TRAFFIC_CLASS];\n \tstruct ice_q_ctx *lan_q_ctx[ICE_MAX_TRAFFIC_CLASS];\n-\tstruct ice_lock rss_locks;\t/* protect rss config in VSI ctx */\n-\tstruct LIST_HEAD_TYPE rss_list_head;\n };\n \n /* This is to be used by add/update mirror rule Admin Queue command */\ndiff --git a/drivers/net/ice/base/ice_type.h b/drivers/net/ice/base/ice_type.h\nindex b229be158..45b0b3c05 100644\n--- a/drivers/net/ice/base/ice_type.h\n+++ b/drivers/net/ice/base/ice_type.h\n@@ -817,6 +817,9 @@ struct ice_hw {\n \tu16 fdir_fltr_cnt[ICE_FLTR_PTYPE_MAX];\n \n \tstruct ice_fd_hw_prof **fdir_prof;\n+\tice_declare_bitmap(fdir_perfect_fltr, ICE_FLTR_PTYPE_MAX);\n+\tstruct ice_lock rss_locks;\t/* protect RSS configuration */\n+\tstruct LIST_HEAD_TYPE rss_list_head;\n };\n \n /* Statistics collected by each port, VSI, VEB, and S-channel */\n",
    "prefixes": [
        "v2",
        "13/66"
    ]
}