Page MenuHomeFreeBSD

Fix compilation of kernels with usb and fdt enabled, but no miibus
ClosedPublic

Authored by stevek on Aug 16 2019, 5:13 PM.

Details

Summary

usb_ethernet.h includes a number of mii headers, but only does so in
order to have struct mii_data available. However, it only really needs
a forward declaration of struct mii_data for use in pointer form for
the return type of a function prototype.

Custom kernel configuration that have usb and fdt enabled, but no miibus,
end up with compilation failures because miibus_if.h will not get
generated.

Due to the above, the following changes have been made to usb_ethernet.h:

  • remove the inclusion of mii headers
  • forward-declare struct mii_data
  • include net/ifq.h to satify the need for complete struct ifqueue
Test Plan

Built "kernels" successfully

Diff Detail

Repository
rS FreeBSD src repository
Lint
Lint OK
Unit
No Unit Test Coverage
Build Status
Buildable 25919
Build 24483: arc lint + arc unit

Event Timeline

stevek created this revision.Aug 16 2019, 5:13 PM
imp added a comment.Aug 16 2019, 5:31 PM

looks fine as far as it goes, but what's including this? usb_ethernet.c certainly needs miibus too compile...

imp accepted this revision.Aug 16 2019, 5:39 PM

Ah, I see where it's used now. There are several alternatives, but this is the least bad one that comes to mind.
We have a little bit of dead code vs having #ifdefs for FDT in usb_ethernet.c.
It's more modular to have it like this, so I'm cool with it.

This revision is now accepted and ready to land.Aug 16 2019, 5:39 PM