Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 75d10871 authored by Vinicius Costa Gomes's avatar Vinicius Costa Gomes Committed by Greg Kroah-Hartman
Browse files

igb: Fix queue selection on MAC filters on i210



[ Upstream commit 4dc93fcf0b95dc3fda4db917effae31fbb8ad2a8 ]

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 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: 83c21335 ("igb: improve MAC filter handling")
Signed-off-by: default avatarVinicius Costa Gomes <vinicius.gomes@intel.com>
Tested-by: default avatarAaron Brown <aaron.f.brown@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: default avatarSasha Levin <alexander.levin@microsoft.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent c7ab132d
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -8376,12 +8376,17 @@ 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:
			rar_high |= E1000_RAH_POOL_1 *
				    adapter->mac_table[index].queue;
		else
			break;
		default:
			rar_high |= E1000_RAH_POOL_1 <<
				    adapter->mac_table[index].queue;
			break;
		}
	}

	wr32(E1000_RAL(index), rar_low);