ieee80211: handle SIOCSIFLLADDR in ifioctl()

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

ieee80211: handle SIOCSIFLLADDR in ifioctl()

Tobias Heider-2
Hi,

I noticed that my iwm(4) device does not send RTM_IFINFO messages
when the lladdr is changed with ifconfig.
For other interface types ifioctl() handles the lladdr change in
if_setlladdr() and ifnewlladdr().
I attached a diff that seems to fix this.

Is there a specific reason IFT_IEEE80211 is not in the list of
if_types handled in ifioctl()?

Index: if.c
===================================================================
RCS file: /cvs/src/sys/net/if.c,v
retrieving revision 1.600
diff -u -p -r1.600 if.c
--- if.c 24 Jan 2020 05:14:51 -0000 1.600
+++ if.c 24 Feb 2020 18:50:28 -0000
@@ -2189,6 +2189,7 @@ ifioctl(struct socket *so, u_long cmd, c
  case IFT_CARP:
  case IFT_XETHER:
  case IFT_ISO88025:
+ case IFT_IEEE80211:
  error = (*ifp->if_ioctl)(ifp, cmd, data);
  if (error == ENOTTY)
  error = 0;

Reply | Threaded
Open this post in threaded view
|

Re: ieee80211: handle SIOCSIFLLADDR in ifioctl()

Stefan Sperling-5
On Mon, Feb 24, 2020 at 07:54:09PM +0100, Tobias Heider wrote:

> Hi,
>
> I noticed that my iwm(4) device does not send RTM_IFINFO messages
> when the lladdr is changed with ifconfig.
> For other interface types ifioctl() handles the lladdr change in
> if_setlladdr() and ifnewlladdr().
> I attached a diff that seems to fix this.
>
> Is there a specific reason IFT_IEEE80211 is not in the list of
> if_types handled in ifioctl()?

I don't think IFT_IEEE80211 is actually used.
Aren't wifi interfaces IFT_ETHER?

> Index: if.c
> ===================================================================
> RCS file: /cvs/src/sys/net/if.c,v
> retrieving revision 1.600
> diff -u -p -r1.600 if.c
> --- if.c 24 Jan 2020 05:14:51 -0000 1.600
> +++ if.c 24 Feb 2020 18:50:28 -0000
> @@ -2189,6 +2189,7 @@ ifioctl(struct socket *so, u_long cmd, c
>   case IFT_CARP:
>   case IFT_XETHER:
>   case IFT_ISO88025:
> + case IFT_IEEE80211:
>   error = (*ifp->if_ioctl)(ifp, cmd, data);
>   if (error == ENOTTY)
>   error = 0;
>
>