arch/arm/mach-rpc/dma.c
267
struct floppy_dma *fdma = container_of(dma, struct floppy_dma, dma);
arch/arm/mach-rpc/dma.c
272
if (fdma->dma.sg)
arch/arm/mach-rpc/dma.c
275
if (fdma->dma.dma_mode == DMA_MODE_READ) {
arch/arm/mach-rpc/dma.c
285
regs.ARM_r9 = fdma->dma.count;
arch/arm/mach-rpc/dma.c
286
regs.ARM_r10 = (unsigned long)fdma->dma.addr;
arch/arm/mach-rpc/dma.c
296
enable_fiq(fdma->fiq);
arch/arm/mach-rpc/dma.c
301
struct floppy_dma *fdma = container_of(dma, struct floppy_dma, dma);
arch/arm/mach-rpc/dma.c
302
disable_fiq(fdma->fiq);
drivers/acpi/acpi_processor.c
139
errata.piix4.fdma = 1;
drivers/acpi/processor_idle.c
338
if (errata.piix4.fdma) {
drivers/net/dsa/mxl862xx/mxl862xx.c
194
struct mxl862xx_register_mod fdma = {
drivers/net/dsa/mxl862xx/mxl862xx.c
205
return MXL862XX_API_WRITE(ds->priv, MXL862XX_COMMON_REGISTERMOD, fdma);
drivers/net/ethernet/microchip/fdma/fdma_api.c
10
static int __fdma_db_add(struct fdma *fdma, int dcb_idx, int db_idx, u64 status,
drivers/net/ethernet/microchip/fdma/fdma_api.c
104
int fdma_alloc_phys(struct fdma *fdma)
drivers/net/ethernet/microchip/fdma/fdma_api.c
106
fdma->dcbs = kzalloc(fdma->size, GFP_KERNEL);
drivers/net/ethernet/microchip/fdma/fdma_api.c
107
if (!fdma->dcbs)
drivers/net/ethernet/microchip/fdma/fdma_api.c
11
int (*cb)(struct fdma *fdma, int dcb_idx,
drivers/net/ethernet/microchip/fdma/fdma_api.c
110
fdma->dma = virt_to_phys(fdma->dcbs);
drivers/net/ethernet/microchip/fdma/fdma_api.c
117
void fdma_free_coherent(struct device *dev, struct fdma *fdma)
drivers/net/ethernet/microchip/fdma/fdma_api.c
119
dma_free_coherent(dev, fdma->size, fdma->dcbs, fdma->dma);
drivers/net/ethernet/microchip/fdma/fdma_api.c
124
void fdma_free_phys(struct fdma *fdma)
drivers/net/ethernet/microchip/fdma/fdma_api.c
126
kfree(fdma->dcbs);
drivers/net/ethernet/microchip/fdma/fdma_api.c
131
u32 fdma_get_size(struct fdma *fdma)
drivers/net/ethernet/microchip/fdma/fdma_api.c
133
return ALIGN(sizeof(struct fdma_dcb) * fdma->n_dcbs, PAGE_SIZE);
drivers/net/ethernet/microchip/fdma/fdma_api.c
14
struct fdma_db *db = fdma_db_get(fdma, dcb_idx, db_idx);
drivers/net/ethernet/microchip/fdma/fdma_api.c
140
u32 fdma_get_size_contiguous(struct fdma *fdma)
drivers/net/ethernet/microchip/fdma/fdma_api.c
142
return ALIGN(fdma->n_dcbs * sizeof(struct fdma_dcb) +
drivers/net/ethernet/microchip/fdma/fdma_api.c
143
fdma->n_dcbs * fdma->n_dbs * fdma->db_size,
drivers/net/ethernet/microchip/fdma/fdma_api.c
18
return cb(fdma, dcb_idx, db_idx, &db->dataptr);
drivers/net/ethernet/microchip/fdma/fdma_api.c
22
int fdma_db_add(struct fdma *fdma, int dcb_idx, int db_idx, u64 status)
drivers/net/ethernet/microchip/fdma/fdma_api.c
24
return __fdma_db_add(fdma,
drivers/net/ethernet/microchip/fdma/fdma_api.c
28
fdma->ops.dataptr_cb);
drivers/net/ethernet/microchip/fdma/fdma_api.c
32
int __fdma_dcb_add(struct fdma *fdma, int dcb_idx, u64 info, u64 status,
drivers/net/ethernet/microchip/fdma/fdma_api.c
33
int (*dcb_cb)(struct fdma *fdma, int dcb_idx, u64 *nextptr),
drivers/net/ethernet/microchip/fdma/fdma_api.c
34
int (*db_cb)(struct fdma *fdma, int dcb_idx, int db_idx,
drivers/net/ethernet/microchip/fdma/fdma_api.c
37
struct fdma_dcb *dcb = fdma_dcb_get(fdma, dcb_idx);
drivers/net/ethernet/microchip/fdma/fdma_api.c
40
for (i = 0; i < fdma->n_dbs; i++) {
drivers/net/ethernet/microchip/fdma/fdma_api.c
41
err = __fdma_db_add(fdma, dcb_idx, i, status, db_cb);
drivers/net/ethernet/microchip/fdma/fdma_api.c
46
err = dcb_cb(fdma, dcb_idx, &fdma->last_dcb->nextptr);
drivers/net/ethernet/microchip/fdma/fdma_api.c
50
fdma->last_dcb = dcb;
drivers/net/ethernet/microchip/fdma/fdma_api.c
60
int fdma_dcb_add(struct fdma *fdma, int dcb_idx, u64 info, u64 status)
drivers/net/ethernet/microchip/fdma/fdma_api.c
62
return __fdma_dcb_add(fdma,
drivers/net/ethernet/microchip/fdma/fdma_api.c
65
fdma->ops.nextptr_cb,
drivers/net/ethernet/microchip/fdma/fdma_api.c
66
fdma->ops.dataptr_cb);
drivers/net/ethernet/microchip/fdma/fdma_api.c
71
int fdma_dcbs_init(struct fdma *fdma, u64 info, u64 status)
drivers/net/ethernet/microchip/fdma/fdma_api.c
75
fdma->last_dcb = fdma->dcbs;
drivers/net/ethernet/microchip/fdma/fdma_api.c
76
fdma->db_index = 0;
drivers/net/ethernet/microchip/fdma/fdma_api.c
77
fdma->dcb_index = 0;
drivers/net/ethernet/microchip/fdma/fdma_api.c
79
for (i = 0; i < fdma->n_dcbs; i++) {
drivers/net/ethernet/microchip/fdma/fdma_api.c
80
err = fdma_dcb_add(fdma, i, info, status);
drivers/net/ethernet/microchip/fdma/fdma_api.c
90
int fdma_alloc_coherent(struct device *dev, struct fdma *fdma)
drivers/net/ethernet/microchip/fdma/fdma_api.c
92
fdma->dcbs = dma_alloc_coherent(dev,
drivers/net/ethernet/microchip/fdma/fdma_api.c
93
fdma->size,
drivers/net/ethernet/microchip/fdma/fdma_api.c
94
&fdma->dma,
drivers/net/ethernet/microchip/fdma/fdma_api.c
96
if (!fdma->dcbs)
drivers/net/ethernet/microchip/fdma/fdma_api.h
115
static inline void fdma_dcb_advance(struct fdma *fdma)
drivers/net/ethernet/microchip/fdma/fdma_api.h
117
fdma->dcb_index++;
drivers/net/ethernet/microchip/fdma/fdma_api.h
118
if (fdma->dcb_index >= fdma->n_dcbs)
drivers/net/ethernet/microchip/fdma/fdma_api.h
119
fdma->dcb_index = 0;
drivers/net/ethernet/microchip/fdma/fdma_api.h
123
static inline void fdma_db_advance(struct fdma *fdma)
drivers/net/ethernet/microchip/fdma/fdma_api.h
125
fdma->db_index++;
drivers/net/ethernet/microchip/fdma/fdma_api.h
129
static inline void fdma_db_reset(struct fdma *fdma)
drivers/net/ethernet/microchip/fdma/fdma_api.h
131
fdma->db_index = 0;
drivers/net/ethernet/microchip/fdma/fdma_api.h
135
static inline bool fdma_dcb_is_reusable(struct fdma *fdma)
drivers/net/ethernet/microchip/fdma/fdma_api.h
137
return fdma->db_index != fdma->n_dbs;
drivers/net/ethernet/microchip/fdma/fdma_api.h
159
static inline struct fdma_db *fdma_db_get(struct fdma *fdma, int dcb_idx,
drivers/net/ethernet/microchip/fdma/fdma_api.h
162
return &fdma->dcbs[dcb_idx].db[db_idx];
drivers/net/ethernet/microchip/fdma/fdma_api.h
166
static inline struct fdma_db *fdma_db_next_get(struct fdma *fdma)
drivers/net/ethernet/microchip/fdma/fdma_api.h
168
return fdma_db_get(fdma, fdma->dcb_index, fdma->db_index);
drivers/net/ethernet/microchip/fdma/fdma_api.h
172
static inline struct fdma_dcb *fdma_dcb_get(struct fdma *fdma, int dcb_idx)
drivers/net/ethernet/microchip/fdma/fdma_api.h
174
return &fdma->dcbs[dcb_idx];
drivers/net/ethernet/microchip/fdma/fdma_api.h
178
static inline struct fdma_dcb *fdma_dcb_next_get(struct fdma *fdma)
drivers/net/ethernet/microchip/fdma/fdma_api.h
180
return fdma_dcb_get(fdma, fdma->dcb_index);
drivers/net/ethernet/microchip/fdma/fdma_api.h
184
static inline bool fdma_has_frames(struct fdma *fdma)
drivers/net/ethernet/microchip/fdma/fdma_api.h
186
return fdma_db_is_done(fdma_db_next_get(fdma));
drivers/net/ethernet/microchip/fdma/fdma_api.h
190
static inline int fdma_nextptr_cb(struct fdma *fdma, int dcb_idx, u64 *nextptr)
drivers/net/ethernet/microchip/fdma/fdma_api.h
192
*nextptr = fdma->dma + (sizeof(struct fdma_dcb) * dcb_idx);
drivers/net/ethernet/microchip/fdma/fdma_api.h
200
static inline u64 fdma_dataptr_get_contiguous(struct fdma *fdma, int dcb_idx,
drivers/net/ethernet/microchip/fdma/fdma_api.h
203
return fdma->dma + (sizeof(struct fdma_dcb) * fdma->n_dcbs) +
drivers/net/ethernet/microchip/fdma/fdma_api.h
204
(dcb_idx * fdma->n_dbs + db_idx) * fdma->db_size +
drivers/net/ethernet/microchip/fdma/fdma_api.h
212
static inline void *fdma_dataptr_virt_get_contiguous(struct fdma *fdma,
drivers/net/ethernet/microchip/fdma/fdma_api.h
215
return (u8 *)fdma->dcbs + (sizeof(struct fdma_dcb) * fdma->n_dcbs) +
drivers/net/ethernet/microchip/fdma/fdma_api.h
216
(dcb_idx * fdma->n_dbs + db_idx) * fdma->db_size +
drivers/net/ethernet/microchip/fdma/fdma_api.h
221
static inline bool fdma_is_last(struct fdma *fdma, struct fdma_dcb *dcb)
drivers/net/ethernet/microchip/fdma/fdma_api.h
223
return dcb == fdma->last_dcb;
drivers/net/ethernet/microchip/fdma/fdma_api.h
226
int fdma_dcbs_init(struct fdma *fdma, u64 info, u64 status);
drivers/net/ethernet/microchip/fdma/fdma_api.h
227
int fdma_db_add(struct fdma *fdma, int dcb_idx, int db_idx, u64 status);
drivers/net/ethernet/microchip/fdma/fdma_api.h
228
int fdma_dcb_add(struct fdma *fdma, int dcb_idx, u64 info, u64 status);
drivers/net/ethernet/microchip/fdma/fdma_api.h
229
int __fdma_dcb_add(struct fdma *fdma, int dcb_idx, u64 info, u64 status,
drivers/net/ethernet/microchip/fdma/fdma_api.h
230
int (*dcb_cb)(struct fdma *fdma, int dcb_idx, u64 *nextptr),
drivers/net/ethernet/microchip/fdma/fdma_api.h
231
int (*db_cb)(struct fdma *fdma, int dcb_idx, int db_idx,
drivers/net/ethernet/microchip/fdma/fdma_api.h
234
int fdma_alloc_coherent(struct device *dev, struct fdma *fdma);
drivers/net/ethernet/microchip/fdma/fdma_api.h
235
int fdma_alloc_phys(struct fdma *fdma);
drivers/net/ethernet/microchip/fdma/fdma_api.h
237
void fdma_free_coherent(struct device *dev, struct fdma *fdma);
drivers/net/ethernet/microchip/fdma/fdma_api.h
238
void fdma_free_phys(struct fdma *fdma);
drivers/net/ethernet/microchip/fdma/fdma_api.h
240
u32 fdma_get_size(struct fdma *fdma);
drivers/net/ethernet/microchip/fdma/fdma_api.h
241
u32 fdma_get_size_contiguous(struct fdma *fdma);
drivers/net/ethernet/microchip/fdma/fdma_api.h
64
struct fdma;
drivers/net/ethernet/microchip/fdma/fdma_api.h
79
int (*dataptr_cb)(struct fdma *fdma, int dcb_idx, int db_idx, u64 *ptr);
drivers/net/ethernet/microchip/fdma/fdma_api.h
81
int (*nextptr_cb)(struct fdma *fdma, int dcb_idx, u64 *ptr);
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
115
struct fdma *fdma = &rx->fdma;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
12
struct lan966x *lan966x = (struct lan966x *)fdma->priv;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
121
err = fdma_alloc_coherent(lan966x->dev, fdma);
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
127
fdma_dcbs_init(fdma, FDMA_DCB_INFO_DATAL(fdma->db_size),
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
136
struct fdma *fdma = &rx->fdma;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
142
lan_wr(lower_32_bits((u64)fdma->dma), lan966x,
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
143
FDMA_DCB_LLP(fdma->channel_id));
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
144
lan_wr(upper_32_bits((u64)fdma->dma), lan966x,
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
145
FDMA_DCB_LLP1(fdma->channel_id));
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
147
lan_wr(FDMA_CH_CFG_CH_DCB_DB_CNT_SET(fdma->n_dbs) |
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
151
lan966x, FDMA_CH_CFG(fdma->channel_id));
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
161
mask |= BIT(fdma->channel_id);
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
167
lan_rmw(FDMA_CH_ACTIVATE_CH_ACTIVATE_SET(BIT(fdma->channel_id)),
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
175
struct fdma *fdma = &rx->fdma;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
179
lan_rmw(FDMA_CH_DISABLE_CH_DISABLE_SET(BIT(fdma->channel_id)),
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
184
val, !(val & BIT(fdma->channel_id)),
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
187
lan_rmw(FDMA_CH_DB_DISCARD_DB_DISCARD_SET(BIT(fdma->channel_id)),
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
196
lan_rmw(FDMA_CH_RELOAD_CH_RELOAD_SET(BIT(rx->fdma.channel_id)),
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
204
struct fdma *fdma = &tx->fdma;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
207
tx->dcbs_buf = kzalloc_objs(struct lan966x_tx_dcb_buf, fdma->n_dcbs);
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
211
err = fdma_alloc_coherent(lan966x->dev, fdma);
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
215
fdma_dcbs_init(fdma, 0, 0);
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
229
fdma_free_coherent(lan966x->dev, &tx->fdma);
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
235
struct fdma *fdma = &tx->fdma;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
241
lan_wr(lower_32_bits((u64)fdma->dma), lan966x,
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
242
FDMA_DCB_LLP(fdma->channel_id));
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
243
lan_wr(upper_32_bits((u64)fdma->dma), lan966x,
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
244
FDMA_DCB_LLP1(fdma->channel_id));
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
246
lan_wr(FDMA_CH_CFG_CH_DCB_DB_CNT_SET(fdma->n_dbs) |
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
250
lan966x, FDMA_CH_CFG(fdma->channel_id));
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
26
static int lan966x_fdma_tx_dataptr_cb(struct fdma *fdma, int dcb, int db,
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
260
mask |= BIT(fdma->channel_id);
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
266
lan_rmw(FDMA_CH_ACTIVATE_CH_ACTIVATE_SET(BIT(fdma->channel_id)),
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
274
struct fdma *fdma = &tx->fdma;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
278
lan_rmw(FDMA_CH_DISABLE_CH_DISABLE_SET(BIT(fdma->channel_id)),
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
283
val, !(val & BIT(fdma->channel_id)),
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
286
lan_rmw(FDMA_CH_DB_DISCARD_DB_DISCARD_SET(BIT(fdma->channel_id)),
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
29
struct lan966x *lan966x = (struct lan966x *)fdma->priv;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
298
lan_rmw(FDMA_CH_RELOAD_CH_RELOAD_SET(BIT(tx->fdma.channel_id)),
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
337
struct fdma *fdma = &tx->fdma;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
347
for (i = 0; i < fdma->n_dcbs; ++i) {
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
353
db = fdma_db_get(fdma, i, 0);
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
36
static int lan966x_fdma_xdp_tx_dataptr_cb(struct fdma *fdma, int dcb, int db,
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
39
struct lan966x *lan966x = (struct lan966x *)fdma->priv;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
397
struct fdma *fdma = &rx->fdma;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
402
db = fdma_db_next_get(fdma);
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
403
page = rx->page[fdma->dcb_index][fdma->db_index];
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
428
struct fdma *fdma = &rx->fdma;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
435
db = fdma_db_next_get(fdma);
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
436
page = rx->page[fdma->dcb_index][fdma->db_index];
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
438
skb = build_skb(page_address(page), fdma->db_size);
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
482
struct fdma *fdma = &rx->fdma;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
487
dcb_reload = fdma->dcb_index;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
493
if (!fdma_has_frames(fdma))
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
503
fdma_dcb_advance(fdma);
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
509
fdma_dcb_advance(fdma);
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
513
fdma_dcb_advance(fdma);
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
518
fdma_dcb_advance(fdma);
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
527
while (dcb_reload != fdma->dcb_index) {
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
53
struct fdma *fdma = &rx->fdma;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
530
dcb_reload &= fdma->n_dcbs - 1;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
532
fdma_dcb_add(fdma, old_dcb, FDMA_DCB_INFO_DATAL(fdma->db_size),
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
56
for (i = 0; i < fdma->n_dcbs; ++i) {
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
57
for (j = 0; j < fdma->n_dbs; ++j)
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
577
struct fdma *fdma = &tx->fdma;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
580
for (i = 0; i < fdma->n_dcbs; ++i) {
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
583
!fdma_is_last(&tx->fdma, &tx->fdma.dcbs[i]))
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
65
struct fdma *fdma = &rx->fdma;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
679
__fdma_dcb_add(&tx->fdma,
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
68
page = rx->page[fdma->dcb_index][fdma->db_index];
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
760
fdma_dcb_add(&tx->fdma,
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
81
.pool_size = rx->fdma.n_dcbs,
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
817
struct fdma fdma_rx_old;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
826
memcpy(&fdma_rx_old, &lan966x->rx.fdma, sizeof(struct fdma));
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
857
memcpy(&lan966x->rx.fdma, &fdma_rx_old, sizeof(struct fdma));
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
9
static int lan966x_fdma_rx_dataptr_cb(struct fdma *fdma, int dcb, int db,
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
947
if (!lan966x->fdma)
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
951
lan966x->rx.fdma.channel_id = FDMA_XTR_CHANNEL;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
952
lan966x->rx.fdma.n_dcbs = FDMA_DCB_MAX;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
953
lan966x->rx.fdma.n_dbs = FDMA_RX_DCB_MAX_DBS;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
954
lan966x->rx.fdma.priv = lan966x;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
955
lan966x->rx.fdma.size = fdma_get_size(&lan966x->rx.fdma);
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
956
lan966x->rx.fdma.db_size = PAGE_SIZE << lan966x->rx.page_order;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
957
lan966x->rx.fdma.ops.nextptr_cb = &fdma_nextptr_cb;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
958
lan966x->rx.fdma.ops.dataptr_cb = &lan966x_fdma_rx_dataptr_cb;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
961
lan966x->tx.fdma.channel_id = FDMA_INJ_CHANNEL;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
962
lan966x->tx.fdma.n_dcbs = FDMA_DCB_MAX;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
963
lan966x->tx.fdma.n_dbs = FDMA_TX_DCB_MAX_DBS;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
964
lan966x->tx.fdma.priv = lan966x;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
965
lan966x->tx.fdma.size = fdma_get_size(&lan966x->tx.fdma);
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
966
lan966x->tx.fdma.db_size = PAGE_SIZE << lan966x->rx.page_order;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
967
lan966x->tx.fdma.ops.nextptr_cb = &fdma_nextptr_cb;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
968
lan966x->tx.fdma.ops.dataptr_cb = &lan966x_fdma_tx_dataptr_cb;
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
976
fdma_free_coherent(lan966x->dev, &lan966x->rx.fdma);
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
988
if (!lan966x->fdma)
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c
998
fdma_free_coherent(lan966x->dev, &lan966x->rx.fdma);
drivers/net/ethernet/microchip/lan966x/lan966x_main.c
1164
lan966x->fdma = true;
drivers/net/ethernet/microchip/lan966x/lan966x_main.c
393
if (port->lan966x->fdma)
drivers/net/ethernet/microchip/lan966x/lan966x_main.c
413
if (!lan966x->fdma)
drivers/net/ethernet/microchip/lan966x/lan966x_main.c
759
if (lan966x->fdma && lan966x->fdma_ndev == port->dev)
drivers/net/ethernet/microchip/lan966x/lan966x_main.c
782
if (lan966x->fdma)
drivers/net/ethernet/microchip/lan966x/lan966x_main.c
868
if (lan966x->fdma)
drivers/net/ethernet/microchip/lan966x/lan966x_main.c
931
lan_wr(QS_XTR_GRP_CFG_MODE_SET(lan966x->fdma ? 2 : 1) |
drivers/net/ethernet/microchip/lan966x/lan966x_main.c
936
lan_wr(QS_INJ_GRP_CFG_MODE_SET(lan966x->fdma ? 2 : 1) |
drivers/net/ethernet/microchip/lan966x/lan966x_main.h
201
struct fdma fdma;
drivers/net/ethernet/microchip/lan966x/lan966x_main.h
237
struct fdma fdma;
drivers/net/ethernet/microchip/lan966x/lan966x_main.h
328
bool fdma;
drivers/net/ethernet/microchip/lan966x/lan966x_port.c
558
if (lan966x->fdma)
drivers/net/ethernet/microchip/lan966x/lan966x_xdp.c
17
if (!lan966x->fdma) {
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
104
struct fdma *fdma = &rx->fdma;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
111
db = &fdma->dcbs[fdma->dcb_index].db[fdma->db_index];
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
112
page = rx->page[fdma->dcb_index][fdma->db_index];
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
120
skb = build_skb(page_address(page), fdma->db_size);
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
15
#define FDMA_PRIV(fdma) ((struct sparx5 *)((fdma)->priv))
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
153
struct fdma *fdma = &rx->fdma;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
159
.pool_size = fdma->n_dcbs * fdma->n_dbs,
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
164
.max_len = fdma->db_size -
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
17
static int lan969x_fdma_tx_dataptr_cb(struct fdma *fdma, int dcb, int db,
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
172
err = fdma_alloc_coherent(sparx5->dev, fdma);
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
176
fdma_dcbs_init(fdma,
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
177
FDMA_DCB_INFO_DATAL(fdma->db_size),
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
186
struct fdma *fdma = &tx->fdma;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
189
tx->dbs = kzalloc_objs(struct sparx5_tx_buf, fdma->n_dcbs);
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
193
err = fdma_alloc_coherent(sparx5->dev, fdma);
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
199
fdma_dcbs_init(fdma,
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
20
*dataptr = FDMA_PRIV(fdma)->tx.dbs[dcb].dma_addr;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
200
FDMA_DCB_INFO_DATAL(fdma->db_size),
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
208
struct fdma *fdma = &sparx5->rx.fdma;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
210
fdma->channel_id = FDMA_XTR_CHANNEL;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
211
fdma->n_dcbs = FDMA_DCB_MAX;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
212
fdma->n_dbs = 1;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
213
fdma->priv = sparx5;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
214
fdma->size = fdma_get_size(fdma);
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
215
fdma->db_size = PAGE_SIZE;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
216
fdma->ops.dataptr_cb = &lan969x_fdma_rx_dataptr_cb;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
217
fdma->ops.nextptr_cb = &fdma_nextptr_cb;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
232
struct fdma *fdma = &sparx5->tx.fdma;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
234
fdma->channel_id = FDMA_INJ_CHANNEL;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
235
fdma->n_dcbs = FDMA_DCB_MAX;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
236
fdma->n_dbs = 1;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
237
fdma->priv = sparx5;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
238
fdma->size = fdma_get_size(fdma);
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
239
fdma->db_size = PAGE_SIZE;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
240
fdma->ops.dataptr_cb = &lan969x_fdma_tx_dataptr_cb;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
241
fdma->ops.nextptr_cb = &fdma_nextptr_cb;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
249
struct fdma *fdma = &rx->fdma;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
25
static int lan969x_fdma_rx_dataptr_cb(struct fdma *fdma, int dcb, int db,
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
252
dcb_reload = fdma->dcb_index;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
258
if (!fdma_has_frames(fdma))
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
267
fdma_db_advance(fdma);
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
270
if (fdma_dcb_is_reusable(fdma))
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
273
fdma_db_reset(fdma);
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
274
fdma_dcb_advance(fdma);
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
278
while (dcb_reload != fdma->dcb_index) {
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
28
struct sparx5_rx *rx = &FDMA_PRIV(fdma)->rx;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
282
dcb_reload &= fdma->n_dcbs - 1;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
284
fdma_dcb_add(fdma,
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
286
FDMA_DCB_INFO_DATAL(fdma->db_size),
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
289
sparx5_fdma_reload(sparx5, fdma);
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
303
struct fdma *fdma = &tx->fdma;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
347
fdma_dcb_advance(fdma);
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
348
fdma_dcb_add(fdma, next_dcb, 0, status);
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
350
sparx5_fdma_reload(sparx5, fdma);
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
379
fdma_free_coherent(sparx5->dev, &rx->fdma);
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
398
fdma_free_coherent(sparx5->dev, &tx->fdma);
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
399
fdma_free_coherent(sparx5->dev, &rx->fdma);
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
44
struct fdma *fdma = &tx->fdma;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
46
for (int i = 0; i < fdma->n_dcbs; ++i)
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
47
if (!tx->dbs[i].used && !fdma_is_last(fdma, &fdma->dcbs[i]))
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
55
struct fdma *fdma = &sparx5->tx.fdma;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
62
for (i = 0; i < fdma->n_dcbs; ++i) {
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
68
if (!fdma_db_is_done(fdma_db_get(fdma, i, 0)))
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
91
struct fdma *fdma = &rx->fdma;
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
93
for (int i = 0; i < fdma->n_dcbs; ++i) {
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
94
for (int j = 0; j < fdma->n_dbs; ++j)
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
104
struct fdma *fdma = &tx->fdma;
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
107
spx5_wr(((u64)fdma->dma) & GENMASK(31, 0), sparx5,
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
108
FDMA_DCB_LLP(fdma->channel_id));
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
109
spx5_wr(((u64)fdma->dma) >> 32, sparx5,
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
110
FDMA_DCB_LLP1(fdma->channel_id));
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
113
spx5_wr(FDMA_CH_CFG_CH_DCB_DB_CNT_SET(fdma->n_dbs) |
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
116
sparx5, FDMA_CH_CFG(fdma->channel_id));
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
123
spx5_wr(BIT(fdma->channel_id), sparx5, FDMA_CH_ACTIVATE);
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
129
spx5_rmw(0, BIT(tx->fdma.channel_id) & FDMA_CH_ACTIVATE_CH_ACTIVATE,
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
133
void sparx5_fdma_reload(struct sparx5 *sparx5, struct fdma *fdma)
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
136
spx5_wr(BIT(fdma->channel_id), sparx5, FDMA_CH_RELOAD);
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
141
struct fdma *fdma = &rx->fdma;
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
148
db_hw = fdma_db_next_get(fdma);
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
151
skb = rx->skb[fdma->dcb_index][fdma->db_index];
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
187
struct fdma *fdma = &rx->fdma;
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
191
fdma_db_advance(fdma);
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
194
if (fdma_dcb_is_reusable(fdma))
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
196
fdma_dcb_add(fdma, fdma->dcb_index,
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
197
FDMA_DCB_INFO_DATAL(fdma->db_size),
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
199
fdma_db_reset(fdma);
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
200
fdma_dcb_advance(fdma);
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
204
spx5_rmw(BIT(fdma->channel_id),
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
205
BIT(fdma->channel_id) & FDMA_INTR_DB_ENA_INTR_DB_ENA,
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
209
sparx5_fdma_reload(sparx5, fdma);
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
217
struct fdma *fdma = &tx->fdma;
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
220
fdma_dcb_advance(fdma);
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
221
if (!fdma_db_is_done(fdma_db_get(fdma, fdma->dcb_index, 0)))
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
225
virt_addr = ((u8 *)fdma->dcbs +
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
226
(sizeof(struct fdma_dcb) * fdma->n_dcbs) +
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
227
((fdma->dcb_index * fdma->n_dbs) * fdma->db_size));
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
232
fdma_dcb_add(fdma, fdma->dcb_index, 0,
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
238
sparx5_fdma_reload(sparx5, fdma);
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
24
static int sparx5_fdma_tx_dataptr_cb(struct fdma *fdma, int dcb, int db,
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
246
struct fdma *fdma = &rx->fdma;
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
249
err = fdma_alloc_phys(fdma);
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
253
fdma_dcbs_init(fdma, FDMA_DCB_INFO_DATAL(fdma->db_size),
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
262
struct fdma *fdma = &tx->fdma;
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
265
err = fdma_alloc_phys(fdma);
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
269
fdma_dcbs_init(fdma, FDMA_DCB_INFO_DATAL(fdma->db_size),
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
27
*dataptr = fdma->dma + (sizeof(struct fdma_dcb) * fdma->n_dcbs) +
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
278
struct fdma *fdma = &rx->fdma;
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
28
((dcb * fdma->n_dbs + db) * fdma->db_size);
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
281
fdma->channel_id = channel;
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
282
fdma->n_dcbs = FDMA_DCB_MAX;
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
283
fdma->n_dbs = FDMA_RX_DCB_MAX_DBS;
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
284
fdma->priv = sparx5;
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
285
fdma->db_size = ALIGN(FDMA_XTR_BUFFER_SIZE, PAGE_SIZE);
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
286
fdma->size = fdma_get_size(&sparx5->rx.fdma);
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
287
fdma->ops.dataptr_cb = &sparx5_fdma_rx_dataptr_cb;
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
288
fdma->ops.nextptr_cb = &fdma_nextptr_cb;
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
303
struct fdma *fdma = &tx->fdma;
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
305
fdma->channel_id = channel;
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
306
fdma->n_dcbs = FDMA_DCB_MAX;
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
307
fdma->n_dbs = FDMA_TX_DCB_MAX_DBS;
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
308
fdma->priv = sparx5;
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
309
fdma->db_size = ALIGN(FDMA_XTR_BUFFER_SIZE, PAGE_SIZE);
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
310
fdma->size = fdma_get_size_contiguous(&sparx5->tx.fdma);
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
311
fdma->ops.dataptr_cb = &sparx5_fdma_tx_dataptr_cb;
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
312
fdma->ops.nextptr_cb = &fdma_nextptr_cb;
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
33
static int sparx5_fdma_rx_dataptr_cb(struct fdma *fdma, int dcb, int db,
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
36
struct sparx5 *sparx5 = fdma->priv;
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
40
skb = __netdev_alloc_skb(rx->ndev, fdma->db_size, GFP_ATOMIC);
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
438
fdma_free_phys(&sparx5->rx.fdma);
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
439
fdma_free_phys(&sparx5->tx.fdma);
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
53
struct fdma *fdma = &rx->fdma;
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
56
spx5_wr(((u64)fdma->dma) & GENMASK(31, 0), sparx5,
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
57
FDMA_DCB_LLP(fdma->channel_id));
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
58
spx5_wr(((u64)fdma->dma) >> 32, sparx5,
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
59
FDMA_DCB_LLP1(fdma->channel_id));
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
62
spx5_wr(FDMA_CH_CFG_CH_DCB_DB_CNT_SET(fdma->n_dbs) |
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
65
sparx5, FDMA_CH_CFG(fdma->channel_id));
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
77
spx5_rmw(BIT(fdma->channel_id),
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
78
BIT(fdma->channel_id) & FDMA_INTR_DB_ENA_INTR_DB_ENA,
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
82
spx5_wr(BIT(fdma->channel_id), sparx5, FDMA_CH_ACTIVATE);
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
87
struct fdma *fdma = &rx->fdma;
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
90
spx5_rmw(0, BIT(fdma->channel_id) & FDMA_CH_ACTIVATE_CH_ACTIVATE,
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c
94
spx5_rmw(0, BIT(fdma->channel_id) & FDMA_INTR_DB_ENA_INTR_DB_ENA,
drivers/net/ethernet/microchip/sparx5/sparx5_main.h
161
struct fdma fdma;
drivers/net/ethernet/microchip/sparx5/sparx5_main.h
187
struct fdma fdma;
drivers/net/ethernet/microchip/sparx5/sparx5_main.h
469
void sparx5_fdma_reload(struct sparx5 *sparx5, struct fdma *fdma);
drivers/net/ethernet/mscc/ocelot_fdma.c
148
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
156
rx_ring = &fdma->rx_ring;
drivers/net/ethernet/mscc/ocelot_fdma.c
236
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
244
rx_ring = &fdma->rx_ring;
drivers/net/ethernet/mscc/ocelot_fdma.c
298
struct ocelot_fdma_rx_ring *rx_ring = &ocelot->fdma->rx_ring;
drivers/net/ethernet/mscc/ocelot_fdma.c
391
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
401
cleaned_cnt = ocelot_fdma_rx_ring_free(fdma);
drivers/net/ethernet/mscc/ocelot_fdma.c
402
rx_ring = &fdma->rx_ring;
drivers/net/ethernet/mscc/ocelot_fdma.c
483
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
495
tx_ring = &fdma->tx_ring;
drivers/net/ethernet/mscc/ocelot_fdma.c
500
while (!ocelot_fdma_tx_ring_empty(fdma)) {
drivers/net/ethernet/mscc/ocelot_fdma.c
525
if (ocelot_fdma_tx_ring_free(fdma))
drivers/net/ethernet/mscc/ocelot_fdma.c
531
if (!end_of_list || ocelot_fdma_tx_ring_empty(fdma))
drivers/net/ethernet/mscc/ocelot_fdma.c
553
struct ocelot_fdma *fdma = container_of(napi, struct ocelot_fdma, napi);
drivers/net/ethernet/mscc/ocelot_fdma.c
554
struct ocelot *ocelot = fdma->ocelot;
drivers/net/ethernet/mscc/ocelot_fdma.c
56
static int ocelot_fdma_rx_ring_free(struct ocelot_fdma *fdma)
drivers/net/ethernet/mscc/ocelot_fdma.c
568
napi_complete_done(&fdma->napi, work_done);
drivers/net/ethernet/mscc/ocelot_fdma.c
58
struct ocelot_fdma_rx_ring *rx_ring = &fdma->rx_ring;
drivers/net/ethernet/mscc/ocelot_fdma.c
590
napi_schedule(&ocelot->fdma->napi);
drivers/net/ethernet/mscc/ocelot_fdma.c
608
struct ocelot_fdma *fdma, struct sk_buff *skb)
drivers/net/ethernet/mscc/ocelot_fdma.c
610
struct ocelot_fdma_tx_ring *tx_ring = &fdma->tx_ring;
drivers/net/ethernet/mscc/ocelot_fdma.c
628
if (ocelot_fdma_tx_ring_empty(fdma)) {
drivers/net/ethernet/mscc/ocelot_fdma.c
67
static int ocelot_fdma_tx_ring_free(struct ocelot_fdma *fdma)
drivers/net/ethernet/mscc/ocelot_fdma.c
676
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
679
spin_lock(&fdma->tx_ring.xmit_lock);
drivers/net/ethernet/mscc/ocelot_fdma.c
681
if (ocelot_fdma_tx_ring_free(fdma) == 0) {
drivers/net/ethernet/mscc/ocelot_fdma.c
69
struct ocelot_fdma_tx_ring *tx_ring = &fdma->tx_ring;
drivers/net/ethernet/mscc/ocelot_fdma.c
690
ocelot_fdma_send_skb(ocelot, fdma, skb);
drivers/net/ethernet/mscc/ocelot_fdma.c
693
spin_unlock(&fdma->tx_ring.xmit_lock);
drivers/net/ethernet/mscc/ocelot_fdma.c
700
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
705
rx_ring = &fdma->rx_ring;
drivers/net/ethernet/mscc/ocelot_fdma.c
717
if (fdma->rx_ring.skb)
drivers/net/ethernet/mscc/ocelot_fdma.c
718
dev_kfree_skb_any(fdma->rx_ring.skb);
drivers/net/ethernet/mscc/ocelot_fdma.c
723
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
729
tx_ring = &fdma->tx_ring;
drivers/net/ethernet/mscc/ocelot_fdma.c
744
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
751
fdma->dcbs_base = dmam_alloc_coherent(ocelot->dev,
drivers/net/ethernet/mscc/ocelot_fdma.c
753
&fdma->dcbs_dma_base, GFP_KERNEL);
drivers/net/ethernet/mscc/ocelot_fdma.c
754
if (!fdma->dcbs_base)
drivers/net/ethernet/mscc/ocelot_fdma.c
758
dcbs = fdma->dcbs_base;
drivers/net/ethernet/mscc/ocelot_fdma.c
759
dcbs_dma = fdma->dcbs_dma_base;
drivers/net/ethernet/mscc/ocelot_fdma.c
767
fdma->tx_ring.dcbs = dcbs;
drivers/net/ethernet/mscc/ocelot_fdma.c
768
fdma->tx_ring.dcbs_dma = dcbs_dma;
drivers/net/ethernet/mscc/ocelot_fdma.c
769
spin_lock_init(&fdma->tx_ring.xmit_lock);
drivers/net/ethernet/mscc/ocelot_fdma.c
772
fdma->rx_ring.dcbs = dcbs + OCELOT_FDMA_TX_RING_SIZE;
drivers/net/ethernet/mscc/ocelot_fdma.c
773
fdma->rx_ring.dcbs_dma = dcbs_dma + OCELOT_FDMA_TX_DCB_SIZE;
drivers/net/ethernet/mscc/ocelot_fdma.c
775
ocelot_fdma_tx_ring_free(fdma));
drivers/net/ethernet/mscc/ocelot_fdma.c
78
static bool ocelot_fdma_tx_ring_empty(struct ocelot_fdma *fdma)
drivers/net/ethernet/mscc/ocelot_fdma.c
784
ocelot_fdma_rx_set_llp(&fdma->rx_ring);
drivers/net/ethernet/mscc/ocelot_fdma.c
791
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
796
if (fdma->ndev)
drivers/net/ethernet/mscc/ocelot_fdma.c
799
fdma->ndev = dev;
drivers/net/ethernet/mscc/ocelot_fdma.c
80
struct ocelot_fdma_tx_ring *tx_ring = &fdma->tx_ring;
drivers/net/ethernet/mscc/ocelot_fdma.c
800
netif_napi_add_weight(dev, &fdma->napi, ocelot_fdma_napi_poll,
drivers/net/ethernet/mscc/ocelot_fdma.c
806
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
808
if (fdma->ndev == dev) {
drivers/net/ethernet/mscc/ocelot_fdma.c
809
netif_napi_del(&fdma->napi);
drivers/net/ethernet/mscc/ocelot_fdma.c
810
fdma->ndev = NULL;
drivers/net/ethernet/mscc/ocelot_fdma.c
817
struct ocelot_fdma *fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
820
fdma = devm_kzalloc(dev, sizeof(*fdma), GFP_KERNEL);
drivers/net/ethernet/mscc/ocelot_fdma.c
821
if (!fdma)
drivers/net/ethernet/mscc/ocelot_fdma.c
824
ocelot->fdma = fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
829
fdma->ocelot = ocelot;
drivers/net/ethernet/mscc/ocelot_fdma.c
830
fdma->irq = platform_get_irq_byname(pdev, "fdma");
drivers/net/ethernet/mscc/ocelot_fdma.c
831
ret = devm_request_irq(dev, fdma->irq, ocelot_fdma_interrupt, 0,
drivers/net/ethernet/mscc/ocelot_fdma.c
845
devm_free_irq(dev, fdma->irq, fdma);
drivers/net/ethernet/mscc/ocelot_fdma.c
847
devm_kfree(dev, fdma);
drivers/net/ethernet/mscc/ocelot_fdma.c
849
ocelot->fdma = NULL;
drivers/net/ethernet/mscc/ocelot_fdma.c
854
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
872
napi_enable(&fdma->napi);
drivers/net/ethernet/mscc/ocelot_fdma.c
874
ocelot_fdma_activate_chan(ocelot, ocelot->fdma->rx_ring.dcbs_dma,
drivers/net/ethernet/mscc/ocelot_fdma.c
880
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_fdma.c
887
napi_synchronize(&fdma->napi);
drivers/net/ethernet/mscc/ocelot_fdma.c
888
napi_disable(&fdma->napi);
drivers/net/ethernet/mscc/ocelot_fdma.h
160
int ocelot_fdma_inject_frame(struct ocelot *fdma, int port, u32 rew_op,
drivers/net/ethernet/mscc/ocelot_net.c
1882
if (ocelot->fdma)
drivers/net/ethernet/mscc/ocelot_net.c
1895
if (ocelot->fdma)
drivers/net/ethernet/mscc/ocelot_net.c
1910
struct ocelot_fdma *fdma = ocelot->fdma;
drivers/net/ethernet/mscc/ocelot_net.c
1914
if (fdma)
drivers/net/ethernet/mscc/ocelot_vsc7514.c
362
if (ocelot->fdma)
drivers/net/ethernet/mscc/ocelot_vsc7514.c
405
if (ocelot->fdma)
include/acpi/processor.h
248
u8 fdma:1;
include/soc/mscc/ocelot.h
898
struct ocelot_fdma *fdma;