Lines Matching refs:cqe
163 static int oce_cqe_vtp_valid(POCE_SOFTC sc, struct oce_nic_rx_cqe *cqe);
164 static int oce_cqe_portid_valid(POCE_SOFTC sc, struct oce_nic_rx_cqe *cqe);
165 static void oce_rx(struct oce_rq *rq, struct oce_nic_rx_cqe *cqe);
169 static void oce_rx_lro(struct oce_rq *rq, struct nic_hwlro_singleton_cqe *cqe, struct nic_hwlro_cqe…
1393 struct oce_nic_tx_cqe *cqe; in oce_wq_handler() local
1399 cqe = RING_GET_CONSUMER_ITEM_VA(cq->ring, struct oce_nic_tx_cqe); in oce_wq_handler()
1400 while (cqe->u0.dw[3]) { in oce_wq_handler()
1401 DW_SWAP((uint32_t *) cqe, sizeof(oce_wq_cqe)); in oce_wq_handler()
1403 wq->ring->cidx = cqe->u0.s.wqe_index + 1; in oce_wq_handler()
1409 cqe->u0.dw[3] = 0; in oce_wq_handler()
1413 cqe = in oce_wq_handler()
1576 oce_rx_lro(struct oce_rq *rq, struct nic_hwlro_singleton_cqe *cqe, struct nic_hwlro_cqe_part2 *cqe2) in oce_rx_lro() argument
1585 cq_info.pkt_size = cqe->pkt_size; in oce_rx_lro()
1586 cq_info.vtag = cqe->vlan_tag; in oce_rx_lro()
1587 cq_info.l4_cksum_pass = cqe->l4_cksum_pass; in oce_rx_lro()
1588 cq_info.ip_cksum_pass = cqe->ip_cksum_pass; in oce_rx_lro()
1589 cq_info.ipv6_frame = cqe->ipv6_frame; in oce_rx_lro()
1590 cq_info.vtp = cqe->vtp; in oce_rx_lro()
1591 cq_info.qnq = cqe->qnq; in oce_rx_lro()
1593 cqe1 = (struct nic_hwlro_cqe_part1 *)cqe; in oce_rx_lro()
1657 oce_rx(struct oce_rq *rq, struct oce_nic_rx_cqe *cqe) in oce_rx() argument
1666 if(!cqe->u0.s.num_fragments) in oce_rx()
1669 len = cqe->u0.s.pkt_size; in oce_rx()
1672 oce_discard_rx_comp(rq, cqe->u0.s.num_fragments); in oce_rx()
1676 if (!oce_cqe_portid_valid(sc, cqe)) { in oce_rx()
1677 oce_discard_rx_comp(rq, cqe->u0.s.num_fragments); in oce_rx()
1683 vtag = BSWAP_16(cqe->u0.s.vlan_tag); in oce_rx()
1685 vtag = cqe->u0.s.vlan_tag; in oce_rx()
1687 cq_info.l4_cksum_pass = cqe->u0.s.l4_cksum_pass; in oce_rx()
1688 cq_info.ip_cksum_pass = cqe->u0.s.ip_cksum_pass; in oce_rx()
1689 cq_info.ipv6_frame = cqe->u0.s.ip_ver; in oce_rx()
1690 cq_info.num_frags = cqe->u0.s.num_fragments; in oce_rx()
1691 cq_info.pkt_size = cqe->u0.s.pkt_size; in oce_rx()
1704 if (oce_cqe_vtp_valid(sc, cqe)) { in oce_rx()
1707 if (cqe->u0.s.qnq) { in oce_rx()
1725 (cqe->u0.s.ip_cksum_pass) && in oce_rx()
1726 (cqe->u0.s.l4_cksum_pass) && in oce_rx()
1727 (!cqe->u0.s.ip_ver) && in oce_rx()
1743 rq->rx_stats.rx_bytes += cqe->u0.s.pkt_size; in oce_rx()
1744 rq->rx_stats.rx_frags += cqe->u0.s.num_fragments; in oce_rx()
1745 if (cqe->u0.s.pkt_type == OCE_MULTICAST_PACKET) in oce_rx()
1747 if (cqe->u0.s.pkt_type == OCE_UNICAST_PACKET) in oce_rx()
1781 oce_cqe_vtp_valid(POCE_SOFTC sc, struct oce_nic_rx_cqe *cqe) in oce_cqe_vtp_valid() argument
1787 cqe_v1 = (struct oce_nic_rx_cqe_v1 *)cqe; in oce_cqe_vtp_valid()
1790 vtp = cqe->u0.s.vlan_tag_present; in oce_cqe_vtp_valid()
1797 oce_cqe_portid_valid(POCE_SOFTC sc, struct oce_nic_rx_cqe *cqe) in oce_cqe_portid_valid() argument
1803 cqe_v1 = (struct oce_nic_rx_cqe_v1 *)cqe; in oce_cqe_portid_valid()
1966 struct nic_hwlro_singleton_cqe *cqe; in oce_rq_handler_lro() local
1972 cqe = RING_GET_CONSUMER_ITEM_VA(cq->ring, struct nic_hwlro_singleton_cqe); in oce_rq_handler_lro()
1973 while (cqe->valid) { in oce_rq_handler_lro()
1974 if(cqe->cqe_type == 0) { /* singleton cqe */ in oce_rq_handler_lro()
1980 if(cqe->error != 0) { in oce_rq_handler_lro()
1984 oce_rx_lro(rq, cqe, NULL); in oce_rq_handler_lro()
1986 cqe->valid = 0; in oce_rq_handler_lro()
1991 }else if(cqe->cqe_type == 0x1) { /* first part */ in oce_rq_handler_lro()
1997 rq->cqe_firstpart = (struct nic_hwlro_cqe_part1 *)cqe; in oce_rq_handler_lro()
1999 }else if(cqe->cqe_type == 0x2) { /* second part */ in oce_rq_handler_lro()
2000 cqe2 = (struct nic_hwlro_cqe_part2 *)cqe; in oce_rq_handler_lro()
2024 cqe = RING_GET_CONSUMER_ITEM_VA(cq->ring, struct nic_hwlro_singleton_cqe); in oce_rq_handler_lro()
2040 struct oce_nic_rx_cqe *cqe; in oce_rq_handler() local
2052 cqe = RING_GET_CONSUMER_ITEM_VA(cq->ring, struct oce_nic_rx_cqe); in oce_rq_handler()
2053 while (cqe->u0.dw[2]) { in oce_rq_handler()
2054 DW_SWAP((uint32_t *) cqe, sizeof(oce_rq_cqe)); in oce_rq_handler()
2056 if (cqe->u0.s.error == 0) { in oce_rq_handler()
2057 oce_rx(rq, cqe); in oce_rq_handler()
2062 oce_rx(rq, cqe); in oce_rq_handler()
2065 cqe->u0.dw[2] = 0; in oce_rq_handler()
2076 cqe = in oce_rq_handler()
2624 static void oce_process_grp5_events(POCE_SOFTC sc, struct oce_mq_cqe *cqe) in oce_process_grp5_events() argument
2629 switch (cqe->u0.s.async_type) { in oce_process_grp5_events()
2632 gcqe = (struct oce_async_event_grp5_pvid_state *)cqe; in oce_process_grp5_events()
2639 bmccqe = (struct oce_async_evt_grp5_os2bmc *)cqe; in oce_process_grp5_events()
2655 struct oce_mq_cqe *cqe; in oce_mq_handler() local
2661 cqe = RING_GET_CONSUMER_ITEM_VA(cq->ring, struct oce_mq_cqe); in oce_mq_handler()
2663 while (cqe->u0.dw[3]) { in oce_mq_handler()
2664 DW_SWAP((uint32_t *) cqe, sizeof(oce_mq_cqe)); in oce_mq_handler()
2665 if (cqe->u0.s.async_event) { in oce_mq_handler()
2666 evt_type = cqe->u0.s.event_type; in oce_mq_handler()
2667 optype = cqe->u0.s.async_type; in oce_mq_handler()
2670 acqe = (struct oce_async_cqe_link_state *)cqe; in oce_mq_handler()
2673 oce_process_grp5_events(sc, cqe); in oce_mq_handler()
2676 dbgcqe = (struct oce_async_event_qnq *)cqe; in oce_mq_handler()
2682 cqe->u0.dw[3] = 0; in oce_mq_handler()
2686 cqe = RING_GET_CONSUMER_ITEM_VA(cq->ring, struct oce_mq_cqe); in oce_mq_handler()