Lines Matching refs:keys

575 static inline void __flow_hash_consistentify(struct flow_keys *keys)  in __flow_hash_consistentify()  argument
579 switch (keys->control.addr_type) { in __flow_hash_consistentify()
581 addr_diff = (__force u32)keys->addrs.v4addrs.dst - in __flow_hash_consistentify()
582 (__force u32)keys->addrs.v4addrs.src; in __flow_hash_consistentify()
585 ((__force u16)keys->ports.dst < in __flow_hash_consistentify()
586 (__force u16)keys->ports.src))) { in __flow_hash_consistentify()
587 swap(keys->addrs.v4addrs.src, keys->addrs.v4addrs.dst); in __flow_hash_consistentify()
588 swap(keys->ports.src, keys->ports.dst); in __flow_hash_consistentify()
592 addr_diff = memcmp(&keys->addrs.v6addrs.dst, in __flow_hash_consistentify()
593 &keys->addrs.v6addrs.src, in __flow_hash_consistentify()
594 sizeof(keys->addrs.v6addrs.dst)); in __flow_hash_consistentify()
597 ((__force u16)keys->ports.dst < in __flow_hash_consistentify()
598 (__force u16)keys->ports.src))) { in __flow_hash_consistentify()
600 swap(keys->addrs.v6addrs.src.s6_addr32[i], in __flow_hash_consistentify()
601 keys->addrs.v6addrs.dst.s6_addr32[i]); in __flow_hash_consistentify()
602 swap(keys->ports.src, keys->ports.dst); in __flow_hash_consistentify()
608 static inline u32 __flow_hash_from_keys(struct flow_keys *keys, u32 keyval) in __flow_hash_from_keys() argument
612 __flow_hash_consistentify(keys); in __flow_hash_from_keys()
614 hash = __flow_hash_words(flow_keys_hash_start(keys), in __flow_hash_from_keys()
615 flow_keys_hash_length(keys), keyval); in __flow_hash_from_keys()
622 u32 flow_hash_from_keys(struct flow_keys *keys) in flow_hash_from_keys() argument
625 return __flow_hash_from_keys(keys, hashrnd); in flow_hash_from_keys()
630 struct flow_keys *keys, u32 keyval) in ___skb_get_hash() argument
632 skb_flow_dissect_flow_keys(skb, keys, in ___skb_get_hash()
635 return __flow_hash_from_keys(keys, keyval); in ___skb_get_hash()
676 struct flow_keys keys; in __skb_get_hash() local
680 __skb_set_sw_hash(skb, ___skb_get_hash(skb, &keys, hashrnd), in __skb_get_hash()
681 flow_keys_have_l4(&keys)); in __skb_get_hash()
687 struct flow_keys keys; in skb_get_hash_perturb() local
689 return ___skb_get_hash(skb, &keys, perturb); in skb_get_hash_perturb()
695 struct flow_keys keys; in __skb_get_hash_flowi6() local
697 memset(&keys, 0, sizeof(keys)); in __skb_get_hash_flowi6()
699 memcpy(&keys.addrs.v6addrs.src, &fl6->saddr, in __skb_get_hash_flowi6()
700 sizeof(keys.addrs.v6addrs.src)); in __skb_get_hash_flowi6()
701 memcpy(&keys.addrs.v6addrs.dst, &fl6->daddr, in __skb_get_hash_flowi6()
702 sizeof(keys.addrs.v6addrs.dst)); in __skb_get_hash_flowi6()
703 keys.control.addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS; in __skb_get_hash_flowi6()
704 keys.ports.src = fl6->fl6_sport; in __skb_get_hash_flowi6()
705 keys.ports.dst = fl6->fl6_dport; in __skb_get_hash_flowi6()
706 keys.keyid.keyid = fl6->fl6_gre_key; in __skb_get_hash_flowi6()
707 keys.tags.flow_label = (__force u32)fl6->flowlabel; in __skb_get_hash_flowi6()
708 keys.basic.ip_proto = fl6->flowi6_proto; in __skb_get_hash_flowi6()
710 __skb_set_sw_hash(skb, flow_hash_from_keys(&keys), in __skb_get_hash_flowi6()
711 flow_keys_have_l4(&keys)); in __skb_get_hash_flowi6()
719 struct flow_keys keys; in __skb_get_hash_flowi4() local
721 memset(&keys, 0, sizeof(keys)); in __skb_get_hash_flowi4()
723 keys.addrs.v4addrs.src = fl4->saddr; in __skb_get_hash_flowi4()
724 keys.addrs.v4addrs.dst = fl4->daddr; in __skb_get_hash_flowi4()
725 keys.control.addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS; in __skb_get_hash_flowi4()
726 keys.ports.src = fl4->fl4_sport; in __skb_get_hash_flowi4()
727 keys.ports.dst = fl4->fl4_dport; in __skb_get_hash_flowi4()
728 keys.keyid.keyid = fl4->fl4_gre_key; in __skb_get_hash_flowi4()
729 keys.basic.ip_proto = fl4->flowi4_proto; in __skb_get_hash_flowi4()
731 __skb_set_sw_hash(skb, flow_hash_from_keys(&keys), in __skb_get_hash_flowi4()
732 flow_keys_have_l4(&keys)); in __skb_get_hash_flowi4()
739 const struct flow_keys *keys, int hlen) in __skb_get_poff() argument
741 u32 poff = keys->control.thoff; in __skb_get_poff()
743 switch (keys->basic.ip_proto) { in __skb_get_poff()
795 struct flow_keys keys; in skb_get_poff() local
797 if (!skb_flow_dissect_flow_keys(skb, &keys, 0)) in skb_get_poff()
800 return __skb_get_poff(skb, skb->data, &keys, skb_headlen(skb)); in skb_get_poff()
803 __u32 __get_hash_from_flowi6(const struct flowi6 *fl6, struct flow_keys *keys) in __get_hash_from_flowi6() argument
805 memset(keys, 0, sizeof(*keys)); in __get_hash_from_flowi6()
807 memcpy(&keys->addrs.v6addrs.src, &fl6->saddr, in __get_hash_from_flowi6()
808 sizeof(keys->addrs.v6addrs.src)); in __get_hash_from_flowi6()
809 memcpy(&keys->addrs.v6addrs.dst, &fl6->daddr, in __get_hash_from_flowi6()
810 sizeof(keys->addrs.v6addrs.dst)); in __get_hash_from_flowi6()
811 keys->control.addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS; in __get_hash_from_flowi6()
812 keys->ports.src = fl6->fl6_sport; in __get_hash_from_flowi6()
813 keys->ports.dst = fl6->fl6_dport; in __get_hash_from_flowi6()
814 keys->keyid.keyid = fl6->fl6_gre_key; in __get_hash_from_flowi6()
815 keys->tags.flow_label = (__force u32)fl6->flowlabel; in __get_hash_from_flowi6()
816 keys->basic.ip_proto = fl6->flowi6_proto; in __get_hash_from_flowi6()
818 return flow_hash_from_keys(keys); in __get_hash_from_flowi6()
822 __u32 __get_hash_from_flowi4(const struct flowi4 *fl4, struct flow_keys *keys) in __get_hash_from_flowi4() argument
824 memset(keys, 0, sizeof(*keys)); in __get_hash_from_flowi4()
826 keys->addrs.v4addrs.src = fl4->saddr; in __get_hash_from_flowi4()
827 keys->addrs.v4addrs.dst = fl4->daddr; in __get_hash_from_flowi4()
828 keys->control.addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS; in __get_hash_from_flowi4()
829 keys->ports.src = fl4->fl4_sport; in __get_hash_from_flowi4()
830 keys->ports.dst = fl4->fl4_dport; in __get_hash_from_flowi4()
831 keys->keyid.keyid = fl4->fl4_gre_key; in __get_hash_from_flowi4()
832 keys->basic.ip_proto = fl4->flowi4_proto; in __get_hash_from_flowi4()
834 return flow_hash_from_keys(keys); in __get_hash_from_flowi4()