* [PATCH 0/2 net-next v2] Bring sizeof(net_device) down to < 2K bytes
@ 2015-04-10 13:52 ` Thomas Graf
0 siblings, 0 replies; 12+ messages in thread
From: Thomas Graf @ 2015-04-10 13:52 UTC (permalink / raw)
To: davem; +Cc: jeffrey.t.kirsher, intel-wired-lan, netdev, eric.dumazet, daniel
The size of struct net_device crossed the 2K boundary a while ago which
is a waste in combination with many net namespaces. This series brings
the size of struct net_device down to well below 2K in total size with
a typical configuration. Some reserves a several holes leave room for
further expansion.
Before:
/* size: 2176, cachelines: 34, members: 121 */
After:
/* size: 1984, cachelines: 31, members: 120 */
Thomas Graf (2):
e1000e: Move pm_qos_req to e1000e adapter
net_device: Reorder members to fill holes
drivers/net/ethernet/intel/e1000e/e1000.h | 1 +
drivers/net/ethernet/intel/e1000e/netdev.c | 8 +++---
include/linux/netdevice.h | 46 ++++++++++++++----------------
3 files changed, 26 insertions(+), 29 deletions(-)
---
v2:
- Moved pm_qos_req to e1000e adapter entirely as suggested by Daniel
- Dropped patch 2 based on comment from Eric. __alignof__ is not
reliable to derive alignment of kmalloc returned pointer.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Intel-wired-lan] [PATCH 0/2 net-next v2] Bring sizeof(net_device) down to < 2K bytes
@ 2015-04-10 13:52 ` Thomas Graf
0 siblings, 0 replies; 12+ messages in thread
From: Thomas Graf @ 2015-04-10 13:52 UTC (permalink / raw)
To: intel-wired-lan
The size of struct net_device crossed the 2K boundary a while ago which
is a waste in combination with many net namespaces. This series brings
the size of struct net_device down to well below 2K in total size with
a typical configuration. Some reserves a several holes leave room for
further expansion.
Before:
/* size: 2176, cachelines: 34, members: 121 */
After:
/* size: 1984, cachelines: 31, members: 120 */
Thomas Graf (2):
e1000e: Move pm_qos_req to e1000e adapter
net_device: Reorder members to fill holes
drivers/net/ethernet/intel/e1000e/e1000.h | 1 +
drivers/net/ethernet/intel/e1000e/netdev.c | 8 +++---
include/linux/netdevice.h | 46 ++++++++++++++----------------
3 files changed, 26 insertions(+), 29 deletions(-)
---
v2:
- Moved pm_qos_req to e1000e adapter entirely as suggested by Daniel
- Dropped patch 2 based on comment from Eric. __alignof__ is not
reliable to derive alignment of kmalloc returned pointer.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 1/2 net-next] e1000e: Move pm_qos_req to e1000e adapter
2015-04-10 13:52 ` [Intel-wired-lan] " Thomas Graf
@ 2015-04-10 13:52 ` Thomas Graf
-1 siblings, 0 replies; 12+ messages in thread
From: Thomas Graf @ 2015-04-10 13:52 UTC (permalink / raw)
To: davem; +Cc: jeffrey.t.kirsher, intel-wired-lan, netdev, eric.dumazet, daniel
e1000e is the only driver requiring pm_qos_req, instead of causing
every device to waste up to 240 bytes. Allocate it for the specific
driver.
Signed-off-by: Thomas Graf <tgraf@suug.ch>
---
drivers/net/ethernet/intel/e1000e/e1000.h | 1 +
drivers/net/ethernet/intel/e1000e/netdev.c | 8 ++++----
include/linux/netdevice.h | 1 -
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/net/ethernet/intel/e1000e/e1000.h b/drivers/net/ethernet/intel/e1000e/e1000.h
index a69f09e..5d9ceb1 100644
--- a/drivers/net/ethernet/intel/e1000e/e1000.h
+++ b/drivers/net/ethernet/intel/e1000e/e1000.h
@@ -343,6 +343,7 @@ struct e1000_adapter {
struct timecounter tc;
struct ptp_clock *ptp_clock;
struct ptp_clock_info ptp_clock_info;
+ struct pm_qos_request pm_qos_req;
u16 eee_advert;
};
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index 74ec185..c509a5c 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -3297,9 +3297,9 @@ static void e1000_configure_rx(struct e1000_adapter *adapter)
ew32(RXDCTL(0), rxdctl | 0x3);
}
- pm_qos_update_request(&adapter->netdev->pm_qos_req, lat);
+ pm_qos_update_request(&adapter->pm_qos_req, lat);
} else {
- pm_qos_update_request(&adapter->netdev->pm_qos_req,
+ pm_qos_update_request(&adapter->pm_qos_req,
PM_QOS_DEFAULT_VALUE);
}
@@ -4403,7 +4403,7 @@ static int e1000_open(struct net_device *netdev)
e1000_update_mng_vlan(adapter);
/* DMA latency requirement to workaround jumbo issue */
- pm_qos_add_request(&adapter->netdev->pm_qos_req, PM_QOS_CPU_DMA_LATENCY,
+ pm_qos_add_request(&adapter->pm_qos_req, PM_QOS_CPU_DMA_LATENCY,
PM_QOS_DEFAULT_VALUE);
/* before we allocate an interrupt, we must be ready to handle it.
@@ -4514,7 +4514,7 @@ static int e1000_close(struct net_device *netdev)
!test_bit(__E1000_TESTING, &adapter->state))
e1000e_release_hw_control(adapter);
- pm_qos_remove_request(&adapter->netdev->pm_qos_req);
+ pm_qos_remove_request(&adapter->pm_qos_req);
pm_runtime_put_sync(&pdev->dev);
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index bf6d9df..d66c0f9 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -1743,7 +1743,6 @@ struct net_device {
#endif
struct phy_device *phydev;
struct lock_class_key *qdisc_tx_busylock;
- struct pm_qos_request pm_qos_req;
};
#define to_net_dev(d) container_of(d, struct net_device, dev)
--
1.9.3
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Intel-wired-lan] [PATCH 1/2 net-next] e1000e: Move pm_qos_req to e1000e adapter
@ 2015-04-10 13:52 ` Thomas Graf
0 siblings, 0 replies; 12+ messages in thread
From: Thomas Graf @ 2015-04-10 13:52 UTC (permalink / raw)
To: intel-wired-lan
e1000e is the only driver requiring pm_qos_req, instead of causing
every device to waste up to 240 bytes. Allocate it for the specific
driver.
Signed-off-by: Thomas Graf <tgraf@suug.ch>
---
drivers/net/ethernet/intel/e1000e/e1000.h | 1 +
drivers/net/ethernet/intel/e1000e/netdev.c | 8 ++++----
include/linux/netdevice.h | 1 -
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/net/ethernet/intel/e1000e/e1000.h b/drivers/net/ethernet/intel/e1000e/e1000.h
index a69f09e..5d9ceb1 100644
--- a/drivers/net/ethernet/intel/e1000e/e1000.h
+++ b/drivers/net/ethernet/intel/e1000e/e1000.h
@@ -343,6 +343,7 @@ struct e1000_adapter {
struct timecounter tc;
struct ptp_clock *ptp_clock;
struct ptp_clock_info ptp_clock_info;
+ struct pm_qos_request pm_qos_req;
u16 eee_advert;
};
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index 74ec185..c509a5c 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -3297,9 +3297,9 @@ static void e1000_configure_rx(struct e1000_adapter *adapter)
ew32(RXDCTL(0), rxdctl | 0x3);
}
- pm_qos_update_request(&adapter->netdev->pm_qos_req, lat);
+ pm_qos_update_request(&adapter->pm_qos_req, lat);
} else {
- pm_qos_update_request(&adapter->netdev->pm_qos_req,
+ pm_qos_update_request(&adapter->pm_qos_req,
PM_QOS_DEFAULT_VALUE);
}
@@ -4403,7 +4403,7 @@ static int e1000_open(struct net_device *netdev)
e1000_update_mng_vlan(adapter);
/* DMA latency requirement to workaround jumbo issue */
- pm_qos_add_request(&adapter->netdev->pm_qos_req, PM_QOS_CPU_DMA_LATENCY,
+ pm_qos_add_request(&adapter->pm_qos_req, PM_QOS_CPU_DMA_LATENCY,
PM_QOS_DEFAULT_VALUE);
/* before we allocate an interrupt, we must be ready to handle it.
@@ -4514,7 +4514,7 @@ static int e1000_close(struct net_device *netdev)
!test_bit(__E1000_TESTING, &adapter->state))
e1000e_release_hw_control(adapter);
- pm_qos_remove_request(&adapter->netdev->pm_qos_req);
+ pm_qos_remove_request(&adapter->pm_qos_req);
pm_runtime_put_sync(&pdev->dev);
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index bf6d9df..d66c0f9 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -1743,7 +1743,6 @@ struct net_device {
#endif
struct phy_device *phydev;
struct lock_class_key *qdisc_tx_busylock;
- struct pm_qos_request pm_qos_req;
};
#define to_net_dev(d) container_of(d, struct net_device, dev)
--
1.9.3
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 2/2 net-next] net_device: Reorder members to fill holes
2015-04-10 13:52 ` [Intel-wired-lan] " Thomas Graf
@ 2015-04-10 13:52 ` Thomas Graf
-1 siblings, 0 replies; 12+ messages in thread
From: Thomas Graf @ 2015-04-10 13:52 UTC (permalink / raw)
To: davem; +Cc: jeffrey.t.kirsher, intel-wired-lan, netdev, eric.dumazet, daniel
Some trivial reorders while preserving the RX/TX cache lines
split to fill a couple of holes.
Signed-off-by: Thomas Graf <tgraf@suug.ch>
---
include/linux/netdevice.h | 45 +++++++++++++++++++++------------------------
1 file changed, 21 insertions(+), 24 deletions(-)
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index d66c0f9..908f0e7 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -1305,6 +1305,8 @@ enum netdev_priv_flags {
* @base_addr: Device I/O address
* @irq: Device IRQ number
*
+ * @carrier_changes: Stats to monitor carrier on<->off transitions
+ *
* @state: Generic network queuing layer state, see netdev_state_t
* @dev_list: The global list of network devices
* @napi_list: List entry, that is used for polling napi devices
@@ -1338,8 +1340,6 @@ enum netdev_priv_flags {
* @tx_dropped: Dropped packets by core network,
* do not use this in drivers
*
- * @carrier_changes: Stats to monitor carrier on<->off transitions
- *
* @wireless_handlers: List of functions to handle Wireless Extensions,
* instead of ioctl,
* see <net/iw_handler.h> for details.
@@ -1382,14 +1382,14 @@ enum netdev_priv_flags {
* @dev_port: Used to differentiate devices that share
* the same function
* @addr_list_lock: XXX: need comments on this one
- * @uc: unicast mac addresses
- * @mc: multicast mac addresses
- * @dev_addrs: list of device hw addresses
- * @queues_kset: Group of all Kobjects in the Tx and RX queues
* @uc_promisc: Counter, that indicates, that promiscuous mode
* has been enabled due to the need to listen to
* additional unicast addresses in a device that
* does not implement ndo_set_rx_mode()
+ * @uc: unicast mac addresses
+ * @mc: multicast mac addresses
+ * @dev_addrs: list of device hw addresses
+ * @queues_kset: Group of all Kobjects in the Tx and RX queues
* @promiscuity: Number of times, the NIC is told to work in
* Promiscuous mode, if it becomes 0 the NIC will
* exit from working in Promiscuous mode
@@ -1419,6 +1419,12 @@ enum netdev_priv_flags {
* @ingress_queue: XXX: need comments on this one
* @broadcast: hw bcast address
*
+ * @rx_cpu_rmap: CPU reverse-mapping for RX completion interrupts,
+ * indexed by RX queue number. Assigned by driver.
+ * This must only be set if the ndo_rx_flow_steer
+ * operation is defined
+ * @index_hlist: Device index hash chain
+ *
* @_tx: Array of TX queues
* @num_tx_queues: Number of TX queues allocated at alloc_netdev_mq() time
* @real_num_tx_queues: Number of TX queues currently active in device
@@ -1428,11 +1434,6 @@ enum netdev_priv_flags {
*
* @xps_maps: XXX: need comments on this one
*
- * @rx_cpu_rmap: CPU reverse-mapping for RX completion interrupts,
- * indexed by RX queue number. Assigned by driver.
- * This must only be set if the ndo_rx_flow_steer
- * operation is defined
- *
* @trans_start: Time (in jiffies) of last Tx
* @watchdog_timeo: Represents the timeout that is used by
* the watchdog ( see dev_watchdog() )
@@ -1440,7 +1441,6 @@ enum netdev_priv_flags {
*
* @pcpu_refcnt: Number of references to this device
* @todo_list: Delayed register/unregister
- * @index_hlist: Device index hash chain
* @link_watch_list: XXX: need comments on this one
*
* @reg_state: Register/unregister state machine
@@ -1507,6 +1507,8 @@ struct net_device {
unsigned long base_addr;
int irq;
+ atomic_t carrier_changes;
+
/*
* Some hardware also needs these fields (state,dev_list,
* napi_list,unreg_list,close_list) but they are not
@@ -1547,8 +1549,6 @@ struct net_device {
atomic_long_t rx_dropped;
atomic_long_t tx_dropped;
- atomic_t carrier_changes;
-
#ifdef CONFIG_WIRELESS_EXT
const struct iw_handler_def * wireless_handlers;
struct iw_public_data * wireless_data;
@@ -1588,6 +1588,8 @@ struct net_device {
unsigned short dev_id;
unsigned short dev_port;
spinlock_t addr_list_lock;
+ unsigned char name_assign_type;
+ bool uc_promisc;
struct netdev_hw_addr_list uc;
struct netdev_hw_addr_list mc;
struct netdev_hw_addr_list dev_addrs;
@@ -1595,10 +1597,6 @@ struct net_device {
#ifdef CONFIG_SYSFS
struct kset *queues_kset;
#endif
-
- unsigned char name_assign_type;
-
- bool uc_promisc;
unsigned int promiscuity;
unsigned int allmulti;
@@ -1645,7 +1643,10 @@ struct net_device {
struct netdev_queue __rcu *ingress_queue;
unsigned char broadcast[MAX_ADDR_LEN];
-
+#ifdef CONFIG_RFS_ACCEL
+ struct cpu_rmap *rx_cpu_rmap;
+#endif
+ struct hlist_node index_hlist;
/*
* Cache lines mostly used on transmit path
@@ -1656,13 +1657,11 @@ struct net_device {
struct Qdisc *qdisc;
unsigned long tx_queue_len;
spinlock_t tx_global_lock;
+ int watchdog_timeo;
#ifdef CONFIG_XPS
struct xps_dev_maps __rcu *xps_maps;
#endif
-#ifdef CONFIG_RFS_ACCEL
- struct cpu_rmap *rx_cpu_rmap;
-#endif
/* These may be needed for future network-power-down code. */
@@ -1672,13 +1671,11 @@ struct net_device {
*/
unsigned long trans_start;
- int watchdog_timeo;
struct timer_list watchdog_timer;
int __percpu *pcpu_refcnt;
struct list_head todo_list;
- struct hlist_node index_hlist;
struct list_head link_watch_list;
enum { NETREG_UNINITIALIZED=0,
--
1.9.3
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Intel-wired-lan] [PATCH 2/2 net-next] net_device: Reorder members to fill holes
@ 2015-04-10 13:52 ` Thomas Graf
0 siblings, 0 replies; 12+ messages in thread
From: Thomas Graf @ 2015-04-10 13:52 UTC (permalink / raw)
To: intel-wired-lan
Some trivial reorders while preserving the RX/TX cache lines
split to fill a couple of holes.
Signed-off-by: Thomas Graf <tgraf@suug.ch>
---
include/linux/netdevice.h | 45 +++++++++++++++++++++------------------------
1 file changed, 21 insertions(+), 24 deletions(-)
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index d66c0f9..908f0e7 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -1305,6 +1305,8 @@ enum netdev_priv_flags {
* @base_addr: Device I/O address
* @irq: Device IRQ number
*
+ * @carrier_changes: Stats to monitor carrier on<->off transitions
+ *
* @state: Generic network queuing layer state, see netdev_state_t
* @dev_list: The global list of network devices
* @napi_list: List entry, that is used for polling napi devices
@@ -1338,8 +1340,6 @@ enum netdev_priv_flags {
* @tx_dropped: Dropped packets by core network,
* do not use this in drivers
*
- * @carrier_changes: Stats to monitor carrier on<->off transitions
- *
* @wireless_handlers: List of functions to handle Wireless Extensions,
* instead of ioctl,
* see <net/iw_handler.h> for details.
@@ -1382,14 +1382,14 @@ enum netdev_priv_flags {
* @dev_port: Used to differentiate devices that share
* the same function
* @addr_list_lock: XXX: need comments on this one
- * @uc: unicast mac addresses
- * @mc: multicast mac addresses
- * @dev_addrs: list of device hw addresses
- * @queues_kset: Group of all Kobjects in the Tx and RX queues
* @uc_promisc: Counter, that indicates, that promiscuous mode
* has been enabled due to the need to listen to
* additional unicast addresses in a device that
* does not implement ndo_set_rx_mode()
+ * @uc: unicast mac addresses
+ * @mc: multicast mac addresses
+ * @dev_addrs: list of device hw addresses
+ * @queues_kset: Group of all Kobjects in the Tx and RX queues
* @promiscuity: Number of times, the NIC is told to work in
* Promiscuous mode, if it becomes 0 the NIC will
* exit from working in Promiscuous mode
@@ -1419,6 +1419,12 @@ enum netdev_priv_flags {
* @ingress_queue: XXX: need comments on this one
* @broadcast: hw bcast address
*
+ * @rx_cpu_rmap: CPU reverse-mapping for RX completion interrupts,
+ * indexed by RX queue number. Assigned by driver.
+ * This must only be set if the ndo_rx_flow_steer
+ * operation is defined
+ * @index_hlist: Device index hash chain
+ *
* @_tx: Array of TX queues
* @num_tx_queues: Number of TX queues allocated at alloc_netdev_mq() time
* @real_num_tx_queues: Number of TX queues currently active in device
@@ -1428,11 +1434,6 @@ enum netdev_priv_flags {
*
* @xps_maps: XXX: need comments on this one
*
- * @rx_cpu_rmap: CPU reverse-mapping for RX completion interrupts,
- * indexed by RX queue number. Assigned by driver.
- * This must only be set if the ndo_rx_flow_steer
- * operation is defined
- *
* @trans_start: Time (in jiffies) of last Tx
* @watchdog_timeo: Represents the timeout that is used by
* the watchdog ( see dev_watchdog() )
@@ -1440,7 +1441,6 @@ enum netdev_priv_flags {
*
* @pcpu_refcnt: Number of references to this device
* @todo_list: Delayed register/unregister
- * @index_hlist: Device index hash chain
* @link_watch_list: XXX: need comments on this one
*
* @reg_state: Register/unregister state machine
@@ -1507,6 +1507,8 @@ struct net_device {
unsigned long base_addr;
int irq;
+ atomic_t carrier_changes;
+
/*
* Some hardware also needs these fields (state,dev_list,
* napi_list,unreg_list,close_list) but they are not
@@ -1547,8 +1549,6 @@ struct net_device {
atomic_long_t rx_dropped;
atomic_long_t tx_dropped;
- atomic_t carrier_changes;
-
#ifdef CONFIG_WIRELESS_EXT
const struct iw_handler_def * wireless_handlers;
struct iw_public_data * wireless_data;
@@ -1588,6 +1588,8 @@ struct net_device {
unsigned short dev_id;
unsigned short dev_port;
spinlock_t addr_list_lock;
+ unsigned char name_assign_type;
+ bool uc_promisc;
struct netdev_hw_addr_list uc;
struct netdev_hw_addr_list mc;
struct netdev_hw_addr_list dev_addrs;
@@ -1595,10 +1597,6 @@ struct net_device {
#ifdef CONFIG_SYSFS
struct kset *queues_kset;
#endif
-
- unsigned char name_assign_type;
-
- bool uc_promisc;
unsigned int promiscuity;
unsigned int allmulti;
@@ -1645,7 +1643,10 @@ struct net_device {
struct netdev_queue __rcu *ingress_queue;
unsigned char broadcast[MAX_ADDR_LEN];
-
+#ifdef CONFIG_RFS_ACCEL
+ struct cpu_rmap *rx_cpu_rmap;
+#endif
+ struct hlist_node index_hlist;
/*
* Cache lines mostly used on transmit path
@@ -1656,13 +1657,11 @@ struct net_device {
struct Qdisc *qdisc;
unsigned long tx_queue_len;
spinlock_t tx_global_lock;
+ int watchdog_timeo;
#ifdef CONFIG_XPS
struct xps_dev_maps __rcu *xps_maps;
#endif
-#ifdef CONFIG_RFS_ACCEL
- struct cpu_rmap *rx_cpu_rmap;
-#endif
/* These may be needed for future network-power-down code. */
@@ -1672,13 +1671,11 @@ struct net_device {
*/
unsigned long trans_start;
- int watchdog_timeo;
struct timer_list watchdog_timer;
int __percpu *pcpu_refcnt;
struct list_head todo_list;
- struct hlist_node index_hlist;
struct list_head link_watch_list;
enum { NETREG_UNINITIALIZED=0,
--
1.9.3
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH 1/2 net-next] e1000e: Move pm_qos_req to e1000e adapter
2015-04-10 13:52 ` [Intel-wired-lan] " Thomas Graf
@ 2015-04-10 15:59 ` Jeff Kirsher
-1 siblings, 0 replies; 12+ messages in thread
From: Jeff Kirsher @ 2015-04-10 15:59 UTC (permalink / raw)
To: Thomas Graf; +Cc: davem, intel-wired-lan, netdev, eric.dumazet, daniel
[-- Attachment #1: Type: text/plain, Size: 545 bytes --]
On Fri, 2015-04-10 at 15:52 +0200, Thomas Graf wrote:
> e1000e is the only driver requiring pm_qos_req, instead of causing
> every device to waste up to 240 bytes. Allocate it for the specific
> driver.
>
> Signed-off-by: Thomas Graf <tgraf@suug.ch>
Acked-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> ---
> drivers/net/ethernet/intel/e1000e/e1000.h | 1 +
> drivers/net/ethernet/intel/e1000e/netdev.c | 8 ++++----
> include/linux/netdevice.h | 1 -
> 3 files changed, 5 insertions(+), 5 deletions(-)
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Intel-wired-lan] [PATCH 1/2 net-next] e1000e: Move pm_qos_req to e1000e adapter
@ 2015-04-10 15:59 ` Jeff Kirsher
0 siblings, 0 replies; 12+ messages in thread
From: Jeff Kirsher @ 2015-04-10 15:59 UTC (permalink / raw)
To: intel-wired-lan
On Fri, 2015-04-10 at 15:52 +0200, Thomas Graf wrote:
> e1000e is the only driver requiring pm_qos_req, instead of causing
> every device to waste up to 240 bytes. Allocate it for the specific
> driver.
>
> Signed-off-by: Thomas Graf <tgraf@suug.ch>
Acked-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> ---
> drivers/net/ethernet/intel/e1000e/e1000.h | 1 +
> drivers/net/ethernet/intel/e1000e/netdev.c | 8 ++++----
> include/linux/netdevice.h | 1 -
> 3 files changed, 5 insertions(+), 5 deletions(-)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.osuosl.org/pipermail/intel-wired-lan/attachments/20150410/bd78a132/attachment.asc>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 2/2 net-next] net_device: Reorder members to fill holes
2015-04-10 13:52 ` [Intel-wired-lan] " Thomas Graf
@ 2015-04-10 19:39 ` Eric Dumazet
-1 siblings, 0 replies; 12+ messages in thread
From: Eric Dumazet @ 2015-04-10 19:39 UTC (permalink / raw)
To: Thomas Graf; +Cc: davem, jeffrey.t.kirsher, intel-wired-lan, netdev, daniel
On Fri, 2015-04-10 at 15:52 +0200, Thomas Graf wrote:
> Some trivial reorders while preserving the RX/TX cache lines
> split to fill a couple of holes.
>
> Signed-off-by: Thomas Graf <tgraf@suug.ch>
> ---
> include/linux/netdevice.h | 45 +++++++++++++++++++++------------------------
> 1 file changed, 21 insertions(+), 24 deletions(-)
Acked-by: Eric Dumazet <edumazet@google.com>
Thanks Thomas !
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Intel-wired-lan] [PATCH 2/2 net-next] net_device: Reorder members to fill holes
@ 2015-04-10 19:39 ` Eric Dumazet
0 siblings, 0 replies; 12+ messages in thread
From: Eric Dumazet @ 2015-04-10 19:39 UTC (permalink / raw)
To: intel-wired-lan
On Fri, 2015-04-10 at 15:52 +0200, Thomas Graf wrote:
> Some trivial reorders while preserving the RX/TX cache lines
> split to fill a couple of holes.
>
> Signed-off-by: Thomas Graf <tgraf@suug.ch>
> ---
> include/linux/netdevice.h | 45 +++++++++++++++++++++------------------------
> 1 file changed, 21 insertions(+), 24 deletions(-)
Acked-by: Eric Dumazet <edumazet@google.com>
Thanks Thomas !
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 0/2 net-next v2] Bring sizeof(net_device) down to < 2K bytes
2015-04-10 13:52 ` [Intel-wired-lan] " Thomas Graf
@ 2015-04-13 17:15 ` David Miller
-1 siblings, 0 replies; 12+ messages in thread
From: David Miller @ 2015-04-13 17:15 UTC (permalink / raw)
To: tgraf; +Cc: jeffrey.t.kirsher, intel-wired-lan, netdev, eric.dumazet, daniel
From: Thomas Graf <tgraf@suug.ch>
Date: Fri, 10 Apr 2015 15:52:36 +0200
> The size of struct net_device crossed the 2K boundary a while ago which
> is a waste in combination with many net namespaces. This series brings
> the size of struct net_device down to well below 2K in total size with
> a typical configuration. Some reserves a several holes leave room for
> further expansion.
>
> Before:
> /* size: 2176, cachelines: 34, members: 121 */
>
> After:
> /* size: 1984, cachelines: 31, members: 120 */
Series applied, thanks Thomas
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Intel-wired-lan] [PATCH 0/2 net-next v2] Bring sizeof(net_device) down to < 2K bytes
@ 2015-04-13 17:15 ` David Miller
0 siblings, 0 replies; 12+ messages in thread
From: David Miller @ 2015-04-13 17:15 UTC (permalink / raw)
To: intel-wired-lan
From: Thomas Graf <tgraf@suug.ch>
Date: Fri, 10 Apr 2015 15:52:36 +0200
> The size of struct net_device crossed the 2K boundary a while ago which
> is a waste in combination with many net namespaces. This series brings
> the size of struct net_device down to well below 2K in total size with
> a typical configuration. Some reserves a several holes leave room for
> further expansion.
>
> Before:
> /* size: 2176, cachelines: 34, members: 121 */
>
> After:
> /* size: 1984, cachelines: 31, members: 120 */
Series applied, thanks Thomas
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2015-04-13 17:15 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-10 13:52 [PATCH 0/2 net-next v2] Bring sizeof(net_device) down to < 2K bytes Thomas Graf
2015-04-10 13:52 ` [Intel-wired-lan] " Thomas Graf
2015-04-10 13:52 ` [PATCH 1/2 net-next] e1000e: Move pm_qos_req to e1000e adapter Thomas Graf
2015-04-10 13:52 ` [Intel-wired-lan] " Thomas Graf
2015-04-10 15:59 ` Jeff Kirsher
2015-04-10 15:59 ` [Intel-wired-lan] " Jeff Kirsher
2015-04-10 13:52 ` [PATCH 2/2 net-next] net_device: Reorder members to fill holes Thomas Graf
2015-04-10 13:52 ` [Intel-wired-lan] " Thomas Graf
2015-04-10 19:39 ` Eric Dumazet
2015-04-10 19:39 ` [Intel-wired-lan] " Eric Dumazet
2015-04-13 17:15 ` [PATCH 0/2 net-next v2] Bring sizeof(net_device) down to < 2K bytes David Miller
2015-04-13 17:15 ` [Intel-wired-lan] " David Miller
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.