* [dpdk-dev] [PATCH] fix lacp check system address
@ 2019-11-25 13:13 Vadim
2019-11-25 22:25 ` Stephen Hemminger
0 siblings, 1 reply; 3+ messages in thread
From: Vadim @ 2019-11-25 13:13 UTC (permalink / raw)
To: chas3; +Cc: dev, podovinnikov
From: podovinnikov <podovinnikov@protei.ru>
---
drivers/net/bonding/rte_eth_bond_8023ad.c | 22 +++++++++++++++++++++-
1 file changed, 21 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..132ff74a1 100644
--- a/drivers/net/bonding/rte_eth_bond_8023ad.c
+++ b/drivers/net/bonding/rte_eth_bond_8023ad.c
@@ -792,18 +792,38 @@ 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 {
+ MODE4_DEBUG("prefered partner system %02x:%02x:%02x:%02x:%02x:%02x "
+ "not equal self system: %02x:%02x:%02x:%02x:%02x:%02x\n",
+ partner->port_params.system.addr_bytes[0],
+ partner->port_params.system.addr_bytes[1],
+ partner->port_params.system.addr_bytes[2],
+ partner->port_params.system.addr_bytes[3],
+ partner->port_params.system.addr_bytes[4],
+ partner->port_params.system.addr_bytes[5],
+
+ agg->actor.system.addr_bytes[0],
+ agg->actor.system.addr_bytes[1],
+ agg->actor.system.addr_bytes[2],
+ agg->actor.system.addr_bytes[3],
+ agg->actor.system.addr_bytes[4],
+ agg->actor.system.addr_bytes[5]);
}
rte_pktmbuf_free(lacp_pkt);
} else
--
2.17.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [dpdk-dev] [PATCH] fix lacp check system address
2019-11-25 13:13 [dpdk-dev] [PATCH] fix lacp check system address Vadim
@ 2019-11-25 22:25 ` Stephen Hemminger
2019-11-26 11:45 ` [dpdk-dev] [PATCH v2] " Vadim
0 siblings, 1 reply; 3+ messages in thread
From: Stephen Hemminger @ 2019-11-25 22:25 UTC (permalink / raw)
To: Vadim; +Cc: chas3, dev
On Mon, 25 Nov 2019 16:13:26 +0300
Vadim <podovinnikov@protei.ru> wrote:
> + MODE4_DEBUG("prefered partner system %02x:%02x:%02x:%02x:%02x:%02x "
> + "not equal self system: %02x:%02x:%02x:%02x:%02x:%02x\n",
> + partner->port_params.system.addr_bytes[0],
> + partner->port_params.system.addr_bytes[1],
> + partner->port_params.system.addr_bytes[2],
> + partner->port_params.system.addr_bytes[3],
> + partner->port_params.system.addr_bytes[4],
> + partner->port_params.system.addr_bytes[5],
> +
> + agg->actor.system.addr_bytes[0],
> + agg->actor.system.addr_bytes[1],
> + agg->actor.system.addr_bytes[2],
> + agg->actor.system.addr_bytes[3],
> + agg->actor.system.addr_bytes[4],
> + agg->actor.system.addr_bytes[5]);
Why not use rte_ether_format_addr instead?
^ permalink raw reply [flat|nested] 3+ messages in thread
* [dpdk-dev] [PATCH v2] fix lacp check system address
2019-11-25 22:25 ` Stephen Hemminger
@ 2019-11-26 11:45 ` Vadim
0 siblings, 0 replies; 3+ 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] 3+ messages in thread
end of thread, other threads:[~2019-11-26 11:45 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-25 13:13 [dpdk-dev] [PATCH] fix lacp check system address Vadim
2019-11-25 22:25 ` 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).