Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F163994662
D3145.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D3145.diff
View Options
Index: head/sys/dev/sfxge/common/hunt_impl.h
===================================================================
--- head/sys/dev/sfxge/common/hunt_impl.h
+++ head/sys/dev/sfxge/common/hunt_impl.h
@@ -695,6 +695,21 @@
#define HUNT_MIN_PIO_ALLOC_SIZE (HUNT_PIOBUF_SIZE / 32)
+#define HUNT_LEGACY_PF_PRIVILEGE_MASK \
+ (MC_CMD_PRIVILEGE_MASK_IN_GRP_ADMIN | \
+ MC_CMD_PRIVILEGE_MASK_IN_GRP_LINK | \
+ MC_CMD_PRIVILEGE_MASK_IN_GRP_ONLOAD | \
+ MC_CMD_PRIVILEGE_MASK_IN_GRP_PTP | \
+ MC_CMD_PRIVILEGE_MASK_IN_GRP_INSECURE_FILTERS | \
+ MC_CMD_PRIVILEGE_MASK_IN_GRP_MAC_SPOOFING | \
+ MC_CMD_PRIVILEGE_MASK_IN_GRP_UNICAST | \
+ MC_CMD_PRIVILEGE_MASK_IN_GRP_MULTICAST | \
+ MC_CMD_PRIVILEGE_MASK_IN_GRP_BROADCAST | \
+ MC_CMD_PRIVILEGE_MASK_IN_GRP_ALL_MULTICAST | \
+ MC_CMD_PRIVILEGE_MASK_IN_GRP_PROMISCUOUS)
+
+#define HUNT_LEGACY_VF_PRIVILEGE_MASK 0
+
typedef uint32_t efx_piobuf_handle_t;
#define EFX_PIOBUF_HANDLE_INVALID ((efx_piobuf_handle_t) -1)
Index: head/sys/dev/sfxge/common/hunt_mac.c
===================================================================
--- head/sys/dev/sfxge/common/hunt_mac.c
+++ head/sys/dev/sfxge/common/hunt_mac.c
@@ -150,8 +150,19 @@
{
int rc;
- if ((rc = efx_mcdi_vadapter_set_mac(enp)) != 0)
- goto fail1;
+ if ((rc = efx_mcdi_vadapter_set_mac(enp)) != 0) {
+ if (rc != ENOTSUP)
+ goto fail1;
+
+ /* Fallback for older firmware without Vadapter support */
+ if ((rc = hunt_mac_reconfigure(enp)) != 0)
+ goto fail2;
+ }
+
+ return (0);
+
+fail2:
+ EFSYS_PROBE(fail2);
fail1:
EFSYS_PROBE1(fail1, int, rc);
Index: head/sys/dev/sfxge/common/hunt_nic.c
===================================================================
--- head/sys/dev/sfxge/common/hunt_nic.c
+++ head/sys/dev/sfxge/common/hunt_nic.c
@@ -1239,8 +1239,19 @@
* the privilege mask to check for sufficient privileges, as that
* can result in time-of-check/time-of-use bugs.
*/
- if ((rc = efx_mcdi_privilege_mask(enp, pf, vf, &mask)) != 0)
- goto fail13;
+ if ((rc = efx_mcdi_privilege_mask(enp, pf, vf, &mask)) != 0) {
+ if (rc != ENOTSUP)
+ goto fail13;
+
+ /* Fallback for old firmware without privilege mask support */
+ if (EFX_PCI_FUNCTION_IS_PF(encp)) {
+ /* Assume PF has admin privilege */
+ mask = HUNT_LEGACY_PF_PRIVILEGE_MASK;
+ } else {
+ /* VF is always unprivileged by default */
+ mask = HUNT_LEGACY_VF_PRIVILEGE_MASK;
+ }
+ }
encp->enc_privilege_mask = mask;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Jul 28, 5:25 PM (19 m, 55 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35667810
Default Alt Text
D3145.diff (2 KB)
Attached To
Mode
D3145: sfxge: added fallbacks for pre 4.2.1 firmware support
Attached
Detach File
Event Timeline
Log In to Comment