Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9785820e authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'bnx2x-next'



Yuval Mintz says:

====================
bnx2x: `fixes' patch-series

This series contains mostly bug fixes, but never the less is intended
for `net-next' and not `net', as:
  - Some of the fixes are quite insignificant [`VF clean statistics',
    `ethtool -d might cause timeout in log'].
  - Some only recently were submitted to `net-next' [`Fix timesync endianity'].
  - Some are not usually compiled as part of the kernel [`Fix stop-on-error'].

Dave - please consider applying this series to `net-next'; If you prefer,
I can break this series into 2 parts [one for `net' and the other for
`net-next'] - but personally I don't see much benefit in it.
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 453a940e 8f15c613
Loading
Loading
Loading
Loading
+29 −6
Original line number Diff line number Diff line
@@ -3874,12 +3874,16 @@ netdev_tx_t bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev)
		/* when transmitting in a vf, start bd must hold the ethertype
		 * for fw to enforce it
		 */
#ifndef BNX2X_STOP_ON_ERROR
		if (IS_VF(bp))
#endif
			tx_start_bd->vlan_or_ethertype =
				cpu_to_le16(ntohs(eth->h_proto));
#ifndef BNX2X_STOP_ON_ERROR
		else
			/* used by FW for packet accounting */
			tx_start_bd->vlan_or_ethertype = cpu_to_le16(pkt_prod);
#endif
	}

	nbd = 2; /* start_bd + pbd + frags (updated when pages are mapped) */
@@ -3952,11 +3956,22 @@ netdev_tx_t bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev)
					      &pbd_e2->data.mac_addr.dst_mid,
					      &pbd_e2->data.mac_addr.dst_lo,
					      eth->h_dest);
		} else if (bp->flags & TX_SWITCHING) {
			bnx2x_set_fw_mac_addr(&pbd_e2->data.mac_addr.dst_hi,
		} else {
			if (bp->flags & TX_SWITCHING)
				bnx2x_set_fw_mac_addr(
						&pbd_e2->data.mac_addr.dst_hi,
						&pbd_e2->data.mac_addr.dst_mid,
						&pbd_e2->data.mac_addr.dst_lo,
						eth->h_dest);
#ifdef BNX2X_STOP_ON_ERROR
			/* Enforce security is always set in Stop on Error -
			 * source mac should be present in the parsing BD
			 */
			bnx2x_set_fw_mac_addr(&pbd_e2->data.mac_addr.src_hi,
					      &pbd_e2->data.mac_addr.src_mid,
					      &pbd_e2->data.mac_addr.src_lo,
					      eth->h_source);
#endif
		}

		SET_FLAG(pbd_e2_parsing_data,
@@ -4796,11 +4811,15 @@ netdev_features_t bnx2x_fix_features(struct net_device *dev,
	struct bnx2x *bp = netdev_priv(dev);

	/* TPA requires Rx CSUM offloading */
	if (!(features & NETIF_F_RXCSUM) || bp->disable_tpa) {
	if (!(features & NETIF_F_RXCSUM)) {
		features &= ~NETIF_F_LRO;
		features &= ~NETIF_F_GRO;
	}

	/* Note: do not disable SW GRO in kernel when HW GRO is off */
	if (bp->disable_tpa)
		features &= ~NETIF_F_LRO;

	return features;
}

@@ -4839,6 +4858,10 @@ int bnx2x_set_features(struct net_device *dev, netdev_features_t features)
	if ((changes & GRO_ENABLE_FLAG) && (flags & TPA_ENABLE_FLAG))
		changes &= ~GRO_ENABLE_FLAG;

	/* if GRO is changed while HW TPA is off, don't force a reload */
	if ((changes & GRO_ENABLE_FLAG) && bp->disable_tpa)
		changes &= ~GRO_ENABLE_FLAG;

	if (changes)
		bnx2x_reload = true;

+5 −9
Original line number Diff line number Diff line
@@ -40,7 +40,7 @@ struct dump_header {
	u32 dump_meta_data; /* OR of CHIP and PATH. */
};

#define BNX2X_DUMP_VERSION 0x50acff01
#define  BNX2X_DUMP_VERSION 0x61111111
struct reg_addr {
	u32 addr;
	u32 size;
@@ -1464,7 +1464,6 @@ static const struct reg_addr reg_addrs[] = {
	{ 0x180398, 1, 0x1c, 0x924},
	{ 0x1803a0, 5, 0x1c, 0x924},
	{ 0x1803b4, 2, 0x18, 0x924},
	{ 0x180400, 256, 0x3, 0xfff},
	{ 0x181000, 4, 0x1f, 0x93c},
	{ 0x181010, 1020, 0x1f, 0x38},
	{ 0x182000, 4, 0x18, 0x924},
@@ -1576,7 +1575,6 @@ static const struct reg_addr reg_addrs[] = {
	{ 0x200398, 1, 0x1c, 0x924},
	{ 0x2003a0, 1, 0x1c, 0x924},
	{ 0x2003a8, 2, 0x1c, 0x924},
	{ 0x200400, 256, 0x3, 0xfff},
	{ 0x202000, 4, 0x1f, 0x1927},
	{ 0x202010, 2044, 0x1f, 0x1007},
	{ 0x204000, 4, 0x18, 0x924},
@@ -1688,7 +1686,6 @@ static const struct reg_addr reg_addrs[] = {
	{ 0x280398, 1, 0x1c, 0x924},
	{ 0x2803a0, 1, 0x1c, 0x924},
	{ 0x2803a8, 2, 0x1c, 0x924},
	{ 0x280400, 256, 0x3, 0xfff},
	{ 0x282000, 4, 0x1f, 0x9e4},
	{ 0x282010, 2044, 0x1f, 0x1c0},
	{ 0x284000, 4, 0x18, 0x924},
@@ -1800,7 +1797,6 @@ static const struct reg_addr reg_addrs[] = {
	{ 0x300398, 1, 0x1c, 0x924},
	{ 0x3003a0, 1, 0x1c, 0x924},
	{ 0x3003a8, 2, 0x1c, 0x924},
	{ 0x300400, 256, 0x3, 0xfff},
	{ 0x302000, 4, 0x1f, 0xf24},
	{ 0x302010, 2044, 0x1f, 0xe00},
	{ 0x304000, 4, 0x18, 0x924},
@@ -2206,10 +2202,10 @@ static const struct wreg_addr wreg_addr_e3b0 = {
	0x1b0c00, 128, 2, read_reg_e3b0, 0x1f, 0x1fff};

static const unsigned int dump_num_registers[NUM_CHIPS][NUM_PRESETS] = {
	{20782, 18567, 27975, 19729, 18311, 27719, 20836, 32391, 41799, 20812,
	 26247, 35655, 19074},
	{32774, 19297, 33277, 31721, 19041, 33021, 32828, 33121, 47101, 32804,
	 26977, 40957, 35895},
	{19758, 17543, 26951, 18705, 17287, 26695, 19812, 31367, 40775, 19788,
	 25223, 34631, 19074},
	{31750, 18273, 32253, 30697, 18017, 31997, 31804, 32097, 46077, 31780,
	 25953, 39933, 35895},
	{36527, 17928, 33697, 35474, 18700, 34466, 36581, 31752, 47521, 36557,
	 25608, 41377, 43903},
	{45239, 17936, 34387, 44186, 18708, 35156, 45293, 31760, 48211, 45269,
+1 −1
Original line number Diff line number Diff line
@@ -1143,7 +1143,7 @@ void bnx2x_panic_dump(struct bnx2x *bp, bool disable_int)
			if (!fp->txdata_ptr)
				break;

			if (!txdata.tx_cons_sb)
			if (!txdata->tx_cons_sb)
				continue;

			start = TX_BD(le16_to_cpu(*txdata->tx_cons_sb) - 10);
+4 −2
Original line number Diff line number Diff line
@@ -5877,8 +5877,10 @@ int bnx2x_func_send_set_timesync(struct bnx2x *bp,
		set_timesync_params->add_sub_drift_adjust_value;
	rdata->drift_adjust_value = set_timesync_params->drift_adjust_value;
	rdata->drift_adjust_period = set_timesync_params->drift_adjust_period;
	rdata->offset_delta.lo = U64_LO(set_timesync_params->offset_delta);
	rdata->offset_delta.hi = U64_HI(set_timesync_params->offset_delta);
	rdata->offset_delta.lo =
		cpu_to_le32(U64_LO(set_timesync_params->offset_delta));
	rdata->offset_delta.hi =
		cpu_to_le32(U64_HI(set_timesync_params->offset_delta));

	DP(BNX2X_MSG_SP, "Set timesync command params: drift_cmd = %d, offset_cmd = %d, add_sub_drift = %d, drift_val = %d, drift_period = %d, offset_lo = %d, offset_hi = %d\n",
	   rdata->drift_adjust_cmd, rdata->offset_cmd,
+5 −0
Original line number Diff line number Diff line
@@ -1629,6 +1629,11 @@ void bnx2x_stats_init(struct bnx2x *bp)
	int /*abs*/port = BP_PORT(bp);
	int mb_idx = BP_FW_MB_IDX(bp);

	if (IS_VF(bp)) {
		bnx2x_memset_stats(bp);
		return;
	}

	bp->stats_pending = 0;
	bp->executer_idx = 0;
	bp->stats_counter = 0;