Page MenuHomeFreeBSD

D3145.diff
No OneTemporary

D3145.diff

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

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)

Event Timeline