From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 06915A04DD; Tue, 26 Nov 2019 16:09:20 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 06E363195; Tue, 26 Nov 2019 16:09:20 +0100 (CET) Received: from mail2.protei.ru (mail2.protei.ru [62.152.87.202]) by dpdk.org (Postfix) with ESMTP id 02BFB2C60 for ; Tue, 26 Nov 2019 16:09:19 +0100 (CET) Received: from smtp.protei.ru (imap.protei.ru [10.0.0.6]) by mail2.protei.ru (Postfix) with ESMTP id B16C14001D97; Tue, 26 Nov 2019 18:09:18 +0300 (MSK) Received: from localhost (unknown [127.0.0.1]) by smtp.protei.ru (Postfix) with ESMTP id AAF902F236; Tue, 26 Nov 2019 15:09:18 +0000 (UTC) Received: from smtp.protei.ru ([127.0.0.1]) by localhost (imap.protei.ru [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id LYmlyyUGZovP; Tue, 26 Nov 2019 18:09:18 +0300 (MSK) Received: from [192.168.100.231] (podovinnikov.protei [192.168.100.231]) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by smtp.protei.ru (Postfix) with ESMTPSA id 963EB2F233; Tue, 26 Nov 2019 18:09:18 +0300 (MSK) To: Ferruh Yigit , linville@tuxdriver.com Cc: dev@dpdk.org, Chas Williams References: <20191125180323.E0B174C90@dpdk.org> <20191126115508.11138-1-podovinnikov@protei.ru> <906848bc-7411-79dd-0ee1-c0f3c5d1ff16@intel.com> From: podovinnikov Message-ID: Date: Tue, 26 Nov 2019 18:09:23 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.1 MIME-Version: 1.0 In-Reply-To: <906848bc-7411-79dd-0ee1-c0f3c5d1ff16@intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US Subject: Re: [dpdk-dev] [PATCH v2] fix lacp check system address X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Hi Ferruh > This is bonding patch, please cc bonding maintainers (Chas, instead of John W. > Linville). Sorry about that. I have 2 patches ( one for af packet, one for bonding). I am a little confused. > Can you please give more details, what is failing what is the impact etc. In bond (lacp) we have several nics ( ports ) When we have negotiation with peer about what port we prefer, we send information about what system we preferred in partner system name field. Peer also sends us what partner system name it prefer. When we receive a message from it we must compare its preferred system name with our system name, but not with our port mac address In my test I have several problems with that 1. If master port (mac address same as system address) shuts down (I have two ports) I loose connection 2. If secondary port (mac address not same as system address) receives message before master port, my connection is not established. 26.11.2019 16:27, Ferruh Yigit пишет: > Hi Vadim, > > On 11/26/2019 11:55 AM, Vadim wrote: >> Signed-off-by: Vadim > Can you please provide full "Name Surname " signature? > > > This is bonding patch, please cc bonding maintainers (Chas, instead of John W. > Linville). > >> fix lacp check system address > Can you please give more details, what is failing what is the impact etc. > >> --- >> drivers/net/bonding/rte_eth_bond_8023ad.c | 17 ++++++++++++++++- >> 1 file changed, 16 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/net/bonding/rte_eth_bond_8023ad.c b/drivers/net/bonding/rte_eth_bond_8023ad.c >> index b77a37ddb..d4dda790a 100644 >> --- a/drivers/net/bonding/rte_eth_bond_8023ad.c >> +++ b/drivers/net/bonding/rte_eth_bond_8023ad.c >> @@ -792,18 +792,33 @@ rx_machine_update(struct bond_dev_private *internals, uint16_t slave_id, >> struct rte_mbuf *lacp_pkt) { >> struct lacpdu_header *lacp; >> struct lacpdu_actor_partner_params *partner; >> + struct port *port, *agg; >> >> if (lacp_pkt != NULL) { >> lacp = rte_pktmbuf_mtod(lacp_pkt, struct lacpdu_header *); >> RTE_ASSERT(lacp->lacpdu.subtype == SLOW_SUBTYPE_LACP); >> >> partner = &lacp->lacpdu.partner; >> + port = &bond_mode_8023ad_ports[slave_id]; >> + agg = &bond_mode_8023ad_ports[port->aggregator_port_id]; >> + >> if (rte_is_same_ether_addr(&partner->port_params.system, >> - &internals->mode4.mac_addr)) { >> + &agg->actor.system)) { >> /* This LACP frame is sending to the bonding port >> * so pass it to rx_machine. >> */ >> rx_machine(internals, slave_id, &lacp->lacpdu); >> + } else { >> + char preferred_system_name[RTE_ETHER_ADDR_FMT_SIZE]; >> + char self_system_name[RTE_ETHER_ADDR_FMT_SIZE]; >> + rte_ether_format_addr(preferred_system_name, >> + RTE_ETHER_ADDR_FMT_SIZE, >> + &partner->port_params.system); >> + rte_ether_format_addr(self_system_name, >> + RTE_ETHER_ADDR_FMT_SIZE, &agg->actor.system); >> + MODE4_DEBUG("preferred partner system %s not equal " >> + "self system: %s\n", >> + preferred_system_name, self_system_name); >> } >> rte_pktmbuf_free(lacp_pkt); >> } else >>