From nobody Thu Dec 19 13:49:49 2024 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4YDX3d441Lz5hDxr; Thu, 19 Dec 2024 13:49:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4YDX3d3b9vz4c2F; Thu, 19 Dec 2024 13:49:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1734616189; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=dycCJ1bUZczQH7WIeNIdzKkuE7+C82Cu5KhUYAc7hBM=; b=LC1A3+bwEieXxfVvlf9VkB3ITQ1otNZFt7Kbt4mq8HT5TheHPDeqmRLM1BenE/8Uigf80j ZlE/9YobXyyHZIxa2FqfmGVfoSJ1VOSR34Sv1sI1POYJbmJ4XT9eA3HYtPm5cFw6XcRsb6 EAf5o9jaIHPhrlWCgDUPTj6c61YU3DX+SYfUvrjE+7riFW2rTiIT/OLgliZC3qPlozo0g8 qIKhgoNWEcS70MG/8zFjHJtvr4GsddTOd8Ac0GJIVSgPh0q42wsFcRauLBxscYE+oI8RYo i6T7XnKg8oEX9ITMGqQnVtyd/vzCulrp9HvHnWIIT05oWio2UVSjDwHbrC0goQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1734616189; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=dycCJ1bUZczQH7WIeNIdzKkuE7+C82Cu5KhUYAc7hBM=; b=AdWEuc1HHk0sp/TtHLKtZzPA5OII3+/0AidZimBxc5u2JK9A8byAsXrpnqg+8abCUaF8Uf MEr2E+NosFu3lGaYy4zWXO/ZOpLopCvPiftoWEZSV2T6V4Hs3Ds3ATQP4wtlYhvskTy9w4 oDwleWQElcVuE7lR460nNnLBw722c4DEutqQ3gzJjmxOjf7/7sX0R3YfO7B45JrTvgymcu e46Y+RZPxD+vIWGiz3+31t6e5I4YUoKLykcXMLGtG9X1E4VROMe14TY0UCaFTpWiEk8j3G pRUmglb3IOJn7UhrQrOR0OTT+UwNJZYEXnLEi8MGuP9ZMfWvyISZk2J8nr0FFA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1734616189; a=rsa-sha256; cv=none; b=Qqnb/nE7HejJ3O6NzsYZU9x6n7PkB/+j08qr0mrx/PtDx3l6wgFAfJKlaW+seHHuBUZVW1 Hh9KVQaDiYZ5x6jPyWGyobZ7hLdKpGkVpoJ7Va8Di3iG8Su8SElW+obIL56q7hJUIq3jVc +tB8NsCQ8jSSCvFqnZ/igcNuY66Jkpmsm6VQeW32/EI6vD0lZICnmnv0a+5/lnIZ2oKp9E P5GljFIovtqEEzSVUTNWWoV4bziEqKDzFfjjxBA+5719qwBAaavMnF6lFm1WMmv8IKbWzJ KwIfoXHDNBcD6tGLI08VTTVjbaPa2jqnSlr1NPG4PWAy7YV/2mGCh3/Dw7bUsQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4YDX3d39kmzw1B; Thu, 19 Dec 2024 13:49:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 4BJDnnh0010678; Thu, 19 Dec 2024 13:49:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 4BJDnnV4010675; Thu, 19 Dec 2024 13:49:49 GMT (envelope-from git) Date: Thu, 19 Dec 2024 13:49:49 GMT Message-Id: <202412191349.4BJDnnV4010675@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: 38663adb6144 - main - Revert "ixl: fix multicast filters handling" List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 38663adb61440bd659fb457909782b71ba8806fa Auto-Submitted: auto-generated The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=38663adb61440bd659fb457909782b71ba8806fa commit 38663adb61440bd659fb457909782b71ba8806fa Author: Franco Fichtner AuthorDate: 2024-12-11 14:08:40 +0000 Commit: Mark Johnston CommitDate: 2024-12-19 13:49:30 +0000 Revert "ixl: fix multicast filters handling" This reverts commit 89e73359424a338a7900a4854ad7439f5848ebb8. PR: 281125 Reviewed by: Krzysztof Galazka MFC after: 3 days Pull Request: https://github.com/freebsd/freebsd-src/pull/1545 --- sys/dev/ixl/ixl_pf_main.c | 97 +++++------------------------------------------ 1 file changed, 10 insertions(+), 87 deletions(-) diff --git a/sys/dev/ixl/ixl_pf_main.c b/sys/dev/ixl/ixl_pf_main.c index 9755136df848..1752efc02fff 100644 --- a/sys/dev/ixl/ixl_pf_main.c +++ b/sys/dev/ixl/ixl_pf_main.c @@ -593,15 +593,6 @@ ixl_add_maddr(void *arg, struct sockaddr_dl *sdl, u_int cnt) * Routines for multicast and vlan filter management. * *********************************************************************/ - -/** - * ixl_add_multi - Add multicast filters to the hardware - * @vsi: The VSI structure - * - * In case number of multicast filters in the IFP exceeds 127 entries, - * multicast promiscuous mode will be enabled and the filters will be removed - * from the hardware - */ void ixl_add_multi(struct ixl_vsi *vsi) { @@ -609,20 +600,14 @@ ixl_add_multi(struct ixl_vsi *vsi) struct i40e_hw *hw = vsi->hw; int mcnt = 0; struct ixl_add_maddr_arg cb_arg; - enum i40e_status_code status; IOCTL_DEBUGOUT("ixl_add_multi: begin"); mcnt = if_llmaddr_count(ifp); if (__predict_false(mcnt >= MAX_MULTICAST_ADDR)) { - status = i40e_aq_set_vsi_multicast_promiscuous(hw, vsi->seid, - TRUE, NULL); - if (status != I40E_SUCCESS) - if_printf(ifp, "Failed to enable multicast promiscuous " - "mode, status: %s\n", i40e_stat_str(hw, status)); - else - if_printf(ifp, "Enabled multicast promiscuous mode\n"); - /* Delete all existing MC filters */ + i40e_aq_set_vsi_multicast_promiscuous(hw, + vsi->seid, TRUE, NULL); + /* delete all existing MC filters */ ixl_del_multi(vsi, true); return; } @@ -648,92 +633,30 @@ ixl_match_maddr(void *arg, struct sockaddr_dl *sdl, u_int cnt) return (0); } -/** - * ixl_dis_multi_promisc - Disable multicast promiscuous mode - * @vsi: The VSI structure - * @vsi_mcnt: Number of multicast filters in the VSI - * - * Disable multicast promiscuous mode based on number of entries in the IFP - * and the VSI, then re-add multicast filters. - * - */ -static void -ixl_dis_multi_promisc(struct ixl_vsi *vsi, int vsi_mcnt) -{ - struct ifnet *ifp = vsi->ifp; - struct i40e_hw *hw = vsi->hw; - int ifp_mcnt = 0; - enum i40e_status_code status; - - ifp_mcnt = if_llmaddr_count(ifp); - /* - * Equal lists or empty ifp list mean the list has not been changed - * and in such case avoid disabling multicast promiscuous mode as it - * was not previously enabled. Case where multicast promiscuous mode has - * been enabled is when vsi_mcnt == 0 && ifp_mcnt > 0. - */ - if (ifp_mcnt == vsi_mcnt || ifp_mcnt == 0 || - ifp_mcnt >= MAX_MULTICAST_ADDR) - return; - - status = i40e_aq_set_vsi_multicast_promiscuous(hw, vsi->seid, - FALSE, NULL); - if (status != I40E_SUCCESS) { - if_printf(ifp, "Failed to disable multicast promiscuous " - "mode, status: %s\n", i40e_stat_str(hw, status)); - - return; - } - - if_printf(ifp, "Disabled multicast promiscuous mode\n"); - - ixl_add_multi(vsi); -} - -/** - * ixl_del_multi - Delete multicast filters from the hardware - * @vsi: The VSI structure - * @all: Bool to determine if all the multicast filters should be removed - * - * In case number of multicast filters in the IFP drops to 127 entries, - * multicast promiscuous mode will be disabled and the filters will be reapplied - * to the hardware. - */ void ixl_del_multi(struct ixl_vsi *vsi, bool all) { - int to_del_cnt = 0, vsi_mcnt = 0; + struct ixl_ftl_head to_del; if_t ifp = vsi->ifp; struct ixl_mac_filter *f, *fn; - struct ixl_ftl_head to_del; + int mcnt = 0; IOCTL_DEBUGOUT("ixl_del_multi: begin"); LIST_INIT(&to_del); /* Search for removed multicast addresses */ LIST_FOREACH_SAFE(f, &vsi->ftl, ftle, fn) { - if ((f->flags & IXL_FILTER_MC) == 0) - continue; - - /* Count all the multicast filters in the VSI for comparison */ - vsi_mcnt++; - - if (!all && if_foreach_llmaddr(ifp, ixl_match_maddr, f) != 0) + if ((f->flags & IXL_FILTER_MC) == 0 || + (!all && (if_foreach_llmaddr(ifp, ixl_match_maddr, f) == 0))) continue; LIST_REMOVE(f, ftle); LIST_INSERT_HEAD(&to_del, f, ftle); - to_del_cnt++; - } - - if (to_del_cnt > 0) { - ixl_del_hw_filters(vsi, &to_del, to_del_cnt); - return; + mcnt++; } - ixl_dis_multi_promisc(vsi, vsi_mcnt); - - IOCTL_DEBUGOUT("ixl_del_multi: end"); + if (mcnt > 0) + ixl_del_hw_filters(vsi, &to_del, mcnt); } void