mirror of
https://github.com/suyu-emu/horinux.git
synced 2026-09-21 14:15:21 -07:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (145 commits) bnx2x: use pci_pcie_cap() bnx2x: fix bnx2x_stop_on_error flow in bnx2x_sp_rtnl_task bnx2x: enable internal target-read for 57712 and up only bnx2x: count statistic ramrods on EQ to prevent MC assert bnx2x: fix loopback for non 10G link bnx2x: dcb - send all unmapped priorities to same COS as L2 iwlwifi: Fix build with CONFIG_PM disabled. gre: fix improper error handling ipv4: use RT_TOS after some rt_tos conversions via-velocity: remove duplicated #include qlge: remove duplicated #include igb: remove duplicated #include can: c_can: remove duplicated #include bnad: remove duplicated #include net: allow netif_carrier to be called safely from IRQ bna: Header File Consolidation bna: HW Error Counter Fix bna: Add HW Semaphore Unlock Logic bna: IOC Event Name Change bna: Mboxq Flush When IOC Disabled ...
This commit is contained in:
+8
-2
@@ -4106,6 +4106,12 @@ S: Maintained
|
||||
F: drivers/net/mv643xx_eth.*
|
||||
F: include/linux/mv643xx.h
|
||||
|
||||
MARVELL MWIFIEX WIRELESS DRIVER
|
||||
M: Bing Zhao <bzhao@marvell.com>
|
||||
L: linux-wireless@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/net/wireless/mwifiex/
|
||||
|
||||
MARVELL MWL8K WIRELESS DRIVER
|
||||
M: Lennert Buytenhek <buytenh@wantstofly.org>
|
||||
L: linux-wireless@vger.kernel.org
|
||||
@@ -6972,9 +6978,9 @@ S: Maintained
|
||||
F: drivers/input/misc/wistron_btns.c
|
||||
|
||||
WL1251 WIRELESS DRIVER
|
||||
M: Kalle Valo <kvalo@adurom.com>
|
||||
M: Luciano Coelho <coelho@ti.com>
|
||||
L: linux-wireless@vger.kernel.org
|
||||
W: http://wireless.kernel.org
|
||||
W: http://wireless.kernel.org/en/users/Drivers/wl1251
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
|
||||
S: Maintained
|
||||
F: drivers/net/wireless/wl1251/*
|
||||
|
||||
@@ -50,3 +50,75 @@ int bcma_core_enable(struct bcma_device *core, u32 flags)
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(bcma_core_enable);
|
||||
|
||||
void bcma_core_set_clockmode(struct bcma_device *core,
|
||||
enum bcma_clkmode clkmode)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
WARN_ON(core->id.id != BCMA_CORE_CHIPCOMMON &&
|
||||
core->id.id != BCMA_CORE_PCIE &&
|
||||
core->id.id != BCMA_CORE_80211);
|
||||
|
||||
switch (clkmode) {
|
||||
case BCMA_CLKMODE_FAST:
|
||||
bcma_set32(core, BCMA_CLKCTLST, BCMA_CLKCTLST_FORCEHT);
|
||||
udelay(64);
|
||||
for (i = 0; i < 1500; i++) {
|
||||
if (bcma_read32(core, BCMA_CLKCTLST) &
|
||||
BCMA_CLKCTLST_HAVEHT) {
|
||||
i = 0;
|
||||
break;
|
||||
}
|
||||
udelay(10);
|
||||
}
|
||||
if (i)
|
||||
pr_err("HT force timeout\n");
|
||||
break;
|
||||
case BCMA_CLKMODE_DYNAMIC:
|
||||
pr_warn("Dynamic clockmode not supported yet!\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(bcma_core_set_clockmode);
|
||||
|
||||
void bcma_core_pll_ctl(struct bcma_device *core, u32 req, u32 status, bool on)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
WARN_ON(req & ~BCMA_CLKCTLST_EXTRESREQ);
|
||||
WARN_ON(status & ~BCMA_CLKCTLST_EXTRESST);
|
||||
|
||||
if (on) {
|
||||
bcma_set32(core, BCMA_CLKCTLST, req);
|
||||
for (i = 0; i < 10000; i++) {
|
||||
if ((bcma_read32(core, BCMA_CLKCTLST) & status) ==
|
||||
status) {
|
||||
i = 0;
|
||||
break;
|
||||
}
|
||||
udelay(10);
|
||||
}
|
||||
if (i)
|
||||
pr_err("PLL enable timeout\n");
|
||||
} else {
|
||||
pr_warn("Disabling PLL not supported yet!\n");
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(bcma_core_pll_ctl);
|
||||
|
||||
u32 bcma_core_dma_translation(struct bcma_device *core)
|
||||
{
|
||||
switch (core->bus->hosttype) {
|
||||
case BCMA_HOSTTYPE_PCI:
|
||||
if (bcma_aread32(core, BCMA_IOST) & BCMA_IOST_DMA64)
|
||||
return BCMA_DMA_TRANSLATION_DMA64_CMT;
|
||||
else
|
||||
return BCMA_DMA_TRANSLATION_DMA32_CMT;
|
||||
default:
|
||||
pr_err("DMA translation unknown for host %d\n",
|
||||
core->bus->hosttype);
|
||||
}
|
||||
return BCMA_DMA_TRANSLATION_NONE;
|
||||
}
|
||||
EXPORT_SYMBOL(bcma_core_dma_translation);
|
||||
|
||||
@@ -23,6 +23,9 @@ static inline u32 bcma_cc_write32_masked(struct bcma_drv_cc *cc, u16 offset,
|
||||
|
||||
void bcma_core_chipcommon_init(struct bcma_drv_cc *cc)
|
||||
{
|
||||
u32 leddc_on = 10;
|
||||
u32 leddc_off = 90;
|
||||
|
||||
if (cc->core->id.rev >= 11)
|
||||
cc->status = bcma_cc_read32(cc, BCMA_CC_CHIPSTAT);
|
||||
cc->capabilities = bcma_cc_read32(cc, BCMA_CC_CAP);
|
||||
@@ -38,6 +41,17 @@ void bcma_core_chipcommon_init(struct bcma_drv_cc *cc)
|
||||
bcma_pmu_init(cc);
|
||||
if (cc->capabilities & BCMA_CC_CAP_PCTL)
|
||||
pr_err("Power control not implemented!\n");
|
||||
|
||||
if (cc->core->id.rev >= 16) {
|
||||
if (cc->core->bus->sprom.leddc_on_time &&
|
||||
cc->core->bus->sprom.leddc_off_time) {
|
||||
leddc_on = cc->core->bus->sprom.leddc_on_time;
|
||||
leddc_off = cc->core->bus->sprom.leddc_off_time;
|
||||
}
|
||||
bcma_cc_write32(cc, BCMA_CC_GPIOTIMER,
|
||||
((leddc_on << BCMA_CC_GPIOTIMER_ONTIME_SHIFT) |
|
||||
(leddc_off << BCMA_CC_GPIOTIMER_OFFTIME_SHIFT)));
|
||||
}
|
||||
}
|
||||
|
||||
/* Set chip watchdog reset timer to fire in 'ticks' backplane cycles */
|
||||
|
||||
@@ -172,8 +172,10 @@ static bool bcma_core_pci_is_in_hostmode(struct bcma_drv_pci *pc)
|
||||
chipid_top != 0x5300)
|
||||
return false;
|
||||
|
||||
#ifdef CONFIG_SSB_DRIVER_PCICORE
|
||||
if (bus->sprom.boardflags_lo & SSB_PCICORE_BFL_NOPCI)
|
||||
return false;
|
||||
#endif /* CONFIG_SSB_DRIVER_PCICORE */
|
||||
|
||||
#if 0
|
||||
/* TODO: on BCMA we use address from EROM instead of magic formula */
|
||||
|
||||
+10
-4
@@ -20,12 +20,12 @@
|
||||
* R/W ops.
|
||||
**************************************************/
|
||||
|
||||
static void bcma_sprom_read(struct bcma_bus *bus, u16 *sprom)
|
||||
static void bcma_sprom_read(struct bcma_bus *bus, u16 offset, u16 *sprom)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < SSB_SPROMSIZE_WORDS_R4; i++)
|
||||
sprom[i] = bcma_read16(bus->drv_cc.core,
|
||||
BCMA_CC_SPROM + (i * 2));
|
||||
offset + (i * 2));
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
@@ -112,7 +112,7 @@ static int bcma_sprom_valid(const u16 *sprom)
|
||||
return err;
|
||||
|
||||
revision = sprom[SSB_SPROMSIZE_WORDS_R4 - 1] & SSB_SPROM_REVISION_REV;
|
||||
if (revision != 8) {
|
||||
if (revision != 8 && revision != 9) {
|
||||
pr_err("Unsupported SPROM revision: %d\n", revision);
|
||||
return -ENOENT;
|
||||
}
|
||||
@@ -137,6 +137,7 @@ static void bcma_sprom_extract_r8(struct bcma_bus *bus, const u16 *sprom)
|
||||
|
||||
int bcma_sprom_get(struct bcma_bus *bus)
|
||||
{
|
||||
u16 offset;
|
||||
u16 *sprom;
|
||||
int err = 0;
|
||||
|
||||
@@ -151,7 +152,12 @@ int bcma_sprom_get(struct bcma_bus *bus)
|
||||
if (!sprom)
|
||||
return -ENOMEM;
|
||||
|
||||
bcma_sprom_read(bus, sprom);
|
||||
/* Most cards have SPROM moved by additional offset 0x30 (48 dwords).
|
||||
* According to brcm80211 this applies to cards with PCIe rev >= 6
|
||||
* TODO: understand this condition and use it */
|
||||
offset = (bus->chipinfo.id == 0x4331) ? BCMA_CC_SPROM :
|
||||
BCMA_CC_SPROM_PCIE6;
|
||||
bcma_sprom_read(bus, offset, sprom);
|
||||
|
||||
err = bcma_sprom_valid(sprom);
|
||||
if (err)
|
||||
|
||||
+39
-26
@@ -223,44 +223,56 @@ bfa_cee_isr(void *cbarg, struct bfi_mbmsg *m)
|
||||
}
|
||||
|
||||
/**
|
||||
* bfa_cee_hbfail()
|
||||
* bfa_cee_notify()
|
||||
*
|
||||
* @brief CEE module heart-beat failure handler.
|
||||
* @brief CEE module IOC event handler.
|
||||
*
|
||||
* @param[in] Pointer to the CEE module data structure.
|
||||
* @param[in] IOC event type
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
|
||||
static void
|
||||
bfa_cee_hbfail(void *arg)
|
||||
bfa_cee_notify(void *arg, enum bfa_ioc_event event)
|
||||
{
|
||||
struct bfa_cee *cee;
|
||||
cee = arg;
|
||||
cee = (struct bfa_cee *) arg;
|
||||
|
||||
if (cee->get_attr_pending == true) {
|
||||
cee->get_attr_status = BFA_STATUS_FAILED;
|
||||
cee->get_attr_pending = false;
|
||||
if (cee->cbfn.get_attr_cbfn) {
|
||||
cee->cbfn.get_attr_cbfn(cee->cbfn.get_attr_cbarg,
|
||||
BFA_STATUS_FAILED);
|
||||
switch (event) {
|
||||
case BFA_IOC_E_DISABLED:
|
||||
case BFA_IOC_E_FAILED:
|
||||
if (cee->get_attr_pending == true) {
|
||||
cee->get_attr_status = BFA_STATUS_FAILED;
|
||||
cee->get_attr_pending = false;
|
||||
if (cee->cbfn.get_attr_cbfn) {
|
||||
cee->cbfn.get_attr_cbfn(
|
||||
cee->cbfn.get_attr_cbarg,
|
||||
BFA_STATUS_FAILED);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (cee->get_stats_pending == true) {
|
||||
cee->get_stats_status = BFA_STATUS_FAILED;
|
||||
cee->get_stats_pending = false;
|
||||
if (cee->cbfn.get_stats_cbfn) {
|
||||
cee->cbfn.get_stats_cbfn(cee->cbfn.get_stats_cbarg,
|
||||
BFA_STATUS_FAILED);
|
||||
if (cee->get_stats_pending == true) {
|
||||
cee->get_stats_status = BFA_STATUS_FAILED;
|
||||
cee->get_stats_pending = false;
|
||||
if (cee->cbfn.get_stats_cbfn) {
|
||||
cee->cbfn.get_stats_cbfn(
|
||||
cee->cbfn.get_stats_cbarg,
|
||||
BFA_STATUS_FAILED);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (cee->reset_stats_pending == true) {
|
||||
cee->reset_stats_status = BFA_STATUS_FAILED;
|
||||
cee->reset_stats_pending = false;
|
||||
if (cee->cbfn.reset_stats_cbfn) {
|
||||
cee->cbfn.reset_stats_cbfn(cee->cbfn.reset_stats_cbarg,
|
||||
BFA_STATUS_FAILED);
|
||||
if (cee->reset_stats_pending == true) {
|
||||
cee->reset_stats_status = BFA_STATUS_FAILED;
|
||||
cee->reset_stats_pending = false;
|
||||
if (cee->cbfn.reset_stats_cbfn) {
|
||||
cee->cbfn.reset_stats_cbfn(
|
||||
cee->cbfn.reset_stats_cbarg,
|
||||
BFA_STATUS_FAILED);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -286,6 +298,7 @@ bfa_nw_cee_attach(struct bfa_cee *cee, struct bfa_ioc *ioc,
|
||||
cee->ioc = ioc;
|
||||
|
||||
bfa_nw_ioc_mbox_regisr(cee->ioc, BFI_MC_CEE, bfa_cee_isr, cee);
|
||||
bfa_ioc_hbfail_init(&cee->hbfail, bfa_cee_hbfail, cee);
|
||||
bfa_nw_ioc_hbfail_register(cee->ioc, &cee->hbfail);
|
||||
bfa_q_qe_init(&cee->ioc_notify);
|
||||
bfa_ioc_notify_init(&cee->ioc_notify, bfa_cee_notify, cee);
|
||||
bfa_nw_ioc_notify_register(cee->ioc, &cee->ioc_notify);
|
||||
}
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
typedef void (*bfa_cee_get_attr_cbfn_t) (void *dev, enum bfa_status status);
|
||||
typedef void (*bfa_cee_get_stats_cbfn_t) (void *dev, enum bfa_status status);
|
||||
typedef void (*bfa_cee_reset_stats_cbfn_t) (void *dev, enum bfa_status status);
|
||||
typedef void (*bfa_cee_hbfail_cbfn_t) (void *dev, enum bfa_status status);
|
||||
|
||||
struct bfa_cee_cbfn {
|
||||
bfa_cee_get_attr_cbfn_t get_attr_cbfn;
|
||||
@@ -45,7 +44,7 @@ struct bfa_cee {
|
||||
enum bfa_status get_stats_status;
|
||||
enum bfa_status reset_stats_status;
|
||||
struct bfa_cee_cbfn cbfn;
|
||||
struct bfa_ioc_hbfail_notify hbfail;
|
||||
struct bfa_ioc_notify ioc_notify;
|
||||
struct bfa_cee_attr *attr;
|
||||
struct bfa_cee_stats *stats;
|
||||
struct bfa_dma attr_dma;
|
||||
|
||||
@@ -11,20 +11,24 @@
|
||||
* General Public License for more details.
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2005-2010 Brocade Communications Systems, Inc.
|
||||
* Copyright (c) 2005-2011 Brocade Communications Systems, Inc.
|
||||
* All rights reserved
|
||||
* www.brocade.com
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file bfasm.h State machine defines
|
||||
* @file bfa_cs.h BFA common services
|
||||
*/
|
||||
|
||||
#ifndef __BFA_SM_H__
|
||||
#define __BFA_SM_H__
|
||||
#ifndef __BFA_CS_H__
|
||||
#define __BFA_CS_H__
|
||||
|
||||
#include "cna.h"
|
||||
|
||||
/**
|
||||
* @ BFA state machine interfaces
|
||||
*/
|
||||
|
||||
typedef void (*bfa_sm_t)(void *sm, int event);
|
||||
|
||||
/**
|
||||
@@ -33,7 +37,7 @@ typedef void (*bfa_sm_t)(void *sm, int event);
|
||||
* otype - object type, eg. struct bfa_ioc
|
||||
* etype - object type, eg. enum ioc_event
|
||||
*/
|
||||
#define bfa_sm_state_decl(oc, st, otype, etype) \
|
||||
#define bfa_sm_state_decl(oc, st, otype, etype) \
|
||||
static void oc ## _sm_ ## st(otype * fsm, etype event)
|
||||
|
||||
#define bfa_sm_set_state(_sm, _state) ((_sm)->sm = (bfa_sm_t)(_state))
|
||||
@@ -49,7 +53,7 @@ struct bfa_sm_table {
|
||||
int state; /*!< state machine encoding */
|
||||
char *name; /*!< state name for display */
|
||||
};
|
||||
#define BFA_SM(_sm) ((bfa_sm_t)(_sm))
|
||||
#define BFA_SM(_sm) ((bfa_sm_t)(_sm))
|
||||
|
||||
/**
|
||||
* State machine with entry actions.
|
||||
@@ -62,18 +66,18 @@ typedef void (*bfa_fsm_t)(void *fsm, int event);
|
||||
* otype - object type, eg. struct bfa_ioc
|
||||
* etype - object type, eg. enum ioc_event
|
||||
*/
|
||||
#define bfa_fsm_state_decl(oc, st, otype, etype) \
|
||||
static void oc ## _sm_ ## st(otype * fsm, etype event); \
|
||||
#define bfa_fsm_state_decl(oc, st, otype, etype) \
|
||||
static void oc ## _sm_ ## st(otype * fsm, etype event); \
|
||||
static void oc ## _sm_ ## st ## _entry(otype * fsm)
|
||||
|
||||
#define bfa_fsm_set_state(_fsm, _state) do { \
|
||||
(_fsm)->fsm = (bfa_fsm_t)(_state); \
|
||||
_state ## _entry(_fsm); \
|
||||
#define bfa_fsm_set_state(_fsm, _state) do { \
|
||||
(_fsm)->fsm = (bfa_fsm_t)(_state); \
|
||||
_state ## _entry(_fsm); \
|
||||
} while (0)
|
||||
|
||||
#define bfa_fsm_send_event(_fsm, _event) ((_fsm)->fsm((_fsm), (_event)))
|
||||
#define bfa_fsm_get_state(_fsm) ((_fsm)->fsm)
|
||||
#define bfa_fsm_cmp_state(_fsm, _state) \
|
||||
#define bfa_fsm_cmp_state(_fsm, _state) \
|
||||
((_fsm)->fsm == (bfa_fsm_t)(_state))
|
||||
|
||||
static inline int
|
||||
@@ -85,4 +89,52 @@ bfa_sm_to_state(const struct bfa_sm_table *smt, bfa_sm_t sm)
|
||||
i++;
|
||||
return smt[i].state;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @ Generic wait counter.
|
||||
*/
|
||||
|
||||
typedef void (*bfa_wc_resume_t) (void *cbarg);
|
||||
|
||||
struct bfa_wc {
|
||||
bfa_wc_resume_t wc_resume;
|
||||
void *wc_cbarg;
|
||||
int wc_count;
|
||||
};
|
||||
|
||||
static inline void
|
||||
bfa_wc_up(struct bfa_wc *wc)
|
||||
{
|
||||
wc->wc_count++;
|
||||
}
|
||||
|
||||
static inline void
|
||||
bfa_wc_down(struct bfa_wc *wc)
|
||||
{
|
||||
wc->wc_count--;
|
||||
if (wc->wc_count == 0)
|
||||
wc->wc_resume(wc->wc_cbarg);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize a waiting counter.
|
||||
*/
|
||||
static inline void
|
||||
bfa_wc_init(struct bfa_wc *wc, bfa_wc_resume_t wc_resume, void *wc_cbarg)
|
||||
{
|
||||
wc->wc_resume = wc_resume;
|
||||
wc->wc_cbarg = wc_cbarg;
|
||||
wc->wc_count = 0;
|
||||
bfa_wc_up(wc);
|
||||
}
|
||||
|
||||
/**
|
||||
* Wait for counter to reach zero
|
||||
*/
|
||||
static inline void
|
||||
bfa_wc_wait(struct bfa_wc *wc)
|
||||
{
|
||||
bfa_wc_down(wc);
|
||||
}
|
||||
|
||||
#endif /* __BFA_CS_H__ */
|
||||
@@ -80,7 +80,7 @@ struct bfa_adapter_attr {
|
||||
|
||||
enum {
|
||||
BFA_IOC_DRIVER_LEN = 16,
|
||||
BFA_IOC_CHIP_REV_LEN = 8,
|
||||
BFA_IOC_CHIP_REV_LEN = 8,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -153,6 +153,7 @@ struct bfa_ioc_drv_stats {
|
||||
u32 enable_reqs;
|
||||
u32 disable_replies;
|
||||
u32 enable_replies;
|
||||
u32 rsvd;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -174,7 +175,7 @@ enum bfa_ioc_type {
|
||||
*/
|
||||
struct bfa_ioc_attr {
|
||||
enum bfa_ioc_type ioc_type;
|
||||
enum bfa_ioc_state state; /*!< IOC state */
|
||||
enum bfa_ioc_state state; /*!< IOC state */
|
||||
struct bfa_adapter_attr adapter_attr; /*!< HBA attributes */
|
||||
struct bfa_ioc_driver_attr driver_attr; /*!< driver attr */
|
||||
struct bfa_ioc_pci_attr pci_attr;
|
||||
|
||||
@@ -192,14 +192,14 @@ do { \
|
||||
* VPD vendor tag
|
||||
*/
|
||||
enum {
|
||||
BFA_MFG_VPD_UNKNOWN = 0, /*!< vendor unknown */
|
||||
BFA_MFG_VPD_IBM = 1, /*!< vendor IBM */
|
||||
BFA_MFG_VPD_HP = 2, /*!< vendor HP */
|
||||
BFA_MFG_VPD_DELL = 3, /*!< vendor DELL */
|
||||
BFA_MFG_VPD_PCI_IBM = 0x08, /*!< PCI VPD IBM */
|
||||
BFA_MFG_VPD_PCI_HP = 0x10, /*!< PCI VPD HP */
|
||||
BFA_MFG_VPD_PCI_DELL = 0x20, /*!< PCI VPD DELL */
|
||||
BFA_MFG_VPD_PCI_BRCD = 0xf8, /*!< PCI VPD Brocade */
|
||||
BFA_MFG_VPD_UNKNOWN = 0, /*!< vendor unknown */
|
||||
BFA_MFG_VPD_IBM = 1, /*!< vendor IBM */
|
||||
BFA_MFG_VPD_HP = 2, /*!< vendor HP */
|
||||
BFA_MFG_VPD_DELL = 3, /*!< vendor DELL */
|
||||
BFA_MFG_VPD_PCI_IBM = 0x08, /*!< PCI VPD IBM */
|
||||
BFA_MFG_VPD_PCI_HP = 0x10, /*!< PCI VPD HP */
|
||||
BFA_MFG_VPD_PCI_DELL = 0x20, /*!< PCI VPD DELL */
|
||||
BFA_MFG_VPD_PCI_BRCD = 0xf8, /*!< PCI VPD Brocade */
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -212,8 +212,8 @@ struct bfa_mfg_vpd {
|
||||
u8 vpd_sig[3]; /*!< characters 'V', 'P', 'D' */
|
||||
u8 chksum; /*!< u8 checksum */
|
||||
u8 vendor; /*!< vendor */
|
||||
u8 len; /*!< vpd data length excluding header */
|
||||
u8 rsv;
|
||||
u8 len; /*!< vpd data length excluding header */
|
||||
u8 rsv;
|
||||
u8 data[BFA_MFG_VPD_LEN]; /*!< vpd data */
|
||||
};
|
||||
|
||||
|
||||
@@ -25,95 +25,95 @@
|
||||
* comments are supported
|
||||
*/
|
||||
enum bfa_status {
|
||||
BFA_STATUS_OK = 0,
|
||||
BFA_STATUS_FAILED = 1,
|
||||
BFA_STATUS_EINVAL = 2,
|
||||
BFA_STATUS_ENOMEM = 3,
|
||||
BFA_STATUS_ENOSYS = 4,
|
||||
BFA_STATUS_ETIMER = 5,
|
||||
BFA_STATUS_EPROTOCOL = 6,
|
||||
BFA_STATUS_ENOFCPORTS = 7,
|
||||
BFA_STATUS_NOFLASH = 8,
|
||||
BFA_STATUS_BADFLASH = 9,
|
||||
BFA_STATUS_SFP_UNSUPP = 10,
|
||||
BFA_STATUS_OK = 0,
|
||||
BFA_STATUS_FAILED = 1,
|
||||
BFA_STATUS_EINVAL = 2,
|
||||
BFA_STATUS_ENOMEM = 3,
|
||||
BFA_STATUS_ENOSYS = 4,
|
||||
BFA_STATUS_ETIMER = 5,
|
||||
BFA_STATUS_EPROTOCOL = 6,
|
||||
BFA_STATUS_ENOFCPORTS = 7,
|
||||
BFA_STATUS_NOFLASH = 8,
|
||||
BFA_STATUS_BADFLASH = 9,
|
||||
BFA_STATUS_SFP_UNSUPP = 10,
|
||||
BFA_STATUS_UNKNOWN_VFID = 11,
|
||||
BFA_STATUS_DATACORRUPTED = 12,
|
||||
BFA_STATUS_DEVBUSY = 13,
|
||||
BFA_STATUS_ABORTED = 14,
|
||||
BFA_STATUS_NODEV = 15,
|
||||
BFA_STATUS_HDMA_FAILED = 16,
|
||||
BFA_STATUS_DEVBUSY = 13,
|
||||
BFA_STATUS_ABORTED = 14,
|
||||
BFA_STATUS_NODEV = 15,
|
||||
BFA_STATUS_HDMA_FAILED = 16,
|
||||
BFA_STATUS_FLASH_BAD_LEN = 17,
|
||||
BFA_STATUS_UNKNOWN_LWWN = 18,
|
||||
BFA_STATUS_UNKNOWN_RWWN = 19,
|
||||
BFA_STATUS_FCPT_LS_RJT = 20,
|
||||
BFA_STATUS_FCPT_LS_RJT = 20,
|
||||
BFA_STATUS_VPORT_EXISTS = 21,
|
||||
BFA_STATUS_VPORT_MAX = 22,
|
||||
BFA_STATUS_VPORT_MAX = 22,
|
||||
BFA_STATUS_UNSUPP_SPEED = 23,
|
||||
BFA_STATUS_INVLD_DFSZ = 24,
|
||||
BFA_STATUS_CNFG_FAILED = 25,
|
||||
BFA_STATUS_CMD_NOTSUPP = 26,
|
||||
BFA_STATUS_NO_ADAPTER = 27,
|
||||
BFA_STATUS_LINKDOWN = 28,
|
||||
BFA_STATUS_FABRIC_RJT = 29,
|
||||
BFA_STATUS_INVLD_DFSZ = 24,
|
||||
BFA_STATUS_CNFG_FAILED = 25,
|
||||
BFA_STATUS_CMD_NOTSUPP = 26,
|
||||
BFA_STATUS_NO_ADAPTER = 27,
|
||||
BFA_STATUS_LINKDOWN = 28,
|
||||
BFA_STATUS_FABRIC_RJT = 29,
|
||||
BFA_STATUS_UNKNOWN_VWWN = 30,
|
||||
BFA_STATUS_NSLOGIN_FAILED = 31,
|
||||
BFA_STATUS_NO_RPORTS = 32,
|
||||
BFA_STATUS_NO_RPORTS = 32,
|
||||
BFA_STATUS_NSQUERY_FAILED = 33,
|
||||
BFA_STATUS_PORT_OFFLINE = 34,
|
||||
BFA_STATUS_RPORT_OFFLINE = 35,
|
||||
BFA_STATUS_TGTOPEN_FAILED = 36,
|
||||
BFA_STATUS_BAD_LUNS = 37,
|
||||
BFA_STATUS_IO_FAILURE = 38,
|
||||
BFA_STATUS_NO_FABRIC = 39,
|
||||
BFA_STATUS_EBADF = 40,
|
||||
BFA_STATUS_EINTR = 41,
|
||||
BFA_STATUS_EIO = 42,
|
||||
BFA_STATUS_ENOTTY = 43,
|
||||
BFA_STATUS_ENXIO = 44,
|
||||
BFA_STATUS_EFOPEN = 45,
|
||||
BFA_STATUS_BAD_LUNS = 37,
|
||||
BFA_STATUS_IO_FAILURE = 38,
|
||||
BFA_STATUS_NO_FABRIC = 39,
|
||||
BFA_STATUS_EBADF = 40,
|
||||
BFA_STATUS_EINTR = 41,
|
||||
BFA_STATUS_EIO = 42,
|
||||
BFA_STATUS_ENOTTY = 43,
|
||||
BFA_STATUS_ENXIO = 44,
|
||||
BFA_STATUS_EFOPEN = 45,
|
||||
BFA_STATUS_VPORT_WWN_BP = 46,
|
||||
BFA_STATUS_PORT_NOT_DISABLED = 47,
|
||||
BFA_STATUS_BADFRMHDR = 48,
|
||||
BFA_STATUS_BADFRMSZ = 49,
|
||||
BFA_STATUS_MISSINGFRM = 50,
|
||||
BFA_STATUS_LINKTIMEOUT = 51,
|
||||
BFA_STATUS_BADFRMHDR = 48,
|
||||
BFA_STATUS_BADFRMSZ = 49,
|
||||
BFA_STATUS_MISSINGFRM = 50,
|
||||
BFA_STATUS_LINKTIMEOUT = 51,
|
||||
BFA_STATUS_NO_FCPIM_NEXUS = 52,
|
||||
BFA_STATUS_CHECKSUM_FAIL = 53,
|
||||
BFA_STATUS_GZME_FAILED = 54,
|
||||
BFA_STATUS_GZME_FAILED = 54,
|
||||
BFA_STATUS_SCSISTART_REQD = 55,
|
||||
BFA_STATUS_IOC_FAILURE = 56,
|
||||
BFA_STATUS_INVALID_WWN = 57,
|
||||
BFA_STATUS_MISMATCH = 58,
|
||||
BFA_STATUS_IOC_ENABLED = 59,
|
||||
BFA_STATUS_IOC_FAILURE = 56,
|
||||
BFA_STATUS_INVALID_WWN = 57,
|
||||
BFA_STATUS_MISMATCH = 58,
|
||||
BFA_STATUS_IOC_ENABLED = 59,
|
||||
BFA_STATUS_ADAPTER_ENABLED = 60,
|
||||
BFA_STATUS_IOC_NON_OP = 61,
|
||||
BFA_STATUS_IOC_NON_OP = 61,
|
||||
BFA_STATUS_ADDR_MAP_FAILURE = 62,
|
||||
BFA_STATUS_SAME_NAME = 63,
|
||||
BFA_STATUS_PENDING = 64,
|
||||
BFA_STATUS_8G_SPD = 65,
|
||||
BFA_STATUS_4G_SPD = 66,
|
||||
BFA_STATUS_SAME_NAME = 63,
|
||||
BFA_STATUS_PENDING = 64,
|
||||
BFA_STATUS_8G_SPD = 65,
|
||||
BFA_STATUS_4G_SPD = 66,
|
||||
BFA_STATUS_AD_IS_ENABLE = 67,
|
||||
BFA_STATUS_EINVAL_TOV = 68,
|
||||
BFA_STATUS_EINVAL_TOV = 68,
|
||||
BFA_STATUS_EINVAL_QDEPTH = 69,
|
||||
BFA_STATUS_VERSION_FAIL = 70,
|
||||
BFA_STATUS_DIAG_BUSY = 71,
|
||||
BFA_STATUS_BEACON_ON = 72,
|
||||
BFA_STATUS_BEACON_OFF = 73,
|
||||
BFA_STATUS_LBEACON_ON = 74,
|
||||
BFA_STATUS_LBEACON_OFF = 75,
|
||||
BFA_STATUS_DIAG_BUSY = 71,
|
||||
BFA_STATUS_BEACON_ON = 72,
|
||||
BFA_STATUS_BEACON_OFF = 73,
|
||||
BFA_STATUS_LBEACON_ON = 74,
|
||||
BFA_STATUS_LBEACON_OFF = 75,
|
||||
BFA_STATUS_PORT_NOT_INITED = 76,
|
||||
BFA_STATUS_RPSC_ENABLED = 77,
|
||||
BFA_STATUS_ENOFSAVE = 78,
|
||||
BFA_STATUS_BAD_FILE = 79,
|
||||
BFA_STATUS_RLIM_EN = 80,
|
||||
BFA_STATUS_RLIM_DIS = 81,
|
||||
BFA_STATUS_IOC_DISABLED = 82,
|
||||
BFA_STATUS_ADAPTER_DISABLED = 83,
|
||||
BFA_STATUS_BIOS_DISABLED = 84,
|
||||
BFA_STATUS_AUTH_ENABLED = 85,
|
||||
BFA_STATUS_AUTH_DISABLED = 86,
|
||||
BFA_STATUS_ERROR_TRL_ENABLED = 87,
|
||||
BFA_STATUS_ERROR_QOS_ENABLED = 88,
|
||||
BFA_STATUS_ENOFSAVE = 78,
|
||||
BFA_STATUS_BAD_FILE = 79,
|
||||
BFA_STATUS_RLIM_EN = 80,
|
||||
BFA_STATUS_RLIM_DIS = 81,
|
||||
BFA_STATUS_IOC_DISABLED = 82,
|
||||
BFA_STATUS_ADAPTER_DISABLED = 83,
|
||||
BFA_STATUS_BIOS_DISABLED = 84,
|
||||
BFA_STATUS_AUTH_ENABLED = 85,
|
||||
BFA_STATUS_AUTH_DISABLED = 86,
|
||||
BFA_STATUS_ERROR_TRL_ENABLED = 87,
|
||||
BFA_STATUS_ERROR_QOS_ENABLED = 88,
|
||||
BFA_STATUS_NO_SFP_DEV = 89,
|
||||
BFA_STATUS_MEMTEST_FAILED = 90,
|
||||
BFA_STATUS_INVALID_DEVID = 91,
|
||||
@@ -190,7 +190,7 @@ enum bfa_status {
|
||||
BFA_STATUS_FLASH_CKFAIL = 162,
|
||||
BFA_STATUS_TRUNK_UNSUPP = 163,
|
||||
BFA_STATUS_TRUNK_ENABLED = 164,
|
||||
BFA_STATUS_TRUNK_DISABLED = 165,
|
||||
BFA_STATUS_TRUNK_DISABLED = 165,
|
||||
BFA_STATUS_TRUNK_ERROR_TRL_ENABLED = 166,
|
||||
BFA_STATUS_BOOT_CODE_UPDATED = 167,
|
||||
BFA_STATUS_BOOT_VERSION = 168,
|
||||
@@ -198,8 +198,8 @@ enum bfa_status {
|
||||
BFA_STATUS_INVALID_CARDTYPE = 170,
|
||||
BFA_STATUS_NO_TOPOLOGY_FOR_CNA = 171,
|
||||
BFA_STATUS_IM_VLAN_OVER_TEAM_DELETE_FAILED = 172,
|
||||
BFA_STATUS_ETHBOOT_ENABLED = 173,
|
||||
BFA_STATUS_ETHBOOT_DISABLED = 174,
|
||||
BFA_STATUS_ETHBOOT_ENABLED = 173,
|
||||
BFA_STATUS_ETHBOOT_DISABLED = 174,
|
||||
BFA_STATUS_IOPROFILE_OFF = 175,
|
||||
BFA_STATUS_NO_PORT_INSTANCE = 176,
|
||||
BFA_STATUS_BOOT_CODE_TIMEDOUT = 177,
|
||||
|
||||
+100
-59
@@ -58,6 +58,7 @@ static bool bfa_nw_auto_recover = true;
|
||||
/*
|
||||
* forward declarations
|
||||
*/
|
||||
static void bfa_ioc_hw_sem_init(struct bfa_ioc *ioc);
|
||||
static void bfa_ioc_hw_sem_get(struct bfa_ioc *ioc);
|
||||
static void bfa_ioc_hw_sem_get_cancel(struct bfa_ioc *ioc);
|
||||
static void bfa_ioc_hwinit(struct bfa_ioc *ioc, bool force);
|
||||
@@ -68,9 +69,10 @@ static void bfa_ioc_hb_monitor(struct bfa_ioc *ioc);
|
||||
static void bfa_ioc_hb_stop(struct bfa_ioc *ioc);
|
||||
static void bfa_ioc_reset(struct bfa_ioc *ioc, bool force);
|
||||
static void bfa_ioc_mbox_poll(struct bfa_ioc *ioc);
|
||||
static void bfa_ioc_mbox_hbfail(struct bfa_ioc *ioc);
|
||||
static void bfa_ioc_mbox_flush(struct bfa_ioc *ioc);
|
||||
static void bfa_ioc_recover(struct bfa_ioc *ioc);
|
||||
static void bfa_ioc_check_attr_wwns(struct bfa_ioc *ioc);
|
||||
static void bfa_ioc_event_notify(struct bfa_ioc *, enum bfa_ioc_event);
|
||||
static void bfa_ioc_disable_comp(struct bfa_ioc *ioc);
|
||||
static void bfa_ioc_lpu_stop(struct bfa_ioc *ioc);
|
||||
static void bfa_ioc_fail_notify(struct bfa_ioc *ioc);
|
||||
@@ -107,7 +109,7 @@ enum ioc_event {
|
||||
IOC_E_FWRSP_GETATTR = 6, /*!< IOC get attribute response */
|
||||
IOC_E_DISABLED = 7, /*!< f/w disabled */
|
||||
IOC_E_INITFAILED = 8, /*!< failure notice by iocpf sm */
|
||||
IOC_E_PFAILED = 9, /*!< failure notice by iocpf sm */
|
||||
IOC_E_PFFAILED = 9, /*!< failure notice by iocpf sm */
|
||||
IOC_E_HBFAIL = 10, /*!< heartbeat failure */
|
||||
IOC_E_HWERROR = 11, /*!< hardware error interrupt */
|
||||
IOC_E_TIMEOUT = 12, /*!< timeout */
|
||||
@@ -156,7 +158,7 @@ enum iocpf_event {
|
||||
IOCPF_E_ENABLE = 1, /*!< IOCPF enable request */
|
||||
IOCPF_E_DISABLE = 2, /*!< IOCPF disable request */
|
||||
IOCPF_E_STOP = 3, /*!< stop on driver detach */
|
||||
IOCPF_E_FWREADY = 4, /*!< f/w initialization done */
|
||||
IOCPF_E_FWREADY = 4, /*!< f/w initialization done */
|
||||
IOCPF_E_FWRSP_ENABLE = 5, /*!< enable f/w response */
|
||||
IOCPF_E_FWRSP_DISABLE = 6, /*!< disable f/w response */
|
||||
IOCPF_E_FAIL = 7, /*!< failure notice by ioc sm */
|
||||
@@ -239,7 +241,7 @@ bfa_ioc_sm_uninit(struct bfa_ioc *ioc, enum ioc_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(ioc, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -272,7 +274,7 @@ bfa_ioc_sm_reset(struct bfa_ioc *ioc, enum ioc_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(ioc, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -294,12 +296,12 @@ bfa_ioc_sm_enabling(struct bfa_ioc *ioc, enum ioc_event event)
|
||||
bfa_fsm_set_state(ioc, bfa_ioc_sm_getattr);
|
||||
break;
|
||||
|
||||
case IOC_E_PFAILED:
|
||||
case IOC_E_PFFAILED:
|
||||
/* !!! fall through !!! */
|
||||
case IOC_E_HWERROR:
|
||||
ioc->cbfn->enable_cbfn(ioc->bfa, BFA_STATUS_IOC_FAILURE);
|
||||
bfa_fsm_set_state(ioc, bfa_ioc_sm_fail_retry);
|
||||
if (event != IOC_E_PFAILED)
|
||||
if (event != IOC_E_PFFAILED)
|
||||
bfa_iocpf_initfail(ioc);
|
||||
break;
|
||||
|
||||
@@ -316,7 +318,7 @@ bfa_ioc_sm_enabling(struct bfa_ioc *ioc, enum ioc_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(ioc, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -344,14 +346,14 @@ bfa_ioc_sm_getattr(struct bfa_ioc *ioc, enum ioc_event event)
|
||||
bfa_fsm_set_state(ioc, bfa_ioc_sm_op);
|
||||
break;
|
||||
|
||||
case IOC_E_PFAILED:
|
||||
case IOC_E_PFFAILED:
|
||||
case IOC_E_HWERROR:
|
||||
del_timer(&ioc->ioc_timer);
|
||||
/* fall through */
|
||||
case IOC_E_TIMEOUT:
|
||||
ioc->cbfn->enable_cbfn(ioc->bfa, BFA_STATUS_IOC_FAILURE);
|
||||
bfa_fsm_set_state(ioc, bfa_ioc_sm_fail_retry);
|
||||
if (event != IOC_E_PFAILED)
|
||||
if (event != IOC_E_PFFAILED)
|
||||
bfa_iocpf_getattrfail(ioc);
|
||||
break;
|
||||
|
||||
@@ -364,7 +366,7 @@ bfa_ioc_sm_getattr(struct bfa_ioc *ioc, enum ioc_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(ioc, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -387,7 +389,7 @@ bfa_ioc_sm_op(struct bfa_ioc *ioc, enum ioc_event event)
|
||||
bfa_fsm_set_state(ioc, bfa_ioc_sm_disabling);
|
||||
break;
|
||||
|
||||
case IOC_E_PFAILED:
|
||||
case IOC_E_PFFAILED:
|
||||
case IOC_E_HWERROR:
|
||||
bfa_ioc_hb_stop(ioc);
|
||||
/* !!! fall through !!! */
|
||||
@@ -398,12 +400,12 @@ bfa_ioc_sm_op(struct bfa_ioc *ioc, enum ioc_event event)
|
||||
else
|
||||
bfa_fsm_set_state(ioc, bfa_ioc_sm_fail);
|
||||
|
||||
if (event != IOC_E_PFAILED)
|
||||
if (event != IOC_E_PFFAILED)
|
||||
bfa_iocpf_fail(ioc);
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(ioc, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -434,7 +436,7 @@ bfa_ioc_sm_disabling(struct bfa_ioc *ioc, enum ioc_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(ioc, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -465,7 +467,7 @@ bfa_ioc_sm_disabled(struct bfa_ioc *ioc, enum ioc_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(ioc, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -485,13 +487,13 @@ bfa_ioc_sm_fail_retry(struct bfa_ioc *ioc, enum ioc_event event)
|
||||
bfa_fsm_set_state(ioc, bfa_ioc_sm_getattr);
|
||||
break;
|
||||
|
||||
case IOC_E_PFAILED:
|
||||
case IOC_E_PFFAILED:
|
||||
case IOC_E_HWERROR:
|
||||
/**
|
||||
* Initialization retry failed.
|
||||
*/
|
||||
ioc->cbfn->enable_cbfn(ioc->bfa, BFA_STATUS_IOC_FAILURE);
|
||||
if (event != IOC_E_PFAILED)
|
||||
if (event != IOC_E_PFFAILED)
|
||||
bfa_iocpf_initfail(ioc);
|
||||
break;
|
||||
|
||||
@@ -512,7 +514,7 @@ bfa_ioc_sm_fail_retry(struct bfa_ioc *ioc, enum ioc_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(ioc, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -546,7 +548,7 @@ bfa_ioc_sm_fail(struct bfa_ioc *ioc, enum ioc_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(ioc, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -579,7 +581,7 @@ bfa_iocpf_sm_reset(struct bfa_iocpf *iocpf, enum iocpf_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(iocpf->ioc, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -589,6 +591,7 @@ bfa_iocpf_sm_reset(struct bfa_iocpf *iocpf, enum iocpf_event event)
|
||||
static void
|
||||
bfa_iocpf_sm_fwcheck_entry(struct bfa_iocpf *iocpf)
|
||||
{
|
||||
bfa_ioc_hw_sem_init(iocpf->ioc);
|
||||
bfa_ioc_hw_sem_get(iocpf->ioc);
|
||||
}
|
||||
|
||||
@@ -631,7 +634,7 @@ bfa_iocpf_sm_fwcheck(struct bfa_iocpf *iocpf, enum iocpf_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(ioc, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -675,7 +678,7 @@ bfa_iocpf_sm_mismatch(struct bfa_iocpf *iocpf, enum iocpf_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(ioc, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -714,7 +717,7 @@ bfa_iocpf_sm_semwait(struct bfa_iocpf *iocpf, enum iocpf_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(ioc, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -762,7 +765,7 @@ bfa_iocpf_sm_hwinit(struct bfa_iocpf *iocpf, enum iocpf_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(ioc, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -813,7 +816,7 @@ bfa_iocpf_sm_enabling(struct bfa_iocpf *iocpf, enum iocpf_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(ioc, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -856,7 +859,7 @@ bfa_iocpf_sm_ready(struct bfa_iocpf *iocpf, enum iocpf_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(ioc, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -898,7 +901,7 @@ bfa_iocpf_sm_disabling(struct bfa_iocpf *iocpf, enum iocpf_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(ioc, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -927,7 +930,7 @@ bfa_iocpf_sm_disabling_sync(struct bfa_iocpf *iocpf, enum iocpf_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(ioc, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -937,6 +940,7 @@ bfa_iocpf_sm_disabling_sync(struct bfa_iocpf *iocpf, enum iocpf_event event)
|
||||
static void
|
||||
bfa_iocpf_sm_disabled_entry(struct bfa_iocpf *iocpf)
|
||||
{
|
||||
bfa_ioc_mbox_flush(iocpf->ioc);
|
||||
bfa_ioc_pf_disabled(iocpf->ioc);
|
||||
}
|
||||
|
||||
@@ -957,7 +961,7 @@ bfa_iocpf_sm_disabled(struct bfa_iocpf *iocpf, enum iocpf_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(ioc, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1009,7 +1013,7 @@ bfa_iocpf_sm_initfail_sync(struct bfa_iocpf *iocpf, enum iocpf_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(ioc, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1038,7 +1042,7 @@ bfa_iocpf_sm_initfail(struct bfa_iocpf *iocpf, enum iocpf_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(ioc, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1053,7 +1057,7 @@ bfa_iocpf_sm_fail_sync_entry(struct bfa_iocpf *iocpf)
|
||||
/**
|
||||
* Flush any queued up mailbox requests.
|
||||
*/
|
||||
bfa_ioc_mbox_hbfail(iocpf->ioc);
|
||||
bfa_ioc_mbox_flush(iocpf->ioc);
|
||||
bfa_ioc_hw_sem_get(iocpf->ioc);
|
||||
}
|
||||
|
||||
@@ -1093,7 +1097,7 @@ bfa_iocpf_sm_fail_sync(struct bfa_iocpf *iocpf, enum iocpf_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(ioc, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1115,7 +1119,7 @@ bfa_iocpf_sm_fail(struct bfa_iocpf *iocpf, enum iocpf_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(iocpf->ioc, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1123,21 +1127,26 @@ bfa_iocpf_sm_fail(struct bfa_iocpf *iocpf, enum iocpf_event event)
|
||||
* BFA IOC private functions
|
||||
*/
|
||||
|
||||
/**
|
||||
* Notify common modules registered for notification.
|
||||
*/
|
||||
static void
|
||||
bfa_ioc_event_notify(struct bfa_ioc *ioc, enum bfa_ioc_event event)
|
||||
{
|
||||
struct bfa_ioc_notify *notify;
|
||||
struct list_head *qe;
|
||||
|
||||
list_for_each(qe, &ioc->notify_q) {
|
||||
notify = (struct bfa_ioc_notify *)qe;
|
||||
notify->cbfn(notify->cbarg, event);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
bfa_ioc_disable_comp(struct bfa_ioc *ioc)
|
||||
{
|
||||
struct list_head *qe;
|
||||
struct bfa_ioc_hbfail_notify *notify;
|
||||
|
||||
ioc->cbfn->disable_cbfn(ioc->bfa);
|
||||
|
||||
/**
|
||||
* Notify common modules registered for notification.
|
||||
*/
|
||||
list_for_each(qe, &ioc->hb_notify_q) {
|
||||
notify = (struct bfa_ioc_hbfail_notify *) qe;
|
||||
notify->cbfn(notify->cbarg);
|
||||
}
|
||||
bfa_ioc_event_notify(ioc, BFA_IOC_E_DISABLED);
|
||||
}
|
||||
|
||||
bool
|
||||
@@ -1168,6 +1177,29 @@ bfa_nw_ioc_sem_release(void __iomem *sem_reg)
|
||||
writel(1, sem_reg);
|
||||
}
|
||||
|
||||
static void
|
||||
bfa_ioc_hw_sem_init(struct bfa_ioc *ioc)
|
||||
{
|
||||
struct bfi_ioc_image_hdr fwhdr;
|
||||
u32 fwstate = readl(ioc->ioc_regs.ioc_fwstate);
|
||||
|
||||
if (fwstate == BFI_IOC_UNINIT)
|
||||
return;
|
||||
|
||||
bfa_nw_ioc_fwver_get(ioc, &fwhdr);
|
||||
|
||||
if (swab32(fwhdr.exec) == BFI_FWBOOT_TYPE_NORMAL)
|
||||
return;
|
||||
|
||||
writel(BFI_IOC_UNINIT, ioc->ioc_regs.ioc_fwstate);
|
||||
|
||||
/*
|
||||
* Try to lock and then unlock the semaphore.
|
||||
*/
|
||||
readl(ioc->ioc_regs.ioc_sem_reg);
|
||||
writel(1, ioc->ioc_regs.ioc_sem_reg);
|
||||
}
|
||||
|
||||
static void
|
||||
bfa_ioc_hw_sem_get(struct bfa_ioc *ioc)
|
||||
{
|
||||
@@ -1638,7 +1670,7 @@ bfa_ioc_mbox_poll(struct bfa_ioc *ioc)
|
||||
* Cleanup any pending requests.
|
||||
*/
|
||||
static void
|
||||
bfa_ioc_mbox_hbfail(struct bfa_ioc *ioc)
|
||||
bfa_ioc_mbox_flush(struct bfa_ioc *ioc)
|
||||
{
|
||||
struct bfa_ioc_mbox_mod *mod = &ioc->mbox_mod;
|
||||
struct bfa_mbox_cmd *cmd;
|
||||
@@ -1650,17 +1682,11 @@ bfa_ioc_mbox_hbfail(struct bfa_ioc *ioc)
|
||||
static void
|
||||
bfa_ioc_fail_notify(struct bfa_ioc *ioc)
|
||||
{
|
||||
struct list_head *qe;
|
||||
struct bfa_ioc_hbfail_notify *notify;
|
||||
|
||||
/**
|
||||
* Notify driver and common modules registered for notification.
|
||||
*/
|
||||
ioc->cbfn->hbfail_cbfn(ioc->bfa);
|
||||
list_for_each(qe, &ioc->hb_notify_q) {
|
||||
notify = (struct bfa_ioc_hbfail_notify *) qe;
|
||||
notify->cbfn(notify->cbarg);
|
||||
}
|
||||
bfa_ioc_event_notify(ioc, BFA_IOC_E_FAILED);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1684,7 +1710,7 @@ bfa_ioc_pf_initfailed(struct bfa_ioc *ioc)
|
||||
static void
|
||||
bfa_ioc_pf_failed(struct bfa_ioc *ioc)
|
||||
{
|
||||
bfa_fsm_send_event(ioc, IOC_E_PFAILED);
|
||||
bfa_fsm_send_event(ioc, IOC_E_PFFAILED);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1839,7 +1865,7 @@ bfa_nw_ioc_attach(struct bfa_ioc *ioc, void *bfa, struct bfa_ioc_cbfn *cbfn)
|
||||
ioc->iocpf.ioc = ioc;
|
||||
|
||||
bfa_ioc_mbox_attach(ioc);
|
||||
INIT_LIST_HEAD(&ioc->hb_notify_q);
|
||||
INIT_LIST_HEAD(&ioc->notify_q);
|
||||
|
||||
bfa_fsm_set_state(ioc, bfa_ioc_sm_uninit);
|
||||
bfa_fsm_send_event(ioc, IOC_E_RESET);
|
||||
@@ -1969,6 +1995,8 @@ bfa_nw_ioc_mbox_queue(struct bfa_ioc *ioc, struct bfa_mbox_cmd *cmd)
|
||||
* mailbox is free -- queue command to firmware
|
||||
*/
|
||||
bfa_ioc_mbox_send(ioc, cmd->msg, sizeof(cmd->msg));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2001,18 +2029,30 @@ bfa_nw_ioc_mbox_isr(struct bfa_ioc *ioc)
|
||||
void
|
||||
bfa_nw_ioc_error_isr(struct bfa_ioc *ioc)
|
||||
{
|
||||
bfa_ioc_stats(ioc, ioc_hbfails);
|
||||
bfa_ioc_stats_hb_count(ioc, ioc->hb_count);
|
||||
bfa_fsm_send_event(ioc, IOC_E_HWERROR);
|
||||
}
|
||||
|
||||
/**
|
||||
* return true if IOC is disabled
|
||||
*/
|
||||
bool
|
||||
bfa_nw_ioc_is_disabled(struct bfa_ioc *ioc)
|
||||
{
|
||||
return bfa_fsm_cmp_state(ioc, bfa_ioc_sm_disabling) ||
|
||||
bfa_fsm_cmp_state(ioc, bfa_ioc_sm_disabled);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add to IOC heartbeat failure notification queue. To be used by common
|
||||
* modules such as cee, port, diag.
|
||||
*/
|
||||
void
|
||||
bfa_nw_ioc_hbfail_register(struct bfa_ioc *ioc,
|
||||
struct bfa_ioc_hbfail_notify *notify)
|
||||
bfa_nw_ioc_notify_register(struct bfa_ioc *ioc,
|
||||
struct bfa_ioc_notify *notify)
|
||||
{
|
||||
list_add_tail(¬ify->qe, &ioc->hb_notify_q);
|
||||
list_add_tail(¬ify->qe, &ioc->notify_q);
|
||||
}
|
||||
|
||||
#define BFA_MFG_NAME "Brocade"
|
||||
@@ -2217,6 +2257,7 @@ bfa_ioc_recover(struct bfa_ioc *ioc)
|
||||
{
|
||||
pr_crit("Heart Beat of IOC has failed\n");
|
||||
bfa_ioc_stats(ioc, ioc_hbfails);
|
||||
bfa_ioc_stats_hb_count(ioc, ioc->hb_count);
|
||||
bfa_fsm_send_event(ioc, IOC_E_HBFAIL);
|
||||
}
|
||||
|
||||
|
||||
+37
-14
@@ -19,7 +19,7 @@
|
||||
#ifndef __BFA_IOC_H__
|
||||
#define __BFA_IOC_H__
|
||||
|
||||
#include "bfa_sm.h"
|
||||
#include "bfa_cs.h"
|
||||
#include "bfi.h"
|
||||
#include "cna.h"
|
||||
|
||||
@@ -97,9 +97,12 @@ struct bfa_ioc_regs {
|
||||
/**
|
||||
* IOC Mailbox structures
|
||||
*/
|
||||
typedef void (*bfa_mbox_cmd_cbfn_t)(void *cbarg);
|
||||
struct bfa_mbox_cmd {
|
||||
struct list_head qe;
|
||||
u32 msg[BFI_IOC_MSGSZ];
|
||||
bfa_mbox_cmd_cbfn_t cbfn;
|
||||
void *cbarg;
|
||||
u32 msg[BFI_IOC_MSGSZ];
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -129,6 +132,23 @@ struct bfa_ioc_cbfn {
|
||||
bfa_ioc_reset_cbfn_t reset_cbfn;
|
||||
};
|
||||
|
||||
/**
|
||||
* IOC event notification mechanism.
|
||||
*/
|
||||
enum bfa_ioc_event {
|
||||
BFA_IOC_E_ENABLED = 1,
|
||||
BFA_IOC_E_DISABLED = 2,
|
||||
BFA_IOC_E_FAILED = 3,
|
||||
};
|
||||
|
||||
typedef void (*bfa_ioc_notify_cbfn_t)(void *, enum bfa_ioc_event);
|
||||
|
||||
struct bfa_ioc_notify {
|
||||
struct list_head qe;
|
||||
bfa_ioc_notify_cbfn_t cbfn;
|
||||
void *cbarg;
|
||||
};
|
||||
|
||||
/**
|
||||
* Heartbeat failure notification queue element.
|
||||
*/
|
||||
@@ -141,7 +161,7 @@ struct bfa_ioc_hbfail_notify {
|
||||
/**
|
||||
* Initialize a heartbeat failure notification structure
|
||||
*/
|
||||
#define bfa_ioc_hbfail_init(__notify, __cbfn, __cbarg) do { \
|
||||
#define bfa_ioc_notify_init(__notify, __cbfn, __cbarg) do { \
|
||||
(__notify)->cbfn = (__cbfn); \
|
||||
(__notify)->cbarg = (__cbarg); \
|
||||
} while (0)
|
||||
@@ -155,25 +175,25 @@ struct bfa_iocpf {
|
||||
|
||||
struct bfa_ioc {
|
||||
bfa_fsm_t fsm;
|
||||
struct bfa *bfa;
|
||||
struct bfa_pcidev pcidev;
|
||||
struct timer_list ioc_timer;
|
||||
struct timer_list iocpf_timer;
|
||||
struct timer_list sem_timer;
|
||||
struct bfa *bfa;
|
||||
struct bfa_pcidev pcidev;
|
||||
struct timer_list ioc_timer;
|
||||
struct timer_list iocpf_timer;
|
||||
struct timer_list sem_timer;
|
||||
struct timer_list hb_timer;
|
||||
u32 hb_count;
|
||||
struct list_head hb_notify_q;
|
||||
struct list_head notify_q;
|
||||
void *dbg_fwsave;
|
||||
int dbg_fwsave_len;
|
||||
bool dbg_fwsave_once;
|
||||
enum bfi_mclass ioc_mc;
|
||||
struct bfa_ioc_regs ioc_regs;
|
||||
struct bfa_ioc_regs ioc_regs;
|
||||
struct bfa_ioc_drv_stats stats;
|
||||
bool fcmode;
|
||||
bool ctdev;
|
||||
bool cna;
|
||||
bool pllinit;
|
||||
bool stats_busy; /*!< outstanding stats */
|
||||
bool stats_busy; /*!< outstanding stats */
|
||||
u8 port_id;
|
||||
|
||||
struct bfa_dma attr_dma;
|
||||
@@ -217,9 +237,11 @@ struct bfa_ioc_hwif {
|
||||
BFI_ADAPTER_GETP(NPORTS, (__ioc)->attr->adapter_prop)
|
||||
|
||||
#define bfa_ioc_stats(_ioc, _stats) ((_ioc)->stats._stats++)
|
||||
#define bfa_ioc_stats_hb_count(_ioc, _hb_count) \
|
||||
((_ioc)->stats.hb_count = (_hb_count))
|
||||
#define BFA_IOC_FWIMG_MINSZ (16 * 1024)
|
||||
#define BFA_IOC_FWIMG_TYPE(__ioc) \
|
||||
(((__ioc)->ctdev) ? \
|
||||
(((__ioc)->ctdev) ? \
|
||||
(((__ioc)->fcmode) ? BFI_IMAGE_CT_FC : BFI_IMAGE_CT_CNA) : \
|
||||
BFI_IMAGE_CB_FC)
|
||||
#define BFA_IOC_FW_SMEM_SIZE(__ioc) \
|
||||
@@ -263,9 +285,10 @@ void bfa_nw_ioc_enable(struct bfa_ioc *ioc);
|
||||
void bfa_nw_ioc_disable(struct bfa_ioc *ioc);
|
||||
|
||||
void bfa_nw_ioc_error_isr(struct bfa_ioc *ioc);
|
||||
bool bfa_nw_ioc_is_disabled(struct bfa_ioc *ioc);
|
||||
void bfa_nw_ioc_get_attr(struct bfa_ioc *ioc, struct bfa_ioc_attr *ioc_attr);
|
||||
void bfa_nw_ioc_hbfail_register(struct bfa_ioc *ioc,
|
||||
struct bfa_ioc_hbfail_notify *notify);
|
||||
void bfa_nw_ioc_notify_register(struct bfa_ioc *ioc,
|
||||
struct bfa_ioc_notify *notify);
|
||||
bool bfa_nw_ioc_sem_get(void __iomem *sem_reg);
|
||||
void bfa_nw_ioc_sem_release(void __iomem *sem_reg);
|
||||
void bfa_nw_ioc_hw_sem_release(struct bfa_ioc *ioc);
|
||||
|
||||
@@ -1,69 +0,0 @@
|
||||
/*
|
||||
* Linux network driver for Brocade Converged Network Adapter.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License (GPL) Version 2 as
|
||||
* published by the Free Software Foundation
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2005-2010 Brocade Communications Systems, Inc.
|
||||
* All rights reserved
|
||||
* www.brocade.com
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file bfa_wc.h Generic wait counter.
|
||||
*/
|
||||
|
||||
#ifndef __BFA_WC_H__
|
||||
#define __BFA_WC_H__
|
||||
|
||||
typedef void (*bfa_wc_resume_t) (void *cbarg);
|
||||
|
||||
struct bfa_wc {
|
||||
bfa_wc_resume_t wc_resume;
|
||||
void *wc_cbarg;
|
||||
int wc_count;
|
||||
};
|
||||
|
||||
static inline void
|
||||
bfa_wc_up(struct bfa_wc *wc)
|
||||
{
|
||||
wc->wc_count++;
|
||||
}
|
||||
|
||||
static inline void
|
||||
bfa_wc_down(struct bfa_wc *wc)
|
||||
{
|
||||
wc->wc_count--;
|
||||
if (wc->wc_count == 0)
|
||||
wc->wc_resume(wc->wc_cbarg);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize a waiting counter.
|
||||
*/
|
||||
static inline void
|
||||
bfa_wc_init(struct bfa_wc *wc, bfa_wc_resume_t wc_resume, void *wc_cbarg)
|
||||
{
|
||||
wc->wc_resume = wc_resume;
|
||||
wc->wc_cbarg = wc_cbarg;
|
||||
wc->wc_count = 0;
|
||||
bfa_wc_up(wc);
|
||||
}
|
||||
|
||||
/**
|
||||
* Wait for counter to reach zero
|
||||
*/
|
||||
static inline void
|
||||
bfa_wc_wait(struct bfa_wc *wc)
|
||||
{
|
||||
bfa_wc_down(wc);
|
||||
}
|
||||
|
||||
#endif
|
||||
+13
-7
@@ -51,13 +51,13 @@ struct bfi_mhdr {
|
||||
};
|
||||
|
||||
#define bfi_h2i_set(_mh, _mc, _op, _lpuid) do { \
|
||||
(_mh).msg_class = (_mc); \
|
||||
(_mh).msg_class = (_mc); \
|
||||
(_mh).msg_id = (_op); \
|
||||
(_mh).mtag.h2i.lpu_id = (_lpuid); \
|
||||
} while (0)
|
||||
|
||||
#define bfi_i2h_set(_mh, _mc, _op, _i2htok) do { \
|
||||
(_mh).msg_class = (_mc); \
|
||||
(_mh).msg_class = (_mc); \
|
||||
(_mh).msg_id = (_op); \
|
||||
(_mh).mtag.i2htok = (_i2htok); \
|
||||
} while (0)
|
||||
@@ -66,7 +66,7 @@ struct bfi_mhdr {
|
||||
* Message opcodes: 0-127 to firmware, 128-255 to host
|
||||
*/
|
||||
#define BFI_I2H_OPCODE_BASE 128
|
||||
#define BFA_I2HM(_x) ((_x) + BFI_I2H_OPCODE_BASE)
|
||||
#define BFA_I2HM(_x) ((_x) + BFI_I2H_OPCODE_BASE)
|
||||
|
||||
/**
|
||||
****************************************************************************
|
||||
@@ -186,7 +186,7 @@ enum bfi_mclass {
|
||||
#define BFI_BOOT_TYPE_OFF 8
|
||||
#define BFI_BOOT_LOADER_OFF 12
|
||||
|
||||
#define BFI_BOOT_TYPE_NORMAL 0
|
||||
#define BFI_BOOT_TYPE_NORMAL 0
|
||||
#define BFI_BOOT_TYPE_FLASH 1
|
||||
#define BFI_BOOT_TYPE_MEMTEST 2
|
||||
|
||||
@@ -211,9 +211,9 @@ enum bfi_ioc_h2i_msgs {
|
||||
|
||||
enum bfi_ioc_i2h_msgs {
|
||||
BFI_IOC_I2H_ENABLE_REPLY = BFA_I2HM(1),
|
||||
BFI_IOC_I2H_DISABLE_REPLY = BFA_I2HM(2),
|
||||
BFI_IOC_I2H_GETATTR_REPLY = BFA_I2HM(3),
|
||||
BFI_IOC_I2H_READY_EVENT = BFA_I2HM(4),
|
||||
BFI_IOC_I2H_DISABLE_REPLY = BFA_I2HM(2),
|
||||
BFI_IOC_I2H_GETATTR_REPLY = BFA_I2HM(3),
|
||||
BFI_IOC_I2H_READY_EVENT = BFA_I2HM(4),
|
||||
BFI_IOC_I2H_HBEAT = BFA_I2HM(5),
|
||||
};
|
||||
|
||||
@@ -289,6 +289,12 @@ struct bfi_ioc_image_hdr {
|
||||
u32 md5sum[BFI_IOC_MD5SUM_SZ];
|
||||
};
|
||||
|
||||
enum bfi_fwboot_type {
|
||||
BFI_FWBOOT_TYPE_NORMAL = 0,
|
||||
BFI_FWBOOT_TYPE_FLASH = 1,
|
||||
BFI_FWBOOT_TYPE_MEMTEST = 2,
|
||||
};
|
||||
|
||||
/**
|
||||
* BFI_IOC_I2H_READY_EVENT message
|
||||
*/
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
#ifndef __BNA_H__
|
||||
#define __BNA_H__
|
||||
|
||||
#include "bfa_wc.h"
|
||||
#include "bfa_cs.h"
|
||||
#include "bfa_ioc.h"
|
||||
#include "cna.h"
|
||||
#include "bfi_ll.h"
|
||||
@@ -88,7 +88,7 @@ do { \
|
||||
} while (0)
|
||||
|
||||
#define containing_rec(addr, type, field) \
|
||||
((type *)((unsigned char *)(addr) - \
|
||||
((type *)((unsigned char *)(addr) - \
|
||||
(unsigned char *)(&((type *)0)->field)))
|
||||
|
||||
#define BNA_TXQ_WI_NEEDED(_vectors) (((_vectors) + 3) >> 2)
|
||||
@@ -101,8 +101,8 @@ do { \
|
||||
{ \
|
||||
unsigned int page_index; /* index within a page */ \
|
||||
void *page_addr; \
|
||||
page_index = (_qe_idx) & (BNA_TXQ_PAGE_INDEX_MAX - 1); \
|
||||
(_qe_ptr_range) = (BNA_TXQ_PAGE_INDEX_MAX - page_index); \
|
||||
page_index = (_qe_idx) & (BNA_TXQ_PAGE_INDEX_MAX - 1); \
|
||||
(_qe_ptr_range) = (BNA_TXQ_PAGE_INDEX_MAX - page_index); \
|
||||
page_addr = (_qpt_ptr)[((_qe_idx) >> BNA_TXQ_PAGE_INDEX_MAX_SHIFT)];\
|
||||
(_qe_ptr) = &((struct bna_txq_entry *)(page_addr))[page_index]; \
|
||||
}
|
||||
@@ -166,25 +166,25 @@ do { \
|
||||
(((_q_ptr)->q.producer_index + (_num)) & \
|
||||
((_q_ptr)->q.q_depth - 1))
|
||||
|
||||
#define BNA_Q_CI_ADD(_q_ptr, _num) \
|
||||
#define BNA_Q_CI_ADD(_q_ptr, _num) \
|
||||
(_q_ptr)->q.consumer_index = \
|
||||
(((_q_ptr)->q.consumer_index + (_num)) \
|
||||
(((_q_ptr)->q.consumer_index + (_num)) \
|
||||
& ((_q_ptr)->q.q_depth - 1))
|
||||
|
||||
#define BNA_Q_FREE_COUNT(_q_ptr) \
|
||||
(BNA_QE_FREE_CNT(&((_q_ptr)->q), (_q_ptr)->q.q_depth))
|
||||
|
||||
#define BNA_Q_IN_USE_COUNT(_q_ptr) \
|
||||
#define BNA_Q_IN_USE_COUNT(_q_ptr) \
|
||||
(BNA_QE_IN_USE_CNT(&(_q_ptr)->q, (_q_ptr)->q.q_depth))
|
||||
|
||||
/* These macros build the data portion of the TxQ/RxQ doorbell */
|
||||
#define BNA_DOORBELL_Q_PRD_IDX(_pi) (0x80000000 | (_pi))
|
||||
#define BNA_DOORBELL_Q_PRD_IDX(_pi) (0x80000000 | (_pi))
|
||||
#define BNA_DOORBELL_Q_STOP (0x40000000)
|
||||
|
||||
/* These macros build the data portion of the IB doorbell */
|
||||
#define BNA_DOORBELL_IB_INT_ACK(_timeout, _events) \
|
||||
(0x80000000 | ((_timeout) << 16) | (_events))
|
||||
#define BNA_DOORBELL_IB_INT_DISABLE (0x40000000)
|
||||
#define BNA_DOORBELL_IB_INT_DISABLE (0x40000000)
|
||||
|
||||
/* Set the coalescing timer for the given ib */
|
||||
#define bna_ib_coalescing_timer_set(_i_dbell, _cls_timer) \
|
||||
|
||||
+22
-23
@@ -16,8 +16,7 @@
|
||||
* www.brocade.com
|
||||
*/
|
||||
#include "bna.h"
|
||||
#include "bfa_sm.h"
|
||||
#include "bfa_wc.h"
|
||||
#include "bfa_cs.h"
|
||||
|
||||
static void bna_device_cb_port_stopped(void *arg, enum bna_cb_status status);
|
||||
|
||||
@@ -380,7 +379,7 @@ bna_llport_sm_stopped(struct bna_llport *llport,
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(llport->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -409,7 +408,7 @@ bna_llport_sm_down(struct bna_llport *llport,
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(llport->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -455,7 +454,7 @@ bna_llport_sm_up_resp_wait(struct bna_llport *llport,
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(llport->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -497,7 +496,7 @@ bna_llport_sm_down_resp_wait(struct bna_llport *llport,
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(llport->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -526,7 +525,7 @@ bna_llport_sm_up(struct bna_llport *llport,
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(llport->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -563,7 +562,7 @@ bna_llport_sm_last_resp_wait(struct bna_llport *llport,
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(llport->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -916,7 +915,7 @@ bna_port_sm_stopped(struct bna_port *port, enum bna_port_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(port->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -956,7 +955,7 @@ bna_port_sm_mtu_init_wait(struct bna_port *port, enum bna_port_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(port->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1001,7 +1000,7 @@ bna_port_sm_pause_init_wait(struct bna_port *port,
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(port->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1022,7 +1021,7 @@ bna_port_sm_last_resp_wait(struct bna_port *port,
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(port->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1061,7 +1060,7 @@ bna_port_sm_started(struct bna_port *port,
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(port->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1086,7 +1085,7 @@ bna_port_sm_pause_cfg_wait(struct bna_port *port,
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(port->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1111,7 +1110,7 @@ bna_port_sm_rx_stop_wait(struct bna_port *port,
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(port->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1136,7 +1135,7 @@ bna_port_sm_mtu_cfg_wait(struct bna_port *port, enum bna_port_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(port->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1161,7 +1160,7 @@ bna_port_sm_chld_stop_wait(struct bna_port *port,
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(port->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1472,7 +1471,7 @@ bna_device_sm_stopped(struct bna_device *device,
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(device->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1512,7 +1511,7 @@ bna_device_sm_ioc_ready_wait(struct bna_device *device,
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(device->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1542,7 +1541,7 @@ bna_device_sm_ready(struct bna_device *device, enum bna_device_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(device->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1568,7 +1567,7 @@ bna_device_sm_port_stop_wait(struct bna_device *device,
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(device->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1589,7 +1588,7 @@ bna_device_sm_ioc_disable_wait(struct bna_device *device,
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(device->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1622,7 +1621,7 @@ bna_device_sm_failed(struct bna_device *device,
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(device->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+46
-46
@@ -67,7 +67,7 @@ static struct bna_ibidx_pool name[BFI_IBIDX_TOTAL_POOLS] = \
|
||||
|
||||
/**
|
||||
* There are 2 free RIT segment pools:
|
||||
* Pool1: 192 segments of 1 RIT entry each
|
||||
* Pool1: 192 segments of 1 RIT entry each
|
||||
* Pool2: 1 segment of 64 RIT entry
|
||||
*/
|
||||
#define BFI_RIT_SEG_POOL1_SIZE 192
|
||||
@@ -357,14 +357,14 @@ static struct bna_ritseg_pool_cfg name[BFI_RIT_SEG_TOTAL_POOLS] = \
|
||||
* To clear set the value to 0.
|
||||
* Range : 0x20 to 0x5c
|
||||
*/
|
||||
#define PSS_SEM_LOCK_REG(_num) \
|
||||
#define PSS_SEM_LOCK_REG(_num) \
|
||||
(PSS_BLK_REG_ADDR + 0x020 + ((_num) << 2))
|
||||
|
||||
/**
|
||||
* PSS Semaphore Status Registers,
|
||||
* corresponding to the lock registers above
|
||||
*/
|
||||
#define PSS_SEM_STATUS_REG(_num) \
|
||||
#define PSS_SEM_STATUS_REG(_num) \
|
||||
(PSS_BLK_REG_ADDR + 0x060 + ((_num) << 2))
|
||||
|
||||
/**
|
||||
@@ -1044,7 +1044,7 @@ static struct bna_ritseg_pool_cfg name[BFI_RIT_SEG_TOTAL_POOLS] = \
|
||||
__LPU12HOST_MBOX1_STATUS_BITS))
|
||||
|
||||
#define BNA_IS_MBOX_INTR(_intr_status) \
|
||||
((_intr_status) & \
|
||||
((_intr_status) & \
|
||||
(__LPU02HOST_MBOX0_STATUS_BITS | \
|
||||
__LPU02HOST_MBOX1_STATUS_BITS | \
|
||||
__LPU12HOST_MBOX0_STATUS_BITS | \
|
||||
@@ -1070,11 +1070,11 @@ static struct bna_ritseg_pool_cfg name[BFI_RIT_SEG_TOTAL_POOLS] = \
|
||||
__HALT_MASK_BITS)
|
||||
|
||||
#define BNA_IS_ERR_INTR(_intr_status) \
|
||||
((_intr_status) & \
|
||||
(__EMC_ERROR_STATUS_BITS | \
|
||||
__LPU0_ERROR_STATUS_BITS | \
|
||||
__LPU1_ERROR_STATUS_BITS | \
|
||||
__PSS_ERROR_STATUS_BITS | \
|
||||
((_intr_status) & \
|
||||
(__EMC_ERROR_STATUS_BITS | \
|
||||
__LPU0_ERROR_STATUS_BITS | \
|
||||
__LPU1_ERROR_STATUS_BITS | \
|
||||
__PSS_ERROR_STATUS_BITS | \
|
||||
__HALT_STATUS_BITS))
|
||||
|
||||
#define BNA_IS_MBOX_ERR_INTR(_intr_status) \
|
||||
@@ -1087,9 +1087,9 @@ static struct bna_ritseg_pool_cfg name[BFI_RIT_SEG_TOTAL_POOLS] = \
|
||||
#define BNA_INTR_STATUS_MBOX_CLR(_intr_status) \
|
||||
do { \
|
||||
(_intr_status) &= ~(__LPU02HOST_MBOX0_STATUS_BITS | \
|
||||
__LPU02HOST_MBOX1_STATUS_BITS | \
|
||||
__LPU12HOST_MBOX0_STATUS_BITS | \
|
||||
__LPU12HOST_MBOX1_STATUS_BITS); \
|
||||
__LPU02HOST_MBOX1_STATUS_BITS | \
|
||||
__LPU12HOST_MBOX0_STATUS_BITS | \
|
||||
__LPU12HOST_MBOX1_STATUS_BITS); \
|
||||
} while (0)
|
||||
|
||||
#define BNA_INTR_STATUS_ERR_CLR(_intr_status) \
|
||||
@@ -1107,7 +1107,7 @@ do { \
|
||||
writel(0xffffffff, (_bna)->regs.fn_int_mask);\
|
||||
}
|
||||
|
||||
#define bna_intx_enable(bna, new_mask) \
|
||||
#define bna_intx_enable(bna, new_mask) \
|
||||
writel((new_mask), (bna)->regs.fn_int_mask)
|
||||
|
||||
#define bna_mbox_intr_disable(bna) \
|
||||
@@ -1179,18 +1179,18 @@ do {\
|
||||
#define BNA_DOORBELL_IB_INT_DISABLE (0x40000000)
|
||||
|
||||
/* TxQ Entry Opcodes */
|
||||
#define BNA_TXQ_WI_SEND (0x402) /* Single Frame Transmission */
|
||||
#define BNA_TXQ_WI_SEND_LSO (0x403) /* Multi-Frame Transmission */
|
||||
#define BNA_TXQ_WI_SEND (0x402) /* Single Frame Transmission */
|
||||
#define BNA_TXQ_WI_SEND_LSO (0x403) /* Multi-Frame Transmission */
|
||||
#define BNA_TXQ_WI_EXTENSION (0x104) /* Extension WI */
|
||||
|
||||
/* TxQ Entry Control Flags */
|
||||
#define BNA_TXQ_WI_CF_FCOE_CRC (1 << 8)
|
||||
#define BNA_TXQ_WI_CF_IPID_MODE (1 << 5)
|
||||
#define BNA_TXQ_WI_CF_INS_PRIO (1 << 4)
|
||||
#define BNA_TXQ_WI_CF_INS_VLAN (1 << 3)
|
||||
#define BNA_TXQ_WI_CF_UDP_CKSUM (1 << 2)
|
||||
#define BNA_TXQ_WI_CF_TCP_CKSUM (1 << 1)
|
||||
#define BNA_TXQ_WI_CF_IP_CKSUM (1 << 0)
|
||||
#define BNA_TXQ_WI_CF_FCOE_CRC (1 << 8)
|
||||
#define BNA_TXQ_WI_CF_IPID_MODE (1 << 5)
|
||||
#define BNA_TXQ_WI_CF_INS_PRIO (1 << 4)
|
||||
#define BNA_TXQ_WI_CF_INS_VLAN (1 << 3)
|
||||
#define BNA_TXQ_WI_CF_UDP_CKSUM (1 << 2)
|
||||
#define BNA_TXQ_WI_CF_TCP_CKSUM (1 << 1)
|
||||
#define BNA_TXQ_WI_CF_IP_CKSUM (1 << 0)
|
||||
|
||||
#define BNA_TXQ_WI_L4_HDR_N_OFFSET(_hdr_size, _offset) \
|
||||
(((_hdr_size) << 10) | ((_offset) & 0x3FF))
|
||||
@@ -1199,30 +1199,30 @@ do {\
|
||||
* Completion Q defines
|
||||
*/
|
||||
/* CQ Entry Flags */
|
||||
#define BNA_CQ_EF_MAC_ERROR (1 << 0)
|
||||
#define BNA_CQ_EF_FCS_ERROR (1 << 1)
|
||||
#define BNA_CQ_EF_TOO_LONG (1 << 2)
|
||||
#define BNA_CQ_EF_FC_CRC_OK (1 << 3)
|
||||
#define BNA_CQ_EF_MAC_ERROR (1 << 0)
|
||||
#define BNA_CQ_EF_FCS_ERROR (1 << 1)
|
||||
#define BNA_CQ_EF_TOO_LONG (1 << 2)
|
||||
#define BNA_CQ_EF_FC_CRC_OK (1 << 3)
|
||||
|
||||
#define BNA_CQ_EF_RSVD1 (1 << 4)
|
||||
#define BNA_CQ_EF_RSVD1 (1 << 4)
|
||||
#define BNA_CQ_EF_L4_CKSUM_OK (1 << 5)
|
||||
#define BNA_CQ_EF_L3_CKSUM_OK (1 << 6)
|
||||
#define BNA_CQ_EF_HDS_HEADER (1 << 7)
|
||||
|
||||
#define BNA_CQ_EF_UDP (1 << 8)
|
||||
#define BNA_CQ_EF_TCP (1 << 9)
|
||||
#define BNA_CQ_EF_UDP (1 << 8)
|
||||
#define BNA_CQ_EF_TCP (1 << 9)
|
||||
#define BNA_CQ_EF_IP_OPTIONS (1 << 10)
|
||||
#define BNA_CQ_EF_IPV6 (1 << 11)
|
||||
#define BNA_CQ_EF_IPV6 (1 << 11)
|
||||
|
||||
#define BNA_CQ_EF_IPV4 (1 << 12)
|
||||
#define BNA_CQ_EF_VLAN (1 << 13)
|
||||
#define BNA_CQ_EF_RSS (1 << 14)
|
||||
#define BNA_CQ_EF_RSVD2 (1 << 15)
|
||||
#define BNA_CQ_EF_IPV4 (1 << 12)
|
||||
#define BNA_CQ_EF_VLAN (1 << 13)
|
||||
#define BNA_CQ_EF_RSS (1 << 14)
|
||||
#define BNA_CQ_EF_RSVD2 (1 << 15)
|
||||
|
||||
#define BNA_CQ_EF_MCAST_MATCH (1 << 16)
|
||||
#define BNA_CQ_EF_MCAST (1 << 17)
|
||||
#define BNA_CQ_EF_BCAST (1 << 18)
|
||||
#define BNA_CQ_EF_REMOTE (1 << 19)
|
||||
#define BNA_CQ_EF_MCAST (1 << 17)
|
||||
#define BNA_CQ_EF_BCAST (1 << 18)
|
||||
#define BNA_CQ_EF_REMOTE (1 << 19)
|
||||
|
||||
#define BNA_CQ_EF_LOCAL (1 << 20)
|
||||
|
||||
@@ -1257,10 +1257,10 @@ enum ib_flags {
|
||||
};
|
||||
|
||||
enum rss_hash_type {
|
||||
BFI_RSS_T_V4_TCP = (1 << 11),
|
||||
BFI_RSS_T_V4_IP = (1 << 10),
|
||||
BFI_RSS_T_V6_TCP = (1 << 9),
|
||||
BFI_RSS_T_V6_IP = (1 << 8)
|
||||
BFI_RSS_T_V4_TCP = (1 << 11),
|
||||
BFI_RSS_T_V4_IP = (1 << 10),
|
||||
BFI_RSS_T_V6_TCP = (1 << 9),
|
||||
BFI_RSS_T_V6_IP = (1 << 8)
|
||||
};
|
||||
enum hds_header_type {
|
||||
BNA_HDS_T_V4_TCP = (1 << 11),
|
||||
@@ -1298,7 +1298,7 @@ struct bna_txq_mem {
|
||||
u32 reserved2;
|
||||
u32 pg_cnt_n_prd_ptr; /* 31:16->total page count */
|
||||
/* 15:0 ->producer pointer (index?) */
|
||||
u32 entry_n_pg_size; /* 31:16->entry size */
|
||||
u32 entry_n_pg_size; /* 31:16->entry size */
|
||||
/* 15:0 ->page size */
|
||||
u32 int_blk_n_cns_ptr; /* 31:24->Int Blk Id; */
|
||||
/* 23:16->Int Blk Offset */
|
||||
@@ -1326,7 +1326,7 @@ struct bna_rxq_mem {
|
||||
u32 sg_n_cq_n_cns_ptr; /* 31:28->reserved; 27:24->sg count */
|
||||
/* 23:16->CQ; */
|
||||
/* 15:0->consumer pointer(index?) */
|
||||
u32 buf_sz_n_q_state; /* 31:16->buffer size; 15:0-> Q state */
|
||||
u32 buf_sz_n_q_state; /* 31:16->buffer size; 15:0-> Q state */
|
||||
u32 next_qid; /* 17:10->next QId */
|
||||
u32 reserved3;
|
||||
u32 reserved4[4];
|
||||
@@ -1426,8 +1426,8 @@ struct bna_dma_addr {
|
||||
};
|
||||
|
||||
struct bna_txq_wi_vector {
|
||||
u16 reserved;
|
||||
u16 length; /* Only 14 LSB are valid */
|
||||
u16 reserved;
|
||||
u16 length; /* Only 14 LSB are valid */
|
||||
struct bna_dma_addr host_addr; /* Tx-Buf DMA addr */
|
||||
};
|
||||
|
||||
@@ -1465,7 +1465,7 @@ struct bna_txq_entry {
|
||||
} hdr;
|
||||
struct bna_txq_wi_vector vector[4];
|
||||
};
|
||||
#define wi_hdr hdr.wi
|
||||
#define wi_hdr hdr.wi
|
||||
#define wi_ext_hdr hdr.wi_ext
|
||||
|
||||
/* RxQ Entry Structure */
|
||||
|
||||
+22
-22
@@ -16,7 +16,7 @@
|
||||
* www.brocade.com
|
||||
*/
|
||||
#include "bna.h"
|
||||
#include "bfa_sm.h"
|
||||
#include "bfa_cs.h"
|
||||
#include "bfi.h"
|
||||
|
||||
/**
|
||||
@@ -569,7 +569,7 @@ bna_rxf_sm_stopped(struct bna_rxf *rxf, enum bna_rxf_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(rxf->rx->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -627,7 +627,7 @@ bna_rxf_sm_start_wait(struct bna_rxf *rxf, enum bna_rxf_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(rxf->rx->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -678,7 +678,7 @@ bna_rxf_sm_cam_fltr_mod_wait(struct bna_rxf *rxf, enum bna_rxf_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(rxf->rx->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -724,7 +724,7 @@ bna_rxf_sm_started(struct bna_rxf *rxf, enum bna_rxf_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(rxf->rx->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -734,7 +734,7 @@ bna_rxf_sm_cam_fltr_clr_wait_entry(struct bna_rxf *rxf)
|
||||
/**
|
||||
* Note: Do not add rxf_clear_packet_filter here.
|
||||
* It will overstep mbox when this transition happens:
|
||||
* cam_fltr_mod_wait -> cam_fltr_clr_wait on RXF_E_STOP event
|
||||
* cam_fltr_mod_wait -> cam_fltr_clr_wait on RXF_E_STOP event
|
||||
*/
|
||||
}
|
||||
|
||||
@@ -761,7 +761,7 @@ bna_rxf_sm_cam_fltr_clr_wait(struct bna_rxf *rxf, enum bna_rxf_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(rxf->rx->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -771,7 +771,7 @@ bna_rxf_sm_stop_wait_entry(struct bna_rxf *rxf)
|
||||
/**
|
||||
* NOTE: Do not add rxf_disable here.
|
||||
* It will overstep mbox when this transition happens:
|
||||
* start_wait -> stop_wait on RXF_E_STOP event
|
||||
* start_wait -> stop_wait on RXF_E_STOP event
|
||||
*/
|
||||
}
|
||||
|
||||
@@ -815,7 +815,7 @@ bna_rxf_sm_stop_wait(struct bna_rxf *rxf, enum bna_rxf_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(rxf->rx->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -851,7 +851,7 @@ bna_rxf_sm_pause_wait(struct bna_rxf *rxf, enum bna_rxf_event event)
|
||||
* any other event during these states
|
||||
*/
|
||||
default:
|
||||
bfa_sm_fault(rxf->rx->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -887,7 +887,7 @@ bna_rxf_sm_resume_wait(struct bna_rxf *rxf, enum bna_rxf_event event)
|
||||
* any other event during these states
|
||||
*/
|
||||
default:
|
||||
bfa_sm_fault(rxf->rx->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -907,7 +907,7 @@ bna_rxf_sm_stat_clr_wait(struct bna_rxf *rxf, enum bna_rxf_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(rxf->rx->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1898,7 +1898,7 @@ static void bna_rx_sm_stopped(struct bna_rx *rx,
|
||||
/* no-op */
|
||||
break;
|
||||
default:
|
||||
bfa_sm_fault(rx->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1946,7 +1946,7 @@ static void bna_rx_sm_rxf_start_wait(struct bna_rx *rx,
|
||||
bfa_fsm_set_state(rx, bna_rx_sm_started);
|
||||
break;
|
||||
default:
|
||||
bfa_sm_fault(rx->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1981,7 +1981,7 @@ bna_rx_sm_started(struct bna_rx *rx, enum bna_rx_event event)
|
||||
bfa_fsm_set_state(rx, bna_rx_sm_rxf_stop_wait);
|
||||
break;
|
||||
default:
|
||||
bfa_sm_fault(rx->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -2011,7 +2011,7 @@ bna_rx_sm_rxf_stop_wait(struct bna_rx *rx, enum bna_rx_event event)
|
||||
bna_rxf_fail(&rx->rxf);
|
||||
break;
|
||||
default:
|
||||
bfa_sm_fault(rx->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2064,7 +2064,7 @@ bna_rx_sm_rxq_stop_wait(struct bna_rx *rx, enum bna_rx_event event)
|
||||
bfa_fsm_set_state(rx, bna_rx_sm_stopped);
|
||||
break;
|
||||
default:
|
||||
bfa_sm_fault(rx->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -3216,7 +3216,7 @@ bna_tx_sm_stopped(struct bna_tx *tx, enum bna_tx_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(tx->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3261,7 +3261,7 @@ bna_tx_sm_started(struct bna_tx *tx, enum bna_tx_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(tx->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3294,7 +3294,7 @@ bna_tx_sm_txq_stop_wait(struct bna_tx *tx, enum bna_tx_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(tx->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3335,7 +3335,7 @@ bna_tx_sm_prio_stop_wait(struct bna_tx *tx, enum bna_tx_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(tx->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3355,7 +3355,7 @@ bna_tx_sm_stat_clr_wait(struct bna_tx *tx, enum bna_tx_event event)
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(tx->bna, event);
|
||||
bfa_sm_fault(event);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+29
-29
@@ -50,12 +50,12 @@ enum bna_status {
|
||||
};
|
||||
|
||||
enum bna_cleanup_type {
|
||||
BNA_HARD_CLEANUP = 0,
|
||||
BNA_SOFT_CLEANUP = 1
|
||||
BNA_HARD_CLEANUP = 0,
|
||||
BNA_SOFT_CLEANUP = 1
|
||||
};
|
||||
|
||||
enum bna_cb_status {
|
||||
BNA_CB_SUCCESS = 0,
|
||||
BNA_CB_SUCCESS = 0,
|
||||
BNA_CB_FAIL = 1,
|
||||
BNA_CB_INTERRUPT = 2,
|
||||
BNA_CB_BUSY = 3,
|
||||
@@ -72,8 +72,8 @@ enum bna_res_type {
|
||||
};
|
||||
|
||||
enum bna_mem_type {
|
||||
BNA_MEM_T_KVA = 1,
|
||||
BNA_MEM_T_DMA = 2
|
||||
BNA_MEM_T_KVA = 1,
|
||||
BNA_MEM_T_DMA = 2
|
||||
};
|
||||
|
||||
enum bna_intr_type {
|
||||
@@ -82,10 +82,10 @@ enum bna_intr_type {
|
||||
};
|
||||
|
||||
enum bna_res_req_type {
|
||||
BNA_RES_MEM_T_COM = 0,
|
||||
BNA_RES_MEM_T_ATTR = 1,
|
||||
BNA_RES_MEM_T_FWTRC = 2,
|
||||
BNA_RES_MEM_T_STATS = 3,
|
||||
BNA_RES_MEM_T_COM = 0,
|
||||
BNA_RES_MEM_T_ATTR = 1,
|
||||
BNA_RES_MEM_T_FWTRC = 2,
|
||||
BNA_RES_MEM_T_STATS = 3,
|
||||
BNA_RES_MEM_T_SWSTATS = 4,
|
||||
BNA_RES_MEM_T_IBIDX = 5,
|
||||
BNA_RES_MEM_T_IB_ARRAY = 6,
|
||||
@@ -107,9 +107,9 @@ enum bna_res_req_type {
|
||||
enum bna_tx_res_req_type {
|
||||
BNA_TX_RES_MEM_T_TCB = 0,
|
||||
BNA_TX_RES_MEM_T_UNMAPQ = 1,
|
||||
BNA_TX_RES_MEM_T_QPT = 2,
|
||||
BNA_TX_RES_MEM_T_QPT = 2,
|
||||
BNA_TX_RES_MEM_T_SWQPT = 3,
|
||||
BNA_TX_RES_MEM_T_PAGE = 4,
|
||||
BNA_TX_RES_MEM_T_PAGE = 4,
|
||||
BNA_TX_RES_INTR_T_TXCMPL = 5,
|
||||
BNA_TX_RES_T_MAX,
|
||||
};
|
||||
@@ -158,14 +158,14 @@ enum bna_rx_type {
|
||||
};
|
||||
|
||||
enum bna_rxp_type {
|
||||
BNA_RXP_SINGLE = 1,
|
||||
BNA_RXP_SLR = 2,
|
||||
BNA_RXP_HDS = 3
|
||||
BNA_RXP_SINGLE = 1,
|
||||
BNA_RXP_SLR = 2,
|
||||
BNA_RXP_HDS = 3
|
||||
};
|
||||
|
||||
enum bna_rxmode {
|
||||
BNA_RXMODE_PROMISC = 1,
|
||||
BNA_RXMODE_ALLMULTI = 2
|
||||
BNA_RXMODE_PROMISC = 1,
|
||||
BNA_RXMODE_ALLMULTI = 2
|
||||
};
|
||||
|
||||
enum bna_rx_event {
|
||||
@@ -202,7 +202,7 @@ enum bna_rxf_oper_state {
|
||||
};
|
||||
|
||||
enum bna_rxf_flags {
|
||||
BNA_RXF_FL_STOP_PENDING = 0x01,
|
||||
BNA_RXF_FL_STOP_PENDING = 0x01,
|
||||
BNA_RXF_FL_FAILED = 0x02,
|
||||
BNA_RXF_FL_RSS_CONFIG_PENDING = 0x04,
|
||||
BNA_RXF_FL_OPERSTATE_CHANGED = 0x08,
|
||||
@@ -244,11 +244,11 @@ enum bna_port_type {
|
||||
enum bna_link_status {
|
||||
BNA_LINK_DOWN = 0,
|
||||
BNA_LINK_UP = 1,
|
||||
BNA_CEE_UP = 2
|
||||
BNA_CEE_UP = 2
|
||||
};
|
||||
|
||||
enum bna_llport_flags {
|
||||
BNA_LLPORT_F_ADMIN_UP = 1,
|
||||
BNA_LLPORT_F_ADMIN_UP = 1,
|
||||
BNA_LLPORT_F_PORT_ENABLED = 2,
|
||||
BNA_LLPORT_F_RX_STARTED = 4
|
||||
};
|
||||
@@ -304,7 +304,7 @@ struct bna_mem_descr {
|
||||
struct bna_mem_info {
|
||||
enum bna_mem_type mem_type;
|
||||
u32 len;
|
||||
u32 num;
|
||||
u32 num;
|
||||
u32 align_sz; /* 0/1 = no alignment */
|
||||
struct bna_mem_descr *mdl;
|
||||
void *cookie; /* For bnad to unmap dma later */
|
||||
@@ -371,10 +371,10 @@ struct bna_mbox_qe {
|
||||
struct list_head qe;
|
||||
|
||||
struct bfa_mbox_cmd cmd;
|
||||
u32 cmd_len;
|
||||
u32 cmd_len;
|
||||
/* Callback for port, tx, rx, rxf */
|
||||
void (*cbfn)(void *arg, int status);
|
||||
void *cbarg;
|
||||
void *cbarg;
|
||||
};
|
||||
|
||||
struct bna_mbox_mod {
|
||||
@@ -480,7 +480,7 @@ struct bna_ib_dbell {
|
||||
|
||||
/* Interrupt timer configuration */
|
||||
struct bna_ib_config {
|
||||
u8 coalescing_timeo; /* Unit is 5usec. */
|
||||
u8 coalescing_timeo; /* Unit is 5usec. */
|
||||
|
||||
int interpkt_count;
|
||||
int interpkt_timeo;
|
||||
@@ -576,8 +576,8 @@ struct bna_txq {
|
||||
|
||||
struct bna_tx *tx;
|
||||
|
||||
u64 tx_packets;
|
||||
u64 tx_bytes;
|
||||
u64 tx_packets;
|
||||
u64 tx_bytes;
|
||||
};
|
||||
|
||||
/* TxF structure (hardware Tx Function) */
|
||||
@@ -739,10 +739,10 @@ struct bna_rxq {
|
||||
struct bna_rxp *rxp;
|
||||
struct bna_rx *rx;
|
||||
|
||||
u64 rx_packets;
|
||||
u64 rx_packets;
|
||||
u64 rx_bytes;
|
||||
u64 rx_packets_with_error;
|
||||
u64 rxbuf_alloc_failed;
|
||||
u64 rx_packets_with_error;
|
||||
u64 rxbuf_alloc_failed;
|
||||
};
|
||||
|
||||
/* RxQ pair */
|
||||
@@ -902,7 +902,7 @@ struct bna_rxf {
|
||||
* callback for:
|
||||
* bna_rxf_ucast_set()
|
||||
* bna_rxf_{ucast/mcast}_add(),
|
||||
* bna_rxf_{ucast/mcast}_del(),
|
||||
* bna_rxf_{ucast/mcast}_del(),
|
||||
* bna_rxf_mode_set()
|
||||
*/
|
||||
void (*cam_fltr_cbfn)(struct bnad *bnad, struct bna_rx *rx,
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user