[PATCH 3/4] Do not encrypt EAPOL keys

Olof Johansson dev at skyshaper.net
Fri Jul 5 03:11:23 EDT 2013


Something about this patch looks very odd.

Won't this mean that if a station joins and then exits, disable key
will be executed and then all data packets will be send with the
no_encryption flag set to true?

--
Olof

On Fri, Jul 5, 2013 at 8:45 AM, Eugene Krasnikov <k.eugene.e at gmail.com> wrote:
> Keys are coming in data frames. So do not encrypt
> data packets until key exchange is finished.
>
> Signed-off-by: Eugene Krasnikov <k.eugene.e at gmail.com>
> ---
>  main.c    | 2 ++
>  txrx.c    | 3 ++-
>  wcn36xx.h | 1 +
>  3 files changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/main.c b/main.c
> index be094db..f3a6fb9 100644
> --- a/main.c
> +++ b/main.c
> @@ -394,6 +394,7 @@ static int wcn36xx_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
>                 }
>
>                 if (IEEE80211_KEY_FLAG_PAIRWISE & key_conf->flags) {
> +                       wcn->is_data_encrypted = true;
>                         /* Reconfigure bss with encrypt_type */
>                         wcn36xx_smd_config_bss(wcn,
>                                                NL80211_IFTYPE_STATION,
> @@ -420,6 +421,7 @@ static int wcn36xx_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
>                                 wcn->encrypt_type,
>                                 key_conf->keyidx);
>                 } else {
> +                       wcn->is_data_encrypted = false;
>                         /* do not remove key if disassociated */
>                         if (wcn->aid)
>                                 wcn36xx_smd_remove_stakey(wcn,
> diff --git a/txrx.c b/txrx.c
> index 12209bc..4f6246f 100644
> --- a/txrx.c
> +++ b/txrx.c
> @@ -123,7 +123,8 @@ void wcn36xx_fill_tx_bd(struct wcn36xx *wcn, struct wcn36xx_tx_bd *bd,
>                 bd->queue_id = 0;
>                 bd->sta_index = wcn->current_vif->sta_index;
>                 bd->dpu_desc_idx = wcn->current_vif->dpu_desc_index;
> -               if (ieee80211_is_nullfunc(hdr->frame_control))
> +               if (ieee80211_is_nullfunc(hdr->frame_control) ||
> +                   !wcn->is_data_encrypted)
>                         bd->dpu_ne = 1;
>
>         } else {
> diff --git a/wcn36xx.h b/wcn36xx.h
> index 2c72349..fd591ba 100644
> --- a/wcn36xx.h
> +++ b/wcn36xx.h
> @@ -129,6 +129,7 @@ struct wcn36xx {
>         u8                      wlan_version[WCN36XX_HAL_VERSION_LENGTH + 1];
>
>         bool                    beacon_enable;
> +       bool                    is_data_encrypted;
>         /* IRQs */
>         int                     tx_irq;
>         int                     rx_irq;
> --
> 1.7.11.3
>
>
> _______________________________________________
> wcn36xx mailing list
> wcn36xx at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/wcn36xx



More information about the wcn36xx mailing list