.. | .. |
---|
66 | 66 | #include "bnx2fc_constants.h" |
---|
67 | 67 | |
---|
68 | 68 | #define BNX2FC_NAME "bnx2fc" |
---|
69 | | -#define BNX2FC_VERSION "2.11.8" |
---|
| 69 | +#define BNX2FC_VERSION "2.12.13" |
---|
70 | 70 | |
---|
71 | 71 | #define PFX "bnx2fc: " |
---|
72 | 72 | |
---|
.. | .. |
---|
75 | 75 | #define BNX2X_DOORBELL_PCI_BAR 2 |
---|
76 | 76 | |
---|
77 | 77 | #define BNX2FC_MAX_BD_LEN 0xffff |
---|
78 | | -#define BNX2FC_BD_SPLIT_SZ 0x8000 |
---|
79 | | -#define BNX2FC_MAX_BDS_PER_CMD 256 |
---|
| 78 | +#define BNX2FC_BD_SPLIT_SZ 0xffff |
---|
| 79 | +#define BNX2FC_MAX_BDS_PER_CMD 255 |
---|
| 80 | +#define BNX2FC_FW_MAX_BDS_PER_CMD 255 |
---|
80 | 81 | |
---|
81 | 82 | #define BNX2FC_SQ_WQES_MAX 256 |
---|
82 | 83 | |
---|
.. | .. |
---|
433 | 434 | void (*cb_func)(struct bnx2fc_els_cb_arg *cb_arg); |
---|
434 | 435 | struct bnx2fc_els_cb_arg *cb_arg; |
---|
435 | 436 | struct delayed_work timeout_work; /* timer for ULP timeouts */ |
---|
436 | | - struct completion tm_done; |
---|
437 | | - int wait_for_comp; |
---|
| 437 | + struct completion abts_done; |
---|
| 438 | + struct completion cleanup_done; |
---|
| 439 | + int wait_for_abts_comp; |
---|
| 440 | + int wait_for_cleanup_comp; |
---|
438 | 441 | u16 xid; |
---|
439 | 442 | struct fcoe_err_report_entry err_entry; |
---|
440 | 443 | struct fcoe_task_ctx_entry *task; |
---|
.. | .. |
---|
455 | 458 | #define BNX2FC_FLAG_ELS_TIMEOUT 0xb |
---|
456 | 459 | #define BNX2FC_FLAG_CMD_LOST 0xc |
---|
457 | 460 | #define BNX2FC_FLAG_SRR_SENT 0xd |
---|
| 461 | +#define BNX2FC_FLAG_ISSUE_CLEANUP_REQ 0xe |
---|
458 | 462 | u8 rec_retry; |
---|
459 | 463 | u8 srr_retry; |
---|
460 | 464 | u32 srr_offset; |
---|
.. | .. |
---|
478 | 482 | struct bnx2fc_work { |
---|
479 | 483 | struct list_head list; |
---|
480 | 484 | struct bnx2fc_rport *tgt; |
---|
| 485 | + struct fcoe_task_ctx_entry *task; |
---|
| 486 | + unsigned char rq_data[BNX2FC_RQ_BUF_SZ]; |
---|
481 | 487 | u16 wqe; |
---|
| 488 | + u8 num_rq; |
---|
482 | 489 | }; |
---|
483 | 490 | struct bnx2fc_unsol_els { |
---|
484 | 491 | struct fc_lport *lport; |
---|
.. | .. |
---|
546 | 553 | enum fc_rport_event event); |
---|
547 | 554 | void bnx2fc_process_scsi_cmd_compl(struct bnx2fc_cmd *io_req, |
---|
548 | 555 | struct fcoe_task_ctx_entry *task, |
---|
549 | | - u8 num_rq); |
---|
| 556 | + u8 num_rq, unsigned char *rq_data); |
---|
550 | 557 | void bnx2fc_process_cleanup_compl(struct bnx2fc_cmd *io_req, |
---|
551 | 558 | struct fcoe_task_ctx_entry *task, |
---|
552 | 559 | u8 num_rq); |
---|
.. | .. |
---|
555 | 562 | u8 num_rq); |
---|
556 | 563 | void bnx2fc_process_tm_compl(struct bnx2fc_cmd *io_req, |
---|
557 | 564 | struct fcoe_task_ctx_entry *task, |
---|
558 | | - u8 num_rq); |
---|
| 565 | + u8 num_rq, unsigned char *rq_data); |
---|
559 | 566 | void bnx2fc_process_els_compl(struct bnx2fc_cmd *els_req, |
---|
560 | 567 | struct fcoe_task_ctx_entry *task, |
---|
561 | 568 | u8 num_rq); |
---|
.. | .. |
---|
573 | 580 | void *arg, u32 timeout); |
---|
574 | 581 | void bnx2fc_arm_cq(struct bnx2fc_rport *tgt); |
---|
575 | 582 | int bnx2fc_process_new_cqes(struct bnx2fc_rport *tgt); |
---|
576 | | -void bnx2fc_process_cq_compl(struct bnx2fc_rport *tgt, u16 wqe); |
---|
| 583 | +void bnx2fc_process_cq_compl(struct bnx2fc_rport *tgt, u16 wqe, |
---|
| 584 | + unsigned char *rq_data, u8 num_rq, |
---|
| 585 | + struct fcoe_task_ctx_entry *task); |
---|
577 | 586 | struct bnx2fc_rport *bnx2fc_tgt_lookup(struct fcoe_port *port, |
---|
578 | 587 | u32 port_id); |
---|
579 | 588 | void bnx2fc_process_l2_frame_compl(struct bnx2fc_rport *tgt, |
---|