diff options
Diffstat (limited to 'drivers/net/tokenring/olympic.c')
-rw-r--r-- | drivers/net/tokenring/olympic.c | 138 |
1 files changed, 60 insertions, 78 deletions
diff --git a/drivers/net/tokenring/olympic.c b/drivers/net/tokenring/olympic.c index a149d5e2965c..74c1f0f189f5 100644 --- a/drivers/net/tokenring/olympic.c +++ b/drivers/net/tokenring/olympic.c | |||
@@ -418,14 +418,15 @@ static int __devinit olympic_init(struct net_device *dev) | |||
418 | writel(uaa_addr,olympic_mmio+LAPA); | 418 | writel(uaa_addr,olympic_mmio+LAPA); |
419 | adapter_addr=olympic_priv->olympic_lap + (uaa_addr & (~0xf800)); | 419 | adapter_addr=olympic_priv->olympic_lap + (uaa_addr & (~0xf800)); |
420 | 420 | ||
421 | memcpy_fromio(&dev->dev_addr[0], adapter_addr,6); | ||
422 | |||
421 | #if OLYMPIC_DEBUG | 423 | #if OLYMPIC_DEBUG |
422 | printk("adapter address: %02x:%02x:%02x:%02x:%02x:%02x\n", | 424 | { |
423 | readb(adapter_addr), readb(adapter_addr+1),readb(adapter_addr+2), | 425 | DECLARE_MAC_BUF(mac); |
424 | readb(adapter_addr+3),readb(adapter_addr+4),readb(adapter_addr+5)); | 426 | printk("adapter address: %s\n", print_mac(mac, dev->dev_addr)); |
427 | } | ||
425 | #endif | 428 | #endif |
426 | 429 | ||
427 | memcpy_fromio(&dev->dev_addr[0], adapter_addr,6); | ||
428 | |||
429 | olympic_priv->olympic_addr_table_addr = swab16(readw(init_srb + 12)); | 430 | olympic_priv->olympic_addr_table_addr = swab16(readw(init_srb + 12)); |
430 | olympic_priv->olympic_parms_addr = swab16(readw(init_srb + 14)); | 431 | olympic_priv->olympic_parms_addr = swab16(readw(init_srb + 14)); |
431 | 432 | ||
@@ -440,6 +441,7 @@ static int olympic_open(struct net_device *dev) | |||
440 | unsigned long flags, t; | 441 | unsigned long flags, t; |
441 | int i, open_finished = 1 ; | 442 | int i, open_finished = 1 ; |
442 | u8 resp, err; | 443 | u8 resp, err; |
444 | DECLARE_MAC_BUF(mac); | ||
443 | 445 | ||
444 | DECLARE_WAITQUEUE(wait,current) ; | 446 | DECLARE_WAITQUEUE(wait,current) ; |
445 | 447 | ||
@@ -567,14 +569,8 @@ static int olympic_open(struct net_device *dev) | |||
567 | goto out; | 569 | goto out; |
568 | 570 | ||
569 | case 0x32: | 571 | case 0x32: |
570 | printk(KERN_WARNING "%s: Invalid LAA: %02x:%02x:%02x:%02x:%02x:%02x\n", | 572 | printk(KERN_WARNING "%s: Invalid LAA: %s\n", |
571 | dev->name, | 573 | dev->name, print_mac(mac, olympic_priv->olympic_laa)); |
572 | olympic_priv->olympic_laa[0], | ||
573 | olympic_priv->olympic_laa[1], | ||
574 | olympic_priv->olympic_laa[2], | ||
575 | olympic_priv->olympic_laa[3], | ||
576 | olympic_priv->olympic_laa[4], | ||
577 | olympic_priv->olympic_laa[5]) ; | ||
578 | goto out; | 574 | goto out; |
579 | 575 | ||
580 | default: | 576 | default: |
@@ -704,30 +700,26 @@ static int olympic_open(struct net_device *dev) | |||
704 | #endif | 700 | #endif |
705 | 701 | ||
706 | if (olympic_priv->olympic_network_monitor) { | 702 | if (olympic_priv->olympic_network_monitor) { |
707 | u8 __iomem *oat ; | 703 | u8 __iomem *oat; |
708 | u8 __iomem *opt ; | 704 | u8 __iomem *opt; |
709 | oat = (olympic_priv->olympic_lap + olympic_priv->olympic_addr_table_addr) ; | 705 | int i; |
710 | opt = (olympic_priv->olympic_lap + olympic_priv->olympic_parms_addr) ; | 706 | u8 addr[6]; |
711 | 707 | DECLARE_MAC_BUF(mac); | |
712 | printk("%s: Node Address: %02x:%02x:%02x:%02x:%02x:%02x\n",dev->name, | 708 | oat = (olympic_priv->olympic_lap + olympic_priv->olympic_addr_table_addr); |
713 | readb(oat+offsetof(struct olympic_adapter_addr_table,node_addr)), | 709 | opt = (olympic_priv->olympic_lap + olympic_priv->olympic_parms_addr); |
714 | readb(oat+offsetof(struct olympic_adapter_addr_table,node_addr)+1), | 710 | |
715 | readb(oat+offsetof(struct olympic_adapter_addr_table,node_addr)+2), | 711 | for (i = 0; i < 6; i++) |
716 | readb(oat+offsetof(struct olympic_adapter_addr_table,node_addr)+3), | 712 | addr[i] = readb(oat+offsetof(struct olympic_adapter_addr_table,node_addr)+i); |
717 | readb(oat+offsetof(struct olympic_adapter_addr_table,node_addr)+4), | 713 | printk("%s: Node Address: %s\n",dev->name, print_mac(mac, addr)); |
718 | readb(oat+offsetof(struct olympic_adapter_addr_table,node_addr)+5)); | ||
719 | printk("%s: Functional Address: %02x:%02x:%02x:%02x\n",dev->name, | 714 | printk("%s: Functional Address: %02x:%02x:%02x:%02x\n",dev->name, |
720 | readb(oat+offsetof(struct olympic_adapter_addr_table,func_addr)), | 715 | readb(oat+offsetof(struct olympic_adapter_addr_table,func_addr)), |
721 | readb(oat+offsetof(struct olympic_adapter_addr_table,func_addr)+1), | 716 | readb(oat+offsetof(struct olympic_adapter_addr_table,func_addr)+1), |
722 | readb(oat+offsetof(struct olympic_adapter_addr_table,func_addr)+2), | 717 | readb(oat+offsetof(struct olympic_adapter_addr_table,func_addr)+2), |
723 | readb(oat+offsetof(struct olympic_adapter_addr_table,func_addr)+3)); | 718 | readb(oat+offsetof(struct olympic_adapter_addr_table,func_addr)+3)); |
724 | printk("%s: NAUN Address: %02x:%02x:%02x:%02x:%02x:%02x\n",dev->name, | 719 | |
725 | readb(opt+offsetof(struct olympic_parameters_table, up_node_addr)), | 720 | for (i = 0; i < 6; i++) |
726 | readb(opt+offsetof(struct olympic_parameters_table, up_node_addr)+1), | 721 | addr[i] = readb(opt+offsetof(struct olympic_parameters_table, up_node_addr)+i); |
727 | readb(opt+offsetof(struct olympic_parameters_table, up_node_addr)+2), | 722 | printk("%s: NAUN Address: %s\n",dev->name, print_mac(mac, addr)); |
728 | readb(opt+offsetof(struct olympic_parameters_table, up_node_addr)+3), | ||
729 | readb(opt+offsetof(struct olympic_parameters_table, up_node_addr)+4), | ||
730 | readb(opt+offsetof(struct olympic_parameters_table, up_node_addr)+5)); | ||
731 | } | 723 | } |
732 | 724 | ||
733 | netif_start_queue(dev); | 725 | netif_start_queue(dev); |
@@ -1445,11 +1437,14 @@ static void olympic_arb_cmd(struct net_device *dev) | |||
1445 | mac_frame->protocol = tr_type_trans(mac_frame, dev); | 1437 | mac_frame->protocol = tr_type_trans(mac_frame, dev); |
1446 | 1438 | ||
1447 | if (olympic_priv->olympic_network_monitor) { | 1439 | if (olympic_priv->olympic_network_monitor) { |
1448 | struct trh_hdr *mac_hdr ; | 1440 | struct trh_hdr *mac_hdr; |
1449 | printk(KERN_WARNING "%s: Received MAC Frame, details: \n",dev->name) ; | 1441 | DECLARE_MAC_BUF(mac); |
1442 | printk(KERN_WARNING "%s: Received MAC Frame, details: \n",dev->name); | ||
1450 | mac_hdr = tr_hdr(mac_frame); | 1443 | mac_hdr = tr_hdr(mac_frame); |
1451 | printk(KERN_WARNING "%s: MAC Frame Dest. Addr: %02x:%02x:%02x:%02x:%02x:%02x \n", dev->name , mac_hdr->daddr[0], mac_hdr->daddr[1], mac_hdr->daddr[2], mac_hdr->daddr[3], mac_hdr->daddr[4], mac_hdr->daddr[5]) ; | 1444 | printk(KERN_WARNING "%s: MAC Frame Dest. Addr: %s\n", |
1452 | printk(KERN_WARNING "%s: MAC Frame Srce. Addr: %02x:%02x:%02x:%02x:%02x:%02x \n", dev->name , mac_hdr->saddr[0], mac_hdr->saddr[1], mac_hdr->saddr[2], mac_hdr->saddr[3], mac_hdr->saddr[4], mac_hdr->saddr[5]) ; | 1445 | dev->name, print_mac(mac, mac_hdr->daddr)); |
1446 | printk(KERN_WARNING "%s: MAC Frame Srce. Addr: %s\n", | ||
1447 | dev->name, print_mac(mac, mac_hdr->saddr)); | ||
1453 | } | 1448 | } |
1454 | netif_rx(mac_frame); | 1449 | netif_rx(mac_frame); |
1455 | dev->last_rx = jiffies; | 1450 | dev->last_rx = jiffies; |
@@ -1644,26 +1639,24 @@ static int olympic_proc_info(char *buffer, char **start, off_t offset, int lengt | |||
1644 | int len=0; | 1639 | int len=0; |
1645 | off_t begin=0; | 1640 | off_t begin=0; |
1646 | off_t pos=0; | 1641 | off_t pos=0; |
1647 | 1642 | u8 addr[6]; | |
1643 | u8 addr2[6]; | ||
1644 | int i; | ||
1645 | DECLARE_MAC_BUF(mac); | ||
1646 | DECLARE_MAC_BUF(mac2); | ||
1647 | |||
1648 | size = sprintf(buffer, | 1648 | size = sprintf(buffer, |
1649 | "IBM Pit/Pit-Phy/Olympic Chipset Token Ring Adapter %s\n",dev->name); | 1649 | "IBM Pit/Pit-Phy/Olympic Chipset Token Ring Adapter %s\n",dev->name); |
1650 | size += sprintf(buffer+size, "\n%6s: Adapter Address : Node Address : Functional Addr\n", | 1650 | size += sprintf(buffer+size, "\n%6s: Adapter Address : Node Address : Functional Addr\n", |
1651 | dev->name); | 1651 | dev->name); |
1652 | 1652 | ||
1653 | size += sprintf(buffer+size, "%6s: %02x:%02x:%02x:%02x:%02x:%02x : %02x:%02x:%02x:%02x:%02x:%02x : %02x:%02x:%02x:%02x\n", | 1653 | for (i = 0 ; i < 6 ; i++) |
1654 | addr[i] = readb(oat+offsetof(struct olympic_adapter_addr_table,node_addr) + i); | ||
1655 | |||
1656 | size += sprintf(buffer+size, "%6s: %s : %s : %02x:%02x:%02x:%02x\n", | ||
1654 | dev->name, | 1657 | dev->name, |
1655 | dev->dev_addr[0], | 1658 | print_mac(mac, dev->dev_addr), |
1656 | dev->dev_addr[1], | 1659 | print_mac(mac2, addr), |
1657 | dev->dev_addr[2], | ||
1658 | dev->dev_addr[3], | ||
1659 | dev->dev_addr[4], | ||
1660 | dev->dev_addr[5], | ||
1661 | readb(oat+offsetof(struct olympic_adapter_addr_table,node_addr)), | ||
1662 | readb(oat+offsetof(struct olympic_adapter_addr_table,node_addr)+1), | ||
1663 | readb(oat+offsetof(struct olympic_adapter_addr_table,node_addr)+2), | ||
1664 | readb(oat+offsetof(struct olympic_adapter_addr_table,node_addr)+3), | ||
1665 | readb(oat+offsetof(struct olympic_adapter_addr_table,node_addr)+4), | ||
1666 | readb(oat+offsetof(struct olympic_adapter_addr_table,node_addr)+5), | ||
1667 | readb(oat+offsetof(struct olympic_adapter_addr_table,func_addr)), | 1660 | readb(oat+offsetof(struct olympic_adapter_addr_table,func_addr)), |
1668 | readb(oat+offsetof(struct olympic_adapter_addr_table,func_addr)+1), | 1661 | readb(oat+offsetof(struct olympic_adapter_addr_table,func_addr)+1), |
1669 | readb(oat+offsetof(struct olympic_adapter_addr_table,func_addr)+2), | 1662 | readb(oat+offsetof(struct olympic_adapter_addr_table,func_addr)+2), |
@@ -1673,25 +1666,20 @@ static int olympic_proc_info(char *buffer, char **start, off_t offset, int lengt | |||
1673 | 1666 | ||
1674 | size += sprintf(buffer+size, "%6s: Physical Addr : Up Node Address : Poll Address : AccPri : Auth Src : Att Code :\n", | 1667 | size += sprintf(buffer+size, "%6s: Physical Addr : Up Node Address : Poll Address : AccPri : Auth Src : Att Code :\n", |
1675 | dev->name) ; | 1668 | dev->name) ; |
1676 | 1669 | ||
1677 | size += sprintf(buffer+size, "%6s: %02x:%02x:%02x:%02x : %02x:%02x:%02x:%02x:%02x:%02x : %02x:%02x:%02x:%02x:%02x:%02x : %04x : %04x : %04x :\n", | 1670 | for (i = 0 ; i < 6 ; i++) |
1671 | addr[i] = readb(opt+offsetof(struct olympic_parameters_table, up_node_addr) + i); | ||
1672 | for (i = 0 ; i < 6 ; i++) | ||
1673 | addr2[i] = readb(opt+offsetof(struct olympic_parameters_table, poll_addr) + i); | ||
1674 | |||
1675 | size += sprintf(buffer+size, "%6s: %02x:%02x:%02x:%02x : %s : %s : %04x : %04x : %04x :\n", | ||
1678 | dev->name, | 1676 | dev->name, |
1679 | readb(opt+offsetof(struct olympic_parameters_table, phys_addr)), | 1677 | readb(opt+offsetof(struct olympic_parameters_table, phys_addr)), |
1680 | readb(opt+offsetof(struct olympic_parameters_table, phys_addr)+1), | 1678 | readb(opt+offsetof(struct olympic_parameters_table, phys_addr)+1), |
1681 | readb(opt+offsetof(struct olympic_parameters_table, phys_addr)+2), | 1679 | readb(opt+offsetof(struct olympic_parameters_table, phys_addr)+2), |
1682 | readb(opt+offsetof(struct olympic_parameters_table, phys_addr)+3), | 1680 | readb(opt+offsetof(struct olympic_parameters_table, phys_addr)+3), |
1683 | readb(opt+offsetof(struct olympic_parameters_table, up_node_addr)), | 1681 | print_mac(mac, addr), |
1684 | readb(opt+offsetof(struct olympic_parameters_table, up_node_addr)+1), | 1682 | print_mac(mac2, addr2), |
1685 | readb(opt+offsetof(struct olympic_parameters_table, up_node_addr)+2), | ||
1686 | readb(opt+offsetof(struct olympic_parameters_table, up_node_addr)+3), | ||
1687 | readb(opt+offsetof(struct olympic_parameters_table, up_node_addr)+4), | ||
1688 | readb(opt+offsetof(struct olympic_parameters_table, up_node_addr)+5), | ||
1689 | readb(opt+offsetof(struct olympic_parameters_table, poll_addr)), | ||
1690 | readb(opt+offsetof(struct olympic_parameters_table, poll_addr)+1), | ||
1691 | readb(opt+offsetof(struct olympic_parameters_table, poll_addr)+2), | ||
1692 | readb(opt+offsetof(struct olympic_parameters_table, poll_addr)+3), | ||
1693 | readb(opt+offsetof(struct olympic_parameters_table, poll_addr)+4), | ||
1694 | readb(opt+offsetof(struct olympic_parameters_table, poll_addr)+5), | ||
1695 | swab16(readw(opt+offsetof(struct olympic_parameters_table, acc_priority))), | 1683 | swab16(readw(opt+offsetof(struct olympic_parameters_table, acc_priority))), |
1696 | swab16(readw(opt+offsetof(struct olympic_parameters_table, auth_source_class))), | 1684 | swab16(readw(opt+offsetof(struct olympic_parameters_table, auth_source_class))), |
1697 | swab16(readw(opt+offsetof(struct olympic_parameters_table, att_code)))); | 1685 | swab16(readw(opt+offsetof(struct olympic_parameters_table, att_code)))); |
@@ -1699,14 +1687,11 @@ static int olympic_proc_info(char *buffer, char **start, off_t offset, int lengt | |||
1699 | size += sprintf(buffer+size, "%6s: Source Address : Bcn T : Maj. V : Lan St : Lcl Rg : Mon Err : Frame Correl : \n", | 1687 | size += sprintf(buffer+size, "%6s: Source Address : Bcn T : Maj. V : Lan St : Lcl Rg : Mon Err : Frame Correl : \n", |
1700 | dev->name) ; | 1688 | dev->name) ; |
1701 | 1689 | ||
1702 | size += sprintf(buffer+size, "%6s: %02x:%02x:%02x:%02x:%02x:%02x : %04x : %04x : %04x : %04x : %04x : %04x : \n", | 1690 | for (i = 0 ; i < 6 ; i++) |
1691 | addr[i] = readb(opt+offsetof(struct olympic_parameters_table, source_addr) + i); | ||
1692 | size += sprintf(buffer+size, "%6s: %s : %04x : %04x : %04x : %04x : %04x : %04x : \n", | ||
1703 | dev->name, | 1693 | dev->name, |
1704 | readb(opt+offsetof(struct olympic_parameters_table, source_addr)), | 1694 | print_mac(mac, addr), |
1705 | readb(opt+offsetof(struct olympic_parameters_table, source_addr)+1), | ||
1706 | readb(opt+offsetof(struct olympic_parameters_table, source_addr)+2), | ||
1707 | readb(opt+offsetof(struct olympic_parameters_table, source_addr)+3), | ||
1708 | readb(opt+offsetof(struct olympic_parameters_table, source_addr)+4), | ||
1709 | readb(opt+offsetof(struct olympic_parameters_table, source_addr)+5), | ||
1710 | swab16(readw(opt+offsetof(struct olympic_parameters_table, beacon_type))), | 1695 | swab16(readw(opt+offsetof(struct olympic_parameters_table, beacon_type))), |
1711 | swab16(readw(opt+offsetof(struct olympic_parameters_table, major_vector))), | 1696 | swab16(readw(opt+offsetof(struct olympic_parameters_table, major_vector))), |
1712 | swab16(readw(opt+offsetof(struct olympic_parameters_table, lan_status))), | 1697 | swab16(readw(opt+offsetof(struct olympic_parameters_table, lan_status))), |
@@ -1717,16 +1702,13 @@ static int olympic_proc_info(char *buffer, char **start, off_t offset, int lengt | |||
1717 | size += sprintf(buffer+size, "%6s: Beacon Details : Tx : Rx : NAUN Node Address : NAUN Node Phys : \n", | 1702 | size += sprintf(buffer+size, "%6s: Beacon Details : Tx : Rx : NAUN Node Address : NAUN Node Phys : \n", |
1718 | dev->name) ; | 1703 | dev->name) ; |
1719 | 1704 | ||
1720 | size += sprintf(buffer+size, "%6s: : %02x : %02x : %02x:%02x:%02x:%02x:%02x:%02x : %02x:%02x:%02x:%02x : \n", | 1705 | for (i = 0 ; i < 6 ; i++) |
1706 | addr[i] = readb(opt+offsetof(struct olympic_parameters_table, beacon_naun) + i); | ||
1707 | size += sprintf(buffer+size, "%6s: : %02x : %02x : %s : %02x:%02x:%02x:%02x : \n", | ||
1721 | dev->name, | 1708 | dev->name, |
1722 | swab16(readw(opt+offsetof(struct olympic_parameters_table, beacon_transmit))), | 1709 | swab16(readw(opt+offsetof(struct olympic_parameters_table, beacon_transmit))), |
1723 | swab16(readw(opt+offsetof(struct olympic_parameters_table, beacon_receive))), | 1710 | swab16(readw(opt+offsetof(struct olympic_parameters_table, beacon_receive))), |
1724 | readb(opt+offsetof(struct olympic_parameters_table, beacon_naun)), | 1711 | print_mac(mac, addr), |
1725 | readb(opt+offsetof(struct olympic_parameters_table, beacon_naun)+1), | ||
1726 | readb(opt+offsetof(struct olympic_parameters_table, beacon_naun)+2), | ||
1727 | readb(opt+offsetof(struct olympic_parameters_table, beacon_naun)+3), | ||
1728 | readb(opt+offsetof(struct olympic_parameters_table, beacon_naun)+4), | ||
1729 | readb(opt+offsetof(struct olympic_parameters_table, beacon_naun)+5), | ||
1730 | readb(opt+offsetof(struct olympic_parameters_table, beacon_phys)), | 1712 | readb(opt+offsetof(struct olympic_parameters_table, beacon_phys)), |
1731 | readb(opt+offsetof(struct olympic_parameters_table, beacon_phys)+1), | 1713 | readb(opt+offsetof(struct olympic_parameters_table, beacon_phys)+1), |
1732 | readb(opt+offsetof(struct olympic_parameters_table, beacon_phys)+2), | 1714 | readb(opt+offsetof(struct olympic_parameters_table, beacon_phys)+2), |