lkml.org 
[lkml]   [2013]   [Dec]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 12/16] wl1251: enforce changed hw encryption support on monitor state change
    Date
    From: David Gnedt <david.gnedt@davizone.at>

    The firmware doesn't support per packet encryption selection, so disable hw
    encryption support completely while a monitor interface is present to support
    injection of packets (which shouldn't get encrypted by hw).
    To enforce the changed hw encryption support force a disassociation on
    non-monitor interfaces.
    For disassociation a workaround using hw connection monitor is employed,
    which temporary enables hw connection manager flag.

    Signed-off-by: David Gnedt <david.gnedt@davizone.at>
    Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
    ---
    drivers/net/wireless/ti/wl1251/main.c | 13 +++++++++++++
    1 file changed, 13 insertions(+)

    diff --git a/drivers/net/wireless/ti/wl1251/main.c b/drivers/net/wireless/ti/wl1251/main.c
    index bb6e873..1ef264c 100644
    --- a/drivers/net/wireless/ti/wl1251/main.c
    +++ b/drivers/net/wireless/ti/wl1251/main.c
    @@ -688,6 +688,16 @@ static int wl1251_op_config(struct ieee80211_hw *hw, u32 changed)
    wl->power_level = conf->power_level;
    }

    + /*
    + * Tell stack that connection is lost because hw encryption isn't
    + * supported in monitor mode.
    + * This requires temporary enabling of the hw connection monitor flag
    + */
    + if ((changed & IEEE80211_CONF_CHANGE_MONITOR) && wl->vif) {
    + wl->hw->flags |= IEEE80211_HW_CONNECTION_MONITOR;
    + ieee80211_connection_loss(wl->vif);
    + }
    +
    out_sleep:
    wl1251_ps_elp_sleep(wl);

    @@ -1120,6 +1130,9 @@ static void wl1251_op_bss_info_changed(struct ieee80211_hw *hw,
    }

    if (changed & BSS_CHANGED_ASSOC) {
    + /* Disable temporary enabled hw connection monitor flag */
    + wl->hw->flags &= ~IEEE80211_HW_CONNECTION_MONITOR;
    +
    if (bss_conf->assoc) {
    wl->beacon_int = bss_conf->beacon_int;

    --
    1.7.9.5
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2013-12-08 11:01    [W:2.975 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site