diff options
Diffstat (limited to 'drivers/net/gianfar.h')
| -rw-r--r-- | drivers/net/gianfar.h | 67 |
1 files changed, 46 insertions, 21 deletions
diff --git a/drivers/net/gianfar.h b/drivers/net/gianfar.h index d37d5401be6e..127c98cf3336 100644 --- a/drivers/net/gianfar.h +++ b/drivers/net/gianfar.h | |||
| @@ -656,43 +656,62 @@ struct gfar { | |||
| 656 | * the buffer descriptor determines the actual condition. | 656 | * the buffer descriptor determines the actual condition. |
| 657 | */ | 657 | */ |
| 658 | struct gfar_private { | 658 | struct gfar_private { |
| 659 | /* pointers to arrays of skbuffs for tx and rx */ | 659 | /* Fields controlled by TX lock */ |
| 660 | spinlock_t txlock; | ||
| 661 | |||
| 662 | /* Pointer to the array of skbuffs */ | ||
| 660 | struct sk_buff ** tx_skbuff; | 663 | struct sk_buff ** tx_skbuff; |
| 661 | struct sk_buff ** rx_skbuff; | ||
| 662 | 664 | ||
| 663 | /* indices pointing to the next free sbk in skb arrays */ | 665 | /* next free skb in the array */ |
| 664 | u16 skb_curtx; | 666 | u16 skb_curtx; |
| 665 | u16 skb_currx; | ||
| 666 | 667 | ||
| 667 | /* index of the first skb which hasn't been transmitted | 668 | /* First skb in line to be transmitted */ |
| 668 | * yet. */ | ||
| 669 | u16 skb_dirtytx; | 669 | u16 skb_dirtytx; |
| 670 | 670 | ||
| 671 | /* Configuration info for the coalescing features */ | 671 | /* Configuration info for the coalescing features */ |
| 672 | unsigned char txcoalescing; | 672 | unsigned char txcoalescing; |
| 673 | unsigned short txcount; | 673 | unsigned short txcount; |
| 674 | unsigned short txtime; | 674 | unsigned short txtime; |
| 675 | |||
| 676 | /* Buffer descriptor pointers */ | ||
| 677 | struct txbd8 *tx_bd_base; /* First tx buffer descriptor */ | ||
| 678 | struct txbd8 *cur_tx; /* Next free ring entry */ | ||
| 679 | struct txbd8 *dirty_tx; /* First buffer in line | ||
| 680 | to be transmitted */ | ||
| 681 | unsigned int tx_ring_size; | ||
| 682 | |||
| 683 | /* RX Locked fields */ | ||
| 684 | spinlock_t rxlock; | ||
| 685 | |||
| 686 | /* skb array and index */ | ||
| 687 | struct sk_buff ** rx_skbuff; | ||
| 688 | u16 skb_currx; | ||
| 689 | |||
| 690 | /* RX Coalescing values */ | ||
| 675 | unsigned char rxcoalescing; | 691 | unsigned char rxcoalescing; |
| 676 | unsigned short rxcount; | 692 | unsigned short rxcount; |
| 677 | unsigned short rxtime; | 693 | unsigned short rxtime; |
| 678 | 694 | ||
| 679 | /* GFAR addresses */ | 695 | struct rxbd8 *rx_bd_base; /* First Rx buffers */ |
| 680 | struct rxbd8 *rx_bd_base; /* Base addresses of Rx and Tx Buffers */ | ||
| 681 | struct txbd8 *tx_bd_base; | ||
| 682 | struct rxbd8 *cur_rx; /* Next free rx ring entry */ | 696 | struct rxbd8 *cur_rx; /* Next free rx ring entry */ |
| 683 | struct txbd8 *cur_tx; /* Next free ring entry */ | 697 | |
| 684 | struct txbd8 *dirty_tx; /* The Ring entry to be freed. */ | 698 | /* RX parameters */ |
| 685 | struct gfar __iomem *regs; /* Pointer to the GFAR memory mapped Registers */ | 699 | unsigned int rx_ring_size; |
| 686 | u32 __iomem *hash_regs[16]; | ||
| 687 | int hash_width; | ||
| 688 | struct net_device_stats stats; /* linux network statistics */ | ||
| 689 | struct gfar_extra_stats extra_stats; | ||
| 690 | spinlock_t lock; | ||
| 691 | unsigned int rx_buffer_size; | 700 | unsigned int rx_buffer_size; |
| 692 | unsigned int rx_stash_size; | 701 | unsigned int rx_stash_size; |
| 693 | unsigned int rx_stash_index; | 702 | unsigned int rx_stash_index; |
| 694 | unsigned int tx_ring_size; | 703 | |
| 695 | unsigned int rx_ring_size; | 704 | struct vlan_group *vlgrp; |
| 705 | |||
| 706 | /* Unprotected fields */ | ||
| 707 | /* Pointer to the GFAR memory mapped Registers */ | ||
| 708 | struct gfar __iomem *regs; | ||
| 709 | |||
| 710 | /* Hash registers and their width */ | ||
| 711 | u32 __iomem *hash_regs[16]; | ||
| 712 | int hash_width; | ||
| 713 | |||
| 714 | /* global parameters */ | ||
| 696 | unsigned int fifo_threshold; | 715 | unsigned int fifo_threshold; |
| 697 | unsigned int fifo_starve; | 716 | unsigned int fifo_starve; |
| 698 | unsigned int fifo_starve_off; | 717 | unsigned int fifo_starve_off; |
| @@ -702,13 +721,15 @@ struct gfar_private { | |||
| 702 | extended_hash:1, | 721 | extended_hash:1, |
| 703 | bd_stash_en:1; | 722 | bd_stash_en:1; |
| 704 | unsigned short padding; | 723 | unsigned short padding; |
| 705 | struct vlan_group *vlgrp; | 724 | |
| 706 | /* Info structure initialized by board setup code */ | ||
| 707 | unsigned int interruptTransmit; | 725 | unsigned int interruptTransmit; |
| 708 | unsigned int interruptReceive; | 726 | unsigned int interruptReceive; |
| 709 | unsigned int interruptError; | 727 | unsigned int interruptError; |
| 728 | |||
| 729 | /* info structure initialized by platform code */ | ||
| 710 | struct gianfar_platform_data *einfo; | 730 | struct gianfar_platform_data *einfo; |
| 711 | 731 | ||
| 732 | /* PHY stuff */ | ||
| 712 | struct phy_device *phydev; | 733 | struct phy_device *phydev; |
| 713 | struct mii_bus *mii_bus; | 734 | struct mii_bus *mii_bus; |
| 714 | int oldspeed; | 735 | int oldspeed; |
| @@ -716,6 +737,10 @@ struct gfar_private { | |||
| 716 | int oldlink; | 737 | int oldlink; |
| 717 | 738 | ||
| 718 | uint32_t msg_enable; | 739 | uint32_t msg_enable; |
| 740 | |||
| 741 | /* Network Statistics */ | ||
| 742 | struct net_device_stats stats; | ||
| 743 | struct gfar_extra_stats extra_stats; | ||
| 719 | }; | 744 | }; |
| 720 | 745 | ||
| 721 | static inline u32 gfar_read(volatile unsigned __iomem *addr) | 746 | static inline u32 gfar_read(volatile unsigned __iomem *addr) |
