aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/broadcom
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2013-04-30 03:50:54 -0400
committerDavid S. Miller <davem@davemloft.net>2013-04-30 03:55:20 -0400
commit58717686cf7c7f5a70b3a8907ade8a3ce74306b1 (patch)
tree57f5d78524bfd5e65aa9f3943da9c1a3e6ff65b7 /drivers/net/ethernet/broadcom
parentcff63a52924c6a78fa525c67d81480c85736ff3c (diff)
parent79f632c71bea0d0864d84d6a4ce78da5a9430f5b (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c drivers/net/ethernet/emulex/benet/be.h include/net/tcp.h net/mac802154/mac802154.h Most conflicts were minor overlapping stuff. The be2net driver brought in some fixes that added __vlan_put_tag calls, which in net-next take an additional argument. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/broadcom')
-rw-r--r--drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c11
-rw-r--r--drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h19
-rw-r--r--drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c32
3 files changed, 41 insertions, 21 deletions
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
index 466b512cda4f..b8fbe266ab68 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
@@ -1044,6 +1044,7 @@ static irqreturn_t bnx2x_msix_fp_int(int irq, void *fp_cookie)
1044 DP(NETIF_MSG_INTR, 1044 DP(NETIF_MSG_INTR,
1045 "got an MSI-X interrupt on IDX:SB [fp %d fw_sd %d igusb %d]\n", 1045 "got an MSI-X interrupt on IDX:SB [fp %d fw_sd %d igusb %d]\n",
1046 fp->index, fp->fw_sb_id, fp->igu_sb_id); 1046 fp->index, fp->fw_sb_id, fp->igu_sb_id);
1047
1047 bnx2x_ack_sb(bp, fp->igu_sb_id, USTORM_ID, 0, IGU_INT_DISABLE, 0); 1048 bnx2x_ack_sb(bp, fp->igu_sb_id, USTORM_ID, 0, IGU_INT_DISABLE, 0);
1048 1049
1049#ifdef BNX2X_STOP_ON_ERROR 1050#ifdef BNX2X_STOP_ON_ERROR
@@ -1725,7 +1726,7 @@ static int bnx2x_req_irq(struct bnx2x *bp)
1725 return request_irq(irq, bnx2x_interrupt, flags, bp->dev->name, bp->dev); 1726 return request_irq(irq, bnx2x_interrupt, flags, bp->dev->name, bp->dev);
1726} 1727}
1727 1728
1728static int bnx2x_setup_irqs(struct bnx2x *bp) 1729int bnx2x_setup_irqs(struct bnx2x *bp)
1729{ 1730{
1730 int rc = 0; 1731 int rc = 0;
1731 if (bp->flags & USING_MSIX_FLAG && 1732 if (bp->flags & USING_MSIX_FLAG &&
@@ -2581,6 +2582,8 @@ int bnx2x_nic_load(struct bnx2x *bp, int load_mode)
2581 } 2582 }
2582 } 2583 }
2583 2584
2585 bnx2x_pre_irq_nic_init(bp);
2586
2584 /* Connect to IRQs */ 2587 /* Connect to IRQs */
2585 rc = bnx2x_setup_irqs(bp); 2588 rc = bnx2x_setup_irqs(bp);
2586 if (rc) { 2589 if (rc) {
@@ -2590,11 +2593,11 @@ int bnx2x_nic_load(struct bnx2x *bp, int load_mode)
2590 LOAD_ERROR_EXIT(bp, load_error2); 2593 LOAD_ERROR_EXIT(bp, load_error2);
2591 } 2594 }
2592 2595
2593 /* Setup NIC internals and enable interrupts */
2594 bnx2x_nic_init(bp, load_code);
2595
2596 /* Init per-function objects */ 2596 /* Init per-function objects */
2597 if (IS_PF(bp)) { 2597 if (IS_PF(bp)) {
2598 /* Setup NIC internals and enable interrupts */
2599 bnx2x_post_irq_nic_init(bp, load_code);
2600
2598 bnx2x_init_bp_objs(bp); 2601 bnx2x_init_bp_objs(bp);
2599 bnx2x_iov_nic_init(bp); 2602 bnx2x_iov_nic_init(bp);
2600 2603
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h
index 54e1b149acb3..151675d66b0d 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h
@@ -295,16 +295,29 @@ void bnx2x_int_disable_sync(struct bnx2x *bp, int disable_hw);
295void bnx2x_nic_init_cnic(struct bnx2x *bp); 295void bnx2x_nic_init_cnic(struct bnx2x *bp);
296 296
297/** 297/**
298 * bnx2x_nic_init - init driver internals. 298 * bnx2x_preirq_nic_init - init driver internals.
299 * 299 *
300 * @bp: driver handle 300 * @bp: driver handle
301 * 301 *
302 * Initializes: 302 * Initializes:
303 * - rings 303 * - fastpath object
304 * - fastpath rings
305 * etc.
306 */
307void bnx2x_pre_irq_nic_init(struct bnx2x *bp);
308
309/**
310 * bnx2x_postirq_nic_init - init driver internals.
311 *
312 * @bp: driver handle
313 * @load_code: COMMON, PORT or FUNCTION
314 *
315 * Initializes:
304 * - status blocks 316 * - status blocks
317 * - slowpath rings
305 * - etc. 318 * - etc.
306 */ 319 */
307void bnx2x_nic_init(struct bnx2x *bp, u32 load_code); 320void bnx2x_post_irq_nic_init(struct bnx2x *bp, u32 load_code);
308/** 321/**
309 * bnx2x_alloc_mem_cnic - allocate driver's memory for cnic. 322 * bnx2x_alloc_mem_cnic - allocate driver's memory for cnic.
310 * 323 *
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index 91a0434ce1bd..a024eec94be1 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -6030,10 +6030,11 @@ void bnx2x_nic_init_cnic(struct bnx2x *bp)
6030 mmiowb(); 6030 mmiowb();
6031} 6031}
6032 6032
6033void bnx2x_nic_init(struct bnx2x *bp, u32 load_code) 6033void bnx2x_pre_irq_nic_init(struct bnx2x *bp)
6034{ 6034{
6035 int i; 6035 int i;
6036 6036
6037 /* Setup NIC internals and enable interrupts */
6037 for_each_eth_queue(bp, i) 6038 for_each_eth_queue(bp, i)
6038 bnx2x_init_eth_fp(bp, i); 6039 bnx2x_init_eth_fp(bp, i);
6039 6040
@@ -6041,19 +6042,27 @@ void bnx2x_nic_init(struct bnx2x *bp, u32 load_code)
6041 rmb(); 6042 rmb();
6042 bnx2x_init_rx_rings(bp); 6043 bnx2x_init_rx_rings(bp);
6043 bnx2x_init_tx_rings(bp); 6044 bnx2x_init_tx_rings(bp);
6045
6044 if (IS_VF(bp)) { 6046 if (IS_VF(bp)) {
6045 bnx2x_memset_stats(bp); 6047 bnx2x_memset_stats(bp);
6046 return; 6048 return;
6047 } 6049 }
6048 6050
6049 /* Initialize MOD_ABS interrupts */ 6051 if (IS_PF(bp)) {
6050 bnx2x_init_mod_abs_int(bp, &bp->link_vars, bp->common.chip_id, 6052 /* Initialize MOD_ABS interrupts */
6051 bp->common.shmem_base, bp->common.shmem2_base, 6053 bnx2x_init_mod_abs_int(bp, &bp->link_vars, bp->common.chip_id,
6052 BP_PORT(bp)); 6054 bp->common.shmem_base,
6055 bp->common.shmem2_base, BP_PORT(bp));
6056
6057 /* initialize the default status block and sp ring */
6058 bnx2x_init_def_sb(bp);
6059 bnx2x_update_dsb_idx(bp);
6060 bnx2x_init_sp_ring(bp);
6061 }
6062}
6053 6063
6054 bnx2x_init_def_sb(bp); 6064void bnx2x_post_irq_nic_init(struct bnx2x *bp, u32 load_code)
6055 bnx2x_update_dsb_idx(bp); 6065{
6056 bnx2x_init_sp_ring(bp);
6057 bnx2x_init_eq_ring(bp); 6066 bnx2x_init_eq_ring(bp);
6058 bnx2x_init_internal(bp, load_code); 6067 bnx2x_init_internal(bp, load_code);
6059 bnx2x_pf_init(bp); 6068 bnx2x_pf_init(bp);
@@ -6071,12 +6080,7 @@ void bnx2x_nic_init(struct bnx2x *bp, u32 load_code)
6071 AEU_INPUTS_ATTN_BITS_SPIO5); 6080 AEU_INPUTS_ATTN_BITS_SPIO5);
6072} 6081}
6073 6082
6074/* end of nic init */ 6083/* gzip service functions */
6075
6076/*
6077 * gzip service functions
6078 */
6079
6080static int bnx2x_gunzip_init(struct bnx2x *bp) 6084static int bnx2x_gunzip_init(struct bnx2x *bp)
6081{ 6085{
6082 bp->gunzip_buf = dma_alloc_coherent(&bp->pdev->dev, FW_BUF_SIZE, 6086 bp->gunzip_buf = dma_alloc_coherent(&bp->pdev->dev, FW_BUF_SIZE,