if (err) {
                netdev_err(dev->netdev, "getting serial failure: %d\n", err);
        } else if (serial_number) {
-               u32 tmp32;
+               __le32 tmp32;
 
                memcpy(&tmp32, args, 4);
                *serial_number = le32_to_cpu(tmp32);
  */
 static int pcan_usb_update_ts(struct pcan_usb_msg_context *mc)
 {
-       u16 tmp16;
+       __le16 tmp16;
 
        if ((mc->ptr+2) > mc->end)
                return -EINVAL;
 {
        /* only 1st packet supplies a word timestamp */
        if (first_packet) {
-               u16 tmp16;
+               __le16 tmp16;
 
                if ((mc->ptr + 2) > mc->end)
                        return -EINVAL;
                return -ENOMEM;
 
        if (status_len & PCAN_USB_STATUSLEN_EXT_ID) {
-               u32 tmp32;
+               __le32 tmp32;
 
                if ((mc->ptr + 4) > mc->end)
                        goto decode_failed;
                memcpy(&tmp32, mc->ptr, 4);
                mc->ptr += 4;
 
-               cf->can_id = le32_to_cpu(tmp32 >> 3) | CAN_EFF_FLAG;
+               cf->can_id = (le32_to_cpu(tmp32) >> 3) | CAN_EFF_FLAG;
        } else {
-               u16 tmp16;
+               __le16 tmp16;
 
                if ((mc->ptr + 2) > mc->end)
                        goto decode_failed;
                memcpy(&tmp16, mc->ptr, 2);
                mc->ptr += 2;
 
-               cf->can_id = le16_to_cpu(tmp16 >> 5);
+               cf->can_id = le16_to_cpu(tmp16) >> 5;
        }
 
        cf->can_dlc = get_can_dlc(rec_len);
 
                          const struct usb_device_id *id)
 {
        struct usb_device *usb_dev = interface_to_usbdev(intf);
+       const u16 usb_id_product = le16_to_cpu(usb_dev->descriptor.idProduct);
        struct peak_usb_adapter *peak_usb_adapter, **pp;
        int i, err = -ENOMEM;
 
 
        /* get corresponding PCAN-USB adapter */
        for (pp = peak_usb_adapters_list; *pp; pp++)
-               if ((*pp)->device_id == usb_dev->descriptor.idProduct)
+               if ((*pp)->device_id == usb_id_product)
                        break;
 
        peak_usb_adapter = *pp;
 
        int rec_buffer_size;
        int rec_buffer_len;
        union {
-               u16 *rec_cnt_rd;
-               u32 *rec_cnt;
+               __le16 *rec_cnt_rd;
+               __le32 *rec_cnt;
                u8 *rec_buffer;
        } u;
 };
                *pc++ = va_arg(ap, int);
                *pc++ = va_arg(ap, int);
                *pc++ = va_arg(ap, int);
-               *(u32 *)pc = cpu_to_le32(va_arg(ap, u32));
+               *(__le32 *)pc = cpu_to_le32(va_arg(ap, u32));
                pc += 4;
                memcpy(pc, va_arg(ap, int *), i);
                pc += i;
        case PCAN_USBPRO_GETDEVID:
                *pc++ = va_arg(ap, int);
                pc += 2;
-               *(u32 *)pc = cpu_to_le32(va_arg(ap, u32));
+               *(__le32 *)pc = cpu_to_le32(va_arg(ap, u32));
                pc += 4;
                break;
 
        case PCAN_USBPRO_SETBUSACT:
        case PCAN_USBPRO_SETSILENT:
                *pc++ = va_arg(ap, int);
-               *(u16 *)pc = cpu_to_le16(va_arg(ap, int));
+               *(__le16 *)pc = cpu_to_le16(va_arg(ap, int));
                pc += 2;
                break;
 
        case PCAN_USBPRO_SETLED:
                *pc++ = va_arg(ap, int);
-               *(u16 *)pc = cpu_to_le16(va_arg(ap, int));
+               *(__le16 *)pc = cpu_to_le16(va_arg(ap, int));
                pc += 2;
-               *(u32 *)pc = cpu_to_le32(va_arg(ap, u32));
+               *(__le32 *)pc = cpu_to_le32(va_arg(ap, u32));
                pc += 4;
                break;
 
        case PCAN_USBPRO_SETTS:
                pc++;
-               *(u16 *)pc = cpu_to_le16(va_arg(ap, int));
+               *(__le16 *)pc = cpu_to_le16(va_arg(ap, int));
                pc += 2;
                break;
 
 
        len = pc - pm->rec_ptr;
        if (len > 0) {
-               *pm->u.rec_cnt = cpu_to_le32(*pm->u.rec_cnt+1);
+               *pm->u.rec_cnt = cpu_to_le32(le32_to_cpu(*pm->u.rec_cnt) + 1);
                *pm->rec_ptr = id;
 
                pm->rec_ptr = pc;
 static int pcan_usb_pro_handle_error(struct pcan_usb_pro_interface *usb_if,
                                     struct pcan_usb_pro_rxstatus *er)
 {
-       const u32 raw_status = le32_to_cpu(er->status);
+       const u16 raw_status = le16_to_cpu(er->status);
        const unsigned int ctrl_idx = (er->channel >> 4) & 0x0f;
        struct peak_usb_device *dev = usb_if->dev[ctrl_idx];
        struct net_device *netdev = dev->netdev;
 
 
 /* PCAN_USBPRO_INFO_BL vendor request record type */
 struct __packed pcan_usb_pro_blinfo {
-       u32 ctrl_type;
+       __le32 ctrl_type;
        u8  version[4];
        u8  day;
        u8  month;
        u8  year;
        u8  dummy;
-       u32 serial_num_hi;
-       u32 serial_num_lo;
-       u32 hw_type;
-       u32 hw_rev;
+       __le32 serial_num_hi;
+       __le32 serial_num_lo;
+       __le32 hw_type;
+       __le32 hw_rev;
 };
 
 /* PCAN_USBPRO_INFO_FW vendor request record type */
 struct __packed pcan_usb_pro_fwinfo {
-       u32 ctrl_type;
+       __le32 ctrl_type;
        u8  version[4];
        u8  day;
        u8  month;
        u8  year;
        u8  dummy;
-       u32 fw_type;
+       __le32 fw_type;
 };
 
 /*
 struct __packed pcan_usb_pro_btr {
        u8  data_type;
        u8  channel;
-       u16 dummy;
-       u32 CCBT;
+       __le16 dummy;
+       __le32 CCBT;
 };
 
 struct __packed pcan_usb_pro_busact {
        u8  data_type;
        u8  channel;
-       u16 onoff;
+       __le16 onoff;
 };
 
 struct __packed pcan_usb_pro_silent {
        u8  data_type;
        u8  channel;
-       u16 onoff;
+       __le16 onoff;
 };
 
 struct __packed pcan_usb_pro_filter {
        u8  data_type;
        u8  dummy;
-       u16 filter_mode;
+       __le16 filter_mode;
 };
 
 struct __packed pcan_usb_pro_setts {
        u8  data_type;
        u8  dummy;
-       u16 mode;
+       __le16 mode;
 };
 
 struct __packed pcan_usb_pro_devid {
        u8  data_type;
        u8  channel;
-       u16 dummy;
-       u32 serial_num;
+       __le16 dummy;
+       __le32 serial_num;
 };
 
 struct __packed pcan_usb_pro_setled {
        u8  data_type;
        u8  channel;
-       u16 mode;
-       u32 timeout;
+       __le16 mode;
+       __le32 timeout;
 };
 
 struct __packed pcan_usb_pro_rxmsg {
        u8  client;
        u8  flags;
        u8  len;
-       u32 ts32;
-       u32 id;
+       __le32 ts32;
+       __le32 id;
 
        u8  data[8];
 };
 struct __packed pcan_usb_pro_rxstatus {
        u8  data_type;
        u8  channel;
-       u16 status;
-       u32 ts32;
-       u32 err_frm;
+       __le16 status;
+       __le32 ts32;
+       __le32 err_frm;
 };
 
 struct __packed pcan_usb_pro_rxts {
        u8  data_type;
        u8  dummy[3];
-       u32 ts64[2];
+       __le32 ts64[2];
 };
 
 struct __packed pcan_usb_pro_txmsg {
        u8  client;
        u8  flags;
        u8  len;
-       u32 id;
+       __le32 id;
        u8  data[8];
 };