• Johannes Berg's avatar
    iwlwifi: rework broadcast station management · 2c810ccd
    Johannes Berg authored
    Currently, the broadcast station is managed along
    with the interface type, rather than always being
    present. That leads to a bug with injection -- it
    is currently not possible to inject frames when
    the only virtual interface is a monitor, because
    in that the required broadcast station is missing.
    
    Additionally, allocating and deallocating the
    broadcast station's LQ all the time is wasteful,
    and the code to support this is fairly complex.
    
    So this changes completely the way we manage the
    broadcast station. Rather than manage it along
    with any interface, we now allocate it when we
    bring the device up, and remove it again when we
    bring the device down. When we bring the device
    up, we don't immediately program the broadcast
    station into it, instead we just mark it active
    and rely on the next restore cycle to upload it
    to the device. This works because an unassociated
    RXON is always required at least once to set up
    device parameters, which implies a reprogramming
    of stations into the device.
    
    As we now manage all stations properly, there no
    longer is a need for forcing a clearing of them
    via iwl_clear_ucode_stations(), which can become
    a lot simpler.
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    Signed-off-by: default avatarReinette Chatre <reinette.chatre@intel.com>
    2c810ccd
iwl-3945.c 85 KB