Hi,
Link state change interrupt was not generated due to a missing bit in
the MAC event register. This fixes at least carp and ifstated for 5709
chip (eg. in Dell R610).
Note that Broadcom Linux driver also sets STATUS_ATTN_BITS_TIMER_ABORT
on the same go which I is detection for a hung pci bus. Code for this
interrupt is missing in the bnx_phy_intr() handler, so I left it out
for now. If you have any ideas how to test it, I can try porting the
handler code.
--- sys/dev/pci/if_bnx.c Fri Oct 30 21:04:04 2009
+++ sys/dev/pci/if_bnx.c Fri Oct 30 21:05:56 2009
@@ -3461,6 +3461,7 @@
/* Set up link change interrupt generation. */
REG_WR(sc, BNX_EMAC_ATTENTION_ENA, BNX_EMAC_ATTENTION_ENA_LINK);
+ REG_WR(sc, BNX_HC_ATTN_BITS_ENABLE, STATUS_ATTN_BITS_LINK_STATE);
/* Program the physical address of the status block. */
REG_WR(sc, BNX_HC_STATUS_ADDR_L, (u_int32_t)(sc->status_block_paddr));
--
Atte Peltomdki
[email protected] <> http://kameli.org
"Your effort to remain what you are is what limits you"