|
4 | 4 | #include <linux/mlx5/device.h> |
5 | 5 | #include <linux/mlx5/mlx5_ifc.h> |
6 | 6 | #include <linux/xarray.h> |
| 7 | +#include <linux/if_vlan.h> |
7 | 8 |
|
8 | 9 | #include "en.h" |
9 | 10 | #include "lib/aso.h" |
@@ -348,12 +349,21 @@ static void mlx5e_macsec_cleanup_sa(struct mlx5e_macsec *macsec, |
348 | 349 | sa->macsec_rule = NULL; |
349 | 350 | } |
350 | 351 |
|
| 352 | +static struct mlx5e_priv *macsec_netdev_priv(const struct net_device *dev) |
| 353 | +{ |
| 354 | +#if IS_ENABLED(CONFIG_VLAN_8021Q) |
| 355 | + if (is_vlan_dev(dev)) |
| 356 | + return netdev_priv(vlan_dev_priv(dev)->real_dev); |
| 357 | +#endif |
| 358 | + return netdev_priv(dev); |
| 359 | +} |
| 360 | + |
351 | 361 | static int mlx5e_macsec_init_sa(struct macsec_context *ctx, |
352 | 362 | struct mlx5e_macsec_sa *sa, |
353 | 363 | bool encrypt, |
354 | 364 | bool is_tx) |
355 | 365 | { |
356 | | - struct mlx5e_priv *priv = netdev_priv(ctx->netdev); |
| 366 | + struct mlx5e_priv *priv = macsec_netdev_priv(ctx->netdev); |
357 | 367 | struct mlx5e_macsec *macsec = priv->macsec; |
358 | 368 | struct mlx5_macsec_rule_attrs rule_attrs; |
359 | 369 | struct mlx5_core_dev *mdev = priv->mdev; |
@@ -427,7 +437,7 @@ static int macsec_rx_sa_active_update(struct macsec_context *ctx, |
427 | 437 | struct mlx5e_macsec_sa *rx_sa, |
428 | 438 | bool active) |
429 | 439 | { |
430 | | - struct mlx5e_priv *priv = netdev_priv(ctx->netdev); |
| 440 | + struct mlx5e_priv *priv = macsec_netdev_priv(ctx->netdev); |
431 | 441 | struct mlx5e_macsec *macsec = priv->macsec; |
432 | 442 | int err = 0; |
433 | 443 |
|
@@ -508,9 +518,9 @@ static void update_macsec_epn(struct mlx5e_macsec_sa *sa, const struct macsec_ke |
508 | 518 |
|
509 | 519 | static int mlx5e_macsec_add_txsa(struct macsec_context *ctx) |
510 | 520 | { |
| 521 | + struct mlx5e_priv *priv = macsec_netdev_priv(ctx->netdev); |
511 | 522 | const struct macsec_tx_sc *tx_sc = &ctx->secy->tx_sc; |
512 | 523 | const struct macsec_tx_sa *ctx_tx_sa = ctx->sa.tx_sa; |
513 | | - struct mlx5e_priv *priv = netdev_priv(ctx->netdev); |
514 | 524 | const struct macsec_secy *secy = ctx->secy; |
515 | 525 | struct mlx5e_macsec_device *macsec_device; |
516 | 526 | struct mlx5_core_dev *mdev = priv->mdev; |
@@ -583,9 +593,9 @@ static int mlx5e_macsec_add_txsa(struct macsec_context *ctx) |
583 | 593 |
|
584 | 594 | static int mlx5e_macsec_upd_txsa(struct macsec_context *ctx) |
585 | 595 | { |
| 596 | + struct mlx5e_priv *priv = macsec_netdev_priv(ctx->netdev); |
586 | 597 | const struct macsec_tx_sc *tx_sc = &ctx->secy->tx_sc; |
587 | 598 | const struct macsec_tx_sa *ctx_tx_sa = ctx->sa.tx_sa; |
588 | | - struct mlx5e_priv *priv = netdev_priv(ctx->netdev); |
589 | 599 | struct mlx5e_macsec_device *macsec_device; |
590 | 600 | u8 assoc_num = ctx->sa.assoc_num; |
591 | 601 | struct mlx5e_macsec_sa *tx_sa; |
@@ -645,7 +655,7 @@ static int mlx5e_macsec_upd_txsa(struct macsec_context *ctx) |
645 | 655 |
|
646 | 656 | static int mlx5e_macsec_del_txsa(struct macsec_context *ctx) |
647 | 657 | { |
648 | | - struct mlx5e_priv *priv = netdev_priv(ctx->netdev); |
| 658 | + struct mlx5e_priv *priv = macsec_netdev_priv(ctx->netdev); |
649 | 659 | struct mlx5e_macsec_device *macsec_device; |
650 | 660 | u8 assoc_num = ctx->sa.assoc_num; |
651 | 661 | struct mlx5e_macsec_sa *tx_sa; |
@@ -696,7 +706,7 @@ static u32 mlx5e_macsec_get_sa_from_hashtable(struct rhashtable *sci_hash, sci_t |
696 | 706 | static int mlx5e_macsec_add_rxsc(struct macsec_context *ctx) |
697 | 707 | { |
698 | 708 | struct mlx5e_macsec_rx_sc_xarray_element *sc_xarray_element; |
699 | | - struct mlx5e_priv *priv = netdev_priv(ctx->netdev); |
| 709 | + struct mlx5e_priv *priv = macsec_netdev_priv(ctx->netdev); |
700 | 710 | const struct macsec_rx_sc *ctx_rx_sc = ctx->rx_sc; |
701 | 711 | struct mlx5e_macsec_device *macsec_device; |
702 | 712 | struct mlx5e_macsec_rx_sc *rx_sc; |
@@ -776,7 +786,7 @@ static int mlx5e_macsec_add_rxsc(struct macsec_context *ctx) |
776 | 786 |
|
777 | 787 | static int mlx5e_macsec_upd_rxsc(struct macsec_context *ctx) |
778 | 788 | { |
779 | | - struct mlx5e_priv *priv = netdev_priv(ctx->netdev); |
| 789 | + struct mlx5e_priv *priv = macsec_netdev_priv(ctx->netdev); |
780 | 790 | const struct macsec_rx_sc *ctx_rx_sc = ctx->rx_sc; |
781 | 791 | struct mlx5e_macsec_device *macsec_device; |
782 | 792 | struct mlx5e_macsec_rx_sc *rx_sc; |
@@ -854,7 +864,7 @@ static void macsec_del_rxsc_ctx(struct mlx5e_macsec *macsec, struct mlx5e_macsec |
854 | 864 |
|
855 | 865 | static int mlx5e_macsec_del_rxsc(struct macsec_context *ctx) |
856 | 866 | { |
857 | | - struct mlx5e_priv *priv = netdev_priv(ctx->netdev); |
| 867 | + struct mlx5e_priv *priv = macsec_netdev_priv(ctx->netdev); |
858 | 868 | struct mlx5e_macsec_device *macsec_device; |
859 | 869 | struct mlx5e_macsec_rx_sc *rx_sc; |
860 | 870 | struct mlx5e_macsec *macsec; |
@@ -890,8 +900,8 @@ static int mlx5e_macsec_del_rxsc(struct macsec_context *ctx) |
890 | 900 |
|
891 | 901 | static int mlx5e_macsec_add_rxsa(struct macsec_context *ctx) |
892 | 902 | { |
| 903 | + struct mlx5e_priv *priv = macsec_netdev_priv(ctx->netdev); |
893 | 904 | const struct macsec_rx_sa *ctx_rx_sa = ctx->sa.rx_sa; |
894 | | - struct mlx5e_priv *priv = netdev_priv(ctx->netdev); |
895 | 905 | struct mlx5e_macsec_device *macsec_device; |
896 | 906 | struct mlx5_core_dev *mdev = priv->mdev; |
897 | 907 | u8 assoc_num = ctx->sa.assoc_num; |
@@ -976,8 +986,8 @@ static int mlx5e_macsec_add_rxsa(struct macsec_context *ctx) |
976 | 986 |
|
977 | 987 | static int mlx5e_macsec_upd_rxsa(struct macsec_context *ctx) |
978 | 988 | { |
| 989 | + struct mlx5e_priv *priv = macsec_netdev_priv(ctx->netdev); |
979 | 990 | const struct macsec_rx_sa *ctx_rx_sa = ctx->sa.rx_sa; |
980 | | - struct mlx5e_priv *priv = netdev_priv(ctx->netdev); |
981 | 991 | struct mlx5e_macsec_device *macsec_device; |
982 | 992 | u8 assoc_num = ctx->sa.assoc_num; |
983 | 993 | struct mlx5e_macsec_rx_sc *rx_sc; |
@@ -1033,7 +1043,7 @@ static int mlx5e_macsec_upd_rxsa(struct macsec_context *ctx) |
1033 | 1043 |
|
1034 | 1044 | static int mlx5e_macsec_del_rxsa(struct macsec_context *ctx) |
1035 | 1045 | { |
1036 | | - struct mlx5e_priv *priv = netdev_priv(ctx->netdev); |
| 1046 | + struct mlx5e_priv *priv = macsec_netdev_priv(ctx->netdev); |
1037 | 1047 | struct mlx5e_macsec_device *macsec_device; |
1038 | 1048 | sci_t sci = ctx->sa.rx_sa->sc->sci; |
1039 | 1049 | struct mlx5e_macsec_rx_sc *rx_sc; |
@@ -1085,7 +1095,7 @@ static int mlx5e_macsec_del_rxsa(struct macsec_context *ctx) |
1085 | 1095 |
|
1086 | 1096 | static int mlx5e_macsec_add_secy(struct macsec_context *ctx) |
1087 | 1097 | { |
1088 | | - struct mlx5e_priv *priv = netdev_priv(ctx->netdev); |
| 1098 | + struct mlx5e_priv *priv = macsec_netdev_priv(ctx->netdev); |
1089 | 1099 | const struct net_device *dev = ctx->secy->netdev; |
1090 | 1100 | const struct net_device *netdev = ctx->netdev; |
1091 | 1101 | struct mlx5e_macsec_device *macsec_device; |
@@ -1137,7 +1147,7 @@ static int mlx5e_macsec_add_secy(struct macsec_context *ctx) |
1137 | 1147 | static int macsec_upd_secy_hw_address(struct macsec_context *ctx, |
1138 | 1148 | struct mlx5e_macsec_device *macsec_device) |
1139 | 1149 | { |
1140 | | - struct mlx5e_priv *priv = netdev_priv(ctx->netdev); |
| 1150 | + struct mlx5e_priv *priv = macsec_netdev_priv(ctx->netdev); |
1141 | 1151 | const struct net_device *dev = ctx->secy->netdev; |
1142 | 1152 | struct mlx5e_macsec *macsec = priv->macsec; |
1143 | 1153 | struct mlx5e_macsec_rx_sc *rx_sc, *tmp; |
@@ -1184,8 +1194,8 @@ static int macsec_upd_secy_hw_address(struct macsec_context *ctx, |
1184 | 1194 | */ |
1185 | 1195 | static int mlx5e_macsec_upd_secy(struct macsec_context *ctx) |
1186 | 1196 | { |
| 1197 | + struct mlx5e_priv *priv = macsec_netdev_priv(ctx->netdev); |
1187 | 1198 | const struct macsec_tx_sc *tx_sc = &ctx->secy->tx_sc; |
1188 | | - struct mlx5e_priv *priv = netdev_priv(ctx->netdev); |
1189 | 1199 | const struct net_device *dev = ctx->secy->netdev; |
1190 | 1200 | struct mlx5e_macsec_device *macsec_device; |
1191 | 1201 | struct mlx5e_macsec_sa *tx_sa; |
@@ -1240,7 +1250,7 @@ static int mlx5e_macsec_upd_secy(struct macsec_context *ctx) |
1240 | 1250 |
|
1241 | 1251 | static int mlx5e_macsec_del_secy(struct macsec_context *ctx) |
1242 | 1252 | { |
1243 | | - struct mlx5e_priv *priv = netdev_priv(ctx->netdev); |
| 1253 | + struct mlx5e_priv *priv = macsec_netdev_priv(ctx->netdev); |
1244 | 1254 | struct mlx5e_macsec_device *macsec_device; |
1245 | 1255 | struct mlx5e_macsec_rx_sc *rx_sc, *tmp; |
1246 | 1256 | struct mlx5e_macsec_sa *tx_sa; |
@@ -1741,7 +1751,7 @@ void mlx5e_macsec_offload_handle_rx_skb(struct net_device *netdev, |
1741 | 1751 | { |
1742 | 1752 | struct mlx5e_macsec_rx_sc_xarray_element *sc_xarray_element; |
1743 | 1753 | u32 macsec_meta_data = be32_to_cpu(cqe->ft_metadata); |
1744 | | - struct mlx5e_priv *priv = netdev_priv(netdev); |
| 1754 | + struct mlx5e_priv *priv = macsec_netdev_priv(netdev); |
1745 | 1755 | struct mlx5e_macsec_rx_sc *rx_sc; |
1746 | 1756 | struct mlx5e_macsec *macsec; |
1747 | 1757 | u32 fs_id; |
|
0 commit comments