• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/infiniband/hw/nes/

Lines Matching defs:nesqp

79 static void nes_terminate_start_timer(struct nes_qp *nesqp);
3014 static u32 iwarp_opcode(struct nes_qp *nesqp, u32 aeq_info)
3021 pkt = nesqp->hwqp.q2_vbase + BAD_FRAME_OFFSET;
3030 static int nes_bld_terminate_hdr(struct nes_qp *nesqp, u16 async_event_id, u32 aeq_info)
3032 u8 *pkt = nesqp->hwqp.q2_vbase + BAD_FRAME_OFFSET;
3039 termhdr = (struct nes_terminate_hdr *)nesqp->hwqp.q2_vbase;
3074 switch (iwarp_opcode(nesqp, aeq_info)) {
3098 switch (iwarp_opcode(nesqp, aeq_info)) {
3135 switch (iwarp_opcode(nesqp, aeq_info)) {
3233 nesqp->term_sq_flush_code = flush_code;
3235 nesqp->term_rq_flush_code = flush_code;
3241 static void nes_terminate_connection(struct nes_device *nesdev, struct nes_qp *nesqp,
3255 if (nesqp->term_flags & NES_TERM_SENT)
3270 nesqp = (struct nes_qp *)(unsigned long)context;
3271 spin_lock_irqsave(&nesqp->lock, flags);
3272 nesqp->hw_iwarp_state = iwarp_state;
3273 nesqp->hw_tcp_state = tcp_state;
3274 nesqp->last_aeq = async_event_id;
3275 nesqp->terminate_eventtype = eventtype;
3276 spin_unlock_irqrestore(&nesqp->lock, flags);
3279 termlen = nes_bld_terminate_hdr(nesqp, async_event_id, aeq_info);
3284 nesqp->term_flags = NES_TERM_DONE;
3285 nes_hw_modify_qp(nesdev, nesqp, NES_CQP_QP_IWARP_STATE_ERROR, 0, 0);
3286 nes_cm_disconn(nesqp);
3288 nes_terminate_start_timer(nesqp);
3289 nesqp->term_flags |= NES_TERM_SENT;
3290 nes_hw_modify_qp(nesdev, nesqp, mod_qp_flags, termlen, 0);
3295 struct nes_qp *nesqp, struct nes_hw_aeqe *aeqe)
3308 spin_lock_irqsave(&nesqp->lock, flags);
3309 nesqp->hw_iwarp_state = iwarp_state;
3310 nesqp->hw_tcp_state = tcp_state;
3311 nesqp->last_aeq = async_event_id;
3312 spin_unlock_irqrestore(&nesqp->lock, flags);
3315 nes_hw_modify_qp(nesdev, nesqp, NES_CQP_QP_IWARP_STATE_TERMINATE |
3320 static void nes_terminate_done(struct nes_qp *nesqp, int timeout_occurred)
3324 struct nes_vnic *nesvnic = to_nesvnic(nesqp->ibqp.device);
3328 spin_lock_irqsave(&nesqp->lock, flags);
3329 if (nesqp->hte_added) {
3330 nesqp->hte_added = 0;
3334 first_time = (nesqp->term_flags & NES_TERM_DONE) == 0;
3335 nesqp->term_flags |= NES_TERM_DONE;
3336 spin_unlock_irqrestore(&nesqp->lock, flags);
3341 del_timer(&nesqp->terminate_timer);
3345 nes_hw_modify_qp(nesdev, nesqp, next_iwarp_state, 0, 0);
3346 nes_cm_disconn(nesqp);
3351 struct nes_qp *nesqp, struct nes_hw_aeqe *aeqe)
3364 pkt = nesqp->hwqp.q2_vbase + BAD_FRAME_OFFSET;
3385 nes_terminate_connection(nesdev, nesqp, aeqe, IB_EVENT_QP_FATAL);
3390 nesqp->term_flags |= NES_TERM_RCVD;
3391 nesqp->terminate_eventtype = IB_EVENT_QP_FATAL;
3392 nes_terminate_start_timer(nesqp);
3393 nes_terminate_send_fin(nesdev, nesqp, aeqe);
3399 struct nes_qp *nesqp = (struct nes_qp *)(unsigned long)context;
3401 nes_terminate_done(nesqp, 1);
3405 static void nes_terminate_start_timer(struct nes_qp *nesqp)
3407 init_timer(&nesqp->terminate_timer);
3408 nesqp->terminate_timer.function = nes_terminate_timeout;
3409 nesqp->terminate_timer.expires = jiffies + HZ;
3410 nesqp->terminate_timer.data = (unsigned long)nesqp;
3411 add_timer(&nesqp->terminate_timer);
3422 struct nes_qp *nesqp;
3446 /* context is nesqp unless async_event_id == CQ ERROR */
3447 nesqp = (struct nes_qp *)(unsigned long)context;
3461 (atomic_read(&nesqp->close_timer_started)))
3467 if (nesqp->term_flags)
3470 if (atomic_inc_return(&nesqp->close_timer_started) == 1) {
3472 (nesqp->ibqp_state == IB_QPS_RTS) &&
3474 spin_lock_irqsave(&nesqp->lock, flags);
3475 nesqp->hw_iwarp_state = iwarp_state;
3476 nesqp->hw_tcp_state = tcp_state;
3477 nesqp->last_aeq = async_event_id;
3479 nesqp->hw_iwarp_state = NES_AEQE_IWARP_STATE_CLOSING;
3480 spin_unlock_irqrestore(&nesqp->lock, flags);
3481 nes_hw_modify_qp(nesdev, nesqp, next_iwarp_state, 0, 0);
3482 nes_cm_disconn(nesqp);
3484 nesqp->cm_id->add_ref(nesqp->cm_id);
3485 schedule_nes_timer(nesqp->cm_node, (struct sk_buff *)nesqp,
3490 nesqp->hwqp.qp_id, atomic_read(&nesqp->refcount),
3491 async_event_id, nesqp->last_aeq, tcp_state);
3495 if (nesqp->term_flags) {
3496 nes_terminate_done(nesqp, 0);
3499 spin_lock_irqsave(&nesqp->lock, flags);
3500 nesqp->hw_iwarp_state = NES_AEQE_IWARP_STATE_CLOSING;
3501 spin_unlock_irqrestore(&nesqp->lock, flags);
3502 nes_hw_modify_qp(nesdev, nesqp, NES_CQP_QP_IWARP_STATE_CLOSING, 0, 0);
3503 nes_cm_disconn(nesqp);
3508 spin_lock_irqsave(&nesqp->lock, flags);
3509 nesqp->hw_iwarp_state = iwarp_state;
3510 nesqp->hw_tcp_state = tcp_state;
3511 nesqp->last_aeq = async_event_id;
3512 nesqp->hte_added = 0;
3513 spin_unlock_irqrestore(&nesqp->lock, flags);
3515 nes_hw_modify_qp(nesdev, nesqp, next_iwarp_state, 0, 0);
3516 nes_cm_disconn(nesqp);
3520 if (atomic_read(&nesqp->close_timer_started))
3522 spin_lock_irqsave(&nesqp->lock, flags);
3523 nesqp->hw_iwarp_state = iwarp_state;
3524 nesqp->hw_tcp_state = tcp_state;
3525 nesqp->last_aeq = async_event_id;
3526 spin_unlock_irqrestore(&nesqp->lock, flags);
3527 nes_cm_disconn(nesqp);
3531 nes_terminate_send_fin(nesdev, nesqp, aeqe);
3535 nes_terminate_received(nesdev, nesqp, aeqe);
3549 nesqp->hwqp.qp_id, async_event_id);
3550 nes_terminate_connection(nesdev, nesqp, aeqe, IB_EVENT_QP_ACCESS_ERR);
3557 if (iwarp_opcode(nesqp, aeq_info) > IWARP_OPCODE_TERM) {
3599 nesqp->hwqp.qp_id, async_event_id);
3600 nes_terminate_connection(nesdev, nesqp, aeqe, IB_EVENT_QP_FATAL);
3762 void flush_wqes(struct nes_device *nesdev, struct nes_qp *nesqp,
3786 if ((nesqp->term_sq_flush_code) && (which_wq & NES_CQP_FLUSH_SQ)) {
3788 sq_code = (CQE_MAJOR_DRV << 16) | nesqp->term_sq_flush_code;
3789 nesqp->term_sq_flush_code = 0;
3792 if ((nesqp->term_rq_flush_code) && (which_wq & NES_CQP_FLUSH_RQ)) {
3794 rq_code = (CQE_MAJOR_DRV << 16) | nesqp->term_rq_flush_code;
3795 nesqp->term_rq_flush_code = 0;
3805 cqp_wqe->wqe_words[NES_CQP_WQE_ID_IDX] = cpu_to_le32(nesqp->hwqp.qp_id);