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"

Reply via email to