From nobody Tue Jul 2 08:06:23 2024 X-Original-To: dev-commits-src-branches@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 4WCwTq4sNtz5PhkC; Tue, 02 Jul 2024 08:06:23 +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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4WCwTq3Bqfz4JQH; Tue, 2 Jul 2024 08:06:23 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1719907583; 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=N5hOLo1gY2Ncm6Nnwu+rMQzgCswSZfPAepdCXgDPcQM=; b=Pj+DsmU9hoeR0gRoneaNIORM8wFvDFvRB3jDS5wXQj2MQMFxsC7pZl27kRVIMZ6OlEir6E cX0IPsAOmM3rPUj+SL+kLZ9fwOzsS1Vd5I0NIP8AE1jajk7ILOE530wyeV/1l+3upnX74T /T20VEdV1nIl4T9Cyyr0Gtq6yXT7ka2s8krgUzbxxrJ1OdObSl7jc84K92HrpILZj0w4oe ke6UFpAQnbV6G0nu8mp5bYYv1vVLpEjtx+Orp1rqQWtKLujuik2xTJjR9wunQ7amZzYmWX gx1iK3KStwRYQLXOrR6fPVArm3Up6hpZO8HCYyWCAAGuR4uEcAHTeVPnC8C4Pg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1719907583; a=rsa-sha256; cv=none; b=xYf6im1GNbY6wRCZLWYz7qypYRzotcw32V06+KtycVSdKOGeGDBnHWBb0VGY2jF191GRG9 1z6za4LyEbabMRZdGeqJ5NtfHWMDDlgI11hYhjhzRsOfcirBaGwYNIj0l+08OFdtg1i6Lj WN2vShx/PNv6xZIBO1vEwQ0l2h91M9aKchWwOV/NmvxWB4hLUrNeolyaAOUtTQexJxuvYO jLdNjXwptb8FnQr764LI1K+1Hfm8M9ybFIjqSGN2zsehbVy5NxAwRKchshjMoIda63rNL3 OljsEVqX2bOV2TR7SdOIo6faD+4IZmIbJBJBOuZlNWJPJlP9kLtz6OW6X584kQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1719907583; 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=N5hOLo1gY2Ncm6Nnwu+rMQzgCswSZfPAepdCXgDPcQM=; b=OPJvPDzvuhLvWOQ/cviCTzsGcnRyYUfqHEo0ME24RblOryCnPbeyi5tWh/UPOLxyWaRXRr T0ydPOSlmmRq98Fc500xo4XfqmzsiAiQx4Mk8rIDEnGZg9XhtmF6Z1k3eQOPN3eSPrKKyg lCof6SWYZw9omHZgGvq22eYx9FoijmihPgmQz7mdDnWZ5yDOF/5gxcuPPqymip2eGTO9vR WYpNEHtxp8wiSmLVngftM6U6l6+Sq0E097RPYph513rAwtiAbaEWEIpXcBQ6itp1NmNIzc T7EhUUcV7qi0/9GYcdrF/nFf3GJ+2pc7Qy/Ig5QQNxGx/XwToIt1aNxeDYdInA== 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 4WCwTq2q7fzgQn; Tue, 2 Jul 2024 08:06:23 +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 46286NK6083356; Tue, 2 Jul 2024 08:06:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 46286NdT083333; Tue, 2 Jul 2024 08:06:23 GMT (envelope-from git) Date: Tue, 2 Jul 2024 08:06:23 GMT Message-Id: <202407020806.46286NdT083333@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kristof Provost Subject: git: 536a452cc4e3 - stable/14 - cxgbev(4): Pay attention to the VLAN configuration for the VF. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 536a452cc4e388454d829144dab95927ec39128f Auto-Submitted: auto-generated The branch stable/14 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=536a452cc4e388454d829144dab95927ec39128f commit 536a452cc4e388454d829144dab95927ec39128f Author: Navdeep Parhar AuthorDate: 2024-06-17 17:11:16 +0000 Commit: Kristof Provost CommitDate: 2024-07-01 16:08:17 +0000 cxgbev(4): Pay attention to the VLAN configuration for the VF. Make sure that the transmit traffic is tagged correctly or else the firmware will refuse to transmit and will report an ACL violation. On receive the hardware will make sure that tagged traffic is delivered to the appropriate VM. The driver only asserts that the VLAN id that was extracted from the wire traffic matches the VF's configuration. All this works when associating a specific VLAN id with a VF. The 'trunk' setting likely needs more work. MFC after: 1 week Sponsored by: Chelsio Communications (cherry picked from commit 2d0a01271223ce623c78f5c8236f8f3f4b6ef104) --- sys/dev/cxgbe/adapter.h | 1 + sys/dev/cxgbe/t4_sge.c | 20 +++++++++++++++----- sys/dev/cxgbe/t4_vf.c | 2 ++ 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/sys/dev/cxgbe/adapter.h b/sys/dev/cxgbe/adapter.h index 498d80654c71..335b1be57b8b 100644 --- a/sys/dev/cxgbe/adapter.h +++ b/sys/dev/cxgbe/adapter.h @@ -928,6 +928,7 @@ struct adapter { u_int vxlan_refcount; int rawf_base; int nrawf; + u_int vlan_id; struct taskqueue *tq[MAX_NCHAN]; /* General purpose taskqueues */ struct port_info *port[MAX_NPORTS]; diff --git a/sys/dev/cxgbe/t4_sge.c b/sys/dev/cxgbe/t4_sge.c index 2ef05b5a9f86..7008c3c65e02 100644 --- a/sys/dev/cxgbe/t4_sge.c +++ b/sys/dev/cxgbe/t4_sge.c @@ -2086,9 +2086,17 @@ have_mbuf: } if (cpl->vlan_ex) { - m0->m_pkthdr.ether_vtag = be16toh(cpl->vlan); - m0->m_flags |= M_VLANTAG; - rxq->vlan_extraction++; + if (sc->flags & IS_VF && sc->vlan_id) { + /* + * HW is not setup correctly if extracted vlan_id does + * not match the VF's setting. + */ + MPASS(be16toh(cpl->vlan) == sc->vlan_id); + } else { + m0->m_pkthdr.ether_vtag = be16toh(cpl->vlan); + m0->m_flags |= M_VLANTAG; + rxq->vlan_extraction++; + } } if (rxq->iq.flags & IQ_RX_TIMESTAMP) { @@ -5477,7 +5485,8 @@ write_txpkt_vm_wr(struct adapter *sc, struct sge_txq *txq, struct mbuf *m0) ctrl1 |= F_TXPKT_VLAN_VLD | V_TXPKT_VLAN(m0->m_pkthdr.ether_vtag); txq->vlan_insertion++; - } + } else if (sc->vlan_id) + ctrl1 |= F_TXPKT_VLAN_VLD | V_TXPKT_VLAN(sc->vlan_id); /* CPL header */ cpl->ctrl0 = txq->cpl_ctrl0; @@ -5978,7 +5987,8 @@ write_txpkts_vm_wr(struct adapter *sc, struct sge_txq *txq) ctrl1 |= F_TXPKT_VLAN_VLD | V_TXPKT_VLAN(m->m_pkthdr.ether_vtag); txq->vlan_insertion++; - } + } else if (sc->vlan_id) + ctrl1 |= F_TXPKT_VLAN_VLD | V_TXPKT_VLAN(sc->vlan_id); /* CPL header */ cpl->ctrl0 = txq->cpl_ctrl0; diff --git a/sys/dev/cxgbe/t4_vf.c b/sys/dev/cxgbe/t4_vf.c index 24c80aaa7b2d..8ca6dd98a66f 100644 --- a/sys/dev/cxgbe/t4_vf.c +++ b/sys/dev/cxgbe/t4_vf.c @@ -660,6 +660,8 @@ t4vf_attach(device_t dev) t4_os_set_hw_addr(pi, mac); pmask &= ~(1 << p); + sc->vlan_id = t4vf_get_vf_vlan(sc); + /* No t4_link_start. */ snprintf(pi->lockname, sizeof(pi->lockname), "%sp%d",