lkml.org 
[lkml]   [2016]   [Nov]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH 1/6] net: ethernet: ti: netcp: add support of cpts
    From
    Date


    On 11/30/2016 03:44 AM, Richard Cochran wrote:
    > On Mon, Nov 28, 2016 at 05:04:23PM -0600, Grygorii Strashko wrote:
    >> @@ -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.
    >
    >> + struct cpts *cpts;
    >> };
    >
    > This ++ and -- business ...
    >
    >> +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

    \
     
     \ /
      Last update: 2016-11-30 18:32    [W:2.859 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site