Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/618187/?format=api
{ "id": 618187, "url": "http://patchwork.ozlabs.org/api/patches/618187/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/1462313600-3123-5-git-send-email-bimmy.pujari@intel.com/", "project": { "id": 46, "url": "http://patchwork.ozlabs.org/api/projects/46/?format=api", "name": "Intel Wired Ethernet development", "link_name": "intel-wired-lan", "list_id": "intel-wired-lan.osuosl.org", "list_email": "intel-wired-lan@osuosl.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<1462313600-3123-5-git-send-email-bimmy.pujari@intel.com>", "list_archive_url": null, "date": "2016-05-03T22:13:12", "name": "[next,S36,04/12] i40e: Add vf-true-promisc-support priv flag", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "bb03fa20855aeac6ed1afce710bc674feab8d1f7", "submitter": { "id": 68919, "url": "http://patchwork.ozlabs.org/api/people/68919/?format=api", "name": "Pujari, Bimmy", "email": "bimmy.pujari@intel.com" }, "delegate": { "id": 68, "url": "http://patchwork.ozlabs.org/api/users/68/?format=api", "username": "jtkirshe", "first_name": "Jeff", "last_name": "Kirsher", "email": "jeffrey.t.kirsher@intel.com" }, "mbox": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/1462313600-3123-5-git-send-email-bimmy.pujari@intel.com/mbox/", "series": [], "comments": "http://patchwork.ozlabs.org/api/patches/618187/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/618187/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<intel-wired-lan-bounces@lists.osuosl.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "intel-wired-lan@lists.osuosl.org" ], "Delivered-To": [ "patchwork-incoming@bilbo.ozlabs.org", "intel-wired-lan@lists.osuosl.org" ], "Received": [ "from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133])\n\tby ozlabs.org (Postfix) with ESMTP id 3qzxkp41frz9t69\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 4 May 2016 09:11:46 +1000 (AEST)", "from localhost (localhost [127.0.0.1])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id C31F682975;\n\tTue, 3 May 2016 23:11:45 +0000 (UTC)", "from hemlock.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id sJstIIC+LiJk; Tue, 3 May 2016 23:11:42 +0000 (UTC)", "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id C2F378758F;\n\tTue, 3 May 2016 23:11:41 +0000 (UTC)", "from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n\tby ash.osuosl.org (Postfix) with ESMTP id 5A0EC1C0E66\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue, 3 May 2016 23:11:39 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id 53B6C300AA\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue, 3 May 2016 23:11:39 +0000 (UTC)", "from silver.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id 5oyrGlf-zSox for <intel-wired-lan@lists.osuosl.org>;\n\tTue, 3 May 2016 23:11:37 +0000 (UTC)", "from mga04.intel.com (mga04.intel.com [192.55.52.120])\n\tby silver.osuosl.org (Postfix) with ESMTP id A698E30AB4\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue, 3 May 2016 23:11:37 +0000 (UTC)", "from orsmga002.jf.intel.com ([10.7.209.21])\n\tby fmsmga104.fm.intel.com with ESMTP; 03 May 2016 16:11:20 -0700", "from bimmy.jf.intel.com (HELO bimmy.linux1.jf.intel.com)\n\t([134.134.2.117])\n\tby orsmga002.jf.intel.com with ESMTP; 03 May 2016 16:11:20 -0700" ], "X-Virus-Scanned": [ "amavisd-new at osuosl.org", "amavisd-new at osuosl.org" ], "X-Greylist": "domain auto-whitelisted by SQLgrey-1.7.6", "X-ExtLoop1": "1", "X-IronPort-AV": "E=Sophos;i=\"5.24,574,1455004800\"; d=\"scan'208\";a=\"968055126\"", "From": "Bimmy Pujari <bimmy.pujari@intel.com>", "To": "intel-wired-lan@lists.osuosl.org", "Date": "Tue, 3 May 2016 15:13:12 -0700", "Message-Id": "<1462313600-3123-5-git-send-email-bimmy.pujari@intel.com>", "X-Mailer": "git-send-email 2.4.11", "In-Reply-To": "<1462313600-3123-1-git-send-email-bimmy.pujari@intel.com>", "References": "<1462313600-3123-1-git-send-email-bimmy.pujari@intel.com>", "Subject": "[Intel-wired-lan] [next PATCH S36 04/12] i40e: Add\n\tvf-true-promisc-support priv flag", "X-BeenThere": "intel-wired-lan@lists.osuosl.org", "X-Mailman-Version": "2.1.18-1", "Precedence": "list", "List-Id": "Intel Wired Ethernet Linux Kernel Driver Development\n\t<intel-wired-lan.lists.osuosl.org>", "List-Unsubscribe": "<http://lists.osuosl.org/mailman/options/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@lists.osuosl.org?subject=unsubscribe>", "List-Archive": "<http://lists.osuosl.org/pipermail/intel-wired-lan/>", "List-Post": "<mailto:intel-wired-lan@lists.osuosl.org>", "List-Help": "<mailto:intel-wired-lan-request@lists.osuosl.org?subject=help>", "List-Subscribe": "<http://lists.osuosl.org/mailman/listinfo/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@lists.osuosl.org?subject=subscribe>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=\"us-ascii\"", "Content-Transfer-Encoding": "7bit", "Errors-To": "intel-wired-lan-bounces@lists.osuosl.org", "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@lists.osuosl.org>" }, "content": "From: Anjali Singhai Jain <anjali.singhai@intel.com>\n\nThis patch adds priv-flag knob to configure global true promisc\nsupport. With this patch the user can decide the flavor of\npromiscuous that the VFs will see when promiscuous mode is enabled\non the interface. Since this a global setting for the whole device,\nthe priv-flag is exposed only on the first PF of the device.\n\nThe default is true promisc support is off, which means the promisc\nmode for the VF will be limited/defport mode.\n\nFor the PF, we still will be in limited promisc unless in MFP mode\nirrespective of the flavor picked through this knob.\n\nUsage:\nOn PF0\nethtool --show-priv-flags p261p1\nPrivate flags for p261p1:\nMFP : off\nLinkPolling : off\nflow-director-atr : on\nveb-stats : off\nhw-atr-eviction : off\nvf-true-promisc-support: off\n\nto enable setting true promisc\nethtool --set-priv-flags p261p1 vf-true-promisc-support on\n\nAt this point if the VF is set to trust and promisc is enabled\non the VF through\nip link set ... promisc on\nThe VF/VFs will be able to see ALL ingress traffic\n\nSigned-off-by: Anjali Singhai Jain <anjali.singhai@intel.com>\nChange-Id: I8fac4b6eb1af9ca77b5376b79c50bdce5055bd94\n---\n drivers/net/ethernet/intel/i40e/i40e.h | 12 ++--\n drivers/net/ethernet/intel/i40e/i40e_common.c | 9 ++-\n drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 72 +++++++++++++++++++---\n drivers/net/ethernet/intel/i40e/i40e_main.c | 30 ++++++++-\n drivers/net/ethernet/intel/i40e/i40e_prototype.h | 3 +-\n drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 3 +-\n 6 files changed, 111 insertions(+), 18 deletions(-)", "diff": "diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h\nindex 0d9038f..005ab0a 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e.h\n+++ b/drivers/net/ethernet/intel/i40e/i40e.h\n@@ -97,11 +97,12 @@\n #define I40E_INT_NAME_STR_LEN (IFNAMSIZ + 16)\n \n /* Ethtool Private Flags */\n-#define I40E_PRIV_FLAGS_NPAR_FLAG\tBIT(0)\n-#define I40E_PRIV_FLAGS_LINKPOLL_FLAG\tBIT(1)\n-#define I40E_PRIV_FLAGS_FD_ATR\t\tBIT(2)\n-#define I40E_PRIV_FLAGS_VEB_STATS\tBIT(3)\n-#define I40E_PRIV_FLAGS_HW_ATR_EVICT\tBIT(5)\n+#define\tI40E_PRIV_FLAGS_MFP_FLAG\t\tBIT(0)\n+#define\tI40E_PRIV_FLAGS_LINKPOLL_FLAG\t\tBIT(1)\n+#define I40E_PRIV_FLAGS_FD_ATR\t\t\tBIT(2)\n+#define I40E_PRIV_FLAGS_VEB_STATS\t\tBIT(3)\n+#define I40E_PRIV_FLAGS_HW_ATR_EVICT\t\tBIT(4)\n+#define I40E_PRIV_FLAGS_TRUE_PROMISC_SUPPORT\tBIT(5)\n \n #define I40E_NVM_VERSION_LO_SHIFT 0\n #define I40E_NVM_VERSION_LO_MASK (0xff << I40E_NVM_VERSION_LO_SHIFT)\n@@ -373,6 +374,7 @@ struct i40e_pf {\n #define I40E_FLAG_STOP_FW_LLDP\t\t\tBIT_ULL(47)\n #define I40E_FLAG_HAVE_10GBASET_PHY\t\tBIT_ULL(48)\n #define I40E_FLAG_PF_MAC\t\t\tBIT_ULL(50)\n+#define I40E_FLAG_TRUE_PROMISC_SUPPORT\t\tBIT_ULL(51)\n \n \t/* tracks features that get auto disabled by errors */\n \tu64 auto_disable_flags;\ndiff --git a/drivers/net/ethernet/intel/i40e/i40e_common.c b/drivers/net/ethernet/intel/i40e/i40e_common.c\nindex 4739a9c..27c6f9d 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_common.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_common.c\n@@ -1972,10 +1972,12 @@ aq_add_vsi_exit:\n * @seid: vsi number\n * @set: set unicast promiscuous enable/disable\n * @cmd_details: pointer to command details structure or NULL\n+ * @rx_only_promisc: flag to decide if egress traffic gets mirrored in promisc\n **/\n i40e_status i40e_aq_set_vsi_unicast_promiscuous(struct i40e_hw *hw,\n \t\t\t\tu16 seid, bool set,\n-\t\t\t\tstruct i40e_asq_cmd_details *cmd_details)\n+\t\t\t\tstruct i40e_asq_cmd_details *cmd_details,\n+\t\t\t\tbool rx_only_promisc)\n {\n \tstruct i40e_aq_desc desc;\n \tstruct i40e_aqc_set_vsi_promiscuous_modes *cmd =\n@@ -1988,8 +1990,9 @@ i40e_status i40e_aq_set_vsi_unicast_promiscuous(struct i40e_hw *hw,\n \n \tif (set) {\n \t\tflags |= I40E_AQC_SET_VSI_PROMISC_UNICAST;\n-\t\tif (((hw->aq.api_maj_ver == 1) && (hw->aq.api_min_ver >= 5)) ||\n-\t\t (hw->aq.api_maj_ver > 1))\n+\t\tif (rx_only_promisc &&\n+\t\t (((hw->aq.api_maj_ver == 1) && (hw->aq.api_min_ver >= 5)) ||\n+\t\t (hw->aq.api_maj_ver > 1)))\n \t\t\tflags |= I40E_AQC_SET_VSI_PROMISC_TX;\n \t}\n \ndiff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c\nindex 8460723..a9ff781 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c\n@@ -230,6 +230,17 @@ static const char i40e_gstrings_test[][ETH_GSTRING_LEN] = {\n \n #define I40E_TEST_LEN (sizeof(i40e_gstrings_test) / ETH_GSTRING_LEN)\n \n+static const char i40e_priv_flags_strings_gl[][ETH_GSTRING_LEN] = {\n+\t\"MFP\",\n+\t\"LinkPolling\",\n+\t\"flow-director-atr\",\n+\t\"veb-stats\",\n+\t\"hw-atr-eviction\",\n+\t\"vf-true-promisc-support\",\n+};\n+\n+#define I40E_PRIV_FLAGS_GL_STR_LEN ARRAY_SIZE(i40e_priv_flags_strings_gl)\n+\n static const char i40e_priv_flags_strings[][ETH_GSTRING_LEN] = {\n \t\"NPAR\",\n \t\"LinkPolling\",\n@@ -1158,6 +1169,10 @@ static void i40e_get_drvinfo(struct net_device *netdev,\n \t\tsizeof(drvinfo->fw_version));\n \tstrlcpy(drvinfo->bus_info, pci_name(pf->pdev),\n \t\tsizeof(drvinfo->bus_info));\n+\tif (pf->hw.pf_id == 0)\n+\t\tdrvinfo->n_priv_flags = I40E_PRIV_FLAGS_GL_STR_LEN;\n+\telse\n+\t\tdrvinfo->n_priv_flags = I40E_PRIV_FLAGS_STR_LEN;\n }\n \n static void i40e_get_ringparam(struct net_device *netdev,\n@@ -1385,7 +1400,10 @@ static int i40e_get_sset_count(struct net_device *netdev, int sset)\n \t\t\treturn I40E_VSI_STATS_LEN(netdev);\n \t\t}\n \tcase ETH_SS_PRIV_FLAGS:\n-\t\treturn I40E_PRIV_FLAGS_STR_LEN;\n+\t\tif (pf->hw.pf_id == 0)\n+\t\t\treturn I40E_PRIV_FLAGS_GL_STR_LEN;\n+\t\telse\n+\t\t\treturn I40E_PRIV_FLAGS_STR_LEN;\n \tdefault:\n \t\treturn -EOPNOTSUPP;\n \t}\n@@ -1583,10 +1601,18 @@ static void i40e_get_strings(struct net_device *netdev, u32 stringset,\n \t\t/* BUG_ON(p - data != I40E_STATS_LEN * ETH_GSTRING_LEN); */\n \t\tbreak;\n \tcase ETH_SS_PRIV_FLAGS:\n-\t\tfor (i = 0; i < I40E_PRIV_FLAGS_STR_LEN; i++) {\n-\t\t\tmemcpy(data, i40e_priv_flags_strings[i],\n-\t\t\t ETH_GSTRING_LEN);\n-\t\t\tdata += ETH_GSTRING_LEN;\n+\t\tif (pf->hw.pf_id == 0) {\n+\t\t\tfor (i = 0; i < I40E_PRIV_FLAGS_GL_STR_LEN; i++) {\n+\t\t\t\tmemcpy(data, i40e_priv_flags_strings_gl[i],\n+\t\t\t\t ETH_GSTRING_LEN);\n+\t\t\t\tdata += ETH_GSTRING_LEN;\n+\t\t\t}\n+\t\t} else {\n+\t\t\tfor (i = 0; i < I40E_PRIV_FLAGS_STR_LEN; i++) {\n+\t\t\t\tmemcpy(data, i40e_priv_flags_strings[i],\n+\t\t\t\t ETH_GSTRING_LEN);\n+\t\t\t\tdata += ETH_GSTRING_LEN;\n+\t\t\t}\n \t\t}\n \t\tbreak;\n \tdefault:\n@@ -2969,8 +2995,6 @@ static u32 i40e_get_priv_flags(struct net_device *dev)\n \tstruct i40e_pf *pf = vsi->back;\n \tu32 ret_flags = 0;\n \n-\tret_flags |= pf->hw.func_caps.npar_enable ?\n-\t\tI40E_PRIV_FLAGS_NPAR_FLAG : 0;\n \tret_flags |= pf->flags & I40E_FLAG_LINK_POLLING_ENABLED ?\n \t\tI40E_PRIV_FLAGS_LINKPOLL_FLAG : 0;\n \tret_flags |= pf->flags & I40E_FLAG_FD_ATR_ENABLED ?\n@@ -2979,6 +3003,10 @@ static u32 i40e_get_priv_flags(struct net_device *dev)\n \t\tI40E_PRIV_FLAGS_VEB_STATS : 0;\n \tret_flags |= pf->auto_disable_flags & I40E_FLAG_HW_ATR_EVICT_CAPABLE ?\n \t\t0 : I40E_PRIV_FLAGS_HW_ATR_EVICT;\n+\tif (pf->hw.pf_id == 0) {\n+\t\tret_flags |= pf->flags & I40E_FLAG_TRUE_PROMISC_SUPPORT ?\n+\t\t\tI40E_PRIV_FLAGS_TRUE_PROMISC_SUPPORT : 0;\n+\t}\n \n \treturn ret_flags;\n }\n@@ -2993,7 +3021,10 @@ static int i40e_set_priv_flags(struct net_device *dev, u32 flags)\n \tstruct i40e_netdev_priv *np = netdev_priv(dev);\n \tstruct i40e_vsi *vsi = np->vsi;\n \tstruct i40e_pf *pf = vsi->back;\n+\tu16 sw_flags = 0, valid_flags = 0;\n \tbool reset_required = false;\n+\tbool promisc_change = false;\n+\tint ret;\n \n \t/* NOTE: MFP is not settable */\n \n@@ -3023,6 +3054,33 @@ static int i40e_set_priv_flags(struct net_device *dev, u32 flags)\n \t\treset_required = true;\n \t}\n \n+\tif (pf->hw.pf_id == 0) {\n+\t\tif ((flags & I40E_PRIV_FLAGS_TRUE_PROMISC_SUPPORT) &&\n+\t\t !(pf->flags & I40E_FLAG_TRUE_PROMISC_SUPPORT)) {\n+\t\t\tpf->flags |= I40E_FLAG_TRUE_PROMISC_SUPPORT;\n+\t\t\tpromisc_change = true;\n+\t\t} else if (!(flags & I40E_PRIV_FLAGS_TRUE_PROMISC_SUPPORT) &&\n+\t\t\t (pf->flags & I40E_FLAG_TRUE_PROMISC_SUPPORT)) {\n+\t\t\tpf->flags &= ~I40E_FLAG_TRUE_PROMISC_SUPPORT;\n+\t\t\tpromisc_change = true;\n+\t\t}\n+\t}\n+\tif (promisc_change) {\n+\t\tif (!(pf->flags & I40E_FLAG_TRUE_PROMISC_SUPPORT))\n+\t\t\tsw_flags = I40E_AQ_SET_SWITCH_CFG_PROMISC;\n+\t\tvalid_flags = I40E_AQ_SET_SWITCH_CFG_PROMISC;\n+\t\tret = i40e_aq_set_switch_config(&pf->hw, sw_flags, valid_flags,\n+\t\t\t\t\t\tNULL);\n+\t\tif (ret && pf->hw.aq.asq_last_status != I40E_AQ_RC_ESRCH) {\n+\t\t\tdev_info(&pf->pdev->dev,\n+\t\t\t\t \"couldn't set switch config bits, err %s aq_err %s\\n\",\n+\t\t\t\t i40e_stat_str(&pf->hw, ret),\n+\t\t\t\t i40e_aq_str(&pf->hw,\n+\t\t\t\t\t pf->hw.aq.asq_last_status));\n+\t\t\t/* not a fatal problem, just keep going */\n+\t\t}\n+\t}\n+\n \tif ((flags & I40E_PRIV_FLAGS_HW_ATR_EVICT) &&\n \t (pf->flags & I40E_FLAG_HW_ATR_EVICT_CAPABLE))\n \t\tpf->auto_disable_flags &= ~I40E_FLAG_HW_ATR_EVICT_CAPABLE;\ndiff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c\nindex 28823b5..3d3c70c 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_main.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c\n@@ -2128,7 +2128,8 @@ int i40e_sync_vsi_filters(struct i40e_vsi *vsi)\n \t\t\taq_ret = i40e_aq_set_vsi_unicast_promiscuous(\n \t\t\t\t\t\t\t &vsi->back->hw,\n \t\t\t\t\t\t\t vsi->seid,\n-\t\t\t\t\t\t\t cur_promisc, NULL);\n+\t\t\t\t\t\t\t cur_promisc, NULL,\n+\t\t\t\t\t\t\t true);\n \t\t\tif (aq_ret) {\n \t\t\t\tretval =\n \t\t\t\ti40e_aq_rc_to_posix(aq_ret,\n@@ -10407,6 +10408,7 @@ int i40e_fetch_switch_configuration(struct i40e_pf *pf, bool printconfig)\n **/\n static int i40e_setup_pf_switch(struct i40e_pf *pf, bool reinit)\n {\n+\tu16 flags = 0;\n \tint ret;\n \n \t/* find out what's out there already */\n@@ -10420,6 +10422,32 @@ static int i40e_setup_pf_switch(struct i40e_pf *pf, bool reinit)\n \t}\n \ti40e_pf_reset_stats(pf);\n \n+\t/* set the switch config bit for the whole device to\n+\t * support limited promisc or true promisc\n+\t * when user requests promisc. The default is limited\n+\t * promisc.\n+\t*/\n+\n+\tif ((pf->hw.pf_id == 0) &&\n+\t !(pf->flags & I40E_FLAG_TRUE_PROMISC_SUPPORT))\n+\t\tflags = I40E_AQ_SET_SWITCH_CFG_PROMISC;\n+\n+\tif (pf->hw.pf_id == 0) {\n+\t\tu16 valid_flags;\n+\n+\t\tvalid_flags = I40E_AQ_SET_SWITCH_CFG_PROMISC;\n+\t\tret = i40e_aq_set_switch_config(&pf->hw, flags, valid_flags,\n+\t\t\t\t\t\tNULL);\n+\t\tif (ret && pf->hw.aq.asq_last_status != I40E_AQ_RC_ESRCH) {\n+\t\t\tdev_info(&pf->pdev->dev,\n+\t\t\t\t \"couldn't set switch config bits, err %s aq_err %s\\n\",\n+\t\t\t\t i40e_stat_str(&pf->hw, ret),\n+\t\t\t\t i40e_aq_str(&pf->hw,\n+\t\t\t\t\t pf->hw.aq.asq_last_status));\n+\t\t\t/* not a fatal problem, just keep going */\n+\t\t}\n+\t}\n+\n \t/* first time setup */\n \tif (pf->lan_vsi == I40E_NO_VSI || reinit) {\n \t\tstruct i40e_vsi *vsi = NULL;\ndiff --git a/drivers/net/ethernet/intel/i40e/i40e_prototype.h b/drivers/net/ethernet/intel/i40e/i40e_prototype.h\nindex b76b158..80403c6 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_prototype.h\n+++ b/drivers/net/ethernet/intel/i40e/i40e_prototype.h\n@@ -130,7 +130,8 @@ i40e_status i40e_aq_set_vsi_broadcast(struct i40e_hw *hw,\n \t\t\t\tu16 vsi_id, bool set_filter,\n \t\t\t\tstruct i40e_asq_cmd_details *cmd_details);\n i40e_status i40e_aq_set_vsi_unicast_promiscuous(struct i40e_hw *hw,\n-\t\tu16 vsi_id, bool set, struct i40e_asq_cmd_details *cmd_details);\n+\t\tu16 vsi_id, bool set, struct i40e_asq_cmd_details *cmd_details,\n+\t\tbool rx_only_promisc);\n i40e_status i40e_aq_set_vsi_multicast_promiscuous(struct i40e_hw *hw,\n \t\tu16 vsi_id, bool set, struct i40e_asq_cmd_details *cmd_details);\n enum i40e_status_code i40e_aq_set_vsi_mc_promisc_on_vlan(struct i40e_hw *hw,\ndiff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c\nindex 651ce05..8ab029d 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c\n@@ -1561,7 +1561,8 @@ static int i40e_vc_config_promiscuous_mode_msg(struct i40e_vf *vf,\n \t\t}\n \t} else {\n \t\taq_ret = i40e_aq_set_vsi_unicast_promiscuous(hw, vsi->seid,\n-\t\t\t\t\t\t\t allmulti, NULL);\n+\t\t\t\t\t\t\t allmulti, NULL,\n+\t\t\t\t\t\t\t true);\n \t\taq_err = pf->hw.aq.asq_last_status;\n \t\tif (aq_ret)\n \t\t\tdev_err(&pf->pdev->dev,\n", "prefixes": [ "next", "S36", "04/12" ] }