Lines Matching refs:rxcp
2255 struct be_rx_compl_info *rxcp) in be_rx_stats_update() argument
2261 stats->rx_bytes += rxcp->pkt_size; in be_rx_stats_update()
2263 if (rxcp->tunneled) in be_rx_stats_update()
2265 if (rxcp->pkt_type == BE_MULTICAST_PACKET) in be_rx_stats_update()
2267 if (rxcp->err) in be_rx_stats_update()
2272 static inline bool csum_passed(struct be_rx_compl_info *rxcp) in csum_passed() argument
2277 return (rxcp->tcpf || rxcp->udpf) && rxcp->l4_csum && in csum_passed()
2278 (rxcp->ip_csum || rxcp->ipv6) && !rxcp->err; in csum_passed()
2309 struct be_rx_compl_info *rxcp) in be_rx_compl_discard() argument
2312 u16 i, num_rcvd = rxcp->num_rcvd; in be_rx_compl_discard()
2326 struct be_rx_compl_info *rxcp) in skb_fill_rx_data() argument
2338 curr_frag_len = min(rxcp->pkt_size, rx_frag_size); in skb_fill_rx_data()
2362 if (rxcp->pkt_size <= rx_frag_size) { in skb_fill_rx_data()
2363 BUG_ON(rxcp->num_rcvd != 1); in skb_fill_rx_data()
2368 remaining = rxcp->pkt_size - curr_frag_len; in skb_fill_rx_data()
2369 for (i = 1, j = 0; i < rxcp->num_rcvd; i++) { in skb_fill_rx_data()
2398 struct be_rx_compl_info *rxcp) in be_rx_compl_process() argument
2407 be_rx_compl_discard(rxo, rxcp); in be_rx_compl_process()
2411 skb_fill_rx_data(rxo, skb, rxcp); in be_rx_compl_process()
2413 if (likely((netdev->features & NETIF_F_RXCSUM) && csum_passed(rxcp))) in be_rx_compl_process()
2421 skb_set_hash(skb, rxcp->rss_hash, PKT_HASH_TYPE_L3); in be_rx_compl_process()
2423 skb->csum_level = rxcp->tunneled; in be_rx_compl_process()
2426 if (rxcp->vlanf) in be_rx_compl_process()
2427 __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), rxcp->vlan_tag); in be_rx_compl_process()
2435 struct be_rx_compl_info *rxcp) in be_rx_compl_process_gro() argument
2445 be_rx_compl_discard(rxo, rxcp); in be_rx_compl_process_gro()
2449 remaining = rxcp->pkt_size; in be_rx_compl_process_gro()
2450 for (i = 0, j = -1; i < rxcp->num_rcvd; i++) { in be_rx_compl_process_gro()
2474 skb->len = rxcp->pkt_size; in be_rx_compl_process_gro()
2475 skb->data_len = rxcp->pkt_size; in be_rx_compl_process_gro()
2479 skb_set_hash(skb, rxcp->rss_hash, PKT_HASH_TYPE_L3); in be_rx_compl_process_gro()
2481 skb->csum_level = rxcp->tunneled; in be_rx_compl_process_gro()
2483 if (rxcp->vlanf) in be_rx_compl_process_gro()
2484 __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), rxcp->vlan_tag); in be_rx_compl_process_gro()
2490 struct be_rx_compl_info *rxcp) in be_parse_rx_compl_v1() argument
2492 rxcp->pkt_size = GET_RX_COMPL_V1_BITS(pktsize, compl); in be_parse_rx_compl_v1()
2493 rxcp->vlanf = GET_RX_COMPL_V1_BITS(vtp, compl); in be_parse_rx_compl_v1()
2494 rxcp->err = GET_RX_COMPL_V1_BITS(err, compl); in be_parse_rx_compl_v1()
2495 rxcp->tcpf = GET_RX_COMPL_V1_BITS(tcpf, compl); in be_parse_rx_compl_v1()
2496 rxcp->udpf = GET_RX_COMPL_V1_BITS(udpf, compl); in be_parse_rx_compl_v1()
2497 rxcp->ip_csum = GET_RX_COMPL_V1_BITS(ipcksm, compl); in be_parse_rx_compl_v1()
2498 rxcp->l4_csum = GET_RX_COMPL_V1_BITS(l4_cksm, compl); in be_parse_rx_compl_v1()
2499 rxcp->ipv6 = GET_RX_COMPL_V1_BITS(ip_version, compl); in be_parse_rx_compl_v1()
2500 rxcp->num_rcvd = GET_RX_COMPL_V1_BITS(numfrags, compl); in be_parse_rx_compl_v1()
2501 rxcp->pkt_type = GET_RX_COMPL_V1_BITS(cast_enc, compl); in be_parse_rx_compl_v1()
2502 rxcp->rss_hash = GET_RX_COMPL_V1_BITS(rsshash, compl); in be_parse_rx_compl_v1()
2503 if (rxcp->vlanf) { in be_parse_rx_compl_v1()
2504 rxcp->qnq = GET_RX_COMPL_V1_BITS(qnq, compl); in be_parse_rx_compl_v1()
2505 rxcp->vlan_tag = GET_RX_COMPL_V1_BITS(vlan_tag, compl); in be_parse_rx_compl_v1()
2507 rxcp->port = GET_RX_COMPL_V1_BITS(port, compl); in be_parse_rx_compl_v1()
2508 rxcp->tunneled = in be_parse_rx_compl_v1()
2513 struct be_rx_compl_info *rxcp) in be_parse_rx_compl_v0() argument
2515 rxcp->pkt_size = GET_RX_COMPL_V0_BITS(pktsize, compl); in be_parse_rx_compl_v0()
2516 rxcp->vlanf = GET_RX_COMPL_V0_BITS(vtp, compl); in be_parse_rx_compl_v0()
2517 rxcp->err = GET_RX_COMPL_V0_BITS(err, compl); in be_parse_rx_compl_v0()
2518 rxcp->tcpf = GET_RX_COMPL_V0_BITS(tcpf, compl); in be_parse_rx_compl_v0()
2519 rxcp->udpf = GET_RX_COMPL_V0_BITS(udpf, compl); in be_parse_rx_compl_v0()
2520 rxcp->ip_csum = GET_RX_COMPL_V0_BITS(ipcksm, compl); in be_parse_rx_compl_v0()
2521 rxcp->l4_csum = GET_RX_COMPL_V0_BITS(l4_cksm, compl); in be_parse_rx_compl_v0()
2522 rxcp->ipv6 = GET_RX_COMPL_V0_BITS(ip_version, compl); in be_parse_rx_compl_v0()
2523 rxcp->num_rcvd = GET_RX_COMPL_V0_BITS(numfrags, compl); in be_parse_rx_compl_v0()
2524 rxcp->pkt_type = GET_RX_COMPL_V0_BITS(cast_enc, compl); in be_parse_rx_compl_v0()
2525 rxcp->rss_hash = GET_RX_COMPL_V0_BITS(rsshash, compl); in be_parse_rx_compl_v0()
2526 if (rxcp->vlanf) { in be_parse_rx_compl_v0()
2527 rxcp->qnq = GET_RX_COMPL_V0_BITS(qnq, compl); in be_parse_rx_compl_v0()
2528 rxcp->vlan_tag = GET_RX_COMPL_V0_BITS(vlan_tag, compl); in be_parse_rx_compl_v0()
2530 rxcp->port = GET_RX_COMPL_V0_BITS(port, compl); in be_parse_rx_compl_v0()
2531 rxcp->ip_frag = GET_RX_COMPL_V0_BITS(ip_frag, compl); in be_parse_rx_compl_v0()
2537 struct be_rx_compl_info *rxcp = &rxo->rxcp; in be_rx_compl_get() local
2549 be_parse_rx_compl_v1(compl, rxcp); in be_rx_compl_get()
2551 be_parse_rx_compl_v0(compl, rxcp); in be_rx_compl_get()
2553 if (rxcp->ip_frag) in be_rx_compl_get()
2554 rxcp->l4_csum = 0; in be_rx_compl_get()
2556 if (rxcp->vlanf) { in be_rx_compl_get()
2561 if (be_is_qnq_mode(adapter) && !rxcp->qnq) in be_rx_compl_get()
2562 rxcp->vlanf = 0; in be_rx_compl_get()
2565 rxcp->vlan_tag = swab16(rxcp->vlan_tag); in be_rx_compl_get()
2567 if (adapter->pvid == (rxcp->vlan_tag & VLAN_VID_MASK) && in be_rx_compl_get()
2568 !test_bit(rxcp->vlan_tag, adapter->vids)) in be_rx_compl_get()
2569 rxcp->vlanf = 0; in be_rx_compl_get()
2576 return rxcp; in be_rx_compl_get()
2833 struct be_rx_compl_info *rxcp; in be_rx_cq_clean() local
2844 rxcp = be_rx_compl_get(rxo); in be_rx_cq_clean()
2845 if (!rxcp) { in be_rx_cq_clean()
2859 be_rx_compl_discard(rxo, rxcp); in be_rx_cq_clean()
2861 if (rxcp->num_rcvd == 0) in be_rx_cq_clean()
3203 static inline bool do_gro(struct be_rx_compl_info *rxcp) in do_gro() argument
3205 return (rxcp->tcpf && !rxcp->err && rxcp->l4_csum) ? true : false; in do_gro()
3213 struct be_rx_compl_info *rxcp; in be_process_rx() local
3218 rxcp = be_rx_compl_get(rxo); in be_process_rx()
3219 if (!rxcp) in be_process_rx()
3223 if (unlikely(rxcp->num_rcvd == 0)) in be_process_rx()
3227 if (unlikely(!rxcp->pkt_size)) { in be_process_rx()
3228 be_rx_compl_discard(rxo, rxcp); in be_process_rx()
3235 if (unlikely(rxcp->port != adapter->port_num && in be_process_rx()
3237 be_rx_compl_discard(rxo, rxcp); in be_process_rx()
3241 if (do_gro(rxcp)) in be_process_rx()
3242 be_rx_compl_process_gro(rxo, napi, rxcp); in be_process_rx()
3244 be_rx_compl_process(rxo, napi, rxcp); in be_process_rx()
3247 frags_consumed += rxcp->num_rcvd; in be_process_rx()
3248 be_rx_stats_update(rxo, rxcp); in be_process_rx()