linux/drivers/scsi/qedf/qedf.h
<<
>>
Prefs
   1/*
   2 *  QLogic FCoE Offload Driver
   3 *  Copyright (c) 2016 Cavium Inc.
   4 *
   5 *  This software is available under the terms of the GNU General Public License
   6 *  (GPL) Version 2, available from the file COPYING in the main directory of
   7 *  this source tree.
   8 */
   9#ifndef _QEDFC_H_
  10#define _QEDFC_H_
  11
  12#include <scsi/libfcoe.h>
  13#include <scsi/libfc.h>
  14#include <scsi/fc/fc_fip.h>
  15#include <scsi/fc/fc_fc2.h>
  16#include <scsi/scsi_tcq.h>
  17#include <scsi/fc_encode.h>
  18#include <linux/version.h>
  19
  20
  21/* qedf_hsi.h needs to before included any qed includes */
  22#include "qedf_hsi.h"
  23
  24#include <linux/qed/qed_if.h>
  25#include <linux/qed/qed_fcoe_if.h>
  26#include <linux/qed/qed_ll2_if.h>
  27#include "qedf_version.h"
  28#include "qedf_dbg.h"
  29#include "drv_fcoe_fw_funcs.h"
  30
  31/* Helpers to extract upper and lower 32-bits of pointer */
  32#define U64_HI(val) ((u32)(((u64)(val)) >> 32))
  33#define U64_LO(val) ((u32)(((u64)(val)) & 0xffffffff))
  34
  35#define QEDF_DESCR "QLogic FCoE Offload Driver"
  36#define QEDF_MODULE_NAME "qedf"
  37
  38#define QEDF_MIN_XID            0
  39#define QEDF_MAX_SCSI_XID       (NUM_TASKS_PER_CONNECTION - 1)
  40#define QEDF_MAX_ELS_XID        4095
  41#define QEDF_FLOGI_RETRY_CNT    3
  42#define QEDF_RPORT_RETRY_CNT    255
  43#define QEDF_MAX_SESSIONS       1024
  44#define QEDF_MAX_PAYLOAD        2048
  45#define QEDF_MAX_BDS_PER_CMD    256
  46#define QEDF_MAX_BD_LEN         0xffff
  47#define QEDF_BD_SPLIT_SZ        0x1000
  48#define QEDF_PAGE_SIZE          4096
  49#define QED_HW_DMA_BOUNDARY     0xfff
  50#define QEDF_MAX_SGLEN_FOR_CACHESGL             ((1U << 16) - 1)
  51#define QEDF_MFS                (QEDF_MAX_PAYLOAD + \
  52        sizeof(struct fc_frame_header))
  53#define QEDF_MAX_NPIV           64
  54#define QEDF_TM_TIMEOUT         10
  55#define QEDF_ABORT_TIMEOUT      10
  56#define QEDF_CLEANUP_TIMEOUT    10
  57#define QEDF_MAX_CDB_LEN        16
  58
  59#define UPSTREAM_REMOVE         1
  60#define UPSTREAM_KEEP           1
  61
  62struct qedf_mp_req {
  63        uint32_t req_len;
  64        void *req_buf;
  65        dma_addr_t req_buf_dma;
  66        struct scsi_sge *mp_req_bd;
  67        dma_addr_t mp_req_bd_dma;
  68        struct fc_frame_header req_fc_hdr;
  69
  70        uint32_t resp_len;
  71        void *resp_buf;
  72        dma_addr_t resp_buf_dma;
  73        struct scsi_sge *mp_resp_bd;
  74        dma_addr_t mp_resp_bd_dma;
  75        struct fc_frame_header resp_fc_hdr;
  76};
  77
  78struct qedf_els_cb_arg {
  79        struct qedf_ioreq *aborted_io_req;
  80        struct qedf_ioreq *io_req;
  81        u8 op; /* Used to keep track of ELS op */
  82        uint16_t l2_oxid;
  83        u32 offset; /* Used for sequence cleanup */
  84        u8 r_ctl; /* Used for sequence cleanup */
  85};
  86
  87enum qedf_ioreq_event {
  88        QEDF_IOREQ_EV_ABORT_SUCCESS,
  89        QEDF_IOREQ_EV_ABORT_FAILED,
  90        QEDF_IOREQ_EV_SEND_RRQ,
  91        QEDF_IOREQ_EV_ELS_TMO,
  92        QEDF_IOREQ_EV_ELS_ERR_DETECT,
  93        QEDF_IOREQ_EV_ELS_FLUSH,
  94        QEDF_IOREQ_EV_CLEANUP_SUCCESS,
  95        QEDF_IOREQ_EV_CLEANUP_FAILED,
  96};
  97
  98#define FC_GOOD         0
  99#define FCOE_FCP_RSP_FLAGS_FCP_RESID_OVER       (0x1<<2)
 100#define FCOE_FCP_RSP_FLAGS_FCP_RESID_UNDER      (0x1<<3)
 101#define CMD_SCSI_STATUS(Cmnd)                   ((Cmnd)->SCp.Status)
 102#define FCOE_FCP_RSP_FLAGS_FCP_RSP_LEN_VALID    (0x1<<0)
 103#define FCOE_FCP_RSP_FLAGS_FCP_SNS_LEN_VALID    (0x1<<1)
 104struct qedf_ioreq {
 105        struct list_head link;
 106        uint16_t xid;
 107        struct scsi_cmnd *sc_cmd;
 108        bool use_slowpath; /* Use slow SGL for this I/O */
 109#define QEDF_SCSI_CMD           1
 110#define QEDF_TASK_MGMT_CMD      2
 111#define QEDF_ABTS               3
 112#define QEDF_ELS                4
 113#define QEDF_CLEANUP            5
 114#define QEDF_SEQ_CLEANUP        6
 115        u8 cmd_type;
 116#define QEDF_CMD_OUTSTANDING            0x0
 117#define QEDF_CMD_IN_ABORT               0x1
 118#define QEDF_CMD_IN_CLEANUP             0x2
 119#define QEDF_CMD_SRR_SENT               0x3
 120        u8 io_req_flags;
 121        uint8_t tm_flags;
 122        struct qedf_rport *fcport;
 123        unsigned long flags;
 124        enum qedf_ioreq_event event;
 125        size_t data_xfer_len;
 126        struct kref refcount;
 127        struct qedf_cmd_mgr *cmd_mgr;
 128        struct io_bdt *bd_tbl;
 129        struct delayed_work timeout_work;
 130        struct completion tm_done;
 131        struct completion abts_done;
 132        struct fcoe_task_context *task;
 133        struct fcoe_task_params *task_params;
 134        struct scsi_sgl_task_params *sgl_task_params;
 135        int idx;
 136/*
 137 * Need to allocate enough room for both sense data and FCP response data
 138 * which has a max length of 8 bytes according to spec.
 139 */
 140#define QEDF_SCSI_SENSE_BUFFERSIZE      (SCSI_SENSE_BUFFERSIZE + 8)
 141        uint8_t *sense_buffer;
 142        dma_addr_t sense_buffer_dma;
 143        u32 fcp_resid;
 144        u32 fcp_rsp_len;
 145        u32 fcp_sns_len;
 146        u8 cdb_status;
 147        u8 fcp_status;
 148        u8 fcp_rsp_code;
 149        u8 scsi_comp_flags;
 150#define QEDF_MAX_REUSE          0xfff
 151        u16 reuse_count;
 152        struct qedf_mp_req mp_req;
 153        void (*cb_func)(struct qedf_els_cb_arg *cb_arg);
 154        struct qedf_els_cb_arg *cb_arg;
 155        int fp_idx;
 156        unsigned int cpu;
 157        unsigned int int_cpu;
 158#define QEDF_IOREQ_SLOW_SGE             0
 159#define QEDF_IOREQ_SINGLE_SGE           1
 160#define QEDF_IOREQ_FAST_SGE             2
 161        u8 sge_type;
 162        struct delayed_work rrq_work;
 163
 164        /* Used for sequence level recovery; i.e. REC/SRR */
 165        uint32_t rx_buf_off;
 166        uint32_t tx_buf_off;
 167        uint32_t rx_id;
 168        uint32_t task_retry_identifier;
 169
 170        /*
 171         * Used to tell if we need to return a SCSI command
 172         * during some form of error processing.
 173         */
 174        bool return_scsi_cmd_on_abts;
 175};
 176
 177extern struct workqueue_struct *qedf_io_wq;
 178
 179struct qedf_rport {
 180        spinlock_t rport_lock;
 181#define QEDF_RPORT_SESSION_READY 1
 182#define QEDF_RPORT_UPLOADING_CONNECTION 2
 183        unsigned long flags;
 184        unsigned long retry_delay_timestamp;
 185        struct fc_rport *rport;
 186        struct fc_rport_priv *rdata;
 187        struct qedf_ctx *qedf;
 188        u32 handle; /* Handle from qed */
 189        u32 fw_cid; /* fw_cid from qed */
 190        void __iomem *p_doorbell;
 191        /* Send queue management */
 192        atomic_t free_sqes;
 193        atomic_t num_active_ios;
 194        struct fcoe_wqe *sq;
 195        dma_addr_t sq_dma;
 196        u16 sq_prod_idx;
 197        u16 fw_sq_prod_idx;
 198        u16 sq_con_idx;
 199        u32 sq_mem_size;
 200        void *sq_pbl;
 201        dma_addr_t sq_pbl_dma;
 202        u32 sq_pbl_size;
 203        u32 sid;
 204#define QEDF_RPORT_TYPE_DISK            0
 205#define QEDF_RPORT_TYPE_TAPE            1
 206        uint dev_type; /* Disk or tape */
 207        struct list_head peers;
 208};
 209
 210/* Used to contain LL2 skb's in ll2_skb_list */
 211struct qedf_skb_work {
 212        struct work_struct work;
 213        struct sk_buff *skb;
 214        struct qedf_ctx *qedf;
 215};
 216
 217struct qedf_fastpath {
 218#define QEDF_SB_ID_NULL         0xffff
 219        u16             sb_id;
 220        struct qed_sb_info      *sb_info;
 221        struct qedf_ctx *qedf;
 222        /* Keep track of number of completions on this fastpath */
 223        unsigned long completions;
 224        uint32_t cq_num_entries;
 225};
 226
 227/* Used to pass fastpath information needed to process CQEs */
 228struct qedf_io_work {
 229        struct work_struct work;
 230        struct fcoe_cqe cqe;
 231        struct qedf_ctx *qedf;
 232        struct fc_frame *fp;
 233};
 234
 235struct qedf_glbl_q_params {
 236        u64     hw_p_cq;        /* Completion queue PBL */
 237        u64     hw_p_rq;        /* Request queue PBL */
 238        u64     hw_p_cmdq;      /* Command queue PBL */
 239};
 240
 241struct global_queue {
 242        struct fcoe_cqe *cq;
 243        dma_addr_t cq_dma;
 244        u32 cq_mem_size;
 245        u32 cq_cons_idx; /* Completion queue consumer index */
 246        u32 cq_prod_idx;
 247
 248        void *cq_pbl;
 249        dma_addr_t cq_pbl_dma;
 250        u32 cq_pbl_size;
 251};
 252
 253/* I/O tracing entry */
 254#define QEDF_IO_TRACE_SIZE              2048
 255struct qedf_io_log {
 256#define QEDF_IO_TRACE_REQ               0
 257#define QEDF_IO_TRACE_RSP               1
 258        uint8_t direction;
 259        uint16_t task_id;
 260        uint32_t port_id; /* Remote port fabric ID */
 261        int lun;
 262        unsigned char op; /* SCSI CDB */
 263        uint8_t lba[4];
 264        unsigned int bufflen; /* SCSI buffer length */
 265        unsigned int sg_count; /* Number of SG elements */
 266        int result; /* Result passed back to mid-layer */
 267        unsigned long jiffies; /* Time stamp when I/O logged */
 268        int refcount; /* Reference count for task id */
 269        unsigned int req_cpu; /* CPU that the task is queued on */
 270        unsigned int int_cpu; /* Interrupt CPU that the task is received on */
 271        unsigned int rsp_cpu; /* CPU that task is returned on */
 272        u8 sge_type; /* Did we take the slow, single or fast SGE path */
 273};
 274
 275/* Number of entries in BDQ */
 276#define QEDF_BDQ_SIZE                   256
 277#define QEDF_BDQ_BUF_SIZE               2072
 278
 279/* DMA coherent buffers for BDQ */
 280struct qedf_bdq_buf {
 281        void *buf_addr;
 282        dma_addr_t buf_dma;
 283};
 284
 285/* Main adapter struct */
 286struct qedf_ctx {
 287        struct qedf_dbg_ctx dbg_ctx;
 288        struct fcoe_ctlr ctlr;
 289        struct fc_lport *lport;
 290        u8 data_src_addr[ETH_ALEN];
 291#define QEDF_LINK_DOWN          0
 292#define QEDF_LINK_UP            1
 293        atomic_t link_state;
 294#define QEDF_DCBX_PENDING       0
 295#define QEDF_DCBX_DONE          1
 296        atomic_t dcbx;
 297        uint16_t max_scsi_xid;
 298        uint16_t max_els_xid;
 299#define QEDF_NULL_VLAN_ID       -1
 300#define QEDF_FALLBACK_VLAN      1002
 301#define QEDF_DEFAULT_PRIO       3
 302        int vlan_id;
 303        uint vlan_hw_insert:1;
 304        struct qed_dev *cdev;
 305        struct qed_dev_fcoe_info dev_info;
 306        struct qed_int_info int_info;
 307        uint16_t last_command;
 308        spinlock_t hba_lock;
 309        struct pci_dev *pdev;
 310        u64 wwnn;
 311        u64 wwpn;
 312        u8 __aligned(16) mac[ETH_ALEN];
 313        struct list_head fcports;
 314        atomic_t num_offloads;
 315        unsigned int curr_conn_id;
 316        struct workqueue_struct *ll2_recv_wq;
 317        struct workqueue_struct *link_update_wq;
 318        struct delayed_work link_update;
 319        struct delayed_work link_recovery;
 320        struct completion flogi_compl;
 321        struct completion fipvlan_compl;
 322
 323        /*
 324         * Used to tell if we're in the window where we are waiting for
 325         * the link to come back up before informting fcoe that the link is
 326         * done.
 327         */
 328        atomic_t link_down_tmo_valid;
 329#define QEDF_TIMER_INTERVAL             (1 * HZ)
 330        struct timer_list timer; /* One second book keeping timer */
 331#define QEDF_DRAIN_ACTIVE               1
 332#define QEDF_LL2_STARTED                2
 333#define QEDF_UNLOADING                  3
 334#define QEDF_GRCDUMP_CAPTURE            4
 335#define QEDF_IN_RECOVERY                5
 336#define QEDF_DBG_STOP_IO                6
 337        unsigned long flags; /* Miscellaneous state flags */
 338        int fipvlan_retries;
 339        u8 num_queues;
 340        struct global_queue **global_queues;
 341        /* Pointer to array of queue structures */
 342        struct qedf_glbl_q_params *p_cpuq;
 343        /* Physical address of array of queue structures */
 344        dma_addr_t hw_p_cpuq;
 345
 346        struct qedf_bdq_buf bdq[QEDF_BDQ_SIZE];
 347        void *bdq_pbl;
 348        dma_addr_t bdq_pbl_dma;
 349        size_t bdq_pbl_mem_size;
 350        void *bdq_pbl_list;
 351        dma_addr_t bdq_pbl_list_dma;
 352        u8 bdq_pbl_list_num_entries;
 353        void __iomem *bdq_primary_prod;
 354        void __iomem *bdq_secondary_prod;
 355        uint16_t bdq_prod_idx;
 356
 357        /* Structure for holding all the fastpath for this qedf_ctx */
 358        struct qedf_fastpath *fp_array;
 359        struct qed_fcoe_tid tasks;
 360        struct qedf_cmd_mgr *cmd_mgr;
 361        /* Holds the PF parameters we pass to qed to start he FCoE function */
 362        struct qed_pf_params pf_params;
 363        /* Used to time middle path ELS and TM commands */
 364        struct workqueue_struct *timer_work_queue;
 365
 366#define QEDF_IO_WORK_MIN                64
 367        mempool_t *io_mempool;
 368        struct workqueue_struct *dpc_wq;
 369
 370        u32 slow_sge_ios;
 371        u32 fast_sge_ios;
 372        u32 single_sge_ios;
 373
 374        uint8_t *grcdump;
 375        uint32_t grcdump_size;
 376
 377        struct qedf_io_log io_trace_buf[QEDF_IO_TRACE_SIZE];
 378        spinlock_t io_trace_lock;
 379        uint16_t io_trace_idx;
 380
 381        bool stop_io_on_error;
 382
 383        u32 flogi_cnt;
 384        u32 flogi_failed;
 385
 386        /* Used for fc statistics */
 387        u64 input_requests;
 388        u64 output_requests;
 389        u64 control_requests;
 390        u64 packet_aborts;
 391        u64 alloc_failures;
 392};
 393
 394struct io_bdt {
 395        struct qedf_ioreq *io_req;
 396        struct scsi_sge *bd_tbl;
 397        dma_addr_t bd_tbl_dma;
 398        u16 bd_valid;
 399};
 400
 401struct qedf_cmd_mgr {
 402        struct qedf_ctx *qedf;
 403        u16 idx;
 404        struct io_bdt **io_bdt_pool;
 405#define FCOE_PARAMS_NUM_TASKS           2048
 406        struct qedf_ioreq cmds[FCOE_PARAMS_NUM_TASKS];
 407        spinlock_t lock;
 408        atomic_t free_list_cnt;
 409};
 410
 411/* Stolen from qed_cxt_api.h and adapted for qed_fcoe_info
 412 * Usage:
 413 *
 414 * void *ptr;
 415 * ptr = qedf_get_task_mem(&qedf->tasks, 128);
 416 */
 417static inline void *qedf_get_task_mem(struct qed_fcoe_tid *info, u32 tid)
 418{
 419        return (void *)(info->blocks[tid / info->num_tids_per_block] +
 420                        (tid % info->num_tids_per_block) * info->size);
 421}
 422
 423static inline void qedf_stop_all_io(struct qedf_ctx *qedf)
 424{
 425        set_bit(QEDF_DBG_STOP_IO, &qedf->flags);
 426}
 427
 428/*
 429 * Externs
 430 */
 431#define QEDF_DEFAULT_LOG_MASK           0x3CFB6
 432extern const struct qed_fcoe_ops *qed_ops;
 433extern uint qedf_dump_frames;
 434extern uint qedf_io_tracing;
 435extern uint qedf_stop_io_on_error;
 436extern uint qedf_link_down_tmo;
 437#define QEDF_RETRY_DELAY_MAX            20 /* 2 seconds */
 438extern bool qedf_retry_delay;
 439extern uint qedf_debug;
 440
 441extern struct qedf_cmd_mgr *qedf_cmd_mgr_alloc(struct qedf_ctx *qedf);
 442extern void qedf_cmd_mgr_free(struct qedf_cmd_mgr *cmgr);
 443extern int qedf_queuecommand(struct Scsi_Host *host,
 444        struct scsi_cmnd *sc_cmd);
 445extern void qedf_fip_send(struct fcoe_ctlr *fip, struct sk_buff *skb);
 446extern void qedf_update_src_mac(struct fc_lport *lport, u8 *addr);
 447extern u8 *qedf_get_src_mac(struct fc_lport *lport);
 448extern void qedf_fip_recv(struct qedf_ctx *qedf, struct sk_buff *skb);
 449extern void qedf_fcoe_send_vlan_req(struct qedf_ctx *qedf);
 450extern void qedf_scsi_completion(struct qedf_ctx *qedf, struct fcoe_cqe *cqe,
 451        struct qedf_ioreq *io_req);
 452extern void qedf_process_warning_compl(struct qedf_ctx *qedf,
 453        struct fcoe_cqe *cqe, struct qedf_ioreq *io_req);
 454extern void qedf_process_error_detect(struct qedf_ctx *qedf,
 455        struct fcoe_cqe *cqe, struct qedf_ioreq *io_req);
 456extern void qedf_flush_active_ios(struct qedf_rport *fcport, int lun);
 457extern void qedf_release_cmd(struct kref *ref);
 458extern int qedf_initiate_abts(struct qedf_ioreq *io_req,
 459        bool return_scsi_cmd_on_abts);
 460extern void qedf_process_abts_compl(struct qedf_ctx *qedf, struct fcoe_cqe *cqe,
 461        struct qedf_ioreq *io_req);
 462extern struct qedf_ioreq *qedf_alloc_cmd(struct qedf_rport *fcport,
 463        u8 cmd_type);
 464
 465extern struct device_attribute *qedf_host_attrs[];
 466extern void qedf_cmd_timer_set(struct qedf_ctx *qedf, struct qedf_ioreq *io_req,
 467        unsigned int timer_msec);
 468extern int qedf_init_mp_req(struct qedf_ioreq *io_req);
 469extern void qedf_init_mp_task(struct qedf_ioreq *io_req,
 470        struct fcoe_task_context *task_ctx, struct fcoe_wqe *wqe);
 471extern u16 qedf_get_sqe_idx(struct qedf_rport *fcport);
 472extern void qedf_ring_doorbell(struct qedf_rport *fcport);
 473extern void qedf_process_els_compl(struct qedf_ctx *qedf, struct fcoe_cqe *cqe,
 474        struct qedf_ioreq *els_req);
 475extern int qedf_send_rrq(struct qedf_ioreq *aborted_io_req);
 476extern int qedf_send_adisc(struct qedf_rport *fcport, struct fc_frame *fp);
 477extern int qedf_initiate_cleanup(struct qedf_ioreq *io_req,
 478        bool return_scsi_cmd_on_abts);
 479extern void qedf_process_cleanup_compl(struct qedf_ctx *qedf,
 480        struct fcoe_cqe *cqe, struct qedf_ioreq *io_req);
 481extern int qedf_initiate_tmf(struct scsi_cmnd *sc_cmd, u8 tm_flags);
 482extern void qedf_process_tmf_compl(struct qedf_ctx *qedf, struct fcoe_cqe *cqe,
 483        struct qedf_ioreq *io_req);
 484extern void qedf_process_cqe(struct qedf_ctx *qedf, struct fcoe_cqe *cqe);
 485extern void qedf_scsi_done(struct qedf_ctx *qedf, struct qedf_ioreq *io_req,
 486        int result);
 487extern void qedf_set_vlan_id(struct qedf_ctx *qedf, int vlan_id);
 488extern void qedf_create_sysfs_ctx_attr(struct qedf_ctx *qedf);
 489extern void qedf_remove_sysfs_ctx_attr(struct qedf_ctx *qedf);
 490extern void qedf_capture_grc_dump(struct qedf_ctx *qedf);
 491extern void qedf_wait_for_upload(struct qedf_ctx *qedf);
 492extern void qedf_process_unsol_compl(struct qedf_ctx *qedf, uint16_t que_idx,
 493        struct fcoe_cqe *cqe);
 494extern void qedf_restart_rport(struct qedf_rport *fcport);
 495extern int qedf_send_rec(struct qedf_ioreq *orig_io_req);
 496extern int qedf_post_io_req(struct qedf_rport *fcport,
 497        struct qedf_ioreq *io_req);
 498extern void qedf_process_seq_cleanup_compl(struct qedf_ctx *qedf,
 499        struct fcoe_cqe *cqe, struct qedf_ioreq *io_req);
 500extern int qedf_send_flogi(struct qedf_ctx *qedf);
 501extern void qedf_fp_io_handler(struct work_struct *work);
 502
 503#define FCOE_WORD_TO_BYTE  4
 504#define QEDF_MAX_TASK_NUM       0xFFFF
 505
 506struct fip_vlan {
 507        struct ethhdr eth;
 508        struct fip_header fip;
 509        struct {
 510                struct fip_mac_desc mac;
 511                struct fip_wwn_desc wwnn;
 512        } desc;
 513};
 514
 515/* SQ/CQ Sizes */
 516#define GBL_RSVD_TASKS                  16
 517#define NUM_TASKS_PER_CONNECTION        1024
 518#define NUM_RW_TASKS_PER_CONNECTION     512
 519#define FCOE_PARAMS_CQ_NUM_ENTRIES      FCOE_PARAMS_NUM_TASKS
 520
 521#define FCOE_PARAMS_CMDQ_NUM_ENTRIES    FCOE_PARAMS_NUM_TASKS
 522#define SQ_NUM_ENTRIES                  NUM_TASKS_PER_CONNECTION
 523
 524#define QEDF_FCOE_PARAMS_GL_RQ_PI              0
 525#define QEDF_FCOE_PARAMS_GL_CMD_PI             1
 526
 527#define QEDF_READ                     (1 << 1)
 528#define QEDF_WRITE                    (1 << 0)
 529#define MAX_FIBRE_LUNS                  0xffffffff
 530
 531#define QEDF_MAX_NUM_CQS                8
 532
 533/*
 534 * PCI function probe defines
 535 */
 536/* Probe/remove called during normal PCI probe */
 537#define QEDF_MODE_NORMAL                0
 538/* Probe/remove called from qed error recovery */
 539#define QEDF_MODE_RECOVERY              1
 540
 541#define SUPPORTED_25000baseKR_Full    (1<<27)
 542#define SUPPORTED_50000baseKR2_Full   (1<<28)
 543#define SUPPORTED_100000baseKR4_Full  (1<<29)
 544#define SUPPORTED_100000baseCR4_Full  (1<<30)
 545
 546#endif
 547