Sun, 14 Feb 2016 17:39:32 +0200 було написано Hans Petter Selasky <[email protected]>:

This does not related to pairwise keys management:

static void
rum_group_key_set_cb(struct rum_softc *sc, union sec_param *data,
    uint8_t rvp_id)
{
...
        /* Set cipher mode. */
if (rum_modbits(sc, rvp_id < 2 ? RT2573_SEC_CSR1 : RT2573_SEC_CSR5,
                mode << (rvp_id % 2 + k->wk_keyix) * RT2573_SKEY_MAX,
RT2573_MODE_MASK << (rvp_id % 2 + k->wk_keyix) * RT2573_SKEY_MAX) != 0)
                  goto print_err;
...
}

For group keys, k->wk_keyix is assigned in another way:

static int
rum_key_alloc(struct ieee80211vap *vap, struct ieee80211_key *k,
    ieee80211_keyix *keyix, ieee80211_keyix *rxkeyix)
{
...
        *keyix = k - vap->iv_nw_keys;
    }
...
}

On 02/14/16 16:23, Adrian Chadd wrote:
uhm, why'd you not just file a separate pr for this?

8 keys limits how many stations it can support in hostap mode :( I'd
rather the bitmap management code gets fixed.


Hi,

 From what I can see 8 keys is the maximum due to the following shift:

         /* Set cipher mode. */
if (rum_modbits(sc, rvp_id < 2 ? RT2573_SEC_CSR1 : RT2573_SEC_CSR5,
               mode << (rvp_id % 2 + k->wk_keyix) * RT2573_SKEY_MAX,
RT2573_MODE_MASK << (rvp_id % 2 + k->wk_keyix) * RT2573_SKEY_MAX)
             != 0)
                 goto print_err;


It is only about bitmanagement, but about where to actually write those bits. Feel free to fix it.

--HPS
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to