lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <CAJ3xEMgL0-4ccz9+YAqFRhKn8+eO=US4ECTfGAGVdGNAp46UxQ@mail.gmail.com> Date: Tue, 22 Jan 2019 00:20:09 +0200 From: Or Gerlitz <gerlitz.or@...il.com> To: Tonghao Zhang <xiangxia.m.yue@...il.com> Cc: Saeed Mahameed <saeedm@...lanox.com>, Linux Netdev List <netdev@...r.kernel.org>, Hadar Hen Zion <hadarh@...lanox.com> Subject: Re: [PATCH net-next v2 1/2] net/mlx5e: Update hw flows when encap source mac changed On Mon, Jan 21, 2019 at 1:20 PM <xiangxia.m.yue@...il.com> wrote: > > From: Tonghao Zhang <xiangxia.m.yue@...il.com> > > When we offload tc filters to hardware, hardware flows can > be updated when mac of encap destination ip is changed. > But we ignore one case, that the mac of local encap ip can > be changed too, so we should also update them. > > To fix it, add route_dev in mlx5e_encap_entry struct to save > the local encap netdevice, and when mac changed, kernel will > flush all the neighbour on the netdevice and send NETEVENT_NEIGH_UPDATE > event. The mlx5 driver will delete the flows and add them when neighbour > available again. > > Fixes: 232c001398ae ("net/mlx5e: Add support to neighbour update flow") > Cc: Hadar Hen Zion <hadarh@...lanox.com> > Signed-off-by: Tonghao Zhang <xiangxia.m.yue@...il.com> > --- > drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c | 1 + > drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 4 ++++ > drivers/net/ethernet/mellanox/mlx5/core/en_rep.h | 1 + > 3 files changed, 6 insertions(+) > > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c > index 046948e..156b2b3 100644 > --- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c > @@ -256,6 +256,7 @@ int mlx5e_tc_tun_create_header_ipv4(struct mlx5e_priv *priv, please address the ipv6 tunnel path as well > e->m_neigh.family = n->ops->family; > memcpy(&e->m_neigh.dst_ip, n->primary_key, n->tbl->key_len); > e->out_dev = out_dev; > + e->route_dev = route_dev; > > /* It's important to add the neigh to the hash table before checking > * the neigh validity state. So if we'll get a notification, in case the > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c > index 96cc0c6..c4b9073 100644 > --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c > @@ -594,6 +594,10 @@ static void mlx5e_rep_update_flows(struct mlx5e_priv *priv, > if (neigh_connected && !(e->flags & MLX5_ENCAP_ENTRY_VALID)) { > ether_addr_copy(e->h_dest, ha); > ether_addr_copy(eth->h_dest, ha); > + /* Update the encap source mac, in case that we delete > + * the flows when encap source mac changed. > + */ > + ether_addr_copy(eth->h_source, e->route_dev->dev_addr); there's must be some other location in the code which currently sets the source mac. I need to look deeper but I suspect it has to be removed and only the one you added should stay
Powered by blists - more mailing lists