Skip to content

Commit dcf7ebb

Browse files
Padmanabh Ratnakardavem330
authored andcommitted
be2net: Fix VF driver load on newer Lancer FW
PF driver should enable VF so that VF goes to ready state in new Lancer FW. Signed-off-by: Padmanabh Ratnakar <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent c8a5416 commit dcf7ebb

File tree

3 files changed

+42
-0
lines changed

3 files changed

+42
-0
lines changed

drivers/net/ethernet/emulex/benet/be_cmds.c

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3131,6 +3131,38 @@ int be_cmd_set_profile_config(struct be_adapter *adapter, u32 bps,
31313131
return status;
31323132
}
31333133

3134+
/* Uses sync mcc */
3135+
int be_cmd_enable_vf(struct be_adapter *adapter, u8 domain)
3136+
{
3137+
struct be_mcc_wrb *wrb;
3138+
struct be_cmd_enable_disable_vf *req;
3139+
int status;
3140+
3141+
if (!lancer_chip(adapter))
3142+
return 0;
3143+
3144+
spin_lock_bh(&adapter->mcc_lock);
3145+
3146+
wrb = wrb_from_mccq(adapter);
3147+
if (!wrb) {
3148+
status = -EBUSY;
3149+
goto err;
3150+
}
3151+
3152+
req = embedded_payload(wrb);
3153+
3154+
be_wrb_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
3155+
OPCODE_COMMON_ENABLE_DISABLE_VF, sizeof(*req),
3156+
wrb, NULL);
3157+
3158+
req->hdr.domain = domain;
3159+
req->enable = 1;
3160+
status = be_mcc_notify_wait(adapter);
3161+
err:
3162+
spin_unlock_bh(&adapter->mcc_lock);
3163+
return status;
3164+
}
3165+
31343166
int be_roce_mcc_cmd(void *netdev_handle, void *wrb_payload,
31353167
int wrb_payload_size, u16 *cmd_status, u16 *ext_status)
31363168
{

drivers/net/ethernet/emulex/benet/be_cmds.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,7 @@ struct be_mcc_mailbox {
203203
#define OPCODE_COMMON_GET_FN_PRIVILEGES 170
204204
#define OPCODE_COMMON_READ_OBJECT 171
205205
#define OPCODE_COMMON_WRITE_OBJECT 172
206+
#define OPCODE_COMMON_ENABLE_DISABLE_VF 196
206207

207208
#define OPCODE_ETH_RSS_CONFIG 1
208209
#define OPCODE_ETH_ACPI_CONFIG 2
@@ -1802,6 +1803,12 @@ struct be_cmd_resp_set_profile_config {
18021803
struct be_cmd_req_hdr hdr;
18031804
};
18041805

1806+
struct be_cmd_enable_disable_vf {
1807+
struct be_cmd_req_hdr hdr;
1808+
u8 enable;
1809+
u8 rsvd[3];
1810+
};
1811+
18051812
static inline bool check_privilege(struct be_adapter *adapter, u32 flags)
18061813
{
18071814
return flags & adapter->cmd_privileges ? true : false;
@@ -1929,3 +1936,4 @@ extern int be_cmd_get_profile_config(struct be_adapter *adapter, u32 *cap_flags,
19291936

19301937
extern int be_cmd_set_profile_config(struct be_adapter *adapter, u32 bps,
19311938
u8 domain);
1939+
extern int be_cmd_enable_vf(struct be_adapter *adapter, u8 domain);

drivers/net/ethernet/emulex/benet/be_main.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2731,6 +2731,8 @@ static int be_vf_setup(struct be_adapter *adapter)
27312731
if (status)
27322732
goto err;
27332733
vf_cfg->def_vid = def_vlan;
2734+
2735+
be_cmd_enable_vf(adapter, vf + 1);
27342736
}
27352737
return 0;
27362738
err:

0 commit comments

Comments
 (0)