aboutsummaryrefslogtreecommitdiffstats
path: root/net/sched/act_csum.c
diff options
context:
space:
mode:
authorChangli Gao <xiaosuo@gmail.com>2010-08-22 23:27:58 -0400
committerDavid S. Miller <davem@davemloft.net>2010-08-23 23:43:15 -0400
commit0eec32ff350348e635b3b8d87b989117ce045d25 (patch)
treef72ca99d915191d89e3446d599c0937cf6405acf /net/sched/act_csum.c
parent7abac686026ec1af38f6e766369dbfe4007949b6 (diff)
net_sched: act_csum: coding style cleanup
Signed-off-by: Changli Gao <xiaosuo@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sched/act_csum.c')
-rw-r--r--net/sched/act_csum.c77
1 files changed, 38 insertions, 39 deletions
diff --git a/net/sched/act_csum.c b/net/sched/act_csum.c
index be41f1cc10ee..67dc7ce9b63a 100644
--- a/net/sched/act_csum.c
+++ b/net/sched/act_csum.c
@@ -42,9 +42,9 @@ static u32 csum_idx_gen;
42static DEFINE_RWLOCK(csum_lock); 42static DEFINE_RWLOCK(csum_lock);
43 43
44static struct tcf_hashinfo csum_hash_info = { 44static struct tcf_hashinfo csum_hash_info = {
45 .htab = tcf_csum_ht, 45 .htab = tcf_csum_ht,
46 .hmask = CSUM_TAB_MASK, 46 .hmask = CSUM_TAB_MASK,
47 .lock = &csum_lock, 47 .lock = &csum_lock,
48}; 48};
49 49
50static const struct nla_policy csum_policy[TCA_CSUM_MAX + 1] = { 50static const struct nla_policy csum_policy[TCA_CSUM_MAX + 1] = {
@@ -73,7 +73,8 @@ static int tcf_csum_init(struct nlattr *nla, struct nlattr *est,
73 73
74 pc = tcf_hash_check(parm->index, a, bind, &csum_hash_info); 74 pc = tcf_hash_check(parm->index, a, bind, &csum_hash_info);
75 if (!pc) { 75 if (!pc) {
76 pc = tcf_hash_create(parm->index, est, a, sizeof(*p), bind, &csum_idx_gen, &csum_hash_info); 76 pc = tcf_hash_create(parm->index, est, a, sizeof(*p), bind,
77 &csum_idx_gen, &csum_hash_info);
77 if (IS_ERR(pc)) 78 if (IS_ERR(pc))
78 return PTR_ERR(pc); 79 return PTR_ERR(pc);
79 p = to_tcf_csum(pc); 80 p = to_tcf_csum(pc);
@@ -230,8 +231,9 @@ static int tcf_csum_ipv4_udp(struct sk_buff *skb, struct iphdr *iph,
230 struct udphdr *udph; 231 struct udphdr *udph;
231 u16 ul; 232 u16 ul;
232 233
233 /* Support both UDP and UDPLITE checksum algorithms, 234 /*
234 * Don't use udph->len to get the real length without any protocol check, 235 * Support both UDP and UDPLITE checksum algorithms, Don't use
236 * udph->len to get the real length without any protocol check,
235 * UDPLITE uses udph->len for another thing, 237 * UDPLITE uses udph->len for another thing,
236 * Use iph->tot_len, or just ipl. 238 * Use iph->tot_len, or just ipl.
237 */ 239 */
@@ -249,10 +251,8 @@ static int tcf_csum_ipv4_udp(struct sk_buff *skb, struct iphdr *iph,
249 if (udplite) { 251 if (udplite) {
250 if (ul == 0) 252 if (ul == 0)
251 skb->csum = csum_partial(udph, ipl - ihl, 0); 253 skb->csum = csum_partial(udph, ipl - ihl, 0);
252
253 else if ((ul >= sizeof(*udph)) && (ul <= ipl - ihl)) 254 else if ((ul >= sizeof(*udph)) && (ul <= ipl - ihl))
254 skb->csum = csum_partial(udph, ul, 0); 255 skb->csum = csum_partial(udph, ul, 0);
255
256 else 256 else
257 goto ignore_obscure_skb; 257 goto ignore_obscure_skb;
258 } else { 258 } else {
@@ -282,8 +282,9 @@ static int tcf_csum_ipv6_udp(struct sk_buff *skb, struct ipv6hdr *ip6h,
282 struct udphdr *udph; 282 struct udphdr *udph;
283 u16 ul; 283 u16 ul;
284 284
285 /* Support both UDP and UDPLITE checksum algorithms, 285 /*
286 * Don't use udph->len to get the real length without any protocol check, 286 * Support both UDP and UDPLITE checksum algorithms, Don't use
287 * udph->len to get the real length without any protocol check,
287 * UDPLITE uses udph->len for another thing, 288 * UDPLITE uses udph->len for another thing,
288 * Use ip6h->payload_len + sizeof(*ip6h) ... , or just ipl. 289 * Use ip6h->payload_len + sizeof(*ip6h) ... , or just ipl.
289 */ 290 */
@@ -340,32 +341,32 @@ static int tcf_csum_ipv4(struct sk_buff *skb, u32 update_flags)
340 switch (iph->frag_off & htons(IP_OFFSET) ? 0 : iph->protocol) { 341 switch (iph->frag_off & htons(IP_OFFSET) ? 0 : iph->protocol) {
341 case IPPROTO_ICMP: 342 case IPPROTO_ICMP:
342 if (update_flags & TCA_CSUM_UPDATE_FLAG_ICMP) 343 if (update_flags & TCA_CSUM_UPDATE_FLAG_ICMP)
343 if (!tcf_csum_ipv4_icmp(skb, 344 if (!tcf_csum_ipv4_icmp(skb, iph->ihl * 4,
344 iph->ihl * 4, ntohs(iph->tot_len))) 345 ntohs(iph->tot_len)))
345 goto fail; 346 goto fail;
346 break; 347 break;
347 case IPPROTO_IGMP: 348 case IPPROTO_IGMP:
348 if (update_flags & TCA_CSUM_UPDATE_FLAG_IGMP) 349 if (update_flags & TCA_CSUM_UPDATE_FLAG_IGMP)
349 if (!tcf_csum_ipv4_igmp(skb, 350 if (!tcf_csum_ipv4_igmp(skb, iph->ihl * 4,
350 iph->ihl * 4, ntohs(iph->tot_len))) 351 ntohs(iph->tot_len)))
351 goto fail; 352 goto fail;
352 break; 353 break;
353 case IPPROTO_TCP: 354 case IPPROTO_TCP:
354 if (update_flags & TCA_CSUM_UPDATE_FLAG_TCP) 355 if (update_flags & TCA_CSUM_UPDATE_FLAG_TCP)
355 if (!tcf_csum_ipv4_tcp(skb, iph, 356 if (!tcf_csum_ipv4_tcp(skb, iph, iph->ihl * 4,
356 iph->ihl * 4, ntohs(iph->tot_len))) 357 ntohs(iph->tot_len)))
357 goto fail; 358 goto fail;
358 break; 359 break;
359 case IPPROTO_UDP: 360 case IPPROTO_UDP:
360 if (update_flags & TCA_CSUM_UPDATE_FLAG_UDP) 361 if (update_flags & TCA_CSUM_UPDATE_FLAG_UDP)
361 if (!tcf_csum_ipv4_udp(skb, iph, 362 if (!tcf_csum_ipv4_udp(skb, iph, iph->ihl * 4,
362 iph->ihl * 4, ntohs(iph->tot_len), 0)) 363 ntohs(iph->tot_len), 0))
363 goto fail; 364 goto fail;
364 break; 365 break;
365 case IPPROTO_UDPLITE: 366 case IPPROTO_UDPLITE:
366 if (update_flags & TCA_CSUM_UPDATE_FLAG_UDPLITE) 367 if (update_flags & TCA_CSUM_UPDATE_FLAG_UDPLITE)
367 if (!tcf_csum_ipv4_udp(skb, iph, 368 if (!tcf_csum_ipv4_udp(skb, iph, iph->ihl * 4,
368 iph->ihl * 4, ntohs(iph->tot_len), 1)) 369 ntohs(iph->tot_len), 1))
369 goto fail; 370 goto fail;
370 break; 371 break;
371 } 372 }
@@ -386,7 +387,7 @@ fail:
386} 387}
387 388
388static int tcf_csum_ipv6_hopopts(struct ipv6_opt_hdr *ip6xh, 389static int tcf_csum_ipv6_hopopts(struct ipv6_opt_hdr *ip6xh,
389 unsigned int ixhl, unsigned int *pl) 390 unsigned int ixhl, unsigned int *pl)
390{ 391{
391 int off, len, optlen; 392 int off, len, optlen;
392 unsigned char *xh = (void *)ip6xh; 393 unsigned char *xh = (void *)ip6xh;
@@ -395,8 +396,7 @@ static int tcf_csum_ipv6_hopopts(struct ipv6_opt_hdr *ip6xh,
395 len = ixhl - off; 396 len = ixhl - off;
396 397
397 while (len > 1) { 398 while (len > 1) {
398 switch (xh[off]) 399 switch (xh[off]) {
399 {
400 case IPV6_TLV_PAD0: 400 case IPV6_TLV_PAD0:
401 optlen = 1; 401 optlen = 1;
402 break; 402 break;
@@ -476,14 +476,14 @@ static int tcf_csum_ipv6(struct sk_buff *skb, u32 update_flags)
476 goto done; 476 goto done;
477 case IPPROTO_UDP: 477 case IPPROTO_UDP:
478 if (update_flags & TCA_CSUM_UPDATE_FLAG_UDP) 478 if (update_flags & TCA_CSUM_UPDATE_FLAG_UDP)
479 if (!tcf_csum_ipv6_udp(skb, ip6h, 479 if (!tcf_csum_ipv6_udp(skb, ip6h, hl,
480 hl, pl + sizeof(*ip6h), 0)) 480 pl + sizeof(*ip6h), 0))
481 goto fail; 481 goto fail;
482 goto done; 482 goto done;
483 case IPPROTO_UDPLITE: 483 case IPPROTO_UDPLITE:
484 if (update_flags & TCA_CSUM_UPDATE_FLAG_UDPLITE) 484 if (update_flags & TCA_CSUM_UPDATE_FLAG_UDPLITE)
485 if (!tcf_csum_ipv6_udp(skb, ip6h, 485 if (!tcf_csum_ipv6_udp(skb, ip6h, hl,
486 hl, pl + sizeof(*ip6h), 1)) 486 pl + sizeof(*ip6h), 1))
487 goto fail; 487 goto fail;
488 goto done; 488 goto done;
489 default: 489 default:
@@ -544,7 +544,6 @@ static int tcf_csum_dump(struct sk_buff *skb,
544 struct tcf_csum *p = a->priv; 544 struct tcf_csum *p = a->priv;
545 struct tc_csum opt = { 545 struct tc_csum opt = {
546 .update_flags = p->update_flags, 546 .update_flags = p->update_flags,
547
548 .index = p->tcf_index, 547 .index = p->tcf_index,
549 .action = p->tcf_action, 548 .action = p->tcf_action,
550 .refcnt = p->tcf_refcnt - ref, 549 .refcnt = p->tcf_refcnt - ref,
@@ -566,17 +565,17 @@ nla_put_failure:
566} 565}
567 566
568static struct tc_action_ops act_csum_ops = { 567static struct tc_action_ops act_csum_ops = {
569 .kind = "csum", 568 .kind = "csum",
570 .hinfo = &csum_hash_info, 569 .hinfo = &csum_hash_info,
571 .type = TCA_ACT_CSUM, 570 .type = TCA_ACT_CSUM,
572 .capab = TCA_CAP_NONE, 571 .capab = TCA_CAP_NONE,
573 .owner = THIS_MODULE, 572 .owner = THIS_MODULE,
574 .act = tcf_csum, 573 .act = tcf_csum,
575 .dump = tcf_csum_dump, 574 .dump = tcf_csum_dump,
576 .cleanup = tcf_csum_cleanup, 575 .cleanup = tcf_csum_cleanup,
577 .lookup = tcf_hash_search, 576 .lookup = tcf_hash_search,
578 .init = tcf_csum_init, 577 .init = tcf_csum_init,
579 .walk = tcf_generic_walker 578 .walk = tcf_generic_walker
580}; 579};
581 580
582MODULE_DESCRIPTION("Checksum updating actions"); 581MODULE_DESCRIPTION("Checksum updating actions");