Lines Matching refs:work

513 	/* Get a work queue entry */
514 struct cvmx_wqe *work = cvmx_fpa_alloc(CVMX_FPA_WQE_POOL);
516 if (unlikely(!work)) {
517 printk_ratelimited("%s: Failed to allocate a work queue entry\n",
529 cvmx_fpa_free(work, CVMX_FPA_WQE_POOL, 1);
555 * Fill in some of the work queue fields. We may need to add
559 work->word0.pip.cn38xx.hw_chksum = skb->csum;
560 work->word1.len = skb->len;
561 cvmx_wqe_set_port(work, priv->port);
562 cvmx_wqe_set_qos(work, priv->port & 0x7);
563 cvmx_wqe_set_grp(work, pow_send_group);
564 work->word1.tag_type = CVMX_HELPER_INPUT_TAG_TYPE;
565 work->word1.tag = pow_send_group; /* FIXME */
567 work->word2.u64 = 0;
568 work->word2.s.bufs = 1;
569 work->packet_ptr.u64 = 0;
570 work->packet_ptr.s.addr = cvmx_ptr_to_phys(copy_location);
571 work->packet_ptr.s.pool = CVMX_FPA_PACKET_POOL;
572 work->packet_ptr.s.size = CVMX_FPA_PACKET_POOL_SIZE;
573 work->packet_ptr.s.back = (copy_location - packet_buffer) >> 7;
576 work->word2.s.ip_offset = 14;
578 work->word2.s.vlan_valid = 0; /* FIXME */
579 work->word2.s.vlan_cfi = 0; /* FIXME */
580 work->word2.s.vlan_id = 0; /* FIXME */
581 work->word2.s.dec_ipcomp = 0; /* FIXME */
583 work->word2.s.tcp_or_udp =
588 work->word2.s.dec_ipsec = 0;
590 work->word2.s.is_v6 = 0;
592 work->word2.s.software = 0;
594 work->word2.s.L4_error = 0;
596 work->word2.s.is_frag = !((ip_hdr(skb)->frag_off == 0) ||
601 work->word2.s.IP_exc = 0;
603 work->word2.s.is_bcast = (skb->pkt_type == PACKET_BROADCAST);
604 work->word2.s.is_mcast = (skb->pkt_type == PACKET_MULTICAST);
607 work->word2.s.not_IP = 0;
609 work->word2.s.rcv_error = 0;
611 work->word2.s.err_code = 0;
619 memcpy(work->packet_data, skb->data + 10,
620 sizeof(work->packet_data));
623 work->word2.snoip.vlan_valid = 0; /* FIXME */
624 work->word2.snoip.vlan_cfi = 0; /* FIXME */
625 work->word2.snoip.vlan_id = 0; /* FIXME */
626 work->word2.snoip.software = 0; /* Hardware would set to zero */
628 work->word2.snoip.is_rarp = skb->protocol == htons(ETH_P_RARP);
629 work->word2.snoip.is_arp = skb->protocol == htons(ETH_P_ARP);
630 work->word2.snoip.is_bcast =
632 work->word2.snoip.is_mcast =
634 work->word2.snoip.not_IP = 1; /* IP was done up above */
637 work->word2.snoip.rcv_error = 0;
639 work->word2.snoip.err_code = 0;
641 memcpy(work->packet_data, skb->data, sizeof(work->packet_data));
645 cvmx_pow_work_submit(work, work->word1.tag, work->word1.tag_type,
646 cvmx_wqe_get_qos(work), cvmx_wqe_get_grp(work));
690 /* Do the work in the tasklet. */