Re: [PATCH 1/6] net: ethernet: ti: netcp: add support of cpts
From: Grygorii Strashko <hidden>
Date: 2016-11-30 17:32:08
Also in:
linux-devicetree, linux-omap, lkml
On 11/30/2016 03:44 AM, Richard Cochran wrote:
On Mon, Nov 28, 2016 at 05:04:23PM -0600, Grygorii Strashko wrote:quoted
@@ -678,6 +744,9 @@ struct gbe_priv { int num_et_stats; /* Lock for updating the hwstats */ spinlock_t hw_stats_lock; + + int cpts_registered;The usage of this counter is racy.quoted
+ struct cpts *cpts; };This ++ and -- business ...quoted
+static void gbe_register_cpts(struct gbe_priv *gbe_dev) +{ + if (!gbe_dev->cpts) + return; + + if (gbe_dev->cpts_registered > 0) + goto done; + + if (cpts_register(gbe_dev->cpts)) { + dev_err(gbe_dev->dev, "error registering cpts device\n"); + return; + } + +done: + ++gbe_dev->cpts_registered; +} + +static void gbe_unregister_cpts(struct gbe_priv *gbe_dev) +{ + if (!gbe_dev->cpts || (gbe_dev->cpts_registered <= 0)) + return; + + if (--gbe_dev->cpts_registered) + return; + + cpts_unregister(gbe_dev->cpts); +}is invoked from your open() and close() methods, but those methods are not serialized among multiple ports.
ok. Seems my assumption that ndo_open/ndo_close serialized by rtnl_lock is incorrect. Right? net_device_ops.ndo_open -> netcp_ndo_open gbe_open gbe_register_cpts -- regards, -grygorii -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html