Lines Matching refs:rxcp

2251 			       struct be_rx_compl_info *rxcp)  in be_rx_stats_update()  argument
2257 stats->rx_bytes += rxcp->pkt_size; in be_rx_stats_update()
2259 if (rxcp->tunneled) in be_rx_stats_update()
2261 if (rxcp->pkt_type == BE_MULTICAST_PACKET) in be_rx_stats_update()
2263 if (rxcp->err) in be_rx_stats_update()
2268 static inline bool csum_passed(struct be_rx_compl_info *rxcp) in csum_passed() argument
2273 return (rxcp->tcpf || rxcp->udpf) && rxcp->l4_csum && in csum_passed()
2274 (rxcp->ip_csum || rxcp->ipv6) && !rxcp->err; in csum_passed()
2305 struct be_rx_compl_info *rxcp) in be_rx_compl_discard() argument
2308 u16 i, num_rcvd = rxcp->num_rcvd; in be_rx_compl_discard()
2322 struct be_rx_compl_info *rxcp) in skb_fill_rx_data() argument
2334 curr_frag_len = min(rxcp->pkt_size, rx_frag_size); in skb_fill_rx_data()
2358 if (rxcp->pkt_size <= rx_frag_size) { in skb_fill_rx_data()
2359 BUG_ON(rxcp->num_rcvd != 1); in skb_fill_rx_data()
2364 remaining = rxcp->pkt_size - curr_frag_len; in skb_fill_rx_data()
2365 for (i = 1, j = 0; i < rxcp->num_rcvd; i++) { in skb_fill_rx_data()
2394 struct be_rx_compl_info *rxcp) in be_rx_compl_process() argument
2403 be_rx_compl_discard(rxo, rxcp); in be_rx_compl_process()
2407 skb_fill_rx_data(rxo, skb, rxcp); in be_rx_compl_process()
2409 if (likely((netdev->features & NETIF_F_RXCSUM) && csum_passed(rxcp))) in be_rx_compl_process()
2417 skb_set_hash(skb, rxcp->rss_hash, PKT_HASH_TYPE_L3); in be_rx_compl_process()
2419 skb->csum_level = rxcp->tunneled; in be_rx_compl_process()
2422 if (rxcp->vlanf) in be_rx_compl_process()
2423 __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), rxcp->vlan_tag); in be_rx_compl_process()
2431 struct be_rx_compl_info *rxcp) in be_rx_compl_process_gro() argument
2441 be_rx_compl_discard(rxo, rxcp); in be_rx_compl_process_gro()
2445 remaining = rxcp->pkt_size; in be_rx_compl_process_gro()
2446 for (i = 0, j = -1; i < rxcp->num_rcvd; i++) { in be_rx_compl_process_gro()
2470 skb->len = rxcp->pkt_size; in be_rx_compl_process_gro()
2471 skb->data_len = rxcp->pkt_size; in be_rx_compl_process_gro()
2475 skb_set_hash(skb, rxcp->rss_hash, PKT_HASH_TYPE_L3); in be_rx_compl_process_gro()
2477 skb->csum_level = rxcp->tunneled; in be_rx_compl_process_gro()
2479 if (rxcp->vlanf) in be_rx_compl_process_gro()
2480 __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), rxcp->vlan_tag); in be_rx_compl_process_gro()
2486 struct be_rx_compl_info *rxcp) in be_parse_rx_compl_v1() argument
2488 rxcp->pkt_size = GET_RX_COMPL_V1_BITS(pktsize, compl); in be_parse_rx_compl_v1()
2489 rxcp->vlanf = GET_RX_COMPL_V1_BITS(vtp, compl); in be_parse_rx_compl_v1()
2490 rxcp->err = GET_RX_COMPL_V1_BITS(err, compl); in be_parse_rx_compl_v1()
2491 rxcp->tcpf = GET_RX_COMPL_V1_BITS(tcpf, compl); in be_parse_rx_compl_v1()
2492 rxcp->udpf = GET_RX_COMPL_V1_BITS(udpf, compl); in be_parse_rx_compl_v1()
2493 rxcp->ip_csum = GET_RX_COMPL_V1_BITS(ipcksm, compl); in be_parse_rx_compl_v1()
2494 rxcp->l4_csum = GET_RX_COMPL_V1_BITS(l4_cksm, compl); in be_parse_rx_compl_v1()
2495 rxcp->ipv6 = GET_RX_COMPL_V1_BITS(ip_version, compl); in be_parse_rx_compl_v1()
2496 rxcp->num_rcvd = GET_RX_COMPL_V1_BITS(numfrags, compl); in be_parse_rx_compl_v1()
2497 rxcp->pkt_type = GET_RX_COMPL_V1_BITS(cast_enc, compl); in be_parse_rx_compl_v1()
2498 rxcp->rss_hash = GET_RX_COMPL_V1_BITS(rsshash, compl); in be_parse_rx_compl_v1()
2499 if (rxcp->vlanf) { in be_parse_rx_compl_v1()
2500 rxcp->qnq = GET_RX_COMPL_V1_BITS(qnq, compl); in be_parse_rx_compl_v1()
2501 rxcp->vlan_tag = GET_RX_COMPL_V1_BITS(vlan_tag, compl); in be_parse_rx_compl_v1()
2503 rxcp->port = GET_RX_COMPL_V1_BITS(port, compl); in be_parse_rx_compl_v1()
2504 rxcp->tunneled = in be_parse_rx_compl_v1()
2509 struct be_rx_compl_info *rxcp) in be_parse_rx_compl_v0() argument
2511 rxcp->pkt_size = GET_RX_COMPL_V0_BITS(pktsize, compl); in be_parse_rx_compl_v0()
2512 rxcp->vlanf = GET_RX_COMPL_V0_BITS(vtp, compl); in be_parse_rx_compl_v0()
2513 rxcp->err = GET_RX_COMPL_V0_BITS(err, compl); in be_parse_rx_compl_v0()
2514 rxcp->tcpf = GET_RX_COMPL_V0_BITS(tcpf, compl); in be_parse_rx_compl_v0()
2515 rxcp->udpf = GET_RX_COMPL_V0_BITS(udpf, compl); in be_parse_rx_compl_v0()
2516 rxcp->ip_csum = GET_RX_COMPL_V0_BITS(ipcksm, compl); in be_parse_rx_compl_v0()
2517 rxcp->l4_csum = GET_RX_COMPL_V0_BITS(l4_cksm, compl); in be_parse_rx_compl_v0()
2518 rxcp->ipv6 = GET_RX_COMPL_V0_BITS(ip_version, compl); in be_parse_rx_compl_v0()
2519 rxcp->num_rcvd = GET_RX_COMPL_V0_BITS(numfrags, compl); in be_parse_rx_compl_v0()
2520 rxcp->pkt_type = GET_RX_COMPL_V0_BITS(cast_enc, compl); in be_parse_rx_compl_v0()
2521 rxcp->rss_hash = GET_RX_COMPL_V0_BITS(rsshash, compl); in be_parse_rx_compl_v0()
2522 if (rxcp->vlanf) { in be_parse_rx_compl_v0()
2523 rxcp->qnq = GET_RX_COMPL_V0_BITS(qnq, compl); in be_parse_rx_compl_v0()
2524 rxcp->vlan_tag = GET_RX_COMPL_V0_BITS(vlan_tag, compl); in be_parse_rx_compl_v0()
2526 rxcp->port = GET_RX_COMPL_V0_BITS(port, compl); in be_parse_rx_compl_v0()
2527 rxcp->ip_frag = GET_RX_COMPL_V0_BITS(ip_frag, compl); in be_parse_rx_compl_v0()
2533 struct be_rx_compl_info *rxcp = &rxo->rxcp; in be_rx_compl_get() local
2545 be_parse_rx_compl_v1(compl, rxcp); in be_rx_compl_get()
2547 be_parse_rx_compl_v0(compl, rxcp); in be_rx_compl_get()
2549 if (rxcp->ip_frag) in be_rx_compl_get()
2550 rxcp->l4_csum = 0; in be_rx_compl_get()
2552 if (rxcp->vlanf) { in be_rx_compl_get()
2557 if (be_is_qnq_mode(adapter) && !rxcp->qnq) in be_rx_compl_get()
2558 rxcp->vlanf = 0; in be_rx_compl_get()
2561 rxcp->vlan_tag = swab16(rxcp->vlan_tag); in be_rx_compl_get()
2563 if (adapter->pvid == (rxcp->vlan_tag & VLAN_VID_MASK) && in be_rx_compl_get()
2564 !test_bit(rxcp->vlan_tag, adapter->vids)) in be_rx_compl_get()
2565 rxcp->vlanf = 0; in be_rx_compl_get()
2572 return rxcp; in be_rx_compl_get()
2829 struct be_rx_compl_info *rxcp; in be_rx_cq_clean() local
2840 rxcp = be_rx_compl_get(rxo); in be_rx_cq_clean()
2841 if (!rxcp) { in be_rx_cq_clean()
2855 be_rx_compl_discard(rxo, rxcp); in be_rx_cq_clean()
2857 if (rxcp->num_rcvd == 0) in be_rx_cq_clean()
3199 static inline bool do_gro(struct be_rx_compl_info *rxcp) in do_gro() argument
3201 return (rxcp->tcpf && !rxcp->err && rxcp->l4_csum) ? true : false; in do_gro()
3209 struct be_rx_compl_info *rxcp; in be_process_rx() local
3214 rxcp = be_rx_compl_get(rxo); in be_process_rx()
3215 if (!rxcp) in be_process_rx()
3219 if (unlikely(rxcp->num_rcvd == 0)) in be_process_rx()
3223 if (unlikely(!rxcp->pkt_size)) { in be_process_rx()
3224 be_rx_compl_discard(rxo, rxcp); in be_process_rx()
3231 if (unlikely(rxcp->port != adapter->port_num && in be_process_rx()
3233 be_rx_compl_discard(rxo, rxcp); in be_process_rx()
3237 if (do_gro(rxcp)) in be_process_rx()
3238 be_rx_compl_process_gro(rxo, napi, rxcp); in be_process_rx()
3240 be_rx_compl_process(rxo, napi, rxcp); in be_process_rx()
3243 frags_consumed += rxcp->num_rcvd; in be_process_rx()
3244 be_rx_stats_update(rxo, rxcp); in be_process_rx()