Lines Matching refs:keys
637 static inline void __flow_hash_consistentify(struct flow_keys *keys) in __flow_hash_consistentify() argument
641 switch (keys->control.addr_type) { in __flow_hash_consistentify()
643 addr_diff = (__force u32)keys->addrs.v4addrs.dst - in __flow_hash_consistentify()
644 (__force u32)keys->addrs.v4addrs.src; in __flow_hash_consistentify()
647 ((__force u16)keys->ports.dst < in __flow_hash_consistentify()
648 (__force u16)keys->ports.src))) { in __flow_hash_consistentify()
649 swap(keys->addrs.v4addrs.src, keys->addrs.v4addrs.dst); in __flow_hash_consistentify()
650 swap(keys->ports.src, keys->ports.dst); in __flow_hash_consistentify()
654 addr_diff = memcmp(&keys->addrs.v6addrs.dst, in __flow_hash_consistentify()
655 &keys->addrs.v6addrs.src, in __flow_hash_consistentify()
656 sizeof(keys->addrs.v6addrs.dst)); in __flow_hash_consistentify()
659 ((__force u16)keys->ports.dst < in __flow_hash_consistentify()
660 (__force u16)keys->ports.src))) { in __flow_hash_consistentify()
662 swap(keys->addrs.v6addrs.src.s6_addr32[i], in __flow_hash_consistentify()
663 keys->addrs.v6addrs.dst.s6_addr32[i]); in __flow_hash_consistentify()
664 swap(keys->ports.src, keys->ports.dst); in __flow_hash_consistentify()
670 static inline u32 __flow_hash_from_keys(struct flow_keys *keys, u32 keyval) in __flow_hash_from_keys() argument
674 __flow_hash_consistentify(keys); in __flow_hash_from_keys()
676 hash = __flow_hash_words(flow_keys_hash_start(keys), in __flow_hash_from_keys()
677 flow_keys_hash_length(keys), keyval); in __flow_hash_from_keys()
684 u32 flow_hash_from_keys(struct flow_keys *keys) in flow_hash_from_keys() argument
687 return __flow_hash_from_keys(keys, hashrnd); in flow_hash_from_keys()
692 struct flow_keys *keys, u32 keyval) in ___skb_get_hash() argument
694 skb_flow_dissect_flow_keys(skb, keys, in ___skb_get_hash()
697 return __flow_hash_from_keys(keys, keyval); in ___skb_get_hash()
731 struct flow_keys keys; in __skb_get_hash_symmetric() local
735 memset(&keys, 0, sizeof(keys)); in __skb_get_hash_symmetric()
736 __skb_flow_dissect(skb, &flow_keys_dissector_symmetric, &keys, in __skb_get_hash_symmetric()
740 return __flow_hash_from_keys(&keys, hashrnd); in __skb_get_hash_symmetric()
755 struct flow_keys keys; in __skb_get_hash() local
760 hash = ___skb_get_hash(skb, &keys, hashrnd); in __skb_get_hash()
762 __skb_set_sw_hash(skb, hash, flow_keys_have_l4(&keys)); in __skb_get_hash()
768 struct flow_keys keys; in skb_get_hash_perturb() local
770 return ___skb_get_hash(skb, &keys, perturb); in skb_get_hash_perturb()
776 struct flow_keys keys; in __skb_get_hash_flowi6() local
778 memset(&keys, 0, sizeof(keys)); in __skb_get_hash_flowi6()
780 memcpy(&keys.addrs.v6addrs.src, &fl6->saddr, in __skb_get_hash_flowi6()
781 sizeof(keys.addrs.v6addrs.src)); in __skb_get_hash_flowi6()
782 memcpy(&keys.addrs.v6addrs.dst, &fl6->daddr, in __skb_get_hash_flowi6()
783 sizeof(keys.addrs.v6addrs.dst)); in __skb_get_hash_flowi6()
784 keys.control.addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS; in __skb_get_hash_flowi6()
785 keys.ports.src = fl6->fl6_sport; in __skb_get_hash_flowi6()
786 keys.ports.dst = fl6->fl6_dport; in __skb_get_hash_flowi6()
787 keys.keyid.keyid = fl6->fl6_gre_key; in __skb_get_hash_flowi6()
788 keys.tags.flow_label = (__force u32)fl6->flowlabel; in __skb_get_hash_flowi6()
789 keys.basic.ip_proto = fl6->flowi6_proto; in __skb_get_hash_flowi6()
791 __skb_set_sw_hash(skb, flow_hash_from_keys(&keys), in __skb_get_hash_flowi6()
792 flow_keys_have_l4(&keys)); in __skb_get_hash_flowi6()
800 struct flow_keys keys; in __skb_get_hash_flowi4() local
802 memset(&keys, 0, sizeof(keys)); in __skb_get_hash_flowi4()
804 keys.addrs.v4addrs.src = fl4->saddr; in __skb_get_hash_flowi4()
805 keys.addrs.v4addrs.dst = fl4->daddr; in __skb_get_hash_flowi4()
806 keys.control.addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS; in __skb_get_hash_flowi4()
807 keys.ports.src = fl4->fl4_sport; in __skb_get_hash_flowi4()
808 keys.ports.dst = fl4->fl4_dport; in __skb_get_hash_flowi4()
809 keys.keyid.keyid = fl4->fl4_gre_key; in __skb_get_hash_flowi4()
810 keys.basic.ip_proto = fl4->flowi4_proto; in __skb_get_hash_flowi4()
812 __skb_set_sw_hash(skb, flow_hash_from_keys(&keys), in __skb_get_hash_flowi4()
813 flow_keys_have_l4(&keys)); in __skb_get_hash_flowi4()
820 const struct flow_keys *keys, int hlen) in __skb_get_poff() argument
822 u32 poff = keys->control.thoff; in __skb_get_poff()
825 if ((keys->control.flags & FLOW_DIS_IS_FRAGMENT) && in __skb_get_poff()
826 !(keys->control.flags & FLOW_DIS_FIRST_FRAG)) in __skb_get_poff()
829 switch (keys->basic.ip_proto) { in __skb_get_poff()
881 struct flow_keys keys; in skb_get_poff() local
883 if (!skb_flow_dissect_flow_keys(skb, &keys, 0)) in skb_get_poff()
886 return __skb_get_poff(skb, skb->data, &keys, skb_headlen(skb)); in skb_get_poff()
889 __u32 __get_hash_from_flowi6(const struct flowi6 *fl6, struct flow_keys *keys) in __get_hash_from_flowi6() argument
891 memset(keys, 0, sizeof(*keys)); in __get_hash_from_flowi6()
893 memcpy(&keys->addrs.v6addrs.src, &fl6->saddr, in __get_hash_from_flowi6()
894 sizeof(keys->addrs.v6addrs.src)); in __get_hash_from_flowi6()
895 memcpy(&keys->addrs.v6addrs.dst, &fl6->daddr, in __get_hash_from_flowi6()
896 sizeof(keys->addrs.v6addrs.dst)); in __get_hash_from_flowi6()
897 keys->control.addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS; in __get_hash_from_flowi6()
898 keys->ports.src = fl6->fl6_sport; in __get_hash_from_flowi6()
899 keys->ports.dst = fl6->fl6_dport; in __get_hash_from_flowi6()
900 keys->keyid.keyid = fl6->fl6_gre_key; in __get_hash_from_flowi6()
901 keys->tags.flow_label = (__force u32)fl6->flowlabel; in __get_hash_from_flowi6()
902 keys->basic.ip_proto = fl6->flowi6_proto; in __get_hash_from_flowi6()
904 return flow_hash_from_keys(keys); in __get_hash_from_flowi6()
908 __u32 __get_hash_from_flowi4(const struct flowi4 *fl4, struct flow_keys *keys) in __get_hash_from_flowi4() argument
910 memset(keys, 0, sizeof(*keys)); in __get_hash_from_flowi4()
912 keys->addrs.v4addrs.src = fl4->saddr; in __get_hash_from_flowi4()
913 keys->addrs.v4addrs.dst = fl4->daddr; in __get_hash_from_flowi4()
914 keys->control.addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS; in __get_hash_from_flowi4()
915 keys->ports.src = fl4->fl4_sport; in __get_hash_from_flowi4()
916 keys->ports.dst = fl4->fl4_dport; in __get_hash_from_flowi4()
917 keys->keyid.keyid = fl4->fl4_gre_key; in __get_hash_from_flowi4()
918 keys->basic.ip_proto = fl4->flowi4_proto; in __get_hash_from_flowi4()
920 return flow_hash_from_keys(keys); in __get_hash_from_flowi4()