Module Name: src Committed By: christos Date: Thu Mar 7 14:55:49 UTC 2019
Modified Files: src/sys/dev/usb: if_urtwn.c Log Message: add SIOCS80211CHANNEL special handling in monitor mode (from OpenBSD) To generate a diff of this commit: cvs rdiff -u -r1.68 -r1.69 src/sys/dev/usb/if_urtwn.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/usb/if_urtwn.c diff -u src/sys/dev/usb/if_urtwn.c:1.68 src/sys/dev/usb/if_urtwn.c:1.69 --- src/sys/dev/usb/if_urtwn.c:1.68 Thu Jan 31 22:20:35 2019 +++ src/sys/dev/usb/if_urtwn.c Thu Mar 7 09:55:49 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_urtwn.c,v 1.68 2019/02/01 03:20:35 christos Exp $ */ +/* $NetBSD: if_urtwn.c,v 1.69 2019/03/07 14:55:49 christos Exp $ */ /* $OpenBSD: if_urtwn.c,v 1.42 2015/02/10 23:25:46 mpi Exp $ */ /*- @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_urtwn.c,v 1.68 2019/02/01 03:20:35 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_urtwn.c,v 1.69 2019/03/07 14:55:49 christos Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -2974,6 +2974,21 @@ urtwn_ioctl(struct ifnet *ifp, u_long cm } break; + case SIOCS80211CHANNEL: + /* + * This allows for fast channel switching in monitor mode + * (used by kismet). In IBSS mode, we must explicitly reset + * the interface to generate a new beacon frame. + */ + error = ieee80211_ioctl(ic, cmd, data); + if (error == ENETRESET && + ic->ic_opmode == IEEE80211_M_MONITOR) { + urtwn_set_chan(sc, ic->ic_curchan, + IEEE80211_HTINFO_2NDCHAN_NONE); + error = 0; + } + break; + default: error = ieee80211_ioctl(ic, cmd, data); break;