diff options
Diffstat (limited to 'drivers/net/mlx4/eq.c')
-rw-r--r-- | drivers/net/mlx4/eq.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/drivers/net/mlx4/eq.c b/drivers/net/mlx4/eq.c index 2c19bff7cbab..8830dcb92ec8 100644 --- a/drivers/net/mlx4/eq.c +++ b/drivers/net/mlx4/eq.c | |||
@@ -163,6 +163,7 @@ static int mlx4_eq_int(struct mlx4_dev *dev, struct mlx4_eq *eq) | |||
163 | int cqn; | 163 | int cqn; |
164 | int eqes_found = 0; | 164 | int eqes_found = 0; |
165 | int set_ci = 0; | 165 | int set_ci = 0; |
166 | int port; | ||
166 | 167 | ||
167 | while ((eqe = next_eqe_sw(eq))) { | 168 | while ((eqe = next_eqe_sw(eq))) { |
168 | /* | 169 | /* |
@@ -203,11 +204,16 @@ static int mlx4_eq_int(struct mlx4_dev *dev, struct mlx4_eq *eq) | |||
203 | break; | 204 | break; |
204 | 205 | ||
205 | case MLX4_EVENT_TYPE_PORT_CHANGE: | 206 | case MLX4_EVENT_TYPE_PORT_CHANGE: |
206 | mlx4_dispatch_event(dev, | 207 | port = be32_to_cpu(eqe->event.port_change.port) >> 28; |
207 | eqe->subtype == MLX4_PORT_CHANGE_SUBTYPE_ACTIVE ? | 208 | if (eqe->subtype == MLX4_PORT_CHANGE_SUBTYPE_DOWN) { |
208 | MLX4_DEV_EVENT_PORT_UP : | 209 | mlx4_dispatch_event(dev, MLX4_DEV_EVENT_PORT_DOWN, |
209 | MLX4_DEV_EVENT_PORT_DOWN, | 210 | port); |
210 | be32_to_cpu(eqe->event.port_change.port) >> 28); | 211 | mlx4_priv(dev)->sense.do_sense_port[port] = 1; |
212 | } else { | ||
213 | mlx4_dispatch_event(dev, MLX4_DEV_EVENT_PORT_UP, | ||
214 | port); | ||
215 | mlx4_priv(dev)->sense.do_sense_port[port] = 0; | ||
216 | } | ||
211 | break; | 217 | break; |
212 | 218 | ||
213 | case MLX4_EVENT_TYPE_CQ_ERROR: | 219 | case MLX4_EVENT_TYPE_CQ_ERROR: |