This article also can be used for other cards with little or without change

Check if the host has HBA card installed and which type of card installed, 

# lspci | grep -i fibre
15:00.0 Fibre Channel: QLogic Corp. ISP2532-based 8Gb Fibre Channel to PCI Express HBA (rev 02)
15:00.1 Fibre Channel: QLogic Corp. ISP2532-based 8Gb Fibre Channel to PCI Express HBA (rev 02)

physical slot, driver, module information

# lspci -v -s 15:00.0
15:00.0 Fibre Channel: QLogic Corp. ISP2532-based 8Gb Fibre Channel to PCI Express HBA (rev 02)
    Subsystem: QLogic Corp. Device 015d
    Physical Slot: 2
    Flags: bus master, fast devsel, latency 0, IRQ 24
    I/O ports at 2200 [size=256]
    Memory at 97b00000 (64-bit, non-prefetchable) [size=16K]
    Expansion ROM at 90000000 [disabled] [size=256K]
    Capabilities: [44] Power Management version 3
    Capabilities: [4c] Express Endpoint, MSI 00
    Capabilities: [88] MSI: Enable- Count=1/32 Maskable- 64bit+
    Capabilities: [98] Vital Product Data
    Capabilities: [a0] MSI-X: Enable+ Count=2 Masked-
    Capabilities: [100] Advanced Error Reporting
    Capabilities: [138] Power Budgeting <?>
    Kernel driver in use: qla2xxx
    Kernel modules: qla2xxx

Here is another example Emulex Card

# lspci -v -s 10:00.0
10:00.0 Fibre Channel: Emulex Corporation Zephyr-X LightPulse Fibre Channel Host Adapter (rev 02)
    Subsystem: Emulex Corporation Zephyr-X LightPulse Fibre Channel Host Adapter
    Physical Slot: 2
    Flags: bus master, fast devsel, latency 0, IRQ 26
    Memory at c7eff000 (64-bit, non-prefetchable) [size=4K]
    Memory at c7efec00 (64-bit, non-prefetchable) [size=256]
    I/O ports at 6000 [size=256]
    [virtual] Expansion ROM at c0000000 [disabled] [size=256K]
    Capabilities: [58] Power Management version 2
    Capabilities: [60] MSI: Enable+ Count=1/16 Maskable- 64bit+
    Capabilities: [44] Express Endpoint, MSI 00
    Capabilities: [100] Advanced Error Reporting
    Capabilities: [12c] Power Budgeting <?>
    Kernel driver in use: lpfc
    Kernel modules: lpfc

Check if the driver/module loaded in kernel.

# lsmod | grep qla2xxx
qla2xxx               425817  288
scsi_transport_fc      55299  1 qla2xxx

Check HBA author info

# modinfo -a qla2xxx
QLogic Corporation

Check HBA description

# modinfo -d qla2xxx
QLogic Fibre Channel HBA Driver

Check module file name

# modinfo -n qla2xxx
/lib/modules/2.6.32-358.14.1.el6.x86_64/kernel/drivers/scsi/qla2xxx/qla2xxx.ko

Check HBA driver license,

# modinfo -l qla2xxx
GPL

Check HBA driver and its version

# modinfo -d qla2xxx
QLogic Fibre Channel HBA Driver
# modinfo qla2xxx | grep version
version:        8.04.00.08.06.4-k

Check if the running driver is same with kernel one

# modinfo -k `uname -r` -n qla2xxx
/lib/modules/2.6.32-358.14.1.el6.x86_64/kernel/drivers/scsi/qla2xxx/qla2xxx.ko

Further Steps

If you want to upgrade/downgrade driver, download the driver first, read README, then do following steps before upgrade/downgrade

Remove current module/driver

you will see that you have to remove all dependent devices/modules first

# modprobe -r qla2xxx
FATAL: Module qla2xxx is in use.

Show dependent devices/modules

# modprobe --show-depends qla2xxx
insmod /lib/modules/2.6.32-358.14.1.el6.x86_64/kernel/drivers/scsi/scsi_tgt.ko
insmod /lib/modules/2.6.32-358.14.1.el6.x86_64/kernel/drivers/scsi/scsi_transport_fc.ko
insmod /lib/modules/2.6.32-358.14.1.el6.x86_64/kernel/drivers/scsi/qla2xxx/qla2xxx.ko

Then, try to remove scsi_tgt

# modprobe -r scsi_tgt
FATAL: Module scsi_tgt is in use.

The error above shows that the device is being used, which means probably there are some devices are connected via Fibre, so stop all application/filesystem which using them, then remove them from system. You can use scsi hot plug/unplug(in the article check and list luns attached to HBA  ), or disconnect Fibre connection with devices then have a host reboot(I don't like this way).
Once you are done, remove scsi_tgt, then scsi_transpot_fc, followed by qla2xxx.

Follow instruction and install the driver

Make sure .ko file is in kernel module, you may need to reboot the node.

Check if the version is new

# modinfo qla2xxx | grep version
version:        8.04.00.08.06.4-k

Note:

       modprobe intelligently adds or removes a module from the Linux kernel: note that for convenience, there is no difference between _ and
       - in module names.  modprobe looks in the module directory /lib/modules/'uname -r' for all the modules and other files, except for the
       optional /etc/modprobe.conf configuration file and /etc/modprobe.d directory (see modprobe.conf(5)). modprobe  will  also  use  module
       options specified on the kernel command line in the form of <module>.<option>.