Lines Matching refs:pkc

506 static void prb_del_retire_blk_timer(struct tpacket_kbdq_core *pkc)
508 del_timer_sync(&pkc->retire_blk_timer);
514 struct tpacket_kbdq_core *pkc;
516 pkc = GET_PBDQC_FROM_RB(&po->rx_ring);
519 pkc->delete_blk_timer = 1;
522 prb_del_retire_blk_timer(pkc);
527 struct tpacket_kbdq_core *pkc;
529 pkc = GET_PBDQC_FROM_RB(&po->rx_ring);
530 timer_setup(&pkc->retire_blk_timer, prb_retire_rx_blk_timer_expired,
532 pkc->retire_blk_timer.expires = jiffies;
616 static void _prb_refresh_rx_retire_blk_timer(struct tpacket_kbdq_core *pkc)
618 mod_timer(&pkc->retire_blk_timer,
619 jiffies + pkc->tov_in_jiffies);
620 pkc->last_kactive_blk_num = pkc->kactive_blk_num;
650 struct tpacket_kbdq_core *pkc = GET_PBDQC_FROM_RB(&po->rx_ring);
656 frozen = prb_queue_frozen(pkc);
657 pbd = GET_CURR_PBLOCK_DESC_FROM_CORE(pkc);
659 if (unlikely(pkc->delete_blk_timer))
673 write_lock(&pkc->blk_fill_in_prog_lock);
674 write_unlock(&pkc->blk_fill_in_prog_lock);
677 if (pkc->last_kactive_blk_num == pkc->kactive_blk_num) {
683 prb_retire_current_block(pkc, po, TP_STATUS_BLK_TMO);
684 if (!prb_dispatch_next_block(pkc, po))
706 prb_open_block(pkc, pbd);
713 _prb_refresh_rx_retire_blk_timer(pkc);
804 static void prb_thaw_queue(struct tpacket_kbdq_core *pkc)
806 pkc->reset_pending_on_curr_blk = 0;
876 static void prb_freeze_queue(struct tpacket_kbdq_core *pkc,
879 pkc->reset_pending_on_curr_blk = 1;
891 static void *prb_dispatch_next_block(struct tpacket_kbdq_core *pkc,
899 pbd = GET_CURR_PBLOCK_DESC_FROM_CORE(pkc);
903 prb_freeze_queue(pkc, po);
912 prb_open_block(pkc, pbd);
913 return (void *)pkc->nxt_offset;
916 static void prb_retire_current_block(struct tpacket_kbdq_core *pkc,
919 struct tpacket_block_desc *pbd = GET_CURR_PBLOCK_DESC_FROM_CORE(pkc);
934 write_lock(&pkc->blk_fill_in_prog_lock);
935 write_unlock(&pkc->blk_fill_in_prog_lock);
937 prb_close_block(pkc, pbd, po, status);
947 static int prb_queue_frozen(struct tpacket_kbdq_core *pkc)
949 return pkc->reset_pending_on_curr_blk;
953 __releases(&pkc->blk_fill_in_prog_lock)
955 struct tpacket_kbdq_core *pkc = GET_PBDQC_FROM_RB(rb);
957 read_unlock(&pkc->blk_fill_in_prog_lock);
960 static void prb_fill_rxhash(struct tpacket_kbdq_core *pkc,
963 ppd->hv1.tp_rxhash = skb_get_hash(pkc->skb);
966 static void prb_clear_rxhash(struct tpacket_kbdq_core *pkc,
972 static void prb_fill_vlan_info(struct tpacket_kbdq_core *pkc,
975 if (skb_vlan_tag_present(pkc->skb)) {
976 ppd->hv1.tp_vlan_tci = skb_vlan_tag_get(pkc->skb);
977 ppd->hv1.tp_vlan_tpid = ntohs(pkc->skb->vlan_proto);
986 static void prb_run_all_ft_ops(struct tpacket_kbdq_core *pkc,
990 prb_fill_vlan_info(pkc, ppd);
992 if (pkc->feature_req_word & TP_FT_REQ_FILL_RXHASH)
993 prb_fill_rxhash(pkc, ppd);
995 prb_clear_rxhash(pkc, ppd);
999 struct tpacket_kbdq_core *pkc,
1002 __acquires(&pkc->blk_fill_in_prog_lock)
1008 pkc->prev = curr;
1009 pkc->nxt_offset += TOTAL_PKT_LEN_INCL_ALIGN(len);
1012 read_lock(&pkc->blk_fill_in_prog_lock);
1013 prb_run_all_ft_ops(pkc, ppd);
1022 struct tpacket_kbdq_core *pkc;
1026 pkc = GET_PBDQC_FROM_RB(&po->rx_ring);
1027 pbd = GET_CURR_PBLOCK_DESC_FROM_CORE(pkc);
1030 if (prb_queue_frozen(pkc)) {
1045 prb_open_block(pkc, pbd);
1050 curr = pkc->nxt_offset;
1051 pkc->skb = skb;
1052 end = (char *)pbd + pkc->kblk_size;
1056 prb_fill_curr_block(curr, pkc, pbd, len);
1061 prb_retire_current_block(pkc, po, 0);
1064 curr = (char *)prb_dispatch_next_block(pkc, po);
1066 pbd = GET_CURR_PBLOCK_DESC_FROM_CORE(pkc);
1067 prb_fill_curr_block(curr, pkc, pbd, len);
1103 struct tpacket_kbdq_core *pkc = GET_PBDQC_FROM_RB(rb);
1104 struct tpacket_block_desc *pbd = GET_PBLOCK_DESC(pkc, idx);