]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/infiniband/hw/nes/nes_cm.h
Merge commit 'gcl/gcl-next'
[linux-2.6-omap-h63xx.git] / drivers / infiniband / hw / nes / nes_cm.h
index a59f0a7fb278e5aef03f1823ed4c9713912d68a5..367b3d29014074252424c798f110821b5ce0c7c4 100644 (file)
@@ -83,6 +83,8 @@ enum nes_timer_type {
 #define SET_FIN 4
 #define SET_RST 8
 
+#define TCP_OPTIONS_PADDING    3
+
 struct option_base {
        u8 optionnum;
        u8 length;
@@ -177,6 +179,7 @@ enum nes_cm_node_state {
        NES_CM_STATE_ESTABLISHED,
        NES_CM_STATE_ACCEPTING,
        NES_CM_STATE_MPAREQ_SENT,
+       NES_CM_STATE_MPAREQ_RCVD,
        NES_CM_STATE_TSA,
        NES_CM_STATE_FIN_WAIT1,
        NES_CM_STATE_FIN_WAIT2,
@@ -187,6 +190,16 @@ enum nes_cm_node_state {
        NES_CM_STATE_CLOSED
 };
 
+enum nes_tcpip_pkt_type {
+       NES_PKT_TYPE_UNKNOWN,
+       NES_PKT_TYPE_SYN,
+       NES_PKT_TYPE_SYNACK,
+       NES_PKT_TYPE_ACK,
+       NES_PKT_TYPE_FIN,
+       NES_PKT_TYPE_RST
+};
+
+
 /* type of nes connection */
 enum nes_cm_conn_type {
        NES_CM_IWARP_CONN_TYPE,
@@ -225,7 +238,6 @@ enum nes_cm_listener_state {
 
 struct nes_cm_listener {
        struct list_head           list;
-       u64                        session_id;
        struct nes_cm_core         *cm_core;
        u8                         loc_mac[ETH_ALEN];
        nes_addr_t                 loc_addr;
@@ -242,7 +254,6 @@ struct nes_cm_listener {
 
 /* per connection node and node state information */
 struct nes_cm_node {
-       u64                       session_id;
        u32                       hashkey;
 
        nes_addr_t                loc_addr, rem_addr;
@@ -259,7 +270,9 @@ struct nes_cm_node {
        struct net_device         *netdev;
 
        struct nes_cm_node        *loopbackpartner;
-       struct list_head          retrans_list;
+
+       struct nes_timer_entry  *send_entry;
+
        spinlock_t                retrans_list_lock;
        struct list_head          recv_list;
        spinlock_t                recv_list_lock;
@@ -278,6 +291,8 @@ struct nes_cm_node {
        struct nes_vnic           *nesvnic;
        int                       apbvt_set;
        int                       accept_pend;
+       int                     freed;
+       struct nes_qp           *nesqp;
 };
 
 /* structure for client or CM to fill when making CM api calls. */
@@ -327,7 +342,6 @@ struct nes_cm_event {
 
 struct nes_cm_core {
        enum nes_cm_node_state  state;
-       atomic_t                session_id;
 
        atomic_t                listen_node_cnt;
        struct nes_cm_node      listen_list;
@@ -369,49 +383,24 @@ struct nes_cm_ops {
                        struct nes_cm_info *);
        int (*stop_listener)(struct nes_cm_core *, struct nes_cm_listener *);
        struct nes_cm_node * (*connect)(struct nes_cm_core *,
-                       struct nes_vnic *, struct ietf_mpa_frame *,
+                       struct nes_vnic *, u16, void *,
                        struct nes_cm_info *);
        int (*close)(struct nes_cm_core *, struct nes_cm_node *);
        int (*accept)(struct nes_cm_core *, struct ietf_mpa_frame *,
                        struct nes_cm_node *);
        int (*reject)(struct nes_cm_core *, struct ietf_mpa_frame *,
                        struct nes_cm_node *);
-       int (*recv_pkt)(struct nes_cm_core *, struct nes_vnic *,
+       void (*recv_pkt)(struct nes_cm_core *, struct nes_vnic *,
                        struct sk_buff *);
        int (*destroy_cm_core)(struct nes_cm_core *);
        int (*get)(struct nes_cm_core *);
        int (*set)(struct nes_cm_core *, u32, u32);
 };
 
-
-int send_mpa_request(struct nes_cm_node *);
-struct sk_buff *form_cm_frame(struct sk_buff *, struct nes_cm_node *,
-               void *, u32, void *, u32, u8);
 int schedule_nes_timer(struct nes_cm_node *, struct sk_buff *,
                enum nes_timer_type, int, int);
-void nes_cm_timer_tick(unsigned long);
-int send_syn(struct nes_cm_node *, u32);
-int send_reset(struct nes_cm_node *);
-int send_ack(struct nes_cm_node *);
-int send_fin(struct nes_cm_node *, struct sk_buff *);
-struct sk_buff *get_free_pkt(struct nes_cm_node *);
-int process_packet(struct nes_cm_node *, struct sk_buff *, struct nes_cm_core *);
-
-struct nes_cm_node * mini_cm_connect(struct nes_cm_core *,
-               struct nes_vnic *, struct ietf_mpa_frame *, struct nes_cm_info *);
-int mini_cm_accept(struct nes_cm_core *, struct ietf_mpa_frame *, struct nes_cm_node *);
-int mini_cm_reject(struct nes_cm_core *, struct ietf_mpa_frame *, struct nes_cm_node *);
-int mini_cm_close(struct nes_cm_core *, struct nes_cm_node *);
-int mini_cm_recv_pkt(struct nes_cm_core *, struct nes_vnic *, struct sk_buff *);
-struct nes_cm_core *mini_cm_alloc_core(struct nes_cm_info *);
-int mini_cm_dealloc_core(struct nes_cm_core *);
-int mini_cm_get(struct nes_cm_core *);
-int mini_cm_set(struct nes_cm_core *, u32, u32);
 
 int nes_cm_disconn(struct nes_qp *);
-void nes_disconnect_worker(struct work_struct *);
-int nes_cm_disconn_true(struct nes_qp *);
-int nes_disconnect(struct nes_qp *, int);
 
 int nes_accept(struct iw_cm_id *, struct iw_cm_conn_param *);
 int nes_reject(struct iw_cm_id *, const void *, u8);
@@ -423,11 +412,4 @@ int nes_cm_recv(struct sk_buff *, struct net_device *);
 int nes_cm_start(void);
 int nes_cm_stop(void);
 
-/* CM event handler functions */
-void cm_event_connected(struct nes_cm_event *);
-void cm_event_connect_error(struct nes_cm_event *);
-void cm_event_reset(struct nes_cm_event *);
-void cm_event_mpa_req(struct nes_cm_event *);
-int nes_cm_post_event(struct nes_cm_event *);
-
 #endif                 /* NES_CM_H */