diff --git a/src/drivers/wifi/generic/generic.c b/src/drivers/wifi/generic/generic.c
index 6ffa7f1..56944e61 100644
--- a/src/drivers/wifi/generic/generic.c
+++ b/src/drivers/wifi/generic/generic.c
@@ -9,10 +9,9 @@
 #include <device/pci_ids.h>
 #include <elog.h>
 #include <sar.h>
-#include <smbios.h>
-#include <string.h>
 #include <wrdd.h>
 #include "chip.h"
+#include "wifi_private.h"
 
 /* WRDS Spec Revision */
 #define WRDS_REVISION 0x0
@@ -243,42 +242,6 @@
 		elog_add_event_wake(ELOG_WAKE_SOURCE_PME_WIFI, 0);
 }
 
-#if CONFIG(GENERATE_SMBIOS_TABLES)
-static int smbios_write_intel_wifi(struct device *dev, int *handle, unsigned long *current)
-{
-	struct smbios_type_intel_wifi {
-		u8 type;
-		u8 length;
-		u16 handle;
-		u8 str;
-		u8 eos[2];
-	} __packed;
-
-	struct smbios_type_intel_wifi *t = (struct smbios_type_intel_wifi *)*current;
-	int len = sizeof(struct smbios_type_intel_wifi);
-
-	memset(t, 0, sizeof(struct smbios_type_intel_wifi));
-	t->type = 0x85;
-	t->length = len - 2;
-	t->handle = *handle;
-	/* Intel wifi driver expects this string to be in the table 0x85. */
-	t->str = smbios_add_string(t->eos, "KHOIHGIUCCHHII");
-
-	len = t->length + smbios_string_table_len(t->eos);
-	*current += len;
-	*handle += 1;
-	return len;
-}
-
-static int smbios_write_wifi(struct device *dev, int *handle, unsigned long *current)
-{
-	if (dev->vendor == PCI_VENDOR_ID_INTEL)
-		return smbios_write_intel_wifi(dev, handle, current);
-
-	return 0;
-}
-#endif
-
 struct device_operations wifi_generic_ops = {
 	.read_resources		= pci_dev_read_resources,
 	.set_resources		= pci_dev_set_resources,
