The EVB (virtual bridge) functionality should be disabled on older BE3 and Lancer chips if SR-IOV is disabled in the NIC's BIOS. This setting is identified by the zero value of total VFs reported by the card. The GET_HSW_CONFIG command cannot be used as it is not supported by these older chipset's FW.
v2: added the comment Cc: Sathya Perla <sathya.pe...@broadcom.com> Cc: Ajit Khaparde <ajit.khapa...@broadcom.com> Cc: Padmanabh Ratnakar <padmanabh.ratna...@broadcom.com> Cc: Sriharsha Basavapatna <sriharsha.basavapa...@broadcom.com> Cc: Somnath Kotur <somnath.ko...@broadcom.com> Signed-off-by: Ivan Vecera <ivec...@redhat.com> --- drivers/net/ethernet/emulex/benet/be_main.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c index 9c1fc9d..10a0ad5 100644 --- a/drivers/net/ethernet/emulex/benet/be_main.c +++ b/drivers/net/ethernet/emulex/benet/be_main.c @@ -4588,6 +4588,9 @@ static int be_ndo_bridge_getlink(struct sk_buff *skb, u32 pid, u32 seq, /* BE and Lancer chips support VEB mode only */ if (BEx_chip(adapter) || lancer_chip(adapter)) { + /* VEB is disabled in non-SR-IOV profiles on BE3/Lancer */ + if (!pci_sriov_get_totalvfs(adapter->pdev)) + return 0; hsw_mode = PORT_FWD_TYPE_VEB; } else { status = be_cmd_get_hsw_config(adapter, NULL, 0, -- 2.4.10