Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/752528/?format=api
{ "id": 752528, "url": "http://patchwork.ozlabs.org/api/patches/752528/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20170419132559.20459-8-alice.michael@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": "<20170419132559.20459-8-alice.michael@intel.com>", "list_archive_url": null, "date": "2017-04-19T13:25:57", "name": "[next,S71,08/10] i40e: remove hw_disabled_flags in favor of using separate flag bits", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "cff67e5eca29f1552b63644b5cc4961def4a014d", "submitter": { "id": 71123, "url": "http://patchwork.ozlabs.org/api/people/71123/?format=api", "name": "Michael, Alice", "email": "alice.michael@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/20170419132559.20459-8-alice.michael@intel.com/mbox/", "series": [], "comments": "http://patchwork.ozlabs.org/api/patches/752528/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/752528/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\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3w7Zr85GB8z9s2x\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu, 20 Apr 2017 07:28:56 +1000 (AEST)", "from localhost (localhost [127.0.0.1])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id 21DD08A332;\n\tWed, 19 Apr 2017 21:28:55 +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 gJxk-CiV7RSB; Wed, 19 Apr 2017 21:28:52 +0000 (UTC)", "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id 811FF8A33E;\n\tWed, 19 Apr 2017 21:28:50 +0000 (UTC)", "from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n\tby ash.osuosl.org (Postfix) with ESMTP id 77E5B1C08FF\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed, 19 Apr 2017 21:28:45 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id 71DB730D32\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed, 19 Apr 2017 21:28:45 +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 1y7w9VjPwr5f for <intel-wired-lan@lists.osuosl.org>;\n\tWed, 19 Apr 2017 21:28:43 +0000 (UTC)", "from mga14.intel.com (mga14.intel.com [192.55.52.115])\n\tby silver.osuosl.org (Postfix) with ESMTPS id 0FB0C30D8E\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed, 19 Apr 2017 21:28:43 +0000 (UTC)", "from orsmga003.jf.intel.com ([10.7.209.27])\n\tby fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t19 Apr 2017 14:28:42 -0700", "from unknown (HELO localhost.jf.intel.com) ([10.166.16.121])\n\tby orsmga003.jf.intel.com with ESMTP; 19 Apr 2017 14:28:41 -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.37,222,1488873600\"; d=\"scan'208\";a=\"958903570\"", "From": "Alice Michael <alice.michael@intel.com>", "To": "alice.michael@intel.com,\n\tintel-wired-lan@lists.osuosl.org", "Date": "Wed, 19 Apr 2017 09:25:57 -0400", "Message-Id": "<20170419132559.20459-8-alice.michael@intel.com>", "X-Mailer": "git-send-email 2.9.3", "In-Reply-To": "<20170419132559.20459-1-alice.michael@intel.com>", "References": "<20170419132559.20459-1-alice.michael@intel.com>", "Subject": "[Intel-wired-lan] [next PATCH S71 08/10] i40e: remove\n\thw_disabled_flags in favor of using separate flag bits", "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: Jacob Keller <jacob.e.keller@intel.com>\n\nThe hw_disabled_flags field was added as a way of signifying that\na feature was automatically or temporarily disabled. However, we\nactually only use this for FDir features. Replace its use with new\n_AUTO_DISABLED flags instead. This is more readable, because you aren't\nsetting an *_ENABLED flag to *disable* the feature.\n\nAdditionally, clean up a few areas where we used these bits. First, we\ndon't really need to set the auto-disable flag for ATR if we're fully\ndisabling the feature via ethtool.\n\nSecond, we should always clear the auto-disable bits incase they somehow\ngot set when the feature was disabled. However, avoid displaying\na message that we've re-enabled the feature.\n\nThird, we shouldn't be re-enabling ATR in the SB ntuple add flow,\nbecause it might have been disabled due to space constraints. Instead,\nwe should just wait for the fdir_check_and_reenable to be called by the\nwatchdog.\n\nOverall, this change allows us to simplify some code by removing an\nextra field we didn't need, and the result should make it more clear as\nto what we're actually doing with these flags.\n\nSigned-off-by: Jacob Keller <jacob.e.keller@intel.com>\n---\n drivers/net/ethernet/intel/i40e/i40e.h | 9 +----\n drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 6 +--\n drivers/net/ethernet/intel/i40e/i40e_main.c | 53 +++++++++++++-------------\n drivers/net/ethernet/intel/i40e/i40e_txrx.c | 22 ++++-------\n 4 files changed, 38 insertions(+), 52 deletions(-)", "diff": "diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h\nindex 6eb21ab..cdde3cc2 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e.h\n+++ b/drivers/net/ethernet/intel/i40e/i40e.h\n@@ -408,6 +408,8 @@ struct i40e_pf {\n #define I40E_FLAG_DCB_ENABLED\t\t\tBIT_ULL(20)\n #define I40E_FLAG_FD_SB_ENABLED\t\t\tBIT_ULL(21)\n #define I40E_FLAG_FD_ATR_ENABLED\t\tBIT_ULL(22)\n+#define I40E_FLAG_FD_SB_AUTO_DISABLED\t\tBIT_ULL(23)\n+#define I40E_FLAG_FD_ATR_AUTO_DISABLED\t\tBIT_ULL(24)\n #define I40E_FLAG_PTP\t\t\t\tBIT_ULL(25)\n #define I40E_FLAG_MFP_ENABLED\t\t\tBIT_ULL(26)\n #define I40E_FLAG_UDP_FILTER_SYNC\t\tBIT_ULL(27)\n@@ -440,13 +442,6 @@ struct i40e_pf {\n #define I40E_FLAG_WOL_MC_MAGIC_PKT_WAKE\t\tBIT_ULL(57)\n #define I40E_FLAG_LEGACY_RX\t\t\tBIT_ULL(58)\n \n-\t/* Tracks features that are disabled due to hw limitations.\n-\t * If a bit is set here, it means that the corresponding\n-\t * bit in the 'flags' field is cleared i.e that feature\n-\t * is disabled\n-\t */\n-\tu64 hw_disabled_flags;\n-\n \tstruct i40e_client_instance *cinst;\n \tbool stat_offsets_loaded;\n \tstruct i40e_hw_port_stats stats;\ndiff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c\nindex b1064c6..7a8eb48 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c\n@@ -3643,7 +3643,7 @@ static int i40e_add_fdir_ethtool(struct i40e_vsi *vsi,\n \tif (!(pf->flags & I40E_FLAG_FD_SB_ENABLED))\n \t\treturn -EOPNOTSUPP;\n \n-\tif (pf->hw_disabled_flags & I40E_FLAG_FD_SB_ENABLED)\n+\tif (pf->flags & I40E_FLAG_FD_SB_AUTO_DISABLED)\n \t\treturn -ENOSPC;\n \n \tif (test_bit(__I40E_RESET_RECOVERY_PENDING, pf->state) ||\n@@ -4086,12 +4086,12 @@ static int i40e_set_priv_flags(struct net_device *dev, u32 flags)\n \t/* Flush current ATR settings if ATR was disabled */\n \tif ((changed_flags & I40E_FLAG_FD_ATR_ENABLED) &&\n \t !(pf->flags & I40E_FLAG_FD_ATR_ENABLED)) {\n-\t\tpf->hw_disabled_flags |= I40E_FLAG_FD_ATR_ENABLED;\n+\t\tpf->flags |= I40E_FLAG_FD_ATR_AUTO_DISABLED;\n \t\tset_bit(__I40E_FD_FLUSH_REQUESTED, pf->state);\n \t}\n \n \t/* Only allow ATR evict on hardware that is capable of handling it */\n-\tif (pf->hw_disabled_flags & I40E_FLAG_HW_ATR_EVICT_CAPABLE)\n+\tif (pf->flags & I40E_FLAG_HW_ATR_EVICT_CAPABLE)\n \t\tpf->flags &= ~I40E_FLAG_HW_ATR_EVICT_CAPABLE;\n \n \tif (changed_flags & I40E_FLAG_TRUE_PROMISC_SUPPORT) {\ndiff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c\nindex e2610eb..dd9d727 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_main.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c\n@@ -1050,13 +1050,13 @@ static void i40e_update_pf_stats(struct i40e_pf *pf)\n \t\t\t &osd->rx_lpi_count, &nsd->rx_lpi_count);\n \n \tif (pf->flags & I40E_FLAG_FD_SB_ENABLED &&\n-\t !(pf->hw_disabled_flags & I40E_FLAG_FD_SB_ENABLED))\n+\t !(pf->flags & I40E_FLAG_FD_SB_AUTO_DISABLED))\n \t\tnsd->fd_sb_status = true;\n \telse\n \t\tnsd->fd_sb_status = false;\n \n \tif (pf->flags & I40E_FLAG_FD_ATR_ENABLED &&\n-\t !(pf->hw_disabled_flags & I40E_FLAG_FD_ATR_ENABLED))\n+\t !(pf->flags & I40E_FLAG_FD_ATR_AUTO_DISABLED))\n \t\tnsd->fd_atr_status = true;\n \telse\n \t\tnsd->fd_atr_status = false;\n@@ -6078,31 +6078,30 @@ void i40e_fdir_check_and_reenable(struct i40e_pf *pf)\n \tif (test_bit(__I40E_FD_FLUSH_REQUESTED, pf->state))\n \t\treturn;\n \n-\t/* Check if, FD SB or ATR was auto disabled and if there is enough room\n-\t * to re-enable\n-\t */\n+\t/* Check if we have enough room to re-enable FDir SB capability. */\n \tfcnt_prog = i40e_get_global_fd_count(pf);\n \tfcnt_avail = pf->fdir_pf_filter_count;\n \tif ((fcnt_prog < (fcnt_avail - I40E_FDIR_BUFFER_HEAD_ROOM)) ||\n \t (pf->fd_add_err == 0) ||\n \t (i40e_get_current_atr_cnt(pf) < pf->fd_atr_cnt)) {\n-\t\tif ((pf->flags & I40E_FLAG_FD_SB_ENABLED) &&\n-\t\t (pf->hw_disabled_flags & I40E_FLAG_FD_SB_ENABLED)) {\n-\t\t\tpf->hw_disabled_flags &= ~I40E_FLAG_FD_SB_ENABLED;\n-\t\t\tif (I40E_DEBUG_FD & pf->hw.debug_mask)\n+\t\tif (pf->flags & I40E_FLAG_FD_SB_AUTO_DISABLED) {\n+\t\t\tpf->flags &= ~I40E_FLAG_FD_SB_AUTO_DISABLED;\n+\t\t\tif ((pf->flags & I40E_FLAG_FD_SB_ENABLED) &&\n+\t\t\t (I40E_DEBUG_FD & pf->hw.debug_mask))\n \t\t\t\tdev_info(&pf->pdev->dev, \"FD Sideband/ntuple is being enabled since we have space in the table now\\n\");\n \t\t}\n \t}\n \n-\t/* Wait for some more space to be available to turn on ATR. We also\n-\t * must check that no existing ntuple rules for TCP are in effect\n+\t/* We should wait for even more space before re-enabling ATR.\n+\t * Additionally, we cannot enable ATR as long as we still have TCP SB\n+\t * rules active.\n \t */\n-\tif (fcnt_prog < (fcnt_avail - I40E_FDIR_BUFFER_HEAD_ROOM * 2)) {\n-\t\tif ((pf->flags & I40E_FLAG_FD_ATR_ENABLED) &&\n-\t\t (pf->hw_disabled_flags & I40E_FLAG_FD_ATR_ENABLED) &&\n-\t\t (pf->fd_tcp4_filter_cnt == 0)) {\n-\t\t\tpf->hw_disabled_flags &= ~I40E_FLAG_FD_ATR_ENABLED;\n-\t\t\tif (I40E_DEBUG_FD & pf->hw.debug_mask)\n+\tif ((fcnt_prog < (fcnt_avail - I40E_FDIR_BUFFER_HEAD_ROOM_FOR_ATR)) &&\n+\t (pf->fd_tcp4_filter_cnt == 0)) {\n+\t\tif (pf->flags & I40E_FLAG_FD_ATR_AUTO_DISABLED) {\n+\t\t\tpf->flags &= ~I40E_FLAG_FD_ATR_AUTO_DISABLED;\n+\t\t\tif ((pf->flags & I40E_FLAG_FD_ATR_ENABLED) &&\n+\t\t\t (I40E_DEBUG_FD & pf->hw.debug_mask))\n \t\t\t\tdev_info(&pf->pdev->dev, \"ATR is being enabled since we have space in the table and there are no conflicting ntuple rules\\n\");\n \t\t}\n \t}\n@@ -6153,7 +6152,7 @@ static void i40e_fdir_flush_and_replay(struct i40e_pf *pf)\n \t}\n \n \tpf->fd_flush_timestamp = jiffies;\n-\tpf->hw_disabled_flags |= I40E_FLAG_FD_ATR_ENABLED;\n+\tpf->flags |= I40E_FLAG_FD_ATR_AUTO_DISABLED;\n \t/* flush all filters */\n \twr32(&pf->hw, I40E_PFQF_CTL_1,\n \t I40E_PFQF_CTL_1_CLEARFDTABLE_MASK);\n@@ -6173,7 +6172,7 @@ static void i40e_fdir_flush_and_replay(struct i40e_pf *pf)\n \t\t/* replay sideband filters */\n \t\ti40e_fdir_filter_restore(pf->vsi[pf->lan_vsi]);\n \t\tif (!disable_atr && !pf->fd_tcp4_filter_cnt)\n-\t\t\tpf->hw_disabled_flags &= ~I40E_FLAG_FD_ATR_ENABLED;\n+\t\t\tpf->flags &= ~I40E_FLAG_FD_ATR_AUTO_DISABLED;\n \t\tclear_bit(__I40E_FD_FLUSH_REQUESTED, pf->state);\n \t\tif (I40E_DEBUG_FD & pf->hw.debug_mask)\n \t\t\tdev_info(&pf->pdev->dev, \"FD Filter table flushed and FD-SB replayed.\\n\");\n@@ -8822,9 +8821,9 @@ static int i40e_sw_init(struct i40e_pf *pf)\n \t\t (pf->hw.aq.api_min_ver > 4))) {\n \t\t/* Supported in FW API version higher than 1.4 */\n \t\tpf->flags |= I40E_FLAG_GENEVE_OFFLOAD_CAPABLE;\n-\t\tpf->hw_disabled_flags = I40E_FLAG_HW_ATR_EVICT_CAPABLE;\n+\t\tpf->flags = I40E_FLAG_HW_ATR_EVICT_CAPABLE;\n \t} else {\n-\t\tpf->hw_disabled_flags = I40E_FLAG_HW_ATR_EVICT_CAPABLE;\n+\t\tpf->flags = I40E_FLAG_HW_ATR_EVICT_CAPABLE;\n \t}\n \n \tpf->eeprom_version = 0xDEAD;\n@@ -8884,16 +8883,16 @@ bool i40e_set_ntuple(struct i40e_pf *pf, netdev_features_t features)\n \t\t\tneed_reset = true;\n \t\t\ti40e_fdir_filter_exit(pf);\n \t\t}\n-\t\tpf->flags &= ~I40E_FLAG_FD_SB_ENABLED;\n-\t\tpf->hw_disabled_flags &= ~I40E_FLAG_FD_SB_ENABLED;\n+\t\tpf->flags &= ~(I40E_FLAG_FD_SB_ENABLED |\n+\t\t\t I40E_FLAG_FD_SB_AUTO_DISABLED);\n \t\t/* reset fd counters */\n \t\tpf->fd_add_err = 0;\n \t\tpf->fd_atr_cnt = 0;\n \t\t/* if ATR was auto disabled it can be re-enabled. */\n-\t\tif ((pf->flags & I40E_FLAG_FD_ATR_ENABLED) &&\n-\t\t (pf->hw_disabled_flags & I40E_FLAG_FD_ATR_ENABLED)) {\n-\t\t\tpf->hw_disabled_flags &= ~I40E_FLAG_FD_ATR_ENABLED;\n-\t\t\tif (I40E_DEBUG_FD & pf->hw.debug_mask)\n+\t\tif (pf->flags & I40E_FLAG_FD_ATR_AUTO_DISABLED) {\n+\t\t\tpf->flags &= ~I40E_FLAG_FD_ATR_AUTO_DISABLED;\n+\t\t\tif ((pf->flags & I40E_FLAG_FD_ATR_ENABLED) &&\n+\t\t\t (I40E_DEBUG_FD & pf->hw.debug_mask))\n \t\t\t\tdev_info(&pf->pdev->dev, \"ATR re-enabled.\\n\");\n \t\t}\n \t}\ndiff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c\nindex a975754..1d39825 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c\n@@ -333,15 +333,9 @@ static int i40e_add_del_fdir_tcpv4(struct i40e_vsi *vsi,\n \t\tif ((pf->flags & I40E_FLAG_FD_ATR_ENABLED) &&\n \t\t I40E_DEBUG_FD & pf->hw.debug_mask)\n \t\t\tdev_info(&pf->pdev->dev, \"Forcing ATR off, sideband rules for TCP/IPv4 flow being applied\\n\");\n-\t\tpf->hw_disabled_flags |= I40E_FLAG_FD_ATR_ENABLED;\n+\t\tpf->flags |= I40E_FLAG_FD_ATR_AUTO_DISABLED;\n \t} else {\n \t\tpf->fd_tcp4_filter_cnt--;\n-\t\tif (pf->fd_tcp4_filter_cnt == 0) {\n-\t\t\tif ((pf->flags & I40E_FLAG_FD_ATR_ENABLED) &&\n-\t\t\t I40E_DEBUG_FD & pf->hw.debug_mask)\n-\t\t\t\tdev_info(&pf->pdev->dev, \"ATR re-enabled due to no sideband TCP/IPv4 rules\\n\");\n-\t\t\tpf->hw_disabled_flags &= ~I40E_FLAG_FD_ATR_ENABLED;\n-\t\t}\n \t}\n \n \treturn 0;\n@@ -597,8 +591,8 @@ static void i40e_fd_handle_status(struct i40e_ring *rx_ring,\n \t\tpf->fd_atr_cnt = i40e_get_current_atr_cnt(pf);\n \n \t\tif ((rx_desc->wb.qword0.hi_dword.fd_id == 0) &&\n-\t\t (pf->hw_disabled_flags & I40E_FLAG_FD_SB_ENABLED)) {\n-\t\t\tpf->hw_disabled_flags |= I40E_FLAG_FD_ATR_ENABLED;\n+\t\t pf->flags & I40E_FLAG_FD_SB_AUTO_DISABLED) {\n+\t\t\tpf->flags |= I40E_FLAG_FD_ATR_AUTO_DISABLED;\n \t\t\tset_bit(__I40E_FD_FLUSH_REQUESTED, pf->state);\n \t\t}\n \n@@ -611,12 +605,10 @@ static void i40e_fd_handle_status(struct i40e_ring *rx_ring,\n \t\t */\n \t\tif (fcnt_prog >= (fcnt_avail - I40E_FDIR_BUFFER_FULL_MARGIN)) {\n \t\t\tif ((pf->flags & I40E_FLAG_FD_SB_ENABLED) &&\n-\t\t\t !(pf->hw_disabled_flags &\n-\t\t\t\t I40E_FLAG_FD_SB_ENABLED)) {\n+\t\t\t !(pf->flags & I40E_FLAG_FD_SB_AUTO_DISABLED)) {\n+\t\t\t\tpf->flags |= I40E_FLAG_FD_SB_AUTO_DISABLED;\n \t\t\t\tif (I40E_DEBUG_FD & pf->hw.debug_mask)\n \t\t\t\t\tdev_warn(&pdev->dev, \"FD filter space full, new ntuple rules will not be added\\n\");\n-\t\t\t\tpf->hw_disabled_flags |=\n-\t\t\t\t\t\t\tI40E_FLAG_FD_SB_ENABLED;\n \t\t\t}\n \t\t}\n \t} else if (error == BIT(I40E_RX_PROG_STATUS_DESC_NO_FD_ENTRY_SHIFT)) {\n@@ -2311,7 +2303,7 @@ static void i40e_atr(struct i40e_ring *tx_ring, struct sk_buff *skb,\n \tif (!(pf->flags & I40E_FLAG_FD_ATR_ENABLED))\n \t\treturn;\n \n-\tif ((pf->hw_disabled_flags & I40E_FLAG_FD_ATR_ENABLED))\n+\tif (pf->flags & I40E_FLAG_FD_ATR_AUTO_DISABLED)\n \t\treturn;\n \n \t/* if sampling is disabled do nothing */\n@@ -2345,7 +2337,7 @@ static void i40e_atr(struct i40e_ring *tx_ring, struct sk_buff *skb,\n \tth = (struct tcphdr *)(hdr.network + hlen);\n \n \t/* Due to lack of space, no more new filters can be programmed */\n-\tif (th->syn && (pf->hw_disabled_flags & I40E_FLAG_FD_ATR_ENABLED))\n+\tif (th->syn && (pf->flags & I40E_FLAG_FD_ATR_AUTO_DISABLED))\n \t\treturn;\n \tif (pf->flags & I40E_FLAG_HW_ATR_EVICT_CAPABLE) {\n \t\t/* HW ATR eviction will take care of removing filters on FIN\n", "prefixes": [ "next", "S71", "08/10" ] }