Search Linux Wireless

Re: [RFC PATCH v3 02/12] nl80211/cfg80211: Extended Key ID support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





Am 22.02.19 um 09:30 schrieb Johannes Berg:

With Extended Key ID we stick to a similar approach: NL80211_CMD_NEW_KEY
is called to install the new key and nl80211_key_install_mode allows to
select between a "legacy" or "extended" key install: NL80211_KEY_RX_TX
for "legacy" or NL80211_KEY_RX_ONLY for "extended".

Ah. That's where the "EXT" came from in the mac80211 names :-) FWIW, I'm
not sure that makes sense. Yes, we think of it as an "extension" or
being "extended" now while we work on it, but ultimately it'll be a
simple part of the API. But I digress.

"EXT" is only intended to be the short form for "Extended Key ID for Individually Addressed Frames" from IEEE 802.11 - 2016 and not as "extension for nl80211/mac80211".

NL80211_KEY_SWITCH_TX is only allowed with NL80211_CMD_SET_KEY and is
the only Extended Key ID action allowed for that function.

Yes, but what does it *do*? Your documentation said:

	Switch Tx to a Rx only, referenced by sta mac and idx.

but that seems backwards to me based on the above requirement:
	Allow a key to be used for decryption first and switch it to a
	"normal" Rx/Tx key with a second call.

Ah, now I see your point!

I'm viewing a Rx only key as something different, a new "key group" like the existing broadcast or unicast key groups. (Which btw. also why I have a problems to not have a key marked as such.)

"Switch TX" was intended to bring across, that the Tx status would switch from the "other" key to the referenced one. (That's also the reason I did not want to use ENABLE_TX.)

Or in other words:
Make a potential existing RX/TX key to a RX only key and the current Rx only key to the RX/Tx key. The key referenced by sta and mac must be flagged Rx only or the command will have no effect/fail. (The last requirement would vanish when we drop the Rx_Only key flag.)

IOW, you said we need to have the ability to first install RX-only, and
then switch the key to RX & TX. I'd have called this "ENABLE_TX" or
something like that. Or perhaps SWITCH_(ON_)TX if you're so inclined,
but the documentation should then say

	Switch key from RX-only to TX/RX, referenced by ...

no? That's what I meant by "the other way around".

What do you think about:
	Switch key referenced by referenced by sta mac and idx from RX-
	only to RX/TX and make any other RX/TX key for the sta a RX-only
	key.


Any non-pairwise keys can only use NL80211_KEY_RX_TX which is of course
always the default and also allowed for "legacy" pairwise keys.

Right.

A Extended Key Install will:
1) call NL80211_CMD_NEW_KEY with all the usual parameters of a new key
install plus the flag NL80211_KEY_RX_ONLY set.

So far makes sense.

2) Once ready will call NL80211_CMD_SET_KEY with flag
NL80211_KEY_SWITCH_TX to activate a specific key.

Also makes sense, but the documentation doesn't.

I think we should rename these perhaps

	NL80211_KEY_RX_TX - install key and enable RX/TX (default)
	NL80211_KEY_RX_ONLY - install unicast key for RX only
	NL80211_KEY_ENABLE_TX - enable TX for a previously installed
				RX_ONLY key

I think?

About the ENABLE_TX vs. SWITCH_TX - we don't allow to switch TX *off*
again, only *on*, so I think "enable" makes more sense than "switch".

See above. NL80211_KEY_ENABLE_TX would also implicit disable Tx for the "other" pairwise key (if present). Mac80211 e.g. evaluates delay tailromm for both keys again and always reduces it for the Rx only key when it was set and even sets the RX_only flag again.

That said I'm happy with any of these:
	NL80211_KEY_ENABLE_TX
	NL80211_KEY_SWITCH_TX
	NL80211_KEY_MOVE_TX

After that discussion I'm now wondering if we maybe should change the naming more fundamentally, similar to what I proposed for mac80211:

	NL80211_KEY_SET - install key and enable RX/TX (default)
	NL80211_KEY_EXT_SET add unicast key for Extended Key ID
	NL80211_KEY_EXT_ENABLE - Set the key referenced by
		sta mac the to the preferred TX key for sta

Here it would be nice to be able to use "NL80211_EXT_KEY_", but that would break the naming schema quite badly. And using NL80211_KEY_EXT_KEY_ looks also confusing...

Any preferences or other options? I think you have now all details about that and whatever looks best for you is it now.

Anyway, my whole comment was only about the documentation text which
seemed backward or at least unclear to me.

I did not see that when coming from understanding the code to writing comments/documentation. Chances are other readers will interpret that like you did and not as intended... And the area is complex enough without those misunderstandings.

ok, I'll remove all the drive-by comment "cleanups".
It (often) looks kind of untidy and not really worth separate patches
and I'm kind of responsible for (most) of them.. I see why you don't
want to see those fixed drive-by...

My understanding is now that we prefer to not change those and I'll
leave them alone.

I have no objection to even the most trivial cleanup patches going in
separately, and if you like multiple in a bigger "clean up this area"
patch, but here I think it detracts from the patch.

I understand.
Honestly I would feel silly to put most of the drive-by changes into a dedicated patch and not worth the time for a review. So I guess I'll only do separate patches if I really care about the format/comment in future:-)


Alexander




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux