diff options
Diffstat (limited to 'drivers/net/ethernet/broadcom')
| -rw-r--r-- | drivers/net/ethernet/broadcom/bnx2.c | 4 | ||||
| -rw-r--r-- | drivers/net/ethernet/broadcom/bnx2x/bnx2x.h | 2 | ||||
| -rw-r--r-- | drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 12 | ||||
| -rw-r--r-- | drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 31 | ||||
| -rw-r--r-- | drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h | 2 | ||||
| -rw-r--r-- | drivers/net/ethernet/broadcom/tg3.c | 52 | 
6 files changed, 36 insertions, 67 deletions
diff --git a/drivers/net/ethernet/broadcom/bnx2.c b/drivers/net/ethernet/broadcom/bnx2.c index 79cebd8525c..d4310700c7a 100644 --- a/drivers/net/ethernet/broadcom/bnx2.c +++ b/drivers/net/ethernet/broadcom/bnx2.c @@ -8564,7 +8564,7 @@ bnx2_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)  	return 0;  error: -	iounmap(bp->regview); +	pci_iounmap(pdev, bp->regview);  	pci_release_regions(pdev);  	pci_disable_device(pdev);  	pci_set_drvdata(pdev, NULL); @@ -8742,7 +8742,7 @@ static void bnx2_io_resume(struct pci_dev *pdev)  	rtnl_unlock();  } -static struct pci_error_handlers bnx2_err_handler = { +static const struct pci_error_handlers bnx2_err_handler = {  	.error_detected	= bnx2_io_error_detected,  	.slot_reset	= bnx2_io_slot_reset,  	.resume		= bnx2_io_resume, diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h index 6d1a24acb77..eac25236856 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h @@ -1458,7 +1458,7 @@ struct bnx2x {  	int				fw_stats_req_sz;  	/* -	 * FW statistics data shortcut (points at the begining of +	 * FW statistics data shortcut (points at the beginning of  	 * fw_stats buffer + fw_stats_req_sz).  	 */  	struct bnx2x_fw_stats_data	*fw_stats_data; diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c index af20c6ee2cd..e8e97a7d1d0 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c @@ -662,14 +662,16 @@ void bnx2x_csum_validate(struct sk_buff *skb, union eth_rx_cqe *cqe,  				 struct bnx2x_fastpath *fp,  				 struct bnx2x_eth_q_stats *qstats)  { -	/* Do nothing if no IP/L4 csum validation was done */ - +	/* Do nothing if no L4 csum validation was done. +	 * We do not check whether IP csum was validated. For IPv4 we assume +	 * that if the card got as far as validating the L4 csum, it also +	 * validated the IP csum. IPv6 has no IP csum. +	 */  	if (cqe->fast_path_cqe.status_flags & -	    (ETH_FAST_PATH_RX_CQE_IP_XSUM_NO_VALIDATION_FLG | -	     ETH_FAST_PATH_RX_CQE_L4_XSUM_NO_VALIDATION_FLG)) +	    ETH_FAST_PATH_RX_CQE_L4_XSUM_NO_VALIDATION_FLG)  		return; -	/* If both IP/L4 validation were done, check if an error was found. */ +	/* If L4 validation was done, check if an error was found. */  	if (cqe->fast_path_cqe.type_error_flags &  	    (ETH_FAST_PATH_RX_CQE_IP_BAD_XSUM_FLG | diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c index 211753e01f8..e11485ca037 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c @@ -1162,14 +1162,9 @@ static int bnx2x_send_final_clnup(struct bnx2x *bp, u8 clnup_func,  static u8 bnx2x_is_pcie_pending(struct pci_dev *dev)  { -	int pos;  	u16 status; -	pos = pci_pcie_cap(dev); -	if (!pos) -		return false; - -	pci_read_config_word(dev, pos + PCI_EXP_DEVSTA, &status); +	pcie_capability_read_word(dev, PCI_EXP_DEVSTA, &status);  	return status & PCI_EXP_DEVSTA_TRPND;  } @@ -6135,8 +6130,7 @@ static void bnx2x_init_pxp(struct bnx2x *bp)  	u16 devctl;  	int r_order, w_order; -	pci_read_config_word(bp->pdev, -			     pci_pcie_cap(bp->pdev) + PCI_EXP_DEVCTL, &devctl); +	pcie_capability_read_word(bp->pdev, PCI_EXP_DEVCTL, &devctl);  	DP(NETIF_MSG_HW, "read 0x%x from devctl\n", devctl);  	w_order = ((devctl & PCI_EXP_DEVCTL_PAYLOAD) >> 5);  	if (bp->mrrs == -1) @@ -9380,7 +9374,7 @@ static int __devinit bnx2x_prev_mark_path(struct bnx2x *bp)  static int __devinit bnx2x_do_flr(struct bnx2x *bp)  { -	int i, pos; +	int i;  	u16 status;  	struct pci_dev *dev = bp->pdev; @@ -9397,16 +9391,12 @@ static int __devinit bnx2x_do_flr(struct bnx2x *bp)  		return -EINVAL;  	} -	pos = pci_pcie_cap(dev); -	if (!pos) -		return -ENOTTY; -  	/* Wait for Transaction Pending bit clean */  	for (i = 0; i < 4; i++) {  		if (i)  			msleep((1 << (i - 1)) * 100); -		pci_read_config_word(dev, pos + PCI_EXP_DEVSTA, &status); +		pcie_capability_read_word(dev, PCI_EXP_DEVSTA, &status);  		if (!(status & PCI_EXP_DEVSTA_TRPND))  			goto clear;  	} @@ -9831,12 +9821,13 @@ static void __devinit bnx2x_get_igu_cam_info(struct bnx2x *bp)  	}  #ifdef CONFIG_PCI_MSI -	/* -	 * It's expected that number of CAM entries for this functions is equal -	 * to the number evaluated based on the MSI-X table size. We want a -	 * harsh warning if these values are different! +	/* Due to new PF resource allocation by MFW T7.4 and above, it's +	 * optional that number of CAM entries will not be equal to the value +	 * advertised in PCI. +	 * Driver should use the minimal value of both as the actual status +	 * block count  	 */ -	WARN_ON(bp->igu_sb_cnt != igu_sb_cnt); +	bp->igu_sb_cnt = min_t(int, bp->igu_sb_cnt, igu_sb_cnt);  #endif  	if (igu_sb_cnt == 0) @@ -12166,7 +12157,7 @@ static void bnx2x_io_resume(struct pci_dev *pdev)  	rtnl_unlock();  } -static struct pci_error_handlers bnx2x_err_handler = { +static const struct pci_error_handlers bnx2x_err_handler = {  	.error_detected = bnx2x_io_error_detected,  	.slot_reset     = bnx2x_io_slot_reset,  	.resume         = bnx2x_io_resume, diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h index f83e033da6d..acf2fe4ca60 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h @@ -1321,7 +1321,7 @@ void bnx2x_init_mcast_obj(struct bnx2x *bp,   * the current command will be enqueued to the tail of the   * pending commands list.   * - * Return: 0 is operation was sucessfull and there are no pending completions, + * Return: 0 is operation was successfull and there are no pending completions,   *         negative if there were errors, positive if there are pending   *         completions.   */ diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c index bf906c51d82..388d3221393 100644 --- a/drivers/net/ethernet/broadcom/tg3.c +++ b/drivers/net/ethernet/broadcom/tg3.c @@ -3653,17 +3653,9 @@ static int tg3_power_down_prepare(struct tg3 *tp)  	tg3_enable_register_access(tp);  	/* Restore the CLKREQ setting. */ -	if (tg3_flag(tp, CLKREQ_BUG)) { -		u16 lnkctl; - -		pci_read_config_word(tp->pdev, -				     pci_pcie_cap(tp->pdev) + PCI_EXP_LNKCTL, -				     &lnkctl); -		lnkctl |= PCI_EXP_LNKCTL_CLKREQ_EN; -		pci_write_config_word(tp->pdev, -				      pci_pcie_cap(tp->pdev) + PCI_EXP_LNKCTL, -				      lnkctl); -	} +	if (tg3_flag(tp, CLKREQ_BUG)) +		pcie_capability_set_word(tp->pdev, PCI_EXP_LNKCTL, +					 PCI_EXP_LNKCTL_CLKREQ_EN);  	misc_host_ctrl = tr32(TG3PCI_MISC_HOST_CTRL);  	tw32(TG3PCI_MISC_HOST_CTRL, @@ -4434,20 +4426,13 @@ relink:  	/* Prevent send BD corruption. */  	if (tg3_flag(tp, CLKREQ_BUG)) { -		u16 oldlnkctl, newlnkctl; - -		pci_read_config_word(tp->pdev, -				     pci_pcie_cap(tp->pdev) + PCI_EXP_LNKCTL, -				     &oldlnkctl);  		if (tp->link_config.active_speed == SPEED_100 ||  		    tp->link_config.active_speed == SPEED_10) -			newlnkctl = oldlnkctl & ~PCI_EXP_LNKCTL_CLKREQ_EN; +			pcie_capability_clear_word(tp->pdev, PCI_EXP_LNKCTL, +						   PCI_EXP_LNKCTL_CLKREQ_EN);  		else -			newlnkctl = oldlnkctl | PCI_EXP_LNKCTL_CLKREQ_EN; -		if (newlnkctl != oldlnkctl) -			pci_write_config_word(tp->pdev, -					      pci_pcie_cap(tp->pdev) + -					      PCI_EXP_LNKCTL, newlnkctl); +			pcie_capability_set_word(tp->pdev, PCI_EXP_LNKCTL, +						 PCI_EXP_LNKCTL_CLKREQ_EN);  	}  	if (current_link_up != netif_carrier_ok(tp->dev)) { @@ -8054,7 +8039,7 @@ static int tg3_chip_reset(struct tg3 *tp)  	udelay(120); -	if (tg3_flag(tp, PCI_EXPRESS) && pci_pcie_cap(tp->pdev)) { +	if (tg3_flag(tp, PCI_EXPRESS) && pci_is_pcie(tp->pdev)) {  		u16 val16;  		if (tp->pci_chip_rev_id == CHIPREV_ID_5750_A0) { @@ -8071,24 +8056,17 @@ static int tg3_chip_reset(struct tg3 *tp)  		}  		/* Clear the "no snoop" and "relaxed ordering" bits. */ -		pci_read_config_word(tp->pdev, -				     pci_pcie_cap(tp->pdev) + PCI_EXP_DEVCTL, -				     &val16); -		val16 &= ~(PCI_EXP_DEVCTL_RELAX_EN | -			   PCI_EXP_DEVCTL_NOSNOOP_EN); +		val16 = PCI_EXP_DEVCTL_RELAX_EN | PCI_EXP_DEVCTL_NOSNOOP_EN;  		/*  		 * Older PCIe devices only support the 128 byte  		 * MPS setting.  Enforce the restriction.  		 */  		if (!tg3_flag(tp, CPMU_PRESENT)) -			val16 &= ~PCI_EXP_DEVCTL_PAYLOAD; -		pci_write_config_word(tp->pdev, -				      pci_pcie_cap(tp->pdev) + PCI_EXP_DEVCTL, -				      val16); +			val16 |= PCI_EXP_DEVCTL_PAYLOAD; +		pcie_capability_clear_word(tp->pdev, PCI_EXP_DEVCTL, val16);  		/* Clear error status */ -		pci_write_config_word(tp->pdev, -				      pci_pcie_cap(tp->pdev) + PCI_EXP_DEVSTA, +		pcie_capability_write_word(tp->pdev, PCI_EXP_DEVSTA,  				      PCI_EXP_DEVSTA_CED |  				      PCI_EXP_DEVSTA_NFED |  				      PCI_EXP_DEVSTA_FED | @@ -14565,9 +14543,7 @@ static int __devinit tg3_get_invariants(struct tg3 *tp)  		tg3_flag_set(tp, PCI_EXPRESS); -		pci_read_config_word(tp->pdev, -				     pci_pcie_cap(tp->pdev) + PCI_EXP_LNKCTL, -				     &lnkctl); +		pcie_capability_read_word(tp->pdev, PCI_EXP_LNKCTL, &lnkctl);  		if (lnkctl & PCI_EXP_LNKCTL_CLKREQ_EN) {  			if (GET_ASIC_REV(tp->pci_chip_rev_id) ==  			    ASIC_REV_5906) { @@ -16397,7 +16373,7 @@ done:  	rtnl_unlock();  } -static struct pci_error_handlers tg3_err_handler = { +static const struct pci_error_handlers tg3_err_handler = {  	.error_detected	= tg3_io_error_detected,  	.slot_reset	= tg3_io_slot_reset,  	.resume		= tg3_io_resume  |