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

Commit 3da988c9 authored by Sarveshwar Bandi's avatar Sarveshwar Bandi Committed by David S. Miller
Browse files

be2net: Clear any capability flags that driver is not interested in.



It is possible for some versions of firmware to advertise capabilities that driver
is not ready to handle. This may lead to controller stall. Since the driver is
interested only in subset of flags, clearing the rest.

Signed-off-by: default avatarSarveshwar Bandi <sarveshwar.bandi@emulex.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d9bf5f13
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -3048,6 +3048,9 @@ int be_cmd_get_func_config(struct be_adapter *adapter)


		adapter->max_event_queues = le16_to_cpu(desc->eq_count);
		adapter->max_event_queues = le16_to_cpu(desc->eq_count);
		adapter->if_cap_flags = le32_to_cpu(desc->cap_flags);
		adapter->if_cap_flags = le32_to_cpu(desc->cap_flags);

		/* Clear flags that driver is not interested in */
		adapter->if_cap_flags &=  BE_IF_CAP_FLAGS_WANT;
	}
	}
err:
err:
	mutex_unlock(&adapter->mbox_lock);
	mutex_unlock(&adapter->mbox_lock);
+6 −0
Original line number Original line Diff line number Diff line
@@ -563,6 +563,12 @@ enum be_if_flags {
	BE_IF_FLAGS_MULTICAST = 0x1000
	BE_IF_FLAGS_MULTICAST = 0x1000
};
};


#define BE_IF_CAP_FLAGS_WANT (BE_IF_FLAGS_RSS | BE_IF_FLAGS_PROMISCUOUS |\
			 BE_IF_FLAGS_BROADCAST | BE_IF_FLAGS_VLAN_PROMISCUOUS |\
			 BE_IF_FLAGS_VLAN | BE_IF_FLAGS_MCAST_PROMISCUOUS |\
			 BE_IF_FLAGS_PASS_L3L4_ERRORS | BE_IF_FLAGS_MULTICAST |\
			 BE_IF_FLAGS_UNTAGGED)

/* An RX interface is an object with one or more MAC addresses and
/* An RX interface is an object with one or more MAC addresses and
 * filtering capabilities. */
 * filtering capabilities. */
struct be_cmd_req_if_create {
struct be_cmd_req_if_create {