Commit 48cf0a25 authored by Yoshihiro Shimoda's avatar Yoshihiro Shimoda Committed by Jakub Kicinski

net: renesas: rswitch: Remove gptp flag from rswitch_gwca_queue

In the previous code, the gptp flag was completely related to
the !dir_tx in struct rswitch_gwca_queue because
rswitch_gwca_queue_alloc() was called below:

< In rswitch_txdmac_alloc() >
err = rswitch_gwca_queue_alloc(ndev, priv, rdev->tx_queue, true, false,
			      TX_RING_SIZE);
So, dir_tx = true, and gptp = false.

< In rswitch_rxdmac_alloc() >
err = rswitch_gwca_queue_alloc(ndev, priv, rdev->rx_queue, false, true,
			      RX_RING_SIZE);
So, dir_tx = false, and gptp = true.

In the future, a new queue handling for timestamp will be implemented
and this gptp flag is confusable. So, remove the gptp flag.
Signed-off-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Reviewed-by: default avatarAlexander Duyck <alexanderduyck@fb.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent e3f38039
...@@ -280,11 +280,14 @@ static void rswitch_gwca_queue_free(struct net_device *ndev, ...@@ -280,11 +280,14 @@ static void rswitch_gwca_queue_free(struct net_device *ndev,
{ {
int i; int i;
if (gq->gptp) { if (!gq->dir_tx) {
dma_free_coherent(ndev->dev.parent, dma_free_coherent(ndev->dev.parent,
sizeof(struct rswitch_ext_ts_desc) * sizeof(struct rswitch_ext_ts_desc) *
(gq->ring_size + 1), gq->rx_ring, gq->ring_dma); (gq->ring_size + 1), gq->rx_ring, gq->ring_dma);
gq->rx_ring = NULL; gq->rx_ring = NULL;
for (i = 0; i < gq->ring_size; i++)
dev_kfree_skb(gq->skbs[i]);
} else { } else {
dma_free_coherent(ndev->dev.parent, dma_free_coherent(ndev->dev.parent,
sizeof(struct rswitch_ext_desc) * sizeof(struct rswitch_ext_desc) *
...@@ -292,11 +295,6 @@ static void rswitch_gwca_queue_free(struct net_device *ndev, ...@@ -292,11 +295,6 @@ static void rswitch_gwca_queue_free(struct net_device *ndev,
gq->tx_ring = NULL; gq->tx_ring = NULL;
} }
if (!gq->dir_tx) {
for (i = 0; i < gq->ring_size; i++)
dev_kfree_skb(gq->skbs[i]);
}
kfree(gq->skbs); kfree(gq->skbs);
gq->skbs = NULL; gq->skbs = NULL;
} }
...@@ -304,12 +302,11 @@ static void rswitch_gwca_queue_free(struct net_device *ndev, ...@@ -304,12 +302,11 @@ static void rswitch_gwca_queue_free(struct net_device *ndev,
static int rswitch_gwca_queue_alloc(struct net_device *ndev, static int rswitch_gwca_queue_alloc(struct net_device *ndev,
struct rswitch_private *priv, struct rswitch_private *priv,
struct rswitch_gwca_queue *gq, struct rswitch_gwca_queue *gq,
bool dir_tx, bool gptp, int ring_size) bool dir_tx, int ring_size)
{ {
int i, bit; int i, bit;
gq->dir_tx = dir_tx; gq->dir_tx = dir_tx;
gq->gptp = gptp;
gq->ring_size = ring_size; gq->ring_size = ring_size;
gq->ndev = ndev; gq->ndev = ndev;
...@@ -317,17 +314,18 @@ static int rswitch_gwca_queue_alloc(struct net_device *ndev, ...@@ -317,17 +314,18 @@ static int rswitch_gwca_queue_alloc(struct net_device *ndev,
if (!gq->skbs) if (!gq->skbs)
return -ENOMEM; return -ENOMEM;
if (!dir_tx) if (!dir_tx) {
rswitch_gwca_queue_alloc_skb(gq, 0, gq->ring_size); rswitch_gwca_queue_alloc_skb(gq, 0, gq->ring_size);
if (gptp)
gq->rx_ring = dma_alloc_coherent(ndev->dev.parent, gq->rx_ring = dma_alloc_coherent(ndev->dev.parent,
sizeof(struct rswitch_ext_ts_desc) * sizeof(struct rswitch_ext_ts_desc) *
(gq->ring_size + 1), &gq->ring_dma, GFP_KERNEL); (gq->ring_size + 1), &gq->ring_dma, GFP_KERNEL);
else } else {
gq->tx_ring = dma_alloc_coherent(ndev->dev.parent, gq->tx_ring = dma_alloc_coherent(ndev->dev.parent,
sizeof(struct rswitch_ext_desc) * sizeof(struct rswitch_ext_desc) *
(gq->ring_size + 1), &gq->ring_dma, GFP_KERNEL); (gq->ring_size + 1), &gq->ring_dma, GFP_KERNEL);
}
if (!gq->rx_ring && !gq->tx_ring) if (!gq->rx_ring && !gq->tx_ring)
goto out; goto out;
...@@ -539,8 +537,7 @@ static int rswitch_txdmac_alloc(struct net_device *ndev) ...@@ -539,8 +537,7 @@ static int rswitch_txdmac_alloc(struct net_device *ndev)
if (!rdev->tx_queue) if (!rdev->tx_queue)
return -EBUSY; return -EBUSY;
err = rswitch_gwca_queue_alloc(ndev, priv, rdev->tx_queue, true, false, err = rswitch_gwca_queue_alloc(ndev, priv, rdev->tx_queue, true, TX_RING_SIZE);
TX_RING_SIZE);
if (err < 0) { if (err < 0) {
rswitch_gwca_put(priv, rdev->tx_queue); rswitch_gwca_put(priv, rdev->tx_queue);
return err; return err;
...@@ -574,8 +571,7 @@ static int rswitch_rxdmac_alloc(struct net_device *ndev) ...@@ -574,8 +571,7 @@ static int rswitch_rxdmac_alloc(struct net_device *ndev)
if (!rdev->rx_queue) if (!rdev->rx_queue)
return -EBUSY; return -EBUSY;
err = rswitch_gwca_queue_alloc(ndev, priv, rdev->rx_queue, false, true, err = rswitch_gwca_queue_alloc(ndev, priv, rdev->rx_queue, false, RX_RING_SIZE);
RX_RING_SIZE);
if (err < 0) { if (err < 0) {
rswitch_gwca_put(priv, rdev->rx_queue); rswitch_gwca_put(priv, rdev->rx_queue);
return err; return err;
......
...@@ -913,7 +913,6 @@ struct rswitch_etha { ...@@ -913,7 +913,6 @@ struct rswitch_etha {
struct rswitch_gwca_queue { struct rswitch_gwca_queue {
int index; int index;
bool dir_tx; bool dir_tx;
bool gptp;
union { union {
struct rswitch_ext_desc *tx_ring; struct rswitch_ext_desc *tx_ring;
struct rswitch_ext_ts_desc *rx_ring; struct rswitch_ext_ts_desc *rx_ring;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment