From: Johannes Berg <johannes@sipsolutions.net>
To: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Cc: linux-wireless@vger.kernel.org,
Andrei Otcheretianski <andrei.otcheretianski@intel.com>
Subject: Re: [PATCHv3 RESEND 07/11] cfg80211: add utility functions to clone and free nan_func
Date: Wed, 06 Apr 2016 11:02:26 +0200 [thread overview]
Message-ID: <1459933346.17504.50.camel@sipsolutions.net> (raw)
In-Reply-To: <1459244109-16038-7-git-send-email-emmanuel.grumbach@intel.com>
> +int cfg80211_clone_nan_func_members(struct cfg80211_nan_func *f1,
> + const struct cfg80211_nan_func *f2)
> +{
> + memcpy(f1, f2, sizeof(*f1));
That's pretty weird. And the only user of this (in a later patch) is
first allocating the f1. I think this function should be changed to
also allocate the entire struct cfg80211_nan_func, with all the
contents.
Yes, mac80211 is actually allocating a bit more - but only a list_head.
I think I'd prefer just putting a "struct list_head list" into the
cfg80211 struct "for driver use" and getting rid of all of these
contortions.
With some care, I'm pretty sure you could even get away with a single
allocation that's big enough to cover everything, so that you don't
need to have cfg80211_free_nan_func_members() exported but can simply
kfree() the pointer returned from this function.
That's basically doing
size = sizeof(*dst);
size += src->serv_spec_info_len;
size += src->srf_bf_len;
size += src->srf_num_macs * size(...);
size += <rx filters calculation>
size += <tx filters calculation>
and then using pointers to the single block.
The only problem might be if that can get really large, but I think it
would make memory management simpler.
In fact, it'd be *really* nice if that could also be done when parsing
this from nl80211.
Additionally, and alternatively to exporting this function from
cfg80211, why don't you change the rules around the memory?
If nl80211_nan_add_func() doesn't put the func on the stack, but
allocates it, then rdev_add_nan_func() can be forced to take ownership
of the pointer. That way, there's no need to even copy the data at all.
Yes, that'd have to be documented (particularly whether or not it also
takes ownership in error cases, it probably should), but overall I'm
pretty sure it'd simplify things.
Even if we *don't* get away with putting everything into a single
allocation in nl80211 - that might be too complicated - we'd only have
to export the free function and would never copy around things.
johannes
next prev parent reply other threads:[~2016-04-06 9:02 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-29 9:34 [PATCHv3 RESEND 01/11] cfg80211: add start / stop NAN commands Emmanuel Grumbach
2016-03-29 9:35 ` [PATCHv3 RESEND 02/11] mac80211: add boilerplate code for start / stop NAN Emmanuel Grumbach
2016-04-06 8:27 ` Johannes Berg
2016-03-29 9:35 ` [PATCHv3 RESEND 03/11] cfg80211: add add_nan_func / rm_nan_func Emmanuel Grumbach
2016-04-06 8:40 ` Johannes Berg
2016-04-06 8:47 ` Johannes Berg
2016-03-29 9:35 ` [PATCHv3 RESEND 04/11] cfg80211: allow the user space to change current NAN configuration Emmanuel Grumbach
2016-04-06 8:44 ` Johannes Berg
2016-03-29 9:35 ` [PATCHv3 RESEND 05/11] cfg80211: provide a function to report a match for NAN Emmanuel Grumbach
2016-04-06 8:51 ` Johannes Berg
2016-04-06 9:38 ` Malinen, Jouni
2016-04-06 9:40 ` Johannes Berg
2016-03-29 9:35 ` [PATCHv3 RESEND 06/11] cfg80211: Provide an API to report NAN function termination Emmanuel Grumbach
2016-04-06 8:52 ` Johannes Berg
2016-04-06 9:40 ` Malinen, Jouni
2016-04-06 10:43 ` Otcheretianski, Andrei
2016-03-29 9:35 ` [PATCHv3 RESEND 07/11] cfg80211: add utility functions to clone and free nan_func Emmanuel Grumbach
2016-04-06 9:02 ` Johannes Berg [this message]
2016-03-29 9:35 ` [PATCHv3 RESEND 08/11] mac80211: implement nan_change_conf Emmanuel Grumbach
2016-04-06 9:07 ` Johannes Berg
2016-03-29 9:35 ` [PATCHv3 RESEND 09/11] mac80211: Implement add_nan_func and rm_nan_func Emmanuel Grumbach
2016-04-06 9:22 ` Johannes Berg
2016-03-29 9:35 ` [PATCHv3 RESEND 10/11] mac80211: Add API to report nan function match Emmanuel Grumbach
2016-04-06 9:24 ` Johannes Berg
2016-03-29 9:35 ` [PATCHv3 RESEND 11/11] cfg80211: allow to tie the NAN instance to the owner Emmanuel Grumbach
2016-04-06 8:24 ` [PATCHv3 RESEND 01/11] cfg80211: add start / stop NAN commands Johannes Berg
2016-04-06 9:34 ` Malinen, Jouni
2016-04-06 9:43 ` Johannes Berg
2016-04-06 9:44 ` Grumbach, Emmanuel
2016-04-06 10:14 ` Otcheretianski, Andrei
2016-04-06 9:55 ` Malinen, Jouni
2016-04-06 10:01 ` Grumbach, Emmanuel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1459933346.17504.50.camel@sipsolutions.net \
--to=johannes@sipsolutions.net \
--cc=andrei.otcheretianski@intel.com \
--cc=emmanuel.grumbach@intel.com \
--cc=linux-wireless@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).