From owner-svn-src-all@freebsd.org Sat Jun 4 15:02:27 2016 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 30439B69661; Sat, 4 Jun 2016 15:02:27 +0000 (UTC) (envelope-from arybchik@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id E2B8E19C3; Sat, 4 Jun 2016 15:02:26 +0000 (UTC) (envelope-from arybchik@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u54F2Q6H004509; Sat, 4 Jun 2016 15:02:26 GMT (envelope-from arybchik@FreeBSD.org) Received: (from arybchik@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u54F2QPl004508; Sat, 4 Jun 2016 15:02:26 GMT (envelope-from arybchik@FreeBSD.org) Message-Id: <201606041502.u54F2QPl004508@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: arybchik set sender to arybchik@FreeBSD.org using -f From: Andrew Rybchenko Date: Sat, 4 Jun 2016 15:02:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r301343 - stable/10/sys/dev/sfxge/common X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 04 Jun 2016 15:02:27 -0000 Author: arybchik Date: Sat Jun 4 15:02:25 2016 New Revision: 301343 URL: https://svnweb.freebsd.org/changeset/base/301343 Log: MFC r299595 sfxge(4): comment on when we assume multicast chaining is available It's the same on Medford as Huntington. Multicast chaining is not always on, even with Medford, as it's not supported by low latency firmware. Unlike the Linux driver, we don't need to support virtulization with firmware released before support for multicast chaining was added. Submitted by: Mark Spender Sponsored by: Solarflare Communications, Inc. Modified: stable/10/sys/dev/sfxge/common/hunt_filter.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/sfxge/common/hunt_filter.c ============================================================================== --- stable/10/sys/dev/sfxge/common/hunt_filter.c Sat Jun 4 15:01:08 2016 (r301342) +++ stable/10/sys/dev/sfxge/common/hunt_filter.c Sat Jun 4 15:02:25 2016 (r301343) @@ -1191,7 +1191,7 @@ ef10_filter_remove_old( static __checkReturn efx_rc_t -hunt_filter_get_workarounds( +ef10_filter_get_workarounds( __in efx_nic_t *enp) { efx_nic_cfg_t *encp = &enp->en_nic_cfg; @@ -1319,18 +1319,28 @@ ef10_filter_reconfigure( * filters, and can only be enabled or disabled when the hardware filter * table is empty. * + * Chained multicast filters require support from the datapath firmware, + * and may not be available (e.g. low-latency variants or old Huntington + * firmware). + * * Firmware will reset (FLR) functions which have inserted filters in * the hardware filter table when the workaround is enabled/disabled. * Functions without any hardware filters are not reset. * * Re-check if the workaround is enabled after adding unicast hardware - * filters. This ensures that encp->enc_workaround_bug26807 matches the + * filters. This ensures that encp->enc_bug26807_workaround matches the * firmware state, and that later changes to enable/disable the * workaround will result in this function seeing a reset (FLR). * - * FIXME: On Medford multicast chaining should always be on. + * In common-code drivers, we only support multiple PCI function + * scenarios with firmware that supports multicast chaining, so we can + * assume it is enabled for such cases and hence simplify the filter + * insertion logic. Firmware that does not support multicast chaining + * does not support multiple PCI function configurations either, so + * filter insertion is much simpler and the same strategies can still be + * used. */ - if ((rc = hunt_filter_get_workarounds(enp)) != 0) + if ((rc = ef10_filter_get_workarounds(enp)) != 0) goto fail2; if ((table->eft_using_all_mulcst != all_mulcst) &&