All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next 0/8] be2net: small structures clean-up
@ 2018-06-21 14:43 Ivan Vecera
  2018-06-21 14:43 ` [PATCH net-next 1/8] be2net: remove unused old AIC info Ivan Vecera
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: Ivan Vecera @ 2018-06-21 14:43 UTC (permalink / raw)
  To: netdev; +Cc: sathya.perla, ajit.khaparde, sriharsha.basavapatna, somnath.kotur

The series:
- removes unused / unneccessary fields in several be2net structures
- re-order fields in some structures to eliminate holes, cache-lines
  crosses
- as result reduces size of main struct be_adapter by 4kB

Ivan Vecera (8):
  be2net: remove unused old AIC info
  be2net: remove unused old custom busy-poll fields
  be2net: remove desc field from be_eq_obj
  be2net: reorder fields in be_eq_obj structure
  be2net: move txcp field in be_tx_obj to eliminate holes in the struct
  be2net: remove unused tx_jiffies field from be_tx_stats
  be2net: re-order fields in be_error_recovert to avoid hole
  be2net: move rss_flags field in rss_info to ensure proper alignment

 drivers/net/ethernet/emulex/benet/be.h      | 39 +++++++----------------------
 drivers/net/ethernet/emulex/benet/be_main.c |  6 +++--
 2 files changed, 13 insertions(+), 32 deletions(-)

-- 
2.16.4

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH net-next 1/8] be2net: remove unused old AIC info
  2018-06-21 14:43 [PATCH net-next 0/8] be2net: small structures clean-up Ivan Vecera
@ 2018-06-21 14:43 ` Ivan Vecera
  2018-06-21 14:43 ` [PATCH net-next 2/8] be2net: remove unused old custom busy-poll fields Ivan Vecera
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Ivan Vecera @ 2018-06-21 14:43 UTC (permalink / raw)
  To: netdev; +Cc: sathya.perla, ajit.khaparde, sriharsha.basavapatna, somnath.kotur

The commit 2632bafd74ae ("be2net: fix adaptive interrupt coalescing")
introduced a separate struct be_aic_obj to hold AIC information but
unfortunately left the old stuff in be_eq_obj. So remove it.

Fixes: 2632bafd74ae ("be2net: fix adaptive interrupt coalescing")
Signed-off-by: Ivan Vecera <cera@cera.cz>
---
 drivers/net/ethernet/emulex/benet/be.h | 7 -------
 1 file changed, 7 deletions(-)

diff --git a/drivers/net/ethernet/emulex/benet/be.h b/drivers/net/ethernet/emulex/benet/be.h
index 382891f81e09..6cf9d106c989 100644
--- a/drivers/net/ethernet/emulex/benet/be.h
+++ b/drivers/net/ethernet/emulex/benet/be.h
@@ -187,13 +187,6 @@ struct be_eq_obj {
 	struct be_queue_info q;
 	char desc[32];
 
-	/* Adaptive interrupt coalescing (AIC) info */
-	bool enable_aic;
-	u32 min_eqd;		/* in usecs */
-	u32 max_eqd;		/* in usecs */
-	u32 eqd;		/* configured val when aic is off */
-	u32 cur_eqd;		/* in usecs */
-
 	u8 idx;			/* array index */
 	u8 msix_idx;
 	u16 spurious_intr;
-- 
2.16.4

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH net-next 2/8] be2net: remove unused old custom busy-poll fields
  2018-06-21 14:43 [PATCH net-next 0/8] be2net: small structures clean-up Ivan Vecera
  2018-06-21 14:43 ` [PATCH net-next 1/8] be2net: remove unused old AIC info Ivan Vecera
@ 2018-06-21 14:43 ` Ivan Vecera
  2018-06-21 14:43 ` [PATCH net-next 3/8] be2net: remove desc field from be_eq_obj Ivan Vecera
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Ivan Vecera @ 2018-06-21 14:43 UTC (permalink / raw)
  To: netdev; +Cc: sathya.perla, ajit.khaparde, sriharsha.basavapatna, somnath.kotur

The commit fb6113e688e0 ("be2net: get rid of custom busy poll code")
replaced custom busy-poll code by the generic one but left several
macros and fields in struct be_eq_obj that are currently unused.
Remove this stuff.

Fixes: fb6113e688e0 ("be2net: get rid of custom busy poll code")
Signed-off-by: Ivan Vecera <cera@cera.cz>
---
 drivers/net/ethernet/emulex/benet/be.h | 13 -------------
 1 file changed, 13 deletions(-)

diff --git a/drivers/net/ethernet/emulex/benet/be.h b/drivers/net/ethernet/emulex/benet/be.h
index 6cf9d106c989..a4604dea4560 100644
--- a/drivers/net/ethernet/emulex/benet/be.h
+++ b/drivers/net/ethernet/emulex/benet/be.h
@@ -193,19 +193,6 @@ struct be_eq_obj {
 	struct napi_struct napi;
 	struct be_adapter *adapter;
 	cpumask_var_t  affinity_mask;
-
-#ifdef CONFIG_NET_RX_BUSY_POLL
-#define BE_EQ_IDLE		0
-#define BE_EQ_NAPI		1	/* napi owns this EQ */
-#define BE_EQ_POLL		2	/* poll owns this EQ */
-#define BE_EQ_LOCKED		(BE_EQ_NAPI | BE_EQ_POLL)
-#define BE_EQ_NAPI_YIELD	4	/* napi yielded this EQ */
-#define BE_EQ_POLL_YIELD	8	/* poll yielded this EQ */
-#define BE_EQ_YIELD		(BE_EQ_NAPI_YIELD | BE_EQ_POLL_YIELD)
-#define BE_EQ_USER_PEND		(BE_EQ_POLL | BE_EQ_POLL_YIELD)
-	unsigned int state;
-	spinlock_t lock;	/* lock to serialize napi and busy-poll */
-#endif  /* CONFIG_NET_RX_BUSY_POLL */
 } ____cacheline_aligned_in_smp;
 
 struct be_aic_obj {		/* Adaptive interrupt coalescing (AIC) info */
-- 
2.16.4

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH net-next 3/8] be2net: remove desc field from be_eq_obj
  2018-06-21 14:43 [PATCH net-next 0/8] be2net: small structures clean-up Ivan Vecera
  2018-06-21 14:43 ` [PATCH net-next 1/8] be2net: remove unused old AIC info Ivan Vecera
  2018-06-21 14:43 ` [PATCH net-next 2/8] be2net: remove unused old custom busy-poll fields Ivan Vecera
@ 2018-06-21 14:43 ` Ivan Vecera
  2018-06-21 14:43 ` [PATCH net-next 4/8] be2net: reorder fields in be_eq_obj structure Ivan Vecera
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Ivan Vecera @ 2018-06-21 14:43 UTC (permalink / raw)
  To: netdev; +Cc: sathya.perla, ajit.khaparde, sriharsha.basavapatna, somnath.kotur

The event queue description (be_eq_obj.desc) field is used only to format
string for IRQ name and it is not really needed to hold this value.
Remove it and use local variable to format string for IRQ name.

Signed-off-by: Ivan Vecera <cera@cera.cz>
---
 drivers/net/ethernet/emulex/benet/be.h      | 1 -
 drivers/net/ethernet/emulex/benet/be_main.c | 6 ++++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/emulex/benet/be.h b/drivers/net/ethernet/emulex/benet/be.h
index a4604dea4560..e71e5e592626 100644
--- a/drivers/net/ethernet/emulex/benet/be.h
+++ b/drivers/net/ethernet/emulex/benet/be.h
@@ -185,7 +185,6 @@ static inline void queue_tail_inc(struct be_queue_info *q)
 
 struct be_eq_obj {
 	struct be_queue_info q;
-	char desc[32];
 
 	u8 idx;			/* array index */
 	u8 msix_idx;
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index 8f755009ff38..05e4c0bb25f4 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -3403,9 +3403,11 @@ static int be_msix_register(struct be_adapter *adapter)
 	int status, i, vec;
 
 	for_all_evt_queues(adapter, eqo, i) {
-		sprintf(eqo->desc, "%s-q%d", netdev->name, i);
+		char irq_name[IFNAMSIZ+4];
+
+		snprintf(irq_name, sizeof(irq_name), "%s-q%d", netdev->name, i);
 		vec = be_msix_vec_get(adapter, eqo);
-		status = request_irq(vec, be_msix, 0, eqo->desc, eqo);
+		status = request_irq(vec, be_msix, 0, irq_name, eqo);
 		if (status)
 			goto err_msix;
 
-- 
2.16.4

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH net-next 4/8] be2net: reorder fields in be_eq_obj structure
  2018-06-21 14:43 [PATCH net-next 0/8] be2net: small structures clean-up Ivan Vecera
                   ` (2 preceding siblings ...)
  2018-06-21 14:43 ` [PATCH net-next 3/8] be2net: remove desc field from be_eq_obj Ivan Vecera
@ 2018-06-21 14:43 ` Ivan Vecera
  2018-06-21 14:43 ` [PATCH net-next 5/8] be2net: move txcp field in be_tx_obj to eliminate holes in the struct Ivan Vecera
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Ivan Vecera @ 2018-06-21 14:43 UTC (permalink / raw)
  To: netdev; +Cc: sathya.perla, ajit.khaparde, sriharsha.basavapatna, somnath.kotur

Re-order fields in struct be_eq_obj to ensure that .napi field begins
at start of cache-line. Also the .adapter field is moved to the first
cache-line next to .q field and 3 fields (idx,msi_idx,spurious_intr)
and the 4-bytes hole to 3rd cache-line.

Signed-off-by: Ivan Vecera <cera@cera.cz>
---
 drivers/net/ethernet/emulex/benet/be.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/emulex/benet/be.h b/drivers/net/ethernet/emulex/benet/be.h
index e71e5e592626..716b4bc410f5 100644
--- a/drivers/net/ethernet/emulex/benet/be.h
+++ b/drivers/net/ethernet/emulex/benet/be.h
@@ -186,11 +186,11 @@ static inline void queue_tail_inc(struct be_queue_info *q)
 struct be_eq_obj {
 	struct be_queue_info q;
 
+	struct be_adapter *adapter;
+	struct napi_struct napi;
 	u8 idx;			/* array index */
 	u8 msix_idx;
 	u16 spurious_intr;
-	struct napi_struct napi;
-	struct be_adapter *adapter;
 	cpumask_var_t  affinity_mask;
 } ____cacheline_aligned_in_smp;
 
-- 
2.16.4

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH net-next 5/8] be2net: move txcp field in be_tx_obj to eliminate holes in the struct
  2018-06-21 14:43 [PATCH net-next 0/8] be2net: small structures clean-up Ivan Vecera
                   ` (3 preceding siblings ...)
  2018-06-21 14:43 ` [PATCH net-next 4/8] be2net: reorder fields in be_eq_obj structure Ivan Vecera
@ 2018-06-21 14:43 ` Ivan Vecera
  2018-06-21 14:43 ` [PATCH net-next 6/8] be2net: remove unused tx_jiffies field from be_tx_stats Ivan Vecera
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Ivan Vecera @ 2018-06-21 14:43 UTC (permalink / raw)
  To: netdev; +Cc: sathya.perla, ajit.khaparde, sriharsha.basavapatna, somnath.kotur

Before patch:
struct be_tx_obj {
        u32                        db_offset;            /*     0     4 */

        /* XXX 4 bytes hole, try to pack */

        struct be_queue_info       q;                    /*     8    56 */
        /* --- cacheline 1 boundary (64 bytes) --- */
        struct be_queue_info       cq;                   /*    64    56 */
        struct be_tx_compl_info    txcp;                 /*   120     4 */

        /* XXX 4 bytes hole, try to pack */

        /* --- cacheline 2 boundary (128 bytes) --- */
        struct sk_buff *           sent_skb_list[2048];  /*   128 16384 */
        ...
}:

After patch:
struct be_tx_obj {
        u32                        db_offset;            /*     0     4 */
        struct be_tx_compl_info    txcp;                 /*     4     4 */
        struct be_queue_info       q;                    /*     8    56 */
        /* --- cacheline 1 boundary (64 bytes) --- */
        struct be_queue_info       cq;                   /*    64    56 */
        struct sk_buff *           sent_skb_list[2048];  /*   120 16384 */
        ...
};

Signed-off-by: Ivan Vecera <cera@cera.cz>
---
 drivers/net/ethernet/emulex/benet/be.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/emulex/benet/be.h b/drivers/net/ethernet/emulex/benet/be.h
index 716b4bc410f5..91ca8d132e87 100644
--- a/drivers/net/ethernet/emulex/benet/be.h
+++ b/drivers/net/ethernet/emulex/benet/be.h
@@ -240,9 +240,9 @@ struct be_tx_compl_info {
 
 struct be_tx_obj {
 	u32 db_offset;
+	struct be_tx_compl_info txcp;
 	struct be_queue_info q;
 	struct be_queue_info cq;
-	struct be_tx_compl_info txcp;
 	/* Remember the skbs that were transmitted */
 	struct sk_buff *sent_skb_list[TX_Q_LEN];
 	struct be_tx_stats stats;
-- 
2.16.4

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH net-next 6/8] be2net: remove unused tx_jiffies field from be_tx_stats
  2018-06-21 14:43 [PATCH net-next 0/8] be2net: small structures clean-up Ivan Vecera
                   ` (4 preceding siblings ...)
  2018-06-21 14:43 ` [PATCH net-next 5/8] be2net: move txcp field in be_tx_obj to eliminate holes in the struct Ivan Vecera
@ 2018-06-21 14:43 ` Ivan Vecera
  2018-06-21 14:43 ` [PATCH net-next 7/8] be2net: re-order fields in be_error_recovert to avoid hole Ivan Vecera
  2018-06-21 14:43 ` [PATCH net-next 8/8] be2net: move rss_flags field in rss_info to ensure proper alignment Ivan Vecera
  7 siblings, 0 replies; 9+ messages in thread
From: Ivan Vecera @ 2018-06-21 14:43 UTC (permalink / raw)
  To: netdev; +Cc: sathya.perla, ajit.khaparde, sriharsha.basavapatna, somnath.kotur

Signed-off-by: Ivan Vecera <cera@cera.cz>
---
 drivers/net/ethernet/emulex/benet/be.h | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/net/ethernet/emulex/benet/be.h b/drivers/net/ethernet/emulex/benet/be.h
index 91ca8d132e87..d521364e17cf 100644
--- a/drivers/net/ethernet/emulex/benet/be.h
+++ b/drivers/net/ethernet/emulex/benet/be.h
@@ -217,7 +217,6 @@ struct be_tx_stats {
 	u64 tx_vxlan_offload_pkts;
 	u64 tx_reqs;
 	u64 tx_compl;
-	ulong tx_jiffies;
 	u32 tx_stops;
 	u32 tx_drv_drops;	/* pkts dropped by driver */
 	/* the error counters are described in be_ethtool.c */
-- 
2.16.4

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH net-next 7/8] be2net: re-order fields in be_error_recovert to avoid hole
  2018-06-21 14:43 [PATCH net-next 0/8] be2net: small structures clean-up Ivan Vecera
                   ` (5 preceding siblings ...)
  2018-06-21 14:43 ` [PATCH net-next 6/8] be2net: remove unused tx_jiffies field from be_tx_stats Ivan Vecera
@ 2018-06-21 14:43 ` Ivan Vecera
  2018-06-21 14:43 ` [PATCH net-next 8/8] be2net: move rss_flags field in rss_info to ensure proper alignment Ivan Vecera
  7 siblings, 0 replies; 9+ messages in thread
From: Ivan Vecera @ 2018-06-21 14:43 UTC (permalink / raw)
  To: netdev; +Cc: sathya.perla, ajit.khaparde, sriharsha.basavapatna, somnath.kotur

- Unionize two u8 fields where only one of them is used depending on NIC
chipset.
- Move recovery_supported field after that union

These changes eliminate 7-bytes hole in the struct and makes it smaller
by 8 bytes.

Signed-off-by: Ivan Vecera <cera@cera.cz>
---
 drivers/net/ethernet/emulex/benet/be.h | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/emulex/benet/be.h b/drivers/net/ethernet/emulex/benet/be.h
index d521364e17cf..4f805be43180 100644
--- a/drivers/net/ethernet/emulex/benet/be.h
+++ b/drivers/net/ethernet/emulex/benet/be.h
@@ -522,11 +522,13 @@ enum {
 };
 
 struct be_error_recovery {
-	/* Lancer error recovery variables */
-	u8 recovery_retries;
+	union {
+		u8 recovery_retries;	/* used for Lancer		*/
+		u8 recovery_state;	/* used for BEx and Skyhawk	*/
+	};
 
 	/* BEx/Skyhawk error recovery variables */
-	u8 recovery_state;
+	bool recovery_supported;
 	u16 ue_to_reset_time;		/* Time after UE, to soft reset
 					 * the chip - PF0 only
 					 */
@@ -534,7 +536,6 @@ struct be_error_recovery {
 					 * of SLIPORT_SEMAPHORE reg
 					 */
 	u16 last_err_code;
-	bool recovery_supported;
 	unsigned long probe_time;
 	unsigned long last_recovery_time;
 
-- 
2.16.4

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH net-next 8/8] be2net: move rss_flags field in rss_info to ensure proper alignment
  2018-06-21 14:43 [PATCH net-next 0/8] be2net: small structures clean-up Ivan Vecera
                   ` (6 preceding siblings ...)
  2018-06-21 14:43 ` [PATCH net-next 7/8] be2net: re-order fields in be_error_recovert to avoid hole Ivan Vecera
@ 2018-06-21 14:43 ` Ivan Vecera
  7 siblings, 0 replies; 9+ messages in thread
From: Ivan Vecera @ 2018-06-21 14:43 UTC (permalink / raw)
  To: netdev; +Cc: sathya.perla, ajit.khaparde, sriharsha.basavapatna, somnath.kotur

The current position of .rss_flags field in struct rss_info causes
that fields .rsstable and .rssqueue (both 128 bytes long) crosses
cache-line boundaries. Moving it at the end properly align all fields.

Before patch:
struct rss_info {
        u64                        rss_flags;            /*     0     8 */
        u8                         rsstable[128];        /*     8   128 */
        /* --- cacheline 2 boundary (128 bytes) was 8 bytes ago --- */
        u8                         rss_queue[128];       /*   136   128 */
        /* --- cacheline 4 boundary (256 bytes) was 8 bytes ago --- */
        u8                         rss_hkey[40];         /*   264    40 */
};

After patch:
struct rss_info {
        u8                         rsstable[128];        /*     0   128 */
        /* --- cacheline 2 boundary (128 bytes) --- */
        u8                         rss_queue[128];       /*   128   128 */
        /* --- cacheline 4 boundary (256 bytes) --- */
        u8                         rss_hkey[40];         /*   256    40 */
        u64                        rss_flags;            /*   296     8 */
};

Signed-off-by: Ivan Vecera <cera@cera.cz>
---
 drivers/net/ethernet/emulex/benet/be.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/emulex/benet/be.h b/drivers/net/ethernet/emulex/benet/be.h
index 4f805be43180..7005949dc17b 100644
--- a/drivers/net/ethernet/emulex/benet/be.h
+++ b/drivers/net/ethernet/emulex/benet/be.h
@@ -436,10 +436,10 @@ struct be_port_resources {
 #define be_is_os2bmc_enabled(adapter) (adapter->flags & BE_FLAGS_OS2BMC)
 
 struct rss_info {
-	u64 rss_flags;
 	u8 rsstable[RSS_INDIR_TABLE_LEN];
 	u8 rss_queue[RSS_INDIR_TABLE_LEN];
 	u8 rss_hkey[RSS_HASH_KEY_LEN];
+	u64 rss_flags;
 };
 
 #define BE_INVALID_DIE_TEMP	0xFF
-- 
2.16.4

^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2018-06-21 14:43 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-06-21 14:43 [PATCH net-next 0/8] be2net: small structures clean-up Ivan Vecera
2018-06-21 14:43 ` [PATCH net-next 1/8] be2net: remove unused old AIC info Ivan Vecera
2018-06-21 14:43 ` [PATCH net-next 2/8] be2net: remove unused old custom busy-poll fields Ivan Vecera
2018-06-21 14:43 ` [PATCH net-next 3/8] be2net: remove desc field from be_eq_obj Ivan Vecera
2018-06-21 14:43 ` [PATCH net-next 4/8] be2net: reorder fields in be_eq_obj structure Ivan Vecera
2018-06-21 14:43 ` [PATCH net-next 5/8] be2net: move txcp field in be_tx_obj to eliminate holes in the struct Ivan Vecera
2018-06-21 14:43 ` [PATCH net-next 6/8] be2net: remove unused tx_jiffies field from be_tx_stats Ivan Vecera
2018-06-21 14:43 ` [PATCH net-next 7/8] be2net: re-order fields in be_error_recovert to avoid hole Ivan Vecera
2018-06-21 14:43 ` [PATCH net-next 8/8] be2net: move rss_flags field in rss_info to ensure proper alignment Ivan Vecera

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.