diff options
Diffstat (limited to 'drivers/net/s2io.h')
-rw-r--r-- | drivers/net/s2io.h | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/drivers/net/s2io.h b/drivers/net/s2io.h index a83a1d85f72e..fb46a4fed334 100644 --- a/drivers/net/s2io.h +++ b/drivers/net/s2io.h | |||
@@ -661,8 +661,8 @@ typedef struct { | |||
661 | /* Default Tunable parameters of the NIC. */ | 661 | /* Default Tunable parameters of the NIC. */ |
662 | #define DEFAULT_FIFO_0_LEN 4096 | 662 | #define DEFAULT_FIFO_0_LEN 4096 |
663 | #define DEFAULT_FIFO_1_7_LEN 512 | 663 | #define DEFAULT_FIFO_1_7_LEN 512 |
664 | #define SMALL_BLK_CNT 30 | 664 | #define SMALL_BLK_CNT 30 |
665 | #define LARGE_BLK_CNT 100 | 665 | #define LARGE_BLK_CNT 100 |
666 | 666 | ||
667 | /* | 667 | /* |
668 | * Structure to keep track of the MSI-X vectors and the corresponding | 668 | * Structure to keep track of the MSI-X vectors and the corresponding |
@@ -733,7 +733,7 @@ struct s2io_nic { | |||
733 | int device_close_flag; | 733 | int device_close_flag; |
734 | int device_enabled_once; | 734 | int device_enabled_once; |
735 | 735 | ||
736 | char name[50]; | 736 | char name[60]; |
737 | struct tasklet_struct task; | 737 | struct tasklet_struct task; |
738 | volatile unsigned long tasklet_status; | 738 | volatile unsigned long tasklet_status; |
739 | 739 | ||
@@ -804,6 +804,8 @@ struct s2io_nic { | |||
804 | char desc1[35]; | 804 | char desc1[35]; |
805 | char desc2[35]; | 805 | char desc2[35]; |
806 | 806 | ||
807 | int avail_msix_vectors; /* No. of MSI-X vectors granted by system */ | ||
808 | |||
807 | struct msix_info_st msix_info[0x3f]; | 809 | struct msix_info_st msix_info[0x3f]; |
808 | 810 | ||
809 | #define XFRAME_I_DEVICE 1 | 811 | #define XFRAME_I_DEVICE 1 |
@@ -851,28 +853,32 @@ static inline void writeq(u64 val, void __iomem *addr) | |||
851 | writel((u32) (val), addr); | 853 | writel((u32) (val), addr); |
852 | writel((u32) (val >> 32), (addr + 4)); | 854 | writel((u32) (val >> 32), (addr + 4)); |
853 | } | 855 | } |
856 | #endif | ||
854 | 857 | ||
855 | /* In 32 bit modes, some registers have to be written in a | 858 | /* |
856 | * particular order to expect correct hardware operation. The | 859 | * Some registers have to be written in a particular order to |
857 | * macro SPECIAL_REG_WRITE is used to perform such ordered | 860 | * expect correct hardware operation. The macro SPECIAL_REG_WRITE |
858 | * writes. Defines UF (Upper First) and LF (Lower First) will | 861 | * is used to perform such ordered writes. Defines UF (Upper First) |
859 | * be used to specify the required write order. | 862 | * and LF (Lower First) will be used to specify the required write order. |
860 | */ | 863 | */ |
861 | #define UF 1 | 864 | #define UF 1 |
862 | #define LF 2 | 865 | #define LF 2 |
863 | static inline void SPECIAL_REG_WRITE(u64 val, void __iomem *addr, int order) | 866 | static inline void SPECIAL_REG_WRITE(u64 val, void __iomem *addr, int order) |
864 | { | 867 | { |
868 | u32 ret; | ||
869 | |||
865 | if (order == LF) { | 870 | if (order == LF) { |
866 | writel((u32) (val), addr); | 871 | writel((u32) (val), addr); |
872 | ret = readl(addr); | ||
867 | writel((u32) (val >> 32), (addr + 4)); | 873 | writel((u32) (val >> 32), (addr + 4)); |
874 | ret = readl(addr + 4); | ||
868 | } else { | 875 | } else { |
869 | writel((u32) (val >> 32), (addr + 4)); | 876 | writel((u32) (val >> 32), (addr + 4)); |
877 | ret = readl(addr + 4); | ||
870 | writel((u32) (val), addr); | 878 | writel((u32) (val), addr); |
879 | ret = readl(addr); | ||
871 | } | 880 | } |
872 | } | 881 | } |
873 | #else | ||
874 | #define SPECIAL_REG_WRITE(val, addr, dummy) writeq(val, addr) | ||
875 | #endif | ||
876 | 882 | ||
877 | /* Interrupt related values of Xena */ | 883 | /* Interrupt related values of Xena */ |
878 | 884 | ||
@@ -968,7 +974,7 @@ static int verify_xena_quiescence(nic_t *sp, u64 val64, int flag); | |||
968 | static struct ethtool_ops netdev_ethtool_ops; | 974 | static struct ethtool_ops netdev_ethtool_ops; |
969 | static void s2io_set_link(unsigned long data); | 975 | static void s2io_set_link(unsigned long data); |
970 | static int s2io_set_swapper(nic_t * sp); | 976 | static int s2io_set_swapper(nic_t * sp); |
971 | static void s2io_card_down(nic_t *nic); | 977 | static void s2io_card_down(nic_t *nic, int flag); |
972 | static int s2io_card_up(nic_t *nic); | 978 | static int s2io_card_up(nic_t *nic); |
973 | static int get_xena_rev_id(struct pci_dev *pdev); | 979 | static int get_xena_rev_id(struct pci_dev *pdev); |
974 | static void restore_xmsi_data(nic_t *nic); | 980 | static void restore_xmsi_data(nic_t *nic); |