Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland...
[pandora-kernel.git] / drivers / net / mlx4 / en_port.c
index be861fb..5e71091 100644 (file)
@@ -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;