]> git.karo-electronics.de Git - linux-beck.git/blobdiff - drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[linux-beck.git] / drivers / net / ethernet / broadcom / bnx2x / bnx2x_main.c
index 91a0434ce1bdb5d640af56dc46b89a97aa240f6a..a024eec94be1eb166694d4d220c7f7d943d92676 100644 (file)
@@ -6030,10 +6030,11 @@ void bnx2x_nic_init_cnic(struct bnx2x *bp)
        mmiowb();
 }
 
-void bnx2x_nic_init(struct bnx2x *bp, u32 load_code)
+void bnx2x_pre_irq_nic_init(struct bnx2x *bp)
 {
        int i;
 
+       /* Setup NIC internals and enable interrupts */
        for_each_eth_queue(bp, i)
                bnx2x_init_eth_fp(bp, i);
 
@@ -6041,19 +6042,27 @@ void bnx2x_nic_init(struct bnx2x *bp, u32 load_code)
        rmb();
        bnx2x_init_rx_rings(bp);
        bnx2x_init_tx_rings(bp);
+
        if (IS_VF(bp)) {
                bnx2x_memset_stats(bp);
                return;
        }
 
-       /* Initialize MOD_ABS interrupts */
-       bnx2x_init_mod_abs_int(bp, &bp->link_vars, bp->common.chip_id,
-                              bp->common.shmem_base, bp->common.shmem2_base,
-                              BP_PORT(bp));
+       if (IS_PF(bp)) {
+               /* Initialize MOD_ABS interrupts */
+               bnx2x_init_mod_abs_int(bp, &bp->link_vars, bp->common.chip_id,
+                                      bp->common.shmem_base,
+                                      bp->common.shmem2_base, BP_PORT(bp));
+
+               /* initialize the default status block and sp ring */
+               bnx2x_init_def_sb(bp);
+               bnx2x_update_dsb_idx(bp);
+               bnx2x_init_sp_ring(bp);
+       }
+}
 
-       bnx2x_init_def_sb(bp);
-       bnx2x_update_dsb_idx(bp);
-       bnx2x_init_sp_ring(bp);
+void bnx2x_post_irq_nic_init(struct bnx2x *bp, u32 load_code)
+{
        bnx2x_init_eq_ring(bp);
        bnx2x_init_internal(bp, load_code);
        bnx2x_pf_init(bp);
@@ -6071,12 +6080,7 @@ void bnx2x_nic_init(struct bnx2x *bp, u32 load_code)
                                   AEU_INPUTS_ATTN_BITS_SPIO5);
 }
 
-/* end of nic init */
-
-/*
- * gzip service functions
- */
-
+/* gzip service functions */
 static int bnx2x_gunzip_init(struct bnx2x *bp)
 {
        bp->gunzip_buf = dma_alloc_coherent(&bp->pdev->dev, FW_BUF_SIZE,