diff options
Diffstat (limited to 'drivers/infiniband/hw/ipath')
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_common.h | 123 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_diag.c | 3 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_driver.c | 23 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_file_ops.c | 4 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_init_chip.c | 4 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_intr.c | 2 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_layer.c | 8 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_mad.c | 6 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_qp.c | 16 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_rc.c | 40 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_ruc.c | 8 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_sysfs.c | 6 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_uc.c | 4 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_ud.c | 24 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_verbs.c | 20 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ips_common.h | 264 |
16 files changed, 198 insertions, 357 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_common.h b/drivers/infiniband/hw/ipath/ipath_common.h index 3130a7ed254b..062bd392e7e5 100644 --- a/drivers/infiniband/hw/ipath/ipath_common.h +++ b/drivers/infiniband/hw/ipath/ipath_common.h | |||
@@ -39,7 +39,8 @@ | |||
39 | * to communicate between kernel and user code. | 39 | * to communicate between kernel and user code. |
40 | */ | 40 | */ |
41 | 41 | ||
42 | /* This is the IEEE-assigned OUI for QLogic, Inc. InfiniPath */ | 42 | |
43 | /* This is the IEEE-assigned OUI for QLogic Inc. InfiniPath */ | ||
43 | #define IPATH_SRC_OUI_1 0x00 | 44 | #define IPATH_SRC_OUI_1 0x00 |
44 | #define IPATH_SRC_OUI_2 0x11 | 45 | #define IPATH_SRC_OUI_2 0x11 |
45 | #define IPATH_SRC_OUI_3 0x75 | 46 | #define IPATH_SRC_OUI_3 0x75 |
@@ -343,9 +344,9 @@ struct ipath_base_info { | |||
343 | /* | 344 | /* |
344 | * Similarly, this is the kernel version going back to the user. It's | 345 | * Similarly, this is the kernel version going back to the user. It's |
345 | * slightly different, in that we want to tell if the driver was built as | 346 | * slightly different, in that we want to tell if the driver was built as |
346 | * part of a QLogic release, or from the driver from OpenIB, kernel.org, | 347 | * part of a QLogic release, or from the driver from openfabrics.org, |
347 | * or a standard distribution, for support reasons. The high bit is 0 for | 348 | * kernel.org, or a standard distribution, for support reasons. |
348 | * non-QLogic, and 1 for QLogic-built/supplied. | 349 | * The high bit is 0 for non-QLogic and 1 for QLogic-built/supplied. |
349 | * | 350 | * |
350 | * It's returned by the driver to the user code during initialization in the | 351 | * It's returned by the driver to the user code during initialization in the |
351 | * spi_sw_version field of ipath_base_info, so the user code can in turn | 352 | * spi_sw_version field of ipath_base_info, so the user code can in turn |
@@ -600,14 +601,118 @@ struct infinipath_counters { | |||
600 | #define INFINIPATH_KPF_INTR 0x1 | 601 | #define INFINIPATH_KPF_INTR 0x1 |
601 | 602 | ||
602 | /* SendPIO per-buffer control */ | 603 | /* SendPIO per-buffer control */ |
603 | #define INFINIPATH_SP_LENGTHP1_MASK 0x3FF | 604 | #define INFINIPATH_SP_TEST 0x40 |
604 | #define INFINIPATH_SP_LENGTHP1_SHIFT 0 | 605 | #define INFINIPATH_SP_TESTEBP 0x20 |
605 | #define INFINIPATH_SP_INTR 0x80000000 | ||
606 | #define INFINIPATH_SP_TEST 0x40000000 | ||
607 | #define INFINIPATH_SP_TESTEBP 0x20000000 | ||
608 | 606 | ||
609 | /* SendPIOAvail bits */ | 607 | /* SendPIOAvail bits */ |
610 | #define INFINIPATH_SENDPIOAVAIL_BUSY_SHIFT 1 | 608 | #define INFINIPATH_SENDPIOAVAIL_BUSY_SHIFT 1 |
611 | #define INFINIPATH_SENDPIOAVAIL_CHECK_SHIFT 0 | 609 | #define INFINIPATH_SENDPIOAVAIL_CHECK_SHIFT 0 |
612 | 610 | ||
611 | /* infinipath header format */ | ||
612 | struct ipath_header { | ||
613 | /* | ||
614 | * Version - 4 bits, Port - 4 bits, TID - 10 bits and Offset - | ||
615 | * 14 bits before ECO change ~28 Dec 03. After that, Vers 4, | ||
616 | * Port 3, TID 11, offset 14. | ||
617 | */ | ||
618 | __le32 ver_port_tid_offset; | ||
619 | __le16 chksum; | ||
620 | __le16 pkt_flags; | ||
621 | }; | ||
622 | |||
623 | /* infinipath user message header format. | ||
624 | * This structure contains the first 4 fields common to all protocols | ||
625 | * that employ infinipath. | ||
626 | */ | ||
627 | struct ipath_message_header { | ||
628 | __be16 lrh[4]; | ||
629 | __be32 bth[3]; | ||
630 | /* fields below this point are in host byte order */ | ||
631 | struct ipath_header iph; | ||
632 | __u8 sub_opcode; | ||
633 | }; | ||
634 | |||
635 | /* infinipath ethernet header format */ | ||
636 | struct ether_header { | ||
637 | __be16 lrh[4]; | ||
638 | __be32 bth[3]; | ||
639 | struct ipath_header iph; | ||
640 | __u8 sub_opcode; | ||
641 | __u8 cmd; | ||
642 | __be16 lid; | ||
643 | __u16 mac[3]; | ||
644 | __u8 frag_num; | ||
645 | __u8 seq_num; | ||
646 | __le32 len; | ||
647 | /* MUST be of word size due to PIO write requirements */ | ||
648 | __le32 csum; | ||
649 | __le16 csum_offset; | ||
650 | __le16 flags; | ||
651 | __u16 first_2_bytes; | ||
652 | __u8 unused[2]; /* currently unused */ | ||
653 | }; | ||
654 | |||
655 | |||
656 | /* IB - LRH header consts */ | ||
657 | #define IPATH_LRH_GRH 0x0003 /* 1. word of IB LRH - next header: GRH */ | ||
658 | #define IPATH_LRH_BTH 0x0002 /* 1. word of IB LRH - next header: BTH */ | ||
659 | |||
660 | /* misc. */ | ||
661 | #define SIZE_OF_CRC 1 | ||
662 | |||
663 | #define IPATH_DEFAULT_P_KEY 0xFFFF | ||
664 | #define IPATH_PERMISSIVE_LID 0xFFFF | ||
665 | #define IPATH_AETH_CREDIT_SHIFT 24 | ||
666 | #define IPATH_AETH_CREDIT_MASK 0x1F | ||
667 | #define IPATH_AETH_CREDIT_INVAL 0x1F | ||
668 | #define IPATH_PSN_MASK 0xFFFFFF | ||
669 | #define IPATH_MSN_MASK 0xFFFFFF | ||
670 | #define IPATH_QPN_MASK 0xFFFFFF | ||
671 | #define IPATH_MULTICAST_LID_BASE 0xC000 | ||
672 | #define IPATH_MULTICAST_QPN 0xFFFFFF | ||
673 | |||
674 | /* Receive Header Queue: receive type (from infinipath) */ | ||
675 | #define RCVHQ_RCV_TYPE_EXPECTED 0 | ||
676 | #define RCVHQ_RCV_TYPE_EAGER 1 | ||
677 | #define RCVHQ_RCV_TYPE_NON_KD 2 | ||
678 | #define RCVHQ_RCV_TYPE_ERROR 3 | ||
679 | |||
680 | |||
681 | /* sub OpCodes - ith4x */ | ||
682 | #define IPATH_ITH4X_OPCODE_ENCAP 0x81 | ||
683 | #define IPATH_ITH4X_OPCODE_LID_ARP 0x82 | ||
684 | |||
685 | #define IPATH_HEADER_QUEUE_WORDS 9 | ||
686 | |||
687 | /* functions for extracting fields from rcvhdrq entries for the driver. | ||
688 | */ | ||
689 | static inline __u32 ipath_hdrget_err_flags(const __le32 * rbuf) | ||
690 | { | ||
691 | return __le32_to_cpu(rbuf[1]); | ||
692 | } | ||
693 | |||
694 | static inline __u32 ipath_hdrget_rcv_type(const __le32 * rbuf) | ||
695 | { | ||
696 | return (__le32_to_cpu(rbuf[0]) >> INFINIPATH_RHF_RCVTYPE_SHIFT) | ||
697 | & INFINIPATH_RHF_RCVTYPE_MASK; | ||
698 | } | ||
699 | |||
700 | static inline __u32 ipath_hdrget_length_in_bytes(const __le32 * rbuf) | ||
701 | { | ||
702 | return ((__le32_to_cpu(rbuf[0]) >> INFINIPATH_RHF_LENGTH_SHIFT) | ||
703 | & INFINIPATH_RHF_LENGTH_MASK) << 2; | ||
704 | } | ||
705 | |||
706 | static inline __u32 ipath_hdrget_index(const __le32 * rbuf) | ||
707 | { | ||
708 | return (__le32_to_cpu(rbuf[0]) >> INFINIPATH_RHF_EGRINDEX_SHIFT) | ||
709 | & INFINIPATH_RHF_EGRINDEX_MASK; | ||
710 | } | ||
711 | |||
712 | static inline __u32 ipath_hdrget_ipath_ver(__le32 hdrword) | ||
713 | { | ||
714 | return (__le32_to_cpu(hdrword) >> INFINIPATH_I_VERS_SHIFT) | ||
715 | & INFINIPATH_I_VERS_MASK; | ||
716 | } | ||
717 | |||
613 | #endif /* _IPATH_COMMON_H */ | 718 | #endif /* _IPATH_COMMON_H */ |
diff --git a/drivers/infiniband/hw/ipath/ipath_diag.c b/drivers/infiniband/hw/ipath/ipath_diag.c index 8a0425e98b5f..147dd89e21c9 100644 --- a/drivers/infiniband/hw/ipath/ipath_diag.c +++ b/drivers/infiniband/hw/ipath/ipath_diag.c | |||
@@ -44,10 +44,9 @@ | |||
44 | #include <linux/pci.h> | 44 | #include <linux/pci.h> |
45 | #include <asm/uaccess.h> | 45 | #include <asm/uaccess.h> |
46 | 46 | ||
47 | #include "ipath_common.h" | ||
48 | #include "ipath_kernel.h" | 47 | #include "ipath_kernel.h" |
49 | #include "ips_common.h" | ||
50 | #include "ipath_layer.h" | 48 | #include "ipath_layer.h" |
49 | #include "ipath_common.h" | ||
51 | 50 | ||
52 | int ipath_diag_inuse; | 51 | int ipath_diag_inuse; |
53 | static int diag_set_link; | 52 | static int diag_set_link; |
diff --git a/drivers/infiniband/hw/ipath/ipath_driver.c b/drivers/infiniband/hw/ipath/ipath_driver.c index f647918db62b..6efc56bce921 100644 --- a/drivers/infiniband/hw/ipath/ipath_driver.c +++ b/drivers/infiniband/hw/ipath/ipath_driver.c | |||
@@ -39,8 +39,8 @@ | |||
39 | #include <linux/vmalloc.h> | 39 | #include <linux/vmalloc.h> |
40 | 40 | ||
41 | #include "ipath_kernel.h" | 41 | #include "ipath_kernel.h" |
42 | #include "ips_common.h" | ||
43 | #include "ipath_layer.h" | 42 | #include "ipath_layer.h" |
43 | #include "ipath_common.h" | ||
44 | 44 | ||
45 | static void ipath_update_pio_bufs(struct ipath_devdata *); | 45 | static void ipath_update_pio_bufs(struct ipath_devdata *); |
46 | 46 | ||
@@ -823,7 +823,8 @@ static void ipath_rcv_layer(struct ipath_devdata *dd, u32 etail, | |||
823 | u8 pad, *bthbytes; | 823 | u8 pad, *bthbytes; |
824 | struct sk_buff *skb, *nskb; | 824 | struct sk_buff *skb, *nskb; |
825 | 825 | ||
826 | if (dd->ipath_port0_skbs && hdr->sub_opcode == OPCODE_ENCAP) { | 826 | if (dd->ipath_port0_skbs && |
827 | hdr->sub_opcode == IPATH_ITH4X_OPCODE_ENCAP) { | ||
827 | /* | 828 | /* |
828 | * Allocate a new sk_buff to replace the one we give | 829 | * Allocate a new sk_buff to replace the one we give |
829 | * to the network stack. | 830 | * to the network stack. |
@@ -854,7 +855,7 @@ static void ipath_rcv_layer(struct ipath_devdata *dd, u32 etail, | |||
854 | /* another ether packet received */ | 855 | /* another ether packet received */ |
855 | ipath_stats.sps_ether_rpkts++; | 856 | ipath_stats.sps_ether_rpkts++; |
856 | } | 857 | } |
857 | else if (hdr->sub_opcode == OPCODE_LID_ARP) | 858 | else if (hdr->sub_opcode == IPATH_ITH4X_OPCODE_LID_ARP) |
858 | __ipath_layer_rcv_lid(dd, hdr); | 859 | __ipath_layer_rcv_lid(dd, hdr); |
859 | } | 860 | } |
860 | 861 | ||
@@ -871,7 +872,7 @@ void ipath_kreceive(struct ipath_devdata *dd) | |||
871 | const u32 rsize = dd->ipath_rcvhdrentsize; /* words */ | 872 | const u32 rsize = dd->ipath_rcvhdrentsize; /* words */ |
872 | const u32 maxcnt = dd->ipath_rcvhdrcnt * rsize; /* words */ | 873 | const u32 maxcnt = dd->ipath_rcvhdrcnt * rsize; /* words */ |
873 | u32 etail = -1, l, hdrqtail; | 874 | u32 etail = -1, l, hdrqtail; |
874 | struct ips_message_header *hdr; | 875 | struct ipath_message_header *hdr; |
875 | u32 eflags, i, etype, tlen, pkttot = 0, updegr=0, reloop=0; | 876 | u32 eflags, i, etype, tlen, pkttot = 0, updegr=0, reloop=0; |
876 | static u64 totcalls; /* stats, may eventually remove */ | 877 | static u64 totcalls; /* stats, may eventually remove */ |
877 | char emsg[128]; | 878 | char emsg[128]; |
@@ -897,7 +898,7 @@ reloop: | |||
897 | u8 *bthbytes; | 898 | u8 *bthbytes; |
898 | 899 | ||
899 | rc = (u64 *) (dd->ipath_pd[0]->port_rcvhdrq + (l << 2)); | 900 | rc = (u64 *) (dd->ipath_pd[0]->port_rcvhdrq + (l << 2)); |
900 | hdr = (struct ips_message_header *)&rc[1]; | 901 | hdr = (struct ipath_message_header *)&rc[1]; |
901 | /* | 902 | /* |
902 | * could make a network order version of IPATH_KD_QP, and | 903 | * could make a network order version of IPATH_KD_QP, and |
903 | * do the obvious shift before masking to speed this up. | 904 | * do the obvious shift before masking to speed this up. |
@@ -905,10 +906,10 @@ reloop: | |||
905 | qp = ntohl(hdr->bth[1]) & 0xffffff; | 906 | qp = ntohl(hdr->bth[1]) & 0xffffff; |
906 | bthbytes = (u8 *) hdr->bth; | 907 | bthbytes = (u8 *) hdr->bth; |
907 | 908 | ||
908 | eflags = ips_get_hdr_err_flags((__le32 *) rc); | 909 | eflags = ipath_hdrget_err_flags((__le32 *) rc); |
909 | etype = ips_get_rcv_type((__le32 *) rc); | 910 | etype = ipath_hdrget_rcv_type((__le32 *) rc); |
910 | /* total length */ | 911 | /* total length */ |
911 | tlen = ips_get_length_in_bytes((__le32 *) rc); | 912 | tlen = ipath_hdrget_length_in_bytes((__le32 *) rc); |
912 | ebuf = NULL; | 913 | ebuf = NULL; |
913 | if (etype != RCVHQ_RCV_TYPE_EXPECTED) { | 914 | if (etype != RCVHQ_RCV_TYPE_EXPECTED) { |
914 | /* | 915 | /* |
@@ -918,7 +919,7 @@ reloop: | |||
918 | * set ebuf (so we try to copy data) unless the | 919 | * set ebuf (so we try to copy data) unless the |
919 | * length requires it. | 920 | * length requires it. |
920 | */ | 921 | */ |
921 | etail = ips_get_index((__le32 *) rc); | 922 | etail = ipath_hdrget_index((__le32 *) rc); |
922 | if (tlen > sizeof(*hdr) || | 923 | if (tlen > sizeof(*hdr) || |
923 | etype == RCVHQ_RCV_TYPE_NON_KD) | 924 | etype == RCVHQ_RCV_TYPE_NON_KD) |
924 | ebuf = ipath_get_egrbuf(dd, etail, 0); | 925 | ebuf = ipath_get_egrbuf(dd, etail, 0); |
@@ -930,7 +931,7 @@ reloop: | |||
930 | */ | 931 | */ |
931 | 932 | ||
932 | if (etype != RCVHQ_RCV_TYPE_NON_KD && etype != | 933 | if (etype != RCVHQ_RCV_TYPE_NON_KD && etype != |
933 | RCVHQ_RCV_TYPE_ERROR && ips_get_ipath_ver( | 934 | RCVHQ_RCV_TYPE_ERROR && ipath_hdrget_ipath_ver( |
934 | hdr->iph.ver_port_tid_offset) != | 935 | hdr->iph.ver_port_tid_offset) != |
935 | IPS_PROTO_VERSION) { | 936 | IPS_PROTO_VERSION) { |
936 | ipath_cdbg(PKT, "Bad InfiniPath protocol version " | 937 | ipath_cdbg(PKT, "Bad InfiniPath protocol version " |
@@ -943,7 +944,7 @@ reloop: | |||
943 | ipath_cdbg(PKT, "RHFerrs %x hdrqtail=%x typ=%u " | 944 | ipath_cdbg(PKT, "RHFerrs %x hdrqtail=%x typ=%u " |
944 | "tlen=%x opcode=%x egridx=%x: %s\n", | 945 | "tlen=%x opcode=%x egridx=%x: %s\n", |
945 | eflags, l, etype, tlen, bthbytes[0], | 946 | eflags, l, etype, tlen, bthbytes[0], |
946 | ips_get_index((__le32 *) rc), emsg); | 947 | ipath_hdrget_index((__le32 *) rc), emsg); |
947 | /* Count local link integrity errors. */ | 948 | /* Count local link integrity errors. */ |
948 | if (eflags & (INFINIPATH_RHF_H_ICRCERR | | 949 | if (eflags & (INFINIPATH_RHF_H_ICRCERR | |
949 | INFINIPATH_RHF_H_VCRCERR)) { | 950 | INFINIPATH_RHF_H_VCRCERR)) { |
diff --git a/drivers/infiniband/hw/ipath/ipath_file_ops.c b/drivers/infiniband/hw/ipath/ipath_file_ops.c index 51a609d47087..bbaa70e57db1 100644 --- a/drivers/infiniband/hw/ipath/ipath_file_ops.c +++ b/drivers/infiniband/hw/ipath/ipath_file_ops.c | |||
@@ -39,8 +39,8 @@ | |||
39 | #include <asm/pgtable.h> | 39 | #include <asm/pgtable.h> |
40 | 40 | ||
41 | #include "ipath_kernel.h" | 41 | #include "ipath_kernel.h" |
42 | #include "ips_common.h" | ||
43 | #include "ipath_layer.h" | 42 | #include "ipath_layer.h" |
43 | #include "ipath_common.h" | ||
44 | 44 | ||
45 | static int ipath_open(struct inode *, struct file *); | 45 | static int ipath_open(struct inode *, struct file *); |
46 | static int ipath_close(struct inode *, struct file *); | 46 | static int ipath_close(struct inode *, struct file *); |
@@ -458,7 +458,7 @@ static int ipath_set_part_key(struct ipath_portdata *pd, u16 key) | |||
458 | u16 lkey = key & 0x7FFF; | 458 | u16 lkey = key & 0x7FFF; |
459 | int ret; | 459 | int ret; |
460 | 460 | ||
461 | if (lkey == (IPS_DEFAULT_P_KEY & 0x7FFF)) { | 461 | if (lkey == (IPATH_DEFAULT_P_KEY & 0x7FFF)) { |
462 | /* nothing to do; this key always valid */ | 462 | /* nothing to do; this key always valid */ |
463 | ret = 0; | 463 | ret = 0; |
464 | goto bail; | 464 | goto bail; |
diff --git a/drivers/infiniband/hw/ipath/ipath_init_chip.c b/drivers/infiniband/hw/ipath/ipath_init_chip.c index ff322e5c14c8..414cdd1d80a6 100644 --- a/drivers/infiniband/hw/ipath/ipath_init_chip.c +++ b/drivers/infiniband/hw/ipath/ipath_init_chip.c | |||
@@ -36,7 +36,7 @@ | |||
36 | #include <linux/vmalloc.h> | 36 | #include <linux/vmalloc.h> |
37 | 37 | ||
38 | #include "ipath_kernel.h" | 38 | #include "ipath_kernel.h" |
39 | #include "ips_common.h" | 39 | #include "ipath_common.h" |
40 | 40 | ||
41 | /* | 41 | /* |
42 | * min buffers we want to have per port, after driver | 42 | * min buffers we want to have per port, after driver |
@@ -277,7 +277,7 @@ static int init_chip_first(struct ipath_devdata *dd, | |||
277 | pd->port_port = 0; | 277 | pd->port_port = 0; |
278 | pd->port_cnt = 1; | 278 | pd->port_cnt = 1; |
279 | /* The port 0 pkey table is used by the layer interface. */ | 279 | /* The port 0 pkey table is used by the layer interface. */ |
280 | pd->port_pkeys[0] = IPS_DEFAULT_P_KEY; | 280 | pd->port_pkeys[0] = IPATH_DEFAULT_P_KEY; |
281 | dd->ipath_rcvtidcnt = | 281 | dd->ipath_rcvtidcnt = |
282 | ipath_read_kreg32(dd, dd->ipath_kregs->kr_rcvtidcnt); | 282 | ipath_read_kreg32(dd, dd->ipath_kregs->kr_rcvtidcnt); |
283 | dd->ipath_rcvtidbase = | 283 | dd->ipath_rcvtidbase = |
diff --git a/drivers/infiniband/hw/ipath/ipath_intr.c b/drivers/infiniband/hw/ipath/ipath_intr.c index 30160bcd1acf..280e732660a1 100644 --- a/drivers/infiniband/hw/ipath/ipath_intr.c +++ b/drivers/infiniband/hw/ipath/ipath_intr.c | |||
@@ -34,8 +34,8 @@ | |||
34 | #include <linux/pci.h> | 34 | #include <linux/pci.h> |
35 | 35 | ||
36 | #include "ipath_kernel.h" | 36 | #include "ipath_kernel.h" |
37 | #include "ips_common.h" | ||
38 | #include "ipath_layer.h" | 37 | #include "ipath_layer.h" |
38 | #include "ipath_common.h" | ||
39 | 39 | ||
40 | /* These are all rcv-related errors which we want to count for stats */ | 40 | /* These are all rcv-related errors which we want to count for stats */ |
41 | #define E_SUM_PKTERRS \ | 41 | #define E_SUM_PKTERRS \ |
diff --git a/drivers/infiniband/hw/ipath/ipath_layer.c b/drivers/infiniband/hw/ipath/ipath_layer.c index 963942d7ef09..b28c6f81c731 100644 --- a/drivers/infiniband/hw/ipath/ipath_layer.c +++ b/drivers/infiniband/hw/ipath/ipath_layer.c | |||
@@ -41,8 +41,8 @@ | |||
41 | #include <asm/byteorder.h> | 41 | #include <asm/byteorder.h> |
42 | 42 | ||
43 | #include "ipath_kernel.h" | 43 | #include "ipath_kernel.h" |
44 | #include "ips_common.h" | ||
45 | #include "ipath_layer.h" | 44 | #include "ipath_layer.h" |
45 | #include "ipath_common.h" | ||
46 | 46 | ||
47 | /* Acquire before ipath_devs_lock. */ | 47 | /* Acquire before ipath_devs_lock. */ |
48 | static DEFINE_MUTEX(ipath_layer_mutex); | 48 | static DEFINE_MUTEX(ipath_layer_mutex); |
@@ -622,7 +622,7 @@ int ipath_layer_open(struct ipath_devdata *dd, u32 * pktmax) | |||
622 | goto bail; | 622 | goto bail; |
623 | } | 623 | } |
624 | 624 | ||
625 | ret = ipath_setrcvhdrsize(dd, NUM_OF_EXTRA_WORDS_IN_HEADER_QUEUE); | 625 | ret = ipath_setrcvhdrsize(dd, IPATH_HEADER_QUEUE_WORDS); |
626 | 626 | ||
627 | if (ret < 0) | 627 | if (ret < 0) |
628 | goto bail; | 628 | goto bail; |
@@ -1106,10 +1106,10 @@ int ipath_layer_send_hdr(struct ipath_devdata *dd, struct ether_header *hdr) | |||
1106 | } | 1106 | } |
1107 | 1107 | ||
1108 | vlsllnh = *((__be16 *) hdr); | 1108 | vlsllnh = *((__be16 *) hdr); |
1109 | if (vlsllnh != htons(IPS_LRH_BTH)) { | 1109 | if (vlsllnh != htons(IPATH_LRH_BTH)) { |
1110 | ipath_dbg("Warning: lrh[0] wrong (%x, not %x); " | 1110 | ipath_dbg("Warning: lrh[0] wrong (%x, not %x); " |
1111 | "not sending\n", be16_to_cpu(vlsllnh), | 1111 | "not sending\n", be16_to_cpu(vlsllnh), |
1112 | IPS_LRH_BTH); | 1112 | IPATH_LRH_BTH); |
1113 | ret = -EINVAL; | 1113 | ret = -EINVAL; |
1114 | } | 1114 | } |
1115 | if (ret) | 1115 | if (ret) |
diff --git a/drivers/infiniband/hw/ipath/ipath_mad.c b/drivers/infiniband/hw/ipath/ipath_mad.c index 195f82e136e4..d3402341b7d0 100644 --- a/drivers/infiniband/hw/ipath/ipath_mad.c +++ b/drivers/infiniband/hw/ipath/ipath_mad.c | |||
@@ -35,7 +35,7 @@ | |||
35 | 35 | ||
36 | #include "ipath_kernel.h" | 36 | #include "ipath_kernel.h" |
37 | #include "ipath_verbs.h" | 37 | #include "ipath_verbs.h" |
38 | #include "ips_common.h" | 38 | #include "ipath_common.h" |
39 | 39 | ||
40 | #define IB_SMP_UNSUP_VERSION __constant_htons(0x0004) | 40 | #define IB_SMP_UNSUP_VERSION __constant_htons(0x0004) |
41 | #define IB_SMP_UNSUP_METHOD __constant_htons(0x0008) | 41 | #define IB_SMP_UNSUP_METHOD __constant_htons(0x0008) |
@@ -306,7 +306,7 @@ static int recv_subn_set_portinfo(struct ib_smp *smp, | |||
306 | lid = be16_to_cpu(pip->lid); | 306 | lid = be16_to_cpu(pip->lid); |
307 | if (lid != ipath_layer_get_lid(dev->dd)) { | 307 | if (lid != ipath_layer_get_lid(dev->dd)) { |
308 | /* Must be a valid unicast LID address. */ | 308 | /* Must be a valid unicast LID address. */ |
309 | if (lid == 0 || lid >= IPS_MULTICAST_LID_BASE) | 309 | if (lid == 0 || lid >= IPATH_MULTICAST_LID_BASE) |
310 | goto err; | 310 | goto err; |
311 | ipath_set_lid(dev->dd, lid, pip->mkeyprot_resv_lmc & 7); | 311 | ipath_set_lid(dev->dd, lid, pip->mkeyprot_resv_lmc & 7); |
312 | event.event = IB_EVENT_LID_CHANGE; | 312 | event.event = IB_EVENT_LID_CHANGE; |
@@ -316,7 +316,7 @@ static int recv_subn_set_portinfo(struct ib_smp *smp, | |||
316 | smlid = be16_to_cpu(pip->sm_lid); | 316 | smlid = be16_to_cpu(pip->sm_lid); |
317 | if (smlid != dev->sm_lid) { | 317 | if (smlid != dev->sm_lid) { |
318 | /* Must be a valid unicast LID address. */ | 318 | /* Must be a valid unicast LID address. */ |
319 | if (smlid == 0 || smlid >= IPS_MULTICAST_LID_BASE) | 319 | if (smlid == 0 || smlid >= IPATH_MULTICAST_LID_BASE) |
320 | goto err; | 320 | goto err; |
321 | dev->sm_lid = smlid; | 321 | dev->sm_lid = smlid; |
322 | event.event = IB_EVENT_SM_CHANGE; | 322 | event.event = IB_EVENT_SM_CHANGE; |
diff --git a/drivers/infiniband/hw/ipath/ipath_qp.c b/drivers/infiniband/hw/ipath/ipath_qp.c index a77a0dad0fa0..83e557be591e 100644 --- a/drivers/infiniband/hw/ipath/ipath_qp.c +++ b/drivers/infiniband/hw/ipath/ipath_qp.c | |||
@@ -35,7 +35,7 @@ | |||
35 | #include <linux/vmalloc.h> | 35 | #include <linux/vmalloc.h> |
36 | 36 | ||
37 | #include "ipath_verbs.h" | 37 | #include "ipath_verbs.h" |
38 | #include "ips_common.h" | 38 | #include "ipath_common.h" |
39 | 39 | ||
40 | #define BITS_PER_PAGE (PAGE_SIZE*BITS_PER_BYTE) | 40 | #define BITS_PER_PAGE (PAGE_SIZE*BITS_PER_BYTE) |
41 | #define BITS_PER_PAGE_MASK (BITS_PER_PAGE-1) | 41 | #define BITS_PER_PAGE_MASK (BITS_PER_PAGE-1) |
@@ -450,7 +450,7 @@ int ipath_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, | |||
450 | 450 | ||
451 | if (attr_mask & IB_QP_AV) | 451 | if (attr_mask & IB_QP_AV) |
452 | if (attr->ah_attr.dlid == 0 || | 452 | if (attr->ah_attr.dlid == 0 || |
453 | attr->ah_attr.dlid >= IPS_MULTICAST_LID_BASE) | 453 | attr->ah_attr.dlid >= IPATH_MULTICAST_LID_BASE) |
454 | goto inval; | 454 | goto inval; |
455 | 455 | ||
456 | if (attr_mask & IB_QP_PKEY_INDEX) | 456 | if (attr_mask & IB_QP_PKEY_INDEX) |
@@ -585,14 +585,14 @@ int ipath_query_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, | |||
585 | */ | 585 | */ |
586 | __be32 ipath_compute_aeth(struct ipath_qp *qp) | 586 | __be32 ipath_compute_aeth(struct ipath_qp *qp) |
587 | { | 587 | { |
588 | u32 aeth = qp->r_msn & IPS_MSN_MASK; | 588 | u32 aeth = qp->r_msn & IPATH_MSN_MASK; |
589 | 589 | ||
590 | if (qp->ibqp.srq) { | 590 | if (qp->ibqp.srq) { |
591 | /* | 591 | /* |
592 | * Shared receive queues don't generate credits. | 592 | * Shared receive queues don't generate credits. |
593 | * Set the credit field to the invalid value. | 593 | * Set the credit field to the invalid value. |
594 | */ | 594 | */ |
595 | aeth |= IPS_AETH_CREDIT_INVAL << IPS_AETH_CREDIT_SHIFT; | 595 | aeth |= IPATH_AETH_CREDIT_INVAL << IPATH_AETH_CREDIT_SHIFT; |
596 | } else { | 596 | } else { |
597 | u32 min, max, x; | 597 | u32 min, max, x; |
598 | u32 credits; | 598 | u32 credits; |
@@ -622,7 +622,7 @@ __be32 ipath_compute_aeth(struct ipath_qp *qp) | |||
622 | else | 622 | else |
623 | min = x; | 623 | min = x; |
624 | } | 624 | } |
625 | aeth |= x << IPS_AETH_CREDIT_SHIFT; | 625 | aeth |= x << IPATH_AETH_CREDIT_SHIFT; |
626 | } | 626 | } |
627 | return cpu_to_be32(aeth); | 627 | return cpu_to_be32(aeth); |
628 | } | 628 | } |
@@ -888,18 +888,18 @@ void ipath_sqerror_qp(struct ipath_qp *qp, struct ib_wc *wc) | |||
888 | */ | 888 | */ |
889 | void ipath_get_credit(struct ipath_qp *qp, u32 aeth) | 889 | void ipath_get_credit(struct ipath_qp *qp, u32 aeth) |
890 | { | 890 | { |
891 | u32 credit = (aeth >> IPS_AETH_CREDIT_SHIFT) & IPS_AETH_CREDIT_MASK; | 891 | u32 credit = (aeth >> IPATH_AETH_CREDIT_SHIFT) & IPATH_AETH_CREDIT_MASK; |
892 | 892 | ||
893 | /* | 893 | /* |
894 | * If the credit is invalid, we can send | 894 | * If the credit is invalid, we can send |
895 | * as many packets as we like. Otherwise, we have to | 895 | * as many packets as we like. Otherwise, we have to |
896 | * honor the credit field. | 896 | * honor the credit field. |
897 | */ | 897 | */ |
898 | if (credit == IPS_AETH_CREDIT_INVAL) | 898 | if (credit == IPATH_AETH_CREDIT_INVAL) |
899 | qp->s_lsn = (u32) -1; | 899 | qp->s_lsn = (u32) -1; |
900 | else if (qp->s_lsn != (u32) -1) { | 900 | else if (qp->s_lsn != (u32) -1) { |
901 | /* Compute new LSN (i.e., MSN + credit) */ | 901 | /* Compute new LSN (i.e., MSN + credit) */ |
902 | credit = (aeth + credit_table[credit]) & IPS_MSN_MASK; | 902 | credit = (aeth + credit_table[credit]) & IPATH_MSN_MASK; |
903 | if (ipath_cmp24(credit, qp->s_lsn) > 0) | 903 | if (ipath_cmp24(credit, qp->s_lsn) > 0) |
904 | qp->s_lsn = credit; | 904 | qp->s_lsn = credit; |
905 | } | 905 | } |
diff --git a/drivers/infiniband/hw/ipath/ipath_rc.c b/drivers/infiniband/hw/ipath/ipath_rc.c index 8568dd0538cf..774d1615ce2f 100644 --- a/drivers/infiniband/hw/ipath/ipath_rc.c +++ b/drivers/infiniband/hw/ipath/ipath_rc.c | |||
@@ -32,7 +32,7 @@ | |||
32 | */ | 32 | */ |
33 | 33 | ||
34 | #include "ipath_verbs.h" | 34 | #include "ipath_verbs.h" |
35 | #include "ips_common.h" | 35 | #include "ipath_common.h" |
36 | 36 | ||
37 | /* cut down ridiculously long IB macro names */ | 37 | /* cut down ridiculously long IB macro names */ |
38 | #define OP(x) IB_OPCODE_RC_##x | 38 | #define OP(x) IB_OPCODE_RC_##x |
@@ -49,7 +49,7 @@ static void ipath_init_restart(struct ipath_qp *qp, struct ipath_swqe *wqe) | |||
49 | struct ipath_ibdev *dev; | 49 | struct ipath_ibdev *dev; |
50 | u32 len; | 50 | u32 len; |
51 | 51 | ||
52 | len = ((qp->s_psn - wqe->psn) & IPS_PSN_MASK) * | 52 | len = ((qp->s_psn - wqe->psn) & IPATH_PSN_MASK) * |
53 | ib_mtu_enum_to_int(qp->path_mtu); | 53 | ib_mtu_enum_to_int(qp->path_mtu); |
54 | qp->s_sge.sge = wqe->sg_list[0]; | 54 | qp->s_sge.sge = wqe->sg_list[0]; |
55 | qp->s_sge.sg_list = wqe->sg_list + 1; | 55 | qp->s_sge.sg_list = wqe->sg_list + 1; |
@@ -159,9 +159,9 @@ u32 ipath_make_rc_ack(struct ipath_qp *qp, | |||
159 | qp->s_ack_state = OP(RDMA_READ_RESPONSE_LAST); | 159 | qp->s_ack_state = OP(RDMA_READ_RESPONSE_LAST); |
160 | bth0 = OP(ACKNOWLEDGE) << 24; | 160 | bth0 = OP(ACKNOWLEDGE) << 24; |
161 | if (qp->s_nak_state) | 161 | if (qp->s_nak_state) |
162 | ohdr->u.aeth = cpu_to_be32((qp->r_msn & IPS_MSN_MASK) | | 162 | ohdr->u.aeth = cpu_to_be32((qp->r_msn & IPATH_MSN_MASK) | |
163 | (qp->s_nak_state << | 163 | (qp->s_nak_state << |
164 | IPS_AETH_CREDIT_SHIFT)); | 164 | IPATH_AETH_CREDIT_SHIFT)); |
165 | else | 165 | else |
166 | ohdr->u.aeth = ipath_compute_aeth(qp); | 166 | ohdr->u.aeth = ipath_compute_aeth(qp); |
167 | hwords++; | 167 | hwords++; |
@@ -361,7 +361,7 @@ int ipath_make_rc_req(struct ipath_qp *qp, | |||
361 | if (qp->s_tail >= qp->s_size) | 361 | if (qp->s_tail >= qp->s_size) |
362 | qp->s_tail = 0; | 362 | qp->s_tail = 0; |
363 | } | 363 | } |
364 | bth2 |= qp->s_psn++ & IPS_PSN_MASK; | 364 | bth2 |= qp->s_psn++ & IPATH_PSN_MASK; |
365 | if ((int)(qp->s_psn - qp->s_next_psn) > 0) | 365 | if ((int)(qp->s_psn - qp->s_next_psn) > 0) |
366 | qp->s_next_psn = qp->s_psn; | 366 | qp->s_next_psn = qp->s_psn; |
367 | /* | 367 | /* |
@@ -387,7 +387,7 @@ int ipath_make_rc_req(struct ipath_qp *qp, | |||
387 | qp->s_state = OP(SEND_MIDDLE); | 387 | qp->s_state = OP(SEND_MIDDLE); |
388 | /* FALLTHROUGH */ | 388 | /* FALLTHROUGH */ |
389 | case OP(SEND_MIDDLE): | 389 | case OP(SEND_MIDDLE): |
390 | bth2 = qp->s_psn++ & IPS_PSN_MASK; | 390 | bth2 = qp->s_psn++ & IPATH_PSN_MASK; |
391 | if ((int)(qp->s_psn - qp->s_next_psn) > 0) | 391 | if ((int)(qp->s_psn - qp->s_next_psn) > 0) |
392 | qp->s_next_psn = qp->s_psn; | 392 | qp->s_next_psn = qp->s_psn; |
393 | ss = &qp->s_sge; | 393 | ss = &qp->s_sge; |
@@ -429,7 +429,7 @@ int ipath_make_rc_req(struct ipath_qp *qp, | |||
429 | qp->s_state = OP(RDMA_WRITE_MIDDLE); | 429 | qp->s_state = OP(RDMA_WRITE_MIDDLE); |
430 | /* FALLTHROUGH */ | 430 | /* FALLTHROUGH */ |
431 | case OP(RDMA_WRITE_MIDDLE): | 431 | case OP(RDMA_WRITE_MIDDLE): |
432 | bth2 = qp->s_psn++ & IPS_PSN_MASK; | 432 | bth2 = qp->s_psn++ & IPATH_PSN_MASK; |
433 | if ((int)(qp->s_psn - qp->s_next_psn) > 0) | 433 | if ((int)(qp->s_psn - qp->s_next_psn) > 0) |
434 | qp->s_next_psn = qp->s_psn; | 434 | qp->s_next_psn = qp->s_psn; |
435 | ss = &qp->s_sge; | 435 | ss = &qp->s_sge; |
@@ -466,7 +466,7 @@ int ipath_make_rc_req(struct ipath_qp *qp, | |||
466 | * See ipath_restart_rc(). | 466 | * See ipath_restart_rc(). |
467 | */ | 467 | */ |
468 | ipath_init_restart(qp, wqe); | 468 | ipath_init_restart(qp, wqe); |
469 | len = ((qp->s_psn - wqe->psn) & IPS_PSN_MASK) * pmtu; | 469 | len = ((qp->s_psn - wqe->psn) & IPATH_PSN_MASK) * pmtu; |
470 | ohdr->u.rc.reth.vaddr = | 470 | ohdr->u.rc.reth.vaddr = |
471 | cpu_to_be64(wqe->wr.wr.rdma.remote_addr + len); | 471 | cpu_to_be64(wqe->wr.wr.rdma.remote_addr + len); |
472 | ohdr->u.rc.reth.rkey = | 472 | ohdr->u.rc.reth.rkey = |
@@ -474,7 +474,7 @@ int ipath_make_rc_req(struct ipath_qp *qp, | |||
474 | ohdr->u.rc.reth.length = cpu_to_be32(qp->s_len); | 474 | ohdr->u.rc.reth.length = cpu_to_be32(qp->s_len); |
475 | qp->s_state = OP(RDMA_READ_REQUEST); | 475 | qp->s_state = OP(RDMA_READ_REQUEST); |
476 | hwords += sizeof(ohdr->u.rc.reth) / 4; | 476 | hwords += sizeof(ohdr->u.rc.reth) / 4; |
477 | bth2 = qp->s_psn++ & IPS_PSN_MASK; | 477 | bth2 = qp->s_psn++ & IPATH_PSN_MASK; |
478 | if ((int)(qp->s_psn - qp->s_next_psn) > 0) | 478 | if ((int)(qp->s_psn - qp->s_next_psn) > 0) |
479 | qp->s_next_psn = qp->s_psn; | 479 | qp->s_next_psn = qp->s_psn; |
480 | ss = NULL; | 480 | ss = NULL; |
@@ -529,7 +529,7 @@ static void send_rc_ack(struct ipath_qp *qp) | |||
529 | 529 | ||
530 | /* Construct the header. */ | 530 | /* Construct the header. */ |
531 | ohdr = &hdr.u.oth; | 531 | ohdr = &hdr.u.oth; |
532 | lrh0 = IPS_LRH_BTH; | 532 | lrh0 = IPATH_LRH_BTH; |
533 | /* header size in 32-bit words LRH+BTH+AETH = (8+12+4)/4. */ | 533 | /* header size in 32-bit words LRH+BTH+AETH = (8+12+4)/4. */ |
534 | hwords = 6; | 534 | hwords = 6; |
535 | if (unlikely(qp->remote_ah_attr.ah_flags & IB_AH_GRH)) { | 535 | if (unlikely(qp->remote_ah_attr.ah_flags & IB_AH_GRH)) { |
@@ -537,14 +537,14 @@ static void send_rc_ack(struct ipath_qp *qp) | |||
537 | &qp->remote_ah_attr.grh, | 537 | &qp->remote_ah_attr.grh, |
538 | hwords, 0); | 538 | hwords, 0); |
539 | ohdr = &hdr.u.l.oth; | 539 | ohdr = &hdr.u.l.oth; |
540 | lrh0 = IPS_LRH_GRH; | 540 | lrh0 = IPATH_LRH_GRH; |
541 | } | 541 | } |
542 | /* read pkey_index w/o lock (its atomic) */ | 542 | /* read pkey_index w/o lock (its atomic) */ |
543 | bth0 = ipath_layer_get_pkey(dev->dd, qp->s_pkey_index); | 543 | bth0 = ipath_layer_get_pkey(dev->dd, qp->s_pkey_index); |
544 | if (qp->r_nak_state) | 544 | if (qp->r_nak_state) |
545 | ohdr->u.aeth = cpu_to_be32((qp->r_msn & IPS_MSN_MASK) | | 545 | ohdr->u.aeth = cpu_to_be32((qp->r_msn & IPATH_MSN_MASK) | |
546 | (qp->r_nak_state << | 546 | (qp->r_nak_state << |
547 | IPS_AETH_CREDIT_SHIFT)); | 547 | IPATH_AETH_CREDIT_SHIFT)); |
548 | else | 548 | else |
549 | ohdr->u.aeth = ipath_compute_aeth(qp); | 549 | ohdr->u.aeth = ipath_compute_aeth(qp); |
550 | if (qp->r_ack_state >= OP(COMPARE_SWAP)) { | 550 | if (qp->r_ack_state >= OP(COMPARE_SWAP)) { |
@@ -560,7 +560,7 @@ static void send_rc_ack(struct ipath_qp *qp) | |||
560 | hdr.lrh[3] = cpu_to_be16(ipath_layer_get_lid(dev->dd)); | 560 | hdr.lrh[3] = cpu_to_be16(ipath_layer_get_lid(dev->dd)); |
561 | ohdr->bth[0] = cpu_to_be32(bth0); | 561 | ohdr->bth[0] = cpu_to_be32(bth0); |
562 | ohdr->bth[1] = cpu_to_be32(qp->remote_qpn); | 562 | ohdr->bth[1] = cpu_to_be32(qp->remote_qpn); |
563 | ohdr->bth[2] = cpu_to_be32(qp->r_ack_psn & IPS_PSN_MASK); | 563 | ohdr->bth[2] = cpu_to_be32(qp->r_ack_psn & IPATH_PSN_MASK); |
564 | 564 | ||
565 | /* | 565 | /* |
566 | * If we can send the ACK, clear the ACK state. | 566 | * If we can send the ACK, clear the ACK state. |
@@ -890,8 +890,8 @@ static int do_rc_ack(struct ipath_qp *qp, u32 aeth, u32 psn, int opcode) | |||
890 | reset_psn(qp, psn); | 890 | reset_psn(qp, psn); |
891 | 891 | ||
892 | qp->s_rnr_timeout = | 892 | qp->s_rnr_timeout = |
893 | ib_ipath_rnr_table[(aeth >> IPS_AETH_CREDIT_SHIFT) & | 893 | ib_ipath_rnr_table[(aeth >> IPATH_AETH_CREDIT_SHIFT) & |
894 | IPS_AETH_CREDIT_MASK]; | 894 | IPATH_AETH_CREDIT_MASK]; |
895 | ipath_insert_rnr_queue(qp); | 895 | ipath_insert_rnr_queue(qp); |
896 | goto bail; | 896 | goto bail; |
897 | 897 | ||
@@ -899,8 +899,8 @@ static int do_rc_ack(struct ipath_qp *qp, u32 aeth, u32 psn, int opcode) | |||
899 | /* The last valid PSN seen is the previous request's. */ | 899 | /* The last valid PSN seen is the previous request's. */ |
900 | if (qp->s_last != qp->s_tail) | 900 | if (qp->s_last != qp->s_tail) |
901 | qp->s_last_psn = wqe->psn - 1; | 901 | qp->s_last_psn = wqe->psn - 1; |
902 | switch ((aeth >> IPS_AETH_CREDIT_SHIFT) & | 902 | switch ((aeth >> IPATH_AETH_CREDIT_SHIFT) & |
903 | IPS_AETH_CREDIT_MASK) { | 903 | IPATH_AETH_CREDIT_MASK) { |
904 | case 0: /* PSN sequence error */ | 904 | case 0: /* PSN sequence error */ |
905 | dev->n_seq_naks++; | 905 | dev->n_seq_naks++; |
906 | /* | 906 | /* |
@@ -1268,7 +1268,7 @@ static inline int ipath_rc_rcv_error(struct ipath_ibdev *dev, | |||
1268 | * Check for the PSN of the last atomic operation | 1268 | * Check for the PSN of the last atomic operation |
1269 | * performed and resend the result if found. | 1269 | * performed and resend the result if found. |
1270 | */ | 1270 | */ |
1271 | if ((psn & IPS_PSN_MASK) != qp->r_atomic_psn) | 1271 | if ((psn & IPATH_PSN_MASK) != qp->r_atomic_psn) |
1272 | goto done; | 1272 | goto done; |
1273 | break; | 1273 | break; |
1274 | } | 1274 | } |
@@ -1638,7 +1638,7 @@ void ipath_rc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, | |||
1638 | *(u64 *) qp->r_sge.sge.vaddr = sdata; | 1638 | *(u64 *) qp->r_sge.sge.vaddr = sdata; |
1639 | spin_unlock_irq(&dev->pending_lock); | 1639 | spin_unlock_irq(&dev->pending_lock); |
1640 | qp->r_msn++; | 1640 | qp->r_msn++; |
1641 | qp->r_atomic_psn = psn & IPS_PSN_MASK; | 1641 | qp->r_atomic_psn = psn & IPATH_PSN_MASK; |
1642 | psn |= 1 << 31; | 1642 | psn |= 1 << 31; |
1643 | break; | 1643 | break; |
1644 | } | 1644 | } |
diff --git a/drivers/infiniband/hw/ipath/ipath_ruc.c b/drivers/infiniband/hw/ipath/ipath_ruc.c index 99c0652d49dc..772bc59fb85c 100644 --- a/drivers/infiniband/hw/ipath/ipath_ruc.c +++ b/drivers/infiniband/hw/ipath/ipath_ruc.c | |||
@@ -32,7 +32,7 @@ | |||
32 | */ | 32 | */ |
33 | 33 | ||
34 | #include "ipath_verbs.h" | 34 | #include "ipath_verbs.h" |
35 | #include "ips_common.h" | 35 | #include "ipath_common.h" |
36 | 36 | ||
37 | /* | 37 | /* |
38 | * Convert the AETH RNR timeout code into the number of milliseconds. | 38 | * Convert the AETH RNR timeout code into the number of milliseconds. |
@@ -632,7 +632,7 @@ again: | |||
632 | /* Sending responses has higher priority over sending requests. */ | 632 | /* Sending responses has higher priority over sending requests. */ |
633 | if (qp->s_ack_state != IB_OPCODE_RC_ACKNOWLEDGE && | 633 | if (qp->s_ack_state != IB_OPCODE_RC_ACKNOWLEDGE && |
634 | (bth0 = ipath_make_rc_ack(qp, ohdr, pmtu)) != 0) | 634 | (bth0 = ipath_make_rc_ack(qp, ohdr, pmtu)) != 0) |
635 | bth2 = qp->s_ack_psn++ & IPS_PSN_MASK; | 635 | bth2 = qp->s_ack_psn++ & IPATH_PSN_MASK; |
636 | else if (!((qp->ibqp.qp_type == IB_QPT_RC) ? | 636 | else if (!((qp->ibqp.qp_type == IB_QPT_RC) ? |
637 | ipath_make_rc_req(qp, ohdr, pmtu, &bth0, &bth2) : | 637 | ipath_make_rc_req(qp, ohdr, pmtu, &bth0, &bth2) : |
638 | ipath_make_uc_req(qp, ohdr, pmtu, &bth0, &bth2))) { | 638 | ipath_make_uc_req(qp, ohdr, pmtu, &bth0, &bth2))) { |
@@ -651,12 +651,12 @@ again: | |||
651 | /* Construct the header. */ | 651 | /* Construct the header. */ |
652 | extra_bytes = (4 - qp->s_cur_size) & 3; | 652 | extra_bytes = (4 - qp->s_cur_size) & 3; |
653 | nwords = (qp->s_cur_size + extra_bytes) >> 2; | 653 | nwords = (qp->s_cur_size + extra_bytes) >> 2; |
654 | lrh0 = IPS_LRH_BTH; | 654 | lrh0 = IPATH_LRH_BTH; |
655 | if (unlikely(qp->remote_ah_attr.ah_flags & IB_AH_GRH)) { | 655 | if (unlikely(qp->remote_ah_attr.ah_flags & IB_AH_GRH)) { |
656 | qp->s_hdrwords += ipath_make_grh(dev, &qp->s_hdr.u.l.grh, | 656 | qp->s_hdrwords += ipath_make_grh(dev, &qp->s_hdr.u.l.grh, |
657 | &qp->remote_ah_attr.grh, | 657 | &qp->remote_ah_attr.grh, |
658 | qp->s_hdrwords, nwords); | 658 | qp->s_hdrwords, nwords); |
659 | lrh0 = IPS_LRH_GRH; | 659 | lrh0 = IPATH_LRH_GRH; |
660 | } | 660 | } |
661 | lrh0 |= qp->remote_ah_attr.sl << 4; | 661 | lrh0 |= qp->remote_ah_attr.sl << 4; |
662 | qp->s_hdr.lrh[0] = cpu_to_be16(lrh0); | 662 | qp->s_hdr.lrh[0] = cpu_to_be16(lrh0); |
diff --git a/drivers/infiniband/hw/ipath/ipath_sysfs.c b/drivers/infiniband/hw/ipath/ipath_sysfs.c index bb75076c182f..b98821d7801d 100644 --- a/drivers/infiniband/hw/ipath/ipath_sysfs.c +++ b/drivers/infiniband/hw/ipath/ipath_sysfs.c | |||
@@ -35,8 +35,8 @@ | |||
35 | #include <linux/pci.h> | 35 | #include <linux/pci.h> |
36 | 36 | ||
37 | #include "ipath_kernel.h" | 37 | #include "ipath_kernel.h" |
38 | #include "ips_common.h" | ||
39 | #include "ipath_layer.h" | 38 | #include "ipath_layer.h" |
39 | #include "ipath_common.h" | ||
40 | 40 | ||
41 | /** | 41 | /** |
42 | * ipath_parse_ushort - parse an unsigned short value in an arbitrary base | 42 | * ipath_parse_ushort - parse an unsigned short value in an arbitrary base |
@@ -187,7 +187,7 @@ static ssize_t store_lid(struct device *dev, | |||
187 | if (ret < 0) | 187 | if (ret < 0) |
188 | goto invalid; | 188 | goto invalid; |
189 | 189 | ||
190 | if (lid == 0 || lid >= IPS_MULTICAST_LID_BASE) { | 190 | if (lid == 0 || lid >= IPATH_MULTICAST_LID_BASE) { |
191 | ret = -EINVAL; | 191 | ret = -EINVAL; |
192 | goto invalid; | 192 | goto invalid; |
193 | } | 193 | } |
@@ -221,7 +221,7 @@ static ssize_t store_mlid(struct device *dev, | |||
221 | int ret; | 221 | int ret; |
222 | 222 | ||
223 | ret = ipath_parse_ushort(buf, &mlid); | 223 | ret = ipath_parse_ushort(buf, &mlid); |
224 | if (ret < 0 || mlid < IPS_MULTICAST_LID_BASE) | 224 | if (ret < 0 || mlid < IPATH_MULTICAST_LID_BASE) |
225 | goto invalid; | 225 | goto invalid; |
226 | 226 | ||
227 | unit = dd->ipath_unit; | 227 | unit = dd->ipath_unit; |
diff --git a/drivers/infiniband/hw/ipath/ipath_uc.c b/drivers/infiniband/hw/ipath/ipath_uc.c index 10516842bb82..c33abea2d5a7 100644 --- a/drivers/infiniband/hw/ipath/ipath_uc.c +++ b/drivers/infiniband/hw/ipath/ipath_uc.c | |||
@@ -32,7 +32,7 @@ | |||
32 | */ | 32 | */ |
33 | 33 | ||
34 | #include "ipath_verbs.h" | 34 | #include "ipath_verbs.h" |
35 | #include "ips_common.h" | 35 | #include "ipath_common.h" |
36 | 36 | ||
37 | /* cut down ridiculously long IB macro names */ | 37 | /* cut down ridiculously long IB macro names */ |
38 | #define OP(x) IB_OPCODE_UC_##x | 38 | #define OP(x) IB_OPCODE_UC_##x |
@@ -213,7 +213,7 @@ int ipath_make_uc_req(struct ipath_qp *qp, | |||
213 | qp->s_cur_sge = &qp->s_sge; | 213 | qp->s_cur_sge = &qp->s_sge; |
214 | qp->s_cur_size = len; | 214 | qp->s_cur_size = len; |
215 | *bth0p = bth0 | (qp->s_state << 24); | 215 | *bth0p = bth0 | (qp->s_state << 24); |
216 | *bth2p = qp->s_next_psn++ & IPS_PSN_MASK; | 216 | *bth2p = qp->s_next_psn++ & IPATH_PSN_MASK; |
217 | return 1; | 217 | return 1; |
218 | 218 | ||
219 | done: | 219 | done: |
diff --git a/drivers/infiniband/hw/ipath/ipath_ud.c b/drivers/infiniband/hw/ipath/ipath_ud.c index 4b0502907f3c..3466129af804 100644 --- a/drivers/infiniband/hw/ipath/ipath_ud.c +++ b/drivers/infiniband/hw/ipath/ipath_ud.c | |||
@@ -34,7 +34,7 @@ | |||
34 | #include <rdma/ib_smi.h> | 34 | #include <rdma/ib_smi.h> |
35 | 35 | ||
36 | #include "ipath_verbs.h" | 36 | #include "ipath_verbs.h" |
37 | #include "ips_common.h" | 37 | #include "ipath_common.h" |
38 | 38 | ||
39 | /** | 39 | /** |
40 | * ipath_ud_loopback - handle send on loopback QPs | 40 | * ipath_ud_loopback - handle send on loopback QPs |
@@ -289,8 +289,8 @@ int ipath_post_ud_send(struct ipath_qp *qp, struct ib_send_wr *wr) | |||
289 | ret = -EINVAL; | 289 | ret = -EINVAL; |
290 | goto bail; | 290 | goto bail; |
291 | } | 291 | } |
292 | if (ah_attr->dlid >= IPS_MULTICAST_LID_BASE) { | 292 | if (ah_attr->dlid >= IPATH_MULTICAST_LID_BASE) { |
293 | if (ah_attr->dlid != IPS_PERMISSIVE_LID) | 293 | if (ah_attr->dlid != IPATH_PERMISSIVE_LID) |
294 | dev->n_multicast_xmit++; | 294 | dev->n_multicast_xmit++; |
295 | else | 295 | else |
296 | dev->n_unicast_xmit++; | 296 | dev->n_unicast_xmit++; |
@@ -310,7 +310,7 @@ int ipath_post_ud_send(struct ipath_qp *qp, struct ib_send_wr *wr) | |||
310 | if (ah_attr->ah_flags & IB_AH_GRH) { | 310 | if (ah_attr->ah_flags & IB_AH_GRH) { |
311 | /* Header size in 32-bit words. */ | 311 | /* Header size in 32-bit words. */ |
312 | hwords = 17; | 312 | hwords = 17; |
313 | lrh0 = IPS_LRH_GRH; | 313 | lrh0 = IPATH_LRH_GRH; |
314 | ohdr = &qp->s_hdr.u.l.oth; | 314 | ohdr = &qp->s_hdr.u.l.oth; |
315 | qp->s_hdr.u.l.grh.version_tclass_flow = | 315 | qp->s_hdr.u.l.grh.version_tclass_flow = |
316 | cpu_to_be32((6 << 28) | | 316 | cpu_to_be32((6 << 28) | |
@@ -336,7 +336,7 @@ int ipath_post_ud_send(struct ipath_qp *qp, struct ib_send_wr *wr) | |||
336 | } else { | 336 | } else { |
337 | /* Header size in 32-bit words. */ | 337 | /* Header size in 32-bit words. */ |
338 | hwords = 7; | 338 | hwords = 7; |
339 | lrh0 = IPS_LRH_BTH; | 339 | lrh0 = IPATH_LRH_BTH; |
340 | ohdr = &qp->s_hdr.u.oth; | 340 | ohdr = &qp->s_hdr.u.oth; |
341 | } | 341 | } |
342 | if (wr->opcode == IB_WR_SEND_WITH_IMM) { | 342 | if (wr->opcode == IB_WR_SEND_WITH_IMM) { |
@@ -367,18 +367,18 @@ int ipath_post_ud_send(struct ipath_qp *qp, struct ib_send_wr *wr) | |||
367 | if (wr->send_flags & IB_SEND_SOLICITED) | 367 | if (wr->send_flags & IB_SEND_SOLICITED) |
368 | bth0 |= 1 << 23; | 368 | bth0 |= 1 << 23; |
369 | bth0 |= extra_bytes << 20; | 369 | bth0 |= extra_bytes << 20; |
370 | bth0 |= qp->ibqp.qp_type == IB_QPT_SMI ? IPS_DEFAULT_P_KEY : | 370 | bth0 |= qp->ibqp.qp_type == IB_QPT_SMI ? IPATH_DEFAULT_P_KEY : |
371 | ipath_layer_get_pkey(dev->dd, qp->s_pkey_index); | 371 | ipath_layer_get_pkey(dev->dd, qp->s_pkey_index); |
372 | ohdr->bth[0] = cpu_to_be32(bth0); | 372 | ohdr->bth[0] = cpu_to_be32(bth0); |
373 | /* | 373 | /* |
374 | * Use the multicast QP if the destination LID is a multicast LID. | 374 | * Use the multicast QP if the destination LID is a multicast LID. |
375 | */ | 375 | */ |
376 | ohdr->bth[1] = ah_attr->dlid >= IPS_MULTICAST_LID_BASE && | 376 | ohdr->bth[1] = ah_attr->dlid >= IPATH_MULTICAST_LID_BASE && |
377 | ah_attr->dlid != IPS_PERMISSIVE_LID ? | 377 | ah_attr->dlid != IPATH_PERMISSIVE_LID ? |
378 | __constant_cpu_to_be32(IPS_MULTICAST_QPN) : | 378 | __constant_cpu_to_be32(IPATH_MULTICAST_QPN) : |
379 | cpu_to_be32(wr->wr.ud.remote_qpn); | 379 | cpu_to_be32(wr->wr.ud.remote_qpn); |
380 | /* XXX Could lose a PSN count but not worth locking */ | 380 | /* XXX Could lose a PSN count but not worth locking */ |
381 | ohdr->bth[2] = cpu_to_be32(qp->s_next_psn++ & IPS_PSN_MASK); | 381 | ohdr->bth[2] = cpu_to_be32(qp->s_next_psn++ & IPATH_PSN_MASK); |
382 | /* | 382 | /* |
383 | * Qkeys with the high order bit set mean use the | 383 | * Qkeys with the high order bit set mean use the |
384 | * qkey from the QP context instead of the WR (see 10.2.5). | 384 | * qkey from the QP context instead of the WR (see 10.2.5). |
@@ -469,7 +469,7 @@ void ipath_ud_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, | |||
469 | src_qp = be32_to_cpu(ohdr->u.ud.deth[1]); | 469 | src_qp = be32_to_cpu(ohdr->u.ud.deth[1]); |
470 | } | 470 | } |
471 | } | 471 | } |
472 | src_qp &= IPS_QPN_MASK; | 472 | src_qp &= IPATH_QPN_MASK; |
473 | 473 | ||
474 | /* | 474 | /* |
475 | * Check that the permissive LID is only used on QP0 | 475 | * Check that the permissive LID is only used on QP0 |
@@ -627,7 +627,7 @@ void ipath_ud_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, | |||
627 | /* | 627 | /* |
628 | * Save the LMC lower bits if the destination LID is a unicast LID. | 628 | * Save the LMC lower bits if the destination LID is a unicast LID. |
629 | */ | 629 | */ |
630 | wc.dlid_path_bits = dlid >= IPS_MULTICAST_LID_BASE ? 0 : | 630 | wc.dlid_path_bits = dlid >= IPATH_MULTICAST_LID_BASE ? 0 : |
631 | dlid & ((1 << (dev->mkeyprot_resv_lmc & 7)) - 1); | 631 | dlid & ((1 << (dev->mkeyprot_resv_lmc & 7)) - 1); |
632 | /* Signal completion event if the solicited bit is set. */ | 632 | /* Signal completion event if the solicited bit is set. */ |
633 | ipath_cq_enter(to_icq(qp->ibqp.recv_cq), &wc, | 633 | ipath_cq_enter(to_icq(qp->ibqp.recv_cq), &wc, |
diff --git a/drivers/infiniband/hw/ipath/ipath_verbs.c b/drivers/infiniband/hw/ipath/ipath_verbs.c index ab4d5331e81e..56ac336dd1ec 100644 --- a/drivers/infiniband/hw/ipath/ipath_verbs.c +++ b/drivers/infiniband/hw/ipath/ipath_verbs.c | |||
@@ -37,7 +37,7 @@ | |||
37 | 37 | ||
38 | #include "ipath_kernel.h" | 38 | #include "ipath_kernel.h" |
39 | #include "ipath_verbs.h" | 39 | #include "ipath_verbs.h" |
40 | #include "ips_common.h" | 40 | #include "ipath_common.h" |
41 | 41 | ||
42 | /* Not static, because we don't want the compiler removing it */ | 42 | /* Not static, because we don't want the compiler removing it */ |
43 | const char ipath_verbs_version[] = "ipath_verbs " IPATH_IDSTR; | 43 | const char ipath_verbs_version[] = "ipath_verbs " IPATH_IDSTR; |
@@ -429,7 +429,7 @@ static void ipath_ib_rcv(void *arg, void *rhdr, void *data, u32 tlen) | |||
429 | 429 | ||
430 | /* Check for a valid destination LID (see ch. 7.11.1). */ | 430 | /* Check for a valid destination LID (see ch. 7.11.1). */ |
431 | lid = be16_to_cpu(hdr->lrh[1]); | 431 | lid = be16_to_cpu(hdr->lrh[1]); |
432 | if (lid < IPS_MULTICAST_LID_BASE) { | 432 | if (lid < IPATH_MULTICAST_LID_BASE) { |
433 | lid &= ~((1 << (dev->mkeyprot_resv_lmc & 7)) - 1); | 433 | lid &= ~((1 << (dev->mkeyprot_resv_lmc & 7)) - 1); |
434 | if (unlikely(lid != ipath_layer_get_lid(dev->dd))) { | 434 | if (unlikely(lid != ipath_layer_get_lid(dev->dd))) { |
435 | dev->rcv_errors++; | 435 | dev->rcv_errors++; |
@@ -439,9 +439,9 @@ static void ipath_ib_rcv(void *arg, void *rhdr, void *data, u32 tlen) | |||
439 | 439 | ||
440 | /* Check for GRH */ | 440 | /* Check for GRH */ |
441 | lnh = be16_to_cpu(hdr->lrh[0]) & 3; | 441 | lnh = be16_to_cpu(hdr->lrh[0]) & 3; |
442 | if (lnh == IPS_LRH_BTH) | 442 | if (lnh == IPATH_LRH_BTH) |
443 | ohdr = &hdr->u.oth; | 443 | ohdr = &hdr->u.oth; |
444 | else if (lnh == IPS_LRH_GRH) | 444 | else if (lnh == IPATH_LRH_GRH) |
445 | ohdr = &hdr->u.l.oth; | 445 | ohdr = &hdr->u.l.oth; |
446 | else { | 446 | else { |
447 | dev->rcv_errors++; | 447 | dev->rcv_errors++; |
@@ -453,8 +453,8 @@ static void ipath_ib_rcv(void *arg, void *rhdr, void *data, u32 tlen) | |||
453 | dev->opstats[opcode].n_packets++; | 453 | dev->opstats[opcode].n_packets++; |
454 | 454 | ||
455 | /* Get the destination QP number. */ | 455 | /* Get the destination QP number. */ |
456 | qp_num = be32_to_cpu(ohdr->bth[1]) & IPS_QPN_MASK; | 456 | qp_num = be32_to_cpu(ohdr->bth[1]) & IPATH_QPN_MASK; |
457 | if (qp_num == IPS_MULTICAST_QPN) { | 457 | if (qp_num == IPATH_MULTICAST_QPN) { |
458 | struct ipath_mcast *mcast; | 458 | struct ipath_mcast *mcast; |
459 | struct ipath_mcast_qp *p; | 459 | struct ipath_mcast_qp *p; |
460 | 460 | ||
@@ -465,7 +465,7 @@ static void ipath_ib_rcv(void *arg, void *rhdr, void *data, u32 tlen) | |||
465 | } | 465 | } |
466 | dev->n_multicast_rcv++; | 466 | dev->n_multicast_rcv++; |
467 | list_for_each_entry_rcu(p, &mcast->qp_list, list) | 467 | list_for_each_entry_rcu(p, &mcast->qp_list, list) |
468 | ipath_qp_rcv(dev, hdr, lnh == IPS_LRH_GRH, data, | 468 | ipath_qp_rcv(dev, hdr, lnh == IPATH_LRH_GRH, data, |
469 | tlen, p->qp); | 469 | tlen, p->qp); |
470 | /* | 470 | /* |
471 | * Notify ipath_multicast_detach() if it is waiting for us | 471 | * Notify ipath_multicast_detach() if it is waiting for us |
@@ -477,7 +477,7 @@ static void ipath_ib_rcv(void *arg, void *rhdr, void *data, u32 tlen) | |||
477 | qp = ipath_lookup_qpn(&dev->qp_table, qp_num); | 477 | qp = ipath_lookup_qpn(&dev->qp_table, qp_num); |
478 | if (qp) { | 478 | if (qp) { |
479 | dev->n_unicast_rcv++; | 479 | dev->n_unicast_rcv++; |
480 | ipath_qp_rcv(dev, hdr, lnh == IPS_LRH_GRH, data, | 480 | ipath_qp_rcv(dev, hdr, lnh == IPATH_LRH_GRH, data, |
481 | tlen, qp); | 481 | tlen, qp); |
482 | /* | 482 | /* |
483 | * Notify ipath_destroy_qp() if it is waiting | 483 | * Notify ipath_destroy_qp() if it is waiting |
@@ -860,8 +860,8 @@ static struct ib_ah *ipath_create_ah(struct ib_pd *pd, | |||
860 | } | 860 | } |
861 | 861 | ||
862 | /* A multicast address requires a GRH (see ch. 8.4.1). */ | 862 | /* A multicast address requires a GRH (see ch. 8.4.1). */ |
863 | if (ah_attr->dlid >= IPS_MULTICAST_LID_BASE && | 863 | if (ah_attr->dlid >= IPATH_MULTICAST_LID_BASE && |
864 | ah_attr->dlid != IPS_PERMISSIVE_LID && | 864 | ah_attr->dlid != IPATH_PERMISSIVE_LID && |
865 | !(ah_attr->ah_flags & IB_AH_GRH)) { | 865 | !(ah_attr->ah_flags & IB_AH_GRH)) { |
866 | ret = ERR_PTR(-EINVAL); | 866 | ret = ERR_PTR(-EINVAL); |
867 | goto bail; | 867 | goto bail; |
diff --git a/drivers/infiniband/hw/ipath/ips_common.h b/drivers/infiniband/hw/ipath/ips_common.h deleted file mode 100644 index 1f83af958e2f..000000000000 --- a/drivers/infiniband/hw/ipath/ips_common.h +++ /dev/null | |||
@@ -1,264 +0,0 @@ | |||
1 | #ifndef IPS_COMMON_H | ||
2 | #define IPS_COMMON_H | ||
3 | /* | ||
4 | * Copyright (c) 2006 QLogic, Inc. All rights reserved. | ||
5 | * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. | ||
6 | * | ||
7 | * This software is available to you under a choice of one of two | ||
8 | * licenses. You may choose to be licensed under the terms of the GNU | ||
9 | * General Public License (GPL) Version 2, available from the file | ||
10 | * COPYING in the main directory of this source tree, or the | ||
11 | * OpenIB.org BSD license below: | ||
12 | * | ||
13 | * Redistribution and use in source and binary forms, with or | ||
14 | * without modification, are permitted provided that the following | ||
15 | * conditions are met: | ||
16 | * | ||
17 | * - Redistributions of source code must retain the above | ||
18 | * copyright notice, this list of conditions and the following | ||
19 | * disclaimer. | ||
20 | * | ||
21 | * - Redistributions in binary form must reproduce the above | ||
22 | * copyright notice, this list of conditions and the following | ||
23 | * disclaimer in the documentation and/or other materials | ||
24 | * provided with the distribution. | ||
25 | * | ||
26 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
27 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
28 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
29 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS | ||
30 | * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN | ||
31 | * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | ||
32 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
33 | * SOFTWARE. | ||
34 | */ | ||
35 | |||
36 | #include "ipath_common.h" | ||
37 | |||
38 | struct ipath_header { | ||
39 | /* | ||
40 | * Version - 4 bits, Port - 4 bits, TID - 10 bits and Offset - | ||
41 | * 14 bits before ECO change ~28 Dec 03. After that, Vers 4, | ||
42 | * Port 3, TID 11, offset 14. | ||
43 | */ | ||
44 | __le32 ver_port_tid_offset; | ||
45 | __le16 chksum; | ||
46 | __le16 pkt_flags; | ||
47 | }; | ||
48 | |||
49 | struct ips_message_header { | ||
50 | __be16 lrh[4]; | ||
51 | __be32 bth[3]; | ||
52 | /* fields below this point are in host byte order */ | ||
53 | struct ipath_header iph; | ||
54 | __u8 sub_opcode; | ||
55 | __u8 flags; | ||
56 | __u16 src_rank; | ||
57 | /* 24 bits. The upper 8 bit is available for other use */ | ||
58 | union { | ||
59 | struct { | ||
60 | unsigned ack_seq_num:24; | ||
61 | unsigned port:4; | ||
62 | unsigned unused:4; | ||
63 | }; | ||
64 | __u32 ack_seq_num_org; | ||
65 | }; | ||
66 | __u8 expected_tid_session_id; | ||
67 | __u8 tinylen; /* to aid MPI */ | ||
68 | union { | ||
69 | __u16 tag; /* to aid MPI */ | ||
70 | __u16 mqhdr; /* for PSM MQ */ | ||
71 | }; | ||
72 | union { | ||
73 | __u32 mpi[4]; /* to aid MPI */ | ||
74 | __u32 data[4]; | ||
75 | __u64 mq[2]; /* for PSM MQ */ | ||
76 | struct { | ||
77 | __u16 mtu; | ||
78 | __u8 major_ver; | ||
79 | __u8 minor_ver; | ||
80 | __u32 not_used; //free | ||
81 | __u32 run_id; | ||
82 | __u32 client_ver; | ||
83 | }; | ||
84 | }; | ||
85 | }; | ||
86 | |||
87 | struct ether_header { | ||
88 | __be16 lrh[4]; | ||
89 | __be32 bth[3]; | ||
90 | struct ipath_header iph; | ||
91 | __u8 sub_opcode; | ||
92 | __u8 cmd; | ||
93 | __be16 lid; | ||
94 | __u16 mac[3]; | ||
95 | __u8 frag_num; | ||
96 | __u8 seq_num; | ||
97 | __le32 len; | ||
98 | /* MUST be of word size due to PIO write requirements */ | ||
99 | __le32 csum; | ||
100 | __le16 csum_offset; | ||
101 | __le16 flags; | ||
102 | __u16 first_2_bytes; | ||
103 | __u8 unused[2]; /* currently unused */ | ||
104 | }; | ||
105 | |||
106 | /* | ||
107 | * The PIO buffer used for sending infinipath messages must only be written | ||
108 | * in 32-bit words, all the data must be written, and no writes can occur | ||
109 | * after the last word is written (which transfers "ownership" of the buffer | ||
110 | * to the chip and triggers the message to be sent). | ||
111 | * Since the Linux sk_buff structure can be recursive, non-aligned, and | ||
112 | * any number of bytes in each segment, we use the following structure | ||
113 | * to keep information about the overall state of the copy operation. | ||
114 | * This is used to save the information needed to store the checksum | ||
115 | * in the right place before sending the last word to the hardware and | ||
116 | * to buffer the last 0-3 bytes of non-word sized segments. | ||
117 | */ | ||
118 | struct copy_data_s { | ||
119 | struct ether_header *hdr; | ||
120 | /* addr of PIO buf to write csum to */ | ||
121 | __u32 __iomem *csum_pio; | ||
122 | __u32 __iomem *to; /* addr of PIO buf to write data to */ | ||
123 | __u32 device; /* which device to allocate PIO bufs from */ | ||
124 | __s32 error; /* set if there is an error. */ | ||
125 | __s32 extra; /* amount of data saved in u.buf below */ | ||
126 | __u32 len; /* total length to send in bytes */ | ||
127 | __u32 flen; /* frament length in words */ | ||
128 | __u32 csum; /* partial IP checksum */ | ||
129 | __u32 pos; /* position for partial checksum */ | ||
130 | __u32 offset; /* offset to where data currently starts */ | ||
131 | __s32 checksum_calc; /* set to 1 when csum has been calculated */ | ||
132 | struct sk_buff *skb; | ||
133 | union { | ||
134 | __u32 w; | ||
135 | __u8 buf[4]; | ||
136 | } u; | ||
137 | }; | ||
138 | |||
139 | /* IB - LRH header consts */ | ||
140 | #define IPS_LRH_GRH 0x0003 /* 1. word of IB LRH - next header: GRH */ | ||
141 | #define IPS_LRH_BTH 0x0002 /* 1. word of IB LRH - next header: BTH */ | ||
142 | |||
143 | #define IPS_OFFSET 0 | ||
144 | |||
145 | /* | ||
146 | * defines the cut-off point between the header queue and eager/expected | ||
147 | * TID queue | ||
148 | */ | ||
149 | #define NUM_OF_EXTRA_WORDS_IN_HEADER_QUEUE \ | ||
150 | ((sizeof(struct ips_message_header) - \ | ||
151 | offsetof(struct ips_message_header, iph)) >> 2) | ||
152 | |||
153 | /* OpCodes */ | ||
154 | #define OPCODE_IPS 0xC0 | ||
155 | #define OPCODE_ITH4X 0xC1 | ||
156 | |||
157 | /* OpCode 30 is use by stand-alone test programs */ | ||
158 | #define OPCODE_RAW_DATA 0xDE | ||
159 | /* last OpCode (31) is reserved for test */ | ||
160 | #define OPCODE_TEST 0xDF | ||
161 | |||
162 | /* sub OpCodes - ips */ | ||
163 | #define OPCODE_SEQ_DATA 0x01 | ||
164 | #define OPCODE_SEQ_CTRL 0x02 | ||
165 | |||
166 | #define OPCODE_SEQ_MQ_DATA 0x03 | ||
167 | #define OPCODE_SEQ_MQ_CTRL 0x04 | ||
168 | |||
169 | #define OPCODE_ACK 0x10 | ||
170 | #define OPCODE_NAK 0x11 | ||
171 | |||
172 | #define OPCODE_ERR_CHK 0x20 | ||
173 | #define OPCODE_ERR_CHK_PLS 0x21 | ||
174 | |||
175 | #define OPCODE_STARTUP 0x30 | ||
176 | #define OPCODE_STARTUP_ACK 0x31 | ||
177 | #define OPCODE_STARTUP_NAK 0x32 | ||
178 | |||
179 | #define OPCODE_STARTUP_EXT 0x34 | ||
180 | #define OPCODE_STARTUP_ACK_EXT 0x35 | ||
181 | #define OPCODE_STARTUP_NAK_EXT 0x36 | ||
182 | |||
183 | #define OPCODE_TIDS_RELEASE 0x40 | ||
184 | #define OPCODE_TIDS_RELEASE_CONFIRM 0x41 | ||
185 | |||
186 | #define OPCODE_CLOSE 0x50 | ||
187 | #define OPCODE_CLOSE_ACK 0x51 | ||
188 | /* | ||
189 | * like OPCODE_CLOSE, but no complaint if other side has already closed. | ||
190 | * Used when doing abort(), MPI_Abort(), etc. | ||
191 | */ | ||
192 | #define OPCODE_ABORT 0x52 | ||
193 | |||
194 | /* sub OpCodes - ith4x */ | ||
195 | #define OPCODE_ENCAP 0x81 | ||
196 | #define OPCODE_LID_ARP 0x82 | ||
197 | |||
198 | /* Receive Header Queue: receive type (from infinipath) */ | ||
199 | #define RCVHQ_RCV_TYPE_EXPECTED 0 | ||
200 | #define RCVHQ_RCV_TYPE_EAGER 1 | ||
201 | #define RCVHQ_RCV_TYPE_NON_KD 2 | ||
202 | #define RCVHQ_RCV_TYPE_ERROR 3 | ||
203 | |||
204 | /* misc. */ | ||
205 | #define SIZE_OF_CRC 1 | ||
206 | |||
207 | #define EAGER_TID_ID INFINIPATH_I_TID_MASK | ||
208 | |||
209 | #define IPS_DEFAULT_P_KEY 0xFFFF | ||
210 | |||
211 | #define IPS_PERMISSIVE_LID 0xFFFF | ||
212 | #define IPS_MULTICAST_LID_BASE 0xC000 | ||
213 | |||
214 | #define IPS_AETH_CREDIT_SHIFT 24 | ||
215 | #define IPS_AETH_CREDIT_MASK 0x1F | ||
216 | #define IPS_AETH_CREDIT_INVAL 0x1F | ||
217 | |||
218 | #define IPS_PSN_MASK 0xFFFFFF | ||
219 | #define IPS_MSN_MASK 0xFFFFFF | ||
220 | #define IPS_QPN_MASK 0xFFFFFF | ||
221 | #define IPS_MULTICAST_QPN 0xFFFFFF | ||
222 | |||
223 | /* functions for extracting fields from rcvhdrq entries */ | ||
224 | static inline __u32 ips_get_hdr_err_flags(const __le32 * rbuf) | ||
225 | { | ||
226 | return __le32_to_cpu(rbuf[1]); | ||
227 | } | ||
228 | |||
229 | static inline __u32 ips_get_index(const __le32 * rbuf) | ||
230 | { | ||
231 | return (__le32_to_cpu(rbuf[0]) >> INFINIPATH_RHF_EGRINDEX_SHIFT) | ||
232 | & INFINIPATH_RHF_EGRINDEX_MASK; | ||
233 | } | ||
234 | |||
235 | static inline __u32 ips_get_rcv_type(const __le32 * rbuf) | ||
236 | { | ||
237 | return (__le32_to_cpu(rbuf[0]) >> INFINIPATH_RHF_RCVTYPE_SHIFT) | ||
238 | & INFINIPATH_RHF_RCVTYPE_MASK; | ||
239 | } | ||
240 | |||
241 | static inline __u32 ips_get_length_in_bytes(const __le32 * rbuf) | ||
242 | { | ||
243 | return ((__le32_to_cpu(rbuf[0]) >> INFINIPATH_RHF_LENGTH_SHIFT) | ||
244 | & INFINIPATH_RHF_LENGTH_MASK) << 2; | ||
245 | } | ||
246 | |||
247 | static inline void *ips_get_first_protocol_header(const __u32 * rbuf) | ||
248 | { | ||
249 | return (void *)&rbuf[2]; | ||
250 | } | ||
251 | |||
252 | static inline struct ips_message_header *ips_get_ips_header(const __u32 * | ||
253 | rbuf) | ||
254 | { | ||
255 | return (struct ips_message_header *)&rbuf[2]; | ||
256 | } | ||
257 | |||
258 | static inline __u32 ips_get_ipath_ver(__le32 hdrword) | ||
259 | { | ||
260 | return (__le32_to_cpu(hdrword) >> INFINIPATH_I_VERS_SHIFT) | ||
261 | & INFINIPATH_I_VERS_MASK; | ||
262 | } | ||
263 | |||
264 | #endif /* IPS_COMMON_H */ | ||