diff options
author | David S. Miller <davem@davemloft.net> | 2008-04-08 19:50:44 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-04-08 19:50:44 -0400 |
commit | 21f644f3eabde637f255f75ad05d0821a7a36b7f (patch) | |
tree | 2dc70aade59bf77c2d156b8e2544906128368f87 /net/atm | |
parent | 6adb4f733e9996b4fd68a6db50dd51bd2463ccac (diff) |
[NET]: Undo code bloat in hot paths due to print_mac().
If print_mac() is used inside of a pr_debug() the compiler
can't see that the call is redundant so still performs it
even of pr_debug() ends up being a nop.
So don't use print_mac() in such cases in hot code paths,
use MAC_FMT et al. instead.
As noted by Joe Perches, pr_debug() could be modified to
handle this better, but that is a change to an interface
used by the entire kernel and thus needs to be validated
carefully. This here is thus the less risky fix for
2.6.25
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/atm')
-rw-r--r-- | net/atm/lec.c | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/net/atm/lec.c b/net/atm/lec.c index a2efa7ff41f1..3235c57615e4 100644 --- a/net/atm/lec.c +++ b/net/atm/lec.c | |||
@@ -266,7 +266,6 @@ static int lec_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
266 | char buf[300]; | 266 | char buf[300]; |
267 | int i = 0; | 267 | int i = 0; |
268 | #endif /* DUMP_PACKETS >0 */ | 268 | #endif /* DUMP_PACKETS >0 */ |
269 | DECLARE_MAC_BUF(mac); | ||
270 | 269 | ||
271 | pr_debug("lec_start_xmit called\n"); | 270 | pr_debug("lec_start_xmit called\n"); |
272 | if (!priv->lecd) { | 271 | if (!priv->lecd) { |
@@ -374,15 +373,19 @@ static int lec_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
374 | if (entry && (entry->tx_wait.qlen < LEC_UNRES_QUE_LEN)) { | 373 | if (entry && (entry->tx_wait.qlen < LEC_UNRES_QUE_LEN)) { |
375 | pr_debug("%s:lec_start_xmit: queuing packet, ", | 374 | pr_debug("%s:lec_start_xmit: queuing packet, ", |
376 | dev->name); | 375 | dev->name); |
377 | pr_debug("MAC address %s\n", | 376 | pr_debug("MAC address " MAC_FMT "\n", |
378 | print_mac(mac, lec_h->h_dest)); | 377 | lec_h->h_dest[0], lec_h->h_dest[1], |
378 | lec_h->h_dest[2], lec_h->h_dest[3], | ||
379 | lec_h->h_dest[4], lec_h->h_dest[5]); | ||
379 | skb_queue_tail(&entry->tx_wait, skb); | 380 | skb_queue_tail(&entry->tx_wait, skb); |
380 | } else { | 381 | } else { |
381 | pr_debug | 382 | pr_debug |
382 | ("%s:lec_start_xmit: tx queue full or no arp entry, dropping, ", | 383 | ("%s:lec_start_xmit: tx queue full or no arp entry, dropping, ", |
383 | dev->name); | 384 | dev->name); |
384 | pr_debug("MAC address %s\n", | 385 | pr_debug("MAC address " MAC_FMT "\n", |
385 | print_mac(mac, lec_h->h_dest)); | 386 | lec_h->h_dest[0], lec_h->h_dest[1], |
387 | lec_h->h_dest[2], lec_h->h_dest[3], | ||
388 | lec_h->h_dest[4], lec_h->h_dest[5]); | ||
386 | priv->stats.tx_dropped++; | 389 | priv->stats.tx_dropped++; |
387 | dev_kfree_skb(skb); | 390 | dev_kfree_skb(skb); |
388 | } | 391 | } |
@@ -394,8 +397,10 @@ static int lec_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
394 | 397 | ||
395 | while (entry && (skb2 = skb_dequeue(&entry->tx_wait))) { | 398 | while (entry && (skb2 = skb_dequeue(&entry->tx_wait))) { |
396 | pr_debug("lec.c: emptying tx queue, "); | 399 | pr_debug("lec.c: emptying tx queue, "); |
397 | pr_debug("MAC address %s\n", | 400 | pr_debug("MAC address " MAC_FMT "\n", |
398 | print_mac(mac, lec_h->h_dest)); | 401 | lec_h->h_dest[0], lec_h->h_dest[1], |
402 | lec_h->h_dest[2], lec_h->h_dest[3], | ||
403 | lec_h->h_dest[4], lec_h->h_dest[5]); | ||
399 | lec_send(vcc, skb2, priv); | 404 | lec_send(vcc, skb2, priv); |
400 | } | 405 | } |
401 | 406 | ||
@@ -449,7 +454,6 @@ static int lec_atm_send(struct atm_vcc *vcc, struct sk_buff *skb) | |||
449 | struct lec_arp_table *entry; | 454 | struct lec_arp_table *entry; |
450 | int i; | 455 | int i; |
451 | char *tmp; /* FIXME */ | 456 | char *tmp; /* FIXME */ |
452 | DECLARE_MAC_BUF(mac); | ||
453 | 457 | ||
454 | atomic_sub(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc); | 458 | atomic_sub(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc); |
455 | mesg = (struct atmlec_msg *)skb->data; | 459 | mesg = (struct atmlec_msg *)skb->data; |
@@ -536,9 +540,14 @@ static int lec_atm_send(struct atm_vcc *vcc, struct sk_buff *skb) | |||
536 | struct net_bridge_fdb_entry *f; | 540 | struct net_bridge_fdb_entry *f; |
537 | 541 | ||
538 | pr_debug | 542 | pr_debug |
539 | ("%s: bridge zeppelin asks about %s\n", | 543 | ("%s: bridge zeppelin asks about " MAC_FMT "\n", |
540 | dev->name, | 544 | dev->name, |
541 | print_mac(mac, mesg->content.proxy.mac_addr)); | 545 | mesg->content.proxy.mac_addr[0], |
546 | mesg->content.proxy.mac_addr[1], | ||
547 | mesg->content.proxy.mac_addr[2], | ||
548 | mesg->content.proxy.mac_addr[3], | ||
549 | mesg->content.proxy.mac_addr[4], | ||
550 | mesg->content.proxy.mac_addr[5]); | ||
542 | 551 | ||
543 | if (br_fdb_get_hook == NULL || dev->br_port == NULL) | 552 | if (br_fdb_get_hook == NULL || dev->br_port == NULL) |
544 | break; | 553 | break; |