Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1393498 > unrolled thread
| Started by | Florian Westphal <fw@strlen.de> |
|---|---|
| First post | 2016-05-03 17:20 +0200 |
| Last post | 2016-05-04 20:20 +0200 |
| Articles | 8 — 4 participants |
Back to article view | Back to linux.kernel
[PATCH net-next 0/5] net: remove trans_start from struct net_device Florian Westphal <fw@strlen.de> - 2016-05-03 17:20 +0200
[PATCH net-next 1/5] dmfe: kill DEVICE define Florian Westphal <fw@strlen.de> - 2016-05-03 17:20 +0200
[PATCH net-next 2/5] drivers: replace dev->trans_start accesses with dev_trans_start Florian Westphal <fw@strlen.de> - 2016-05-03 17:20 +0200
Re: [PATCH net-next 2/5] drivers: replace dev->trans_start accesses with dev_trans_start Doug Ledford <dledford@redhat.com> - 2016-05-12 21:50 +0200
[PATCH net-next 5/5] net: remove dev->trans_start Florian Westphal <fw@strlen.de> - 2016-05-03 17:40 +0200
Re: [PATCH net-next 5/5] net: remove dev->trans_start kbuild test robot <lkp@intel.com> - 2016-05-03 19:30 +0200
Re: [PATCH net-next 5/5] net: remove dev->trans_start Florian Westphal <fw@strlen.de> - 2016-05-03 19:40 +0200
Re: [PATCH net-next 0/5] net: remove trans_start from struct net_device David Miller <davem@davemloft.net> - 2016-05-04 20:20 +0200
| From | Florian Westphal <fw@strlen.de> |
|---|---|
| Date | 2016-05-03 17:20 +0200 |
| Subject | [PATCH net-next 0/5] net: remove trans_start from struct net_device |
| Message-ID | <ruKhb-1Y8-5@gated-at.bofh.it> |
We currently have two instances for trans_start, once in net_device and once in netdev_queue. This series removes trans_start from net_device. Updates to dev->trans_start are replaced with updates to netdev queue 0. This series is compile-tested only. Replacement is done in 3 steps: 1. Replace read-accesses: x = dev->trans_start gets replaced by x = dev_trans_start(dev) 2. Replace write accesses: dev->trans_start = jiffies; gets replaced with new helper: netif_trans_update(dev); 3. This helper is then changed to set netdev_get_tx_queue(dev, 0)->trans_start instead of dev->trans_start. After this dev->trans_start can be removed. It should be noted that after this series several instances of netif_trans_update() are useless (if they occur in .ndo_start_xmit and driver doesn't set LLTX flag -- stack already did an update). Comments welcome.
[toc] | [next] | [standalone]
| From | Florian Westphal <fw@strlen.de> |
|---|---|
| Date | 2016-05-03 17:20 +0200 |
| Subject | [PATCH net-next 1/5] dmfe: kill DEVICE define |
| Message-ID | <ruKhc-1Y8-19@gated-at.bofh.it> |
| In reply to | #1393498 |
use net_device directly. Compile tested, objdiff shows no changes.
Cc: linux-parisc@vger.kernel.org
Signed-off-by: Florian Westphal <fw@strlen.de>
---
drivers/net/ethernet/dec/tulip/dmfe.c | 39 ++++++++++++++++-------------------
1 file changed, 18 insertions(+), 21 deletions(-)
diff --git a/drivers/net/ethernet/dec/tulip/dmfe.c b/drivers/net/ethernet/dec/tulip/dmfe.c
index afd8e78..dd1c815 100644
--- a/drivers/net/ethernet/dec/tulip/dmfe.c
+++ b/drivers/net/ethernet/dec/tulip/dmfe.c
@@ -192,9 +192,6 @@
(__CHK_IO_SIZE(((pci_dev)->device << 16) | (pci_dev)->vendor, \
(pci_dev)->revision))
-/* Sten Check */
-#define DEVICE net_device
-
/* Structure/enum declaration ------------------------------- */
struct tx_desc {
__le32 tdes0, tdes1, tdes2, tdes3; /* Data for the card */
@@ -313,10 +310,10 @@ static u8 SF_mode; /* Special Function: 1:VLAN, 2:RX Flow Control
/* function declaration ------------------------------------- */
-static int dmfe_open(struct DEVICE *);
-static netdev_tx_t dmfe_start_xmit(struct sk_buff *, struct DEVICE *);
-static int dmfe_stop(struct DEVICE *);
-static void dmfe_set_filter_mode(struct DEVICE *);
+static int dmfe_open(struct net_device *);
+static netdev_tx_t dmfe_start_xmit(struct sk_buff *, struct net_device *);
+static int dmfe_stop(struct net_device *);
+static void dmfe_set_filter_mode(struct net_device *);
static const struct ethtool_ops netdev_ethtool_ops;
static u16 read_srom_word(void __iomem *, int);
static irqreturn_t dmfe_interrupt(int , void *);
@@ -326,8 +323,8 @@ static void poll_dmfe (struct net_device *dev);
static void dmfe_descriptor_init(struct net_device *);
static void allocate_rx_buffer(struct net_device *);
static void update_cr6(u32, void __iomem *);
-static void send_filter_frame(struct DEVICE *);
-static void dm9132_id_table(struct DEVICE *);
+static void send_filter_frame(struct net_device *);
+static void dm9132_id_table(struct net_device *);
static u16 dmfe_phy_read(void __iomem *, u8, u8, u32);
static void dmfe_phy_write(void __iomem *, u8, u8, u16, u32);
static void dmfe_phy_write_1bit(void __iomem *, u32);
@@ -336,12 +333,12 @@ static u8 dmfe_sense_speed(struct dmfe_board_info *);
static void dmfe_process_mode(struct dmfe_board_info *);
static void dmfe_timer(unsigned long);
static inline u32 cal_CRC(unsigned char *, unsigned int, u8);
-static void dmfe_rx_packet(struct DEVICE *, struct dmfe_board_info *);
-static void dmfe_free_tx_pkt(struct DEVICE *, struct dmfe_board_info *);
+static void dmfe_rx_packet(struct net_device *, struct dmfe_board_info *);
+static void dmfe_free_tx_pkt(struct net_device *, struct dmfe_board_info *);
static void dmfe_reuse_skb(struct dmfe_board_info *, struct sk_buff *);
-static void dmfe_dynamic_reset(struct DEVICE *);
+static void dmfe_dynamic_reset(struct net_device *);
static void dmfe_free_rxbuffer(struct dmfe_board_info *);
-static void dmfe_init_dm910x(struct DEVICE *);
+static void dmfe_init_dm910x(struct net_device *);
static void dmfe_parse_srom(struct dmfe_board_info *);
static void dmfe_program_DM9801(struct dmfe_board_info *, int);
static void dmfe_program_DM9802(struct dmfe_board_info *);
@@ -558,7 +555,7 @@ static void dmfe_remove_one(struct pci_dev *pdev)
* The interface is opened whenever "ifconfig" actives it.
*/
-static int dmfe_open(struct DEVICE *dev)
+static int dmfe_open(struct net_device *dev)
{
struct dmfe_board_info *db = netdev_priv(dev);
const int irq = db->pdev->irq;
@@ -617,7 +614,7 @@ static int dmfe_open(struct DEVICE *dev)
* Enable Tx/Rx machine
*/
-static void dmfe_init_dm910x(struct DEVICE *dev)
+static void dmfe_init_dm910x(struct net_device *dev)
{
struct dmfe_board_info *db = netdev_priv(dev);
void __iomem *ioaddr = db->ioaddr;
@@ -684,7 +681,7 @@ static void dmfe_init_dm910x(struct DEVICE *dev)
*/
static netdev_tx_t dmfe_start_xmit(struct sk_buff *skb,
- struct DEVICE *dev)
+ struct net_device *dev)
{
struct dmfe_board_info *db = netdev_priv(dev);
void __iomem *ioaddr = db->ioaddr;
@@ -754,7 +751,7 @@ static netdev_tx_t dmfe_start_xmit(struct sk_buff *skb,
* The interface is stopped when it is brought.
*/
-static int dmfe_stop(struct DEVICE *dev)
+static int dmfe_stop(struct net_device *dev)
{
struct dmfe_board_info *db = netdev_priv(dev);
void __iomem *ioaddr = db->ioaddr;
@@ -798,7 +795,7 @@ static int dmfe_stop(struct DEVICE *dev)
static irqreturn_t dmfe_interrupt(int irq, void *dev_id)
{
- struct DEVICE *dev = dev_id;
+ struct net_device *dev = dev_id;
struct dmfe_board_info *db = netdev_priv(dev);
void __iomem *ioaddr = db->ioaddr;
unsigned long flags;
@@ -879,7 +876,7 @@ static void poll_dmfe (struct net_device *dev)
* Free TX resource after TX complete
*/
-static void dmfe_free_tx_pkt(struct DEVICE *dev, struct dmfe_board_info * db)
+static void dmfe_free_tx_pkt(struct net_device *dev, struct dmfe_board_info *db)
{
struct tx_desc *txptr;
void __iomem *ioaddr = db->ioaddr;
@@ -961,7 +958,7 @@ static inline u32 cal_CRC(unsigned char * Data, unsigned int Len, u8 flag)
* Receive the come packet and pass to upper layer
*/
-static void dmfe_rx_packet(struct DEVICE *dev, struct dmfe_board_info * db)
+static void dmfe_rx_packet(struct net_device *dev, struct dmfe_board_info *db)
{
struct rx_desc *rxptr;
struct sk_buff *skb, *newskb;
@@ -1052,7 +1049,7 @@ static void dmfe_rx_packet(struct DEVICE *dev, struct dmfe_board_info * db)
* Set DM910X multicast address
*/
-static void dmfe_set_filter_mode(struct DEVICE * dev)
+static void dmfe_set_filter_mode(struct net_device *dev)
{
struct dmfe_board_info *db = netdev_priv(dev);
unsigned long flags;
--
2.7.3
[toc] | [prev] | [next] | [standalone]
| From | Florian Westphal <fw@strlen.de> |
|---|---|
| Date | 2016-05-03 17:20 +0200 |
| Subject | [PATCH net-next 2/5] drivers: replace dev->trans_start accesses with dev_trans_start |
| Message-ID | <ruKhc-1Y8-27@gated-at.bofh.it> |
| In reply to | #1393498 |
a trans_start struct member exists twice:
- in struct net_device (legacy)
- in struct netdev_queue
Instead of open-coding dev->trans_start usage to obtain the current
trans_start value, use dev_trans_start() instead.
This is not exactly the same, as dev_trans_start also considers
the trans_start values of the netdev queues owned by the device
and provides the most recent one.
For legacy devices this doesn't matter as dev_trans_start can cope
with netdev trans_start values of 0 (they are ignored).
This is a prerequisite to eventual removal of dev->trans_start.
Cc: linux-rdma@vger.kernel.org
Signed-off-by: Florian Westphal <fw@strlen.de>
---
Checkpatch complains about Lines > 80 but I find line break more ugly.
drivers/infiniband/ulp/ipoib/ipoib_main.c | 2 +-
drivers/net/ethernet/intel/e1000e/netdev.c | 2 +-
drivers/net/ethernet/intel/igb/igb_main.c | 2 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 2 +-
drivers/net/ethernet/microchip/encx24j600.c | 2 +-
drivers/net/ethernet/qualcomm/qca_spi.c | 2 +-
drivers/net/fjes/fjes_main.c | 2 +-
drivers/net/hamradio/mkiss.c | 2 +-
drivers/staging/rtl8192e/rtllib_softmac.c | 2 +-
drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c | 2 +-
10 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index 80807d6..b940ef1 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -1036,7 +1036,7 @@ static void ipoib_timeout(struct net_device *dev)
struct ipoib_dev_priv *priv = netdev_priv(dev);
ipoib_warn(priv, "transmit timeout: latency %d msecs\n",
- jiffies_to_msecs(jiffies - dev->trans_start));
+ jiffies_to_msecs(jiffies - dev_trans_start(dev)));
ipoib_warn(priv, "queue stopped %d, tx_head %u, tx_tail %u\n",
netif_queue_stopped(dev),
priv->tx_head, priv->tx_tail);
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index a7f16c3..269087c 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -242,7 +242,7 @@ static void e1000e_dump(struct e1000_adapter *adapter)
dev_info(&adapter->pdev->dev, "Net device Info\n");
pr_info("Device Name state trans_start last_rx\n");
pr_info("%-15s %016lX %016lX %016lX\n", netdev->name,
- netdev->state, netdev->trans_start, netdev->last_rx);
+ netdev->state, dev_trans_start(netdev), netdev->last_rx);
}
/* Print Registers */
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 8e96c35..7460bdb 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -383,7 +383,7 @@ static void igb_dump(struct igb_adapter *adapter)
dev_info(&adapter->pdev->dev, "Net device Info\n");
pr_info("Device Name state trans_start last_rx\n");
pr_info("%-15s %016lX %016lX %016lX\n", netdev->name,
- netdev->state, netdev->trans_start, netdev->last_rx);
+ netdev->state, dev_trans_start(netdev), netdev->last_rx);
}
/* Print Registers */
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index 0ef4a15..18dcfc5 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -608,7 +608,7 @@ static void ixgbe_dump(struct ixgbe_adapter *adapter)
pr_info("%-15s %016lX %016lX %016lX\n",
netdev->name,
netdev->state,
- netdev->trans_start,
+ dev_trans_start(netdev),
netdev->last_rx);
}
diff --git a/drivers/net/ethernet/microchip/encx24j600.c b/drivers/net/ethernet/microchip/encx24j600.c
index 7df3183..707283b 100644
--- a/drivers/net/ethernet/microchip/encx24j600.c
+++ b/drivers/net/ethernet/microchip/encx24j600.c
@@ -890,7 +890,7 @@ static void encx24j600_tx_timeout(struct net_device *dev)
struct encx24j600_priv *priv = netdev_priv(dev);
netif_err(priv, tx_err, dev, "TX timeout at %ld, latency %ld\n",
- jiffies, jiffies - dev->trans_start);
+ jiffies, jiffies - dev_trans_start(dev));
dev->stats.tx_errors++;
netif_wake_queue(dev);
diff --git a/drivers/net/ethernet/qualcomm/qca_spi.c b/drivers/net/ethernet/qualcomm/qca_spi.c
index 1ef0393..82f3c88 100644
--- a/drivers/net/ethernet/qualcomm/qca_spi.c
+++ b/drivers/net/ethernet/qualcomm/qca_spi.c
@@ -734,7 +734,7 @@ qcaspi_netdev_tx_timeout(struct net_device *dev)
struct qcaspi *qca = netdev_priv(dev);
netdev_info(qca->net_dev, "Transmit timeout at %ld, latency %ld\n",
- jiffies, jiffies - dev->trans_start);
+ jiffies, jiffies - dev_trans_start(dev));
qca->net_dev->stats.tx_errors++;
/* Trigger tx queue flush and QCA7000 reset */
qca->sync = QCASPI_SYNC_UNKNOWN;
diff --git a/drivers/net/fjes/fjes_main.c b/drivers/net/fjes/fjes_main.c
index bb7e903..7ad3d04 100644
--- a/drivers/net/fjes/fjes_main.c
+++ b/drivers/net/fjes/fjes_main.c
@@ -471,7 +471,7 @@ static void fjes_tx_stall_task(struct work_struct *work)
int i;
if (((long)jiffies -
- (long)(netdev->trans_start)) > FJES_TX_TX_STALL_TIMEOUT) {
+ dev_trans_start(netdev)) > FJES_TX_TX_STALL_TIMEOUT) {
netif_wake_queue(netdev);
return;
}
diff --git a/drivers/net/hamradio/mkiss.c b/drivers/net/hamradio/mkiss.c
index 85828f1..c685937 100644
--- a/drivers/net/hamradio/mkiss.c
+++ b/drivers/net/hamradio/mkiss.c
@@ -542,7 +542,7 @@ static netdev_tx_t ax_xmit(struct sk_buff *skb, struct net_device *dev)
* May be we must check transmitter timeout here ?
* 14 Oct 1994 Dmitry Gorodchanin.
*/
- if (time_before(jiffies, dev->trans_start + 20 * HZ)) {
+ if (time_before(jiffies, dev_trans_start(dev) + 20 * HZ)) {
/* 20 sec timeout not reached */
return NETDEV_TX_BUSY;
}
diff --git a/drivers/staging/rtl8192e/rtllib_softmac.c b/drivers/staging/rtl8192e/rtllib_softmac.c
index cfab715..62154e3 100644
--- a/drivers/staging/rtl8192e/rtllib_softmac.c
+++ b/drivers/staging/rtl8192e/rtllib_softmac.c
@@ -1991,7 +1991,7 @@ static short rtllib_sta_ps_sleep(struct rtllib_device *ieee, u64 *time)
return 2;
if (!time_after(jiffies,
- ieee->dev->trans_start + msecs_to_jiffies(timeout)))
+ dev_trans_start(ieee->dev) + msecs_to_jiffies(timeout)))
return 0;
if (!time_after(jiffies,
ieee->last_rx_ps_time + msecs_to_jiffies(timeout)))
diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c b/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c
index ae1274c..de71450 100644
--- a/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c
+++ b/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c
@@ -1737,7 +1737,7 @@ static short ieee80211_sta_ps_sleep(struct ieee80211_device *ieee, u32 *time_h,
return 2;
if(!time_after(jiffies,
- ieee->dev->trans_start + msecs_to_jiffies(timeout)))
+ dev_trans_start(ieee->dev) + msecs_to_jiffies(timeout)))
return 0;
if(!time_after(jiffies,
--
2.7.3
[toc] | [prev] | [next] | [standalone]
| From | Doug Ledford <dledford@redhat.com> |
|---|---|
| Date | 2016-05-12 21:50 +0200 |
| Subject | Re: [PATCH net-next 2/5] drivers: replace dev->trans_start accesses with dev_trans_start |
| Message-ID | <ry4Mp-3PW-3@gated-at.bofh.it> |
| In reply to | #1393504 |
[Multipart message — attachments visible in raw view] — view raw
On 05/03/2016 10:30 AM, Florian Westphal wrote:
> a trans_start struct member exists twice:
> - in struct net_device (legacy)
> - in struct netdev_queue
>
> Instead of open-coding dev->trans_start usage to obtain the current
> trans_start value, use dev_trans_start() instead.
>
> This is not exactly the same, as dev_trans_start also considers
> the trans_start values of the netdev queues owned by the device
> and provides the most recent one.
>
> For legacy devices this doesn't matter as dev_trans_start can cope
> with netdev trans_start values of 0 (they are ignored).
>
> This is a prerequisite to eventual removal of dev->trans_start.
>
> Cc: linux-rdma@vger.kernel.org
> Signed-off-by: Florian Westphal <fw@strlen.de>
> ---
> Checkpatch complains about Lines > 80 but I find line break more ugly.
>
> drivers/infiniband/ulp/ipoib/ipoib_main.c | 2 +-
For ipoib part,
Acked-by: Doug Ledford <dledford@redhat.com>
> drivers/net/ethernet/intel/e1000e/netdev.c | 2 +-
> drivers/net/ethernet/intel/igb/igb_main.c | 2 +-
> drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 2 +-
> drivers/net/ethernet/microchip/encx24j600.c | 2 +-
> drivers/net/ethernet/qualcomm/qca_spi.c | 2 +-
> drivers/net/fjes/fjes_main.c | 2 +-
> drivers/net/hamradio/mkiss.c | 2 +-
> drivers/staging/rtl8192e/rtllib_softmac.c | 2 +-
> drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c | 2 +-
> 10 files changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
> index 80807d6..b940ef1 100644
> --- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
> +++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
> @@ -1036,7 +1036,7 @@ static void ipoib_timeout(struct net_device *dev)
> struct ipoib_dev_priv *priv = netdev_priv(dev);
>
> ipoib_warn(priv, "transmit timeout: latency %d msecs\n",
> - jiffies_to_msecs(jiffies - dev->trans_start));
> + jiffies_to_msecs(jiffies - dev_trans_start(dev)));
> ipoib_warn(priv, "queue stopped %d, tx_head %u, tx_tail %u\n",
> netif_queue_stopped(dev),
> priv->tx_head, priv->tx_tail);
> diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
> index a7f16c3..269087c 100644
> --- a/drivers/net/ethernet/intel/e1000e/netdev.c
> +++ b/drivers/net/ethernet/intel/e1000e/netdev.c
> @@ -242,7 +242,7 @@ static void e1000e_dump(struct e1000_adapter *adapter)
> dev_info(&adapter->pdev->dev, "Net device Info\n");
> pr_info("Device Name state trans_start last_rx\n");
> pr_info("%-15s %016lX %016lX %016lX\n", netdev->name,
> - netdev->state, netdev->trans_start, netdev->last_rx);
> + netdev->state, dev_trans_start(netdev), netdev->last_rx);
> }
>
> /* Print Registers */
> diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
> index 8e96c35..7460bdb 100644
> --- a/drivers/net/ethernet/intel/igb/igb_main.c
> +++ b/drivers/net/ethernet/intel/igb/igb_main.c
> @@ -383,7 +383,7 @@ static void igb_dump(struct igb_adapter *adapter)
> dev_info(&adapter->pdev->dev, "Net device Info\n");
> pr_info("Device Name state trans_start last_rx\n");
> pr_info("%-15s %016lX %016lX %016lX\n", netdev->name,
> - netdev->state, netdev->trans_start, netdev->last_rx);
> + netdev->state, dev_trans_start(netdev), netdev->last_rx);
> }
>
> /* Print Registers */
> diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> index 0ef4a15..18dcfc5 100644
> --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> @@ -608,7 +608,7 @@ static void ixgbe_dump(struct ixgbe_adapter *adapter)
> pr_info("%-15s %016lX %016lX %016lX\n",
> netdev->name,
> netdev->state,
> - netdev->trans_start,
> + dev_trans_start(netdev),
> netdev->last_rx);
> }
>
> diff --git a/drivers/net/ethernet/microchip/encx24j600.c b/drivers/net/ethernet/microchip/encx24j600.c
> index 7df3183..707283b 100644
> --- a/drivers/net/ethernet/microchip/encx24j600.c
> +++ b/drivers/net/ethernet/microchip/encx24j600.c
> @@ -890,7 +890,7 @@ static void encx24j600_tx_timeout(struct net_device *dev)
> struct encx24j600_priv *priv = netdev_priv(dev);
>
> netif_err(priv, tx_err, dev, "TX timeout at %ld, latency %ld\n",
> - jiffies, jiffies - dev->trans_start);
> + jiffies, jiffies - dev_trans_start(dev));
>
> dev->stats.tx_errors++;
> netif_wake_queue(dev);
> diff --git a/drivers/net/ethernet/qualcomm/qca_spi.c b/drivers/net/ethernet/qualcomm/qca_spi.c
> index 1ef0393..82f3c88 100644
> --- a/drivers/net/ethernet/qualcomm/qca_spi.c
> +++ b/drivers/net/ethernet/qualcomm/qca_spi.c
> @@ -734,7 +734,7 @@ qcaspi_netdev_tx_timeout(struct net_device *dev)
> struct qcaspi *qca = netdev_priv(dev);
>
> netdev_info(qca->net_dev, "Transmit timeout at %ld, latency %ld\n",
> - jiffies, jiffies - dev->trans_start);
> + jiffies, jiffies - dev_trans_start(dev));
> qca->net_dev->stats.tx_errors++;
> /* Trigger tx queue flush and QCA7000 reset */
> qca->sync = QCASPI_SYNC_UNKNOWN;
> diff --git a/drivers/net/fjes/fjes_main.c b/drivers/net/fjes/fjes_main.c
> index bb7e903..7ad3d04 100644
> --- a/drivers/net/fjes/fjes_main.c
> +++ b/drivers/net/fjes/fjes_main.c
> @@ -471,7 +471,7 @@ static void fjes_tx_stall_task(struct work_struct *work)
> int i;
>
> if (((long)jiffies -
> - (long)(netdev->trans_start)) > FJES_TX_TX_STALL_TIMEOUT) {
> + dev_trans_start(netdev)) > FJES_TX_TX_STALL_TIMEOUT) {
> netif_wake_queue(netdev);
> return;
> }
> diff --git a/drivers/net/hamradio/mkiss.c b/drivers/net/hamradio/mkiss.c
> index 85828f1..c685937 100644
> --- a/drivers/net/hamradio/mkiss.c
> +++ b/drivers/net/hamradio/mkiss.c
> @@ -542,7 +542,7 @@ static netdev_tx_t ax_xmit(struct sk_buff *skb, struct net_device *dev)
> * May be we must check transmitter timeout here ?
> * 14 Oct 1994 Dmitry Gorodchanin.
> */
> - if (time_before(jiffies, dev->trans_start + 20 * HZ)) {
> + if (time_before(jiffies, dev_trans_start(dev) + 20 * HZ)) {
> /* 20 sec timeout not reached */
> return NETDEV_TX_BUSY;
> }
> diff --git a/drivers/staging/rtl8192e/rtllib_softmac.c b/drivers/staging/rtl8192e/rtllib_softmac.c
> index cfab715..62154e3 100644
> --- a/drivers/staging/rtl8192e/rtllib_softmac.c
> +++ b/drivers/staging/rtl8192e/rtllib_softmac.c
> @@ -1991,7 +1991,7 @@ static short rtllib_sta_ps_sleep(struct rtllib_device *ieee, u64 *time)
> return 2;
>
> if (!time_after(jiffies,
> - ieee->dev->trans_start + msecs_to_jiffies(timeout)))
> + dev_trans_start(ieee->dev) + msecs_to_jiffies(timeout)))
> return 0;
> if (!time_after(jiffies,
> ieee->last_rx_ps_time + msecs_to_jiffies(timeout)))
> diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c b/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c
> index ae1274c..de71450 100644
> --- a/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c
> +++ b/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c
> @@ -1737,7 +1737,7 @@ static short ieee80211_sta_ps_sleep(struct ieee80211_device *ieee, u32 *time_h,
> return 2;
>
> if(!time_after(jiffies,
> - ieee->dev->trans_start + msecs_to_jiffies(timeout)))
> + dev_trans_start(ieee->dev) + msecs_to_jiffies(timeout)))
> return 0;
>
> if(!time_after(jiffies,
>
--
Doug Ledford <dledford@redhat.com>
GPG KeyID: 0E572FDD
[toc] | [prev] | [next] | [standalone]
| From | Florian Westphal <fw@strlen.de> |
|---|---|
| Date | 2016-05-03 17:40 +0200 |
| Subject | [PATCH net-next 5/5] net: remove dev->trans_start |
| Message-ID | <ruKAy-29Y-37@gated-at.bofh.it> |
| In reply to | #1393498 |
previous patches removed all direct accesses to dev->trans_start,
so change the netif_trans_update helper to update trans_start of
netdev queue 0 instead and then remove trans_start from struct net_device.
AFAICS a lot of the netif_trans_update() invocations are now useless
because they occur in ndo_start_xmit and driver doesn't set LLTX
(i.e. stack already took care of the update).
As I can't test any of them it seems better to just leave them alone.
Signed-off-by: Florian Westphal <fw@strlen.de>
---
drivers/net/ethernet/intel/i40e/i40e_main.c | 2 +-
include/linux/netdevice.h | 15 +++++----------
net/sched/sch_generic.c | 10 +++-------
3 files changed, 9 insertions(+), 18 deletions(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 8e6c0f2..f6da6b7 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -328,7 +328,7 @@ static void i40e_tx_timeout(struct net_device *netdev)
unsigned long trans_start;
q = netdev_get_tx_queue(netdev, i);
- trans_start = q->trans_start ? : netdev->trans_start;
+ trans_start = q->trans_start;
if (netif_xmit_stopped(q) &&
time_after(jiffies,
(trans_start + netdev->watchdog_timeo))) {
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 798f285..fba2faa 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -581,7 +581,7 @@ struct netdev_queue {
spinlock_t _xmit_lock ____cacheline_aligned_in_smp;
int xmit_lock_owner;
/*
- * please use this field instead of dev->trans_start
+ * Time (in jiffies) of last Tx
*/
unsigned long trans_start;
@@ -1545,7 +1545,6 @@ enum netdev_priv_flags {
*
* @offload_fwd_mark: Offload device fwding mark
*
- * @trans_start: Time (in jiffies) of last Tx
* @watchdog_timeo: Represents the timeout that is used by
* the watchdog (see dev_watchdog())
* @watchdog_timer: List of timers
@@ -1794,13 +1793,6 @@ struct net_device {
#endif
/* These may be needed for future network-power-down code. */
-
- /*
- * trans_start here is expensive for high speed devices on SMP,
- * please use netdev_queue->trans_start instead.
- */
- unsigned long trans_start;
-
struct timer_list watchdog_timer;
int __percpu *pcpu_refcnt;
@@ -3484,7 +3476,10 @@ static inline void txq_trans_update(struct netdev_queue *txq)
/* legacy drivers only, netdev_start_xmit() sets txq->trans_start */
static inline void netif_trans_update(struct net_device *dev)
{
- dev->trans_start = jiffies;
+ struct netdev_queue *txq = netdev_get_tx_queue(dev, 0);
+
+ if (txq->trans_start != jiffies)
+ txq->trans_start = jiffies;
}
/**
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
index 70182cf..269dd71 100644
--- a/net/sched/sch_generic.c
+++ b/net/sched/sch_generic.c
@@ -227,13 +227,12 @@ unsigned long dev_trans_start(struct net_device *dev)
if (is_vlan_dev(dev))
dev = vlan_dev_real_dev(dev);
- res = dev->trans_start;
- for (i = 0; i < dev->num_tx_queues; i++) {
+ res = netdev_get_tx_queue(dev, 0)->trans_start;
+ for (i = 1; i < dev->num_tx_queues; i++) {
val = netdev_get_tx_queue(dev, i)->trans_start;
if (val && time_after(val, res))
res = val;
}
- dev->trans_start = res;
return res;
}
@@ -256,10 +255,7 @@ static void dev_watchdog(unsigned long arg)
struct netdev_queue *txq;
txq = netdev_get_tx_queue(dev, i);
- /*
- * old device drivers set dev->trans_start
- */
- trans_start = txq->trans_start ? : dev->trans_start;
+ trans_start = txq->trans_start;
if (netif_xmit_stopped(txq) &&
time_after(jiffies, (trans_start +
dev->watchdog_timeo))) {
--
2.7.3
[toc] | [prev] | [next] | [standalone]
| From | kbuild test robot <lkp@intel.com> |
|---|---|
| Date | 2016-05-03 19:30 +0200 |
| Subject | Re: [PATCH net-next 5/5] net: remove dev->trans_start |
| Message-ID | <ruMj0-3Hu-1@gated-at.bofh.it> |
| In reply to | #1393540 |
[Multipart message — attachments visible in raw view] — view raw
Hi,
[auto build test ERROR on net-next/master]
url: https://github.com/0day-ci/linux/commits/Florian-Westphal/net-remove-trans_start-from-struct-net_device/20160503-234813
config: s390-default_defconfig (attached as .config)
compiler: s390x-linux-gnu-gcc (Debian 5.3.1-8) 5.3.1 20160205
reproduce:
wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=s390
Note: the linux-review/Florian-Westphal/net-remove-trans_start-from-struct-net_device/20160503-234813 HEAD 2f61b7d5d947dad50a74493b21fe750103f74b1c builds fine.
It only hurts bisectibility.
All errors (new ones prefixed by >>):
drivers/s390/net/qeth_core_main.c: In function 'qeth_flush_buffers':
>> drivers/s390/net/qeth_core_main.c:3484:18: error: 'struct net_device' has no member named 'trans_start'
queue->card->dev->trans_start = jiffies;
^
vim +3484 drivers/s390/net/qeth_core_main.c
4a71df500 Frank Blaschka 2008-02-15 3478 atomic_inc(&queue->set_pci_flags_count);
3ec90878b Jan Glauber 2011-06-06 3479 buf->buffer->element[0].sflags |= SBAL_SFLAGS0_PCI_REQ;
4a71df500 Frank Blaschka 2008-02-15 3480 }
4a71df500 Frank Blaschka 2008-02-15 3481 }
4a71df500 Frank Blaschka 2008-02-15 3482 }
4a71df500 Frank Blaschka 2008-02-15 3483
4a71df500 Frank Blaschka 2008-02-15 @3484 queue->card->dev->trans_start = jiffies;
4a71df500 Frank Blaschka 2008-02-15 3485 if (queue->card->options.performance_stats) {
4a71df500 Frank Blaschka 2008-02-15 3486 queue->card->perf_stats.outbound_do_qdio_cnt++;
4a71df500 Frank Blaschka 2008-02-15 3487 queue->card->perf_stats.outbound_do_qdio_start_time =
:::::: The code at line 3484 was first introduced by commit
:::::: 4a71df50047f0db65ea09b1be155852e81a45eba qeth: new qeth device driver
:::::: TO: Frank Blaschka <frank.blaschka@de.ibm.com>
:::::: CC: Jeff Garzik <jeff@garzik.org>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[toc] | [prev] | [next] | [standalone]
| From | Florian Westphal <fw@strlen.de> |
|---|---|
| Date | 2016-05-03 19:40 +0200 |
| Subject | Re: [PATCH net-next 5/5] net: remove dev->trans_start |
| Message-ID | <ruMsI-3Sd-67@gated-at.bofh.it> |
| In reply to | #1393635 |
kbuild test robot <lkp@intel.com> wrote: > [auto build test ERROR on net-next/master] > > url: https://github.com/0day-ci/linux/commits/Florian-Westphal/net-remove-trans_start-from-struct-net_device/20160503-234813 > config: s390-default_defconfig (attached as .config) > compiler: s390x-linux-gnu-gcc (Debian 5.3.1-8) 5.3.1 20160205 > reproduce: > wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross > chmod +x ~/bin/make.cross > # save the attached .config to linux build tree > make.cross ARCH=s390 > > Note: the linux-review/Florian-Westphal/net-remove-trans_start-from-struct-net_device/20160503-234813 HEAD 2f61b7d5d947dad50a74493b21fe750103f74b1c builds fine. > It only hurts bisectibility. > > All errors (new ones prefixed by >>): > > drivers/s390/net/qeth_core_main.c: In function 'qeth_flush_buffers': > >> drivers/s390/net/qeth_core_main.c:3484:18: error: 'struct net_device' has no member named 'trans_start' > queue->card->dev->trans_start = jiffies; Indeed, patch #4 missed this when doing the replacement. There is a similar mistake for a tilera-specific driver. I'll submit a v2 of this series later.
[toc] | [prev] | [next] | [standalone]
| From | David Miller <davem@davemloft.net> |
|---|---|
| Date | 2016-05-04 20:20 +0200 |
| Subject | Re: [PATCH net-next 0/5] net: remove trans_start from struct net_device |
| Message-ID | <rv9yW-DZ-9@gated-at.bofh.it> |
| In reply to | #1393498 |
From: Florian Westphal <fw@strlen.de> Date: Tue, 3 May 2016 16:30:57 +0200 > We currently have two instances for trans_start, once in > net_device and once in netdev_queue. > > This series removes trans_start from net_device. > Updates to dev->trans_start are replaced with updates to netdev queue 0. Series applied, of course sans patch #1 which you resubmitted separately. Thanks.
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web