From: David Miller <davem@davemloft.net>
To: subashab@codeaurora.org
Cc: netdev@vger.kernel.org, fengguang.wu@intel.com, dcbw@redhat.com,
jiri@resnulli.us, stephen@networkplumber.org
Subject: Re: [PATCH net-next 3/3 v4] drivers: net: ethernet: qualcomm: rmnet: Initial implementation
Date: Tue, 15 Aug 2017 21:24:14 -0700 (PDT) [thread overview]
Message-ID: <20170815.212414.71937112074428743.davem@davemloft.net> (raw)
In-Reply-To: <1502856953-30321-4-git-send-email-subashab@codeaurora.org>
From: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
Date: Tue, 15 Aug 2017 22:15:53 -0600
> +static int rmnet_unregister_real_device(struct net_device *dev)
> +{
> + int config_id = RMNET_LOCAL_LOGICAL_ENDPOINT;
> + struct rmnet_logical_ep_conf_s *epconfig_l;
> + struct rmnet_phys_ep_conf_s *config;
> +
> + ASSERT_RTNL();
> +
> + netdev_info(dev, "Removing device %s\n", dev->name);
> +
> + if (!rmnet_is_real_dev_registered(dev))
> + return -EINVAL;
> +
> + for (; config_id < RMNET_MAX_LOGICAL_EP; config_id++) {
This loop is so much harder to understand because you initialize
the loop index several lines above the for() statement. Just
initialize it here at the beginning of the for() loop and deal
with the fact that this will have to therefore be a multi-line
for() statement the best you can.
> +static int rmnet_set_egress_data_format(struct net_device *dev, u32 edf,
> + u16 agg_size, u16 agg_count)
Use a space instead of a TAB character before the "u32 edf," argument.
> +static int
> +__rmnet_set_logical_endpoint_config(struct net_device *dev,
> + int config_id,
> + struct rmnet_logical_ep_conf_s *epconfig)
> +{
> + struct rmnet_logical_ep_conf_s *epconfig_l;
> +
> + ASSERT_RTNL();
> +
> + epconfig_l = rmnet_get_logical_ep(dev, config_id);
> +
> + if (!epconfig_l || epconfig_l->refcount)
> + return -EINVAL;
> +
> + memcpy(epconfig_l, epconfig, sizeof(struct rmnet_logical_ep_conf_s));
> + if (config_id == RMNET_LOCAL_LOGICAL_ENDPOINT)
> + epconfig_l->mux_id = 0;
> + else
> + epconfig_l->mux_id = config_id;
> +
> + dev_hold(epconfig_l->egress_dev);
> + return 0;
> +}
This looks really messy.
One invariant that must hold is that if I try to take down netdev
"X", all resources holding a reference to X will be immediately
(or quickly) dropped when that request comes in via notifiers.
Will this happen properly for this egress_dev reference counting?
> +static int rmnet_config_notify_cb(struct notifier_block *nb,
> + unsigned long event, void *data)
> +{
> + struct net_device *dev = netdev_notifier_info_to_dev(data);
> +
> + if (!dev)
> + return NOTIFY_DONE;
> +
> + switch (event) {
> + case NETDEV_UNREGISTER_FINAL:
> + case NETDEV_UNREGISTER:
> + netdev_info(dev, "Kernel unregister\n");
> + rmnet_force_unassociate_device(dev);
> + break;
So I guess it happens here?
next prev parent reply other threads:[~2017-08-16 4:24 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-16 4:15 [PATCH net-next 0/3 v4] Add support for rmnet driver Subash Abhinov Kasiviswanathan
2017-08-16 4:15 ` [PATCH net-next 1/3 v4] net: ether: Add support for multiplexing and aggregation type Subash Abhinov Kasiviswanathan
2017-08-16 4:15 ` [PATCH net-next 2/3 v4] net: arp: Add support for raw IP device Subash Abhinov Kasiviswanathan
2017-08-16 4:52 ` Marcel Holtmann
2017-08-17 0:59 ` Subash Abhinov Kasiviswanathan
2017-08-16 4:15 ` [PATCH net-next 3/3 v4] drivers: net: ethernet: qualcomm: rmnet: Initial implementation Subash Abhinov Kasiviswanathan
2017-08-16 4:24 ` David Miller [this message]
2017-08-16 11:08 ` David Laight
2017-08-16 17:38 ` Subash Abhinov Kasiviswanathan
2017-08-16 11:30 ` Jiri Pirko
2017-08-16 17:46 ` Subash Abhinov Kasiviswanathan
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=20170815.212414.71937112074428743.davem@davemloft.net \
--to=davem@davemloft.net \
--cc=dcbw@redhat.com \
--cc=fengguang.wu@intel.com \
--cc=jiri@resnulli.us \
--cc=netdev@vger.kernel.org \
--cc=stephen@networkplumber.org \
--cc=subashab@codeaurora.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).