Jack Morgenstein 00f5ce99dc mlx4: Use port management change event instead of smp_snoop
The port management change event can replace smp_snoop.  If the
capability bit for this event is set in dev-caps, the event is used
(by the driver setting the PORT_MNG_CHG_EVENT bit in the async event
mask in the MAP_EQ fw command).  In this case, when the driver passes
incoming SMP PORT_INFO SET mads to the FW, the FW generates port
management change events to signal any changes to the driver.

If the FW generates these events, smp_snoop shouldn't be invoked in
ib_process_mad(), or duplicate events will occur (once from the
FW-generated event, and once from smp_snoop).

In the case where the FW does not generate port management change
events smp_snoop needs to be invoked to create these events.  The flow
in smp_snoop has been modified to make use of the same procedures as
in the fw-generated-event event case to generate the port management
events (LID change, Client-rereg, Pkey change, and/or GID change).

Port management change event handling required changing the
mlx4_ib_event and mlx4_dispatch_event prototypes; the "param" argument
(last argument) had to be changed to unsigned long in order to
accomodate passing the EQE pointer.

We also needed to move the definition of struct mlx4_eqe from
net/mlx4.h to file device.h -- to make it available to the IB driver,
to handle port management change events.

Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
2012-07-10 09:47:10 -07:00
..
2012-05-07 15:39:35 -07:00
2012-05-29 11:53:11 -07:00
2012-05-15 17:30:30 -04:00
2012-05-23 14:15:09 -07:00
2012-05-08 14:13:25 -07:00
2012-05-25 12:46:23 +05:30
2012-05-10 12:00:56 +02:00
2012-05-17 15:36:35 -04:00
2012-05-29 23:28:33 -04:00
2012-06-01 16:57:51 -07:00
2012-05-22 11:32:31 +02:00
2012-05-22 16:02:13 -07:00
2012-05-12 14:28:14 +02:00
2012-05-07 10:58:57 -06:00
2012-06-30 15:56:40 -07:00
2012-05-31 17:49:30 -07:00
2012-05-31 17:49:32 -07:00
2012-05-31 17:49:26 -07:00
2012-05-31 17:49:30 -07:00
2012-05-11 10:56:56 +01:00
2012-05-29 23:28:41 -04:00
2012-05-09 13:58:06 -07:00
2012-05-22 15:20:28 -04:00
2012-05-29 22:33:55 -04:00
2012-05-08 20:25:42 +02:00
2012-05-26 14:17:30 -04:00
2012-06-05 18:38:47 -04:00
2012-05-16 15:17:08 -04:00
2012-05-21 14:31:48 +01:00
2012-06-20 14:39:36 -07:00
2012-05-14 14:15:32 -07:00
2012-06-06 17:08:00 +02:00
2012-05-12 15:53:42 -04:00
2012-06-01 12:58:52 -04:00
2012-06-15 15:30:15 -07:00
2012-05-31 17:49:26 -07:00
2012-05-08 12:35:06 +02:00
2012-05-14 18:53:19 -04:00
2012-05-21 16:16:58 -07:00
2012-05-22 12:16:16 +09:30