Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp4575116pxv; Tue, 20 Jul 2021 06:59:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxDYkSjz9v6FKkIs4y50S0VOeKXUlwWkVAfI5b5UaBSsF18pCVny/RQHQ0yj4HMAmw611qP X-Received: by 2002:a5d:89d6:: with SMTP id a22mr228795iot.178.1626789545509; Tue, 20 Jul 2021 06:59:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626789545; cv=none; d=google.com; s=arc-20160816; b=jadJNTeA7yhNMoHUiQ35KMnC9DD06cZ+d3IQAmmD1iNQ+Okmqmj5GYfas0eAqKUsi5 31FUdS5WQn6C1wbBL8zVBHrI+D2EtZqrsWbQcxvGbrsfo8FfI8n8tzxfEXZT77C04hO/ UaPPugHf/222bOC52RGIYuPWWfnSZACiSO5AmaIC1/RbILOboWssBf6bocZSn+p5A2bi mhslOocLke7AJSuf7PQhV+Gun/x+q4PfdU3Oi2pwmSbjuI9sFTGb4GkmYL2EYykEDXvd 9Ik1SC0CJNoTbJdrg9NplY4qmvnG9oGro1wviwQiRnZb7OHTf9LbKygUVAAPRjb8CX7X d5xw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=+TxmGM7oZN1JvErCcvoTJ49wLDlNOAh824/dQGvw4p8=; b=sFOiK/W1jaesF1DVt7Ia/o4HS02FugsANIMPLgoqgcwKDu8OmdthBhQuUbv8I5IuA2 sq2w7pbgbvwwxiF4ZxRnRU4go5YMcf7UmrzzqKA8ckvai7HianYN1S6DGQI/6yMLCpqp DDlWdGT7HfSxsK8tWbRMy9u1DH3//ieaIABKLiIJCLPUy1T5EeLIaDf7C/cCssqvvCC7 ucI/1jmasTSuoxQd6AE5pVrKhmGW/c4X4JHGc4Vp3xzsC3iIGJzgFVGSRlibIJgGdgyx 3rFIB4r1GOnNFj/oPEd6/T4GrcT3ZRERS1ywabPewjJtnFPUyI4e1CJMBtqoMDtyaF93 m5CA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@lunn.ch header.s=20171124 header.b=axRBuzbs; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id q21si14372572jat.69.2021.07.20.06.58.54; Tue, 20 Jul 2021 06:59:05 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@lunn.ch header.s=20171124 header.b=axRBuzbs; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239344AbhGTNN7 (ORCPT + 99 others); Tue, 20 Jul 2021 09:13:59 -0400 Received: from vps0.lunn.ch ([185.16.172.187]:36074 "EHLO vps0.lunn.ch" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238633AbhGTNFM (ORCPT ); Tue, 20 Jul 2021 09:05:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lunn.ch; s=20171124; h=In-Reply-To:Content-Disposition:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:From:Sender:Reply-To:Subject: Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description:Content-Disposition:In-Reply-To:References; bh=+TxmGM7oZN1JvErCcvoTJ49wLDlNOAh824/dQGvw4p8=; b=axRBuzbs65tgu6LobjXr9ktpVL 2CZYoWTCgIDB0nllziru7nQNsMIrPANUYeADcaEr0cqMiyEY5kVBox1fQP/zsjTETF7gNz1X1h+x7 r+iPC580gmKnm8mS7Xd9jyd42VbVRy9aqoJ2EAvpNCEf2QkuPgnAoQ0DSrxIHVmgWjTM=; Received: from andrew by vps0.lunn.ch with local (Exim 4.94.2) (envelope-from ) id 1m5q45-00E3c3-S6; Tue, 20 Jul 2021 15:45:41 +0200 Date: Tue, 20 Jul 2021 15:45:41 +0200 From: Andrew Lunn To: DENG Qingfang Cc: Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Jakub Kicinski , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH net] net: dsa: mv88e6xxx: check for address type in port_db_load_purge Message-ID: References: <20210720092426.1998666-1-dqfext@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210720092426.1998666-1-dqfext@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jul 20, 2021 at 05:24:26PM +0800, DENG Qingfang wrote: > The same state value of an ATU entry can mean different states, > depending on the entry's address type. > Check for its address type instead of state, to determine if its > portvec should be overridden. Please could you expand this description. It is not obvious to me this change correct. > > Fixes: f72f2fb8fb6b ("net: dsa: mv88e6xxx: override existent unicast portvec in port_fdb_add") > Signed-off-by: DENG Qingfang > --- > drivers/net/dsa/mv88e6xxx/chip.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c > index beb41572d04e..dd4d7fa0da8e 100644 > --- a/drivers/net/dsa/mv88e6xxx/chip.c > +++ b/drivers/net/dsa/mv88e6xxx/chip.c > @@ -1741,7 +1741,7 @@ static int mv88e6xxx_port_db_load_purge(struct mv88e6xxx_chip *chip, int port, > if (!entry.portvec) > entry.state = 0; > } else { > - if (state == MV88E6XXX_G1_ATU_DATA_STATE_UC_STATIC) > + if (is_unicast_ether_addr(addr)) > entry.portvec = BIT(port); > else > entry.portvec |= BIT(port); I agree that MV88E6XXX_G1_ATU_DATA_STATE_UC_STATIC should only be used with an address which is know to be unicast. If the address is multicast, it means it should be considered as a management frame, and given priority override. But what exactly are we interested in here? The old code looked like it wanted to match on static unicast entries. Your change will make it match on static and dynamic unicast? Do we want dynamic as well? Why is the fix not this? > - if (state == MV88E6XXX_G1_ATU_DATA_STATE_UC_STATIC) > + if (is_unicast_ether_addr(addr) && state == MV88E6XXX_G1_ATU_DATA_STATE_UC_STATIC) which fixes the problem you describe in the commit message. Thanks Andrew