Skip to content

Commit 8857034

Browse files
shimodaydavem330
authored andcommitted
net: rswitch: Use unsigned int for desc related array index
Array index should not be negative, so use unsigned int for descriptors related array index. Signed-off-by: Yoshihiro Shimoda <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent c7e0022 commit 8857034

File tree

2 files changed

+56
-46
lines changed

2 files changed

+56
-46
lines changed

drivers/net/ethernet/renesas/rswitch.c

+49-39
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ static void rswitch_clock_disable(struct rswitch_private *priv)
5656
iowrite32(RCDC_RCD, priv->addr + RCDC);
5757
}
5858

59-
static bool rswitch_agent_clock_is_enabled(void __iomem *coma_addr, int port)
59+
static bool rswitch_agent_clock_is_enabled(void __iomem *coma_addr,
60+
unsigned int port)
6061
{
6162
u32 val = ioread32(coma_addr + RCEC);
6263

@@ -66,7 +67,8 @@ static bool rswitch_agent_clock_is_enabled(void __iomem *coma_addr, int port)
6667
return false;
6768
}
6869

69-
static void rswitch_agent_clock_ctrl(void __iomem *coma_addr, int port, int enable)
70+
static void rswitch_agent_clock_ctrl(void __iomem *coma_addr, unsigned int port,
71+
int enable)
7072
{
7173
u32 val;
7274

@@ -100,7 +102,7 @@ static void rswitch_coma_init(struct rswitch_private *priv)
100102
/* R-Switch-2 block (TOP) */
101103
static void rswitch_top_init(struct rswitch_private *priv)
102104
{
103-
int i;
105+
unsigned int i;
104106

105107
for (i = 0; i < RSWITCH_MAX_NUM_QUEUES; i++)
106108
iowrite32((i / 16) << (GWCA_INDEX * 8), priv->addr + TPEMIMC7(i));
@@ -109,7 +111,7 @@ static void rswitch_top_init(struct rswitch_private *priv)
109111
/* Forwarding engine block (MFWD) */
110112
static void rswitch_fwd_init(struct rswitch_private *priv)
111113
{
112-
int i;
114+
unsigned int i;
113115

114116
/* For ETHA */
115117
for (i = 0; i < RSWITCH_NUM_PORTS; i++) {
@@ -166,7 +168,7 @@ static int rswitch_gwca_axi_ram_reset(struct rswitch_private *priv)
166168
static bool rswitch_is_any_data_irq(struct rswitch_private *priv, u32 *dis, bool tx)
167169
{
168170
u32 *mask = tx ? priv->gwca.tx_irq_bits : priv->gwca.rx_irq_bits;
169-
int i;
171+
unsigned int i;
170172

171173
for (i = 0; i < RSWITCH_NUM_IRQ_REGS; i++) {
172174
if (dis[i] & mask[i])
@@ -178,31 +180,34 @@ static bool rswitch_is_any_data_irq(struct rswitch_private *priv, u32 *dis, bool
178180

179181
static void rswitch_get_data_irq_status(struct rswitch_private *priv, u32 *dis)
180182
{
181-
int i;
183+
unsigned int i;
182184

183185
for (i = 0; i < RSWITCH_NUM_IRQ_REGS; i++) {
184186
dis[i] = ioread32(priv->addr + GWDIS(i));
185187
dis[i] &= ioread32(priv->addr + GWDIE(i));
186188
}
187189
}
188190

189-
static void rswitch_enadis_data_irq(struct rswitch_private *priv, int index, bool enable)
191+
static void rswitch_enadis_data_irq(struct rswitch_private *priv,
192+
unsigned int index, bool enable)
190193
{
191194
u32 offs = enable ? GWDIE(index / 32) : GWDID(index / 32);
192195

193196
iowrite32(BIT(index % 32), priv->addr + offs);
194197
}
195198

196-
static void rswitch_ack_data_irq(struct rswitch_private *priv, int index)
199+
static void rswitch_ack_data_irq(struct rswitch_private *priv,
200+
unsigned int index)
197201
{
198202
u32 offs = GWDIS(index / 32);
199203

200204
iowrite32(BIT(index % 32), priv->addr + offs);
201205
}
202206

203-
static int rswitch_next_queue_index(struct rswitch_gwca_queue *gq, bool cur, int num)
207+
static unsigned int rswitch_next_queue_index(struct rswitch_gwca_queue *gq,
208+
bool cur, unsigned int num)
204209
{
205-
int index = cur ? gq->cur : gq->dirty;
210+
unsigned int index = cur ? gq->cur : gq->dirty;
206211

207212
if (index + num >= gq->ring_size)
208213
index = (index + num) % gq->ring_size;
@@ -212,7 +217,7 @@ static int rswitch_next_queue_index(struct rswitch_gwca_queue *gq, bool cur, int
212217
return index;
213218
}
214219

215-
static int rswitch_get_num_cur_queues(struct rswitch_gwca_queue *gq)
220+
static unsigned int rswitch_get_num_cur_queues(struct rswitch_gwca_queue *gq)
216221
{
217222
if (gq->cur >= gq->dirty)
218223
return gq->cur - gq->dirty;
@@ -231,9 +236,10 @@ static bool rswitch_is_queue_rxed(struct rswitch_gwca_queue *gq)
231236
}
232237

233238
static int rswitch_gwca_queue_alloc_skb(struct rswitch_gwca_queue *gq,
234-
int start_index, int num)
239+
unsigned int start_index,
240+
unsigned int num)
235241
{
236-
int i, index;
242+
unsigned int i, index;
237243

238244
for (i = 0; i < num; i++) {
239245
index = (i + start_index) % gq->ring_size;
@@ -248,7 +254,7 @@ static int rswitch_gwca_queue_alloc_skb(struct rswitch_gwca_queue *gq,
248254
return 0;
249255

250256
err:
251-
for (i--; i >= 0; i--) {
257+
for (; i-- > 0; ) {
252258
index = (i + start_index) % gq->ring_size;
253259
dev_kfree_skb(gq->skbs[index]);
254260
gq->skbs[index] = NULL;
@@ -260,7 +266,7 @@ static int rswitch_gwca_queue_alloc_skb(struct rswitch_gwca_queue *gq,
260266
static void rswitch_gwca_queue_free(struct net_device *ndev,
261267
struct rswitch_gwca_queue *gq)
262268
{
263-
int i;
269+
unsigned int i;
264270

265271
if (!gq->dir_tx) {
266272
dma_free_coherent(ndev->dev.parent,
@@ -294,9 +300,9 @@ static void rswitch_gwca_ts_queue_free(struct rswitch_private *priv)
294300
static int rswitch_gwca_queue_alloc(struct net_device *ndev,
295301
struct rswitch_private *priv,
296302
struct rswitch_gwca_queue *gq,
297-
bool dir_tx, int ring_size)
303+
bool dir_tx, unsigned int ring_size)
298304
{
299-
int i, bit;
305+
unsigned int i, bit;
300306

301307
gq->dir_tx = dir_tx;
302308
gq->ring_size = ring_size;
@@ -351,11 +357,11 @@ static int rswitch_gwca_queue_format(struct net_device *ndev,
351357
struct rswitch_private *priv,
352358
struct rswitch_gwca_queue *gq)
353359
{
354-
int ring_size = sizeof(struct rswitch_ext_desc) * gq->ring_size;
360+
unsigned int ring_size = sizeof(struct rswitch_ext_desc) * gq->ring_size;
355361
struct rswitch_ext_desc *desc;
356362
struct rswitch_desc *linkfix;
357363
dma_addr_t dma_addr;
358-
int i;
364+
unsigned int i;
359365

360366
memset(gq->tx_ring, 0, ring_size);
361367
for (i = 0, desc = gq->tx_ring; i < gq->ring_size; i++, desc++) {
@@ -387,7 +393,7 @@ static int rswitch_gwca_queue_format(struct net_device *ndev,
387393

388394
err:
389395
if (!gq->dir_tx) {
390-
for (i--, desc = gq->tx_ring; i >= 0; i--, desc++) {
396+
for (desc = gq->tx_ring; i-- > 0; desc++) {
391397
dma_addr = rswitch_desc_get_dptr(&desc->desc);
392398
dma_unmap_single(ndev->dev.parent, dma_addr, PKT_BUF_SZ,
393399
DMA_FROM_DEVICE);
@@ -398,11 +404,12 @@ static int rswitch_gwca_queue_format(struct net_device *ndev,
398404
}
399405

400406
static void rswitch_gwca_ts_queue_fill(struct rswitch_private *priv,
401-
int start_index, int num)
407+
unsigned int start_index,
408+
unsigned int num)
402409
{
403410
struct rswitch_gwca_queue *gq = &priv->gwca.ts_queue;
404411
struct rswitch_ts_desc *desc;
405-
int i, index;
412+
unsigned int i, index;
406413

407414
for (i = 0; i < num; i++) {
408415
index = (i + start_index) % gq->ring_size;
@@ -413,12 +420,13 @@ static void rswitch_gwca_ts_queue_fill(struct rswitch_private *priv,
413420

414421
static int rswitch_gwca_queue_ext_ts_fill(struct net_device *ndev,
415422
struct rswitch_gwca_queue *gq,
416-
int start_index, int num)
423+
unsigned int start_index,
424+
unsigned int num)
417425
{
418426
struct rswitch_device *rdev = netdev_priv(ndev);
419427
struct rswitch_ext_ts_desc *desc;
428+
unsigned int i, index;
420429
dma_addr_t dma_addr;
421-
int i, index;
422430

423431
for (i = 0; i < num; i++) {
424432
index = (i + start_index) % gq->ring_size;
@@ -444,7 +452,7 @@ static int rswitch_gwca_queue_ext_ts_fill(struct net_device *ndev,
444452

445453
err:
446454
if (!gq->dir_tx) {
447-
for (i--; i >= 0; i--) {
455+
for (; i-- > 0; ) {
448456
index = (i + start_index) % gq->ring_size;
449457
desc = &gq->rx_ring[index];
450458
dma_addr = rswitch_desc_get_dptr(&desc->desc);
@@ -460,7 +468,7 @@ static int rswitch_gwca_queue_ext_ts_format(struct net_device *ndev,
460468
struct rswitch_private *priv,
461469
struct rswitch_gwca_queue *gq)
462470
{
463-
int ring_size = sizeof(struct rswitch_ext_ts_desc) * gq->ring_size;
471+
unsigned int ring_size = sizeof(struct rswitch_ext_ts_desc) * gq->ring_size;
464472
struct rswitch_ext_ts_desc *desc;
465473
struct rswitch_desc *linkfix;
466474
int err;
@@ -487,7 +495,7 @@ static int rswitch_gwca_queue_ext_ts_format(struct net_device *ndev,
487495

488496
static int rswitch_gwca_linkfix_alloc(struct rswitch_private *priv)
489497
{
490-
int i, num_queues = priv->gwca.num_queues;
498+
unsigned int i, num_queues = priv->gwca.num_queues;
491499
struct rswitch_gwca *gwca = &priv->gwca;
492500
struct device *dev = &priv->pdev->dev;
493501

@@ -537,7 +545,7 @@ static int rswitch_gwca_ts_queue_alloc(struct rswitch_private *priv)
537545
static struct rswitch_gwca_queue *rswitch_gwca_get(struct rswitch_private *priv)
538546
{
539547
struct rswitch_gwca_queue *gq;
540-
int index;
548+
unsigned int index;
541549

542550
index = find_first_zero_bit(priv->gwca.used, priv->gwca.num_queues);
543551
if (index >= priv->gwca.num_queues)
@@ -583,7 +591,7 @@ static void rswitch_txdmac_free(struct net_device *ndev)
583591
rswitch_gwca_put(rdev->priv, rdev->tx_queue);
584592
}
585593

586-
static int rswitch_txdmac_init(struct rswitch_private *priv, int index)
594+
static int rswitch_txdmac_init(struct rswitch_private *priv, unsigned int index)
587595
{
588596
struct rswitch_device *rdev = priv->rdev[index];
589597

@@ -617,7 +625,7 @@ static void rswitch_rxdmac_free(struct net_device *ndev)
617625
rswitch_gwca_put(rdev->priv, rdev->rx_queue);
618626
}
619627

620-
static int rswitch_rxdmac_init(struct rswitch_private *priv, int index)
628+
static int rswitch_rxdmac_init(struct rswitch_private *priv, unsigned int index)
621629
{
622630
struct rswitch_device *rdev = priv->rdev[index];
623631
struct net_device *ndev = rdev->ndev;
@@ -627,7 +635,8 @@ static int rswitch_rxdmac_init(struct rswitch_private *priv, int index)
627635

628636
static int rswitch_gwca_hw_init(struct rswitch_private *priv)
629637
{
630-
int i, err;
638+
unsigned int i;
639+
int err;
631640

632641
err = rswitch_gwca_change_mode(priv, GWMC_OPC_DISABLE);
633642
if (err < 0)
@@ -698,9 +707,10 @@ static bool rswitch_rx(struct net_device *ndev, int *quota)
698707
struct rswitch_device *rdev = netdev_priv(ndev);
699708
struct rswitch_gwca_queue *gq = rdev->rx_queue;
700709
struct rswitch_ext_ts_desc *desc;
701-
int limit, boguscnt, num, ret;
710+
int limit, boguscnt, ret;
702711
struct sk_buff *skb;
703712
dma_addr_t dma_addr;
713+
unsigned int num;
704714
u16 pkt_len;
705715
u32 get_ts;
706716

@@ -768,7 +778,7 @@ static void rswitch_tx_free(struct net_device *ndev)
768778
struct rswitch_ext_desc *desc;
769779
dma_addr_t dma_addr;
770780
struct sk_buff *skb;
771-
int size;
781+
unsigned int size;
772782

773783
for (; rswitch_get_num_cur_queues(gq) > 0;
774784
gq->dirty = rswitch_next_queue_index(gq, false, 1)) {
@@ -847,7 +857,7 @@ static void rswitch_queue_interrupt(struct net_device *ndev)
847857
static irqreturn_t rswitch_data_irq(struct rswitch_private *priv, u32 *dis)
848858
{
849859
struct rswitch_gwca_queue *gq;
850-
int i, index, bit;
860+
unsigned int i, index, bit;
851861

852862
for (i = 0; i < priv->gwca.num_queues; i++) {
853863
gq = &priv->gwca.queues[i];
@@ -914,8 +924,8 @@ static void rswitch_ts(struct rswitch_private *priv)
914924
struct skb_shared_hwtstamps shhwtstamps;
915925
struct rswitch_ts_desc *desc;
916926
struct timespec64 ts;
927+
unsigned int num;
917928
u32 tag, port;
918-
int num;
919929

920930
desc = &gq->ts_ring[gq->cur];
921931
while ((desc->desc.die_dt & DT_MASK) != DT_FEMPTY_ND) {
@@ -1434,7 +1444,7 @@ static int rswitch_ether_port_init_all(struct rswitch_private *priv)
14341444

14351445
static void rswitch_ether_port_deinit_all(struct rswitch_private *priv)
14361446
{
1437-
int i;
1447+
unsigned int i;
14381448

14391449
for (i = 0; i < RSWITCH_NUM_PORTS; i++) {
14401450
phy_exit(priv->rdev[i]->serdes);
@@ -1689,7 +1699,7 @@ static const struct of_device_id renesas_eth_sw_of_table[] = {
16891699
};
16901700
MODULE_DEVICE_TABLE(of, renesas_eth_sw_of_table);
16911701

1692-
static void rswitch_etha_init(struct rswitch_private *priv, int index)
1702+
static void rswitch_etha_init(struct rswitch_private *priv, unsigned int index)
16931703
{
16941704
struct rswitch_etha *etha = &priv->etha[index];
16951705

@@ -1705,7 +1715,7 @@ static void rswitch_etha_init(struct rswitch_private *priv, int index)
17051715
etha->psmcs = clk_get_rate(priv->clk) / 100000 / (25 * 2) - 1;
17061716
}
17071717

1708-
static int rswitch_device_alloc(struct rswitch_private *priv, int index)
1718+
static int rswitch_device_alloc(struct rswitch_private *priv, unsigned int index)
17091719
{
17101720
struct platform_device *pdev = priv->pdev;
17111721
struct rswitch_device *rdev;
@@ -1776,7 +1786,7 @@ static int rswitch_device_alloc(struct rswitch_private *priv, int index)
17761786
return err;
17771787
}
17781788

1779-
static void rswitch_device_free(struct rswitch_private *priv, int index)
1789+
static void rswitch_device_free(struct rswitch_private *priv, unsigned int index)
17801790
{
17811791
struct rswitch_device *rdev = priv->rdev[index];
17821792
struct net_device *ndev = rdev->ndev;

drivers/net/ethernet/renesas/rswitch.h

+7-7
Original file line numberDiff line numberDiff line change
@@ -909,7 +909,7 @@ struct rswitch_ext_ts_desc {
909909
} __packed;
910910

911911
struct rswitch_etha {
912-
int index;
912+
unsigned int index;
913913
void __iomem *addr;
914914
void __iomem *coma_addr;
915915
bool external_phy;
@@ -938,12 +938,12 @@ struct rswitch_gwca_queue {
938938

939939
/* Common */
940940
dma_addr_t ring_dma;
941-
int ring_size;
942-
int cur;
943-
int dirty;
941+
unsigned int ring_size;
942+
unsigned int cur;
943+
unsigned int dirty;
944944

945-
/* For [rt]_ring */
946-
int index;
945+
/* For [rt]x_ring */
946+
unsigned int index;
947947
bool dir_tx;
948948
struct sk_buff **skbs;
949949
struct net_device *ndev; /* queue to ndev for irq */
@@ -959,7 +959,7 @@ struct rswitch_gwca_ts_info {
959959

960960
#define RSWITCH_NUM_IRQ_REGS (RSWITCH_MAX_NUM_QUEUES / BITS_PER_TYPE(u32))
961961
struct rswitch_gwca {
962-
int index;
962+
unsigned int index;
963963
struct rswitch_desc *linkfix_table;
964964
dma_addr_t linkfix_table_dma;
965965
u32 linkfix_table_size;

0 commit comments

Comments
 (0)