• Johannes Berg's avatar
    iwlagn: fix rts cts protection · 94597ab2
    Johannes Berg authored
    Currently the driver will try to protect all frames,
    which leads to a lot of odd things like sending an
    RTS with a zeroed RA before multicast frames, which
    is clearly bogus.
    In order to fix all of this, we need to take a step
    back and see what we need to achieve:
     * we need RTS/CTS protection if requested by
       the AP for the BSS, mac80211 tells us this
     * in that case, CTS-to-self should only be
       enabled when mac80211 tells us
     * additionally, as a hardware workaround, on
       some devices we have to protect aggregated
       frames with RTS
    To achieve the first two items, set up the RXON
    accordingly and set the protection required flag
    in the transmit command when mac80211 requests
    protection for the frame.
    To achieve the last item, set the rate-control
    RTS-requested flag for all stations that we have
    aggregation sessions with, and set the protection
    required flag when sending aggregated frames (on
    those devices where this is required).
    Since otherwise bugs can occur, do not allow the
    user to override the RTS-for-aggregation setting
    from sysfs any more.
    Finally, also clean up the way all these flags get
    set in the driver and move everything into the
    device-specific functions.
    Cc: stable@kernel.org [2.6.35]
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    Signed-off-by: default avatarWey-Yi Guy <wey-yi.w.guy@intel.com>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>