Lines Matching +full:vp +full:- +full:p

1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * Net1080 based USB host-to-host cables
4 * Copyright (C) 2000-2005 by David Brownell
25 * (Sept 2004: End-of-life announcement has been sent.)
35 * - nc_header
36 * - Ethernet header (14 bytes)
37 * - payload
38 * - (optional padding byte, if needed so length becomes odd)
39 * - nc_trailer
41 * This framing is to be avoided for non-NetChip devices.
51 // __le16 vendorId; // from usb-if
135 u16 *vp = kmalloc(sizeof (u16));
137 if (!vp)
140 netdev_dbg(dev->net, "registers:\n");
150 retval = nc_register_read(dev, reg, vp);
152 netdev_dbg(dev->net, "reg [0x%x] ==> error %d\n",
155 netdev_dbg(dev->net, "reg [0x%x] = 0x%x\n", reg, *vp);
157 kfree(vp);
162 /*-------------------------------------------------------------------------*/
169 // bits 15-13 reserved, r/o
175 // bits 7-4 reserved, r/o
183 netif_dbg(dev, link, dev->net, in nc_dump_usbctl()
184 "net1080 %s-%s usbctl 0x%x:%s%s%s%s%s; this%s%s; other%s%s; r/o 0x%x\n", in nc_dump_usbctl()
185 dev->udev->bus->bus_name, dev->udev->devpath, in nc_dump_usbctl()
202 /*-------------------------------------------------------------------------*/
226 netif_dbg(dev, link, dev->net, in nc_dump_status()
227 "net1080 %s-%s status 0x%x: this (%c) PKT=%d%s%s%s; other PKT=%d%s%s%s; unspec 0x%x\n", in nc_dump_status()
228 dev->udev->bus->bus_name, dev->udev->devpath, in nc_dump_status()
248 /*-------------------------------------------------------------------------*/
257 /*-------------------------------------------------------------------------*/
262 u16 vp; in net1080_reset() local
267 if ((retval = nc_register_read(dev, REG_STATUS, &vp)) < 0) { in net1080_reset()
268 netdev_dbg(dev->net, "can't read %s-%s status: %d\n", in net1080_reset()
269 dev->udev->bus->bus_name, dev->udev->devpath, retval); in net1080_reset()
272 status = vp; in net1080_reset()
275 if ((retval = nc_register_read(dev, REG_USBCTL, &vp)) < 0) { in net1080_reset()
276 netdev_dbg(dev->net, "can't read USBCTL, %d\n", retval); in net1080_reset()
279 usbctl = vp; in net1080_reset()
285 if ((retval = nc_register_read(dev, REG_TTL, &vp)) < 0) { in net1080_reset()
286 netdev_dbg(dev->net, "can't read TTL, %d\n", retval); in net1080_reset()
289 ttl = vp; in net1080_reset()
293 netdev_dbg(dev->net, "assigned TTL, %d ms\n", NC_READ_TTL_MS); in net1080_reset()
295 netif_info(dev, link, dev->net, "port %c, peer %sconnected\n", in net1080_reset()
308 u16 vp; in net1080_check_connect() local
310 retval = nc_register_read(dev, REG_STATUS, &vp); in net1080_check_connect()
311 status = vp; in net1080_check_connect()
313 netdev_dbg(dev->net, "net1080_check_conn read - %d\n", retval); in net1080_check_connect()
317 return -ENOLINK; in net1080_check_connect()
323 if (++dev->frame_errors <= 5) in nc_ensure_sync()
334 netif_dbg(dev, rx_err, dev->net, in nc_ensure_sync()
336 dev->frame_errors = 0; in nc_ensure_sync()
346 if (skb->len < dev->net->hard_header_len) in net1080_rx_fixup()
349 if (!(skb->len & 0x01)) { in net1080_rx_fixup()
350 netdev_dbg(dev->net, "rx framesize %d range %d..%d mtu %d\n", in net1080_rx_fixup()
351 skb->len, dev->net->hard_header_len, dev->hard_mtu, in net1080_rx_fixup()
352 dev->net->mtu); in net1080_rx_fixup()
353 dev->net->stats.rx_frame_errors++; in net1080_rx_fixup()
358 header = (struct nc_header *) skb->data; in net1080_rx_fixup()
359 hdr_len = le16_to_cpup(&header->hdr_len); in net1080_rx_fixup()
360 packet_len = le16_to_cpup(&header->packet_len); in net1080_rx_fixup()
362 dev->net->stats.rx_frame_errors++; in net1080_rx_fixup()
363 netdev_dbg(dev->net, "packet too big, %d\n", packet_len); in net1080_rx_fixup()
367 dev->net->stats.rx_frame_errors++; in net1080_rx_fixup()
368 netdev_dbg(dev->net, "header too short, %d\n", hdr_len); in net1080_rx_fixup()
373 netdev_dbg(dev->net, "header OOB, %d bytes\n", hdr_len - MIN_HEADER); in net1080_rx_fixup()
380 (skb->data + skb->len - sizeof *trailer); in net1080_rx_fixup()
381 skb_trim(skb, skb->len - sizeof *trailer); in net1080_rx_fixup()
384 if (skb->data [packet_len] != PAD_BYTE) { in net1080_rx_fixup()
385 dev->net->stats.rx_frame_errors++; in net1080_rx_fixup()
386 netdev_dbg(dev->net, "bad pad\n"); in net1080_rx_fixup()
389 skb_trim(skb, skb->len - 1); in net1080_rx_fixup()
391 if (skb->len != packet_len) { in net1080_rx_fixup()
392 dev->net->stats.rx_frame_errors++; in net1080_rx_fixup()
393 netdev_dbg(dev->net, "bad packet len %d (expected %d)\n", in net1080_rx_fixup()
394 skb->len, packet_len); in net1080_rx_fixup()
398 if (header->packet_id != get_unaligned(&trailer->packet_id)) { in net1080_rx_fixup()
399 dev->net->stats.rx_fifo_errors++; in net1080_rx_fixup()
400 netdev_dbg(dev->net, "(2+ dropped) rx packet_id mismatch 0x%x 0x%x\n", in net1080_rx_fixup()
401 le16_to_cpu(header->packet_id), in net1080_rx_fixup()
402 le16_to_cpu(trailer->packet_id)); in net1080_rx_fixup()
406 netdev_dbg(dev->net, "frame <rx h %d p %d id %d\n", header->hdr_len, in net1080_rx_fixup()
407 header->packet_len, header->packet_id); in net1080_rx_fixup()
409 dev->frame_errors = 0; in net1080_rx_fixup()
420 int len = skb->len; in net1080_tx_fixup()
436 skb->data = memmove(skb->head in net1080_tx_fixup()
438 skb->data, skb->len); in net1080_tx_fixup()
457 header->hdr_len = cpu_to_le16(sizeof (*header)); in net1080_tx_fixup()
458 header->packet_len = cpu_to_le16(len); in net1080_tx_fixup()
459 header->packet_id = cpu_to_le16((u16)dev->xid++); in net1080_tx_fixup()
462 if (!((skb->len + sizeof *trailer) & 0x01)) in net1080_tx_fixup()
465 put_unaligned(header->packet_id, &trailer->packet_id); in net1080_tx_fixup()
467 netdev_dbg(dev->net, "frame >tx h %d p %d id %d\n", in net1080_tx_fixup()
468 header->hdr_len, header->packet_len, in net1080_tx_fixup()
469 header->packet_id); in net1080_tx_fixup()
480 dev->net->hard_header_len += extra; in net1080_bind()
481 dev->rx_urb_size = dev->net->hard_header_len + dev->net->mtu; in net1080_bind()
482 dev->hard_mtu = NC_MAX_PACKET; in net1080_bind()
521 MODULE_DESCRIPTION("NetChip 1080 based USB Host-to-Host Links");