summaryrefslogtreecommitdiffstats
path: root/drivers/net/mlx4/en_port.c
diff options
context:
space:
mode:
authorJiri Pirko2011-07-20 06:54:22 +0200
committerDavid S. Miller2011-07-21 22:47:55 +0200
commitf1b553fbe73bfad38f41269d1c7a7ce3176d9539 (patch)
tree827da7588b9a8e9780f24787c2861f0e332319d3 /drivers/net/mlx4/en_port.c
parentjme: do vlan cleanup (diff)
downloadkernel-qcow2-linux-f1b553fbe73bfad38f41269d1c7a7ce3176d9539.tar.gz
kernel-qcow2-linux-f1b553fbe73bfad38f41269d1c7a7ce3176d9539.tar.xz
kernel-qcow2-linux-f1b553fbe73bfad38f41269d1c7a7ce3176d9539.zip
mlx4: do vlan cleanup
- unify vlan and nonvlan path - kill priv->vlgrp and mlx4_en_vlan_rx_register Signed-off-by: Jiri Pirko <jpirko@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/mlx4/en_port.c')
-rw-r--r--drivers/net/mlx4/en_port.c23
1 files changed, 9 insertions, 14 deletions
diff --git a/drivers/net/mlx4/en_port.c b/drivers/net/mlx4/en_port.c
index f2a4f5dd313d..2a74bc81b9f7 100644
--- a/drivers/net/mlx4/en_port.c
+++ b/drivers/net/mlx4/en_port.c
@@ -48,7 +48,7 @@ int mlx4_SET_MCAST_FLTR(struct mlx4_dev *dev, u8 port,
MLX4_CMD_SET_MCAST_FLTR, MLX4_CMD_TIME_CLASS_B);
}
-int mlx4_SET_VLAN_FLTR(struct mlx4_dev *dev, u8 port, struct vlan_group *grp)
+int mlx4_SET_VLAN_FLTR(struct mlx4_dev *dev, struct mlx4_en_priv *priv)
{
struct mlx4_cmd_mailbox *mailbox;
struct mlx4_set_vlan_fltr_mbox *filter;
@@ -63,20 +63,15 @@ int mlx4_SET_VLAN_FLTR(struct mlx4_dev *dev, u8 port, struct vlan_group *grp)
return PTR_ERR(mailbox);
filter = mailbox->buf;
- if (grp) {
- memset(filter, 0, sizeof *filter);
- for (i = VLAN_FLTR_SIZE - 1; i >= 0; i--) {
- entry = 0;
- for (j = 0; j < 32; j++)
- if (vlan_group_get_device(grp, index++))
- entry |= 1 << j;
- filter->entry[i] = cpu_to_be32(entry);
- }
- } else {
- /* When no vlans are configured we block all vlans */
- memset(filter, 0, sizeof(*filter));
+ memset(filter, 0, sizeof(*filter));
+ for (i = VLAN_FLTR_SIZE - 1; i >= 0; i--) {
+ entry = 0;
+ for (j = 0; j < 32; j++)
+ if (test_bit(index++, priv->active_vlans))
+ entry |= 1 << j;
+ filter->entry[i] = cpu_to_be32(entry);
}
- err = mlx4_cmd(dev, mailbox->dma, port, 0, MLX4_CMD_SET_VLAN_FLTR,
+ err = mlx4_cmd(dev, mailbox->dma, priv->port, 0, MLX4_CMD_SET_VLAN_FLTR,
MLX4_CMD_TIME_CLASS_B);
mlx4_free_cmd_mailbox(dev, mailbox);
return err;