diff options
author | Or Gerlitz <ogerlitz@mellanox.com> | 2011-07-07 15:19:29 -0400 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2011-07-19 00:04:32 -0400 |
commit | ccf863219675aa86bebdd6a2806acb8176478e37 (patch) | |
tree | 3ef252eb9b51ae6beb0ce0fbe1babdada8ceefb3 /drivers/net/mlx4/port.c | |
parent | 52eafc68d601afd699b023201b0c6be5209f39ce (diff) |
mlx4_core: Read extended capabilities into the flags field
Query another dword containing up to 32 extended device capabilities
and merge it into struct mlx4_caps.flags. Update the code that
handles the current extended device capabilities (e.g UDP RSS, WoL,
vep steering, etc) to use the extended device cap flags field instead
of a field per extended capability. Initial patch done by Eli Cohen
<eli@mellanox.co.il>.
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.co.il>
Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'drivers/net/mlx4/port.c')
-rw-r--r-- | drivers/net/mlx4/port.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/net/mlx4/port.c b/drivers/net/mlx4/port.c index 8856659fb43c..1f95afda6841 100644 --- a/drivers/net/mlx4/port.c +++ b/drivers/net/mlx4/port.c | |||
@@ -146,7 +146,7 @@ int mlx4_register_mac(struct mlx4_dev *dev, u8 port, u64 mac, int *qpn, u8 wrap) | |||
146 | int i, err = 0; | 146 | int i, err = 0; |
147 | int free = -1; | 147 | int free = -1; |
148 | 148 | ||
149 | if (dev->caps.vep_uc_steering) { | 149 | if (dev->caps.flags & MLX4_DEV_CAP_FLAG_VEP_UC_STEER) { |
150 | err = mlx4_uc_steer_add(dev, port, mac, qpn, 1); | 150 | err = mlx4_uc_steer_add(dev, port, mac, qpn, 1); |
151 | if (!err) { | 151 | if (!err) { |
152 | entry = kmalloc(sizeof *entry, GFP_KERNEL); | 152 | entry = kmalloc(sizeof *entry, GFP_KERNEL); |
@@ -203,7 +203,7 @@ int mlx4_register_mac(struct mlx4_dev *dev, u8 port, u64 mac, int *qpn, u8 wrap) | |||
203 | goto out; | 203 | goto out; |
204 | } | 204 | } |
205 | 205 | ||
206 | if (!dev->caps.vep_uc_steering) | 206 | if (!(dev->caps.flags & MLX4_DEV_CAP_FLAG_VEP_UC_STEER)) |
207 | *qpn = info->base_qpn + free; | 207 | *qpn = info->base_qpn + free; |
208 | ++table->total; | 208 | ++table->total; |
209 | out: | 209 | out: |
@@ -243,7 +243,7 @@ void mlx4_unregister_mac(struct mlx4_dev *dev, u8 port, int qpn) | |||
243 | int index = qpn - info->base_qpn; | 243 | int index = qpn - info->base_qpn; |
244 | struct mlx4_mac_entry *entry; | 244 | struct mlx4_mac_entry *entry; |
245 | 245 | ||
246 | if (dev->caps.vep_uc_steering) { | 246 | if (dev->caps.flags & MLX4_DEV_CAP_FLAG_VEP_UC_STEER) { |
247 | entry = radix_tree_lookup(&info->mac_tree, qpn); | 247 | entry = radix_tree_lookup(&info->mac_tree, qpn); |
248 | if (entry) { | 248 | if (entry) { |
249 | mlx4_uc_steer_release(dev, port, entry->mac, qpn, 1); | 249 | mlx4_uc_steer_release(dev, port, entry->mac, qpn, 1); |
@@ -274,7 +274,7 @@ int mlx4_replace_mac(struct mlx4_dev *dev, u8 port, int qpn, u64 new_mac, u8 wra | |||
274 | struct mlx4_mac_entry *entry; | 274 | struct mlx4_mac_entry *entry; |
275 | int err; | 275 | int err; |
276 | 276 | ||
277 | if (dev->caps.vep_uc_steering) { | 277 | if (dev->caps.flags & MLX4_DEV_CAP_FLAG_VEP_UC_STEER) { |
278 | entry = radix_tree_lookup(&info->mac_tree, qpn); | 278 | entry = radix_tree_lookup(&info->mac_tree, qpn); |
279 | if (!entry) | 279 | if (!entry) |
280 | return -EINVAL; | 280 | return -EINVAL; |