From: Andrew Lunn <andrew@lunn.ch> To: Maxime Chevallier <maxime.chevallier@bootlin.com> Cc: davem@davemloft.net, Rob Herring <robh+dt@kernel.org>, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, thomas.petazzoni@bootlin.com, Florian Fainelli <f.fainelli@gmail.com>, Heiner Kallweit <hkallweit1@gmail.com>, Russell King <linux@armlinux.org.uk>, linux-arm-kernel@lists.infradead.org, Vladimir Oltean <vladimir.oltean@nxp.com>, Luka Perkov <luka.perkov@sartura.hr>, Robert Marko <robert.marko@sartura.hr> Subject: Re: [PATCH net-next v2 1/5] net: ipqess: introduce the Qualcomm IPQESS driver Date: Mon, 16 May 2022 04:51:03 +0200 [thread overview] Message-ID: <YoG8F8V0Z+7hz/jw@lunn.ch> (raw) In-Reply-To: <20220514150656.122108-2-maxime.chevallier@bootlin.com> > +static int ipqess_tx_ring_alloc(struct ipqess *ess) > +{ > + struct device *dev = &ess->pdev->dev; > + int i; > + > + for (i = 0; i < IPQESS_NETDEV_QUEUES; i++) { > + struct ipqess_tx_ring *tx_ring = &ess->tx_ring[i]; > + size_t size; > + u32 idx; > + > + tx_ring->ess = ess; > + tx_ring->ring_id = i; > + tx_ring->idx = i * 4; > + tx_ring->count = IPQESS_TX_RING_SIZE; > + tx_ring->nq = netdev_get_tx_queue(ess->netdev, i); > + > + size = sizeof(struct ipqess_buf) * IPQESS_TX_RING_SIZE; > + tx_ring->buf = devm_kzalloc(dev, size, GFP_KERNEL); > + if (!tx_ring->buf) { > + netdev_err(ess->netdev, "buffer alloc of tx ring failed"); > + return -ENOMEM; > + } kzalloc() is pretty loud when there is no memory. So you see patches removing such warning messages. > +static int ipqess_rx_napi(struct napi_struct *napi, int budget) > +{ > + struct ipqess_rx_ring *rx_ring = container_of(napi, struct ipqess_rx_ring, > + napi_rx); > + struct ipqess *ess = rx_ring->ess; > + u32 rx_mask = BIT(rx_ring->idx); > + int remain_budget = budget; > + int rx_done; > + u32 status; > + > +poll_again: > + ipqess_w32(ess, IPQESS_REG_RX_ISR, rx_mask); > + rx_done = ipqess_rx_poll(rx_ring, remain_budget); > + > + if (rx_done == remain_budget) > + return budget; > + > + status = ipqess_r32(ess, IPQESS_REG_RX_ISR); > + if (status & rx_mask) { > + remain_budget -= rx_done; > + goto poll_again; > + } Could this be turned into a do while() loop? > +static void ipqess_irq_enable(struct ipqess *ess) > +{ > + int i; > + > + ipqess_w32(ess, IPQESS_REG_RX_ISR, 0xff); > + ipqess_w32(ess, IPQESS_REG_TX_ISR, 0xffff); > + for (i = 0; i < IPQESS_NETDEV_QUEUES; i++) { > + ipqess_w32(ess, IPQESS_REG_RX_INT_MASK_Q(ess->rx_ring[i].idx), 1); > + ipqess_w32(ess, IPQESS_REG_TX_INT_MASK_Q(ess->tx_ring[i].idx), 1); > + } > +} > + > +static void ipqess_irq_disable(struct ipqess *ess) > +{ > + int i; > + > + for (i = 0; i < IPQESS_NETDEV_QUEUES; i++) { > + ipqess_w32(ess, IPQESS_REG_RX_INT_MASK_Q(ess->rx_ring[i].idx), 0); > + ipqess_w32(ess, IPQESS_REG_TX_INT_MASK_Q(ess->tx_ring[i].idx), 0); > + } > +} Enable and disable are not symmetric? > +static inline void ipqess_kick_tx(struct ipqess_tx_ring *tx_ring) No inline functions please in .c files. Let the compiler decide. Andrew
WARNING: multiple messages have this Message-ID (diff)
From: Andrew Lunn <andrew@lunn.ch> To: Maxime Chevallier <maxime.chevallier@bootlin.com> Cc: davem@davemloft.net, Rob Herring <robh+dt@kernel.org>, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, thomas.petazzoni@bootlin.com, Florian Fainelli <f.fainelli@gmail.com>, Heiner Kallweit <hkallweit1@gmail.com>, Russell King <linux@armlinux.org.uk>, linux-arm-kernel@lists.infradead.org, Vladimir Oltean <vladimir.oltean@nxp.com>, Luka Perkov <luka.perkov@sartura.hr>, Robert Marko <robert.marko@sartura.hr> Subject: Re: [PATCH net-next v2 1/5] net: ipqess: introduce the Qualcomm IPQESS driver Date: Mon, 16 May 2022 04:51:03 +0200 [thread overview] Message-ID: <YoG8F8V0Z+7hz/jw@lunn.ch> (raw) In-Reply-To: <20220514150656.122108-2-maxime.chevallier@bootlin.com> > +static int ipqess_tx_ring_alloc(struct ipqess *ess) > +{ > + struct device *dev = &ess->pdev->dev; > + int i; > + > + for (i = 0; i < IPQESS_NETDEV_QUEUES; i++) { > + struct ipqess_tx_ring *tx_ring = &ess->tx_ring[i]; > + size_t size; > + u32 idx; > + > + tx_ring->ess = ess; > + tx_ring->ring_id = i; > + tx_ring->idx = i * 4; > + tx_ring->count = IPQESS_TX_RING_SIZE; > + tx_ring->nq = netdev_get_tx_queue(ess->netdev, i); > + > + size = sizeof(struct ipqess_buf) * IPQESS_TX_RING_SIZE; > + tx_ring->buf = devm_kzalloc(dev, size, GFP_KERNEL); > + if (!tx_ring->buf) { > + netdev_err(ess->netdev, "buffer alloc of tx ring failed"); > + return -ENOMEM; > + } kzalloc() is pretty loud when there is no memory. So you see patches removing such warning messages. > +static int ipqess_rx_napi(struct napi_struct *napi, int budget) > +{ > + struct ipqess_rx_ring *rx_ring = container_of(napi, struct ipqess_rx_ring, > + napi_rx); > + struct ipqess *ess = rx_ring->ess; > + u32 rx_mask = BIT(rx_ring->idx); > + int remain_budget = budget; > + int rx_done; > + u32 status; > + > +poll_again: > + ipqess_w32(ess, IPQESS_REG_RX_ISR, rx_mask); > + rx_done = ipqess_rx_poll(rx_ring, remain_budget); > + > + if (rx_done == remain_budget) > + return budget; > + > + status = ipqess_r32(ess, IPQESS_REG_RX_ISR); > + if (status & rx_mask) { > + remain_budget -= rx_done; > + goto poll_again; > + } Could this be turned into a do while() loop? > +static void ipqess_irq_enable(struct ipqess *ess) > +{ > + int i; > + > + ipqess_w32(ess, IPQESS_REG_RX_ISR, 0xff); > + ipqess_w32(ess, IPQESS_REG_TX_ISR, 0xffff); > + for (i = 0; i < IPQESS_NETDEV_QUEUES; i++) { > + ipqess_w32(ess, IPQESS_REG_RX_INT_MASK_Q(ess->rx_ring[i].idx), 1); > + ipqess_w32(ess, IPQESS_REG_TX_INT_MASK_Q(ess->tx_ring[i].idx), 1); > + } > +} > + > +static void ipqess_irq_disable(struct ipqess *ess) > +{ > + int i; > + > + for (i = 0; i < IPQESS_NETDEV_QUEUES; i++) { > + ipqess_w32(ess, IPQESS_REG_RX_INT_MASK_Q(ess->rx_ring[i].idx), 0); > + ipqess_w32(ess, IPQESS_REG_TX_INT_MASK_Q(ess->tx_ring[i].idx), 0); > + } > +} Enable and disable are not symmetric? > +static inline void ipqess_kick_tx(struct ipqess_tx_ring *tx_ring) No inline functions please in .c files. Let the compiler decide. Andrew _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2022-05-16 2:51 UTC|newest] Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-05-14 15:06 [PATCH net-next v2 0/5] net: ipqess: introduce Qualcomm IPQESS driver Maxime Chevallier 2022-05-14 15:06 ` Maxime Chevallier 2022-05-14 15:06 ` [PATCH net-next v2 1/5] net: ipqess: introduce the " Maxime Chevallier 2022-05-14 15:06 ` Maxime Chevallier 2022-05-14 17:18 ` Russell King (Oracle) 2022-05-14 17:18 ` Russell King (Oracle) 2022-05-17 7:09 ` Maxime Chevallier 2022-05-17 7:09 ` Maxime Chevallier 2022-05-14 20:44 ` Vladimir Oltean 2022-05-14 20:44 ` Vladimir Oltean 2022-05-17 7:11 ` Maxime Chevallier 2022-05-17 7:11 ` Maxime Chevallier 2022-05-16 2:51 ` Andrew Lunn [this message] 2022-05-16 2:51 ` Andrew Lunn 2022-05-17 7:13 ` Maxime Chevallier 2022-05-17 7:13 ` Maxime Chevallier 2022-05-17 21:03 ` Christophe JAILLET 2022-05-17 21:03 ` Christophe JAILLET 2022-05-14 15:06 ` [PATCH net-next v2 2/5] net: dsa: add out-of-band tagging protocol Maxime Chevallier 2022-05-14 15:06 ` Maxime Chevallier 2022-05-14 16:33 ` Florian Fainelli 2022-05-14 16:33 ` Florian Fainelli 2022-05-17 7:06 ` Maxime Chevallier 2022-05-17 7:06 ` Maxime Chevallier 2022-05-14 22:40 ` Vladimir Oltean 2022-05-14 22:40 ` Vladimir Oltean 2022-05-17 7:01 ` Maxime Chevallier 2022-05-17 7:01 ` Maxime Chevallier 2022-05-19 14:52 ` Vladimir Oltean 2022-05-19 14:52 ` Vladimir Oltean 2022-05-19 17:11 ` Florian Fainelli 2022-05-19 17:11 ` Florian Fainelli 2022-05-19 17:34 ` Vladimir Oltean 2022-05-19 17:34 ` Vladimir Oltean 2022-05-16 19:20 ` Jakub Kicinski 2022-05-16 19:20 ` Jakub Kicinski 2022-05-17 6:53 ` Maxime Chevallier 2022-05-17 6:53 ` Maxime Chevallier 2022-05-17 20:58 ` Jakub Kicinski 2022-05-17 20:58 ` Jakub Kicinski 2022-05-14 15:06 ` [PATCH net-next v2 3/5] net: ipqess: Add out-of-band DSA tagging support Maxime Chevallier 2022-05-14 15:06 ` Maxime Chevallier 2022-05-14 15:06 ` [PATCH net-next v2 4/5] net: dt-bindings: Introduce the Qualcomm IPQESS Ethernet controller Maxime Chevallier 2022-05-14 15:06 ` Maxime Chevallier 2022-05-18 0:52 ` Rob Herring 2022-05-18 0:52 ` Rob Herring 2022-05-14 15:06 ` [PATCH net-next v2 5/5] ARM: dts: qcom: ipq4019: Add description for the " Maxime Chevallier 2022-05-14 15:06 ` Maxime Chevallier
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=YoG8F8V0Z+7hz/jw@lunn.ch \ --to=andrew@lunn.ch \ --cc=davem@davemloft.net \ --cc=devicetree@vger.kernel.org \ --cc=f.fainelli@gmail.com \ --cc=hkallweit1@gmail.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux@armlinux.org.uk \ --cc=luka.perkov@sartura.hr \ --cc=maxime.chevallier@bootlin.com \ --cc=netdev@vger.kernel.org \ --cc=robert.marko@sartura.hr \ --cc=robh+dt@kernel.org \ --cc=thomas.petazzoni@bootlin.com \ --cc=vladimir.oltean@nxp.com \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.