]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
be2net: Provide an alternate way to read pf_num for BEx chips
authorSriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
Sun, 9 Oct 2016 04:28:49 +0000 (09:58 +0530)
committerDhaval Giani <dhaval.giani@oracle.com>
Wed, 8 Mar 2017 01:05:36 +0000 (20:05 -0500)
Orabug: 25570957

The driver gets the pf_num for Skyhawk and Lancer using
GET_FUNC_CONFIG FW command. But since that command is not
supported in BEx, we need to get it from some other command.
Otherwise TPE recovery would fail since all NIC PFs would
end up with a func num of 0. There's a pci function number
field in the response  of GET_CNTL_ATTRIBUTES command that
can be read to get the same info for BEx adapters.

Signed-off-by: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit 6ee080bb09889dc0195a9c659288d17999237fb6)
Signed-off-by: Brian Maly <brian.maly@oracle.com>
Signed-off-by: Dhaval Giani <dhaval.giani@oracle.com>
drivers/net/ethernet/emulex/benet/be_cmds.c
drivers/net/ethernet/emulex/benet/be_cmds.h

index 730f2db9cf2c89ddd62ac62e34a7102c74bd4764..eb74c47d296ee682de00f9cf943c7f92bb1e5fcc 100644 (file)
@@ -3527,6 +3527,11 @@ int be_cmd_get_cntl_attributes(struct be_adapter *adapter)
                for (i = 0; i < CNTL_SERIAL_NUM_WORDS; i++)
                        adapter->serial_num[i] = le32_to_cpu(serial_num[i]) &
                                (BIT_MASK(16) - 1);
+               /* For BEx, since GET_FUNC_CONFIG command is not
+                * supported, we read funcnum here as a workaround.
+                */
+               if (BEx_chip(adapter))
+                       adapter->pf_num = attribs->hba_attribs.pci_funcnum;
        }
 
 err:
index 302c4e4655be6122939a57f41f9f4048cca402f4..51e2e816c62fbb26d63d1fff10a77afd857caf7f 100644 (file)
@@ -1718,7 +1718,11 @@ struct mgmt_hba_attribs {
        u32 rsvd2[55];
        u8 rsvd3[3];
        u8 phy_port;
-       u32 rsvd4[13];
+       u32 rsvd4[15];
+       u8 rsvd5[2];
+       u8 pci_funcnum;
+       u8 rsvd6;
+       u32 rsvd7[6];
 } __packed;
 
 struct mgmt_controller_attrib {