From nobody Mon Jul 28 13:23:30 2025 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 4brK1M0GlHz634Cq; Mon, 28 Jul 2025 13:23:35 +0000 (UTC) (envelope-from kp@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (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 "smtp.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4brK1L6V0vz3sl8; Mon, 28 Jul 2025 13:23:34 +0000 (UTC) (envelope-from kp@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1753709014; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=5X4JoNEKbXpOyg4BuBLpLNprxnO3HfEKAkDRI/HdUrI=; b=mhh6OBiN2SHwJeY0xv71ubYcku7/hHnmpHU5jQ2PmJX144/UMjt+FYs1sk15gHcc5sFOeG 3L7cofdX0KYD91FpKvr4JCkqFWvHJ4IUsqa29HJjT7gNWPSyGIAxzbxEB+PoMeJHNw3G8u w/m6ISTCpuGec0gOwNvVYX430DQh5mkrtl1S79FneEvf6IiL6KHEmrCV8nK+6EVb+mBecB Z48hfTlCmJdKLbbtHhDLTWGhRjLIT4HJZUDcvk0GxAyy7kQgD4kA+jGLZ+rBB8EoiKG78r zPzzMdmIhk0aBOjVE0XBHHYHDJHA4AUtzB1UQB2gn0U5HTmOk73Yfj0rqaqfGg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1753709014; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=5X4JoNEKbXpOyg4BuBLpLNprxnO3HfEKAkDRI/HdUrI=; b=j/a5qvR4v7ocmLkMHIZIGvjK6Ev6kL+Ade8SVdv+B9Yp6nxb6PQeLgCeYyYUW9tboJaZi9 kQ6wF4AJcDSX85hyr9QMZ+4LlciheIzUH9z18nyMbWTvrqfgNDsWqPq7L7YgaTK58rwRpc +oeLwiSakbhBa0x6Gz6B5EIgJFc/1CCVCVukLhfHnO0Ehh6GNI0vlLvOKN05mN6WSLXGWR ZK0p0S+JimOY+kfOcQRg+1N3IOAy7nUf/KI0QQh1VMtbTY2CowRfQQ1AJ1LejYZyTVLgCh HZOBNc3VjucQvZf80P7eomM9ijxHG28pGDxgCfVKPZDOfUKUqP2B8SQwprHqwQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1753709014; a=rsa-sha256; cv=none; b=MJrX6N3DsdayvrsmK9NdHt0yqFd4LKB+n85zHNBXCVi5vItYgcfWKJXllyvnAzN1WblrZP gkPRPz6Z+poIOod2aOufDl+ayNTnJgzIfp4ojrcGm6Au57Uw1zRZqUDJEEUyKOe/A+Jqm0 SqLJLZaWJVQ+3DN7WZcMX3tlksMEf7IihbsVzanoKxqKJgjyHtD9gVroaA0jA+XfLD/fhP euZDBdKGStqPDbK/az+wp5jVpSWdYjb9ozbkLkM72cVYLw6EHthUix9lARWKWzd95C8YHK 1Xo+D7ntqqyBPukBz3XnMOmwdwLF0aG0lHIaLCl4P+e1ghO/tGX6E0KxC5fMsw== Received: from venus.codepro.be (venus.codepro.be [5.9.86.228]) (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 (2048 bits) client-digest SHA256) (Client CN "mx1.codepro.be", Issuer "R10" (verified OK)) (Authenticated sender: kp) by smtp.freebsd.org (Postfix) with ESMTPSA id 4brK1L3mxwzvCY; Mon, 28 Jul 2025 13:23:34 +0000 (UTC) (envelope-from kp@FreeBSD.org) Received: by venus.codepro.be (Postfix, authenticated sender kp) id A10E243DDF; Mon, 28 Jul 2025 15:23:31 +0200 (CEST) From: Kristof Provost To: Warner Losh , Eric Joyner Cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: Re: git: 430f1acc451c - main - ice(4): Add MAC filter and VLAN resource limits to VFs Date: Mon, 28 Jul 2025 15:23:30 +0200 X-Mailer: MailMate (2.0r6272) Message-ID: In-Reply-To: <202507181916.56IJGLMK001122@gitrepo.freebsd.org> References: <202507181916.56IJGLMK001122@gitrepo.freebsd.org> 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: quoted-printable I=E2=80=99m not sure if it=E2=80=99s this specific commit or another one = in the recent dev/ice updates, but the arm64 LINT-FDT, LINT-ACPI and LINT= builds all fail. This is from arm64-LINT: ld: error: undefined symbol: ice_iov_attach >>> referenced by if_ice_iflib.c:859 (/usr/src/sys/dev/ice/if_ice_iflib.= c:859) >>> if_ice_iflib.o:(ice_if_attach_post) ld: error: undefined symbol: ice_iov_detach >>> referenced by if_ice_iflib.c:989 (/usr/src/sys/dev/ice/if_ice_iflib.= c:989) >>> if_ice_iflib.o:(ice_if_detach) >>> referenced by if_ice_iflib.c:2323 (/usr/src/sys/dev/ice/if_ice_iflib= =2Ec:2323) >>> if_ice_iflib.o:(ice_if_update_admin_status) >>> referenced by if_ice_iflib.c:2376 (/usr/src/sys/dev/ice/if_ice_iflib= =2Ec:2376) >>> if_ice_iflib.o:(ice_transition_safe_mode) ld: error: undefined symbol: ice_iov_add_vf >>> referenced by if_ice_iflib.c:3464 (/usr/src/sys/dev/ice/if_ice_iflib= =2Ec:3464) >>> if_ice_iflib.o:(ice_if_iov_vf_add) ld: error: undefined symbol: ice_iov_init >>> referenced by if_ice_iflib.c:3429 (/usr/src/sys/dev/ice/if_ice_iflib= =2Ec:3429) >>> if_ice_iflib.o:(ice_if_iov_init) ld: error: undefined symbol: ice_iov_uninit >>> referenced by if_ice_iflib.c:3445 (/usr/src/sys/dev/ice/if_ice_iflib= =2Ec:3445) >>> if_ice_iflib.o:(ice_if_iov_uninit) ld: error: undefined symbol: ice_iov_handle_vflr >>> referenced by if_ice_iflib.c:3480 (/usr/src/sys/dev/ice/if_ice_iflib= =2Ec:3480) >>> if_ice_iflib.o:(ice_if_vflr_handle) ld: error: undefined symbol: ice_vc_notify_all_vfs_link_state >>> referenced by if_ice_iflib.c:757 (/usr/src/sys/dev/ice/if_ice_iflib.= c:757) >>> if_ice_iflib.o:(ice_update_link_status) ld: error: undefined symbol: ice_vc_handle_vf_msg >>> referenced by ice_lib.c:2285 (/usr/src/sys/dev/ice/ice_lib.c:2285) >>> ice_lib.o:(ice_process_ctrlq) *** [kernel.full] Error code 1 =E2=80=94 Kristof On 18 Jul 2025, at 21:16, Warner Losh wrote: > The branch main has been updated by imp: > > URL: https://cgit.FreeBSD.org/src/commit/?id=3D430f1acc451c7084d1d5aa7d= f7e7ecccea1a8b51 > > commit 430f1acc451c7084d1d5aa7df7e7ecccea1a8b51 > Author: Eric Joyner > AuthorDate: 2024-10-17 22:19:09 +0000 > Commit: Warner Losh > CommitDate: 2025-07-18 19:16:17 +0000 > > ice(4): Add MAC filter and VLAN resource limits to VFs > > Adds two new parameters to iovctl config for VLAN filter limits and= MAC > filter limits and gives them defaults of 64 and 16, respectively. > > These are intended to limit the number of resources that a VF can > consume so that any one VF cannot starve an other VFs or the PF of > filters. > > Signed-off-by: Eric Joyner > Signed-off-by: Krzysztof Galazka > Reviewed by: imp > Pull Request: https://github.com/freebsd/freebsd-src/pull/1573 > --- > sys/dev/ice/ice_iov.c | 45 ++++++++++++++++++++++++++++++++++++++++++-= -- > sys/dev/ice/ice_iov.h | 8 ++++++++ > 2 files changed, 50 insertions(+), 3 deletions(-) > > diff --git a/sys/dev/ice/ice_iov.c b/sys/dev/ice/ice_iov.c > index fc37a0e7679c..e06c7eb56f7a 100644 > --- a/sys/dev/ice/ice_iov.c > +++ b/sys/dev/ice/ice_iov.c > @@ -117,6 +117,10 @@ ice_iov_attach(struct ice_softc *sc) > IOV_SCHEMA_HASDEFAULT, ICE_DEFAULT_VF_QUEUES); > pci_iov_schema_add_uint16(vf_schema, "mirror-src-vsi", > IOV_SCHEMA_HASDEFAULT, ICE_INVALID_MIRROR_VSI); > + pci_iov_schema_add_uint16(vf_schema, "max-vlan-allowed", > + IOV_SCHEMA_HASDEFAULT, ICE_DEFAULT_VF_VLAN_LIMIT); > + pci_iov_schema_add_uint16(vf_schema, "max-mac-filters", > + IOV_SCHEMA_HASDEFAULT, ICE_DEFAULT_VF_FILTER_LIMIT); > > error =3D pci_iov_attach(dev, pf_schema, vf_schema); > if (error !=3D 0) { > @@ -360,6 +364,9 @@ ice_iov_add_vf(struct ice_softc *sc, uint16_t vfnum= , const nvlist_t *params) > > vsi->mirror_src_vsi =3D nvlist_get_number(params, "mirror-src-vsi"); > > + vf->vlan_limit =3D nvlist_get_number(params, "max-vlan-allowed"); > + vf->mac_filter_limit =3D nvlist_get_number(params, "max-mac-filters")= ; > + > vf->vf_flags |=3D VF_FLAG_VLAN_CAP; > > /* Create and setup VSI in HW */ > @@ -735,10 +742,17 @@ ice_vc_add_eth_addr_msg(struct ice_softc *sc, str= uct ice_vf *vf, u8 *msg_buf) > enum virtchnl_status_code v_status =3D VIRTCHNL_STATUS_SUCCESS; > struct virtchnl_ether_addr_list *addr_list; > struct ice_hw *hw =3D &sc->hw; > + u16 added_addr_cnt =3D 0; > int error =3D 0; > > addr_list =3D (struct virtchnl_ether_addr_list *)msg_buf; > > + if (addr_list->num_elements > > + (vf->mac_filter_limit - vf->mac_filter_cnt)) { > + v_status =3D VIRTCHNL_STATUS_ERR_NO_MEMORY; > + goto done; > + } > + > for (int i =3D 0; i < addr_list->num_elements; i++) { > u8 *addr =3D addr_list->list[i].addr; > > @@ -767,10 +781,15 @@ ice_vc_add_eth_addr_msg(struct ice_softc *sc, str= uct ice_vf *vf, u8 *msg_buf) > "%s: VF-%d: Error adding MAC addr for VSI %d\n", > __func__, vf->vf_num, vf->vsi->idx); > v_status =3D VIRTCHNL_STATUS_ERR_PARAM; > - goto done; > + continue; > } > + /* Don't count VF's MAC against its MAC filter limit */ > + if (memcmp(addr, vf->mac, ETHER_ADDR_LEN)) > + added_addr_cnt++; > } > > + vf->mac_filter_cnt +=3D added_addr_cnt; > + > done: > ice_aq_send_msg_to_vf(hw, vf->vf_num, VIRTCHNL_OP_ADD_ETH_ADDR, > v_status, NULL, 0, NULL); > @@ -791,6 +810,7 @@ ice_vc_del_eth_addr_msg(struct ice_softc *sc, struc= t ice_vf *vf, u8 *msg_buf) > enum virtchnl_status_code v_status =3D VIRTCHNL_STATUS_SUCCESS; > struct virtchnl_ether_addr_list *addr_list; > struct ice_hw *hw =3D &sc->hw; > + u16 deleted_addr_cnt =3D 0; > int error =3D 0; > > addr_list =3D (struct virtchnl_ether_addr_list *)msg_buf; > @@ -802,11 +822,18 @@ ice_vc_del_eth_addr_msg(struct ice_softc *sc, str= uct ice_vf *vf, u8 *msg_buf) > "%s: VF-%d: Error removing MAC addr for VSI %d\n", > __func__, vf->vf_num, vf->vsi->idx); > v_status =3D VIRTCHNL_STATUS_ERR_PARAM; > - goto done; > + continue; > } > + /* Don't count VF's MAC against its MAC filter limit */ > + if (memcmp(addr_list->list[i].addr, vf->mac, ETHER_ADDR_LEN)) > + deleted_addr_cnt++; > } > > -done: > + if (deleted_addr_cnt >=3D vf->mac_filter_cnt) > + vf->mac_filter_cnt =3D 0; > + else > + vf->mac_filter_cnt -=3D deleted_addr_cnt; > + > ice_aq_send_msg_to_vf(hw, vf->vf_num, VIRTCHNL_OP_DEL_ETH_ADDR, > v_status, NULL, 0, NULL); > } > @@ -838,6 +865,11 @@ ice_vc_add_vlan_msg(struct ice_softc *sc, struct i= ce_vf *vf, u8 *msg_buf) > goto done; > } > > + if (vlan_list->num_elements > (vf->vlan_limit - vf->vlan_cnt)) { > + v_status =3D VIRTCHNL_STATUS_ERR_NO_MEMORY; > + goto done; > + } > + > status =3D ice_add_vlan_hw_filters(vsi, vlan_list->vlan_id, > vlan_list->num_elements); > if (status) { > @@ -849,6 +881,8 @@ ice_vc_add_vlan_msg(struct ice_softc *sc, struct ic= e_vf *vf, u8 *msg_buf) > goto done; > } > > + vf->vlan_cnt +=3D vlan_list->num_elements; > + > done: > ice_aq_send_msg_to_vf(hw, vf->vf_num, VIRTCHNL_OP_ADD_VLAN, > v_status, NULL, 0, NULL); > @@ -892,6 +926,11 @@ ice_vc_del_vlan_msg(struct ice_softc *sc, struct i= ce_vf *vf, u8 *msg_buf) > goto done; > } > > + if (vlan_list->num_elements >=3D vf->vlan_cnt) > + vf->vlan_cnt =3D 0; > + else > + vf->vlan_cnt -=3D vlan_list->num_elements; > + > done: > ice_aq_send_msg_to_vf(hw, vf->vf_num, VIRTCHNL_OP_DEL_VLAN, > v_status, NULL, 0, NULL); > diff --git a/sys/dev/ice/ice_iov.h b/sys/dev/ice/ice_iov.h > index c2ac5fcd5c94..c4fb3e932e3f 100644 > --- a/sys/dev/ice/ice_iov.h > +++ b/sys/dev/ice/ice_iov.h > @@ -85,6 +85,11 @@ struct ice_vf { > u16 vf_num; > struct virtchnl_version_info version; > > + u16 mac_filter_limit; > + u16 mac_filter_cnt; > + u16 vlan_limit; > + u16 vlan_cnt; > + > u16 num_irq_vectors; > u16 *vf_imap; > struct ice_irq_vector *tx_irqvs; > @@ -101,6 +106,9 @@ struct ice_vf { > #define ICE_VIRTCHNL_VALID_PROMISC_FLAGS (FLAG_VF_UNICAST_PROMISC | \ > FLAG_VF_MULTICAST_PROMISC) > > +#define ICE_DEFAULT_VF_VLAN_LIMIT 64 > +#define ICE_DEFAULT_VF_FILTER_LIMIT 16 > + > int ice_iov_attach(struct ice_softc *sc); > int ice_iov_detach(struct ice_softc *sc);