• Johannes Berg's avatar
    mac80211: fix change_interface queue assignments · a9865538
    Johannes Berg authored
    Jouni reported that with mac80211_hwsim, multicast TX was causing
    crashes due to invalid vif->cab_queue assignment. It turns out that
    this is caused by change_interface() getting invoked and not having
    the vif->type/vif->p2p assigned correctly before calling the queue
    check (ieee80211_check_queues). Fix this by passing the 'external'
    interface type to the function and adjusting it accordingly.
    
    While at it, also fix the error path in change_interface, it wasn't
    correctly resetting to the external type but using the internal one
    instead.
    
    Fortunately this affects on hwsim because all other drivers set the
    vif->type/vif->p2p variables when changing iftype. This shouldn't
    be needed, but almost all implementations actually do it for their
    own internal handling.
    Reported-by: default avatarJouni Malinen <j@w1.fi>
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    a9865538
iface.c 46.4 KB