Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0382b9c3 authored by Al Viro's avatar Al Viro Committed by David S. Miller
Browse files

[PKT_SCHED]: annotate cls_u32

parent e6f1cebf
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -201,8 +201,8 @@ enum

struct tc_u32_key
{
	__u32		mask;
	__u32		val;
	__be32		mask;
	__be32		val;
	int		off;
	int		offmask;
};
@@ -213,12 +213,12 @@ struct tc_u32_sel
	unsigned char		offshift;
	unsigned char		nkeys;

	__u16			offmask;
	__be16			offmask;
	__u16			off;
	short			offoff;

	short			hoff;
	__u32			hmask;
	__be32			hmask;
	struct tc_u32_key	keys[0];
};

+4 −4
Original line number Diff line number Diff line
@@ -89,7 +89,7 @@ static const struct tcf_ext_map u32_ext_map = {

static struct tc_u_common *u32_list;

static __inline__ unsigned u32_hash_fold(u32 key, struct tc_u32_sel *sel, u8 fshift)
static __inline__ unsigned u32_hash_fold(__be32 key, struct tc_u32_sel *sel, u8 fshift)
{
	unsigned h = ntohl(key & sel->hmask)>>fshift;

@@ -137,7 +137,7 @@ static int u32_classify(struct sk_buff *skb, struct tcf_proto *tp, struct tcf_re

		for (i = n->sel.nkeys; i>0; i--, key++) {

			if ((*(u32*)(ptr+key->off+(off2&key->offmask))^key->val)&key->mask) {
			if ((*(__be32*)(ptr+key->off+(off2&key->offmask))^key->val)&key->mask) {
				n = n->next;
				goto next_knode;
			}
@@ -182,7 +182,7 @@ static int u32_classify(struct sk_buff *skb, struct tcf_proto *tp, struct tcf_re
		ht = n->ht_down;
		sel = 0;
		if (ht->divisor)
			sel = ht->divisor&u32_hash_fold(*(u32*)(ptr+n->sel.hoff), &n->sel,n->fshift);
			sel = ht->divisor&u32_hash_fold(*(__be32*)(ptr+n->sel.hoff), &n->sel,n->fshift);

		if (!(n->sel.flags&(TC_U32_VAROFFSET|TC_U32_OFFSET|TC_U32_EAT)))
			goto next_ht;
@@ -190,7 +190,7 @@ static int u32_classify(struct sk_buff *skb, struct tcf_proto *tp, struct tcf_re
		if (n->sel.flags&(TC_U32_OFFSET|TC_U32_VAROFFSET)) {
			off2 = n->sel.off + 3;
			if (n->sel.flags&TC_U32_VAROFFSET)
				off2 += ntohs(n->sel.offmask & *(u16*)(ptr+n->sel.offoff)) >>n->sel.offshift;
				off2 += ntohs(n->sel.offmask & *(__be16*)(ptr+n->sel.offoff)) >>n->sel.offshift;
			off2 &= ~3;
		}
		if (n->sel.flags&TC_U32_EAT) {
+1 −1
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@ static int em_u32_match(struct sk_buff *skb, struct tcf_ematch *em,
	if (!tcf_valid_offset(skb, ptr, sizeof(u32)))
		return 0;

	return !(((*(u32*) ptr)  ^ key->val) & key->mask);
	return !(((*(__be32*) ptr)  ^ key->val) & key->mask);
}

static struct tcf_ematch_ops em_u32_ops = {