From: Vinicius Costa Gomes <vinicius.gomes@intel.com> To: intel-wired-lan@lists.osuosl.org Cc: Vinicius Costa Gomes <vinicius.gomes@intel.com>, jeffrey.t.kirsher@intel.com, netdev@vger.kernel.org, jesus.sanchez-palencia@intel.com Subject: [next-queue PATCH 2/8] igb: Fix queue selection on MAC filters on i210 and i211 Date: Fri, 23 Feb 2018 17:20:30 -0800 [thread overview] Message-ID: <20180224012036.5834-3-vinicius.gomes@intel.com> (raw) In-Reply-To: <20180224012036.5834-1-vinicius.gomes@intel.com> On the RAH registers there are semantic differences on the meaning of the "queue" parameter for traffic steering depending on the controller model: there is the 82575 meaning, which "queue" means a RX Hardware Queue, and the i350 meaning, where it is a reception pool. The previous behaviour was having no effect for i210 and i211 based controllers because the QSEL bit of the RAH register wasn't being set. This patch separates the condition in discrete cases, so the different handling is clearer. Fixes: 83c21335c876 ("igb: improve MAC filter handling") Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com> --- drivers/net/ethernet/intel/igb/e1000_defines.h | 1 + drivers/net/ethernet/intel/igb/igb_main.c | 15 +++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/intel/igb/e1000_defines.h b/drivers/net/ethernet/intel/igb/e1000_defines.h index 83cabff1e0ab..573bf177fd08 100644 --- a/drivers/net/ethernet/intel/igb/e1000_defines.h +++ b/drivers/net/ethernet/intel/igb/e1000_defines.h @@ -490,6 +490,7 @@ * manageability enabled, allowing us room for 15 multicast addresses. */ #define E1000_RAH_AV 0x80000000 /* Receive descriptor valid */ +#define E1000_RAH_QSEL_ENABLE 0x10000000 #define E1000_RAL_MAC_ADDR_LEN 4 #define E1000_RAH_MAC_ADDR_LEN 2 #define E1000_RAH_POOL_MASK 0x03FC0000 diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c index b88fae785369..0ea32be07d71 100644 --- a/drivers/net/ethernet/intel/igb/igb_main.c +++ b/drivers/net/ethernet/intel/igb/igb_main.c @@ -8741,12 +8741,19 @@ static void igb_rar_set_index(struct igb_adapter *adapter, u32 index) if (is_valid_ether_addr(addr)) rar_high |= E1000_RAH_AV; - if (hw->mac.type == e1000_82575) + switch (hw->mac.type) { + case e1000_82575: + case e1000_i210: + case e1000_i211: + rar_high |= E1000_RAH_QSEL_ENABLE; rar_high |= E1000_RAH_POOL_1 * - adapter->mac_table[index].queue; - else + adapter->mac_table[index].queue; + break; + default: rar_high |= E1000_RAH_POOL_1 << - adapter->mac_table[index].queue; + adapter->mac_table[index].queue; + break; + } } wr32(E1000_RAL(index), rar_low); -- 2.16.2
WARNING: multiple messages have this Message-ID (diff)
From: Vinicius Costa Gomes <vinicius.gomes@intel.com> To: intel-wired-lan@osuosl.org Subject: [Intel-wired-lan] [next-queue PATCH 2/8] igb: Fix queue selection on MAC filters on i210 and i211 Date: Fri, 23 Feb 2018 17:20:30 -0800 [thread overview] Message-ID: <20180224012036.5834-3-vinicius.gomes@intel.com> (raw) In-Reply-To: <20180224012036.5834-1-vinicius.gomes@intel.com> On the RAH registers there are semantic differences on the meaning of the "queue" parameter for traffic steering depending on the controller model: there is the 82575 meaning, which "queue" means a RX Hardware Queue, and the i350 meaning, where it is a reception pool. The previous behaviour was having no effect for i210 and i211 based controllers because the QSEL bit of the RAH register wasn't being set. This patch separates the condition in discrete cases, so the different handling is clearer. Fixes: 83c21335c876 ("igb: improve MAC filter handling") Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com> --- drivers/net/ethernet/intel/igb/e1000_defines.h | 1 + drivers/net/ethernet/intel/igb/igb_main.c | 15 +++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/intel/igb/e1000_defines.h b/drivers/net/ethernet/intel/igb/e1000_defines.h index 83cabff1e0ab..573bf177fd08 100644 --- a/drivers/net/ethernet/intel/igb/e1000_defines.h +++ b/drivers/net/ethernet/intel/igb/e1000_defines.h @@ -490,6 +490,7 @@ * manageability enabled, allowing us room for 15 multicast addresses. */ #define E1000_RAH_AV 0x80000000 /* Receive descriptor valid */ +#define E1000_RAH_QSEL_ENABLE 0x10000000 #define E1000_RAL_MAC_ADDR_LEN 4 #define E1000_RAH_MAC_ADDR_LEN 2 #define E1000_RAH_POOL_MASK 0x03FC0000 diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c index b88fae785369..0ea32be07d71 100644 --- a/drivers/net/ethernet/intel/igb/igb_main.c +++ b/drivers/net/ethernet/intel/igb/igb_main.c @@ -8741,12 +8741,19 @@ static void igb_rar_set_index(struct igb_adapter *adapter, u32 index) if (is_valid_ether_addr(addr)) rar_high |= E1000_RAH_AV; - if (hw->mac.type == e1000_82575) + switch (hw->mac.type) { + case e1000_82575: + case e1000_i210: + case e1000_i211: + rar_high |= E1000_RAH_QSEL_ENABLE; rar_high |= E1000_RAH_POOL_1 * - adapter->mac_table[index].queue; - else + adapter->mac_table[index].queue; + break; + default: rar_high |= E1000_RAH_POOL_1 << - adapter->mac_table[index].queue; + adapter->mac_table[index].queue; + break; + } } wr32(E1000_RAL(index), rar_low); -- 2.16.2
next prev parent reply other threads:[~2018-02-24 1:21 UTC|newest] Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-02-24 1:20 [next-queue PATCH 0/8] igb: offloading of receive filters Vinicius Costa Gomes 2018-02-24 1:20 ` [Intel-wired-lan] " Vinicius Costa Gomes 2018-02-24 1:20 ` [next-queue PATCH 1/8] igb: Fix not adding filter elements to the list Vinicius Costa Gomes 2018-02-24 1:20 ` [Intel-wired-lan] " Vinicius Costa Gomes 2018-02-24 1:20 ` Vinicius Costa Gomes [this message] 2018-02-24 1:20 ` [Intel-wired-lan] [next-queue PATCH 2/8] igb: Fix queue selection on MAC filters on i210 and i211 Vinicius Costa Gomes 2018-02-24 1:20 ` [next-queue PATCH 3/8] igb: Enable the hardware traffic class feature bit for igb models Vinicius Costa Gomes 2018-02-24 1:20 ` [Intel-wired-lan] " Vinicius Costa Gomes 2018-02-25 22:37 ` Alexander Duyck 2018-02-25 22:37 ` Alexander Duyck 2018-02-26 18:49 ` Vinicius Costa Gomes 2018-02-26 18:49 ` Vinicius Costa Gomes 2018-02-24 1:20 ` [next-queue PATCH 4/8] igb: Add support for MAC address filters specifying source addresses Vinicius Costa Gomes 2018-02-24 1:20 ` [Intel-wired-lan] " Vinicius Costa Gomes 2018-02-25 22:42 ` Alexander Duyck 2018-02-25 22:42 ` Alexander Duyck 2018-02-26 19:24 ` Vinicius Costa Gomes 2018-02-26 19:24 ` Vinicius Costa Gomes 2018-02-24 1:20 ` [next-queue PATCH 5/8] igb: Add support for ethtool MAC address filters Vinicius Costa Gomes 2018-02-24 1:20 ` [Intel-wired-lan] " Vinicius Costa Gomes 2018-02-24 4:38 ` Florian Fainelli 2018-02-24 4:38 ` [Intel-wired-lan] " Florian Fainelli 2018-02-26 19:30 ` Vinicius Costa Gomes 2018-02-26 19:30 ` [Intel-wired-lan] " Vinicius Costa Gomes 2018-02-24 1:20 ` [next-queue PATCH 6/8] igb: Add the skeletons for tc-flower offloading Vinicius Costa Gomes 2018-02-24 1:20 ` [Intel-wired-lan] " Vinicius Costa Gomes 2018-02-24 1:20 ` [next-queue PATCH 7/8] igb: Add support for adding offloaded clsflower filters Vinicius Costa Gomes 2018-02-24 1:20 ` [Intel-wired-lan] " Vinicius Costa Gomes 2018-02-24 4:45 ` Florian Fainelli 2018-02-24 4:45 ` [Intel-wired-lan] " Florian Fainelli 2018-02-27 0:40 ` Vinicius Costa Gomes 2018-02-27 0:40 ` [Intel-wired-lan] " Vinicius Costa Gomes 2018-02-27 0:51 ` Florian Fainelli 2018-02-27 0:51 ` [Intel-wired-lan] " Florian Fainelli 2018-02-27 1:51 ` Vinicius Costa Gomes 2018-02-27 1:51 ` [Intel-wired-lan] " Vinicius Costa Gomes 2018-02-26 0:12 ` kbuild test robot 2018-02-26 0:12 ` kbuild test robot 2018-02-24 1:20 ` [next-queue PATCH 8/8] igb: Add support for removing offloaded tc-flower filters Vinicius Costa Gomes 2018-02-24 1:20 ` [Intel-wired-lan] " Vinicius Costa Gomes 2018-02-24 4:36 ` Florian Fainelli 2018-02-24 4:36 ` [Intel-wired-lan] " Florian Fainelli 2018-02-26 20:59 ` Vinicius Costa Gomes 2018-02-26 20:59 ` [Intel-wired-lan] " Vinicius Costa Gomes
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=20180224012036.5834-3-vinicius.gomes@intel.com \ --to=vinicius.gomes@intel.com \ --cc=intel-wired-lan@lists.osuosl.org \ --cc=jeffrey.t.kirsher@intel.com \ --cc=jesus.sanchez-palencia@intel.com \ --cc=netdev@vger.kernel.org \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.