Lines Matching refs:rcv
344 struct plip_local *rcv,
353 struct plip_local *snd, struct plip_local *rcv);
370 struct plip_local *rcv = &nl->rcv_data;
376 if ((r = (*f)(nl->dev, nl, snd, rcv)) != OK &&
377 (r = plip_bh_timeout_error(nl->dev, nl, snd, rcv, r)) != OK) {
401 struct plip_local *snd, struct plip_local *rcv,
434 if (rcv->state == PLIP_PK_TRIGGER) {
447 dev->name, rcv->state, c0);
451 rcv->state = PLIP_PK_DONE;
452 if (rcv->skb) {
453 dev_kfree_skb_irq(rcv->skb);
454 rcv->skb = NULL;
476 struct plip_local *snd, struct plip_local *rcv)
589 struct plip_local *snd, struct plip_local *rcv)
594 switch (rcv->state) {
602 rcv->state = PLIP_PK_LENGTH_LSB;
603 rcv->nibble = PLIP_NB_BEGIN;
609 &rcv->nibble, &rcv->length.b.lsb)) {
611 rcv->state = PLIP_PK_DONE;
621 &rcv->nibble, &rcv->length.b.lsb))
624 rcv->state = PLIP_PK_LENGTH_MSB;
629 &rcv->nibble, &rcv->length.b.msb))
631 if (rcv->length.h > dev->mtu + dev->hard_header_len ||
632 rcv->length.h < 8) {
633 printk(KERN_WARNING "%s: bogus packet size %d.\n", dev->name, rcv->length.h);
637 rcv->skb = dev_alloc_skb(rcv->length.h + 2);
638 if (rcv->skb == NULL) {
642 skb_reserve(rcv->skb, 2); /* Align IP on 16 byte boundaries */
643 skb_put(rcv->skb,rcv->length.h);
644 rcv->skb->dev = dev;
645 rcv->state = PLIP_PK_DATA;
646 rcv->byte = 0;
647 rcv->checksum = 0;
651 lbuf = rcv->skb->data;
654 &rcv->nibble, &lbuf[rcv->byte]))
656 } while (++rcv->byte < rcv->length.h);
658 rcv->checksum += lbuf[--rcv->byte];
659 } while (rcv->byte);
660 rcv->state = PLIP_PK_CHECKSUM;
665 &rcv->nibble, &rcv->data))
667 if (rcv->data != rcv->checksum) {
673 rcv->state = PLIP_PK_DONE;
678 rcv->skb->protocol=plip_type_trans(rcv->skb, dev);
679 netif_rx(rcv->skb);
680 dev->stats.rx_bytes += rcv->length.h;
682 rcv->skb = NULL;
757 struct plip_local *snd, struct plip_local *rcv)
877 struct plip_local *snd, struct plip_local *rcv)
895 struct plip_local *snd, struct plip_local *rcv)
923 struct plip_local *rcv;
928 rcv = &nl->rcv_data;
949 rcv->state = PLIP_PK_TRIGGER;
1131 struct plip_local *rcv = &nl->rcv_data;
1159 rcv->state = PLIP_PK_DONE;
1160 if (rcv->skb) {
1161 kfree_skb(rcv->skb);
1162 rcv->skb = NULL;