Re: [PATCH] can: usb: f81604: add Fintek F81604 support

From: Peter Hong
Date: Sun Mar 19 2023 - 23:01:08 EST


Hi,

Michal Swiatkowski 於 2023/3/17 下午 09:15 寫道:
On Fri, Mar 17, 2023 at 05:33:52PM +0800, Ji-Ze Hong (Peter Hong) wrote:

--- a/drivers/net/can/usb/Kconfig
+++ b/drivers/net/can/usb/Kconfig
@@ -147,4 +147,13 @@ config CAN_UCAN
from Theobroma Systems like the A31-ÂľQ7 and the RK3399-Q7
(https://www.theobroma-systems.com/rk3399-q7)
Hi,

I am not familiar with CAN, so only style review :)

Thanks for your reviews :D
+
+ if (status) {
+ dev_err(&dev->dev, "%s: reg: %x data: %x failed: %d\n",
+ __func__, reg, data, status);
+ }
The { and } aren't needed as inside if is only one line.

Could I remove the { and } when the logical line to split multi-line ?

+static int f81604_set_normal_mode(struct net_device *netdev)
+{
+ struct f81604_port_priv *priv = netdev_priv(netdev);
+ int status, i;
+ u8 mod_reg_val = 0x00;
RCT, mod_reg should be one line above

What mean about "RCT"?

Is this section should change to above like ??

    u8 mod_reg_val;
    ...

    mod_reg_val = 0;
+static int f81604_register_urbs(struct net_device *netdev)
+{
+ struct f81604_port_priv *priv = netdev_priv(netdev);
+ int status, i;
+
+ for (i = 0; i < F81604_MAX_RX_URBS; ++i) {
+ status = usb_submit_urb(priv->read_urb[i], GFP_KERNEL);
+ if (status) {
+ netdev_warn(netdev, "%s: submit rx urb failed: %d\n",
+ __func__, status);
+ return status;
Don't know usb subsytem, but shouldn't previously submitted urb be
killed?

Yes, I had made kill operations in
    f81604_start()
        -> f81604_unregister_urbs()

+static void f81604_process_rx_packet(struct urb *urb)
+{
+ struct net_device_stats *stats;
+ struct net_device *netdev;
+ struct can_frame *cf;
+ struct sk_buff *skb;
+ u8 *data;
+ u8 *ptr;
+ int i;
+ int count;
RCT

+
+ netdev = urb->context;
+ stats = &netdev->stats;
+ data = urb->transfer_buffer;
netdev and data can be set in declaration

why only netdev & data ?? Could I set netdev, stats & data in declaration ?


+/* Called by the usb core when driver is unloaded or device is removed */
+static void f81604_disconnect(struct usb_interface *intf)
+{
+ struct f81604_priv *priv = usb_get_intfdata(intf);
+ int i;
+
+ for (i = 0; i < F81604_MAX_DEV; ++i) {
+ if (!priv->netdev[i])
+ continue;
+
+ unregister_netdev(priv->netdev[i]);
+ free_candev(priv->netdev[i]);
+ }
What about closing USB device? It is called brefore disconnect or it
should be done here?

When candev close in f81604_close(), It will call f81604_set_reset_mode() to
make candev to reset mode.

Thanks