aboutsummaryrefslogtreecommitdiffstats
path: root/net/atm/lec.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/atm/lec.c')
-rw-r--r--net/atm/lec.c192
1 files changed, 82 insertions, 110 deletions
diff --git a/net/atm/lec.c b/net/atm/lec.c
index 42749b7b917c..6873813c3c99 100644
--- a/net/atm/lec.c
+++ b/net/atm/lec.c
@@ -4,6 +4,8 @@
4 * Marko Kiiskila <mkiiskila@yahoo.com> 4 * Marko Kiiskila <mkiiskila@yahoo.com>
5 */ 5 */
6 6
7#define pr_fmt(fmt) KBUILD_MODNAME ":%s: " fmt, __func__
8
7#include <linux/kernel.h> 9#include <linux/kernel.h>
8#include <linux/bitops.h> 10#include <linux/bitops.h>
9#include <linux/capability.h> 11#include <linux/capability.h>
@@ -242,7 +244,7 @@ lec_send(struct atm_vcc *vcc, struct sk_buff *skb)
242 244
243static void lec_tx_timeout(struct net_device *dev) 245static void lec_tx_timeout(struct net_device *dev)
244{ 246{
245 printk(KERN_INFO "%s: tx timeout\n", dev->name); 247 pr_info("%s\n", dev->name);
246 dev->trans_start = jiffies; 248 dev->trans_start = jiffies;
247 netif_wake_queue(dev); 249 netif_wake_queue(dev);
248} 250}
@@ -266,7 +268,7 @@ static netdev_tx_t lec_start_xmit(struct sk_buff *skb,
266 int i = 0; 268 int i = 0;
267#endif /* DUMP_PACKETS >0 */ 269#endif /* DUMP_PACKETS >0 */
268 270
269 pr_debug("lec_start_xmit called\n"); 271 pr_debug("called\n");
270 if (!priv->lecd) { 272 if (!priv->lecd) {
271 printk("%s:No lecd attached\n", dev->name); 273 printk("%s:No lecd attached\n", dev->name);
272 dev->stats.tx_errors++; 274 dev->stats.tx_errors++;
@@ -276,8 +278,8 @@ static netdev_tx_t lec_start_xmit(struct sk_buff *skb,
276 } 278 }
277 279
278 pr_debug("skbuff head:%lx data:%lx tail:%lx end:%lx\n", 280 pr_debug("skbuff head:%lx data:%lx tail:%lx end:%lx\n",
279 (long)skb->head, (long)skb->data, (long)skb_tail_pointer(skb), 281 (long)skb->head, (long)skb->data, (long)skb_tail_pointer(skb),
280 (long)skb_end_pointer(skb)); 282 (long)skb_end_pointer(skb));
281#if defined(CONFIG_BRIDGE) || defined(CONFIG_BRIDGE_MODULE) 283#if defined(CONFIG_BRIDGE) || defined(CONFIG_BRIDGE_MODULE)
282 if (memcmp(skb->data, bridge_ula_lec, sizeof(bridge_ula_lec)) == 0) 284 if (memcmp(skb->data, bridge_ula_lec, sizeof(bridge_ula_lec)) == 0)
283 lec_handle_bridge(skb, dev); 285 lec_handle_bridge(skb, dev);
@@ -286,7 +288,7 @@ static netdev_tx_t lec_start_xmit(struct sk_buff *skb,
286 /* Make sure we have room for lec_id */ 288 /* Make sure we have room for lec_id */
287 if (skb_headroom(skb) < 2) { 289 if (skb_headroom(skb) < 2) {
288 290
289 pr_debug("lec_start_xmit: reallocating skb\n"); 291 pr_debug("reallocating skb\n");
290 skb2 = skb_realloc_headroom(skb, LEC_HEADER_LEN); 292 skb2 = skb_realloc_headroom(skb, LEC_HEADER_LEN);
291 kfree_skb(skb); 293 kfree_skb(skb);
292 if (skb2 == NULL) 294 if (skb2 == NULL)
@@ -367,19 +369,16 @@ static netdev_tx_t lec_start_xmit(struct sk_buff *skb,
367#endif 369#endif
368 entry = NULL; 370 entry = NULL;
369 vcc = lec_arp_resolve(priv, dst, is_rdesc, &entry); 371 vcc = lec_arp_resolve(priv, dst, is_rdesc, &entry);
370 pr_debug("%s:vcc:%p vcc_flags:%lx, entry:%p\n", dev->name, 372 pr_debug("%s:vcc:%p vcc_flags:%lx, entry:%p\n",
371 vcc, vcc ? vcc->flags : 0, entry); 373 dev->name, vcc, vcc ? vcc->flags : 0, entry);
372 if (!vcc || !test_bit(ATM_VF_READY, &vcc->flags)) { 374 if (!vcc || !test_bit(ATM_VF_READY, &vcc->flags)) {
373 if (entry && (entry->tx_wait.qlen < LEC_UNRES_QUE_LEN)) { 375 if (entry && (entry->tx_wait.qlen < LEC_UNRES_QUE_LEN)) {
374 pr_debug("%s:lec_start_xmit: queuing packet, ", 376 pr_debug("%s:queuing packet, MAC address %pM\n",
375 dev->name); 377 dev->name, lec_h->h_dest);
376 pr_debug("MAC address %pM\n", lec_h->h_dest);
377 skb_queue_tail(&entry->tx_wait, skb); 378 skb_queue_tail(&entry->tx_wait, skb);
378 } else { 379 } else {
379 pr_debug 380 pr_debug("%s:tx queue full or no arp entry, dropping, MAC address: %pM\n",
380 ("%s:lec_start_xmit: tx queue full or no arp entry, dropping, ", 381 dev->name, lec_h->h_dest);
381 dev->name);
382 pr_debug("MAC address %pM\n", lec_h->h_dest);
383 dev->stats.tx_dropped++; 382 dev->stats.tx_dropped++;
384 dev_kfree_skb(skb); 383 dev_kfree_skb(skb);
385 } 384 }
@@ -390,8 +389,7 @@ static netdev_tx_t lec_start_xmit(struct sk_buff *skb,
390#endif /* DUMP_PACKETS > 0 */ 389#endif /* DUMP_PACKETS > 0 */
391 390
392 while (entry && (skb2 = skb_dequeue(&entry->tx_wait))) { 391 while (entry && (skb2 = skb_dequeue(&entry->tx_wait))) {
393 pr_debug("lec.c: emptying tx queue, "); 392 pr_debug("emptying tx queue, MAC address %pM\n", lec_h->h_dest);
394 pr_debug("MAC address %pM\n", lec_h->h_dest);
395 lec_send(vcc, skb2); 393 lec_send(vcc, skb2);
396 } 394 }
397 395
@@ -477,10 +475,10 @@ static int lec_atm_send(struct atm_vcc *vcc, struct sk_buff *skb)
477 mesg->content.normal.atm_addr, 475 mesg->content.normal.atm_addr,
478 mesg->content.normal.flag, 476 mesg->content.normal.flag,
479 mesg->content.normal.targetless_le_arp); 477 mesg->content.normal.targetless_le_arp);
480 pr_debug("lec: in l_arp_update\n"); 478 pr_debug("in l_arp_update\n");
481 if (mesg->sizeoftlvs != 0) { /* LANE2 3.1.5 */ 479 if (mesg->sizeoftlvs != 0) { /* LANE2 3.1.5 */
482 pr_debug("lec: LANE2 3.1.5, got tlvs, size %d\n", 480 pr_debug("LANE2 3.1.5, got tlvs, size %d\n",
483 mesg->sizeoftlvs); 481 mesg->sizeoftlvs);
484 lane2_associate_ind(dev, mesg->content.normal.mac_addr, 482 lane2_associate_ind(dev, mesg->content.normal.mac_addr,
485 tmp, mesg->sizeoftlvs); 483 tmp, mesg->sizeoftlvs);
486 } 484 }
@@ -531,9 +529,8 @@ static int lec_atm_send(struct atm_vcc *vcc, struct sk_buff *skb)
531 struct sk_buff *skb2; 529 struct sk_buff *skb2;
532 struct sock *sk; 530 struct sock *sk;
533 531
534 pr_debug 532 pr_debug("%s: entry found, responding to zeppelin\n",
535 ("%s: entry found, responding to zeppelin\n", 533 dev->name);
536 dev->name);
537 skb2 = 534 skb2 =
538 alloc_skb(sizeof(struct atmlec_msg), 535 alloc_skb(sizeof(struct atmlec_msg),
539 GFP_ATOMIC); 536 GFP_ATOMIC);
@@ -633,7 +630,7 @@ send_to_lecd(struct lec_priv *priv, atmlec_msg_type type,
633 sk->sk_data_ready(sk, skb->len); 630 sk->sk_data_ready(sk, skb->len);
634 631
635 if (data != NULL) { 632 if (data != NULL) {
636 pr_debug("lec: about to send %d bytes of data\n", data->len); 633 pr_debug("about to send %d bytes of data\n", data->len);
637 atm_force_charge(priv->lecd, data->truesize); 634 atm_force_charge(priv->lecd, data->truesize);
638 skb_queue_tail(&sk->sk_receive_queue, data); 635 skb_queue_tail(&sk->sk_receive_queue, data);
639 sk->sk_data_ready(sk, skb->len); 636 sk->sk_data_ready(sk, skb->len);
@@ -692,35 +689,27 @@ static void lec_push(struct atm_vcc *vcc, struct sk_buff *skb)
692 struct lec_priv *priv = netdev_priv(dev); 689 struct lec_priv *priv = netdev_priv(dev);
693 690
694#if DUMP_PACKETS >0 691#if DUMP_PACKETS >0
695 int i = 0; 692 printk(KERN_DEBUG "%s: vcc vpi:%d vci:%d\n",
696 char buf[300]; 693 dev->name, vcc->vpi, vcc->vci);
697
698 printk("%s: lec_push vcc vpi:%d vci:%d\n", dev->name,
699 vcc->vpi, vcc->vci);
700#endif 694#endif
701 if (!skb) { 695 if (!skb) {
702 pr_debug("%s: null skb\n", dev->name); 696 pr_debug("%s: null skb\n", dev->name);
703 lec_vcc_close(priv, vcc); 697 lec_vcc_close(priv, vcc);
704 return; 698 return;
705 } 699 }
706#if DUMP_PACKETS > 0
707 printk("%s: rcv datalen:%ld lecid:%4.4x\n", dev->name,
708 skb->len, priv->lecid);
709#if DUMP_PACKETS >= 2 700#if DUMP_PACKETS >= 2
710 for (i = 0; i < skb->len && i < 99; i++) { 701#define MAX_SKB_DUMP 99
711 sprintf(buf + i * 3, "%2.2x ", 0xff & skb->data[i]);
712 }
713#elif DUMP_PACKETS >= 1 702#elif DUMP_PACKETS >= 1
714 for (i = 0; i < skb->len && i < 30; i++) { 703#define MAX_SKB_DUMP 30
715 sprintf(buf + i * 3, "%2.2x ", 0xff & skb->data[i]); 704#endif
716 } 705#if DUMP_PACKETS > 0
717#endif /* DUMP_PACKETS >= 1 */ 706 printk(KERN_DEBUG "%s: rcv datalen:%ld lecid:%4.4x\n",
718 if (i == skb->len) 707 dev->name, skb->len, priv->lecid);
719 printk("%s\n", buf); 708 print_hex_dump(KERN_DEBUG, "", DUMP_OFFSET, 16, 1,
720 else 709 skb->data, min(MAX_SKB_DUMP, skb->len), true);
721 printk("%s...\n", buf);
722#endif /* DUMP_PACKETS > 0 */ 710#endif /* DUMP_PACKETS > 0 */
723 if (memcmp(skb->data, lec_ctrl_magic, 4) == 0) { /* Control frame, to daemon */ 711 if (memcmp(skb->data, lec_ctrl_magic, 4) == 0) {
712 /* Control frame, to daemon */
724 struct sock *sk = sk_atm(vcc); 713 struct sock *sk = sk_atm(vcc);
725 714
726 pr_debug("%s: To daemon\n", dev->name); 715 pr_debug("%s: To daemon\n", dev->name);
@@ -801,7 +790,7 @@ static void lec_pop(struct atm_vcc *vcc, struct sk_buff *skb)
801 struct net_device *dev = skb->dev; 790 struct net_device *dev = skb->dev;
802 791
803 if (vpriv == NULL) { 792 if (vpriv == NULL) {
804 printk("lec_pop(): vpriv = NULL!?!?!?\n"); 793 pr_info("vpriv = NULL!?!?!?\n");
805 return; 794 return;
806 } 795 }
807 796
@@ -822,11 +811,8 @@ static int lec_vcc_attach(struct atm_vcc *vcc, void __user *arg)
822 811
823 /* Lecd must be up in this case */ 812 /* Lecd must be up in this case */
824 bytes_left = copy_from_user(&ioc_data, arg, sizeof(struct atmlec_ioc)); 813 bytes_left = copy_from_user(&ioc_data, arg, sizeof(struct atmlec_ioc));
825 if (bytes_left != 0) { 814 if (bytes_left != 0)
826 printk 815 pr_info("copy from user failed for %d bytes\n", bytes_left);
827 ("lec: lec_vcc_attach, copy from user failed for %d bytes\n",
828 bytes_left);
829 }
830 if (ioc_data.dev_num < 0 || ioc_data.dev_num >= MAX_LEC_ITF || 816 if (ioc_data.dev_num < 0 || ioc_data.dev_num >= MAX_LEC_ITF ||
831 !dev_lec[ioc_data.dev_num]) 817 !dev_lec[ioc_data.dev_num])
832 return -EINVAL; 818 return -EINVAL;
@@ -1199,7 +1185,7 @@ static int __init lane_module_init(void)
1199 1185
1200 p = proc_create("lec", S_IRUGO, atm_proc_root, &lec_seq_fops); 1186 p = proc_create("lec", S_IRUGO, atm_proc_root, &lec_seq_fops);
1201 if (!p) { 1187 if (!p) {
1202 printk(KERN_ERR "Unable to initialize /proc/net/atm/lec\n"); 1188 pr_err("Unable to initialize /proc/net/atm/lec\n");
1203 return -ENOMEM; 1189 return -ENOMEM;
1204 } 1190 }
1205#endif 1191#endif
@@ -1381,7 +1367,7 @@ static void lane2_associate_ind(struct net_device *dev, const u8 *mac_addr,
1381#if 0 1367#if 0
1382#define pr_debug(format,args...) 1368#define pr_debug(format,args...)
1383/* 1369/*
1384#define pr_debug printk 1370 #define pr_debug printk
1385*/ 1371*/
1386#endif 1372#endif
1387#define DEBUG_ARP_TABLE 0 1373#define DEBUG_ARP_TABLE 0
@@ -1450,10 +1436,7 @@ lec_arp_add(struct lec_priv *priv, struct lec_arp_table *entry)
1450 tmp = &priv->lec_arp_tables[HASH(entry->mac_addr[ETH_ALEN - 1])]; 1436 tmp = &priv->lec_arp_tables[HASH(entry->mac_addr[ETH_ALEN - 1])];
1451 hlist_add_head(&entry->next, tmp); 1437 hlist_add_head(&entry->next, tmp);
1452 1438
1453 pr_debug("LEC_ARP: Added entry:%2.2x %2.2x %2.2x %2.2x %2.2x %2.2x\n", 1439 pr_debug("Added entry:%pM\n", entry->mac_addr);
1454 0xff & entry->mac_addr[0], 0xff & entry->mac_addr[1],
1455 0xff & entry->mac_addr[2], 0xff & entry->mac_addr[3],
1456 0xff & entry->mac_addr[4], 0xff & entry->mac_addr[5]);
1457} 1440}
1458 1441
1459/* 1442/*
@@ -1492,10 +1475,7 @@ lec_arp_remove(struct lec_priv *priv, struct lec_arp_table *to_remove)
1492 } 1475 }
1493 skb_queue_purge(&to_remove->tx_wait); /* FIXME: good place for this? */ 1476 skb_queue_purge(&to_remove->tx_wait); /* FIXME: good place for this? */
1494 1477
1495 pr_debug("LEC_ARP: Removed entry:%2.2x %2.2x %2.2x %2.2x %2.2x %2.2x\n", 1478 pr_debug("Removed entry:%pM\n", to_remove->mac_addr);
1496 0xff & to_remove->mac_addr[0], 0xff & to_remove->mac_addr[1],
1497 0xff & to_remove->mac_addr[2], 0xff & to_remove->mac_addr[3],
1498 0xff & to_remove->mac_addr[4], 0xff & to_remove->mac_addr[5]);
1499 return 0; 1479 return 0;
1500} 1480}
1501 1481
@@ -1714,9 +1694,7 @@ static struct lec_arp_table *lec_arp_find(struct lec_priv *priv,
1714 struct hlist_head *head; 1694 struct hlist_head *head;
1715 struct lec_arp_table *entry; 1695 struct lec_arp_table *entry;
1716 1696
1717 pr_debug("LEC_ARP: lec_arp_find :%2.2x %2.2x %2.2x %2.2x %2.2x %2.2x\n", 1697 pr_debug("%pM\n", mac_addr);
1718 mac_addr[0] & 0xff, mac_addr[1] & 0xff, mac_addr[2] & 0xff,
1719 mac_addr[3] & 0xff, mac_addr[4] & 0xff, mac_addr[5] & 0xff);
1720 1698
1721 head = &priv->lec_arp_tables[HASH(mac_addr[ETH_ALEN - 1])]; 1699 head = &priv->lec_arp_tables[HASH(mac_addr[ETH_ALEN - 1])];
1722 hlist_for_each_entry(entry, node, head, next) { 1700 hlist_for_each_entry(entry, node, head, next) {
@@ -1755,7 +1733,7 @@ static void lec_arp_expire_arp(unsigned long data)
1755 1733
1756 entry = (struct lec_arp_table *)data; 1734 entry = (struct lec_arp_table *)data;
1757 1735
1758 pr_debug("lec_arp_expire_arp\n"); 1736 pr_debug("\n");
1759 if (entry->status == ESI_ARP_PENDING) { 1737 if (entry->status == ESI_ARP_PENDING) {
1760 if (entry->no_tries <= entry->priv->max_retry_count) { 1738 if (entry->no_tries <= entry->priv->max_retry_count) {
1761 if (entry->is_rdesc) 1739 if (entry->is_rdesc)
@@ -1779,10 +1757,10 @@ static void lec_arp_expire_vcc(unsigned long data)
1779 1757
1780 del_timer(&to_remove->timer); 1758 del_timer(&to_remove->timer);
1781 1759
1782 pr_debug("LEC_ARP %p %p: lec_arp_expire_vcc vpi:%d vci:%d\n", 1760 pr_debug("%p %p: vpi:%d vci:%d\n",
1783 to_remove, priv, 1761 to_remove, priv,
1784 to_remove->vcc ? to_remove->recv_vcc->vpi : 0, 1762 to_remove->vcc ? to_remove->recv_vcc->vpi : 0,
1785 to_remove->vcc ? to_remove->recv_vcc->vci : 0); 1763 to_remove->vcc ? to_remove->recv_vcc->vci : 0);
1786 1764
1787 spin_lock_irqsave(&priv->lec_arp_lock, flags); 1765 spin_lock_irqsave(&priv->lec_arp_lock, flags);
1788 hlist_del(&to_remove->next); 1766 hlist_del(&to_remove->next);
@@ -1819,7 +1797,7 @@ static void lec_arp_check_expire(struct work_struct *work)
1819 unsigned long time_to_check; 1797 unsigned long time_to_check;
1820 int i; 1798 int i;
1821 1799
1822 pr_debug("lec_arp_check_expire %p\n", priv); 1800 pr_debug("%p\n", priv);
1823 now = jiffies; 1801 now = jiffies;
1824restart: 1802restart:
1825 spin_lock_irqsave(&priv->lec_arp_lock, flags); 1803 spin_lock_irqsave(&priv->lec_arp_lock, flags);
@@ -1832,12 +1810,12 @@ restart:
1832 time_to_check = priv->aging_time; 1810 time_to_check = priv->aging_time;
1833 1811
1834 pr_debug("About to expire: %lx - %lx > %lx\n", 1812 pr_debug("About to expire: %lx - %lx > %lx\n",
1835 now, entry->last_used, time_to_check); 1813 now, entry->last_used, time_to_check);
1836 if (time_after(now, entry->last_used + time_to_check) 1814 if (time_after(now, entry->last_used + time_to_check)
1837 && !(entry->flags & LEC_PERMANENT_FLAG) 1815 && !(entry->flags & LEC_PERMANENT_FLAG)
1838 && !(entry->mac_addr[0] & 0x01)) { /* LANE2: 7.1.20 */ 1816 && !(entry->mac_addr[0] & 0x01)) { /* LANE2: 7.1.20 */
1839 /* Remove entry */ 1817 /* Remove entry */
1840 pr_debug("LEC:Entry timed out\n"); 1818 pr_debug("Entry timed out\n");
1841 lec_arp_remove(priv, entry); 1819 lec_arp_remove(priv, entry);
1842 lec_arp_put(entry); 1820 lec_arp_put(entry);
1843 } else { 1821 } else {
@@ -1934,7 +1912,7 @@ static struct atm_vcc *lec_arp_resolve(struct lec_priv *priv,
1934 entry->packets_flooded < 1912 entry->packets_flooded <
1935 priv->maximum_unknown_frame_count) { 1913 priv->maximum_unknown_frame_count) {
1936 entry->packets_flooded++; 1914 entry->packets_flooded++;
1937 pr_debug("LEC_ARP: Flooding..\n"); 1915 pr_debug("Flooding..\n");
1938 found = priv->mcast_vcc; 1916 found = priv->mcast_vcc;
1939 goto out; 1917 goto out;
1940 } 1918 }
@@ -1945,13 +1923,13 @@ static struct atm_vcc *lec_arp_resolve(struct lec_priv *priv,
1945 */ 1923 */
1946 lec_arp_hold(entry); 1924 lec_arp_hold(entry);
1947 *ret_entry = entry; 1925 *ret_entry = entry;
1948 pr_debug("lec: entry->status %d entry->vcc %p\n", entry->status, 1926 pr_debug("entry->status %d entry->vcc %p\n", entry->status,
1949 entry->vcc); 1927 entry->vcc);
1950 found = NULL; 1928 found = NULL;
1951 } else { 1929 } else {
1952 /* No matching entry was found */ 1930 /* No matching entry was found */
1953 entry = make_entry(priv, mac_to_find); 1931 entry = make_entry(priv, mac_to_find);
1954 pr_debug("LEC_ARP: Making entry\n"); 1932 pr_debug("Making entry\n");
1955 if (!entry) { 1933 if (!entry) {
1956 found = priv->mcast_vcc; 1934 found = priv->mcast_vcc;
1957 goto out; 1935 goto out;
@@ -1988,7 +1966,7 @@ lec_addr_delete(struct lec_priv *priv, const unsigned char *atm_addr,
1988 struct lec_arp_table *entry; 1966 struct lec_arp_table *entry;
1989 int i; 1967 int i;
1990 1968
1991 pr_debug("lec_addr_delete\n"); 1969 pr_debug("\n");
1992 spin_lock_irqsave(&priv->lec_arp_lock, flags); 1970 spin_lock_irqsave(&priv->lec_arp_lock, flags);
1993 for (i = 0; i < LEC_ARP_TABLE_SIZE; i++) { 1971 for (i = 0; i < LEC_ARP_TABLE_SIZE; i++) {
1994 hlist_for_each_entry_safe(entry, node, next, &priv->lec_arp_tables[i], next) { 1972 hlist_for_each_entry_safe(entry, node, next, &priv->lec_arp_tables[i], next) {
@@ -2019,10 +1997,8 @@ lec_arp_update(struct lec_priv *priv, const unsigned char *mac_addr,
2019 struct lec_arp_table *entry, *tmp; 1997 struct lec_arp_table *entry, *tmp;
2020 int i; 1998 int i;
2021 1999
2022 pr_debug("lec:%s", (targetless_le_arp) ? "targetless " : " "); 2000 pr_debug("%smac:%pM\n",
2023 pr_debug("lec_arp_update mac:%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x\n", 2001 (targetless_le_arp) ? "targetless " : "", mac_addr);
2024 mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3],
2025 mac_addr[4], mac_addr[5]);
2026 2002
2027 spin_lock_irqsave(&priv->lec_arp_lock, flags); 2003 spin_lock_irqsave(&priv->lec_arp_lock, flags);
2028 entry = lec_arp_find(priv, mac_addr); 2004 entry = lec_arp_find(priv, mac_addr);
@@ -2149,19 +2125,17 @@ lec_vcc_added(struct lec_priv *priv, const struct atmlec_ioc *ioc_data,
2149 * Vcc which we don't want to make default vcc, 2125 * Vcc which we don't want to make default vcc,
2150 * attach it anyway. 2126 * attach it anyway.
2151 */ 2127 */
2152 pr_debug 2128 pr_debug("LEC_ARP:Attaching data direct, not default: %2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x\n",
2153 ("LEC_ARP:Attaching data direct, not default: " 2129 ioc_data->atm_addr[0], ioc_data->atm_addr[1],
2154 "%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x\n", 2130 ioc_data->atm_addr[2], ioc_data->atm_addr[3],
2155 ioc_data->atm_addr[0], ioc_data->atm_addr[1], 2131 ioc_data->atm_addr[4], ioc_data->atm_addr[5],
2156 ioc_data->atm_addr[2], ioc_data->atm_addr[3], 2132 ioc_data->atm_addr[6], ioc_data->atm_addr[7],
2157 ioc_data->atm_addr[4], ioc_data->atm_addr[5], 2133 ioc_data->atm_addr[8], ioc_data->atm_addr[9],
2158 ioc_data->atm_addr[6], ioc_data->atm_addr[7], 2134 ioc_data->atm_addr[10], ioc_data->atm_addr[11],
2159 ioc_data->atm_addr[8], ioc_data->atm_addr[9], 2135 ioc_data->atm_addr[12], ioc_data->atm_addr[13],
2160 ioc_data->atm_addr[10], ioc_data->atm_addr[11], 2136 ioc_data->atm_addr[14], ioc_data->atm_addr[15],
2161 ioc_data->atm_addr[12], ioc_data->atm_addr[13], 2137 ioc_data->atm_addr[16], ioc_data->atm_addr[17],
2162 ioc_data->atm_addr[14], ioc_data->atm_addr[15], 2138 ioc_data->atm_addr[18], ioc_data->atm_addr[19]);
2163 ioc_data->atm_addr[16], ioc_data->atm_addr[17],
2164 ioc_data->atm_addr[18], ioc_data->atm_addr[19]);
2165 entry = make_entry(priv, bus_mac); 2139 entry = make_entry(priv, bus_mac);
2166 if (entry == NULL) 2140 if (entry == NULL)
2167 goto out; 2141 goto out;
@@ -2177,19 +2151,17 @@ lec_vcc_added(struct lec_priv *priv, const struct atmlec_ioc *ioc_data,
2177 dump_arp_table(priv); 2151 dump_arp_table(priv);
2178 goto out; 2152 goto out;
2179 } 2153 }
2180 pr_debug 2154 pr_debug("LEC_ARP:Attaching data direct, default: %2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x\n",
2181 ("LEC_ARP:Attaching data direct, default: " 2155 ioc_data->atm_addr[0], ioc_data->atm_addr[1],
2182 "%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x\n", 2156 ioc_data->atm_addr[2], ioc_data->atm_addr[3],
2183 ioc_data->atm_addr[0], ioc_data->atm_addr[1], 2157 ioc_data->atm_addr[4], ioc_data->atm_addr[5],
2184 ioc_data->atm_addr[2], ioc_data->atm_addr[3], 2158 ioc_data->atm_addr[6], ioc_data->atm_addr[7],
2185 ioc_data->atm_addr[4], ioc_data->atm_addr[5], 2159 ioc_data->atm_addr[8], ioc_data->atm_addr[9],
2186 ioc_data->atm_addr[6], ioc_data->atm_addr[7], 2160 ioc_data->atm_addr[10], ioc_data->atm_addr[11],
2187 ioc_data->atm_addr[8], ioc_data->atm_addr[9], 2161 ioc_data->atm_addr[12], ioc_data->atm_addr[13],
2188 ioc_data->atm_addr[10], ioc_data->atm_addr[11], 2162 ioc_data->atm_addr[14], ioc_data->atm_addr[15],
2189 ioc_data->atm_addr[12], ioc_data->atm_addr[13], 2163 ioc_data->atm_addr[16], ioc_data->atm_addr[17],
2190 ioc_data->atm_addr[14], ioc_data->atm_addr[15], 2164 ioc_data->atm_addr[18], ioc_data->atm_addr[19]);
2191 ioc_data->atm_addr[16], ioc_data->atm_addr[17],
2192 ioc_data->atm_addr[18], ioc_data->atm_addr[19]);
2193 for (i = 0; i < LEC_ARP_TABLE_SIZE; i++) { 2165 for (i = 0; i < LEC_ARP_TABLE_SIZE; i++) {
2194 hlist_for_each_entry(entry, node, &priv->lec_arp_tables[i], next) { 2166 hlist_for_each_entry(entry, node, &priv->lec_arp_tables[i], next) {
2195 if (memcmp 2167 if (memcmp
@@ -2197,9 +2169,9 @@ lec_vcc_added(struct lec_priv *priv, const struct atmlec_ioc *ioc_data,
2197 ATM_ESA_LEN) == 0) { 2169 ATM_ESA_LEN) == 0) {
2198 pr_debug("LEC_ARP: Attaching data direct\n"); 2170 pr_debug("LEC_ARP: Attaching data direct\n");
2199 pr_debug("Currently -> Vcc: %d, Rvcc:%d\n", 2171 pr_debug("Currently -> Vcc: %d, Rvcc:%d\n",
2200 entry->vcc ? entry->vcc->vci : 0, 2172 entry->vcc ? entry->vcc->vci : 0,
2201 entry->recv_vcc ? entry->recv_vcc-> 2173 entry->recv_vcc ? entry->recv_vcc->
2202 vci : 0); 2174 vci : 0);
2203 found_entry = 1; 2175 found_entry = 1;
2204 del_timer(&entry->timer); 2176 del_timer(&entry->timer);
2205 entry->vcc = vcc; 2177 entry->vcc = vcc;
@@ -2271,7 +2243,7 @@ static void lec_flush_complete(struct lec_priv *priv, unsigned long tran_id)
2271 struct lec_arp_table *entry; 2243 struct lec_arp_table *entry;
2272 int i; 2244 int i;
2273 2245
2274 pr_debug("LEC:lec_flush_complete %lx\n", tran_id); 2246 pr_debug("%lx\n", tran_id);
2275restart: 2247restart:
2276 spin_lock_irqsave(&priv->lec_arp_lock, flags); 2248 spin_lock_irqsave(&priv->lec_arp_lock, flags);
2277 for (i = 0; i < LEC_ARP_TABLE_SIZE; i++) { 2249 for (i = 0; i < LEC_ARP_TABLE_SIZE; i++) {
@@ -2312,7 +2284,7 @@ lec_set_flush_tran_id(struct lec_priv *priv,
2312 if (!memcmp(atm_addr, entry->atm_addr, ATM_ESA_LEN)) { 2284 if (!memcmp(atm_addr, entry->atm_addr, ATM_ESA_LEN)) {
2313 entry->flush_tran_id = tran_id; 2285 entry->flush_tran_id = tran_id;
2314 pr_debug("Set flush transaction id to %lx for %p\n", 2286 pr_debug("Set flush transaction id to %lx for %p\n",
2315 tran_id, entry); 2287 tran_id, entry);
2316 } 2288 }
2317 } 2289 }
2318 spin_unlock_irqrestore(&priv->lec_arp_lock, flags); 2290 spin_unlock_irqrestore(&priv->lec_arp_lock, flags);