Lines Matching refs:event

6 static void irdma_cm_post_event(struct irdma_cm_event *event);
89 * @event: upper layer's cm event
92 struct iw_cm_event *event)
94 struct sockaddr_in *laddr = (struct sockaddr_in *)&event->local_addr;
95 struct sockaddr_in *raddr = (struct sockaddr_in *)&event->remote_addr;
110 * @event: upper layer's cm event
113 struct iw_cm_event *event)
115 struct sockaddr_in6 *laddr6 = (struct sockaddr_in6 *)&event->local_addr;
116 struct sockaddr_in6 *raddr6 = (struct sockaddr_in6 *)&event->remote_addr;
131 * irdma_get_cmevent_info - for cm event upcall
133 * @cm_id: upper layers cm struct for the event
134 * @event: upper layer's cm event
138 struct iw_cm_event *event)
140 memcpy(&event->local_addr, &cm_id->m_local_addr,
141 sizeof(event->local_addr));
142 memcpy(&event->remote_addr, &cm_id->m_remote_addr,
143 sizeof(event->remote_addr));
145 event->private_data = cm_node->pdata_buf;
146 event->private_data_len = (u8)cm_node->pdata.size;
147 event->ird = cm_node->ird_size;
148 event->ord = cm_node->ord_size;
153 * irdma_send_cm_event - upcall cm's event handler
157 * @status: status for the event type
163 struct iw_cm_event event = {};
165 event.event = type;
166 event.status = status;
178 irdma_fill_sockaddr4(cm_node, &event);
180 irdma_fill_sockaddr6(cm_node, &event);
181 event.provider_data = cm_node;
182 event.private_data = cm_node->pdata_buf;
183 event.private_data_len = (u8)cm_node->pdata.size;
184 event.ird = cm_node->ird_size;
187 irdma_get_cmevent_info(cm_node, cm_id, &event);
190 event.ird = cm_node->ird_size;
191 event.ord = cm_node->ord_size;
195 /* Wait if we are in RTS but havent issued the iwcm event upcall */
203 return cm_id->event_handler(cm_id, &event);
225 * irdma_create_event - create cm event
232 struct irdma_cm_event *event;
237 event = kzalloc(sizeof(*event), GFP_ATOMIC);
239 if (!event)
242 event->type = type;
243 event->cm_node = cm_node;
244 memcpy(event->cm_info.rem_addr, cm_node->rem_addr,
245 sizeof(event->cm_info.rem_addr));
246 memcpy(event->cm_info.loc_addr, cm_node->loc_addr,
247 sizeof(event->cm_info.loc_addr));
248 event->cm_info.rem_port = cm_node->rem_port;
249 event->cm_info.loc_port = cm_node->loc_port;
250 event->cm_info.cm_id = cm_node->cm_id;
252 "CM: node=%p event=%p type=%u dst=%pI4 src=%pI4\n", cm_node,
253 event, type, event->cm_info.loc_addr,
254 event->cm_info.rem_addr);
256 irdma_cm_post_event(event);
258 return event;
615 * irdma_active_open_err - send event for active side cm error
658 * irdma_event_connect_error - to create connect error event
659 * @event: cm information for connect event
661 static void irdma_event_connect_error(struct irdma_cm_event *event)
666 cm_id = event->cm_node->cm_id;
677 irdma_send_cm_event(event->cm_node, cm_id, IW_CM_EVENT_CONNECT_REPLY,
679 irdma_rem_ref_cm_node(event->cm_node);
3267 /* Handles CM event work items send to Iwarp core */
3268 cm_core->event_wq = alloc_ordered_workqueue("iwarp-event-wq", 0);
3580 "CM: disconnect event failed: - cm_id = %p\n",
3589 "CM: close event failed: - cm_id = %p\n",
4130 * @event: the info for cm_node of connection
4132 static void irdma_cm_event_connected(struct irdma_cm_event *event)
4144 cm_node = event->cm_node;
4185 irdma_send_cm_event(event->cm_node, cm_id, IW_CM_EVENT_CONNECT_REPLY,
4187 irdma_rem_ref_cm_node(event->cm_node);
4192 * @event: the info for cm_node of connection
4194 static void irdma_cm_event_reset(struct irdma_cm_event *event)
4196 struct irdma_cm_node *cm_node = event->cm_node;
4208 "CM: reset event %p - cm_id = %p\n", event->cm_node, cm_id);
4217 * irdma_cm_event_handler - send event to cm upper layer
4218 * @work: pointer of cm event info.
4222 struct irdma_cm_event *event = container_of(work, struct irdma_cm_event, event_work);
4225 if (!event || !event->cm_node || !event->cm_node->cm_core)
4228 cm_node = event->cm_node;
4229 trace_irdma_cm_event_handler(cm_node, event->type, NULL);
4231 switch (event->type) {
4237 irdma_cm_event_reset(event);
4240 if (!event->cm_node->cm_id ||
4241 event->cm_node->state != IRDMA_CM_STATE_OFFLOADED)
4243 irdma_cm_event_connected(event);
4246 if (!event->cm_node->cm_id ||
4253 if (!event->cm_node->cm_id ||
4254 event->cm_node->state == IRDMA_CM_STATE_OFFLOADED)
4256 irdma_event_connect_error(event);
4260 "CM: bad event type = %d\n", event->type);
4264 irdma_rem_ref_cm_node(event->cm_node);
4265 kfree(event);
4269 * irdma_cm_post_event - queue event request for worker thread
4270 * @event: cm node's info for up event call
4272 static void irdma_cm_post_event(struct irdma_cm_event *event)
4274 refcount_inc(&event->cm_node->refcnt);
4275 INIT_WORK(&event->event_work, irdma_cm_event_handler);
4276 queue_work(event->cm_node->cm_core->event_wq, &event->event_work);