Skip to content

Commit 45fd01f

Browse files
rleondavem330
authored andcommitted
net/mlx5e: Refactor duplicated code in mlx5e_ipsec_init_macs
ARP discovery code has same logic for RX and TX flows, but with different source and destination fields. Instead of duplicating same code in mlx5e_ipsec_init_macs, let's refactor. Signed-off-by: Leon Romanovsky <[email protected]> Reviewed-by: Simon Horman <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 94edec4 commit 45fd01f

File tree

1 file changed

+21
-24
lines changed
  • drivers/net/ethernet/mellanox/mlx5/core/en_accel

1 file changed

+21
-24
lines changed

drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,8 @@ static void mlx5e_ipsec_init_macs(struct mlx5e_ipsec_sa_entry *sa_entry,
252252
struct net_device *netdev;
253253
struct neighbour *n;
254254
u8 addr[ETH_ALEN];
255+
const void *pkey;
256+
u8 *dst, *src;
255257

256258
if (attrs->mode != XFRM_MODE_TUNNEL ||
257259
attrs->type != XFRM_DEV_OFFLOAD_PACKET)
@@ -262,36 +264,31 @@ static void mlx5e_ipsec_init_macs(struct mlx5e_ipsec_sa_entry *sa_entry,
262264
mlx5_query_mac_address(mdev, addr);
263265
switch (attrs->dir) {
264266
case XFRM_DEV_OFFLOAD_IN:
265-
ether_addr_copy(attrs->dmac, addr);
266-
n = neigh_lookup(&arp_tbl, &attrs->saddr.a4, netdev);
267-
if (!n) {
268-
n = neigh_create(&arp_tbl, &attrs->saddr.a4, netdev);
269-
if (IS_ERR(n))
270-
return;
271-
neigh_event_send(n, NULL);
272-
attrs->drop = true;
273-
break;
274-
}
275-
neigh_ha_snapshot(addr, n, netdev);
276-
ether_addr_copy(attrs->smac, addr);
267+
src = attrs->dmac;
268+
dst = attrs->smac;
269+
pkey = &attrs->saddr.a4;
277270
break;
278271
case XFRM_DEV_OFFLOAD_OUT:
279-
ether_addr_copy(attrs->smac, addr);
280-
n = neigh_lookup(&arp_tbl, &attrs->daddr.a4, netdev);
281-
if (!n) {
282-
n = neigh_create(&arp_tbl, &attrs->daddr.a4, netdev);
283-
if (IS_ERR(n))
284-
return;
285-
neigh_event_send(n, NULL);
286-
attrs->drop = true;
287-
break;
288-
}
289-
neigh_ha_snapshot(addr, n, netdev);
290-
ether_addr_copy(attrs->dmac, addr);
272+
src = attrs->smac;
273+
dst = attrs->dmac;
274+
pkey = &attrs->daddr.a4;
291275
break;
292276
default:
293277
return;
294278
}
279+
280+
ether_addr_copy(src, addr);
281+
n = neigh_lookup(&arp_tbl, pkey, netdev);
282+
if (!n) {
283+
n = neigh_create(&arp_tbl, pkey, netdev);
284+
if (IS_ERR(n))
285+
return;
286+
neigh_event_send(n, NULL);
287+
attrs->drop = true;
288+
} else {
289+
neigh_ha_snapshot(addr, n, netdev);
290+
ether_addr_copy(dst, addr);
291+
}
295292
neigh_release(n);
296293
}
297294

0 commit comments

Comments
 (0)