bnx2x: access cfc_del_event only if the opcode is CFC_DEL
authorMichal Schmidt <mschmidt@redhat.com>
Wed, 2 Mar 2016 12:47:08 +0000 (13:47 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 2 Mar 2016 18:31:56 +0000 (13:31 -0500)
It's not really a bug, but it was odd that bnx2x_eq_int() read the
message data as if it were a cfc_del_event regardless of the event type.
It's cleaner to access only the appropriate member of union event_data
after checking the event opcode.

Signed-off-by: Michal Schmidt <mschmidt@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c

index b707ba8a7535761520f9f93c3c5f033a3b5b2c01..0e0bcbdb84d1cf2cbd4733593049365cdadcd09a 100644 (file)
@@ -5477,9 +5477,6 @@ static void bnx2x_eq_int(struct bnx2x *bp)
                        goto next_spqe;
                }
 
-               /* elem CID originates from FW; actually LE */
-               cid = SW_CID((__force __le32)
-                            elem->message.data.cfc_del_event.cid);
                opcode = elem->message.opcode;
 
                /* handle eq element */
@@ -5502,6 +5499,11 @@ static void bnx2x_eq_int(struct bnx2x *bp)
                         * we may want to verify here that the bp state is
                         * HALTING
                         */
+
+                       /* elem CID originates from FW; actually LE */
+                       cid = SW_CID((__force __le32)
+                                    elem->message.data.cfc_del_event.cid);
+
                        DP(BNX2X_MSG_SP,
                           "got delete ramrod for MULTI[%d]\n", cid);