Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Enumerations | Functions | Variables
fnic.h File Reference
#include <linux/interrupt.h>
#include <linux/netdevice.h>
#include <linux/workqueue.h>
#include <linux/bitops.h>
#include <scsi/libfc.h>
#include <scsi/libfcoe.h>
#include "fnic_io.h"
#include "fnic_res.h"
#include "vnic_dev.h"
#include "vnic_wq.h"
#include "vnic_rq.h"
#include "vnic_cq.h"
#include "vnic_wq_copy.h"
#include "vnic_intr.h"
#include "vnic_stats.h"
#include "vnic_scsi.h"

Go to the source code of this file.

Data Structures

struct  fnic_msix_entry
 
struct  fnic
 

Macros

#define DRV_NAME   "fnic"
 
#define DRV_DESCRIPTION   "Cisco FCoE HBA Driver"
 
#define DRV_VERSION   "1.5.0.2"
 
#define PFX   DRV_NAME ": "
 
#define DFX   DRV_NAME "%d: "
 
#define DESC_CLEAN_LOW_WATERMARK   8
 
#define FNIC_MAX_IO_REQ   2048 /* scsi_cmnd tag map entries */
 
#define FNIC_IO_LOCKS   64 /* IO locks: power of 2 */
 
#define FNIC_DFLT_QUEUE_DEPTH   32
 
#define FNIC_STATS_RATE_LIMIT   4 /* limit rate at which stats are pulled up */
 
#define FNIC_TAG_ABORT   BIT(30) /* tag bit indicating abort */
 
#define FNIC_TAG_DEV_RST   BIT(29) /* indicates device reset */
 
#define FNIC_TAG_MASK   (BIT(24) - 1) /* mask for lookup */
 
#define FNIC_NO_TAG   -1
 
#define CMD_SP(Cmnd)   ((Cmnd)->SCp.ptr)
 
#define CMD_STATE(Cmnd)   ((Cmnd)->SCp.phase)
 
#define CMD_ABTS_STATUS(Cmnd)   ((Cmnd)->SCp.Message)
 
#define CMD_LR_STATUS(Cmnd)   ((Cmnd)->SCp.have_data_in)
 
#define CMD_TAG(Cmnd)   ((Cmnd)->SCp.sent_command)
 
#define FCPIO_INVALID_CODE   0x100 /* hdr_status value unused by firmware */
 
#define FNIC_LUN_RESET_TIMEOUT   10000 /* mSec */
 
#define FNIC_HOST_RESET_TIMEOUT   10000 /* mSec */
 
#define FNIC_RMDEVICE_TIMEOUT   1000 /* mSec */
 
#define FNIC_HOST_RESET_SETTLE_TIME   30 /* Sec */
 
#define FNIC_MAX_FCP_TARGET   256
 
#define FNIC_MAIN_LOGGING   0x01
 
#define FNIC_FCS_LOGGING   0x02
 
#define FNIC_SCSI_LOGGING   0x04
 
#define FNIC_ISR_LOGGING   0x08
 
#define FNIC_CHECK_LOGGING(LEVEL, CMD)
 
#define FNIC_MAIN_DBG(kern_level, host, fmt, args...)
 
#define FNIC_FCS_DBG(kern_level, host, fmt, args...)
 
#define FNIC_SCSI_DBG(kern_level, host, fmt, args...)
 
#define FNIC_ISR_DBG(kern_level, host, fmt, args...)
 
#define FNIC_WQ_COPY_MAX   1
 
#define FNIC_WQ_MAX   1
 
#define FNIC_RQ_MAX   1
 
#define FNIC_CQ_MAX   (FNIC_WQ_COPY_MAX + FNIC_WQ_MAX + FNIC_RQ_MAX)
 

Enumerations

enum  fnic_intx_intr_index { FNIC_INTX_WQ_RQ_COPYWQ, FNIC_INTX_ERR, FNIC_INTX_NOTIFY, FNIC_INTX_INTR_MAX }
 
enum  fnic_msix_intr_index {
  FNIC_MSIX_RQ, FNIC_MSIX_WQ, FNIC_MSIX_WQ_COPY, FNIC_MSIX_ERR_NOTIFY,
  FNIC_MSIX_INTR_MAX
}
 
enum  fnic_state { FNIC_IN_FC_MODE = 0, FNIC_IN_FC_TRANS_ETH_MODE, FNIC_IN_ETH_MODE, FNIC_IN_ETH_TRANS_FC_MODE }
 

Functions

void fnic_clear_intr_mode (struct fnic *fnic)
 
int fnic_set_intr_mode (struct fnic *fnic)
 
void fnic_free_intr (struct fnic *fnic)
 
int fnic_request_intr (struct fnic *fnic)
 
int fnic_send (struct fc_lport *, struct fc_frame *)
 
void fnic_free_wq_buf (struct vnic_wq *wq, struct vnic_wq_buf *buf)
 
void fnic_handle_frame (struct work_struct *work)
 
void fnic_handle_link (struct work_struct *work)
 
int fnic_rq_cmpl_handler (struct fnic *fnic, int)
 
int fnic_alloc_rq_frame (struct vnic_rq *rq)
 
void fnic_free_rq_buf (struct vnic_rq *rq, struct vnic_rq_buf *buf)
 
void fnic_flush_tx (struct fnic *)
 
void fnic_eth_send (struct fcoe_ctlr *, struct sk_buff *skb)
 
void fnic_set_port_id (struct fc_lport *, u32, struct fc_frame *)
 
void fnic_update_mac (struct fc_lport *, u8 *new)
 
void fnic_update_mac_locked (struct fnic *, u8 *new)
 
int fnic_queuecommand (struct Scsi_Host *, struct scsi_cmnd *)
 
int fnic_abort_cmd (struct scsi_cmnd *)
 
int fnic_device_reset (struct scsi_cmnd *)
 
int fnic_host_reset (struct scsi_cmnd *)
 
int fnic_reset (struct Scsi_Host *)
 
void fnic_scsi_cleanup (struct fc_lport *)
 
void fnic_scsi_abort_io (struct fc_lport *)
 
void fnic_empty_scsi_cleanup (struct fc_lport *)
 
void fnic_exch_mgr_reset (struct fc_lport *, u32, u32)
 
int fnic_wq_copy_cmpl_handler (struct fnic *fnic, int)
 
int fnic_wq_cmpl_handler (struct fnic *fnic, int)
 
int fnic_flogi_reg_handler (struct fnic *fnic, u32)
 
void fnic_wq_copy_cleanup_handler (struct vnic_wq_copy *wq, struct fcpio_host_req *desc)
 
int fnic_fw_reset_handler (struct fnic *fnic)
 
void fnic_terminate_rport_io (struct fc_rport *)
 
const charfnic_state_to_str (unsigned int state)
 
void fnic_log_q_error (struct fnic *fnic)
 
void fnic_handle_link_event (struct fnic *fnic)
 

Variables

unsigned int fnic_log_level
 
const charfnic_state_str []
 
struct workqueue_structfnic_event_queue
 
struct device_attributefnic_attrs []
 

Macro Definition Documentation

#define CMD_ABTS_STATUS (   Cmnd)    ((Cmnd)->SCp.Message)

Definition at line 64 of file fnic.h.

#define CMD_LR_STATUS (   Cmnd)    ((Cmnd)->SCp.have_data_in)

Definition at line 65 of file fnic.h.

#define CMD_SP (   Cmnd)    ((Cmnd)->SCp.ptr)

Definition at line 62 of file fnic.h.

#define CMD_STATE (   Cmnd)    ((Cmnd)->SCp.phase)

Definition at line 63 of file fnic.h.

#define CMD_TAG (   Cmnd)    ((Cmnd)->SCp.sent_command)

Definition at line 66 of file fnic.h.

#define DESC_CLEAN_LOW_WATERMARK   8

Definition at line 44 of file fnic.h.

#define DFX   DRV_NAME "%d: "

Definition at line 42 of file fnic.h.

#define DRV_DESCRIPTION   "Cisco FCoE HBA Driver"

Definition at line 39 of file fnic.h.

#define DRV_NAME   "fnic"

Definition at line 38 of file fnic.h.

#define DRV_VERSION   "1.5.0.2"

Definition at line 40 of file fnic.h.

#define FCPIO_INVALID_CODE   0x100 /* hdr_status value unused by firmware */

Definition at line 68 of file fnic.h.

#define FNIC_CHECK_LOGGING (   LEVEL,
  CMD 
)
Value:
do { \
do { \
CMD; \
} while (0); \
} while (0)

Definition at line 84 of file fnic.h.

#define FNIC_CQ_MAX   (FNIC_WQ_COPY_MAX + FNIC_WQ_MAX + FNIC_RQ_MAX)

Definition at line 142 of file fnic.h.

#define FNIC_DFLT_QUEUE_DEPTH   32

Definition at line 47 of file fnic.h.

#define FNIC_FCS_DBG (   kern_level,
  host,
  fmt,
  args... 
)
Value:

Definition at line 96 of file fnic.h.

#define FNIC_FCS_LOGGING   0x02

Definition at line 80 of file fnic.h.

#define FNIC_HOST_RESET_SETTLE_TIME   30 /* Sec */

Definition at line 73 of file fnic.h.

#define FNIC_HOST_RESET_TIMEOUT   10000 /* mSec */

Definition at line 71 of file fnic.h.

#define FNIC_IO_LOCKS   64 /* IO locks: power of 2 */

Definition at line 46 of file fnic.h.

#define FNIC_ISR_DBG (   kern_level,
  host,
  fmt,
  args... 
)
Value:

Definition at line 104 of file fnic.h.

#define FNIC_ISR_LOGGING   0x08

Definition at line 82 of file fnic.h.

#define FNIC_LUN_RESET_TIMEOUT   10000 /* mSec */

Definition at line 70 of file fnic.h.

#define FNIC_MAIN_DBG (   kern_level,
  host,
  fmt,
  args... 
)
Value:

Definition at line 92 of file fnic.h.

#define FNIC_MAIN_LOGGING   0x01

Definition at line 79 of file fnic.h.

#define FNIC_MAX_FCP_TARGET   256

Definition at line 75 of file fnic.h.

#define FNIC_MAX_IO_REQ   2048 /* scsi_cmnd tag map entries */

Definition at line 45 of file fnic.h.

#define FNIC_NO_TAG   -1

Definition at line 56 of file fnic.h.

#define FNIC_RMDEVICE_TIMEOUT   1000 /* mSec */

Definition at line 72 of file fnic.h.

#define FNIC_RQ_MAX   1

Definition at line 141 of file fnic.h.

#define FNIC_SCSI_DBG (   kern_level,
  host,
  fmt,
  args... 
)
Value:

Definition at line 100 of file fnic.h.

#define FNIC_SCSI_LOGGING   0x04

Definition at line 81 of file fnic.h.

#define FNIC_STATS_RATE_LIMIT   4 /* limit rate at which stats are pulled up */

Definition at line 48 of file fnic.h.

#define FNIC_TAG_ABORT   BIT(30) /* tag bit indicating abort */

Definition at line 53 of file fnic.h.

#define FNIC_TAG_DEV_RST   BIT(29) /* indicates device reset */

Definition at line 54 of file fnic.h.

#define FNIC_TAG_MASK   (BIT(24) - 1) /* mask for lookup */

Definition at line 55 of file fnic.h.

#define FNIC_WQ_COPY_MAX   1

Definition at line 139 of file fnic.h.

#define FNIC_WQ_MAX   1

Definition at line 140 of file fnic.h.

#define PFX   DRV_NAME ": "

Definition at line 41 of file fnic.h.

Enumeration Type Documentation

Enumerator:
FNIC_INTX_WQ_RQ_COPYWQ 
FNIC_INTX_ERR 
FNIC_INTX_NOTIFY 
FNIC_INTX_INTR_MAX 

Definition at line 110 of file fnic.h.

Enumerator:
FNIC_MSIX_RQ 
FNIC_MSIX_WQ 
FNIC_MSIX_WQ_COPY 
FNIC_MSIX_ERR_NOTIFY 
FNIC_MSIX_INTR_MAX 

Definition at line 117 of file fnic.h.

enum fnic_state
Enumerator:
FNIC_IN_FC_MODE 
FNIC_IN_FC_TRANS_ETH_MODE 
FNIC_IN_ETH_MODE 
FNIC_IN_ETH_TRANS_FC_MODE 

Definition at line 132 of file fnic.h.

Function Documentation

int fnic_abort_cmd ( struct scsi_cmnd )

Definition at line 1231 of file fnic_scsi.c.

int fnic_alloc_rq_frame ( struct vnic_rq rq)

Definition at line 428 of file fnic_fcs.c.

void fnic_clear_intr_mode ( struct fnic fnic)

Definition at line 317 of file fnic_isr.c.

int fnic_device_reset ( struct scsi_cmnd )

Definition at line 1510 of file fnic_scsi.c.

void fnic_empty_scsi_cleanup ( struct fc_lport )

Definition at line 1794 of file fnic_scsi.c.

void fnic_eth_send ( struct fcoe_ctlr fip,
struct sk_buff skb 
)

fnic_eth_send() - Send Ethernet frame. : fcoe_ctlr instance. : Ethernet Frame, FIP, without VLAN encapsulation.

Definition at line 468 of file fnic_fcs.c.

void fnic_exch_mgr_reset ( struct fc_lport ,
u32  ,
u32   
)

Definition at line 1798 of file fnic_scsi.c.

int fnic_flogi_reg_handler ( struct fnic fnic,
u32   
)

Definition at line 207 of file fnic_scsi.c.

void fnic_flush_tx ( struct fnic fnic)

fnic_flush_tx() - send queued frames. : fnic device

Send frames that were waiting to go out in FC or Ethernet mode. Whenever changing modes we purge queued frames, so these frames should be queued for the stable mode that we're in, either FC or Ethernet.

Called without fnic_lock held.

Definition at line 615 of file fnic_fcs.c.

void fnic_free_intr ( struct fnic fnic)

Definition at line 132 of file fnic_isr.c.

void fnic_free_rq_buf ( struct vnic_rq rq,
struct vnic_rq_buf buf 
)

Definition at line 451 of file fnic_fcs.c.

void fnic_free_wq_buf ( struct vnic_wq wq,
struct vnic_wq_buf buf 
)

Definition at line 710 of file fnic_fcs.c.

int fnic_fw_reset_handler ( struct fnic fnic)

Definition at line 172 of file fnic_scsi.c.

void fnic_handle_frame ( struct work_struct work)

Definition at line 97 of file fnic_fcs.c.

void fnic_handle_link ( struct work_struct work)

Definition at line 41 of file fnic_fcs.c.

void fnic_handle_link_event ( struct fnic fnic)

Definition at line 241 of file fnic_main.c.

int fnic_host_reset ( struct scsi_cmnd )

Definition at line 1697 of file fnic_scsi.c.

void fnic_log_q_error ( struct fnic fnic)

Definition at line 211 of file fnic_main.c.

int fnic_queuecommand ( struct Scsi_Host ,
struct scsi_cmnd  
)
int fnic_request_intr ( struct fnic fnic)

Definition at line 154 of file fnic_isr.c.

int fnic_reset ( struct Scsi_Host )

Definition at line 1661 of file fnic_scsi.c.

int fnic_rq_cmpl_handler ( struct fnic fnic,
int   
)

Definition at line 400 of file fnic_fcs.c.

void fnic_scsi_abort_io ( struct fc_lport )

Definition at line 1729 of file fnic_scsi.c.

void fnic_scsi_cleanup ( struct fc_lport )

Definition at line 1772 of file fnic_scsi.c.

int fnic_send ( struct fc_lport ,
struct fc_frame  
)

Definition at line 580 of file fnic_fcs.c.

int fnic_set_intr_mode ( struct fnic fnic)

Definition at line 217 of file fnic_isr.c.

void fnic_set_port_id ( struct fc_lport lport,
u32  port_id,
struct fc_frame fp 
)

fnic_set_port_id() - set the port_ID after successful FLOGI. : local port. : assigned FC_ID. : received frame containing the FLOGI accept or NULL.

This is called from libfc when a new FC_ID has been assigned. This causes us to reset the firmware to FC_MODE and setup the new MAC address and FC_ID.

It is also called with FC_ID 0 when we're logged off.

If the FC_ID is due to point-to-point, fp may be NULL.

Definition at line 233 of file fnic_fcs.c.

const char* fnic_state_to_str ( unsigned int  state)

Definition at line 78 of file fnic_scsi.c.

void fnic_terminate_rport_io ( struct fc_rport )

Definition at line 1141 of file fnic_scsi.c.

void fnic_update_mac ( struct fc_lport lport,
u8 new 
)

fnic_update_mac() - set data MAC address and filters. : local port. : newly-assigned FCoE MAC address.

Definition at line 210 of file fnic_fcs.c.

void fnic_update_mac_locked ( struct fnic fnic,
u8 new 
)

fnic_update_mac_locked() - set data MAC address and filters. : fnic instance. : newly-assigned FCoE MAC address.

Called with the fnic lock held.

Definition at line 188 of file fnic_fcs.c.

int fnic_wq_cmpl_handler ( struct fnic fnic,
int   
)

Definition at line 694 of file fnic_fcs.c.

void fnic_wq_copy_cleanup_handler ( struct vnic_wq_copy wq,
struct fcpio_host_req desc 
)

Definition at line 992 of file fnic_scsi.c.

int fnic_wq_copy_cmpl_handler ( struct fnic fnic,
int   
)

Definition at line 930 of file fnic_scsi.c.

Variable Documentation

struct device_attribute* fnic_attrs[]

Definition at line 51 of file fnic_attrs.c.

struct workqueue_struct* fnic_event_queue

Definition at line 37 of file fnic_fcs.c.

unsigned int fnic_log_level

Definition at line 67 of file fnic_main.c.

const char* fnic_state_str[]

Definition at line 42 of file fnic_scsi.c.