Page MenuHomeFreeBSD

D57435.id179193.diff
No OneTemporary

D57435.id179193.diff

diff --git a/sys/dev/aq/aq_common.h b/sys/dev/aq/aq_common.h
--- a/sys/dev/aq/aq_common.h
+++ b/sys/dev/aq/aq_common.h
@@ -38,9 +38,6 @@
#include <sys/types.h>
-#define ETIME ETIMEDOUT
-#define EOK 0
-
#define BIT(nr) (1UL << (nr))
#define usec_delay(x) DELAY(x)
@@ -50,16 +47,12 @@
#define msec_delay_irq(x) DELAY(x*1000)
#endif
-#define AQ_HW_WAIT_FOR(_B_, _US_, _N_) \
-do { \
- unsigned int i; \
- for (i = _N_; (!(_B_)) && i; --i) { \
+#define AQ_HW_WAIT_FOR(_B_, _US_, _N_) ({ \
+ unsigned int _i; \
+ for (_i = (_N_); !(_B_) && _i; --_i) \
usec_delay(_US_); \
- } \
- if (!i) { \
- err = -1; \
- } \
-} while (0)
+ (_i == 0) ? ETIMEDOUT : 0; \
+})
#define LOWORD(a) ((uint16_t)(a))
diff --git a/sys/dev/aq/aq_fw.c b/sys/dev/aq/aq_fw.c
--- a/sys/dev/aq/aq_fw.c
+++ b/sys/dev/aq/aq_fw.c
@@ -112,7 +112,7 @@
if (k == 1000) {
aq_log_error("Neither RBL nor FLB started");
- return (-EBUSY);
+ return (EBUSY);
}
hw->rbl_enabled = bootExitCode != 0;
@@ -133,7 +133,7 @@
aq_fw_bootloader_mode mode = boot_mode_unknown;
int err = mac_soft_reset_(hw, &mode);
- if (err < 0) {
+ if (err != 0) {
aq_log_error("MAC reset failed: %d", err);
return (err);
}
@@ -151,12 +151,12 @@
case boot_mode_unknown:
aq_log_error("F/W bootload error: unknown bootloader type");
- return (-ENOTSUP);
+ return (ENOTSUP);
case boot_mode_rbl_host_bootload:
#if AQ_CFG_HOST_BOOT_DISABLE
aq_log_error("RBL> Host Bootload mode: this driver does not support Host Boot");
- return (-ENOTSUP);
+ return (ENOTSUP);
#else
trace(dbg_init, "RBL> Host Bootload mode");
break;
@@ -168,7 +168,7 @@
*/
aq_log_error("RBL> F/W Host Bootload not implemented");
- return (-ENOTSUP);
+ return (ENOTSUP);
}
int
@@ -184,16 +184,16 @@
if (hw->fw_version.major_version == 1) {
trace(dbg_init, "using F/W ops v1.x");
hw->fw_ops = &aq_fw1x_ops;
- return (EOK);
+ return (0);
} else if (hw->fw_version.major_version >= 2) {
trace(dbg_init, "using F/W ops v2.x");
hw->fw_ops = &aq_fw2x_ops;
- return (EOK);
+ return (0);
}
aq_log_error("aq_fw_ops_init(): invalid F/W version %#x",
hw->fw_version.raw);
- return (-ENOTSUP);
+ return (ENOTSUP);
}
@@ -260,7 +260,7 @@
if (flb_status == 0) {
trace_error(dbg_init,
"FLB> MAC kickstart failed: timed out");
- return (false);
+ return (ETIMEDOUT);
}
trace(dbg_init, "FLB> MAC kickstart done, %d ms", k);
@@ -290,11 +290,11 @@
if (!restart_completed) {
trace_error(dbg_init, "FLB> Global Soft Reset failed");
- return (false);
+ return (ETIMEDOUT);
}
trace(dbg_init, "FLB> F/W restart: %d ms", k * 10);
- return (true);
+ return (0);
}
int
@@ -331,7 +331,7 @@
if (rbl_status == 0 || rbl_status == 0xDEAD) {
trace_error(dbg_init, "RBL> RBL restart failed: timeout");
- return (-EBUSY);
+ return (EBUSY);
}
if (rbl_status == RBL_STATUS_SUCCESS) {
@@ -344,10 +344,10 @@
trace(dbg_init, "RBL> reset complete! [Host Bootload]");
} else {
trace_error(dbg_init, "unknown RBL status 0x%x", rbl_status);
- return (-EBUSY);
+ return (EBUSY);
}
- return (EOK);
+ return (0);
}
int
@@ -355,12 +355,12 @@
{
for (int i = 0; i < MAC_FW_START_TIMEOUT_MS; ++i) {
if ((hw->fw_version.raw = AQ_READ_REG(hw, 0x18)) != 0)
- return (EOK);
+ return (0);
msec_delay(1);
}
trace_error(dbg_init,
"timeout waiting for reg 0x18. MAC f/w NOT READY");
- return (-EBUSY);
+ return (EBUSY);
}
diff --git a/sys/dev/aq/aq_fw1x.c b/sys/dev/aq/aq_fw1x.c
--- a/sys/dev/aq/aq_fw1x.c
+++ b/sys/dev/aq/aq_fw1x.c
@@ -186,7 +186,7 @@
* Compare transaction ID to initial value.
* If it's different means f/w is alive. We're done.
*/
- return (EOK);
+ return (0);
}
/*
@@ -197,7 +197,7 @@
}
trace_error(dbg_init, "F/W 1.x reset finalize timeout");
- return (-EBUSY);
+ return (EBUSY);
}
int
@@ -213,7 +213,7 @@
AQ_WRITE_REG(hw, FW1X_MPI_CONTROL_ADR, state.val);
- return (EOK);
+ return (0);
}
int
@@ -250,15 +250,15 @@
*fc = aq_fw_fc_none;
- AQ_DBG_EXIT(EOK);
- return (EOK);
+ AQ_DBG_EXIT(0);
+ return (0);
}
int
fw1x_get_mac_addr(struct aq_hw* hw, uint8_t* mac)
{
- int err = -EFAULT;
+ int err = EFAULT;
uint32_t mac_addr[2];
AQ_DBG_ENTER();
@@ -266,13 +266,13 @@
uint32_t efuse_shadow_addr = AQ_READ_REG(hw, 0x374);
if (efuse_shadow_addr == 0) {
trace_error(dbg_init, "couldn't read eFUSE Shadow Address");
- AQ_DBG_EXIT(-EFAULT);
- return (-EFAULT);
+ AQ_DBG_EXIT(EFAULT);
+ return (EFAULT);
}
err = aq_hw_fw_downld_dwords(hw, efuse_shadow_addr + (40 * 4),
mac_addr, ARRAY_SIZE(mac_addr));
- if (err < 0) {
+ if (err != 0) {
mac_addr[0] = 0;
mac_addr[1] = 0;
AQ_DBG_EXIT(err);
@@ -287,8 +287,8 @@
trace(dbg_init, "fw1x> eFUSE MAC addr -> %02x-%02x-%02x-%02x-%02x-%02x",
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
- AQ_DBG_EXIT(EOK);
- return (EOK);
+ AQ_DBG_EXIT(0);
+ return (0);
}
int
@@ -300,7 +300,7 @@
err = aq_hw_fw_downld_dwords(hw, hw->mbox_addr,
(uint32_t*)(void*)&hw->mbox, sizeof hw->mbox / sizeof(uint32_t));
- if (err >= 0) {
+ if (err == 0) {
if (stats != &hw->mbox.stats)
memcpy(stats, &hw->mbox.stats, sizeof *stats);
diff --git a/sys/dev/aq/aq_fw2x.c b/sys/dev/aq/aq_fw2x.c
--- a/sys/dev/aq/aq_fw2x.c
+++ b/sys/dev/aq/aq_fw2x.c
@@ -240,7 +240,7 @@
int err = aq_hw_fw_downld_dwords(hw,
hw->mbox_addr + offsetof(fw2x_mailbox, caps),
(uint32_t*)&caps, sizeof caps/sizeof(uint32_t));
- if (err == EOK) {
+ if (err == 0) {
hw->fw_caps = caps.caps_lo | ((uint64_t)caps.caps_hi << 32);
trace(dbg_init,
"fw2x> F/W capabilities mask = %llx",
@@ -250,8 +250,8 @@
"fw2x> can't get F/W capabilities mask, error %d", err);
}
- AQ_DBG_EXIT(EOK);
- return (EOK);
+ AQ_DBG_EXIT(err);
+ return (err);
}
@@ -310,12 +310,12 @@
default:
trace_error(dbg_init, "fw2x> unknown MPI state %d", mode);
- return (-EINVAL);
+ return (EINVAL);
}
set_mpi_ctrl_(hw, mpi_ctrl);
- AQ_DBG_EXIT(EOK);
- return (EOK);
+ AQ_DBG_EXIT(0);
+ return (0);
}
int
@@ -355,14 +355,14 @@
(32 + CAPS_HI_PAUSE);
// AQ_DBG_EXIT(0);
- return (EOK);
+ return (0);
}
int
fw2x_get_mac_addr(struct aq_hw* hw, uint8_t* mac)
{
- int err = -EFAULT;
+ int err = EFAULT;
uint32_t mac_addr[2];
AQ_DBG_ENTER();
@@ -370,13 +370,13 @@
uint32_t efuse_shadow_addr = AQ_READ_REG(hw, 0x364);
if (efuse_shadow_addr == 0) {
trace_error(dbg_init, "couldn't read eFUSE Shadow Address");
- AQ_DBG_EXIT(-EFAULT);
- return (-EFAULT);
+ AQ_DBG_EXIT(EFAULT);
+ return (EFAULT);
}
err = aq_hw_fw_downld_dwords(hw, efuse_shadow_addr + (40 * 4), mac_addr,
ARRAY_SIZE(mac_addr));
- if (err < 0) {
+ if (err != 0) {
mac_addr[0] = 0;
mac_addr[1] = 0;
AQ_DBG_EXIT(err);
@@ -388,8 +388,8 @@
memcpy(mac, (uint8_t*)mac_addr, ETHER_ADDR_LEN);
- AQ_DBG_EXIT(EOK);
- return (EOK);
+ AQ_DBG_EXIT(0);
+ return (0);
}
static inline void
@@ -468,14 +468,14 @@
if ((hw->fw_caps & FW2X_CAP_STATISTICS) == 0) {
trace_warn(dbg_fw, "fw2x> statistics not supported by F/W");
- return (-ENOTSUP);
+ return (ENOTSUP);
}
// Tell F/W to update the statistics.
if (!toggle_mpi_ctrl_and_wait_(hw, FW2X_CAP_STATISTICS, 1, 25)) {
trace_error(dbg_fw, "fw2x> statistics update timeout");
- AQ_DBG_EXIT(-ETIME);
- return (-ETIME);
+ AQ_DBG_EXIT(ETIMEDOUT);
+ return (ETIMEDOUT);
}
err = aq_hw_fw_downld_dwords(hw,
@@ -484,7 +484,7 @@
fw2x_stats_to_fw_stats_(stats, &fw2x_stats);
- if (err != EOK)
+ if (err != 0)
trace_error(dbg_fw,
"fw2x> download statistics data FAILED, error %d", err);
diff --git a/sys/dev/aq/aq_hw.c b/sys/dev/aq/aq_hw.c
--- a/sys/dev/aq/aq_hw.c
+++ b/sys/dev/aq/aq_hw.c
@@ -81,16 +81,16 @@
int err = 0;
// AQ_DBG_ENTER();
- AQ_HW_WAIT_FOR(reg_glb_cpu_sem_get(hw, AQ_HW_FW_SM_RAM) == 1U, 1U,
+ err = AQ_HW_WAIT_FOR(reg_glb_cpu_sem_get(hw, AQ_HW_FW_SM_RAM) == 1U, 1U,
10000U);
- if (err < 0) {
+ if (err != 0) {
bool is_locked;
reg_glb_cpu_sem_set(hw, 1U, AQ_HW_FW_SM_RAM);
is_locked = reg_glb_cpu_sem_get(hw, AQ_HW_FW_SM_RAM);
if (!is_locked) {
- err = -ETIME;
+ err = ETIMEDOUT;
goto err_exit;
}
}
@@ -101,10 +101,10 @@
mif_mcp_up_mailbox_execute_operation_set(hw, 1);
if (IS_CHIP_FEATURE(hw, REVISION_B1))
- AQ_HW_WAIT_FOR(a != mif_mcp_up_mailbox_addr_get(hw),
+ err = AQ_HW_WAIT_FOR(a != mif_mcp_up_mailbox_addr_get(hw),
1U, 1000U);
else
- AQ_HW_WAIT_FOR(!mif_mcp_up_mailbox_busy_get(hw), 1,
+ err = AQ_HW_WAIT_FOR(!mif_mcp_up_mailbox_busy_get(hw), 1,
1000U);
*(p++) = mif_mcp_up_mailbox_data_get(hw);
@@ -142,16 +142,16 @@
hw->fw_version.raw = 0;
err = aq_fw_reset(hw);
- if (err != EOK) {
+ if (err != 0) {
aq_log_error("aq_hw_init_ucp(): F/W reset failed, err %d", err);
return (err);
}
aq_hw_chip_features_init(hw, &hw->chip_features);
err = aq_fw_ops_init(hw);
- if (err < 0) {
+ if (err != 0) {
aq_log_error("could not initialize F/W ops, err %d", err);
- return (-1);
+ return (err);
}
if (hw->fw_version.major_version == 1) {
@@ -169,7 +169,7 @@
}
/* check 10 times by 1ms */
- AQ_HW_WAIT_FOR((hw->mbox_addr = AQ_READ_REG(hw, 0x360)) != 0, 400U, 20);
+ err = AQ_HW_WAIT_FOR((hw->mbox_addr = AQ_READ_REG(hw, 0x360)) != 0, 400U, 20);
aq_hw_fw_version ver_expected = { .raw = AQ_CFG_FW_MIN_VER_EXPECTED };
if (!aq_hw_ver_match(&ver_expected, &hw->fw_version))
@@ -187,7 +187,7 @@
AQ_DBG_ENTER();
err = aq_hw_init_ucp(hw);
- if (err < 0)
+ if (err != 0)
goto err_exit;
err_exit:
@@ -204,11 +204,11 @@
if (hw->fw_ops && hw->fw_ops->get_stats) {
err = hw->fw_ops->get_stats(hw, &pmbox->stats);
} else {
- err = -ENOTSUP;
+ err = ENOTSUP;
aq_log_error("get_stats() not supported by F/W");
}
- if (err == EOK) {
+ if (err == 0) {
pmbox->stats.dpc = reg_rx_dma_stat_counter7get(hw);
pmbox->stats.cprc = stats_rx_lro_coalesced_pkt_count0_get(hw);
}
@@ -220,7 +220,7 @@
static int
aq_hw_mpi_set(struct aq_hw *hw, enum aq_hw_fw_mpi_state_e state, uint32_t speed)
{
- int err = -ENOTSUP;
+ int err = ENOTSUP;
AQ_DBG_ENTERA("speed %d", speed);
if (hw->fw_ops && hw->fw_ops->set_mode) {
@@ -242,7 +242,7 @@
int
aq_hw_get_link_state(struct aq_hw *hw, uint32_t *link_speed, struct aq_hw_fc_info *fc_neg)
{
- int err = EOK;
+ int err = 0;
// AQ_DBG_ENTER();
@@ -254,11 +254,11 @@
err = hw->fw_ops->get_mode(hw, &mode, &speed, &fc);
} else {
aq_log_error("get_mode() not supported by F/W");
- AQ_DBG_EXIT(-ENOTSUP);
- return (-ENOTSUP);
+ AQ_DBG_EXIT(ENOTSUP);
+ return (ENOTSUP);
}
- if (err < 0) {
+ if (err != 0) {
aq_log_error("get_mode() failed, err %d", err);
AQ_DBG_EXIT(err);
return (err);
@@ -298,7 +298,7 @@
int
aq_hw_get_mac_permanent(struct aq_hw *hw, uint8_t *mac)
{
- int err = -ENOTSUP;
+ int err = ENOTSUP;
AQ_DBG_ENTER();
if (hw->fw_ops && hw->fw_ops->get_mac_addr)
@@ -330,7 +330,7 @@
h >>= 8;
mac[0] = (uint8_t)(0xFFU & h);
- err = EOK;
+ err = 0;
}
AQ_DBG_EXIT(err);
@@ -366,15 +366,15 @@
AQ_DBG_ENTER();
err = aq_fw_reset(hw);
- if (err < 0)
+ if (err != 0)
goto err_exit;
itr_irq_reg_res_dis_set(hw, 0);
itr_res_irq_set(hw, 1);
/* check 10 times by 1ms */
- AQ_HW_WAIT_FOR(itr_res_irq_get(hw) == 0, 1000, 10);
- if (err < 0) {
+ err = AQ_HW_WAIT_FOR(itr_res_irq_get(hw) == 0, 1000, 10);
+ if (err != 0) {
printf("atlantic: IRQ reset failed: %d", err);
goto err_exit;
}
@@ -451,21 +451,14 @@
/* TX checksums offloads*/
tpo_ipv4header_crc_offload_en_set(hw, 1);
tpo_tcp_udp_crc_offload_en_set(hw, 1);
- if (err < 0)
- goto err_exit;
/* RX checksums offloads*/
rpo_ipv4header_crc_offload_en_set(hw, 1);
rpo_tcp_udp_crc_offload_en_set(hw, 1);
- if (err < 0)
- goto err_exit;
/* LSO offloads*/
tdm_large_send_offload_en_set(hw, 0xFFFFFFFFU);
- if (err < 0)
- goto err_exit;
-/* LRO offloads */
{
uint32_t i = 0;
uint32_t val = (8U < HW_ATL_B0_LRO_RXD_MAX) ? 0x3U :
@@ -500,7 +493,6 @@
err = aq_hw_err_from_flags(hw);
-err_exit:
AQ_DBG_EXIT(err);
return (err);
}
@@ -601,7 +593,7 @@
AQ_DBG_ENTER();
if (!mac_addr) {
- err = -EINVAL;
+ err = EINVAL;
goto err_exit;
}
h = (mac_addr[0] << 8) | (mac_addr[1]);
@@ -649,7 +641,7 @@
aq_hw_qos_set(hw);
err = aq_hw_err_from_flags(hw);
- if (err < 0)
+ if (err != 0)
goto err_exit;
/* Interrupts */
@@ -830,9 +822,9 @@
rpf_rss_key_wr_data_set(self, key_data);
rpf_rss_key_addr_set(self, addr);
rpf_rss_key_wr_en_set(self, 1U);
- AQ_HW_WAIT_FOR(rpf_rss_key_wr_en_get(self) == 0,
+ err = AQ_HW_WAIT_FOR(rpf_rss_key_wr_en_get(self) == 0,
1000U, 10U);
- if (err < 0)
+ if (err != 0)
goto err_exit;
}
@@ -894,9 +886,9 @@
rpf_rss_redir_tbl_wr_data_set(self, bitary[i]);
rpf_rss_redir_tbl_addr_set(self, i);
rpf_rss_redir_wr_en_set(self, 1U);
- AQ_HW_WAIT_FOR(rpf_rss_redir_wr_en_get(self) == 0,
+ err = AQ_HW_WAIT_FOR(rpf_rss_redir_wr_en_get(self) == 0,
1000U, 10U);
- if (err < 0)
+ if (err != 0)
goto err_exit;
}
diff --git a/sys/dev/aq/aq_main.c b/sys/dev/aq/aq_main.c
--- a/sys/dev/aq/aq_main.c
+++ b/sys/dev/aq/aq_main.c
@@ -363,7 +363,7 @@
/* Look up ops and caps. */
rc = aq_hw_mpi_create(hw);
- if (rc < 0) {
+ if (rc != 0) {
AQ_DBG_ERROR(" %s: aq_hw_mpi_create fail err=%d", __func__, rc);
goto fail;
}
@@ -375,10 +375,11 @@
aq_hw_reset(&softc->hw);
aq_hw_capabilities(softc);
- if (aq_hw_get_mac_permanent(hw, hw->mac_addr) < 0) {
+ rc = aq_hw_get_mac_permanent(hw, hw->mac_addr);
+ if (rc != 0) {
AQ_DBG_ERROR("Unable to get mac addr from hw");
goto fail;
- };
+ }
softc->admin_ticks = 0;
@@ -417,7 +418,11 @@
/* iflib will map and release this bar */
scctx->isc_msix_bar = pci_msix_table_bar(softc->dev);
- softc->vlan_tags = bit_alloc(4096, M_AQ, M_NOWAIT);
+ softc->vlan_tags = bit_alloc(4096, M_AQ, M_NOWAIT);
+ if (softc->vlan_tags == NULL) {
+ rc = ENOMEM;
+ goto fail;
+ }
AQ_DBG_EXIT(rc);
return (rc);
@@ -428,7 +433,7 @@
softc->mmio_rid, softc->mmio_res);
AQ_DBG_EXIT(rc);
- return (ENXIO);
+ return (rc);
}
@@ -670,7 +675,7 @@
err = aq_hw_init(&softc->hw, softc->hw.mac_addr, softc->msix,
softc->scctx->isc_intr == IFLIB_INTR_MSIX);
- if (err != EOK) {
+ if (err != 0) {
device_printf(softc->dev, "atlantic: aq_hw_init: %d", err);
}
@@ -686,7 +691,7 @@
"atlantic: aq_ring_tx_init: %d", err);
}
err = aq_ring_tx_start(hw, ring);
- if (err != EOK) {
+ if (err != 0) {
device_printf(softc->dev,
"atlantic: aq_ring_tx_start: %d", err);
}
@@ -699,7 +704,7 @@
"atlantic: aq_ring_rx_init: %d", err);
}
err = aq_ring_rx_start(hw, ring);
- if (err != EOK) {
+ if (err != 0) {
device_printf(softc->dev,
"atlantic: aq_ring_rx_start: %d", err);
}

File Metadata

Mime Type
text/plain
Expires
Tue, Jun 23, 2:13 AM (12 h, 36 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34187016
Default Alt Text
D57435.id179193.diff (14 KB)

Event Timeline