~ubuntu-branches/ubuntu/trusty/linux-armadaxp/trusty

« back to all changes in this revision

Viewing changes to drivers/infiniband/hw/nes/nes_cm.h

  • Committer: Package Import Robot
  • Author(s): Michael Casadevall, Bryan Wu, Dann Frazier, Michael Casadeall
  • Date: 2012-03-10 15:00:54 UTC
  • mfrom: (1.1.1)
  • Revision ID: package-import@ubuntu.com-20120310150054-flugb39zon8vvgwe
Tags: 3.2.0-1600.1
[ Bryan Wu ]
* UBUNTU: import debian/debian.env and debian.armadaxp

[ Dann Frazier ]
* ARM: Armada XP: remove trailing '/' in dirnames in mvRules.mk

[ Michael Casadeall ]
* tools: add some tools for Marvell Armada XP processor
* kernel: timer tick hacking from Marvell
* kernel: Sheeva Errata: add delay on Sheeva when powering down
* net: add Marvell NFP netfilter
* net: socket and skb modifications made by Marvell
* miscdevice: add minor IDs for some Marvell Armada drivers
* fs: introduce memory pool for splice()
* video: EDID detection updates from Marvell Armada XP patchset
* video: backlight: add Marvell Dove LCD backlight driver
* video: display: add THS8200 display driver
* video: framebuffer: add Marvell Dove and Armada XP processor onchip LCD controller driver
* usbtest: add Interrupt transfer testing by Marvell Armada XP code
* usb: ehci: add support for Marvell EHCI controler
* tty/serial: 8250: add support for Marvell Armada XP processor and DeviceTree work
* rtc: add support for Marvell Armada XP onchip RTC controller
* net: pppoe: add Marvell ethernet NFP hook in PPPoE networking driver
* mtd: nand: add support for Marvell Armada XP Nand Flash Controller
* mtd: maps: add Marvell Armada XP specific map driver
* mmc: add support for Marvell Armada XP MMC/SD host controller
* i2c: add support for Marvell Armada XP onchip i2c bus controller
* hwmon: add Kconfig option for Armada XP onchip thermal sensor driver
* dmaengine: add Net DMA support for splice and update Marvell XOR DMA engine driver
* ata: add support for Marvell Armada XP SATA controller and update some quirks
* ARM: add Marvell Armada XP machine to mach-types
* ARM: oprofile: add support for Marvell PJ4B core
* ARM: mm: more ARMv6 switches for Marvell Armada XP
* ARM: remove static declaration to allow compilation
* ARM: alignment access fault trick
* ARM: mm: skip some fault fixing when run on NONE SMP ARMv6 mode during early abort event
* ARM: mm: add Marvell Sheeva CPU Architecture for PJ4B
* ARM: introduce optimized copy operation for Marvell Armada XP
* ARM: SAUCE: hardware breakpoint trick for Marvell Armada XP
* ARM: big endian and little endian tricks for Marvell Armada XP
* ARM: SAUCE: Add Marvell Armada XP build rules to arch/arm/kernel/Makefile
* ARM: vfp: add special handling for Marvell Armada XP
* ARM: add support for Marvell U-Boot
* ARM: add mv_controller_num for ARM PCI drivers
* ARM: add support for local PMUs, general SMP tweaks and cache flushing
* ARM: add Marvell device identifies in glue-proc.h
* ARM: add IPC driver support for Marvell platforms
* ARM: add DMA mapping for Marvell platforms
* ARM: add Sheeva errata and PJ4B code for booting
* ARM: update Kconfig and Makefile to include Marvell Armada XP platforms
* ARM: Armada XP: import LSP from Marvell for Armada XP 3.2 kernel enablement

Show diffs side-by-side

added added

removed removed

Lines of Context:
48
48
#define IETF_MPA_KEY_SIZE 16
49
49
#define IETF_MPA_VERSION  1
50
50
#define IETF_MAX_PRIV_DATA_LEN 512
51
 
#define IETF_MPA_FRAME_SIZE     20
 
51
#define IETF_MPA_FRAME_SIZE    20
 
52
#define IETF_RTR_MSG_SIZE      4
 
53
#define IETF_MPA_V2_FLAG       0x10
 
54
 
 
55
/* IETF RTR MSG Fields               */
 
56
#define IETF_PEER_TO_PEER       0x8000
 
57
#define IETF_FLPDU_ZERO_LEN     0x4000
 
58
#define IETF_RDMA0_WRITE        0x8000
 
59
#define IETF_RDMA0_READ         0x4000
 
60
#define IETF_NO_IRD_ORD         0x3FFF
52
61
 
53
62
enum ietf_mpa_flags {
54
63
        IETF_MPA_FLAGS_MARKERS = 0x80,  /* receive Markers */
56
65
        IETF_MPA_FLAGS_REJECT  = 0x20,  /* Reject */
57
66
};
58
67
 
59
 
struct ietf_mpa_frame {
 
68
struct ietf_mpa_v1 {
60
69
        u8 key[IETF_MPA_KEY_SIZE];
61
70
        u8 flags;
62
71
        u8 rev;
66
75
 
67
76
#define ietf_mpa_req_resp_frame ietf_mpa_frame
68
77
 
 
78
struct ietf_rtr_msg {
 
79
        __be16 ctrl_ird;
 
80
        __be16 ctrl_ord;
 
81
};
 
82
 
 
83
struct ietf_mpa_v2 {
 
84
        u8 key[IETF_MPA_KEY_SIZE];
 
85
        u8 flags;
 
86
        u8 rev;
 
87
         __be16 priv_data_len;
 
88
        struct ietf_rtr_msg rtr_msg;
 
89
        u8 priv_data[0];
 
90
};
 
91
 
69
92
struct nes_v4_quad {
70
93
        u32 rsvd0;
71
94
        __le32 DstIpAdrIndex;   /* Only most significant 5 bits are valid */
171
194
 
172
195
#define NES_CM_DEF_SEQ2      0x18ed5740
173
196
#define NES_CM_DEF_LOCAL_ID2 0xb807
174
 
#define MAX_CM_BUFFER   (IETF_MPA_FRAME_SIZE + IETF_MAX_PRIV_DATA_LEN)
175
 
 
 
197
#define MAX_CM_BUFFER   (IETF_MPA_FRAME_SIZE + IETF_RTR_MSG_SIZE + IETF_MAX_PRIV_DATA_LEN)
176
198
 
177
199
typedef u32 nes_addr_t;
178
200
 
204
226
        NES_CM_STATE_CLOSED
205
227
};
206
228
 
 
229
enum mpa_frame_version {
 
230
        IETF_MPA_V1 = 1,
 
231
        IETF_MPA_V2 = 2
 
232
};
 
233
 
 
234
enum mpa_frame_key {
 
235
        MPA_KEY_REQUEST,
 
236
        MPA_KEY_REPLY
 
237
};
 
238
 
 
239
enum send_rdma0 {
 
240
        SEND_RDMA_READ_ZERO = 1,
 
241
        SEND_RDMA_WRITE_ZERO = 2
 
242
};
 
243
 
207
244
enum nes_tcpip_pkt_type {
208
245
        NES_PKT_TYPE_UNKNOWN,
209
246
        NES_PKT_TYPE_SYN,
245
282
 
246
283
 
247
284
enum nes_cm_listener_state {
248
 
        NES_CM_LISTENER_PASSIVE_STATE=1,
249
 
        NES_CM_LISTENER_ACTIVE_STATE=2,
250
 
        NES_CM_LISTENER_EITHER_STATE=3
 
285
        NES_CM_LISTENER_PASSIVE_STATE = 1,
 
286
        NES_CM_LISTENER_ACTIVE_STATE = 2,
 
287
        NES_CM_LISTENER_EITHER_STATE = 3
251
288
};
252
289
 
253
290
struct nes_cm_listener {
283
320
 
284
321
        struct nes_cm_node        *loopbackpartner;
285
322
 
286
 
        struct nes_timer_entry  *send_entry;
287
 
 
 
323
        struct nes_timer_entry    *send_entry;
 
324
        struct nes_timer_entry    *recv_entry;
288
325
        spinlock_t                retrans_list_lock;
289
 
        struct nes_timer_entry  *recv_entry;
 
326
        enum send_rdma0           send_rdma0_op;
290
327
 
291
 
        int                       send_write0;
292
328
        union {
293
 
                struct ietf_mpa_frame mpa_frame;
294
 
                u8                    mpa_frame_buf[MAX_CM_BUFFER];
 
329
                struct ietf_mpa_v1 mpa_frame;
 
330
                struct ietf_mpa_v2 mpa_v2_frame;
 
331
                u8                 mpa_frame_buf[MAX_CM_BUFFER];
295
332
        };
 
333
        enum mpa_frame_version    mpa_frame_rev;
 
334
        u16                       ird_size;
 
335
        u16                       ord_size;
 
336
 
296
337
        u16                       mpa_frame_size;
297
338
        struct iw_cm_id           *cm_id;
298
339
        struct list_head          list;
399
440
                        struct nes_vnic *, u16, void *,
400
441
                        struct nes_cm_info *);
401
442
        int (*close)(struct nes_cm_core *, struct nes_cm_node *);
402
 
        int (*accept)(struct nes_cm_core *, struct ietf_mpa_frame *,
403
 
                        struct nes_cm_node *);
404
 
        int (*reject)(struct nes_cm_core *, struct ietf_mpa_frame *,
405
 
                        struct nes_cm_node *);
 
443
        int (*accept)(struct nes_cm_core *, struct nes_cm_node *);
 
444
        int (*reject)(struct nes_cm_core *, struct nes_cm_node *);
406
445
        int (*recv_pkt)(struct nes_cm_core *, struct nes_vnic *,
407
446
                        struct sk_buff *);
408
447
        int (*destroy_cm_core)(struct nes_cm_core *);
422
461
int nes_cm_recv(struct sk_buff *, struct net_device *);
423
462
int nes_cm_start(void);
424
463
int nes_cm_stop(void);
 
464
int nes_add_ref_cm_node(struct nes_cm_node *cm_node);
 
465
int nes_rem_ref_cm_node(struct nes_cm_node *cm_node);
425
466
 
426
467
#endif                  /* NES_CM_H */