mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
mxge(4) should pass unhandled ioctls to ether_ioctl()
Panasas discovered that ioctl(SIOCGLAGGPORT) returns ENOTTY for mxge(4) when the NIC is not a member of a lagg. This came as a surprise, because the SIOCGLAGGPORT handler in if_lagg.c only returns ENOENT (if run against the laggX interface, rather than a physical port) or EINVAL (if run against a non-member physical port). This behavior was not seen with other drivers, such as bge(4), igb(4), and cxl(4). When I compared their respective ioctl handlers, I found that they all called ether_ioctl() for the default (i.e. unhandled) case; by contrast, mxge(4) only calls ether_ioctl() for two specific cases, and returns ENOTTY for the default case. Remove the two cases which explicitly call ether_ioctl(), and let the default case call it instead. This matches what the vast majority of the NIC drivers do. Reviewed by: kmacy MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D14381
This commit is contained in:
parent
a07d59d1da
commit
c756fb6ebb
1 changed files with 2 additions and 6 deletions
|
|
@ -4162,11 +4162,6 @@ mxge_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
|
|||
|
||||
err = 0;
|
||||
switch (command) {
|
||||
case SIOCSIFADDR:
|
||||
case SIOCGIFADDR:
|
||||
err = ether_ioctl(ifp, command, data);
|
||||
break;
|
||||
|
||||
case SIOCSIFMTU:
|
||||
err = mxge_change_mtu(sc, ifr->ifr_mtu);
|
||||
break;
|
||||
|
|
@ -4290,7 +4285,8 @@ mxge_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
|
|||
break;
|
||||
|
||||
default:
|
||||
err = ENOTTY;
|
||||
err = ether_ioctl(ifp, command, data);
|
||||
break;
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue