[ewg] [PATCH 2/6] nes: Cosmetic changes; support virtual WQs and PPC

Glenn Grundstrom NetEffect glenn at lists.openfabrics.org
Wed Nov 14 14:21:35 PST 2007


Updated code for the NetEffect NE020 adapter.

Updates include:
- Support for userspace/virtual WQs.
- PowerPC
- Support for multiple debugging levels
- Many, many cosmetic changes inline with kernel.org standards

Diffs for nes_cm.c and nes_cm.h

Signed-off-by: Glenn Grundstrom <ggrundstrom at neteffect.com>

---
diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c
index 561dcf3..4023a2c 100644
--- a/drivers/infiniband/hw/nes/nes_cm.c
+++ b/drivers/infiniband/hw/nes/nes_cm.c
@@ -120,7 +120,7 @@ static struct nes_cm_event *create_event(struct nes_cm_node *cm_node,
 		return NULL;
 
 	/* allocate an empty event */
-	event = (struct nes_cm_event *)kzalloc(sizeof(*event), GFP_ATOMIC);
+	event = kzalloc(sizeof(*event), GFP_ATOMIC);
 
 	if (!event)
 		return NULL;
@@ -211,11 +211,7 @@ static int parse_mpa(struct nes_cm_node *cm_node, u8 *buffer, u32 len)
 static int handle_exception_pkt(struct nes_cm_node *cm_node, struct sk_buff *skb)
 {
 	int ret = 0;
-#ifdef OFED_1_2
-	struct tcphdr *tcph = skb->h.th;
-#else
 	struct tcphdr *tcph = tcp_hdr(skb);
-#endif
 
 	/* first check to see if this a FIN pkt */
 	if (tcph->fin) {
@@ -265,19 +261,12 @@ struct sk_buff *form_cm_frame(struct sk_buff *skb, struct nes_cm_node *cm_node,
 	ethh = (struct ethhdr *) buf;
 	buf += ETH_HLEN;
 
-#ifdef OFED_1_2
-	iph = skb->nh.iph = (struct iphdr *)buf;
-	buf += sizeof(*iph);
-	tcph  = skb->h.th = (struct tcphdr *)buf;
-	skb->mac.raw = skb->data;
-#else
 	iph = (struct iphdr *)buf;
 	buf += sizeof(*iph);
 	tcph = (struct tcphdr *)buf;
 	skb_reset_mac_header(skb);
 	skb_set_network_header(skb, ETH_HLEN);
 	skb_set_transport_header(skb, ETH_HLEN+sizeof(*iph));
-#endif
 	buf += sizeof(*tcph);
 
 	skb->ip_summed = CHECKSUM_PARTIAL;
@@ -404,11 +393,7 @@ int schedule_nes_timer(struct nes_cm_node *cm_node, struct sk_buff *skb,
 	}
 
 	if (type == NES_TIMER_TYPE_SEND) {
-#ifdef OFED_1_2
-		new_send->seq_num = htonl(skb->h.th->seq);
-#else
 		new_send->seq_num = htonl(tcp_hdr(skb)->seq);
-#endif
 		atomic_inc(&new_send->skb->users);
 
 		ret = nes_nic_cm_xmit(new_send->skb, cm_node->netdev);
@@ -433,11 +418,7 @@ int schedule_nes_timer(struct nes_cm_node *cm_node, struct sk_buff *skb,
 		spin_unlock_irqrestore(&cm_node->retrans_list_lock, flags);
 	}
 	if (type == NES_TIMER_TYPE_RECV) {
-#ifdef OFED_1_2
-		new_send->seq_num = htonl(skb->h.th->seq);
-#else
 		new_send->seq_num = htonl(tcp_hdr(skb)->seq);
-#endif
 		new_send->timetosend = jiffies;
 		spin_lock_irqsave(&cm_node->recv_list_lock, flags);
 		list_add_tail(&new_send->list, &cm_node->recv_list);
@@ -687,7 +668,7 @@ int send_syn(struct nes_cm_node *cm_node, u32 sendack)
 	options = (union all_known_options *)&optionsbuffer[optionssize];
 	options->as_windowscale.optionnum = OPTION_NUMBER_WINDOW_SCALE;
 	options->as_windowscale.length = sizeof(struct option_windowscale);
-	options->as_windowscale.shiftcount = NES_CM_DEFAULT_RCV_WND_SCALE;
+	options->as_windowscale.shiftcount = cm_node->tcp_cntxt.snd_wscale;
 	optionssize += sizeof(struct option_windowscale);
 
 	if (sendack && !(NES_DRV_OPT_SUPRESS_OPTION_BC & nes_drv_opt)
@@ -1054,11 +1035,10 @@ static struct nes_cm_node *make_cm_node(struct nes_cm_core *cm_core,
 	struct nes_adapter *nesadapter;
 
 	/* create an hte and cm_node for this instance */
-	cm_node = (struct nes_cm_node *)kzalloc(sizeof(*cm_node), GFP_ATOMIC);
+	cm_node = kzalloc(sizeof(*cm_node), GFP_ATOMIC);
 	if (!cm_node)
 		return NULL;
 
-	memset(cm_node, 0, sizeof(struct nes_cm_node));
 	/* set our node specific transport info */
 	cm_node->loc_addr = cm_info->loc_addr;
 	cm_node->rem_addr = cm_info->rem_addr;
@@ -1072,6 +1052,9 @@ static struct nes_cm_node *make_cm_node(struct nes_cm_core *cm_core,
 	cm_node->cm_id = cm_info->cm_id;
 	memcpy(cm_node->loc_mac, nesvnic->netdev->dev_addr, ETH_ALEN);
 
+	nes_debug(NES_DBG_CM, "listener=%p, cm_id=%p\n",
+			cm_node->listener, cm_node->cm_id);
+
 	INIT_LIST_HEAD(&cm_node->retrans_list);
 	spin_lock_init(&cm_node->retrans_list_lock);
 	INIT_LIST_HEAD(&cm_node->recv_list);
@@ -1281,14 +1264,10 @@ int process_packet(struct nes_cm_node *cm_node, struct sk_buff *skb,
 	int optionsize;
 	int datasize;
 	int ret = 0;
-#ifdef OFED_1_2
-	struct tcphdr *tcph = skb->h.th;
-#else
 	struct tcphdr *tcph = tcp_hdr(skb);
-#endif
 	u32 inc_sequence;
 
-	if ((!tcph) || (NES_CM_STATE_TSA == cm_node->state)) {
+	if ((!tcph) || (cm_node->state == NES_CM_STATE_TSA)) {
 		BUG_ON(!tcph);
 		atomic_inc(&cm_accel_dropped_pkts);
 		return -1;
@@ -1301,6 +1280,7 @@ int process_packet(struct nes_cm_node *cm_node, struct sk_buff *skb,
 		switch (cm_node->state) {
 			case NES_CM_STATE_LISTENING:
 				rem_ref_cm_node(cm_core, cm_node);
+				break;
 			case NES_CM_STATE_TSA:
 			case NES_CM_STATE_CLOSED:
 				break;
@@ -1333,11 +1313,7 @@ int process_packet(struct nes_cm_node *cm_node, struct sk_buff *skb,
 
 	optionsize = (tcph->doff << 2) - sizeof(struct tcphdr);
 
-#ifdef OFED_1_2
-	skb_pull(skb, skb->nh.iph->ihl << 2);
-#else
 	skb_pull(skb, ip_hdr(skb)->ihl << 2);
-#endif
 	skb_pull(skb, tcph->doff << 2);
 
 	datasize = skb->len;
@@ -1361,6 +1337,12 @@ int process_packet(struct nes_cm_node *cm_node, struct sk_buff *skb,
 
 		cm_node->tcp_cntxt.rcv_nxt = inc_sequence + datasize;
 
+
+	if (optionsize) {
+		u8 *optionsloc = (u8 *)&tcph[1];
+		process_options(cm_node, optionsloc, optionsize);
+	}
+
 	cm_node->tcp_cntxt.snd_wnd = htons(tcph->window) <<
 			cm_node->tcp_cntxt.snd_wscale;
 
@@ -1368,11 +1350,6 @@ int process_packet(struct nes_cm_node *cm_node, struct sk_buff *skb,
 		cm_node->tcp_cntxt.max_snd_wnd = cm_node->tcp_cntxt.snd_wnd;
 	}
 
-	if (optionsize) {
-		u8 *optionsloc = (u8 *)&tcph[1];
-		process_options(cm_node, optionsloc, optionsize);
-	}
-
 	if (tcph->ack) {
 		cm_node->tcp_cntxt.rem_ack_num = ntohl(tcph->ack_seq);
 		switch (cm_node->state) {
@@ -1566,8 +1543,11 @@ static struct nes_cm_listener *mini_cm_listen(struct nes_cm_core *cm_core,
 	struct nes_cm_listener *listener;
 	unsigned long flags;
 
+	nes_debug(NES_DBG_CM, "Search for 0x%08x : 0x%04x\n",
+			htonl(cm_info->loc_addr), htons(cm_info->loc_port));
+
 	/* cannot have multiple matching listeners */
-	listener = find_listener( cm_core, htonl(cm_info->loc_addr),
+	listener = find_listener(cm_core, htonl(cm_info->loc_addr),
 			htons(cm_info->loc_port), NES_CM_LISTENER_EITHER_STATE);
 	if (listener && listener->listener_state == NES_CM_LISTENER_ACTIVE_STATE) {
 		/* find automatically incs ref count ??? */
@@ -1578,7 +1558,7 @@ static struct nes_cm_listener *mini_cm_listen(struct nes_cm_core *cm_core,
 
 	if (!listener) {
 		/* create a CM listen node (1/2 node to compare incoming traffic to) */
-		listener = (struct nes_cm_listener *)kzalloc(sizeof(*listener), GFP_ATOMIC);
+		listener = kzalloc(sizeof(*listener), GFP_ATOMIC);
 		if (!listener) {
 			nes_debug(NES_DBG_CM, "Not creating listener memory allocation failed\n");
 			return NULL;
@@ -1656,7 +1636,7 @@ struct nes_cm_node * mini_cm_connect(struct nes_cm_core *cm_core,
 	if (cm_info->loc_addr == cm_info->rem_addr) {
 		loopbackremotelistener = find_listener(cm_core, cm_node->rem_addr,
 				cm_node->rem_port, NES_CM_LISTENER_ACTIVE_STATE);
-		if (NULL == loopbackremotelistener) {
+		if (loopbackremotelistener == NULL) {
 			create_event(cm_node, NES_CM_EVENT_ABORTED);
 		} else {
 			u16 temp;
@@ -1672,9 +1652,10 @@ struct nes_cm_node * mini_cm_connect(struct nes_cm_core *cm_core,
 			loopbackremotenode->mpa_frame_size = mpa_frame_size -
 					sizeof(struct ietf_mpa_frame);
 
-			create_event(loopbackremotenode, NES_CM_EVENT_MPA_REQ);
 			// we are done handling this state, set node to a TSA state
 			cm_node->state = NES_CM_STATE_TSA;
+
+			create_event(loopbackremotenode, NES_CM_EVENT_MPA_REQ);
 		}
 		return cm_node;
 	}
@@ -1684,6 +1665,7 @@ struct nes_cm_node * mini_cm_connect(struct nes_cm_core *cm_core,
 	/* init our MPA frame ptr */
 	memcpy(&cm_node->mpa_frame, mpa_frame, mpa_frame_size);
 	cm_node->mpa_frame_size = mpa_frame_size;
+	cm_node->tcp_cntxt.snd_wscale = NES_CM_DEFAULT_RCV_WND_SCALE;
 
 	/* send a syn and goto syn sent state */
 	cm_node->state = NES_CM_STATE_SYN_SENT;
@@ -1809,13 +1791,8 @@ int mini_cm_recv_pkt(struct nes_cm_core *cm_core, struct nes_vnic *nesvnic,
 
 	iph = (struct iphdr *)skb->data;
 	tcph = (struct tcphdr *)(skb->data + sizeof(struct iphdr));
-#ifdef OFED_1_2
-	skb->nh.iph = iph;
-	skb->h.th = tcph;
-#else
 	skb_reset_network_header(skb);
 	skb_set_transport_header(skb, sizeof(*tcph));
-#endif
 	skb->len = htons(iph->tot_len);
 
 	nfo.loc_addr = ntohl(iph->daddr);
@@ -1823,6 +1800,9 @@ int mini_cm_recv_pkt(struct nes_cm_core *cm_core, struct nes_vnic *nesvnic,
 	nfo.rem_addr = ntohl(iph->saddr);
 	nfo.rem_port = ntohs(tcph->source);
 
+	nes_debug(NES_DBG_CM, "Received packet: dest=0x%08X:0x%04X src=0x%08X:0x%04X\n",
+			iph->daddr, tcph->dest, iph->saddr, tcph->source);
+
 	/* note: this call is going to increment cm_node ref count */
 	cm_node = find_node(cm_core,
 			nfo.rem_port, nfo.rem_addr,
@@ -2071,12 +2051,11 @@ int nes_cm_disconn(struct nes_qp *nesqp)
 	unsigned long flags;
 
 	spin_lock_irqsave(&nesqp->lock, flags);
-	if (0==nesqp->disconn_pending) {
+	if (nesqp->disconn_pending == 0) {
 		nesqp->disconn_pending++;
 		spin_unlock_irqrestore(&nesqp->lock, flags);
 		/* nes_add_ref(&nesqp->ibqp); */
 		/* init our disconnect work element, to */
-		/* NES_INIT_WORK(&nesqp->disconn_work, nes_disconnect_worker, (void *)nesqp); */
 		INIT_WORK(&nesqp->disconn_work, nes_disconnect_worker);
 
 		queue_work(g_cm_core->disconn_wq, &nesqp->disconn_work);
@@ -2092,9 +2071,8 @@ int nes_cm_disconn(struct nes_qp *nesqp)
 /**
  * nes_disconnect_worker
  */
-void nes_disconnect_worker(void *parm)
+void nes_disconnect_worker(struct work_struct *work)
 {
-	struct work_struct *work = parm;
 	struct nes_qp *nesqp = container_of(work, struct nes_qp, disconn_work);
 
 	nes_debug(NES_DBG_CM, "processing AEQE id 0x%04X for QP%u.\n",
@@ -2113,6 +2091,7 @@ int nes_cm_disconn_true(struct nes_qp *nesqp)
 	struct iw_cm_id *cm_id;
 	struct iw_cm_event cm_event;
 	struct nes_vnic *nesvnic;
+	struct nes_cm_node *cm_node = NULL;
 	u16 last_ae;
 	u8 original_hw_tcp_state;
 	u8 original_ibqp_state;
@@ -2184,7 +2163,7 @@ int nes_cm_disconn_true(struct nes_qp *nesqp)
 		original_ibqp_state   = nesqp->ibqp_state;
 		last_ae = nesqp->last_aeq;
 
-		if ((0 == issued_disconnect_reset) && (nesqp->cm_id) &&
+		if ((issued_disconnect_reset == 0) && (nesqp->cm_id) &&
 				((original_hw_tcp_state == NES_AEQE_TCP_STATE_CLOSED) ||
 				 (original_hw_tcp_state == NES_AEQE_TCP_STATE_TIME_WAIT) ||
 				 (last_ae == NES_AEQE_AEID_RDMAP_ROE_BAD_LLP_CLOSE) ||
@@ -2213,7 +2192,7 @@ int nes_cm_disconn_true(struct nes_qp *nesqp)
 			cm_id->rem_ref(cm_id);
 
 			spin_lock_irqsave(&nesqp->lock, flags);
-			if (0 == nesqp->flush_issued) {
+			if (nesqp->flush_issued == 0) {
 				nesqp->flush_issued = 1;
 				spin_unlock_irqrestore(&nesqp->lock, flags);
 				flush_wqes(nesvnic->nesdev, nesqp, NES_CQP_FLUSH_RQ, 1);
@@ -2305,6 +2284,7 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
 	struct iw_cm_event cm_event;
 	struct nes_hw_qp_wqe *wqe;
 	struct nes_v4_quad nes_quad;
+	struct iw_cm_id *lb_cm_id;
 	int ret;
 
 	ibqp = nes_get_qp(cm_id->device, conn_param->qpn);
@@ -2317,6 +2297,9 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
 	nesdev = nesvnic->nesdev;
 	adapter = nesdev->nesadapter;
 
+	nes_debug(NES_DBG_CM, "nesvnic=%p, netdev=%p, %s\n",
+			nesvnic, nesvnic->netdev, nesvnic->netdev->name);
+
 	/* since this is from a listen, we were able to put node handle into cm_id */
 	cm_node = (struct nes_cm_node *)cm_id->provider_data;
 
@@ -2407,17 +2390,14 @@ int nes_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
 	nesqp->nesqp_context->ird_ord_sizes |= cpu_to_le32((u32)conn_param->ord);
 
 	memset(&nes_quad, 0, sizeof(nes_quad));
-
-	nes_quad.DstIpAdrIndex = (u32)PCI_FUNC(nesdev->pcidev->devfn) << 27;
+	nes_quad.DstIpAdrIndex = cpu_to_le32((u32)PCI_FUNC(nesdev->pcidev->devfn) << 24);
 	nes_quad.SrcIpadr      = cm_id->remote_addr.sin_addr.s_addr;
 	nes_quad.TcpPorts[0]   = cm_id->remote_addr.sin_port;
 	nes_quad.TcpPorts[1]   = cm_id->local_addr.sin_port;
 
 	/* Produce hash key */
-	nesqp->hte_index = nes_crc32(1, NES_HASH_CRC_INITAL_VALUE,
-			NES_HASH_CRC_FINAL_XOR, sizeof(nes_quad),
-			(u8 *)&nes_quad, ORDER, REFIN, REFOUT);
-
+	nesqp->hte_index = cpu_to_be32(
+			crc32c(~0, (void *)&nes_quad, sizeof(nes_quad)) ^ 0xffffffff);
 	nes_debug(NES_DBG_CM, "HTE Index = 0x%08X, CRC = 0x%08X\n",
 			nesqp->hte_index, nesqp->hte_index & adapter->hte_index_mask);
 
@@ -2602,9 +2582,14 @@ int nes_create_listen(struct iw_cm_id *cm_id, int backlog)
 	if (!nesvnic)
 		return -EINVAL;
 	adapter = nesvnic->nesdev->nesadapter;
+	nes_debug(NES_DBG_CM, "nesvnic=%p, netdev=%p, %s\n",
+			nesvnic, nesvnic->netdev, nesvnic->netdev->name);
+
+	nes_debug(NES_DBG_CM, "nesvnic->local_ipaddr=0x%08x, sin_addr.s_addr=0x%08x\n",
+			nesvnic->local_ipaddr, cm_id->local_addr.sin_addr.s_addr);
 
 	/* setup listen params in our api call struct */
-	cm_info.loc_addr = cm_id->local_addr.sin_addr.s_addr;
+	cm_info.loc_addr = nesvnic->local_ipaddr;
 	cm_info.loc_port = cm_id->local_addr.sin_port;
 	cm_info.backlog = backlog;
 	cm_info.cm_id = cm_id;
@@ -2789,18 +2774,16 @@ void cm_event_connected(struct nes_cm_event *event)
 
 	memset(&nes_quad, 0, sizeof(nes_quad));
 
-	nes_quad.DstIpAdrIndex = (u32)PCI_FUNC(nesdev->pcidev->devfn) << 27;
+	nes_quad.DstIpAdrIndex = cpu_to_le32((u32)PCI_FUNC(nesdev->pcidev->devfn) << 24);
 	nes_quad.SrcIpadr = cm_id->remote_addr.sin_addr.s_addr;
 	nes_quad.TcpPorts[0] = cm_id->remote_addr.sin_port;
 	nes_quad.TcpPorts[1] = cm_id->local_addr.sin_port;
 
-	nesqp->hte_index = nes_crc32( 1, NES_HASH_CRC_INITAL_VALUE,
-			NES_HASH_CRC_FINAL_XOR, sizeof(nes_quad), (u8 *)&nes_quad,
-			ORDER, REFIN, REFOUT);
-
-	nes_debug(NES_DBG_CM, "HTE Index = 0x%08X, After CRC = 0x%08X, TcpPorts = 0x%08X\n",
-			nesqp->hte_index, nesqp->hte_index & nesadapter->hte_index_mask,
-			le32_to_cpu(nes_quad.TcpPorts));
+	/* Produce hash key */
+	nesqp->hte_index = cpu_to_be32(
+			crc32c(~0, (void *)&nes_quad, sizeof(nes_quad)) ^ 0xffffffff);
+	nes_debug(NES_DBG_CM, "HTE Index = 0x%08X, After CRC = 0x%08X\n",
+			nesqp->hte_index, nesqp->hte_index & nesadapter->hte_index_mask);
 
 	nesqp->hte_index &= nesadapter->hte_index_mask;
 	nesqp->nesqp_context->hte_index = cpu_to_le32(nesqp->hte_index);
@@ -2907,6 +2890,9 @@ void cm_event_reset(struct nes_cm_event *event)
 	if (!event->cm_node)
 		return;
 
+	if (!event->cm_node->cm_id)
+		return;
+
 	cm_id = event->cm_node->cm_id;
 
 	nes_debug(NES_DBG_CM, "%p - cm_id = %p\n", event->cm_node, cm_id);
@@ -2925,6 +2911,7 @@ void cm_event_reset(struct nes_cm_event *event)
 	ret = cm_id->event_handler(cm_id, &cm_event);
 	nes_debug(NES_DBG_CM, "OFA CM event_handler returned, ret=%d\n", ret);
 
+
 	/* notify OF layer about this connection error event */
 	cm_id->rem_ref(cm_id);
 
@@ -2975,7 +2962,7 @@ void cm_event_mpa_req(struct nes_cm_event *event)
 }
 
 
-static void nes_cm_event_handler(void *parm);
+static void nes_cm_event_handler(struct work_struct *);
 
 /**
  * nes_cm_post_event
@@ -2986,7 +2973,6 @@ int nes_cm_post_event(struct nes_cm_event *event)
 	atomic_inc(&event->cm_node->cm_core->events_posted);
 	add_ref_cm_node(event->cm_node);
 	event->cm_info.cm_id->add_ref(event->cm_info.cm_id);
-	/* NES_INIT_WORK(&event->event_work, nes_cm_event_handler, (void *)event); */
 	INIT_WORK(&event->event_work, nes_cm_event_handler);
 	nes_debug(NES_DBG_CM, "queue_work, event=%p\n", event);
 
@@ -3002,9 +2988,8 @@ int nes_cm_post_event(struct nes_cm_event *event)
  * worker function to handle cm events
  * will free instance of nes_cm_event
  */
-static void nes_cm_event_handler(void *parm)
+static void nes_cm_event_handler(struct work_struct *work)
 {
-	struct work_struct *work = parm;
 	struct nes_cm_event *event = container_of(work, struct nes_cm_event, event_work);
 	struct nes_cm_core *cm_core;
 
@@ -3025,7 +3010,8 @@ static void nes_cm_event_handler(void *parm)
 			cm_event_reset(event);
 			break;
 		case NES_CM_EVENT_CONNECTED:
-			if ((!event->cm_node->cm_id) || (event->cm_node->state != NES_CM_STATE_TSA)) {
+			if ((!event->cm_node->cm_id) ||
+				(event->cm_node->state != NES_CM_STATE_TSA)) {
 				break;
 			}
 			cm_event_connected(event);
diff --git a/drivers/infiniband/hw/nes/nes_cm.h b/drivers/infiniband/hw/nes/nes_cm.h
index 8956b32..00eaeb1 100644
--- a/drivers/infiniband/hw/nes/nes_cm.h
+++ b/drivers/infiniband/hw/nes/nes_cm.h
@@ -43,7 +43,7 @@
 #define IEFT_MPA_KEY_REQ  "MPA ID Req Frame"
 #define IEFT_MPA_KEY_REP  "MPA ID Rep Frame"
 #define IETF_MPA_KEY_SIZE 16
-#define IETF_MPA_VERSION   1
+#define IETF_MPA_VERSION  1
 
 enum ietf_mpa_flags {
 	IETF_MPA_FLAGS_MARKERS = 0x80,	/* receive Markers */
@@ -131,32 +131,32 @@ struct nes_timer_entry {
 	struct net_device *netdev;
 };
 
-#define NES_DEFAULT_RETRYS	64
+#define NES_DEFAULT_RETRYS  64
 #define NES_DEFAULT_RETRANS 8
 #ifdef CONFIG_INFINIBAND_NES_DEBUG
-#define NES_RETRY_TIMEOUT	(1000*HZ/1000)
+#define NES_RETRY_TIMEOUT   (1000*HZ/1000)
 #else
-#define NES_RETRY_TIMEOUT	(1000*HZ/10000)
+#define NES_RETRY_TIMEOUT   (1000*HZ/10000)
 #endif
-#define NES_SHORT_TIME		(10)
-#define NES_LONG_TIME		(2000*HZ/1000)
+#define NES_SHORT_TIME      (10)
+#define NES_LONG_TIME       (2000*HZ/1000)
 
-#define NES_CM_HASHTABLE_SIZE       1024
-#define NES_CM_TCP_TIMER_INTERVAL   3000	
-#define NES_CM_DEFAULT_MTU          1540
+#define NES_CM_HASHTABLE_SIZE         1024
+#define NES_CM_TCP_TIMER_INTERVAL     3000	
+#define NES_CM_DEFAULT_MTU            1540
 #define NES_CM_DEFAULT_FRAME_CNT      10
-#define NES_CM_THREAD_STACK_SIZE     256	
-#define NES_CM_DEFAULT_RCV_WND			64240	// before we know that window scaling is allowed
-#define NES_CM_DEFAULT_RCV_WND_SCALED	256960  // after we know that window scaling is allowed
-#define NES_CM_DEFAULT_RCV_WND_SCALE	2
-#define NES_CM_DEFAULT_FREE_PKTS  0x000A	
-#define NES_CM_FREE_PKT_LO_WATERMARK   2	
+#define NES_CM_THREAD_STACK_SIZE      256	
+#define NES_CM_DEFAULT_RCV_WND        64240	// before we know that window scaling is allowed
+#define NES_CM_DEFAULT_RCV_WND_SCALED 256960  // after we know that window scaling is allowed
+#define NES_CM_DEFAULT_RCV_WND_SCALE  2
+#define NES_CM_DEFAULT_FREE_PKTS      0x000A	
+#define NES_CM_FREE_PKT_LO_WATERMARK  2	
 
-#define NES_CM_DEF_SEQ        0x159bf75f
-#define NES_CM_DEF_LOCAL_ID       0x3b47
+#define NES_CM_DEF_SEQ       0x159bf75f
+#define NES_CM_DEF_LOCAL_ID  0x3b47
 
-#define NES_CM_DEF_SEQ2       0x18ed5740
-#define NES_CM_DEF_LOCAL_ID2      0xb807
+#define NES_CM_DEF_SEQ2      0x18ed5740
+#define NES_CM_DEF_LOCAL_ID2 0xb807
 
 typedef u32 nes_addr_t;
 
@@ -192,15 +192,15 @@ enum nes_cm_conn_type {
 
 /* CM context params */
 struct nes_cm_tcp_context {
-	u8   client;		
+	u8  client;			
 
-	u32  loc_seq_num;	
-	u32  loc_ack_num;	
-	u32  rem_ack_num;	
-	u32  rcv_nxt;		
+	u32 loc_seq_num;	
+	u32 loc_ack_num;	
+	u32 rem_ack_num;	
+	u32 rcv_nxt;		
 
-	u32  loc_id;
-	u32  rem_id;
+	u32 loc_id;
+	u32 rem_id;
 
 	u32 snd_wnd;
 	u32 max_snd_wnd;
@@ -211,7 +211,7 @@ struct nes_cm_tcp_context {
 	u8  rcv_wscale;
 
 	struct nes_cm_tsa_context tsa_cntxt;	
-	struct timeval sent_ts;		
+	struct timeval            sent_ts;		
 };
 
 
@@ -222,68 +222,67 @@ 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;
-	u16 loc_port;
-	struct iw_cm_id *cm_id;
-	enum nes_cm_conn_type conn_type;
-	atomic_t ref_count;
-	struct nes_vnic *nesvnic;
-	atomic_t pend_accepts_cnt;
-	int backlog;
+	struct list_head           list;
+	u64                        session_id;	
+	struct nes_cm_core         *cm_core;
+	u8                         loc_mac[ETH_ALEN];
+	nes_addr_t                 loc_addr;
+	u16                        loc_port;
+	struct iw_cm_id            *cm_id;
+	enum nes_cm_conn_type      conn_type;
+	atomic_t                   ref_count;
+	struct nes_vnic            *nesvnic;
+	atomic_t                   pend_accepts_cnt;
+	int                        backlog;
 	enum nes_cm_listener_state listener_state;
-	u32  reused_node;
+	u32                        reused_node;
 };
 
 /* per connection node and node state information */
 struct nes_cm_node {
-	u64 session_id;	
-	u32 hashkey;	
-
-	nes_addr_t loc_addr, rem_addr;
-	u16 loc_port, rem_port;
+	u64                       session_id;	
+	u32                       hashkey;	
 
+	nes_addr_t                loc_addr, rem_addr;
+	u16                       loc_port, rem_port;
 
-	u8 loc_mac[ETH_ALEN];	
-	u8 rem_mac[ETH_ALEN];	
+	u8                        loc_mac[ETH_ALEN];	
+	u8                        rem_mac[ETH_ALEN];	
 
-	enum nes_cm_node_state state;	
+	enum nes_cm_node_state    state;	
 	struct nes_cm_tcp_context tcp_cntxt;	
-	struct nes_cm_core *cm_core;
-	struct sk_buff_head resend_list;
-	atomic_t ref_count;
-	struct net_device *netdev;
-
-	struct nes_cm_node *loopbackpartner ;
-	struct list_head retrans_list;
-	spinlock_t retrans_list_lock;
-	struct list_head recv_list;
-	spinlock_t recv_list_lock;
+	struct nes_cm_core        *cm_core;
+	struct sk_buff_head       resend_list;
+	atomic_t                  ref_count;
+	struct net_device         *netdev;
+
+	struct nes_cm_node        *loopbackpartner;
+	struct list_head          retrans_list;
+	spinlock_t                retrans_list_lock;
+	struct list_head          recv_list;
+	spinlock_t                recv_list_lock;
 	
-	int send_write0;
+	int                       send_write0;
 	union {
 		struct ietf_mpa_frame mpa_frame;	
-		u8 mpa_frame_buf[NES_CM_DEFAULT_MTU];
+		u8                    mpa_frame_buf[NES_CM_DEFAULT_MTU];
 	};
-	u16 mpa_frame_size;
-	struct iw_cm_id *cm_id;
-	struct list_head list;
-	int accelerated;
-	struct nes_cm_listener *listener;
-	enum nes_cm_conn_type conn_type;
-	struct nes_vnic *nesvnic;
-	int apbvt_set;
-	int accept_pend;
+	u16                       mpa_frame_size;
+	struct iw_cm_id           *cm_id;
+	struct list_head          list;
+	int                       accelerated;
+	struct nes_cm_listener    *listener;
+	enum nes_cm_conn_type     conn_type;
+	struct nes_vnic           *nesvnic;
+	int                       apbvt_set;
+	int                       accept_pend;
 };
 
 /* structure for client or CM to fill when making CM api calls. */
 /*	- only need to set relevant data, based on op. */
 struct nes_cm_info {
 	union {
-		struct iw_cm_id *cm_id;
+		struct iw_cm_id   *cm_id;
 		struct net_device *netdev;
 	};
 
@@ -325,36 +324,36 @@ 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;	
-	spinlock_t listen_list_lock;	
-
-	u32 mtu;						
-	u32 free_tx_pkt_max;
-	u32 rx_pkt_posted;				
-	struct sk_buff_head tx_free_list;	
-	atomic_t ht_node_cnt;			
-	struct list_head connected_nodes;
+	enum nes_cm_node_state  state;	
+	atomic_t                session_id;			
+
+	atomic_t                listen_node_cnt;			
+	struct nes_cm_node      listen_list;	
+	spinlock_t              listen_list_lock;	
+
+	u32                     mtu;						
+	u32                     free_tx_pkt_max;
+	u32                     rx_pkt_posted;				
+	struct sk_buff_head     tx_free_list;	
+	atomic_t                ht_node_cnt;			
+	struct list_head        connected_nodes;
 	/* struct list_head hashtable[NES_CM_HASHTABLE_SIZE]; */
-	spinlock_t ht_lock;				
+	spinlock_t              ht_lock;				
 
-	struct timer_list tcp_timer;	
+	struct timer_list       tcp_timer;	
 
-	struct nes_cm_ops *api;			
+	struct nes_cm_ops       *api;			
 
 	int (*post_event)(struct nes_cm_event *event);
-	atomic_t events_posted;
+	atomic_t                events_posted;
 	struct workqueue_struct *event_wq;
 	struct workqueue_struct *disconn_wq;
 
-	atomic_t node_cnt;
-	u64 aborted_connects;
-	u32 options;
+	atomic_t                node_cnt;
+	u64                     aborted_connects;
+	u32                     options;
 
-	struct nes_cm_node *current_listen_node;
+	struct nes_cm_node      *current_listen_node;
 };
 
 
@@ -408,7 +407,7 @@ 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(void *);
+void nes_disconnect_worker(struct work_struct *);
 int nes_cm_disconn_true(struct nes_qp *);
 int nes_disconnect(struct nes_qp *, int);
 
@@ -430,4 +429,3 @@ void cm_event_mpa_req(struct nes_cm_event *);
 int nes_cm_post_event(struct nes_cm_event *);
 
 #endif			/* NES_CM_H */
-
diff --git a/drivers/infiniband/hw/nes/nes_context.h b/drivers/infiniband/hw/nes/nes_context.h



More information about the ewg mailing list