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

Commit 7282ec8c authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'bnx2x'



Yuval Mintz says:

====================
bnx2x: Enhancements & semantic changes series

This patch series contains several semantic (or mostly semantic) patches,
as well as adding support for packet aggregations on the receive path
of windows VMs and updating bnx2x to the new FW recently accepted upstream.

Please consider applying these patches to `net-next'.

(This is a repost as net-next was still closed when this was previously
sent)
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 8bed1285 3156b8eb
Loading
Loading
Loading
Loading
+17 −7
Original line number Original line Diff line number Diff line
@@ -26,8 +26,8 @@
 * (you will need to reboot afterwards) */
 * (you will need to reboot afterwards) */
/* #define BNX2X_STOP_ON_ERROR */
/* #define BNX2X_STOP_ON_ERROR */


#define DRV_MODULE_VERSION      "1.78.17-0"
#define DRV_MODULE_VERSION      "1.78.19-0"
#define DRV_MODULE_RELDATE      "2013/04/11"
#define DRV_MODULE_RELDATE      "2014/02/10"
#define BNX2X_BC_VER            0x040200
#define BNX2X_BC_VER            0x040200


#if defined(CONFIG_DCB)
#if defined(CONFIG_DCB)
@@ -75,13 +75,22 @@ enum bnx2x_int_mode {
#define BNX2X_MSG_DCB			0x8000000
#define BNX2X_MSG_DCB			0x8000000


/* regular debug print */
/* regular debug print */
#define DP(__mask, fmt, ...)					\
#define DP_INNER(fmt, ...)					\
do {								\
	if (unlikely(bp->msg_enable & (__mask)))		\
	pr_notice("[%s:%d(%s)]" fmt,				\
	pr_notice("[%s:%d(%s)]" fmt,				\
		  __func__, __LINE__,				\
		  __func__, __LINE__,				\
		  bp->dev ? (bp->dev->name) : "?",		\
		  bp->dev ? (bp->dev->name) : "?",		\
			  ##__VA_ARGS__);			\
		  ##__VA_ARGS__);

#define DP(__mask, fmt, ...)					\
do {								\
	if (unlikely(bp->msg_enable & (__mask)))		\
		DP_INNER(fmt, ##__VA_ARGS__);			\
} while (0)

#define DP_AND(__mask, fmt, ...)				\
do {								\
	if (unlikely((bp->msg_enable & (__mask)) == __mask))	\
		DP_INNER(fmt, ##__VA_ARGS__);			\
} while (0)
} while (0)


#define DP_CONT(__mask, fmt, ...)				\
#define DP_CONT(__mask, fmt, ...)				\
@@ -1261,6 +1270,7 @@ struct bnx2x_slowpath {
	union {
	union {
		struct client_init_ramrod_data  init_data;
		struct client_init_ramrod_data  init_data;
		struct client_update_ramrod_data update_data;
		struct client_update_ramrod_data update_data;
		struct tpa_update_ramrod_data tpa_data;
	} q_rdata;
	} q_rdata;


	union {
	union {
@@ -1392,7 +1402,7 @@ struct bnx2x_fw_stats_data {
};
};


/* Public slow path states */
/* Public slow path states */
enum {
enum sp_rtnl_flag {
	BNX2X_SP_RTNL_SETUP_TC,
	BNX2X_SP_RTNL_SETUP_TC,
	BNX2X_SP_RTNL_TX_TIMEOUT,
	BNX2X_SP_RTNL_TX_TIMEOUT,
	BNX2X_SP_RTNL_FAN_FAILURE,
	BNX2X_SP_RTNL_FAN_FAILURE,
+13 −5
Original line number Original line Diff line number Diff line
@@ -4773,12 +4773,8 @@ void bnx2x_tx_timeout(struct net_device *dev)
		bnx2x_panic();
		bnx2x_panic();
#endif
#endif


	smp_mb__before_clear_bit();
	set_bit(BNX2X_SP_RTNL_TX_TIMEOUT, &bp->sp_rtnl_state);
	smp_mb__after_clear_bit();

	/* This allows the netif to be shutdown gracefully before resetting */
	/* This allows the netif to be shutdown gracefully before resetting */
	schedule_delayed_work(&bp->sp_rtnl_task, 0);
	bnx2x_schedule_sp_rtnl(bp, BNX2X_SP_RTNL_TX_TIMEOUT, 0);
}
}


int bnx2x_suspend(struct pci_dev *pdev, pm_message_t state)
int bnx2x_suspend(struct pci_dev *pdev, pm_message_t state)
@@ -4906,3 +4902,15 @@ void bnx2x_update_coalesce_sb_index(struct bnx2x *bp, u8 fw_sb_id,
	disable = disable ? 1 : (usec ? 0 : 1);
	disable = disable ? 1 : (usec ? 0 : 1);
	storm_memset_hc_disable(bp, port, fw_sb_id, sb_index, disable);
	storm_memset_hc_disable(bp, port, fw_sb_id, sb_index, disable);
}
}

void bnx2x_schedule_sp_rtnl(struct bnx2x *bp, enum sp_rtnl_flag flag,
			    u32 verbose)
{
	smp_mb__before_clear_bit();
	set_bit(flag, &bp->sp_rtnl_state);
	smp_mb__after_clear_bit();
	DP((BNX2X_MSG_SP | verbose), "Scheduling sp_rtnl task [Flag: %d]\n",
	   flag);
	schedule_delayed_work(&bp->sp_rtnl_task, 0);
}
EXPORT_SYMBOL(bnx2x_schedule_sp_rtnl);
+3 −0
Original line number Original line Diff line number Diff line
@@ -1324,4 +1324,7 @@ void bnx2x_fill_fw_str(struct bnx2x *bp, char *buf, size_t buf_len);
int bnx2x_drain_tx_queues(struct bnx2x *bp);
int bnx2x_drain_tx_queues(struct bnx2x *bp);
void bnx2x_squeeze_objects(struct bnx2x *bp);
void bnx2x_squeeze_objects(struct bnx2x *bp);


void bnx2x_schedule_sp_rtnl(struct bnx2x*, enum sp_rtnl_flag,
			    u32 verbose);

#endif /* BNX2X_CMN_H */
#endif /* BNX2X_CMN_H */
+2 −6
Original line number Original line Diff line number Diff line
@@ -710,8 +710,7 @@ static inline void bnx2x_dcbx_update_tc_mapping(struct bnx2x *bp)
	 * as we are handling an attention on a work queue which must be
	 * as we are handling an attention on a work queue which must be
	 * flushed at some rtnl-locked contexts (e.g. if down)
	 * flushed at some rtnl-locked contexts (e.g. if down)
	 */
	 */
	if (!test_and_set_bit(BNX2X_SP_RTNL_SETUP_TC, &bp->sp_rtnl_state))
	bnx2x_schedule_sp_rtnl(bp, BNX2X_SP_RTNL_SETUP_TC, 0);
		schedule_delayed_work(&bp->sp_rtnl_task, 0);
}
}


void bnx2x_dcbx_set_params(struct bnx2x *bp, u32 state)
void bnx2x_dcbx_set_params(struct bnx2x *bp, u32 state)
@@ -764,10 +763,7 @@ void bnx2x_dcbx_set_params(struct bnx2x *bp, u32 state)
			if (IS_MF(bp))
			if (IS_MF(bp))
				bnx2x_link_sync_notify(bp);
				bnx2x_link_sync_notify(bp);


			set_bit(BNX2X_SP_RTNL_TX_STOP, &bp->sp_rtnl_state);
			bnx2x_schedule_sp_rtnl(bp, BNX2X_SP_RTNL_TX_STOP, 0);

			schedule_delayed_work(&bp->sp_rtnl_task, 0);

			return;
			return;
		}
		}
	case BNX2X_DCBX_STATE_TX_PAUSED:
	case BNX2X_DCBX_STATE_TX_PAUSED:
+0 −1
Original line number Original line Diff line number Diff line
@@ -87,7 +87,6 @@
	(IRO[156].base + ((vfId) * IRO[156].m1))
	(IRO[156].base + ((vfId) * IRO[156].m1))
#define CSTORM_VF_TO_PF_OFFSET(funcId) \
#define CSTORM_VF_TO_PF_OFFSET(funcId) \
	(IRO[150].base + ((funcId) * IRO[150].m1))
	(IRO[150].base + ((funcId) * IRO[150].m1))
#define TSTORM_ACCEPT_CLASSIFY_FAILED_OFFSET (IRO[204].base)
#define TSTORM_APPROXIMATE_MATCH_MULTICAST_FILTERING_OFFSET(pfId) \
#define TSTORM_APPROXIMATE_MATCH_MULTICAST_FILTERING_OFFSET(pfId) \
	(IRO[203].base + ((pfId) * IRO[203].m1))
	(IRO[203].base + ((pfId) * IRO[203].m1))
#define TSTORM_ASSERT_LIST_INDEX_OFFSET	(IRO[102].base)
#define TSTORM_ASSERT_LIST_INDEX_OFFSET	(IRO[102].base)
Loading