Re: [PATCH v2 4/7] can: Add Nuvoton NCT6694 CAN support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dear Vincent,

Vincent Mailhol <mailhol.vincent@xxxxxxxxxx> 於 2024年11月22日 週五 下午4:25寫道:
> > > > +static int nct6694_canfd_start(struct net_device *ndev)
> > > > +{
> > > > +     struct nct6694_canfd_priv *priv = netdev_priv(ndev);
> > > > +     struct nct6694_can_cmd0 *buf = (struct nct6694_can_cmd0 *)priv->tx_buf;
> > >
> > > Give a more memorable name to buf, for example: bittiming_cmd.
> > >
> >
> > Got it. So, every buf that uses a command must be renamed similarly, right?
>
> Yes. Note that you can use different names if you have a better idea.
> It is just that generic names like "buf" or "cmd1" do not tell me what
> this variable actually is. On the contrary, bittiming_cmd tells me
> that this variable holds the payload for the command to set the device
> bittiming. This way, suddenly, the code becomes easier to read and
> understand. As long as your naming conveys this kind of information,
> then I am fine with whatever you choose, just avoid the "buf" or
> "cmd1" names.
>

Understood. I will make the modifications in v3.

> > > > +     const struct can_bittiming *n_bt = &priv->can.bittiming;
> > > > +     const struct can_bittiming *d_bt = &priv->can.data_bittiming;
...
> > > > +static netdev_tx_t nct6694_canfd_start_xmit(struct sk_buff *skb,
> > > > +                                         struct net_device *ndev)
> > > > +{
> > > > +     struct nct6694_canfd_priv *priv = netdev_priv(ndev);
> > > > +
> > > > +     if (priv->tx_skb || priv->tx_busy) {
> > > > +             netdev_err(ndev, "hard_xmit called while tx busy\n");
> > > > +             return NETDEV_TX_BUSY;
> > > > +     }
> > > > +
> > > > +     if (can_dev_dropped_skb(ndev, skb))
> > > > +             return NETDEV_TX_OK;
> > > > +
> > > > +     netif_stop_queue(ndev);
> > >
> > > Here, you are inconditionally stopping the queue. Does it mean that your
> > > device is only able to manage one CAN frame at the time?
> > >
> >
> > Yes, we designed it to manage a single CAN frame, so we stop the queue
> > here until a TX event is received to wake queue.
>
> Do you mean that the device is designed to manage only one single CAN
> frame or is the driver designed to only manage one single CAN frame?
> If the device is capable of handling several CAN frames, your driver
> should take advantage of this. Else the driver will slow down the
> communication a lot whenever packets start to accumulate in the TX
> queue.
>

I understand, but our device currently supports handling only one CAN frame.

Best regards,
Ming





[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux