Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp4621812pxb; Tue, 25 Jan 2022 14:45:26 -0800 (PST) X-Google-Smtp-Source: ABdhPJx8TIS35mX23eJBVx7hQQXpmbtyUAoTTHlT0xI2vljYOKbiIv4cLfGoowj5+OA5Yq6Lsml6 X-Received: by 2002:a17:906:58c6:: with SMTP id e6mr8704879ejs.123.1643150725867; Tue, 25 Jan 2022 14:45:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643150725; cv=none; d=google.com; s=arc-20160816; b=vdnF+74ipJFWBgF42bRG4MQPVZRTUrhqUPJhcaOoYLyUEh40+5fXqQe3kbBci17Fgd gDAF4u39CMHwiQwG3eNNDtoSHjGjjX1gsqmoBSgmcATdOt99IrSx5ju6lzF9+fX/Mmng Di0baS8h7o3YzEKCQHWtUfYT04iAf3OZHelexcKSfbiJV2jrYAQhFTX9NOuvkcywqsCr PqnW7U8aSF8vi2iKwCs2i7rn/yq/Q82LW4NWQAYbTEWWYJnMK4VqbPXs71hzaxzj3L+A Nl2ZeKNcNJ+feTkHg1UkOaVnagNKw/Bj/+C6kn2cbwZK7i/rf+dKFqpoNDNLmTiMQ1jQ Lynw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=crjTrd9M4g5zqsW74dFKakrug7DzFaLfnMg4MjXrRx8=; b=c1GHQ2usRrHAh6qais+QoP1x/upCrk6GriclbwaLLmNYi5Y7y8byt9qvNalAxZiJH5 XqZbKbscxXP4MheoLNbWeRnhVRVtqSewBaQt4iio9N/oIlpcFIo4IsCBozCYuWXnY14V 8hrkyi1Q8mdxjm564JFqgw/Y1vZc5PcGSbXwc2VD1wQLrILy5YZVDrCeJEDRciGRJ5jX rsFm+W1ZPqDz5Q+tbM3HTttLHibkMrEP7C7VjI4uhiAu49+lybygGpg/R7lj9VuDlR/T eIdMlBFDqKCqlAF05vgBk6SS5Ae4E6bAd8tpI2xpd8uYa9UBKQxOyHPCDTAfjB/pGVlP o8XQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=OkeHIVkU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id 9si10764901ejd.50.2022.01.25.14.45.00; Tue, 25 Jan 2022 14:45:25 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=OkeHIVkU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348625AbiAYPAK (ORCPT + 99 others); Tue, 25 Jan 2022 10:00:10 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43798 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1389535AbiAYOzE (ORCPT ); Tue, 25 Jan 2022 09:55:04 -0500 Received: from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com [IPv6:2a00:1450:4864:20::52d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 14D45C06177E; Tue, 25 Jan 2022 06:55:03 -0800 (PST) Received: by mail-ed1-x52d.google.com with SMTP id j2so63483875edj.8; Tue, 25 Jan 2022 06:55:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=crjTrd9M4g5zqsW74dFKakrug7DzFaLfnMg4MjXrRx8=; b=OkeHIVkUI+kDuOi08W9mmLxcCt4SssENj2H86BPf4gX41g9Ft6F8AOpLtj9NN2BTNx u0T/7jjXF/shLXDkYHcEltqcYgrm8cl0UYpgVuDEroTLv4VV2uAPyQR3JPZO+ffauw2d eKIGdbMwrAEJRWyzckIbM78Yh3LIrGEde5qWjdxiriMGvb6ycQNuS1MBlylV5K8TaKlj xcg/BK7ZT2MY1VE/sNoC1IPD88QfSrl8BlFbWAsi3A7iBwrFqoqILwctO09evMIS5qVn x1JMoS2DtiB7tHpy41Lug+NrFYV0sWO193RaYNHCt3dVbYrMU2TUpEgkvUF7k7GHAx2a LiUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=crjTrd9M4g5zqsW74dFKakrug7DzFaLfnMg4MjXrRx8=; b=B0BXVkANIM8TaYJmGetj5DFx+g8dOpJ88WBYmW9RS+FifeU1XDD8cIgsyKOnq5+xOJ PEJHgue18zHubDDlkGQTc+C7NHSrU+nZ14T9Yi9+6RkNAxc2Sr0rIq8xC7ByOACwt99E aXmlfMHNcGUkSGDJjCCzzVEJefbEcqsk7S2uotkPZVfV0GrvdL63sfPzzP2y6ucbEhU4 OK5bjdpXZd8hc7PgfXlJiJgNUm7GzpF7Ip+/YhBSn3C3h0wayd6bxHTr4CjDZGoAn99q FD4rO+GJKJ48NvhwHIQPtSAZKbul+fdnSuehr7f6ZECHlna6eZNLcH76+FPjXwB4MGVT buKA== X-Gm-Message-State: AOAM530f5ofg6mXQZIg/TUgxkV/1pnjpPjiZyyn8vPnR3QAYOG689yID bfApB6rnOJ5+M0f+D1l7ddo= X-Received: by 2002:a17:907:60cd:: with SMTP id hv13mr1235585ejc.368.1643122501489; Tue, 25 Jan 2022 06:55:01 -0800 (PST) Received: from skbuf ([188.27.184.105]) by smtp.gmail.com with ESMTPSA id v3sm7732423edy.21.2022.01.25.06.55.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Jan 2022 06:55:00 -0800 (PST) Date: Tue, 25 Jan 2022 16:54:59 +0200 From: Vladimir Oltean To: Ansuel Smith Cc: Andrew Lunn , Vivien Didelot , Florian Fainelli , "David S. Miller" , Jakub Kicinski , linux-kernel@vger.kernel.org, netdev@vger.kernel.org Subject: Re: [RFC PATCH v7 10/16] net: dsa: qca8k: add support for mgmt read/write in Ethernet packet Message-ID: <20220125145459.i5jedxm225q5n5aq@skbuf> References: <20220123013337.20945-1-ansuelsmth@gmail.com> <20220123013337.20945-11-ansuelsmth@gmail.com> <20220124163236.yrrjn32jylc2kx6o@skbuf> <61eed861.1c69fb81.d14ad.62cf@mx.google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <61eed861.1c69fb81.d14ad.62cf@mx.google.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Jan 24, 2022 at 05:48:32PM +0100, Ansuel Smith wrote: > > > +static int qca8k_read_eth(struct qca8k_priv *priv, u32 reg, u32 *val) > > > +{ > > > + struct qca8k_mgmt_hdr_data *mgmt_hdr_data = &priv->mgmt_hdr_data; > > > + struct sk_buff *skb; > > > + bool ack; > > > + int ret; > > > + > > > + skb = qca8k_alloc_mdio_header(MDIO_READ, reg, NULL, 200, QCA8K_ETHERNET_MDIO_PRIORITY); > > > + if (!skb) > > > + return -ENOMEM; > > > + > > > + mutex_lock(&mgmt_hdr_data->mutex); > > > + > > > + /* Recheck mgmt_master under lock to make sure it's operational */ > > > + if (!priv->mgmt_master) > > > > mutex_unlock and kfree_skb > > > > Also, why "recheck under lock"? Why not check just under lock? > > > > Tell me if the logic is wrong. > We use the mgmt_master (outside lock) to understand if the eth mgmt is > available. Then to make sure it's actually usable when the operation is > actually done (and to prevent any panic if the master is dropped or for > whatever reason mgmt_master is not available anymore) we do the check > another time under lock. > > It's really just to save extra lock when mgmt_master is not available. > The check under lock is to handle case when the mgmt_master is removed > while a mgmt eth is pending (corner case but still worth checking). > > If you have suggestions on how to handle this corner case without > introducing an extra lock in the read/write function, I would really > appreaciate it. > Now that I think about it, considering eth mgmt will be the main way and > mdio as a fallback... wonder if the extra lock is acceptable anyway. > In the near future ipq40xx will use qca8k, but will have his own regmap > functions so we they won't be affected by these extra locking. > > Don't know what is worst. Extra locking when mgmt_master is not > avaialable or double check. (I assume for a cleaner code the extra lock > is preferred) I don't think there's a hidden bug in the code (other than the one I mentioned, which is that you don't unlock or free resources at all on the error path, which is quite severe), but also, I don't know if this is such a performance-sensitive operation to justify a gratuitous "optimization". As you mention, if the Ethernet management will be the main I/O access method, then the common case will take a single lock. You aren't really saving much.