- struct rte_pci_addr *loc = &dev->addr;
- char filename[PATH_MAX];
- char buf[BUFSIZ];
- FILE *f;
-
- /* not configured, let it as is */
- if (strncmp(RTE_PCI_EXTENDED_TAG, "on", 2) != 0 &&
- strncmp(RTE_PCI_EXTENDED_TAG, "off", 3) != 0)
- return 0;
-
- snprintf(filename, sizeof(filename),
- SYSFS_PCI_DEVICES "/" PCI_PRI_FMT "/" "extended_tag",
- loc->domain, loc->bus, loc->devid, loc->function);
- f = fopen(filename, "rw+");
- if (!f)
- return -1;
-
- fgets(buf, sizeof(buf), f);
- if (strncmp(RTE_PCI_EXTENDED_TAG, "on", 2) == 0) {
- /* enable Extended Tag*/
- if (strncmp(buf, "on", 2) != 0) {
- fseek(f, 0, SEEK_SET);
- fputs("on", f);
- }
- } else {
- /* disable Extended Tag */
- if (strncmp(buf, "off", 3) != 0) {
- fseek(f, 0, SEEK_SET);
- fputs("off", f);
- }
- }
- fclose(f);
-
- return 0;