* [dpdk-dev] [PATCH v2] fix lacp check system address
[not found] <20191125180323.E0B174C90@dpdk.org>
@ 2019-11-26 11:55 ` Vadim
2019-11-26 13:27 ` Ferruh Yigit
2021-02-17 16:26 ` [dpdk-dev] [PATCH v3] net/bonding: fix LACP system address check Ferruh Yigit
0 siblings, 2 replies; 14+ messages in thread
From: Vadim @ 2019-11-26 11:55 UTC (permalink / raw)
To: linville; +Cc: dev, Vadim
Signed-off-by: Vadim <podovinnikov@protei.ru>
fix lacp check system address
---
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
--
2.24.0
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [dpdk-dev] [PATCH v2] fix lacp check system address
2019-11-26 11:55 ` [dpdk-dev] [PATCH v2] fix lacp check system address Vadim
@ 2019-11-26 13:27 ` Ferruh Yigit
2019-11-26 15:09 ` podovinnikov
2021-02-17 16:26 ` [dpdk-dev] [PATCH v3] net/bonding: fix LACP system address check Ferruh Yigit
1 sibling, 1 reply; 14+ messages in thread
From: Ferruh Yigit @ 2019-11-26 13:27 UTC (permalink / raw)
To: Vadim, linville; +Cc: dev, Chas Williams
Hi Vadim,
On 11/26/2019 11:55 AM, Vadim wrote:
> Signed-off-by: Vadim <podovinnikov@protei.ru>
Can you please provide full "Name Surname <email@adress>" 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
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [dpdk-dev] [PATCH v2] fix lacp check system address
2019-11-26 13:27 ` Ferruh Yigit
@ 2019-11-26 15:09 ` podovinnikov
2020-04-10 10:15 ` Ferruh Yigit
0 siblings, 1 reply; 14+ messages in thread
From: podovinnikov @ 2019-11-26 15:09 UTC (permalink / raw)
To: Ferruh Yigit, linville; +Cc: dev, Chas Williams
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 <podovinnikov@protei.ru>
> Can you please provide full "Name Surname <email@adress>" 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
>>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [dpdk-dev] [PATCH v2] fix lacp check system address
2019-11-26 15:09 ` podovinnikov
@ 2020-04-10 10:15 ` Ferruh Yigit
2020-04-10 10:21 ` Ferruh Yigit
0 siblings, 1 reply; 14+ messages in thread
From: Ferruh Yigit @ 2020-04-10 10:15 UTC (permalink / raw)
To: podovinnikov, Chas Williams; +Cc: dev
On 11/26/2019 3:09 PM, podovinnikov wrote:
> 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.
Hi Vadim,
Thanks for the info and sorry for late response, it is sitting in backlog for a
long time now.
@Chas, do you have any objection on the fix, if not I am planning to merge it soon.
Thanks,
ferruh
>
>
> 26.11.2019 16:27, Ferruh Yigit пишет:
>> Hi Vadim,
>>
>> On 11/26/2019 11:55 AM, Vadim wrote:
>>> Signed-off-by: Vadim <podovinnikov@protei.ru>
>> Can you please provide full "Name Surname <email@adress>" 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
>>>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [dpdk-dev] [PATCH v2] fix lacp check system address
2020-04-10 10:15 ` Ferruh Yigit
@ 2020-04-10 10:21 ` Ferruh Yigit
2020-04-10 10:24 ` Ferruh Yigit
0 siblings, 1 reply; 14+ messages in thread
From: Ferruh Yigit @ 2020-04-10 10:21 UTC (permalink / raw)
To: podovinnikov, Chas Williams, Wei Hu (Xavier); +Cc: dev
On 4/10/2020 11:15 AM, Ferruh Yigit wrote:
> On 11/26/2019 3:09 PM, podovinnikov wrote:
>> 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.
>
> Hi Vadim,
>
> Thanks for the info and sorry for late response, it is sitting in backlog for a
> long time now.
>
> @Chas, do you have any objection on the fix, if not I am planning to merge it soon.
>
> Thanks,
> ferruh
cc'ed Xavier, he also has a bonding patch in the backlog waiting for review [1].
Vadim, Xavier,
Since you both send bonding patches, I assume you both know about bonding at
some level, at least more than me, so would you mind reviewing eachother's
patch? So both can go it.
Thanks,
ferruh
[1]
https://patchwork.dpdk.org/user/todo/dpdk/?series=8679
>
>>
>>
>> 26.11.2019 16:27, Ferruh Yigit пишет:
>>> Hi Vadim,
>>>
>>> On 11/26/2019 11:55 AM, Vadim wrote:
>>>> Signed-off-by: Vadim <podovinnikov@protei.ru>
>>> Can you please provide full "Name Surname <email@adress>" 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
>>>>
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [dpdk-dev] [PATCH v2] fix lacp check system address
2020-04-10 10:21 ` Ferruh Yigit
@ 2020-04-10 10:24 ` Ferruh Yigit
2020-06-04 7:52 ` podovinnikov
0 siblings, 1 reply; 14+ messages in thread
From: Ferruh Yigit @ 2020-04-10 10:24 UTC (permalink / raw)
To: podovinnikov, Chas Williams, Wei Hu (Xavier), Wei Hu (Xavier); +Cc: dev
On 4/10/2020 11:21 AM, Ferruh Yigit wrote:
> On 4/10/2020 11:15 AM, Ferruh Yigit wrote:
>> On 11/26/2019 3:09 PM, podovinnikov wrote:
>>> 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.
>>
>> Hi Vadim,
>>
>> Thanks for the info and sorry for late response, it is sitting in backlog for a
>> long time now.
>>
>> @Chas, do you have any objection on the fix, if not I am planning to merge it soon.
>>
>> Thanks,
>> ferruh
>
> cc'ed Xavier, he also has a bonding patch in the backlog waiting for review [1].
>
>
> Vadim, Xavier,
>
> Since you both send bonding patches, I assume you both know about bonding at
> some level, at least more than me, so would you mind reviewing eachother's
> patch? So both can go it.
+ other email address of the Xavier.
>
> Thanks,
> ferruh
>
>
> [1]
> https://patchwork.dpdk.org/user/todo/dpdk/?series=8679
>
>>
>>>
>>>
>>> 26.11.2019 16:27, Ferruh Yigit пишет:
>>>> Hi Vadim,
>>>>
>>>> On 11/26/2019 11:55 AM, Vadim wrote:
>>>>> Signed-off-by: Vadim <podovinnikov@protei.ru>
>>>> Can you please provide full "Name Surname <email@adress>" 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
>>>>>
>>
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [dpdk-dev] [PATCH v2] fix lacp check system address
2020-04-10 10:24 ` Ferruh Yigit
@ 2020-06-04 7:52 ` podovinnikov
2020-06-04 11:44 ` Ferruh Yigit
0 siblings, 1 reply; 14+ messages in thread
From: podovinnikov @ 2020-06-04 7:52 UTC (permalink / raw)
To: Ferruh Yigit, Chas Williams, Wei Hu (Xavier), Wei Hu (Xavier); +Cc: dev
Hi Ferruh!
Unfortunately I didn't see any patch from this link
https://patchwork.dpdk.org/user/todo/dpdk/?series=8679
10.04.2020 13:24, Ferruh Yigit пишет:
> On 4/10/2020 11:21 AM, Ferruh Yigit wrote:
>> On 4/10/2020 11:15 AM, Ferruh Yigit wrote:
>>> On 11/26/2019 3:09 PM, podovinnikov wrote:
>>>> 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.
>>> Hi Vadim,
>>>
>>> Thanks for the info and sorry for late response, it is sitting in backlog for a
>>> long time now.
>>>
>>> @Chas, do you have any objection on the fix, if not I am planning to merge it soon.
>>>
>>> Thanks,
>>> ferruh
>> cc'ed Xavier, he also has a bonding patch in the backlog waiting for review [1].
>>
>>
>> Vadim, Xavier,
>>
>> Since you both send bonding patches, I assume you both know about bonding at
>> some level, at least more than me, so would you mind reviewing eachother's
>> patch? So both can go it.
> + other email address of the Xavier.
>
>> Thanks,
>> ferruh
>>
>>
>> [1]
>> https://patchwork.dpdk.org/user/todo/dpdk/?series=8679
>>
>>>>
>>>> 26.11.2019 16:27, Ferruh Yigit пишет:
>>>>> Hi Vadim,
>>>>>
>>>>> On 11/26/2019 11:55 AM, Vadim wrote:
>>>>>> Signed-off-by: Vadim <podovinnikov@protei.ru>
>>>>> Can you please provide full "Name Surname <email@adress>" 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
>>>>>>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [dpdk-dev] [PATCH v2] fix lacp check system address
2020-06-04 7:52 ` podovinnikov
@ 2020-06-04 11:44 ` Ferruh Yigit
0 siblings, 0 replies; 14+ messages in thread
From: Ferruh Yigit @ 2020-06-04 11:44 UTC (permalink / raw)
To: podovinnikov, Chas Williams, Wei Hu (Xavier), Wei Hu (Xavier); +Cc: dev
On 6/4/2020 8:52 AM, podovinnikov wrote:
> Hi Ferruh!
>
> Unfortunately I didn't see any patch from this link
>
> https://patchwork.dpdk.org/user/todo/dpdk/?series=8679
It is archived, there is a new version of that patchset,
can you please check it:
https://patches.dpdk.org/project/dpdk/list/?series=9456
Thanks,
ferruh
>
> 10.04.2020 13:24, Ferruh Yigit пишет:
>> On 4/10/2020 11:21 AM, Ferruh Yigit wrote:
>>> On 4/10/2020 11:15 AM, Ferruh Yigit wrote:
>>>> On 11/26/2019 3:09 PM, podovinnikov wrote:
>>>>> 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.
>>>> Hi Vadim,
>>>>
>>>> Thanks for the info and sorry for late response, it is sitting in backlog for a
>>>> long time now.
>>>>
>>>> @Chas, do you have any objection on the fix, if not I am planning to merge it soon.
>>>>
>>>> Thanks,
>>>> ferruh
>>> cc'ed Xavier, he also has a bonding patch in the backlog waiting for review [1].
>>>
>>>
>>> Vadim, Xavier,
>>>
>>> Since you both send bonding patches, I assume you both know about bonding at
>>> some level, at least more than me, so would you mind reviewing eachother's
>>> patch? So both can go it.
>> + other email address of the Xavier.
>>
>>> Thanks,
>>> ferruh
>>>
>>>
>>> [1]
>>> https://patchwork.dpdk.org/user/todo/dpdk/?series=8679
>>>
>>>>>
>>>>> 26.11.2019 16:27, Ferruh Yigit пишет:
>>>>>> Hi Vadim,
>>>>>>
>>>>>> On 11/26/2019 11:55 AM, Vadim wrote:
>>>>>>> Signed-off-by: Vadim <podovinnikov@protei.ru>
>>>>>> Can you please provide full "Name Surname <email@adress>" 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
>>>>>>>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [dpdk-dev] [PATCH v3] net/bonding: fix LACP system address check
2019-11-26 11:55 ` [dpdk-dev] [PATCH v2] fix lacp check system address Vadim
2019-11-26 13:27 ` Ferruh Yigit
@ 2021-02-17 16:26 ` Ferruh Yigit
2021-02-17 16:30 ` Ferruh Yigit
2021-03-05 1:43 ` Min Hu (Connor)
1 sibling, 2 replies; 14+ messages in thread
From: Ferruh Yigit @ 2021-02-17 16:26 UTC (permalink / raw)
To: Chas Williams, Min Hu (Connor), Liang Zhang
Cc: Ferruh Yigit, dev, Vadim Podovinnikov, stable, Declan Doherty
From: Vadim Podovinnikov <podovinnikov@protei.ru>
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.
Fixes: 56cbc0817399 ("net/bonding: fix LACP negotiation")
Cc: stable@dpdk.org
Signed-off-by: Vadim Podovinnikov <podovinnikov@protei.ru>
---
Cc: zhangliang@bigo.sg
Cc: Declan Doherty <declan.doherty@intel.com>
v3: Re-sent with rebase
* Patch title updated, commit log updated with info shared in email
* Sign-off updated with full name
* Debug log slightly updated
* Syntax slightly updated
---
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 5fe004e551de..128754f4595a 100644
--- a/drivers/net/bonding/rte_eth_bond_8023ad.c
+++ b/drivers/net/bonding/rte_eth_bond_8023ad.c
@@ -804,19 +804,34 @@ 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_zero_ether_addr(&partner->port_params.system) ||
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 "
+ "is not equal with self system: %s\n",
+ preferred_system_name, self_system_name);
}
rte_pktmbuf_free(lacp_pkt);
} else
--
2.29.2
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [dpdk-dev] [PATCH v3] net/bonding: fix LACP system address check
2021-02-17 16:26 ` [dpdk-dev] [PATCH v3] net/bonding: fix LACP system address check Ferruh Yigit
@ 2021-02-17 16:30 ` Ferruh Yigit
2021-03-02 12:10 ` Ferruh Yigit
2021-03-05 1:43 ` Min Hu (Connor)
1 sibling, 1 reply; 14+ messages in thread
From: Ferruh Yigit @ 2021-02-17 16:30 UTC (permalink / raw)
To: Chas Williams, Min Hu (Connor), Liang Zhang
Cc: dev, Vadim Podovinnikov, stable, Declan Doherty
On 2/17/2021 4:26 PM, Ferruh Yigit wrote:
> From: Vadim Podovinnikov <podovinnikov@protei.ru>
>
> 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.
>
> Fixes: 56cbc0817399 ("net/bonding: fix LACP negotiation")
> Cc: stable@dpdk.org
>
> Signed-off-by: Vadim Podovinnikov <podovinnikov@protei.ru>
> ---
> Cc: zhangliang@bigo.sg
> Cc: Declan Doherty <declan.doherty@intel.com>
>
> v3: Re-sent with rebase
> * Patch title updated, commit log updated with info shared in email
> * Sign-off updated with full name
> * Debug log slightly updated
> * Syntax slightly updated
This patch is waiting for review for a long time, if there is no objection I am
planning to get it early in the release to give it a time to fix any possible
issues.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [dpdk-dev] [PATCH v3] net/bonding: fix LACP system address check
2021-02-17 16:30 ` Ferruh Yigit
@ 2021-03-02 12:10 ` Ferruh Yigit
0 siblings, 0 replies; 14+ messages in thread
From: Ferruh Yigit @ 2021-03-02 12:10 UTC (permalink / raw)
To: Chas Williams, Min Hu (Connor), Liang Zhang
Cc: dev, Vadim Podovinnikov, stable, Declan Doherty
On 2/17/2021 4:30 PM, Ferruh Yigit wrote:
> On 2/17/2021 4:26 PM, Ferruh Yigit wrote:
>> From: Vadim Podovinnikov <podovinnikov@protei.ru>
>>
>> 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.
>>
>> Fixes: 56cbc0817399 ("net/bonding: fix LACP negotiation")
>> Cc: stable@dpdk.org
>>
>> Signed-off-by: Vadim Podovinnikov <podovinnikov@protei.ru>
>> ---
>> Cc: zhangliang@bigo.sg
>> Cc: Declan Doherty <declan.doherty@intel.com>
>>
>> v3: Re-sent with rebase
>> * Patch title updated, commit log updated with info shared in email
>> * Sign-off updated with full name
>> * Debug log slightly updated
>> * Syntax slightly updated
>
> This patch is waiting for review for a long time, if there is no objection I am
> planning to get it early in the release to give it a time to fix any possible
> issues.
Chas, Connor, any comment?
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [dpdk-dev] [PATCH v3] net/bonding: fix LACP system address check
2021-02-17 16:26 ` [dpdk-dev] [PATCH v3] net/bonding: fix LACP system address check Ferruh Yigit
2021-02-17 16:30 ` Ferruh Yigit
@ 2021-03-05 1:43 ` Min Hu (Connor)
2021-03-05 9:21 ` Ferruh Yigit
1 sibling, 1 reply; 14+ messages in thread
From: Min Hu (Connor) @ 2021-03-05 1:43 UTC (permalink / raw)
To: Ferruh Yigit, Chas Williams, Liang Zhang
Cc: dev, Vadim Podovinnikov, stable, Declan Doherty
Acked-by: Min Hu (Connor) <humin29@huawei.com>
在 2021/2/18 0:26, Ferruh Yigit 写道:
> From: Vadim Podovinnikov <podovinnikov@protei.ru>
>
> 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.
>
> Fixes: 56cbc0817399 ("net/bonding: fix LACP negotiation")
> Cc: stable@dpdk.org
>
> Signed-off-by: Vadim Podovinnikov <podovinnikov@protei.ru>
> ---
> Cc: zhangliang@bigo.sg
> Cc: Declan Doherty <declan.doherty@intel.com>
>
> v3: Re-sent with rebase
> * Patch title updated, commit log updated with info shared in email
> * Sign-off updated with full name
> * Debug log slightly updated
> * Syntax slightly updated
> ---
> 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 5fe004e551de..128754f4595a 100644
> --- a/drivers/net/bonding/rte_eth_bond_8023ad.c
> +++ b/drivers/net/bonding/rte_eth_bond_8023ad.c
> @@ -804,19 +804,34 @@ 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_zero_ether_addr(&partner->port_params.system) ||
> 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 "
> + "is not equal with self system: %s\n",
> + preferred_system_name, self_system_name);
> }
> rte_pktmbuf_free(lacp_pkt);
> } else
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [dpdk-dev] [PATCH v3] net/bonding: fix LACP system address check
2021-03-05 1:43 ` Min Hu (Connor)
@ 2021-03-05 9:21 ` Ferruh Yigit
0 siblings, 0 replies; 14+ messages in thread
From: Ferruh Yigit @ 2021-03-05 9:21 UTC (permalink / raw)
To: Min Hu (Connor), Chas Williams, Liang Zhang
Cc: dev, Vadim Podovinnikov, stable, Declan Doherty
On 3/5/2021 1:43 AM, Min Hu (Connor) wrote:
> 在 2021/2/18 0:26, Ferruh Yigit 写道:
>> From: Vadim Podovinnikov <podovinnikov@protei.ru>
>>
>> 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.
>>
>> Fixes: 56cbc0817399 ("net/bonding: fix LACP negotiation")
>> Cc: stable@dpdk.org
>>
>> Signed-off-by: Vadim Podovinnikov <podovinnikov@protei.ru>
>
> Acked-by: Min Hu (Connor) <humin29@huawei.com>
>
Applied to dpdk-next-net/main, thanks.
^ permalink raw reply [flat|nested] 14+ messages in thread
* [dpdk-dev] [PATCH v2] fix lacp check system address
2019-11-25 22:25 [dpdk-dev] [PATCH] fix lacp check system address Stephen Hemminger
@ 2019-11-26 11:45 ` Vadim
0 siblings, 0 replies; 14+ messages in thread
From: Vadim @ 2019-11-26 11:45 UTC (permalink / raw)
To: chas3; +Cc: dev, Vadim
Signed-off-by: Vadim <podovinnikov@protei.ru>
fix lacp check system address
---
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
--
2.24.0
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2021-03-05 9:21 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <20191125180323.E0B174C90@dpdk.org>
2019-11-26 11:55 ` [dpdk-dev] [PATCH v2] fix lacp check system address Vadim
2019-11-26 13:27 ` Ferruh Yigit
2019-11-26 15:09 ` podovinnikov
2020-04-10 10:15 ` Ferruh Yigit
2020-04-10 10:21 ` Ferruh Yigit
2020-04-10 10:24 ` Ferruh Yigit
2020-06-04 7:52 ` podovinnikov
2020-06-04 11:44 ` Ferruh Yigit
2021-02-17 16:26 ` [dpdk-dev] [PATCH v3] net/bonding: fix LACP system address check Ferruh Yigit
2021-02-17 16:30 ` Ferruh Yigit
2021-03-02 12:10 ` Ferruh Yigit
2021-03-05 1:43 ` Min Hu (Connor)
2021-03-05 9:21 ` Ferruh Yigit
2019-11-25 22:25 [dpdk-dev] [PATCH] fix lacp check system address Stephen Hemminger
2019-11-26 11:45 ` [dpdk-dev] [PATCH v2] " Vadim
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).