Lines Matching defs:hn
121 struct mlx5e_eth_addr_hash_node *hn;
124 LIST_FOREACH(hn, &hash[ix], hlist) {
125 if (bcmp(hn->ai.addr, hn_new->ai.addr, ETHER_ADDR_LEN) == 0) {
126 if (hn->action == MLX5E_ACTION_DEL)
127 hn->action = MLX5E_ACTION_NONE;
137 mlx5e_del_eth_addr_from_hash(struct mlx5e_eth_addr_hash_node *hn)
139 LIST_REMOVE(hn, hlist);
140 free(hn, M_MLX5EN);
889 #define mlx5e_for_each_hash_node(hn, tmp, hash, i) \
891 LIST_FOREACH_SAFE(hn, &(hash)[i], hlist, tmp)
895 struct mlx5e_eth_addr_hash_node *hn)
897 switch (hn->action) {
899 mlx5e_add_eth_addr_rule(priv, &hn->ai, MLX5E_FULLMATCH);
900 hn->action = MLX5E_ACTION_NONE;
904 mlx5e_del_eth_addr_from_flow_table(priv, &hn->ai);
905 if (hn->mpfs_index != -1U)
906 mlx5_mpfs_del_mac(priv->mdev, hn->mpfs_index);
907 mlx5e_del_eth_addr_from_hash(hn);
918 struct mlx5e_eth_addr_hash_node *hn;
920 hn = LIST_FIRST(fh);
921 if (hn != NULL) {
922 LIST_REMOVE(hn, hlist);
923 LIST_INSERT_HEAD(uh, hn, hlist);
925 return (hn);
931 struct mlx5e_eth_addr_hash_node *hn;
933 hn = LIST_FIRST(fh);
934 if (hn != NULL)
935 LIST_REMOVE(hn, hlist);
936 return (hn);
949 struct mlx5e_eth_addr_hash_node *hn;
951 hn = mlx5e_move_hn(ctx->free, ctx->fill);
952 if (hn == NULL) {
956 ether_addr_copy(hn->ai.addr, LLADDR(sdl));
968 struct mlx5e_eth_addr_hash_node *hn;
983 hn = malloc(sizeof(*hn), M_MLX5EN, M_WAITOK | M_ZERO);
984 hn->action = MLX5E_ACTION_ADD;
985 hn->mpfs_index = -1U;
986 LIST_INSERT_HEAD(&head_free, hn, hlist);
989 hn = mlx5e_move_hn(&head_free, &head_uc);
990 MPASS(hn != NULL);
992 ether_addr_copy(hn->ai.addr, if_getlladdr(ifp));
1008 while ((hn = mlx5e_remove_hn(&head_uc)) != NULL) {
1009 if (mlx5e_add_eth_addr_to_hash(priv->eth_addr.if_uc, hn) == 0)
1011 if (hn->mpfs_index == -1U)
1012 mlx5_mpfs_add_mac(priv->mdev, &hn->mpfs_index,
1013 hn->ai.addr, 0, 0);
1018 while ((hn = mlx5e_remove_hn(&head_mc)) != NULL) {
1019 if (mlx5e_add_eth_addr_to_hash(priv->eth_addr.if_mc, hn) == 0)
1024 while ((hn = mlx5e_remove_hn(&head_uc)) != NULL)
1025 free(hn, M_MLX5EN);
1026 while ((hn = mlx5e_remove_hn(&head_mc)) != NULL)
1027 free(hn, M_MLX5EN);
1028 while ((hn = mlx5e_remove_hn(&head_free)) != NULL)
1029 free(hn, M_MLX5EN);
1040 struct mlx5e_eth_addr_hash_node *hn;
1053 mlx5e_for_each_hash_node(hn, tmp, addr_list, hi) {
1054 if (ether_addr_equal(if_getlladdr(ifp), hn->ai.addr))
1058 ether_addr_copy(addr_array[i++], hn->ai.addr);
1066 struct mlx5e_eth_addr_hash_node *hn;
1081 mlx5e_for_each_hash_node(hn, tmp, addr_list, hi)
1123 struct mlx5e_eth_addr_hash_node *hn;
1127 mlx5e_for_each_hash_node(hn, tmp, priv->eth_addr.if_uc, i)
1128 mlx5e_execute_action(priv, hn);
1130 mlx5e_for_each_hash_node(hn, tmp, priv->eth_addr.if_mc, i)
1131 mlx5e_execute_action(priv, hn);
1137 struct mlx5e_eth_addr_hash_node *hn;
1141 mlx5e_for_each_hash_node(hn, tmp, priv->eth_addr.if_uc, i)
1142 hn->action = MLX5E_ACTION_DEL;
1143 mlx5e_for_each_hash_node(hn, tmp, priv->eth_addr.if_mc, i)
1144 hn->action = MLX5E_ACTION_DEL;