Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ff9ed19d authored by Kalesh Purayil's avatar Kalesh Purayil Committed by David S. Miller
Browse files

be2net: query FW to check if EVB is enabled



The current code assumes that bridge functionality (EVB) in the adapter
is enabled only when SR-IOV is enabled. This is not always true.
This patch uses the GET_HSW_CONFIG FW cmd to query this from the FW.

Signed-off-by: default avatarKalesh AP <kalesh.purayil@avagotech.com>
Signed-off-by: default avatarSathya Perla <sathya.perla@avagotech.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 145155e7
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -1758,6 +1758,7 @@ struct be_cmd_req_set_mac_list {
/*********************** HSW Config ***********************/
/*********************** HSW Config ***********************/
#define PORT_FWD_TYPE_VEPA		0x3
#define PORT_FWD_TYPE_VEPA		0x3
#define PORT_FWD_TYPE_VEB		0x2
#define PORT_FWD_TYPE_VEB		0x2
#define PORT_FWD_TYPE_PASSTHRU		0x1


#define ENABLE_MAC_SPOOFCHK		0x2
#define ENABLE_MAC_SPOOFCHK		0x2
#define DISABLE_MAC_SPOOFCHK		0x3
#define DISABLE_MAC_SPOOFCHK		0x3
+3 −3
Original line number Original line Diff line number Diff line
@@ -5073,9 +5073,6 @@ static int be_ndo_bridge_getlink(struct sk_buff *skb, u32 pid, u32 seq,
	int status = 0;
	int status = 0;
	u8 hsw_mode;
	u8 hsw_mode;


	if (!sriov_enabled(adapter))
		return 0;

	/* BE and Lancer chips support VEB mode only */
	/* BE and Lancer chips support VEB mode only */
	if (BEx_chip(adapter) || lancer_chip(adapter)) {
	if (BEx_chip(adapter) || lancer_chip(adapter)) {
		hsw_mode = PORT_FWD_TYPE_VEB;
		hsw_mode = PORT_FWD_TYPE_VEB;
@@ -5085,6 +5082,9 @@ static int be_ndo_bridge_getlink(struct sk_buff *skb, u32 pid, u32 seq,
					       NULL);
					       NULL);
		if (status)
		if (status)
			return 0;
			return 0;

		if (hsw_mode == PORT_FWD_TYPE_PASSTHRU)
			return 0;
	}
	}


	return ndo_dflt_bridge_getlink(skb, pid, seq, dev,
	return ndo_dflt_bridge_getlink(skb, pid, seq, dev,