aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/mlx4
diff options
context:
space:
mode:
authorEli Cohen <eli@dev.mellanox.co.il>2010-08-26 10:19:22 -0400
committerRoland Dreier <rolandd@cisco.com>2010-10-25 13:20:39 -0400
commit4c3eb3ca13966508bcb64f39dcdef48be22f1731 (patch)
tree67fde746d256e38421c682501974868971507680 /include/linux/mlx4
parentaf7bd463761c6abd8ca8d831f9cc0ac19f3b7d4b (diff)
IB/mlx4: Add VLAN support for IBoE
This patch allows IBoE traffic to be encapsulated in 802.1Q tagged VLAN frames. The VLAN tag is encoded in the GID and derived from it by a simple computation. The netdev notifier callback is modified to catch VLAN device addition/removal and the port's GID table is updated to reflect the change, so that for each netdevice there is an entry in the GID table. When the port's GID table is exhausted, GID entries will not be added. Only children of the main interfaces can add to the GID table; if a VLAN interface is added on another VLAN interface (e.g. "vconfig add eth2.6 8"), then that interfaces will not add an entry to the GID table. Signed-off-by: Eli Cohen <eli@mellanox.co.il> Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'include/linux/mlx4')
-rw-r--r--include/linux/mlx4/device.h1
-rw-r--r--include/linux/mlx4/qp.h2
2 files changed, 2 insertions, 1 deletions
diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h
index ca5645c43f61..ff9893a33e90 100644
--- a/include/linux/mlx4/device.h
+++ b/include/linux/mlx4/device.h
@@ -496,6 +496,7 @@ int mlx4_multicast_detach(struct mlx4_dev *dev, struct mlx4_qp *qp, u8 gid[16]);
496int mlx4_register_mac(struct mlx4_dev *dev, u8 port, u64 mac, int *index); 496int mlx4_register_mac(struct mlx4_dev *dev, u8 port, u64 mac, int *index);
497void mlx4_unregister_mac(struct mlx4_dev *dev, u8 port, int index); 497void mlx4_unregister_mac(struct mlx4_dev *dev, u8 port, int index);
498 498
499int mlx4_find_cached_vlan(struct mlx4_dev *dev, u8 port, u16 vid, int *idx);
499int mlx4_register_vlan(struct mlx4_dev *dev, u8 port, u16 vlan, int *index); 500int mlx4_register_vlan(struct mlx4_dev *dev, u8 port, u16 vlan, int *index);
500void mlx4_unregister_vlan(struct mlx4_dev *dev, u8 port, int index); 501void mlx4_unregister_vlan(struct mlx4_dev *dev, u8 port, int index);
501 502
diff --git a/include/linux/mlx4/qp.h b/include/linux/mlx4/qp.h
index 97cfdc8d7e2f..0eeb2a1a867c 100644
--- a/include/linux/mlx4/qp.h
+++ b/include/linux/mlx4/qp.h
@@ -109,7 +109,7 @@ struct mlx4_qp_path {
109 __be32 tclass_flowlabel; 109 __be32 tclass_flowlabel;
110 u8 rgid[16]; 110 u8 rgid[16];
111 u8 sched_queue; 111 u8 sched_queue;
112 u8 snooper_flags; 112 u8 vlan_index;
113 u8 reserved3[2]; 113 u8 reserved3[2];
114 u8 counter_index; 114 u8 counter_index;
115 u8 reserved4; 115 u8 reserved4;