arch/arc/include/asm/disasm.h
83
enum flow flow;
arch/arc/kernel/disasm.c
184
state->flow = is_linked ?
arch/arc/kernel/disasm.c
188
state->flow = is_linked ?
arch/arc/kernel/disasm.c
202
state->flow = direct_jump;
arch/arc/kernel/disasm.c
307
state->flow = (subopcode >= 2) ?
arch/arc/kernel/disasm.c
317
state->flow = indirect_jump;
arch/arc/kernel/disasm.c
403
state->flow = direct_jump;
arch/arc/kernel/disasm.c
412
state->flow = direct_jump;
arch/arc/kernel/disasm.c
418
state->flow = direct_call;
arch/arc/kernel/disasm.c
78
state->flow = direct_jump;
arch/arc/kernel/disasm.c
89
state->flow = direct_call;
arch/arc/kernel/disasm.c
93
state->flow = direct_jump;
arch/mips/mti-malta/malta-init.c
46
char parity = '\0', bits = '\0', flow = '\0';
arch/mips/mti-malta/malta-init.c
64
flow = 'r';
arch/mips/mti-malta/malta-init.c
72
if (flow == '\0')
arch/mips/mti-malta/malta-init.c
73
flow = 'r';
arch/mips/mti-malta/malta-init.c
83
parity, bits, flow);
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
166
cet->t_id = cpu_to_le32(rctx->flow);
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
359
chan = &ce->chanlist[rctx->flow];
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
365
err = sun8i_ce_run_task(ce, rctx->flow,
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
390
rctx->flow = e;
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
409
rctx->flow = e;
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
185
return atomic_inc_return(&ce->flow) % (MAXFLOW - 1);
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
188
int sun8i_ce_run_task(struct sun8i_ce_dev *ce, int flow, const char *name)
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
194
ce->chanlist[flow].stat_req++;
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
200
v |= 1 << flow;
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
203
reinit_completion(&ce->chanlist[flow].complete);
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
204
writel(desc_addr_val(ce, ce->chanlist[flow].t_phy), ce->base + CE_TDQ);
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
206
ce->chanlist[flow].status = 0;
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
213
v = 1 | ((le32_to_cpu(ce->chanlist[flow].tl->t_common_ctl) & 0x7F) << 8);
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
217
wait_for_completion_interruptible_timeout(&ce->chanlist[flow].complete,
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
220
if (ce->chanlist[flow].status == 0) {
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
221
dev_err(ce->dev, "DMA timeout for %s on flow %d\n", name, flow);
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
232
dev_err(ce->dev, "CE ERROR: %x for flow %x\n", v, flow);
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
233
sun8i_ce_dump_task_descriptors(&ce->chanlist[flow]);
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
247
v >>= (flow * 4);
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
250
dev_err(ce->dev, "CE ERROR: %x for flow %x\n", v, flow);
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
251
sun8i_ce_dump_task_descriptors(&ce->chanlist[flow]);
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
262
v >>= (flow * 8);
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
265
dev_err(ce->dev, "CE ERROR: %x for flow %x\n", v, flow);
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
266
sun8i_ce_dump_task_descriptors(&ce->chanlist[flow]);
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
288
int flow = 0;
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
292
for (flow = 0; flow < MAXFLOW; flow++) {
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
293
if (p & (BIT(flow))) {
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
294
writel(BIT(flow), ce->base + CE_ISR);
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
295
ce->chanlist[flow].status = 1;
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
296
complete(&ce->chanlist[flow].complete);
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-hash.c
252
rctx->flow = e;
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-hash.c
352
cet->t_id = cpu_to_le32(rctx->flow);
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-hash.c
467
chan = &ce->chanlist[rctx->flow];
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-hash.c
473
err = sun8i_ce_run_task(ce, rctx->flow, crypto_ahash_alg_name(tfm));
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-prng.c
116
chan = &ce->chanlist[flow];
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-prng.c
121
cet->t_id = cpu_to_le32(flow);
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-prng.c
64
int flow = 3;
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-trng.c
28
int flow = 3;
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-trng.c
62
chan = &ce->chanlist[flow];
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-trng.c
67
cet->t_id = cpu_to_le32(flow);
drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h
229
atomic_t flow;
drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h
272
int flow;
drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h
319
int flow;
drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h
388
int sun8i_ce_run_task(struct sun8i_ce_dev *ce, int flow, const char *name);
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
130
struct sun8i_ss_flow *sf = &ss->flows[rctx->flow];
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
191
struct sun8i_ss_flow *sf = &ss->flows[rctx->flow];
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
361
rctx->flow = e;
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
382
rctx->flow = e;
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c
123
i, flow, name, v,
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c
132
reinit_completion(&ss->flows[flow].complete);
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c
133
ss->flows[flow].status = 0;
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c
138
wait_for_completion_interruptible_timeout(&ss->flows[flow].complete,
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c
140
if (ss->flows[flow].status == 0) {
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c
152
int flow = 0;
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c
156
for (flow = 0; flow < MAXFLOW; flow++) {
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c
157
if (p & (BIT(flow))) {
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c
158
writel(BIT(flow), ss->base + SS_INT_STA_REG);
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c
159
ss->flows[flow].status = 1;
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c
160
complete(&ss->flows[flow].complete);
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c
64
return atomic_inc_return(&ss->flow) % MAXFLOW;
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c
70
int flow = rctx->flow;
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c
76
ss->flows[flow].stat_req++;
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c
80
if (flow)
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c
290
int flow = rctx->flow;
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c
295
ss->flows[flow].stat_req++;
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c
299
if (flow)
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c
319
i, flow, name, v,
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c
328
reinit_completion(&ss->flows[flow].complete);
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c
329
ss->flows[flow].status = 0;
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c
334
wait_for_completion_interruptible_timeout(&ss->flows[flow].complete,
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c
336
if (ss->flows[flow].status == 0) {
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c
411
rctx->flow = e;
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c
511
result = ss->flows[rctx->flow].result;
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c
512
pad = ss->flows[rctx->flow].pad;
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-prng.c
103
if (flow)
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-prng.c
134
reinit_completion(&ss->flows[flow].complete);
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-prng.c
135
ss->flows[flow].status = 0;
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-prng.c
141
wait_for_completion_interruptible_timeout(&ss->flows[flow].complete,
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-prng.c
143
if (ss->flows[flow].status == 0) {
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-prng.c
68
int flow;
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-prng.c
95
flow = sun8i_ss_get_engine_number(ss);
drivers/crypto/allwinner/sun8i-ss/sun8i-ss.h
164
atomic_t flow;
drivers/crypto/allwinner/sun8i-ss/sun8i-ss.h
196
int flow;
drivers/crypto/allwinner/sun8i-ss/sun8i-ss.h
252
int flow;
drivers/crypto/amlogic/amlogic-gxl-cipher.c
110
op->keylen, flow);
drivers/crypto/amlogic/amlogic-gxl-cipher.c
114
mc->chanlist[flow].stat_req++;
drivers/crypto/amlogic/amlogic-gxl-cipher.c
164
desc = &mc->chanlist[flow].tl[tloffset];
drivers/crypto/amlogic/amlogic-gxl-cipher.c
207
desc = &mc->chanlist[flow].tl[tloffset];
drivers/crypto/amlogic/amlogic-gxl-cipher.c
22
return atomic_inc_return(&mc->flow) % MAXFLOW;
drivers/crypto/amlogic/amlogic-gxl-cipher.c
226
reinit_completion(&mc->chanlist[flow].complete);
drivers/crypto/amlogic/amlogic-gxl-cipher.c
227
mc->chanlist[flow].status = 0;
drivers/crypto/amlogic/amlogic-gxl-cipher.c
228
writel(mc->chanlist[flow].t_phy | 2, mc->base + (flow << 2));
drivers/crypto/amlogic/amlogic-gxl-cipher.c
229
wait_for_completion_interruptible_timeout(&mc->chanlist[flow].complete,
drivers/crypto/amlogic/amlogic-gxl-cipher.c
231
if (mc->chanlist[flow].status == 0) {
drivers/crypto/amlogic/amlogic-gxl-cipher.c
232
dev_err(mc->dev, "DMA timeout for flow %d\n", flow);
drivers/crypto/amlogic/amlogic-gxl-cipher.c
287
rctx->flow = e;
drivers/crypto/amlogic/amlogic-gxl-cipher.c
305
rctx->flow = e;
drivers/crypto/amlogic/amlogic-gxl-cipher.c
92
int flow = rctx->flow;
drivers/crypto/amlogic/amlogic-gxl-core.c
28
int flow;
drivers/crypto/amlogic/amlogic-gxl-core.c
31
for (flow = 0; flow < MAXFLOW; flow++) {
drivers/crypto/amlogic/amlogic-gxl-core.c
32
if (mc->irqs[flow] == irq) {
drivers/crypto/amlogic/amlogic-gxl-core.c
33
p = readl(mc->base + ((0x04 + flow) << 2));
drivers/crypto/amlogic/amlogic-gxl-core.c
35
writel_relaxed(0xF, mc->base + ((0x4 + flow) << 2));
drivers/crypto/amlogic/amlogic-gxl-core.c
36
mc->chanlist[flow].status = 1;
drivers/crypto/amlogic/amlogic-gxl-core.c
37
complete(&mc->chanlist[flow].complete);
drivers/crypto/amlogic/amlogic-gxl-core.c
40
dev_err(mc->dev, "%s %d Got irq for flow %d but ctrl is empty\n", __func__, irq, flow);
drivers/crypto/amlogic/amlogic-gxl.h
111
int flow;
drivers/crypto/amlogic/amlogic-gxl.h
97
atomic_t flow;
drivers/crypto/s5p-sss.c
865
u32 flow;
drivers/crypto/s5p-sss.c
869
flow = SSS_READ(dev, FCFIFOCTRL);
drivers/crypto/s5p-sss.c
870
flow &= ~SSS_HASHIN_MASK;
drivers/crypto/s5p-sss.c
871
flow |= hashflow;
drivers/crypto/s5p-sss.c
872
SSS_WRITE(dev, FCFIFOCTRL, flow);
drivers/dma/ti/k3-udma-glue.c
1279
struct k3_udma_glue_rx_flow *flow;
drivers/dma/ti/k3-udma-glue.c
1284
flow = &rx_chn->flows[flow_idx];
drivers/dma/ti/k3-udma-glue.c
1286
return k3_ringacc_get_ring_id(flow->ringrxfdq);
drivers/dma/ti/k3-udma-glue.c
1299
struct k3_udma_glue_rx_flow *flow = &rx_chn->flows[flow_idx];
drivers/dma/ti/k3-udma-glue.c
1310
rx_ring_id = k3_ringacc_get_ring_id(flow->ringrx);
drivers/dma/ti/k3-udma-glue.c
1311
rx_ringfdq_id = k3_ringacc_get_ring_id(flow->ringrxfdq);
drivers/dma/ti/k3-udma-glue.c
1322
req.flow_index = flow->udma_rflow_id;
drivers/dma/ti/k3-udma-glue.c
1331
dev_err(dev, "flow%d enable failed: %d\n", flow->udma_rflow_id,
drivers/dma/ti/k3-udma-glue.c
1342
struct k3_udma_glue_rx_flow *flow = &rx_chn->flows[flow_idx];
drivers/dma/ti/k3-udma-glue.c
1359
req.flow_index = flow->udma_rflow_id;
drivers/dma/ti/k3-udma-glue.c
1368
dev_err(dev, "flow%d disable failed: %d\n", flow->udma_rflow_id,
drivers/dma/ti/k3-udma-glue.c
1465
struct k3_udma_glue_rx_flow *flow = &rx_chn->flows[flow_num];
drivers/dma/ti/k3-udma-glue.c
1471
occ_rx = k3_ringacc_ring_get_occ(flow->ringrx);
drivers/dma/ti/k3-udma-glue.c
1485
occ_rx = k3_ringacc_ring_get_occ(flow->ringrxfdq);
drivers/dma/ti/k3-udma-glue.c
1489
ret = k3_ringacc_ring_pop(flow->ringrxfdq, &desc_dma);
drivers/dma/ti/k3-udma-glue.c
1498
k3_ringacc_ring_reset_dma(flow->ringrxfdq, occ_rx);
drivers/dma/ti/k3-udma-glue.c
1501
k3_ringacc_ring_reset(flow->ringrx);
drivers/dma/ti/k3-udma-glue.c
1509
struct k3_udma_glue_rx_flow *flow = &rx_chn->flows[flow_num];
drivers/dma/ti/k3-udma-glue.c
1511
return k3_ringacc_ring_push(flow->ringrxfdq, &desc_dma);
drivers/dma/ti/k3-udma-glue.c
1518
struct k3_udma_glue_rx_flow *flow = &rx_chn->flows[flow_num];
drivers/dma/ti/k3-udma-glue.c
1520
return k3_ringacc_ring_pop(flow->ringrx, desc_dma);
drivers/dma/ti/k3-udma-glue.c
1527
struct k3_udma_glue_rx_flow *flow;
drivers/dma/ti/k3-udma-glue.c
1529
flow = &rx_chn->flows[flow_num];
drivers/dma/ti/k3-udma-glue.c
1532
flow->virq = xudma_pktdma_rflow_get_irq(rx_chn->common.udmax,
drivers/dma/ti/k3-udma-glue.c
1533
flow->udma_rflow_id);
drivers/dma/ti/k3-udma-glue.c
1535
flow->virq = k3_ringacc_get_ring_irq_num(flow->ringrx);
drivers/dma/ti/k3-udma-glue.c
1538
if (!flow->virq)
drivers/dma/ti/k3-udma-glue.c
1541
return flow->virq;
drivers/dma/ti/k3-udma-glue.c
716
struct k3_udma_glue_rx_flow *flow = &rx_chn->flows[flow_num];
drivers/dma/ti/k3-udma-glue.c
718
if (IS_ERR_OR_NULL(flow->udma_rflow))
drivers/dma/ti/k3-udma-glue.c
721
if (flow->ringrxfdq)
drivers/dma/ti/k3-udma-glue.c
722
k3_ringacc_ring_free(flow->ringrxfdq);
drivers/dma/ti/k3-udma-glue.c
724
if (flow->ringrx)
drivers/dma/ti/k3-udma-glue.c
725
k3_ringacc_ring_free(flow->ringrx);
drivers/dma/ti/k3-udma-glue.c
727
xudma_rflow_put(rx_chn->common.udmax, flow->udma_rflow);
drivers/dma/ti/k3-udma-glue.c
728
flow->udma_rflow = NULL;
drivers/dma/ti/k3-udma-glue.c
736
struct k3_udma_glue_rx_flow *flow = &rx_chn->flows[flow_idx];
drivers/dma/ti/k3-udma-glue.c
744
flow->udma_rflow = xudma_rflow_get(rx_chn->common.udmax,
drivers/dma/ti/k3-udma-glue.c
745
flow->udma_rflow_id);
drivers/dma/ti/k3-udma-glue.c
746
if (IS_ERR(flow->udma_rflow)) {
drivers/dma/ti/k3-udma-glue.c
747
ret = PTR_ERR(flow->udma_rflow);
drivers/dma/ti/k3-udma-glue.c
752
if (flow->udma_rflow_id != xudma_rflow_get_id(flow->udma_rflow)) {
drivers/dma/ti/k3-udma-glue.c
758
rx_ringfdq_id = flow->udma_rflow_id +
drivers/dma/ti/k3-udma-glue.c
769
&flow->ringrxfdq,
drivers/dma/ti/k3-udma-glue.c
770
&flow->ringrx);
drivers/dma/ti/k3-udma-glue.c
786
ret = k3_ringacc_ring_cfg(flow->ringrx, &flow_cfg->rx_cfg);
drivers/dma/ti/k3-udma-glue.c
792
ret = k3_ringacc_ring_cfg(flow->ringrxfdq, &flow_cfg->rxfdq_cfg);
drivers/dma/ti/k3-udma-glue.c
802
rx_ring_id = k3_ringacc_get_ring_id(flow->ringrx);
drivers/dma/ti/k3-udma-glue.c
803
rx_ringfdq_id = k3_ringacc_get_ring_id(flow->ringrxfdq);
drivers/dma/ti/k3-udma-glue.c
823
req.flow_index = flow->udma_rflow_id;
drivers/dma/ti/k3-udma-glue.c
843
dev_err(dev, "flow%d config failed: %d\n", flow->udma_rflow_id,
drivers/dma/ti/k3-udma-glue.c
850
flow->udma_rflow_id, rx_chn->flows_ready);
drivers/dma/ti/k3-udma-glue.c
855
k3_ringacc_ring_free(flow->ringrxfdq);
drivers/dma/ti/k3-udma-glue.c
856
k3_ringacc_ring_free(flow->ringrx);
drivers/dma/ti/k3-udma-glue.c
859
xudma_rflow_put(rx_chn->common.udmax, flow->udma_rflow);
drivers/dma/ti/k3-udma-glue.c
860
flow->udma_rflow = NULL;
drivers/gpu/drm/amd/display/dc/core/dc.c
7204
enum update_v3_flow flow;
drivers/gpu/drm/amd/display/dc/core/dc.c
7279
if (scratch->flow == UPDATE_V3_FLOW_NEW_CONTEXT_SEAMLESS) {
drivers/gpu/drm/amd/display/dc/core/dc.c
7282
ASSERT(scratch->flow == UPDATE_V3_FLOW_INVALID);
drivers/gpu/drm/amd/display/dc/core/dc.c
7319
scratch->flow = fast
drivers/gpu/drm/amd/display/dc/core/dc.c
7333
scratch->flow = UPDATE_V3_FLOW_NEW_CONTEXT_SEAMLESS;
drivers/gpu/drm/amd/display/dc/core/dc.c
7352
scratch->flow = UPDATE_V3_FLOW_NEW_CONTEXT_MINIMAL_NEW;
drivers/gpu/drm/amd/display/dc/core/dc.c
7369
scratch->flow = UPDATE_V3_FLOW_NEW_CONTEXT_MINIMAL_CURRENT;
drivers/gpu/drm/amd/display/dc/core/dc.c
7379
scratch->flow = UPDATE_V3_FLOW_INVALID;
drivers/gpu/drm/amd/display/dc/core/dc.c
7408
switch (scratch->flow) {
drivers/gpu/drm/amd/display/dc/core/dc.c
7468
switch (scratch->flow) {
drivers/gpu/drm/amd/display/dc/core/dc.c
7484
scratch->flow = UPDATE_V3_FLOW_NEW_CONTEXT_SEAMLESS;
drivers/gpu/drm/amd/display/dc/core/dc.c
7493
scratch->flow = UPDATE_V3_FLOW_NEW_CONTEXT_SEAMLESS;
drivers/gpu/ipu-v3/ipu-dp.c
100
reg = readl(flow->base + DP_COM_CONF);
drivers/gpu/ipu-v3/ipu-dp.c
101
writel(reg | DP_COM_CONF_GWAM, flow->base + DP_COM_CONF);
drivers/gpu/ipu-v3/ipu-dp.c
103
reg = readl(flow->base + DP_COM_CONF);
drivers/gpu/ipu-v3/ipu-dp.c
104
writel(reg & ~DP_COM_CONF_GWAM, flow->base + DP_COM_CONF);
drivers/gpu/ipu-v3/ipu-dp.c
117
struct ipu_flow *flow = to_flow(dp);
drivers/gpu/ipu-v3/ipu-dp.c
118
struct ipu_dp_priv *priv = flow->priv;
drivers/gpu/ipu-v3/ipu-dp.c
120
writel((x_pos << 16) | y_pos, flow->base + DP_FG_POS);
drivers/gpu/ipu-v3/ipu-dp.c
128
static void ipu_dp_csc_init(struct ipu_flow *flow,
drivers/gpu/ipu-v3/ipu-dp.c
137
reg = readl(flow->base + DP_COM_CONF);
drivers/gpu/ipu-v3/ipu-dp.c
141
writel(reg, flow->base + DP_COM_CONF);
drivers/gpu/ipu-v3/ipu-dp.c
146
writel(0x099 | (0x12d << 16), flow->base + DP_CSC_A_0);
drivers/gpu/ipu-v3/ipu-dp.c
147
writel(0x03a | (0x3a9 << 16), flow->base + DP_CSC_A_1);
drivers/gpu/ipu-v3/ipu-dp.c
148
writel(0x356 | (0x100 << 16), flow->base + DP_CSC_A_2);
drivers/gpu/ipu-v3/ipu-dp.c
149
writel(0x100 | (0x329 << 16), flow->base + DP_CSC_A_3);
drivers/gpu/ipu-v3/ipu-dp.c
151
flow->base + DP_CSC_0);
drivers/gpu/ipu-v3/ipu-dp.c
153
flow->base + DP_CSC_1);
drivers/gpu/ipu-v3/ipu-dp.c
156
writel(0x095 | (0x000 << 16), flow->base + DP_CSC_A_0);
drivers/gpu/ipu-v3/ipu-dp.c
157
writel(0x0e5 | (0x095 << 16), flow->base + DP_CSC_A_1);
drivers/gpu/ipu-v3/ipu-dp.c
158
writel(0x3e5 | (0x3bc << 16), flow->base + DP_CSC_A_2);
drivers/gpu/ipu-v3/ipu-dp.c
159
writel(0x095 | (0x10e << 16), flow->base + DP_CSC_A_3);
drivers/gpu/ipu-v3/ipu-dp.c
161
flow->base + DP_CSC_0);
drivers/gpu/ipu-v3/ipu-dp.c
163
flow->base + DP_CSC_1);
drivers/gpu/ipu-v3/ipu-dp.c
166
writel(0x095 | (0x000 << 16), flow->base + DP_CSC_A_0);
drivers/gpu/ipu-v3/ipu-dp.c
167
writel(0x0cc | (0x095 << 16), flow->base + DP_CSC_A_1);
drivers/gpu/ipu-v3/ipu-dp.c
168
writel(0x3ce | (0x398 << 16), flow->base + DP_CSC_A_2);
drivers/gpu/ipu-v3/ipu-dp.c
169
writel(0x095 | (0x0ff << 16), flow->base + DP_CSC_A_3);
drivers/gpu/ipu-v3/ipu-dp.c
171
flow->base + DP_CSC_0);
drivers/gpu/ipu-v3/ipu-dp.c
173
flow->base + DP_CSC_1);
drivers/gpu/ipu-v3/ipu-dp.c
178
writel(reg, flow->base + DP_COM_CONF);
drivers/gpu/ipu-v3/ipu-dp.c
187
struct ipu_flow *flow = to_flow(dp);
drivers/gpu/ipu-v3/ipu-dp.c
188
struct ipu_dp_priv *priv = flow->priv;
drivers/gpu/ipu-v3/ipu-dp.c
195
flow->out_cs = out;
drivers/gpu/ipu-v3/ipu-dp.c
197
if (flow->foreground.in_cs == flow->background.in_cs) {
drivers/gpu/ipu-v3/ipu-dp.c
202
ipu_dp_csc_init(flow, ycbcr_enc, range,
drivers/gpu/ipu-v3/ipu-dp.c
203
flow->foreground.in_cs, flow->out_cs,
drivers/gpu/ipu-v3/ipu-dp.c
206
if (flow->foreground.in_cs == IPUV3_COLORSPACE_UNKNOWN ||
drivers/gpu/ipu-v3/ipu-dp.c
207
flow->foreground.in_cs == flow->out_cs)
drivers/gpu/ipu-v3/ipu-dp.c
212
ipu_dp_csc_init(flow, ycbcr_enc, range,
drivers/gpu/ipu-v3/ipu-dp.c
213
flow->background.in_cs,
drivers/gpu/ipu-v3/ipu-dp.c
214
flow->out_cs, DP_COM_CONF_CSC_DEF_BG);
drivers/gpu/ipu-v3/ipu-dp.c
216
ipu_dp_csc_init(flow, ycbcr_enc, range,
drivers/gpu/ipu-v3/ipu-dp.c
217
flow->foreground.in_cs,
drivers/gpu/ipu-v3/ipu-dp.c
218
flow->out_cs, DP_COM_CONF_CSC_DEF_FG);
drivers/gpu/ipu-v3/ipu-dp.c
248
struct ipu_flow *flow = to_flow(dp);
drivers/gpu/ipu-v3/ipu-dp.c
249
struct ipu_dp_priv *priv = flow->priv;
drivers/gpu/ipu-v3/ipu-dp.c
257
reg = readl(flow->base + DP_COM_CONF);
drivers/gpu/ipu-v3/ipu-dp.c
259
writel(reg, flow->base + DP_COM_CONF);
drivers/gpu/ipu-v3/ipu-dp.c
271
struct ipu_flow *flow = to_flow(dp);
drivers/gpu/ipu-v3/ipu-dp.c
272
struct ipu_dp_priv *priv = flow->priv;
drivers/gpu/ipu-v3/ipu-dp.c
282
reg = readl(flow->base + DP_COM_CONF);
drivers/gpu/ipu-v3/ipu-dp.c
289
writel(reg, flow->base + DP_COM_CONF);
drivers/gpu/ipu-v3/ipu-dp.c
291
writel(0, flow->base + DP_FG_POS);
drivers/gpu/ipu-v3/ipu-dp.c
316
struct ipu_dp *ipu_dp_get(struct ipu_soc *ipu, unsigned int flow)
drivers/gpu/ipu-v3/ipu-dp.c
321
if ((flow >> 1) >= IPUV3_NUM_FLOWS)
drivers/gpu/ipu-v3/ipu-dp.c
324
if (flow & 1)
drivers/gpu/ipu-v3/ipu-dp.c
325
dp = &priv->flow[flow >> 1].foreground;
drivers/gpu/ipu-v3/ipu-dp.c
327
dp = &priv->flow[flow >> 1].background;
drivers/gpu/ipu-v3/ipu-dp.c
364
priv->flow[i].background.in_cs = IPUV3_COLORSPACE_UNKNOWN;
drivers/gpu/ipu-v3/ipu-dp.c
365
priv->flow[i].foreground.in_cs = IPUV3_COLORSPACE_UNKNOWN;
drivers/gpu/ipu-v3/ipu-dp.c
366
priv->flow[i].foreground.foreground = true;
drivers/gpu/ipu-v3/ipu-dp.c
367
priv->flow[i].base = priv->base + ipu_dp_flow_base[i];
drivers/gpu/ipu-v3/ipu-dp.c
368
priv->flow[i].priv = priv;
drivers/gpu/ipu-v3/ipu-dp.c
46
u32 flow;
drivers/gpu/ipu-v3/ipu-dp.c
64
struct ipu_flow flow[IPUV3_NUM_FLOWS];
drivers/gpu/ipu-v3/ipu-dp.c
82
struct ipu_flow *flow = to_flow(dp);
drivers/gpu/ipu-v3/ipu-dp.c
83
struct ipu_dp_priv *priv = flow->priv;
drivers/gpu/ipu-v3/ipu-dp.c
88
reg = readl(flow->base + DP_COM_CONF);
drivers/gpu/ipu-v3/ipu-dp.c
93
writel(reg, flow->base + DP_COM_CONF);
drivers/gpu/ipu-v3/ipu-dp.c
96
reg = readl(flow->base + DP_GRAPH_WIND_CTRL) & 0x00FFFFFFL;
drivers/gpu/ipu-v3/ipu-dp.c
98
flow->base + DP_GRAPH_WIND_CTRL);
drivers/hsi/clients/hsi_char.c
353
if ((rxc->flow != HSI_FLOW_SYNC) && (rxc->flow != HSI_FLOW_PIPE))
drivers/hsi/clients/hsi_char.c
358
cl->rx_cfg.flow = rxc->flow;
drivers/hsi/clients/hsi_char.c
374
rxc->flow = cl->rx_cfg.flow;
drivers/hsi/hsi_core.c
160
const char *flow;
drivers/hsi/hsi_core.c
163
err = of_property_read_string(client, name, &flow);
drivers/hsi/hsi_core.c
167
if (strcmp(flow, "synchronized") == 0)
drivers/hsi/hsi_core.c
169
else if (strcmp(flow, "pipeline") == 0)
drivers/hsi/hsi_core.c
237
&cl->rx_cfg.flow);
drivers/infiniband/core/uverbs_std_types.c
55
struct ib_flow *flow = (struct ib_flow *)uobject->object;
drivers/infiniband/core/uverbs_std_types.c
58
struct ib_qp *qp = flow->qp;
drivers/infiniband/core/uverbs_std_types.c
61
ret = flow->device->ops.destroy_flow(flow);
drivers/infiniband/hw/bnxt_re/ib_verbs.c
4494
struct bnxt_re_flow *flow;
drivers/infiniband/hw/bnxt_re/ib_verbs.c
4508
flow = kzalloc_obj(*flow);
drivers/infiniband/hw/bnxt_re/ib_verbs.c
4509
if (!flow) {
drivers/infiniband/hw/bnxt_re/ib_verbs.c
4514
flow->rdev = rdev;
drivers/infiniband/hw/bnxt_re/ib_verbs.c
4527
return &flow->ib_flow;
drivers/infiniband/hw/bnxt_re/ib_verbs.c
4533
kfree(flow);
drivers/infiniband/hw/bnxt_re/ib_verbs.c
4539
struct bnxt_re_flow *flow =
drivers/infiniband/hw/bnxt_re/ib_verbs.c
4541
struct bnxt_re_dev *rdev = flow->rdev;
drivers/infiniband/hw/bnxt_re/ib_verbs.c
4552
kfree(flow);
drivers/infiniband/hw/hfi1/ipoib.h
113
union hfi1_ipoib_flow flow;
drivers/infiniband/hw/hfi1/ipoib_tx.c
30
union hfi1_ipoib_flow flow;
drivers/infiniband/hw/hfi1/ipoib_tx.c
301
lrh0 |= (txp->flow.sc5 & 0xf) << 12;
drivers/infiniband/hw/hfi1/ipoib_tx.c
340
ib_is_sc5(txp->flow.sc5) <<
drivers/infiniband/hw/hfi1/ipoib_tx.c
343
sc_to_vlt(priv->dd, txp->flow.sc5),
drivers/infiniband/hw/hfi1/ipoib_tx.c
386
if (txq->flow.as_int != txp->flow.as_int) {
drivers/infiniband/hw/hfi1/ipoib_tx.c
387
txq->flow.tx_queue = txp->flow.tx_queue;
drivers/infiniband/hw/hfi1/ipoib_tx.c
388
txq->flow.sc5 = txp->flow.sc5;
drivers/infiniband/hw/hfi1/ipoib_tx.c
391
txp->flow.tx_queue,
drivers/infiniband/hw/hfi1/ipoib_tx.c
392
txp->flow.sc5);
drivers/infiniband/hw/hfi1/ipoib_tx.c
488
ib_is_sc5(txp->flow.sc5));
drivers/infiniband/hw/hfi1/ipoib_tx.c
516
if (txq->flow.as_int != txp->flow.as_int) {
drivers/infiniband/hw/hfi1/ipoib_tx.c
552
ib_is_sc5(txp->flow.sc5));
drivers/infiniband/hw/hfi1/ipoib_tx.c
595
txp.flow.sc5 = txp.ibp->sl_to_sc[rdma_ah_get_sl(txp.ah_attr)];
drivers/infiniband/hw/hfi1/ipoib_tx.c
596
txp.flow.tx_queue = (u8)skb_get_queue_mapping(skb);
drivers/infiniband/hw/hfi1/ipoib_tx.c
724
txq->flow.tx_queue = 0xff;
drivers/infiniband/hw/hfi1/ipoib_tx.c
725
txq->flow.sc5 = 0xff;
drivers/infiniband/hw/hfi1/ipoib_tx.c
855
dd_dev_info(priv->dd, "flow %x\n", txq->flow.as_int);
drivers/infiniband/hw/hfi1/rc.c
1072
flow = &req->flows[req->flow_idx];
drivers/infiniband/hw/hfi1/rc.c
1073
len -= flow->sent;
drivers/infiniband/hw/hfi1/rc.c
1074
req->s_next_psn = flow->flow_state.ib_lpsn + 1;
drivers/infiniband/hw/hfi1/rc.c
406
struct tid_rdma_flow *flow = NULL;
drivers/infiniband/hw/hfi1/rc.c
782
struct tid_rdma_flow *flow =
drivers/infiniband/hw/hfi1/rc.c
791
if (!flow->npagesets) {
drivers/infiniband/hw/hfi1/tid_rdma.c
1020
static u32 tid_rdma_find_phys_blocks_8k(struct tid_rdma_flow *flow,
drivers/infiniband/hw/hfi1/tid_rdma.c
1034
trace_hfi1_tid_flow_page(flow->req->qp, flow, i, 1, 0, v0);
drivers/infiniband/hw/hfi1/tid_rdma.c
1037
trace_hfi1_tid_flow_page(flow->req->qp, flow, i, 1, 1, v1);
drivers/infiniband/hw/hfi1/tid_rdma.c
1087
static u32 kern_find_pages(struct tid_rdma_flow *flow,
drivers/infiniband/hw/hfi1/tid_rdma.c
1091
struct tid_rdma_request *req = flow->req;
drivers/infiniband/hw/hfi1/tid_rdma.c
1093
u32 length = flow->req->seg_len;
drivers/infiniband/hw/hfi1/tid_rdma.c
1117
flow->length = flow->req->seg_len - length;
drivers/infiniband/hw/hfi1/tid_rdma.c
1122
static void dma_unmap_flow(struct tid_rdma_flow *flow)
drivers/infiniband/hw/hfi1/tid_rdma.c
1128
dd = flow->req->rcd->dd;
drivers/infiniband/hw/hfi1/tid_rdma.c
1129
for (i = 0, pset = &flow->pagesets[0]; i < flow->npagesets;
drivers/infiniband/hw/hfi1/tid_rdma.c
1141
static int dma_map_flow(struct tid_rdma_flow *flow, struct page **pages)
drivers/infiniband/hw/hfi1/tid_rdma.c
1144
struct hfi1_devdata *dd = flow->req->rcd->dd;
drivers/infiniband/hw/hfi1/tid_rdma.c
1147
for (i = 0, pset = &flow->pagesets[0]; i < flow->npagesets;
drivers/infiniband/hw/hfi1/tid_rdma.c
1157
dma_unmap_flow(flow);
drivers/infiniband/hw/hfi1/tid_rdma.c
1166
static inline bool dma_mapped(struct tid_rdma_flow *flow)
drivers/infiniband/hw/hfi1/tid_rdma.c
1168
return !!flow->pagesets[0].mapped;
drivers/infiniband/hw/hfi1/tid_rdma.c
1175
static int kern_get_phys_blocks(struct tid_rdma_flow *flow,
drivers/infiniband/hw/hfi1/tid_rdma.c
1182
if (flow->npagesets) {
drivers/infiniband/hw/hfi1/tid_rdma.c
1183
trace_hfi1_tid_flow_alloc(flow->req->qp, flow->req->setup_head,
drivers/infiniband/hw/hfi1/tid_rdma.c
1184
flow);
drivers/infiniband/hw/hfi1/tid_rdma.c
1185
if (!dma_mapped(flow))
drivers/infiniband/hw/hfi1/tid_rdma.c
1186
return dma_map_flow(flow, pages);
drivers/infiniband/hw/hfi1/tid_rdma.c
1190
npages = kern_find_pages(flow, pages, ss, last);
drivers/infiniband/hw/hfi1/tid_rdma.c
1192
if (flow->req->qp->pmtu == enum_to_mtu(OPA_MTU_4096))
drivers/infiniband/hw/hfi1/tid_rdma.c
1193
flow->npagesets =
drivers/infiniband/hw/hfi1/tid_rdma.c
1194
tid_rdma_find_phys_blocks_4k(flow, pages, npages,
drivers/infiniband/hw/hfi1/tid_rdma.c
1195
flow->pagesets);
drivers/infiniband/hw/hfi1/tid_rdma.c
1197
flow->npagesets =
drivers/infiniband/hw/hfi1/tid_rdma.c
1198
tid_rdma_find_phys_blocks_8k(flow, pages, npages,
drivers/infiniband/hw/hfi1/tid_rdma.c
1199
flow->pagesets);
drivers/infiniband/hw/hfi1/tid_rdma.c
1201
return dma_map_flow(flow, pages);
drivers/infiniband/hw/hfi1/tid_rdma.c
1204
static inline void kern_add_tid_node(struct tid_rdma_flow *flow,
drivers/infiniband/hw/hfi1/tid_rdma.c
1208
struct kern_tid_node *node = &flow->tnode[flow->tnode_cnt++];
drivers/infiniband/hw/hfi1/tid_rdma.c
1210
WARN_ON_ONCE(flow->tnode_cnt >=
drivers/infiniband/hw/hfi1/tid_rdma.c
1220
trace_hfi1_tid_node_add(flow->req->qp, s, flow->tnode_cnt - 1,
drivers/infiniband/hw/hfi1/tid_rdma.c
1237
static int kern_alloc_tids(struct tid_rdma_flow *flow)
drivers/infiniband/hw/hfi1/tid_rdma.c
1239
struct hfi1_ctxtdata *rcd = flow->req->rcd;
drivers/infiniband/hw/hfi1/tid_rdma.c
1245
flow->tnode_cnt = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
1246
ngroups = flow->npagesets / dd->rcv_entries.group_size;
drivers/infiniband/hw/hfi1/tid_rdma.c
1252
kern_add_tid_node(flow, rcd, "complete groups", group,
drivers/infiniband/hw/hfi1/tid_rdma.c
1260
if (pageidx >= flow->npagesets)
drivers/infiniband/hw/hfi1/tid_rdma.c
1266
use = min_t(u32, flow->npagesets - pageidx,
drivers/infiniband/hw/hfi1/tid_rdma.c
1268
kern_add_tid_node(flow, rcd, "used groups", used, use);
drivers/infiniband/hw/hfi1/tid_rdma.c
1271
if (pageidx >= flow->npagesets)
drivers/infiniband/hw/hfi1/tid_rdma.c
1287
use = min_t(u32, flow->npagesets - pageidx, group->size);
drivers/infiniband/hw/hfi1/tid_rdma.c
1288
kern_add_tid_node(flow, rcd, "complete continue", group, use);
drivers/infiniband/hw/hfi1/tid_rdma.c
1290
if (pageidx >= flow->npagesets)
drivers/infiniband/hw/hfi1/tid_rdma.c
1293
trace_hfi1_msg_alloc_tids(flow->req->qp, " insufficient tids: needed ",
drivers/infiniband/hw/hfi1/tid_rdma.c
1294
(u64)flow->npagesets);
drivers/infiniband/hw/hfi1/tid_rdma.c
1300
static void kern_program_rcv_group(struct tid_rdma_flow *flow, int grp_num,
drivers/infiniband/hw/hfi1/tid_rdma.c
1303
struct hfi1_ctxtdata *rcd = flow->req->rcd;
drivers/infiniband/hw/hfi1/tid_rdma.c
1305
struct kern_tid_node *node = &flow->tnode[grp_num];
drivers/infiniband/hw/hfi1/tid_rdma.c
1308
u32 pmtu_pg = flow->req->qp->pmtu >> PAGE_SHIFT;
drivers/infiniband/hw/hfi1/tid_rdma.c
1319
pset = &flow->pagesets[(*pset_idx)++];
drivers/infiniband/hw/hfi1/tid_rdma.c
134
struct tid_rdma_flow *flow,
drivers/infiniband/hw/hfi1/tid_rdma.c
1342
flow->tid_entry[flow->tidcnt++] =
drivers/infiniband/hw/hfi1/tid_rdma.c
1347
flow->req->qp, flow->tidcnt - 1,
drivers/infiniband/hw/hfi1/tid_rdma.c
1348
flow->tid_entry[flow->tidcnt - 1]);
drivers/infiniband/hw/hfi1/tid_rdma.c
1351
flow->npkts += (npages + pmtu_pg - 1) >> ilog2(pmtu_pg);
drivers/infiniband/hw/hfi1/tid_rdma.c
1368
static void kern_unprogram_rcv_group(struct tid_rdma_flow *flow, int grp_num)
drivers/infiniband/hw/hfi1/tid_rdma.c
1370
struct hfi1_ctxtdata *rcd = flow->req->rcd;
drivers/infiniband/hw/hfi1/tid_rdma.c
1372
struct kern_tid_node *node = &flow->tnode[grp_num];
drivers/infiniband/hw/hfi1/tid_rdma.c
1399
struct hfi1_ctxtdata *rcd = flow->req->rcd;
drivers/infiniband/hw/hfi1/tid_rdma.c
1407
static void kern_program_rcvarray(struct tid_rdma_flow *flow)
drivers/infiniband/hw/hfi1/tid_rdma.c
1412
flow->npkts = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
1413
flow->tidcnt = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
1414
for (i = 0; i < flow->tnode_cnt; i++)
drivers/infiniband/hw/hfi1/tid_rdma.c
1415
kern_program_rcv_group(flow, i, &pset_idx);
drivers/infiniband/hw/hfi1/tid_rdma.c
1416
trace_hfi1_tid_flow_alloc(flow->req->qp, flow->req->setup_head, flow);
drivers/infiniband/hw/hfi1/tid_rdma.c
1465
struct tid_rdma_flow *flow = &req->flows[req->setup_head];
drivers/infiniband/hw/hfi1/tid_rdma.c
1489
if (kern_get_phys_blocks(flow, qpriv->pages, ss, last)) {
drivers/infiniband/hw/hfi1/tid_rdma.c
1490
hfi1_wait_kmem(flow->req->qp);
drivers/infiniband/hw/hfi1/tid_rdma.c
1495
if (kernel_tid_waiters(rcd, &rcd->rarr_queue, flow->req->qp))
drivers/infiniband/hw/hfi1/tid_rdma.c
1503
if (kern_alloc_tids(flow))
drivers/infiniband/hw/hfi1/tid_rdma.c
1509
kern_program_rcvarray(flow);
drivers/infiniband/hw/hfi1/tid_rdma.c
1519
memset(&flow->flow_state, 0x0, sizeof(flow->flow_state));
drivers/infiniband/hw/hfi1/tid_rdma.c
1520
flow->idx = qpriv->flow_state.index;
drivers/infiniband/hw/hfi1/tid_rdma.c
1521
flow->flow_state.generation = qpriv->flow_state.generation;
drivers/infiniband/hw/hfi1/tid_rdma.c
1522
flow->flow_state.spsn = qpriv->flow_state.psn;
drivers/infiniband/hw/hfi1/tid_rdma.c
1523
flow->flow_state.lpsn = flow->flow_state.spsn + flow->npkts - 1;
drivers/infiniband/hw/hfi1/tid_rdma.c
1524
flow->flow_state.r_next_psn =
drivers/infiniband/hw/hfi1/tid_rdma.c
1525
full_flow_psn(flow, flow->flow_state.spsn);
drivers/infiniband/hw/hfi1/tid_rdma.c
1526
qpriv->flow_state.psn += flow->npkts;
drivers/infiniband/hw/hfi1/tid_rdma.c
1528
dequeue_tid_waiter(rcd, &rcd->rarr_queue, flow->req->qp);
drivers/infiniband/hw/hfi1/tid_rdma.c
1537
queue_qp_for_tid_wait(rcd, &rcd->rarr_queue, flow->req->qp);
drivers/infiniband/hw/hfi1/tid_rdma.c
1542
static void hfi1_tid_rdma_reset_flow(struct tid_rdma_flow *flow)
drivers/infiniband/hw/hfi1/tid_rdma.c
1544
flow->npagesets = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
1556
struct tid_rdma_flow *flow = &req->flows[req->clear_tail];
drivers/infiniband/hw/hfi1/tid_rdma.c
1569
for (i = 0; i < flow->tnode_cnt; i++)
drivers/infiniband/hw/hfi1/tid_rdma.c
1570
kern_unprogram_rcv_group(flow, i);
drivers/infiniband/hw/hfi1/tid_rdma.c
1572
flow->tnode_cnt = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
1577
dma_unmap_flow(flow);
drivers/infiniband/hw/hfi1/tid_rdma.c
1579
hfi1_tid_rdma_reset_flow(flow);
drivers/infiniband/hw/hfi1/tid_rdma.c
1685
struct tid_rdma_flow *flow;
drivers/infiniband/hw/hfi1/tid_rdma.c
1691
flow = &req->flows[tail];
drivers/infiniband/hw/hfi1/tid_rdma.c
1692
if (cmp_psn(psn, flow->flow_state.ib_spsn) >= 0 &&
drivers/infiniband/hw/hfi1/tid_rdma.c
1693
cmp_psn(psn, flow->flow_state.ib_lpsn) <= 0) {
drivers/infiniband/hw/hfi1/tid_rdma.c
1696
return flow;
drivers/infiniband/hw/hfi1/tid_rdma.c
1708
struct tid_rdma_flow *flow = &req->flows[req->flow_idx];
drivers/infiniband/hw/hfi1/tid_rdma.c
1718
*bth2 = mask_psn(flow->flow_state.ib_spsn + flow->pkt);
drivers/infiniband/hw/hfi1/tid_rdma.c
1719
trace_hfi1_tid_flow_build_read_pkt(qp, req->flow_idx, flow);
drivers/infiniband/hw/hfi1/tid_rdma.c
1722
req_addr = &flow->tid_entry[flow->tid_idx];
drivers/infiniband/hw/hfi1/tid_rdma.c
1723
req_len = sizeof(*flow->tid_entry) *
drivers/infiniband/hw/hfi1/tid_rdma.c
1724
(flow->tidcnt - flow->tid_idx);
drivers/infiniband/hw/hfi1/tid_rdma.c
1749
req->cur_seg * req->seg_len + flow->sent);
drivers/infiniband/hw/hfi1/tid_rdma.c
1753
cpu_to_be32((flow->flow_state.generation <<
drivers/infiniband/hw/hfi1/tid_rdma.c
1755
((flow->flow_state.spsn + flow->pkt) &
drivers/infiniband/hw/hfi1/tid_rdma.c
1759
((flow->idx & TID_RDMA_DESTQP_FLOW_MASK) <<
drivers/infiniband/hw/hfi1/tid_rdma.c
1769
flow->sent += *len;
drivers/infiniband/hw/hfi1/tid_rdma.c
1794
struct tid_rdma_flow *flow = NULL;
drivers/infiniband/hw/hfi1/tid_rdma.c
1864
flow = &req->flows[req->flow_idx];
drivers/infiniband/hw/hfi1/tid_rdma.c
1865
flow->pkt = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
1866
flow->tid_idx = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
1867
flow->sent = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
1870
flow->flow_state.ib_spsn = req->s_next_psn;
drivers/infiniband/hw/hfi1/tid_rdma.c
1871
flow->flow_state.ib_lpsn =
drivers/infiniband/hw/hfi1/tid_rdma.c
1872
flow->flow_state.ib_spsn + flow->npkts - 1;
drivers/infiniband/hw/hfi1/tid_rdma.c
1876
req->s_next_psn += flow->npkts;
drivers/infiniband/hw/hfi1/tid_rdma.c
1897
struct tid_rdma_flow *flow;
drivers/infiniband/hw/hfi1/tid_rdma.c
1903
flow = &req->flows[req->setup_head];
drivers/infiniband/hw/hfi1/tid_rdma.c
1907
if (pktlen > sizeof(flow->tid_entry))
drivers/infiniband/hw/hfi1/tid_rdma.c
1909
memcpy(flow->tid_entry, packet->ebuf, pktlen);
drivers/infiniband/hw/hfi1/tid_rdma.c
1910
flow->tidcnt = pktlen / sizeof(*flow->tid_entry);
drivers/infiniband/hw/hfi1/tid_rdma.c
1916
flow->npkts = rvt_div_round_up_mtu(qp, len);
drivers/infiniband/hw/hfi1/tid_rdma.c
1917
for (i = 0; i < flow->tidcnt; i++) {
drivers/infiniband/hw/hfi1/tid_rdma.c
1919
flow->tid_entry[i]);
drivers/infiniband/hw/hfi1/tid_rdma.c
1920
tlen = EXP_TID_GET(flow->tid_entry[i], LEN);
drivers/infiniband/hw/hfi1/tid_rdma.c
1937
flow->pkt = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
1938
flow->tid_idx = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
1939
flow->tid_offset = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
1940
flow->sent = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
1941
flow->tid_qpn = be32_to_cpu(ohdr->u.tid_rdma.r_req.tid_flow_qp);
drivers/infiniband/hw/hfi1/tid_rdma.c
1942
flow->idx = (flow->tid_qpn >> TID_RDMA_DESTQP_FLOW_SHIFT) &
drivers/infiniband/hw/hfi1/tid_rdma.c
1945
flow->flow_state.generation = flow_psn >> HFI1_KDETH_BTH_SEQ_SHIFT;
drivers/infiniband/hw/hfi1/tid_rdma.c
1946
flow->flow_state.spsn = flow_psn & HFI1_KDETH_BTH_SEQ_MASK;
drivers/infiniband/hw/hfi1/tid_rdma.c
1947
flow->length = len;
drivers/infiniband/hw/hfi1/tid_rdma.c
1949
flow->flow_state.lpsn = flow->flow_state.spsn +
drivers/infiniband/hw/hfi1/tid_rdma.c
1950
flow->npkts - 1;
drivers/infiniband/hw/hfi1/tid_rdma.c
1951
flow->flow_state.ib_spsn = psn;
drivers/infiniband/hw/hfi1/tid_rdma.c
1952
flow->flow_state.ib_lpsn = flow->flow_state.ib_spsn + flow->npkts - 1;
drivers/infiniband/hw/hfi1/tid_rdma.c
1954
trace_hfi1_tid_flow_rcv_read_req(qp, req->setup_head, flow);
drivers/infiniband/hw/hfi1/tid_rdma.c
1966
e->lpsn = psn + flow->npkts - 1;
drivers/infiniband/hw/hfi1/tid_rdma.c
2351
struct tid_rdma_flow *flow = &req->flows[req->clear_tail];
drivers/infiniband/hw/hfi1/tid_rdma.c
2352
u32 tidentry = flow->tid_entry[flow->tid_idx];
drivers/infiniband/hw/hfi1/tid_rdma.c
2360
*len = min_t(u32, qp->pmtu, tidlen - flow->tid_offset);
drivers/infiniband/hw/hfi1/tid_rdma.c
2361
flow->sent += *len;
drivers/infiniband/hw/hfi1/tid_rdma.c
2362
next_offset = flow->tid_offset + *len;
drivers/infiniband/hw/hfi1/tid_rdma.c
2363
last_pkt = (flow->sent >= flow->length);
drivers/infiniband/hw/hfi1/tid_rdma.c
2365
trace_hfi1_tid_entry_build_read_resp(qp, flow->tid_idx, tidentry);
drivers/infiniband/hw/hfi1/tid_rdma.c
2366
trace_hfi1_tid_flow_build_read_resp(qp, req->clear_tail, flow);
drivers/infiniband/hw/hfi1/tid_rdma.c
2380
KDETH_SET(resp->kdeth0, OFFSET, flow->tid_offset / om);
drivers/infiniband/hw/hfi1/tid_rdma.c
2386
resp->verbs_psn = cpu_to_be32(mask_psn(flow->flow_state.ib_spsn +
drivers/infiniband/hw/hfi1/tid_rdma.c
2387
flow->pkt));
drivers/infiniband/hw/hfi1/tid_rdma.c
2390
*bth1 = flow->tid_qpn;
drivers/infiniband/hw/hfi1/tid_rdma.c
2391
*bth2 = mask_psn(((flow->flow_state.spsn + flow->pkt++) &
drivers/infiniband/hw/hfi1/tid_rdma.c
2393
(flow->flow_state.generation <<
drivers/infiniband/hw/hfi1/tid_rdma.c
2402
flow->tid_offset = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
2403
flow->tid_idx++;
drivers/infiniband/hw/hfi1/tid_rdma.c
2405
flow->tid_offset = next_offset;
drivers/infiniband/hw/hfi1/tid_rdma.c
2456
struct tid_rdma_flow *flow;
drivers/infiniband/hw/hfi1/tid_rdma.c
2474
flow = &req->flows[req->clear_tail];
drivers/infiniband/hw/hfi1/tid_rdma.c
2476
if (cmp_psn(ipsn, flow->flow_state.ib_lpsn)) {
drivers/infiniband/hw/hfi1/tid_rdma.c
2477
update_r_next_psn_fecn(packet, priv, rcd, flow, fecn);
drivers/infiniband/hw/hfi1/tid_rdma.c
2479
if (cmp_psn(kpsn, flow->flow_state.r_next_psn))
drivers/infiniband/hw/hfi1/tid_rdma.c
2481
flow->flow_state.r_next_psn = mask_psn(kpsn + 1);
drivers/infiniband/hw/hfi1/tid_rdma.c
2512
flow->flow_state.r_next_psn = mask_psn(kpsn + 1);
drivers/infiniband/hw/hfi1/tid_rdma.c
2531
trace_hfi1_tid_flow_rcv_read_resp(qp, req->clear_tail, flow);
drivers/infiniband/hw/hfi1/tid_rdma.c
2633
struct tid_rdma_flow *flow;
drivers/infiniband/hw/hfi1/tid_rdma.c
2638
flow = &req->flows[req->clear_tail];
drivers/infiniband/hw/hfi1/tid_rdma.c
2639
hfi1_restart_rc(qp, flow->flow_state.ib_spsn, 0);
drivers/infiniband/hw/hfi1/tid_rdma.c
2665
struct tid_rdma_flow *flow;
drivers/infiniband/hw/hfi1/tid_rdma.c
2756
flow = &req->flows[req->clear_tail];
drivers/infiniband/hw/hfi1/tid_rdma.c
2759
flow);
drivers/infiniband/hw/hfi1/tid_rdma.c
2762
flow->flow_state.r_next_psn);
drivers/infiniband/hw/hfi1/tid_rdma.c
2785
fpsn = full_flow_psn(flow,
drivers/infiniband/hw/hfi1/tid_rdma.c
2786
flow->flow_state.lpsn);
drivers/infiniband/hw/hfi1/tid_rdma.c
2793
flow->flow_state.r_next_psn =
drivers/infiniband/hw/hfi1/tid_rdma.c
2799
flow->idx);
drivers/infiniband/hw/hfi1/tid_rdma.c
2800
flow->flow_state.r_next_psn = last_psn;
drivers/infiniband/hw/hfi1/tid_rdma.c
2866
struct tid_rdma_flow *flow;
drivers/infiniband/hw/hfi1/tid_rdma.c
2945
flow = &req->flows[req->clear_tail];
drivers/infiniband/hw/hfi1/tid_rdma.c
2951
trace_hfi1_tid_flow_handle_kdeth_eflags(qp, req->clear_tail, flow);
drivers/infiniband/hw/hfi1/tid_rdma.c
2959
flow->flow_state.r_next_psn =
drivers/infiniband/hw/hfi1/tid_rdma.c
2961
flow->idx);
drivers/infiniband/hw/hfi1/tid_rdma.c
2963
flow->flow_state.r_next_psn;
drivers/infiniband/hw/hfi1/tid_rdma.c
2975
flow->flow_state.r_next_psn);
drivers/infiniband/hw/hfi1/tid_rdma.c
2987
if (psn == full_flow_psn(flow,
drivers/infiniband/hw/hfi1/tid_rdma.c
2988
flow->flow_state.lpsn))
drivers/infiniband/hw/hfi1/tid_rdma.c
2990
flow->flow_state.r_next_psn =
drivers/infiniband/hw/hfi1/tid_rdma.c
2993
flow->flow_state.r_next_psn;
drivers/infiniband/hw/hfi1/tid_rdma.c
3034
qpriv->s_nak_psn = mask_psn(flow->flow_state.r_next_psn);
drivers/infiniband/hw/hfi1/tid_rdma.c
3050
struct tid_rdma_flow *flow;
drivers/infiniband/hw/hfi1/tid_rdma.c
3058
flow = find_flow_ib(req, *bth2, &fidx);
drivers/infiniband/hw/hfi1/tid_rdma.c
3059
if (!flow) {
drivers/infiniband/hw/hfi1/tid_rdma.c
3070
flow = &req->flows[fidx];
drivers/infiniband/hw/hfi1/tid_rdma.c
3075
delta_pkts = delta_psn(*bth2, flow->flow_state.ib_spsn);
drivers/infiniband/hw/hfi1/tid_rdma.c
3078
full_flow_psn(flow,
drivers/infiniband/hw/hfi1/tid_rdma.c
3079
flow->flow_state.spsn));
drivers/infiniband/hw/hfi1/tid_rdma.c
3081
trace_hfi1_tid_flow_restart_req(qp, fidx, flow);
drivers/infiniband/hw/hfi1/tid_rdma.c
3082
diff = delta_pkts + flow->resync_npkts;
drivers/infiniband/hw/hfi1/tid_rdma.c
3084
flow->sent = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
3085
flow->pkt = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
3086
flow->tid_idx = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
3087
flow->tid_offset = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
3089
for (tididx = 0; tididx < flow->tidcnt; tididx++) {
drivers/infiniband/hw/hfi1/tid_rdma.c
3090
u32 tidentry = flow->tid_entry[tididx], tidlen,
drivers/infiniband/hw/hfi1/tid_rdma.c
3093
flow->tid_offset = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
3097
flow->pkt += npkts;
drivers/infiniband/hw/hfi1/tid_rdma.c
3098
flow->sent += (npkts == tidnpkts ? tidlen :
drivers/infiniband/hw/hfi1/tid_rdma.c
3100
flow->tid_offset += npkts * qp->pmtu;
drivers/infiniband/hw/hfi1/tid_rdma.c
3108
flow->sent, 0);
drivers/infiniband/hw/hfi1/tid_rdma.c
3116
flow->pkt -= flow->resync_npkts;
drivers/infiniband/hw/hfi1/tid_rdma.c
3119
if (flow->tid_offset ==
drivers/infiniband/hw/hfi1/tid_rdma.c
3120
EXP_TID_GET(flow->tid_entry[tididx], LEN) * PAGE_SIZE) {
drivers/infiniband/hw/hfi1/tid_rdma.c
3122
flow->tid_offset = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
3124
flow->tid_idx = tididx;
drivers/infiniband/hw/hfi1/tid_rdma.c
3131
trace_hfi1_tid_flow_restart_req(qp, fidx, flow);
drivers/infiniband/hw/hfi1/tid_rdma.c
3843
struct tid_rdma_flow *flow = NULL;
drivers/infiniband/hw/hfi1/tid_rdma.c
3852
flow = &req->flows[req->flow_idx];
drivers/infiniband/hw/hfi1/tid_rdma.c
3873
trace_hfi1_tid_flow_build_write_resp(qp, req->flow_idx, flow);
drivers/infiniband/hw/hfi1/tid_rdma.c
3880
trace_hfi1_tid_flow_build_write_resp(qp, req->flow_idx, flow);
drivers/infiniband/hw/hfi1/tid_rdma.c
3888
flow->flow_state.resp_ib_psn = bth2;
drivers/infiniband/hw/hfi1/tid_rdma.c
3889
resp_addr = (void *)flow->tid_entry;
drivers/infiniband/hw/hfi1/tid_rdma.c
3890
resp_len = sizeof(*flow->tid_entry) * flow->tidcnt;
drivers/infiniband/hw/hfi1/tid_rdma.c
3920
cpu_to_be32((flow->flow_state.generation <<
drivers/infiniband/hw/hfi1/tid_rdma.c
3922
(flow->flow_state.spsn &
drivers/infiniband/hw/hfi1/tid_rdma.c
3926
((flow->idx & TID_RDMA_DESTQP_FLOW_MASK) <<
drivers/infiniband/hw/hfi1/tid_rdma.c
4046
struct tid_rdma_flow *flow;
drivers/infiniband/hw/hfi1/tid_rdma.c
4106
flow = &req->flows[req->setup_head];
drivers/infiniband/hw/hfi1/tid_rdma.c
4107
flow->pkt = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
4108
flow->tid_idx = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
4109
flow->tid_offset = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
4110
flow->sent = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
4111
flow->resync_npkts = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
4112
flow->tid_qpn = be32_to_cpu(ohdr->u.tid_rdma.w_rsp.tid_flow_qp);
drivers/infiniband/hw/hfi1/tid_rdma.c
4113
flow->idx = (flow->tid_qpn >> TID_RDMA_DESTQP_FLOW_SHIFT) &
drivers/infiniband/hw/hfi1/tid_rdma.c
4116
flow->flow_state.generation = flow_psn >> HFI1_KDETH_BTH_SEQ_SHIFT;
drivers/infiniband/hw/hfi1/tid_rdma.c
4117
flow->flow_state.spsn = flow_psn & HFI1_KDETH_BTH_SEQ_MASK;
drivers/infiniband/hw/hfi1/tid_rdma.c
4118
flow->flow_state.resp_ib_psn = psn;
drivers/infiniband/hw/hfi1/tid_rdma.c
4119
flow->length = min_t(u32, req->seg_len,
drivers/infiniband/hw/hfi1/tid_rdma.c
4122
flow->npkts = rvt_div_round_up_mtu(qp, flow->length);
drivers/infiniband/hw/hfi1/tid_rdma.c
4123
flow->flow_state.lpsn = flow->flow_state.spsn +
drivers/infiniband/hw/hfi1/tid_rdma.c
4124
flow->npkts - 1;
drivers/infiniband/hw/hfi1/tid_rdma.c
4127
if (pktlen > sizeof(flow->tid_entry)) {
drivers/infiniband/hw/hfi1/tid_rdma.c
4131
memcpy(flow->tid_entry, packet->ebuf, pktlen);
drivers/infiniband/hw/hfi1/tid_rdma.c
4132
flow->tidcnt = pktlen / sizeof(*flow->tid_entry);
drivers/infiniband/hw/hfi1/tid_rdma.c
4133
trace_hfi1_tid_flow_rcv_write_resp(qp, req->setup_head, flow);
drivers/infiniband/hw/hfi1/tid_rdma.c
4141
for (i = 0; i < flow->tidcnt; i++) {
drivers/infiniband/hw/hfi1/tid_rdma.c
4143
qp, i, flow->tid_entry[i]);
drivers/infiniband/hw/hfi1/tid_rdma.c
4144
if (!EXP_TID_GET(flow->tid_entry[i], LEN)) {
drivers/infiniband/hw/hfi1/tid_rdma.c
4148
tidlen += EXP_TID_GET(flow->tid_entry[i], LEN);
drivers/infiniband/hw/hfi1/tid_rdma.c
4150
if (tidlen * PAGE_SIZE < flow->length) {
drivers/infiniband/hw/hfi1/tid_rdma.c
4210
struct tid_rdma_flow *flow = &req->flows[req->clear_tail];
drivers/infiniband/hw/hfi1/tid_rdma.c
4214
u32 tidentry = flow->tid_entry[flow->tid_idx];
drivers/infiniband/hw/hfi1/tid_rdma.c
4225
*len = min_t(u32, qp->pmtu, tidlen - flow->tid_offset);
drivers/infiniband/hw/hfi1/tid_rdma.c
4226
flow->sent += *len;
drivers/infiniband/hw/hfi1/tid_rdma.c
4227
next_offset = flow->tid_offset + *len;
drivers/infiniband/hw/hfi1/tid_rdma.c
4228
last_pkt = (flow->tid_idx == (flow->tidcnt - 1) &&
drivers/infiniband/hw/hfi1/tid_rdma.c
4229
next_offset >= tidlen) || (flow->sent >= flow->length);
drivers/infiniband/hw/hfi1/tid_rdma.c
4230
trace_hfi1_tid_entry_build_write_data(qp, flow->tid_idx, tidentry);
drivers/infiniband/hw/hfi1/tid_rdma.c
4231
trace_hfi1_tid_flow_build_write_data(qp, req->clear_tail, flow);
drivers/infiniband/hw/hfi1/tid_rdma.c
4241
KDETH_SET(wd->kdeth0, OFFSET, flow->tid_offset / om);
drivers/infiniband/hw/hfi1/tid_rdma.c
4246
*bth1 = flow->tid_qpn;
drivers/infiniband/hw/hfi1/tid_rdma.c
4247
*bth2 = mask_psn(((flow->flow_state.spsn + flow->pkt++) &
drivers/infiniband/hw/hfi1/tid_rdma.c
4249
(flow->flow_state.generation <<
drivers/infiniband/hw/hfi1/tid_rdma.c
4253
if (flow->flow_state.lpsn + 1 +
drivers/infiniband/hw/hfi1/tid_rdma.c
4261
flow->tid_offset = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
4262
flow->tid_idx++;
drivers/infiniband/hw/hfi1/tid_rdma.c
4264
flow->tid_offset = next_offset;
drivers/infiniband/hw/hfi1/tid_rdma.c
4277
struct tid_rdma_flow *flow;
drivers/infiniband/hw/hfi1/tid_rdma.c
4295
flow = &req->flows[req->clear_tail];
drivers/infiniband/hw/hfi1/tid_rdma.c
4296
if (cmp_psn(psn, full_flow_psn(flow, flow->flow_state.lpsn))) {
drivers/infiniband/hw/hfi1/tid_rdma.c
4297
update_r_next_psn_fecn(packet, priv, rcd, flow, fecn);
drivers/infiniband/hw/hfi1/tid_rdma.c
4299
if (cmp_psn(psn, flow->flow_state.r_next_psn))
drivers/infiniband/hw/hfi1/tid_rdma.c
4302
flow->flow_state.r_next_psn = mask_psn(psn + 1);
drivers/infiniband/hw/hfi1/tid_rdma.c
4324
full_flow_psn(flow, flow->flow_state.spsn)) *
drivers/infiniband/hw/hfi1/tid_rdma.c
4346
flow->flow_state.r_next_psn = mask_psn(psn + 1);
drivers/infiniband/hw/hfi1/tid_rdma.c
4349
rcd->flows[flow->idx].psn = psn & HFI1_KDETH_BTH_SEQ_MASK;
drivers/infiniband/hw/hfi1/tid_rdma.c
4405
priv->r_next_psn_kdeth = flow->flow_state.r_next_psn;
drivers/infiniband/hw/hfi1/tid_rdma.c
4414
priv->s_nak_psn = flow->flow_state.r_next_psn;
drivers/infiniband/hw/hfi1/tid_rdma.c
4433
struct tid_rdma_flow *flow = &req->flows[iflow];
drivers/infiniband/hw/hfi1/tid_rdma.c
4454
*bth2 = full_flow_psn(flow, flow->flow_state.lpsn);
drivers/infiniband/hw/hfi1/tid_rdma.c
4460
((flow->idx & TID_RDMA_DESTQP_FLOW_MASK) <<
drivers/infiniband/hw/hfi1/tid_rdma.c
4466
cpu_to_be32(flow->flow_state.resp_ib_psn);
drivers/infiniband/hw/hfi1/tid_rdma.c
4504
struct tid_rdma_flow *flow;
drivers/infiniband/hw/hfi1/tid_rdma.c
4545
flow = &req->flows[req->acked_tail];
drivers/infiniband/hw/hfi1/tid_rdma.c
4546
trace_hfi1_tid_flow_rcv_tid_ack(qp, req->acked_tail, flow);
drivers/infiniband/hw/hfi1/tid_rdma.c
4549
if (cmp_psn(psn, full_flow_psn(flow, flow->flow_state.spsn)) < 0 ||
drivers/infiniband/hw/hfi1/tid_rdma.c
4550
cmp_psn(req_psn, flow->flow_state.resp_ib_psn) < 0)
drivers/infiniband/hw/hfi1/tid_rdma.c
4554
full_flow_psn(flow, flow->flow_state.lpsn)) >= 0 &&
drivers/infiniband/hw/hfi1/tid_rdma.c
4559
req->r_last_acked = flow->flow_state.resp_ib_psn;
drivers/infiniband/hw/hfi1/tid_rdma.c
4575
flow = &req->flows[req->acked_tail];
drivers/infiniband/hw/hfi1/tid_rdma.c
4576
trace_hfi1_tid_flow_rcv_tid_ack(qp, req->acked_tail, flow);
drivers/infiniband/hw/hfi1/tid_rdma.c
4637
flow = &req->flows[req->acked_tail];
drivers/infiniband/hw/hfi1/tid_rdma.c
4647
fpsn = full_flow_psn(flow, flow->flow_state.spsn);
drivers/infiniband/hw/hfi1/tid_rdma.c
4655
if (flow->flow_state.generation !=
drivers/infiniband/hw/hfi1/tid_rdma.c
4658
flow->resync_npkts +=
drivers/infiniband/hw/hfi1/tid_rdma.c
4675
flow = &rptr->flows[fidx];
drivers/infiniband/hw/hfi1/tid_rdma.c
4676
gen = flow->flow_state.generation;
drivers/infiniband/hw/hfi1/tid_rdma.c
4678
flow->flow_state.spsn !=
drivers/infiniband/hw/hfi1/tid_rdma.c
4681
lpsn = flow->flow_state.lpsn;
drivers/infiniband/hw/hfi1/tid_rdma.c
4682
lpsn = full_flow_psn(flow, lpsn);
drivers/infiniband/hw/hfi1/tid_rdma.c
4683
flow->npkts =
drivers/infiniband/hw/hfi1/tid_rdma.c
4687
flow->flow_state.generation =
drivers/infiniband/hw/hfi1/tid_rdma.c
4689
flow->flow_state.spsn = spsn;
drivers/infiniband/hw/hfi1/tid_rdma.c
4690
flow->flow_state.lpsn =
drivers/infiniband/hw/hfi1/tid_rdma.c
4691
flow->flow_state.spsn +
drivers/infiniband/hw/hfi1/tid_rdma.c
4692
flow->npkts - 1;
drivers/infiniband/hw/hfi1/tid_rdma.c
4693
flow->pkt = 0;
drivers/infiniband/hw/hfi1/tid_rdma.c
4694
spsn += flow->npkts;
drivers/infiniband/hw/hfi1/tid_rdma.c
4695
resync_psn += flow->npkts;
drivers/infiniband/hw/hfi1/tid_rdma.c
4698
flow);
drivers/infiniband/hw/hfi1/tid_rdma.c
4723
flow = &req->flows[req->acked_tail];
drivers/infiniband/hw/hfi1/tid_rdma.c
4724
flpsn = full_flow_psn(flow, flow->flow_state.lpsn);
drivers/infiniband/hw/hfi1/tid_rdma.c
4728
flow);
drivers/infiniband/hw/hfi1/tid_rdma.c
4851
struct tid_rdma_flow *flow = &req->flows[fidx];
drivers/infiniband/hw/hfi1/tid_rdma.c
4861
generation = kern_flow_generation_next(flow->flow_state.generation);
drivers/infiniband/hw/hfi1/tid_rdma.c
4879
struct tid_rdma_flow *flow;
drivers/infiniband/hw/hfi1/tid_rdma.c
4948
flow = &req->flows[flow_idx];
drivers/infiniband/hw/hfi1/tid_rdma.c
4949
lpsn = full_flow_psn(flow,
drivers/infiniband/hw/hfi1/tid_rdma.c
4950
flow->flow_state.lpsn);
drivers/infiniband/hw/hfi1/tid_rdma.c
4951
next = flow->flow_state.r_next_psn;
drivers/infiniband/hw/hfi1/tid_rdma.c
4952
flow->npkts = delta_psn(lpsn, next - 1);
drivers/infiniband/hw/hfi1/tid_rdma.c
4953
flow->flow_state.generation = fs->generation;
drivers/infiniband/hw/hfi1/tid_rdma.c
4954
flow->flow_state.spsn = fs->psn;
drivers/infiniband/hw/hfi1/tid_rdma.c
4955
flow->flow_state.lpsn =
drivers/infiniband/hw/hfi1/tid_rdma.c
4956
flow->flow_state.spsn + flow->npkts - 1;
drivers/infiniband/hw/hfi1/tid_rdma.c
4957
flow->flow_state.r_next_psn =
drivers/infiniband/hw/hfi1/tid_rdma.c
4958
full_flow_psn(flow,
drivers/infiniband/hw/hfi1/tid_rdma.c
4959
flow->flow_state.spsn);
drivers/infiniband/hw/hfi1/tid_rdma.c
4960
fs->psn += flow->npkts;
drivers/infiniband/hw/hfi1/tid_rdma.c
4962
flow);
drivers/infiniband/hw/hfi1/tid_rdma.c
5198
u16 flow;
drivers/infiniband/hw/hfi1/tid_rdma.c
5262
flow = CIRC_PREV(req->acked_tail, MAX_FLOWS);
drivers/infiniband/hw/hfi1/tid_rdma.c
5290
full_flow_psn(&req->flows[flow],
drivers/infiniband/hw/hfi1/tid_rdma.c
5291
req->flows[flow].flow_state.lpsn)) > 0))) {
drivers/infiniband/hw/hfi1/tid_rdma.c
5301
flow = req->acked_tail;
drivers/infiniband/hw/hfi1/tid_rdma.c
5309
hwords += hfi1_build_tid_rdma_write_ack(qp, e, ohdr, flow, &bth1,
drivers/infiniband/hw/hfi1/tid_rdma.c
5520
struct tid_rdma_flow *flow,
drivers/infiniband/hw/hfi1/tid_rdma.c
5531
flow->flow_state.r_next_psn =
drivers/infiniband/hw/hfi1/tid_rdma.c
5532
read_r_next_psn(dd, rcd->ctxt, flow->idx);
drivers/infiniband/hw/hfi1/tid_rdma.c
881
static u32 tid_rdma_find_phys_blocks_4k(struct tid_rdma_flow *flow,
drivers/infiniband/hw/hfi1/tid_rdma.c
898
trace_hfi1_tid_flow_page(flow->req->qp, flow, 0, 0, 0, vaddr);
drivers/infiniband/hw/hfi1/tid_rdma.c
901
trace_hfi1_tid_flow_page(flow->req->qp, flow, i, 0, 0,
drivers/infiniband/hw/hfi1/tid_rdma.c
935
trace_hfi1_tid_pageset(flow->req->qp, setcount,
drivers/infiniband/hw/hfi1/trace_tid.h
416
TP_PROTO(struct rvt_qp *qp, struct tid_rdma_flow *flow, u32 index,
drivers/infiniband/hw/hfi1/trace_tid.h
418
TP_ARGS(qp, flow, index, mtu8k, v1, vaddr),
drivers/infiniband/hw/hfi1/trace_tid.h
450
TP_PROTO(struct rvt_qp *qp, struct tid_rdma_flow *flow, u32 index,
drivers/infiniband/hw/hfi1/trace_tid.h
452
TP_ARGS(qp, flow, index, mtu8k, v1, vaddr)
drivers/infiniband/hw/hfi1/trace_tid.h
491
TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow),
drivers/infiniband/hw/hfi1/trace_tid.h
492
TP_ARGS(qp, index, flow),
drivers/infiniband/hw/hfi1/trace_tid.h
517
__entry->idx = flow->idx;
drivers/infiniband/hw/hfi1/trace_tid.h
518
__entry->resp_ib_psn = flow->flow_state.resp_ib_psn;
drivers/infiniband/hw/hfi1/trace_tid.h
519
__entry->generation = flow->flow_state.generation;
drivers/infiniband/hw/hfi1/trace_tid.h
520
__entry->fspsn = full_flow_psn(flow,
drivers/infiniband/hw/hfi1/trace_tid.h
521
flow->flow_state.spsn);
drivers/infiniband/hw/hfi1/trace_tid.h
522
__entry->flpsn = full_flow_psn(flow,
drivers/infiniband/hw/hfi1/trace_tid.h
523
flow->flow_state.lpsn);
drivers/infiniband/hw/hfi1/trace_tid.h
524
__entry->r_next_psn = flow->flow_state.r_next_psn;
drivers/infiniband/hw/hfi1/trace_tid.h
525
__entry->ib_spsn = flow->flow_state.ib_spsn;
drivers/infiniband/hw/hfi1/trace_tid.h
526
__entry->ib_lpsn = flow->flow_state.ib_lpsn;
drivers/infiniband/hw/hfi1/trace_tid.h
527
__entry->npagesets = flow->npagesets;
drivers/infiniband/hw/hfi1/trace_tid.h
528
__entry->tnode_cnt = flow->tnode_cnt;
drivers/infiniband/hw/hfi1/trace_tid.h
529
__entry->tidcnt = flow->tidcnt;
drivers/infiniband/hw/hfi1/trace_tid.h
530
__entry->tid_idx = flow->tid_idx;
drivers/infiniband/hw/hfi1/trace_tid.h
531
__entry->tid_offset = flow->tid_offset;
drivers/infiniband/hw/hfi1/trace_tid.h
532
__entry->length = flow->length;
drivers/infiniband/hw/hfi1/trace_tid.h
533
__entry->sent = flow->sent;
drivers/infiniband/hw/hfi1/trace_tid.h
560
TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow),
drivers/infiniband/hw/hfi1/trace_tid.h
561
TP_ARGS(qp, index, flow)
drivers/infiniband/hw/hfi1/trace_tid.h
566
TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow),
drivers/infiniband/hw/hfi1/trace_tid.h
567
TP_ARGS(qp, index, flow)
drivers/infiniband/hw/hfi1/trace_tid.h
572
TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow),
drivers/infiniband/hw/hfi1/trace_tid.h
573
TP_ARGS(qp, index, flow)
drivers/infiniband/hw/hfi1/trace_tid.h
578
TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow),
drivers/infiniband/hw/hfi1/trace_tid.h
579
TP_ARGS(qp, index, flow)
drivers/infiniband/hw/hfi1/trace_tid.h
584
TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow),
drivers/infiniband/hw/hfi1/trace_tid.h
585
TP_ARGS(qp, index, flow)
drivers/infiniband/hw/hfi1/trace_tid.h
590
TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow),
drivers/infiniband/hw/hfi1/trace_tid.h
591
TP_ARGS(qp, index, flow)
drivers/infiniband/hw/hfi1/trace_tid.h
596
TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow),
drivers/infiniband/hw/hfi1/trace_tid.h
597
TP_ARGS(qp, index, flow)
drivers/infiniband/hw/hfi1/trace_tid.h
602
TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow),
drivers/infiniband/hw/hfi1/trace_tid.h
603
TP_ARGS(qp, index, flow)
drivers/infiniband/hw/hfi1/trace_tid.h
608
TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow),
drivers/infiniband/hw/hfi1/trace_tid.h
609
TP_ARGS(qp, index, flow)
drivers/infiniband/hw/hfi1/trace_tid.h
614
TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow),
drivers/infiniband/hw/hfi1/trace_tid.h
615
TP_ARGS(qp, index, flow)
drivers/infiniband/hw/hfi1/trace_tid.h
620
TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow),
drivers/infiniband/hw/hfi1/trace_tid.h
621
TP_ARGS(qp, index, flow)
drivers/infiniband/hw/hfi1/trace_tid.h
626
TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow),
drivers/infiniband/hw/hfi1/trace_tid.h
627
TP_ARGS(qp, index, flow)
drivers/infiniband/hw/hfi1/trace_tid.h
632
TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow),
drivers/infiniband/hw/hfi1/trace_tid.h
633
TP_ARGS(qp, index, flow)
drivers/infiniband/hw/hfi1/trace_tx.h
906
__field(uint, flow)
drivers/infiniband/hw/hfi1/trace_tx.h
922
__entry->flow = txq->flow.as_int;
drivers/infiniband/hw/hfi1/trace_tx.h
938
__entry->flow,
drivers/infiniband/hw/hfi1/verbs.h
353
static inline u32 full_flow_psn(struct tid_rdma_flow *flow, u32 psn)
drivers/infiniband/hw/hfi1/verbs.h
355
return __full_flow_psn(&flow->flow_state, psn);
drivers/infiniband/hw/mlx4/main.c
2946
struct ib_flow_attr *flow;
drivers/infiniband/hw/mlx4/main.c
2952
flow = kzalloc(flow_size, GFP_KERNEL);
drivers/infiniband/hw/mlx4/main.c
2953
if (!flow)
drivers/infiniband/hw/mlx4/main.c
2955
flow->port = mqp->port;
drivers/infiniband/hw/mlx4/main.c
2956
flow->num_of_specs = 1;
drivers/infiniband/hw/mlx4/main.c
2957
flow->size = flow_size;
drivers/infiniband/hw/mlx4/main.c
2958
ib_spec = (struct ib_flow_spec_ib *)(flow + 1);
drivers/infiniband/hw/mlx4/main.c
2964
err = __mlx4_ib_create_flow(&mqp->ibqp, flow, MLX4_DOMAIN_NIC,
drivers/infiniband/hw/mlx4/main.c
2966
kfree(flow);
drivers/infiniband/hw/usnic/usnic_debugfs.c
131
"%u", qp_flow->flow->flow_id);
drivers/infiniband/hw/usnic/usnic_fwd.c
203
struct usnic_fwd_flow *flow;
drivers/infiniband/hw/usnic/usnic_fwd.c
213
flow = kzalloc_obj(*flow, GFP_ATOMIC);
drivers/infiniband/hw/usnic/usnic_fwd.c
214
if (!flow)
drivers/infiniband/hw/usnic/usnic_fwd.c
255
flow->flow_id = (uint32_t) a0;
drivers/infiniband/hw/usnic/usnic_fwd.c
256
flow->vnic_idx = uaction->vnic_idx;
drivers/infiniband/hw/usnic/usnic_fwd.c
257
flow->ufdev = ufdev;
drivers/infiniband/hw/usnic/usnic_fwd.c
263
return flow;
drivers/infiniband/hw/usnic/usnic_fwd.c
265
kfree(flow);
drivers/infiniband/hw/usnic/usnic_fwd.c
269
int usnic_fwd_dealloc_flow(struct usnic_fwd_flow *flow)
drivers/infiniband/hw/usnic/usnic_fwd.c
274
a0 = flow->flow_id;
drivers/infiniband/hw/usnic/usnic_fwd.c
276
status = usnic_fwd_devcmd(flow->ufdev, flow->vnic_idx,
drivers/infiniband/hw/usnic/usnic_fwd.c
281
flow->flow_id, flow->vnic_idx,
drivers/infiniband/hw/usnic/usnic_fwd.c
282
flow->ufdev->name, status);
drivers/infiniband/hw/usnic/usnic_fwd.c
285
flow->ufdev->name, flow->vnic_idx,
drivers/infiniband/hw/usnic/usnic_fwd.c
286
flow->flow_id, status);
drivers/infiniband/hw/usnic/usnic_fwd.c
296
flow->ufdev->name, flow->vnic_idx,
drivers/infiniband/hw/usnic/usnic_fwd.c
297
flow->flow_id);
drivers/infiniband/hw/usnic/usnic_fwd.c
300
kfree(flow);
drivers/infiniband/hw/usnic/usnic_fwd.h
93
int usnic_fwd_dealloc_flow(struct usnic_fwd_flow *flow);
drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c
211
struct usnic_fwd_flow *flow;
drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c
228
flow = usnic_fwd_alloc_flow(qp_grp->ufdev, &filter, &uaction);
drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c
229
if (IS_ERR_OR_NULL(flow)) {
drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c
230
err = flow ? PTR_ERR(flow) : -EFAULT;
drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c
240
qp_flow->flow = flow;
drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c
247
usnic_fwd_dealloc_flow(flow);
drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c
255
usnic_fwd_dealloc_flow(qp_flow->flow);
drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c
271
struct usnic_fwd_flow *flow;
drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c
301
flow = usnic_fwd_alloc_flow(qp_grp->ufdev, &filter, &uaction);
drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c
302
if (IS_ERR_OR_NULL(flow)) {
drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c
303
err = flow ? PTR_ERR(flow) : -EFAULT;
drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c
313
qp_flow->flow = flow;
drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c
320
usnic_fwd_dealloc_flow(flow);
drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c
328
usnic_fwd_dealloc_flow(qp_flow->flow);
drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c
89
default_flow->flow->flow_id);
drivers/infiniband/hw/usnic/usnic_ib_qp_grp.h
69
struct usnic_fwd_flow *flow;
drivers/media/platform/amphion/vpu.h
357
void vpu_inst_record_flow(struct vpu_inst *inst, u32 flow);
drivers/media/platform/amphion/vpu_dbg.c
514
void vpu_inst_record_flow(struct vpu_inst *inst, u32 flow)
drivers/media/platform/amphion/vpu_dbg.c
519
inst->flows[inst->flow_idx] = flow;
drivers/mmc/core/sdio_uart.c
425
tty->flow.stopped || tty->hw_stopped) {
drivers/net/bonding/bond_main.c
4220
static u32 bond_ip_hash(u32 hash, struct flow_keys *flow, int xmit_policy)
drivers/net/bonding/bond_main.c
4222
hash ^= (__force u32)flow_get_u32_dst(flow) ^
drivers/net/bonding/bond_main.c
4223
(__force u32)flow_get_u32_src(flow);
drivers/net/bonding/bond_main.c
4242
struct flow_keys flow;
drivers/net/bonding/bond_main.c
4249
!bond_flow_dissect(bond, skb, data, l2_proto, nhoff, hlen, &flow))
drivers/net/bonding/bond_main.c
4256
if (flow.icmp.id)
drivers/net/bonding/bond_main.c
4257
memcpy(&hash, &flow.icmp, sizeof(hash));
drivers/net/bonding/bond_main.c
4259
memcpy(&hash, &flow.ports.ports, sizeof(hash));
drivers/net/bonding/bond_main.c
4262
return bond_ip_hash(hash, &flow, bond->params.xmit_policy);
drivers/net/bonding/bond_main.c
5447
static void bond_sk_to_flow(struct sock *sk, struct flow_keys *flow)
drivers/net/bonding/bond_main.c
5454
flow->control.addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS;
drivers/net/bonding/bond_main.c
5455
flow->addrs.v6addrs.src = inet6_sk(sk)->saddr;
drivers/net/bonding/bond_main.c
5456
flow->addrs.v6addrs.dst = sk->sk_v6_daddr;
drivers/net/bonding/bond_main.c
5462
flow->control.addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS;
drivers/net/bonding/bond_main.c
5463
flow->addrs.v4addrs.src = inet_sk(sk)->inet_rcv_saddr;
drivers/net/bonding/bond_main.c
5464
flow->addrs.v4addrs.dst = inet_sk(sk)->inet_daddr;
drivers/net/bonding/bond_main.c
5468
flow->ports.src = inet_sk(sk)->inet_sport;
drivers/net/bonding/bond_main.c
5469
flow->ports.dst = inet_sk(sk)->inet_dport;
drivers/net/bonding/bond_main.c
5482
struct flow_keys flow;
drivers/net/bonding/bond_main.c
5485
bond_sk_to_flow(sk, &flow);
drivers/net/bonding/bond_main.c
5488
memcpy(&hash, &flow.ports.ports, sizeof(hash));
drivers/net/bonding/bond_main.c
5490
return bond_ip_hash(hash, &flow, BOND_XMIT_POLICY_LAYER34);
drivers/net/caif/caif_serial.c
90
ser->tty->flow.stopped << 5 |
drivers/net/caif/caif_serial.c
91
ser->tty->flow.tco_stopped << 3 |
drivers/net/dsa/bcm_sf2_cfp.c
1051
static void bcm_sf2_invert_masks(struct ethtool_rx_flow_spec *flow)
drivers/net/dsa/bcm_sf2_cfp.c
1055
for (i = 0; i < sizeof(flow->m_u); i++)
drivers/net/dsa/bcm_sf2_cfp.c
1056
flow->m_u.hdata[i] ^= 0xff;
drivers/net/dsa/bcm_sf2_cfp.c
1058
flow->m_ext.vlan_etype ^= cpu_to_be16(~0);
drivers/net/dsa/bcm_sf2_cfp.c
1059
flow->m_ext.vlan_tci ^= cpu_to_be16(~0);
drivers/net/dsa/bcm_sf2_cfp.c
1060
flow->m_ext.data[0] ^= cpu_to_be32(~0);
drivers/net/dsa/bcm_sf2_cfp.c
1061
flow->m_ext.data[1] ^= cpu_to_be32(~0);
drivers/net/dsa/bcm_sf2_cfp.c
355
struct ethtool_rx_flow_rule *flow;
drivers/net/dsa/bcm_sf2_cfp.c
394
flow = ethtool_rx_flow_rule_create(&input);
drivers/net/dsa/bcm_sf2_cfp.c
395
if (IS_ERR(flow))
drivers/net/dsa/bcm_sf2_cfp.c
396
return PTR_ERR(flow);
drivers/net/dsa/bcm_sf2_cfp.c
398
flow_rule_match_ipv4_addrs(flow->rule, &ipv4);
drivers/net/dsa/bcm_sf2_cfp.c
399
flow_rule_match_ports(flow->rule, &ports);
drivers/net/dsa/bcm_sf2_cfp.c
400
flow_rule_match_ip(flow->rule, &ip);
drivers/net/dsa/bcm_sf2_cfp.c
478
ethtool_rx_flow_rule_destroy(flow);
drivers/net/dsa/bcm_sf2_cfp.c
636
struct ethtool_rx_flow_rule *flow;
drivers/net/dsa/bcm_sf2_cfp.c
703
flow = ethtool_rx_flow_rule_create(&input);
drivers/net/dsa/bcm_sf2_cfp.c
704
if (IS_ERR(flow)) {
drivers/net/dsa/bcm_sf2_cfp.c
705
ret = PTR_ERR(flow);
drivers/net/dsa/bcm_sf2_cfp.c
708
flow_rule_match_ipv6_addrs(flow->rule, &ipv6);
drivers/net/dsa/bcm_sf2_cfp.c
709
flow_rule_match_ports(flow->rule, &ports);
drivers/net/dsa/bcm_sf2_cfp.c
840
ethtool_rx_flow_rule_destroy(flow);
drivers/net/ethernet/agere/et131x.c
1145
if (adapter->flow == FLOW_NONE)
drivers/net/ethernet/agere/et131x.c
1314
adapter->flow = FLOW_NONE;
drivers/net/ethernet/agere/et131x.c
1322
adapter->flow = adapter->wanted_flow;
drivers/net/ethernet/agere/et131x.c
1325
adapter->flow = FLOW_BOTH;
drivers/net/ethernet/agere/et131x.c
1327
adapter->flow = FLOW_NONE;
drivers/net/ethernet/agere/et131x.c
1329
adapter->flow = FLOW_NONE;
drivers/net/ethernet/agere/et131x.c
1332
adapter->flow = FLOW_RXONLY;
drivers/net/ethernet/agere/et131x.c
1334
adapter->flow = FLOW_NONE;
drivers/net/ethernet/agere/et131x.c
1704
if (adapter->flow == FLOW_TXONLY || adapter->flow == FLOW_BOTH)
drivers/net/ethernet/agere/et131x.c
3414
if (adapter->flow == FLOW_TXONLY || adapter->flow == FLOW_BOTH)
drivers/net/ethernet/agere/et131x.c
3477
if (adapter->flow == FLOW_TXONLY || adapter->flow == FLOW_BOTH) {
drivers/net/ethernet/agere/et131x.c
478
u8 flow; /* flow control validated by the far-end */
drivers/net/ethernet/agere/et131x.c
893
if (adapter->flow == FLOW_RXONLY || adapter->flow == FLOW_BOTH)
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
1318
const char *flow;
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
1337
flow = "ON - receive & transmit";
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
1339
flow = "ON - receive";
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
1341
flow = "ON - transmit";
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
1344
flow = "none";
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
1347
cur_data.line_speed, duplex, flow);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1005
bnxt_tc_get_ref_flow_handle(struct bnxt *bp, struct bnxt_tc_flow *flow,
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1015
&flow->l2_key);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1045
static bool bnxt_tc_can_offload(struct bnxt *bp, struct bnxt_tc_flow *flow)
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1048
if ((flow->flags & BNXT_TC_FLOW_FLAGS_PORTS) &&
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1049
(flow->l4_key.ip_proto != IPPROTO_TCP &&
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1050
flow->l4_key.ip_proto != IPPROTO_UDP)) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1052
flow->l4_key.ip_proto);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1057
if (bits_set(&flow->l2_key.smac, sizeof(flow->l2_key.smac)) &&
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1058
!is_exactmatch(flow->l2_mask.smac, sizeof(flow->l2_mask.smac))) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1062
if (bits_set(&flow->l2_key.dmac, sizeof(flow->l2_key.dmac)) &&
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1063
!is_exactmatch(&flow->l2_mask.dmac, sizeof(flow->l2_mask.dmac))) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1069
if (bits_set(&flow->l2_key.inner_vlan_tci,
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1070
sizeof(flow->l2_key.inner_vlan_tci)) &&
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1071
!is_vlan_tci_allowed(flow->l2_mask.inner_vlan_tci,
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1072
flow->l2_key.inner_vlan_tci)) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1076
if (bits_set(&flow->l2_key.inner_vlan_tpid,
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1077
sizeof(flow->l2_key.inner_vlan_tpid)) &&
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1078
!is_exactmatch(&flow->l2_mask.inner_vlan_tpid,
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1079
sizeof(flow->l2_mask.inner_vlan_tpid))) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1085
if (!is_exactmatch(&flow->l2_mask.ether_type,
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1086
sizeof(flow->l2_mask.ether_type))) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1154
struct bnxt_tc_flow *flow,
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1235
struct flowi4 flow = { {0} };
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1241
flow.flowi4_proto = IPPROTO_UDP;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1242
flow.fl4_dport = tun_key->tp_dst;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1243
flow.daddr = tun_key->u.ipv4.dst;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1245
rt = ip_route_output_key(dev_net(real_dst_dev), &flow);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1247
netdev_info(bp->dev, "no route to %pI4b\n", &flow.daddr);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1274
netdev_name(dst_dev), &flow.daddr,
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1280
nbr = dst_neigh_lookup(&rt->dst, &flow.daddr);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1283
&flow.daddr);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1288
tun_key->u.ipv4.src = flow.saddr;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1304
static int bnxt_tc_get_decap_handle(struct bnxt *bp, struct bnxt_tc_flow *flow,
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1308
struct ip_tunnel_key *decap_key = &flow->tun_key;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1338
tun_key.u.ipv4.dst = flow->tun_key.u.ipv4.src;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1339
tun_key.tp_dst = flow->tun_key.tp_dst;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1352
flow->flags |= BNXT_TC_FLOW_FLAGS_TUNL_ETH_ADDRS;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1359
rc = bnxt_tc_get_ref_decap_handle(bp, flow, decap_l2_info, flow_node,
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1365
rc = hwrm_cfa_decap_filter_alloc(bp, flow, decap_l2_info,
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1402
static int bnxt_tc_get_encap_handle(struct bnxt *bp, struct bnxt_tc_flow *flow,
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1406
struct ip_tunnel_key *encap_key = &flow->actions.tun_encap_key;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1447
struct bnxt_tc_flow *flow,
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1450
if (flow->actions.flags & BNXT_TC_ACTION_FLAG_TUNNEL_DECAP)
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1452
else if (flow->actions.flags & BNXT_TC_ACTION_FLAG_TUNNEL_ENCAP)
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1457
struct bnxt_tc_flow *flow,
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1461
if (flow->actions.flags & BNXT_TC_ACTION_FLAG_TUNNEL_DECAP)
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1462
return bnxt_tc_get_decap_handle(bp, flow, flow_node,
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1464
else if (flow->actions.flags & BNXT_TC_ACTION_FLAG_TUNNEL_ENCAP)
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1465
return bnxt_tc_get_encap_handle(bp, flow, flow_node,
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1482
bnxt_tc_put_tunnel_handle(bp, &flow_node->flow, flow_node);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1499
static void bnxt_tc_set_flow_dir(struct bnxt *bp, struct bnxt_tc_flow *flow,
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1502
flow->l2_key.dir = (bp->pf.fw_fid == src_fid) ? BNXT_DIR_RX : BNXT_DIR_TX;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1505
static void bnxt_tc_set_src_fid(struct bnxt *bp, struct bnxt_tc_flow *flow,
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1508
if (flow->actions.flags & BNXT_TC_ACTION_FLAG_TUNNEL_DECAP)
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1509
flow->src_fid = bp->pf.fw_fid;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1511
flow->src_fid = src_fid;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1532
struct bnxt_tc_flow *flow;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1544
flow = &new_node->flow;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1546
rc = bnxt_tc_parse_flow(bp, tc_flow_cmd, flow);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1550
bnxt_tc_set_src_fid(bp, flow, src_fid);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1551
bnxt_tc_set_flow_dir(bp, flow, flow->src_fid);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1553
if (!bnxt_tc_can_offload(bp, flow)) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1570
rc = bnxt_tc_get_ref_flow_handle(bp, flow, new_node, &ref_flow_handle);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1575
rc = bnxt_tc_get_tunnel_handle(bp, flow, new_node, &tunnel_handle);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1580
rc = bnxt_hwrm_cfa_flow_alloc(bp, flow, ref_flow_handle,
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1585
flow->lastused = jiffies;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1586
spin_lock_init(&flow->stats_lock);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1599
bnxt_tc_put_tunnel_handle(bp, flow, new_node);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1633
struct bnxt_tc_flow *flow;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1642
flow = &flow_node->flow;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1643
curr_stats = &flow->stats;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1644
prev_stats = &flow->prev_stats;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1646
spin_lock(&flow->stats_lock);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1650
lastused = flow->lastused;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1651
spin_unlock(&flow->stats_lock);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1672
if (flow_node->flow.l2_key.dir == BNXT_DIR_RX)
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1773
struct bnxt_tc_flow *flow = &flow_node->flow;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1775
spin_lock(&flow->stats_lock);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1776
bnxt_flow_stats_accum(tc_info, &flow->stats,
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1778
if (flow->stats.packets != flow->prev_stats.packets)
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1779
flow->lastused = jiffies;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1780
spin_unlock(&flow->stats_lock);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
370
struct bnxt_tc_flow *flow)
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
391
flow->l2_key.ether_type = match.key->n_proto;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
392
flow->l2_mask.ether_type = match.mask->n_proto;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
396
flow->l4_key.ip_proto = match.key->ip_proto;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
397
flow->l4_mask.ip_proto = match.mask->ip_proto;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
405
flow->flags |= BNXT_TC_FLOW_FLAGS_ETH_ADDRS;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
406
ether_addr_copy(flow->l2_key.dmac, match.key->dst);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
407
ether_addr_copy(flow->l2_mask.dmac, match.mask->dst);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
408
ether_addr_copy(flow->l2_key.smac, match.key->src);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
409
ether_addr_copy(flow->l2_mask.smac, match.mask->src);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
416
flow->l2_key.inner_vlan_tci =
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
419
flow->l2_mask.inner_vlan_tci =
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
422
flow->l2_key.inner_vlan_tpid = htons(ETH_P_8021Q);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
423
flow->l2_mask.inner_vlan_tpid = htons(0xffff);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
424
flow->l2_key.num_vlans = 1;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
431
flow->flags |= BNXT_TC_FLOW_FLAGS_IPV4_ADDRS;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
432
flow->l3_key.ipv4.daddr.s_addr = match.key->dst;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
433
flow->l3_mask.ipv4.daddr.s_addr = match.mask->dst;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
434
flow->l3_key.ipv4.saddr.s_addr = match.key->src;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
435
flow->l3_mask.ipv4.saddr.s_addr = match.mask->src;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
440
flow->flags |= BNXT_TC_FLOW_FLAGS_IPV6_ADDRS;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
441
flow->l3_key.ipv6.daddr = match.key->dst;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
442
flow->l3_mask.ipv6.daddr = match.mask->dst;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
443
flow->l3_key.ipv6.saddr = match.key->src;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
444
flow->l3_mask.ipv6.saddr = match.mask->src;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
451
flow->flags |= BNXT_TC_FLOW_FLAGS_PORTS;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
452
flow->l4_key.ports.dport = match.key->dst;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
453
flow->l4_mask.ports.dport = match.mask->dst;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
454
flow->l4_key.ports.sport = match.key->src;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
455
flow->l4_mask.ports.sport = match.mask->src;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
462
flow->flags |= BNXT_TC_FLOW_FLAGS_ICMP;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
463
flow->l4_key.icmp.type = match.key->type;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
464
flow->l4_key.icmp.code = match.key->code;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
465
flow->l4_mask.icmp.type = match.mask->type;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
466
flow->l4_mask.icmp.code = match.mask->code;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
473
flow->flags |= BNXT_TC_FLOW_FLAGS_TUNL_IPV4_ADDRS;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
474
flow->tun_key.u.ipv4.dst = match.key->dst;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
475
flow->tun_mask.u.ipv4.dst = match.mask->dst;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
476
flow->tun_key.u.ipv4.src = match.key->src;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
477
flow->tun_mask.u.ipv4.src = match.mask->src;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
487
flow->flags |= BNXT_TC_FLOW_FLAGS_TUNL_ID;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
488
flow->tun_key.tun_id = key32_to_tunnel_id(match.key->keyid);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
489
flow->tun_mask.tun_id = key32_to_tunnel_id(match.mask->keyid);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
496
flow->flags |= BNXT_TC_FLOW_FLAGS_TUNL_PORTS;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
497
flow->tun_key.tp_dst = match.key->dst;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
498
flow->tun_mask.tp_dst = match.mask->dst;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
499
flow->tun_key.tp_src = match.key->src;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
500
flow->tun_mask.tp_src = match.mask->src;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
503
return bnxt_tc_parse_actions(bp, &flow->actions, &rule->action,
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
589
static int bnxt_hwrm_cfa_flow_alloc(struct bnxt *bp, struct bnxt_tc_flow *flow,
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
594
struct bnxt_tc_actions *actions = &flow->actions;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
595
struct bnxt_tc_l3_key *l3_mask = &flow->l3_mask;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
596
struct bnxt_tc_l3_key *l3_key = &flow->l3_key;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
606
req->src_fid = cpu_to_le16(flow->src_fid);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
686
req->ethertype = flow->l2_key.ether_type;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
687
req->ip_proto = flow->l4_key.ip_proto;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
689
if (flow->flags & BNXT_TC_FLOW_FLAGS_ETH_ADDRS) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
690
memcpy(req->dmac, flow->l2_key.dmac, ETH_ALEN);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
691
memcpy(req->smac, flow->l2_key.smac, ETH_ALEN);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
694
if (flow->l2_key.num_vlans > 0) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
700
req->outer_vlan_tci = flow->l2_key.inner_vlan_tci;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
705
is_wildcard(&flow->l4_mask, sizeof(flow->l4_mask))) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
708
flow_flags |= flow->l2_key.ether_type == htons(ETH_P_IP) ?
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
712
if (flow->flags & BNXT_TC_FLOW_FLAGS_IPV4_ADDRS) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
719
} else if (flow->flags & BNXT_TC_FLOW_FLAGS_IPV6_ADDRS) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
731
if (flow->flags & BNXT_TC_FLOW_FLAGS_PORTS) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
732
req->l4_src_port = flow->l4_key.ports.sport;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
733
req->l4_src_port_mask = flow->l4_mask.ports.sport;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
734
req->l4_dst_port = flow->l4_key.ports.dport;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
735
req->l4_dst_port_mask = flow->l4_mask.ports.dport;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
736
} else if (flow->flags & BNXT_TC_FLOW_FLAGS_ICMP) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
738
req->l4_src_port = htons(flow->l4_key.icmp.type);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
739
req->l4_src_port_mask = htons(flow->l4_mask.icmp.type);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
740
req->l4_dst_port = htons(flow->l4_key.icmp.code);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
741
req->l4_dst_port_mask = htons(flow->l4_mask.icmp.code);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
794
struct bnxt_tc_flow *flow,
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
800
struct ip_tunnel_key *tun_key = &flow->tun_key;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
815
if (flow->flags & BNXT_TC_FLOW_FLAGS_TUNL_ID) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
821
if (flow->flags & BNXT_TC_FLOW_FLAGS_TUNL_ETH_ADDRS) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
833
if (flow->flags & BNXT_TC_FLOW_FLAGS_TUNL_IPV4_ADDRS) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
843
if (flow->flags & BNXT_TC_FLOW_FLAGS_TUNL_PORTS) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.h
194
struct bnxt_tc_flow flow;
drivers/net/ethernet/calxeda/xgmac.c
647
unsigned int flow = 0;
drivers/net/ethernet/calxeda/xgmac.c
654
flow |= XGMAC_FLOW_CTRL_RFE;
drivers/net/ethernet/calxeda/xgmac.c
656
flow |= XGMAC_FLOW_CTRL_TFE;
drivers/net/ethernet/calxeda/xgmac.c
658
flow |= XGMAC_FLOW_CTRL_PLT | XGMAC_FLOW_CTRL_UP;
drivers/net/ethernet/calxeda/xgmac.c
659
flow |= (PAUSE_TIME << XGMAC_FLOW_CTRL_PT_SHIFT);
drivers/net/ethernet/calxeda/xgmac.c
661
writel(flow, priv->base + XGMAC_FLOW_CTRL);
drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c
1879
struct ethtool_rx_flow_rule *flow;
drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c
1903
flow = ethtool_rx_flow_rule_create(&input);
drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c
1904
if (IS_ERR(flow)) {
drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c
1905
ret = PTR_ERR(flow);
drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c
1911
ret = cxgb4_flow_rule_replace(netdev, flow->rule, cmd->fs.location,
drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c
1928
ethtool_rx_flow_rule_destroy(flow);
drivers/net/ethernet/freescale/gianfar_ethtool.c
1217
static int gfar_check_capability(struct ethtool_rx_flow_spec *flow,
drivers/net/ethernet/freescale/gianfar_ethtool.c
1221
if (flow->flow_type & FLOW_EXT) {
drivers/net/ethernet/freescale/gianfar_ethtool.c
1222
if (~flow->m_ext.data[0] || ~flow->m_ext.data[1])
drivers/net/ethernet/freescale/gianfar_ethtool.c
1225
if (~flow->m_ext.vlan_etype)
drivers/net/ethernet/freescale/gianfar_ethtool.c
1229
if (flow->flow_type == IP_USER_FLOW)
drivers/net/ethernet/freescale/gianfar_ethtool.c
1230
if (flow->h_u.usr_ip4_spec.ip_ver != ETH_RX_NFC_IP4)
drivers/net/ethernet/freescale/gianfar_ethtool.c
1277
static void gfar_invert_masks(struct ethtool_rx_flow_spec *flow)
drivers/net/ethernet/freescale/gianfar_ethtool.c
1281
for (i = 0; i < sizeof(flow->m_u); i++)
drivers/net/ethernet/freescale/gianfar_ethtool.c
1282
flow->m_u.hdata[i] ^= 0xFF;
drivers/net/ethernet/freescale/gianfar_ethtool.c
1284
flow->m_ext.vlan_etype ^= cpu_to_be16(0xFFFF);
drivers/net/ethernet/freescale/gianfar_ethtool.c
1285
flow->m_ext.vlan_tci ^= cpu_to_be16(0xFFFF);
drivers/net/ethernet/freescale/gianfar_ethtool.c
1286
flow->m_ext.data[0] ^= cpu_to_be32(~0);
drivers/net/ethernet/freescale/gianfar_ethtool.c
1287
flow->m_ext.data[1] ^= cpu_to_be32(~0);
drivers/net/ethernet/freescale/gianfar_ethtool.c
1291
struct ethtool_rx_flow_spec *flow)
drivers/net/ethernet/freescale/gianfar_ethtool.c
1299
memcpy(&temp->fs, flow, sizeof(temp->fs));
drivers/net/ethernet/freescale/gianfar_ethtool.c
1314
if (comp->fs.location > flow->location) {
drivers/net/ethernet/freescale/gianfar_ethtool.c
1318
if (comp->fs.location == flow->location) {
drivers/net/ethernet/freescale/gianfar_ethtool.c
1321
flow->location);
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
2665
struct flow_cls_offload *flow)
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
2667
int tc = tc_classid_to_hwtc(priv->netdev, flow->classid);
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
2670
switch (flow->command) {
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
2673
return h->ae_algo->ops->add_cls_flower(h, flow, tc);
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
2677
return h->ae_algo->ops->del_cls_flower(h, flow);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7209
static void hclge_get_cls_key_basic(const struct flow_rule *flow,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7212
if (flow_rule_match_key(flow, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7216
flow_rule_match_basic(flow, &match);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7234
static void hclge_get_cls_key_mac(const struct flow_rule *flow,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7237
if (flow_rule_match_key(flow, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7240
flow_rule_match_eth_addrs(flow, &match);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7251
static void hclge_get_cls_key_vlan(const struct flow_rule *flow,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7254
if (flow_rule_match_key(flow, FLOW_DISSECTOR_KEY_VLAN)) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7257
flow_rule_match_vlan(flow, &match);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7267
static int hclge_get_cls_key_ip(const struct flow_rule *flow,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7273
if (flow_rule_match_key(flow, FLOW_DISSECTOR_KEY_CONTROL)) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7276
flow_rule_match_control(flow, &match);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7286
flow_rule_match_ipv4_addrs(flow, &match);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7296
flow_rule_match_ipv6_addrs(flow, &match);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7313
static void hclge_get_cls_key_port(const struct flow_rule *flow,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7316
if (flow_rule_match_key(flow, FLOW_DISSECTOR_KEY_PORTS)) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7319
flow_rule_match_ports(flow, &match);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7335
struct flow_rule *flow = flow_cls_offload_flow_rule(cls_flower);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7337
struct flow_dissector *dissector = flow->match.dissector;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7353
hclge_get_cls_key_basic(flow, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7354
hclge_get_cls_key_mac(flow, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7355
hclge_get_cls_key_vlan(flow, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7357
ret = hclge_get_cls_key_ip(flow, rule, extack);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7361
hclge_get_cls_key_port(flow, rule);
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
755
static int iavf_fltr_to_ethtool_flow(enum iavf_fdir_flow_type flow)
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
757
switch (flow) {
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
233
struct ice_esw_br_flow *flow;
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
236
flow = kzalloc_obj(*flow);
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
237
if (!flow)
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
259
flow->fwd_rule = fwd_rule;
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
260
flow->guard_rule = guard_rule;
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
262
return flow;
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
267
kfree(flow);
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
286
ice_eswitch_br_flow_delete(struct ice_pf *pf, struct ice_esw_br_flow *flow)
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
291
err = ice_eswitch_br_rule_delete(&pf->hw, flow->fwd_rule);
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
296
err = ice_eswitch_br_rule_delete(&pf->hw, flow->guard_rule);
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
301
kfree(flow);
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
338
ice_eswitch_br_flow_delete(pf, fdb_entry->flow);
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
397
struct ice_esw_br_flow *flow;
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
427
flow = ice_eswitch_br_flow_create(dev, hw, br_port->vsi_idx,
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
429
if (IS_ERR(flow)) {
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
430
err = PTR_ERR(flow);
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
437
fdb_entry->flow = flow;
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
460
ice_eswitch_br_flow_delete(pf, flow);
drivers/net/ethernet/intel/ice/ice_eswitch_br.h
33
struct ice_esw_br_flow *flow;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
1654
enum ice_fltr_ptype flow;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
1669
for (flow = ICE_FLTR_PTYPE_NONF_NONE; flow < ICE_FLTR_PTYPE_MAX;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
1670
flow++)
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
1671
if (hw->fdir_prof[flow])
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
1672
ice_fdir_rem_flow(hw, ICE_BLK_FD, flow);
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
300
int status, flow;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
305
for (flow = 0; flow < ICE_FLTR_PTYPE_MAX; flow++) {
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
306
struct ice_fd_hw_prof *prof = hw->fdir_prof[flow];
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
347
ice_fdir_get_hw_prof(struct ice_hw *hw, enum ice_block blk, int flow)
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
350
return hw->fdir_prof[flow];
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
362
ice_fdir_erase_flow_from_hw(struct ice_hw *hw, enum ice_block blk, int flow)
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
364
struct ice_fd_hw_prof *prof = ice_fdir_get_hw_prof(hw, blk, flow);
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
398
int flow = (int)flow_type & ~FLOW_EXT;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
402
prof = ice_fdir_get_hw_prof(hw, blk, flow);
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
406
ice_fdir_erase_flow_from_hw(hw, blk, flow);
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
41
static int ice_fltr_to_ethtool_flow(enum ice_fltr_ptype flow)
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
424
int flow;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
427
for (flow = 0; flow < ICE_FLTR_PTYPE_MAX; flow++)
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
428
ice_fdir_erase_flow_from_hw(hw, ICE_BLK_FD, flow);
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
43
switch (flow) {
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
437
int flow;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
439
for (flow = 0; flow < ICE_FLTR_PTYPE_MAX; flow++) {
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
442
if (!hw->fdir_prof[flow] || !hw->fdir_prof[flow]->cnt)
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
449
prof = hw->fdir_prof[flow];
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
467
flow);
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
577
ice_fdir_alloc_flow_prof(struct ice_hw *hw, enum ice_fltr_ptype flow)
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
591
if (!hw->fdir_prof[flow]) {
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
592
hw->fdir_prof[flow] = devm_kzalloc(ice_hw_to_dev(hw),
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
595
if (!hw->fdir_prof[flow])
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
633
enum ice_fltr_ptype flow, enum ice_fd_hw_seg tun)
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
655
err = ice_fdir_alloc_flow_prof(hw, flow);
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
659
hw_prof = hw->fdir_prof[flow];
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
672
if (hw->fdir_fltr_cnt[flow]) {
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
677
if (ice_is_arfs_using_perfect_flow(hw, flow)) {
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
679
flow);
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
684
ice_fdir_rem_flow(hw, ICE_BLK_FD, flow);
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
849
ice_create_init_fdir_rule(struct ice_pf *pf, enum ice_fltr_ptype flow)
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
857
if (hw->fdir_prof && hw->fdir_prof[flow] &&
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
858
hw->fdir_prof[flow]->fdir_seg[0])
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
872
if (flow == ICE_FLTR_PTYPE_NONF_IPV4_TCP)
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
875
else if (flow == ICE_FLTR_PTYPE_NONF_IPV4_UDP)
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
878
else if (flow == ICE_FLTR_PTYPE_NONF_IPV6_TCP)
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
881
else if (flow == ICE_FLTR_PTYPE_NONF_IPV6_UDP)
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
890
ret = ice_fdir_set_hw_fltr_rule(pf, seg, flow, ICE_FD_HW_SEG_NON_TUN);
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
897
ret = ice_fdir_set_hw_fltr_rule(pf, tun_seg, flow, ICE_FD_HW_SEG_TUN);
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
904
set_bit(flow, hw->fdir_perfect_fltr);
drivers/net/ethernet/intel/ice/ice_fdir.c
1126
bool ice_fdir_has_frag(enum ice_fltr_ptype flow)
drivers/net/ethernet/intel/ice/ice_fdir.c
1128
if (flow == ICE_FLTR_PTYPE_NONF_IPV4_OTHER)
drivers/net/ethernet/intel/ice/ice_fdir.c
1185
ice_fdir_update_cntrs(struct ice_hw *hw, enum ice_fltr_ptype flow, bool add)
drivers/net/ethernet/intel/ice/ice_fdir.c
1192
if (flow == ICE_FLTR_PTYPE_NONF_NONE || flow >= ICE_FLTR_PTYPE_MAX)
drivers/net/ethernet/intel/ice/ice_fdir.c
1193
ice_debug(hw, ICE_DBG_SW, "Unknown filter type %d\n", flow);
drivers/net/ethernet/intel/ice/ice_fdir.c
1195
hw->fdir_fltr_cnt[flow] += incr;
drivers/net/ethernet/intel/ice/ice_fdir.c
861
enum ice_fltr_ptype flow;
drivers/net/ethernet/intel/ice/ice_fdir.c
869
flow = ICE_FLTR_PTYPE_NONF_IPV4_TCP;
drivers/net/ethernet/intel/ice/ice_fdir.c
872
flow = ICE_FLTR_PTYPE_NONF_IPV4_UDP;
drivers/net/ethernet/intel/ice/ice_fdir.c
875
flow = ICE_FLTR_PTYPE_NONF_IPV4_SCTP;
drivers/net/ethernet/intel/ice/ice_fdir.c
878
flow = ICE_FLTR_PTYPE_NONF_IPV4_OTHER;
drivers/net/ethernet/intel/ice/ice_fdir.c
884
flow = ICE_FLTR_PTYPE_NONF_IPV6_TCP;
drivers/net/ethernet/intel/ice/ice_fdir.c
887
flow = ICE_FLTR_PTYPE_NONF_IPV6_UDP;
drivers/net/ethernet/intel/ice/ice_fdir.c
890
flow = ICE_FLTR_PTYPE_NONF_IPV6_SCTP;
drivers/net/ethernet/intel/ice/ice_fdir.c
893
flow = ICE_FLTR_PTYPE_NONF_IPV6_OTHER;
drivers/net/ethernet/intel/ice/ice_fdir.c
897
flow = input->flow_type;
drivers/net/ethernet/intel/ice/ice_fdir.c
901
if (ice_fdir_pkt[idx].flow == flow)
drivers/net/ethernet/intel/ice/ice_fdir.c
923
switch (flow) {
drivers/net/ethernet/intel/ice/ice_fdir.h
205
enum ice_fltr_ptype flow;
drivers/net/ethernet/intel/ice/ice_fdir.h
227
bool ice_fdir_has_frag(enum ice_fltr_ptype flow);
drivers/net/ethernet/intel/ice/ice_fdir.h
231
ice_fdir_update_cntrs(struct ice_hw *hw, enum ice_fltr_ptype flow, bool add);
drivers/net/ethernet/intel/ice/ice_main.c
8583
int flow;
drivers/net/ethernet/intel/ice/ice_main.c
8589
for (flow = 0; flow < ICE_FLTR_PTYPE_MAX; flow++) {
drivers/net/ethernet/intel/ice/ice_main.c
8594
if (!(hw->fdir_prof && hw->fdir_prof[flow] &&
drivers/net/ethernet/intel/ice/ice_main.c
8595
hw->fdir_prof[flow]->cnt))
drivers/net/ethernet/intel/ice/ice_main.c
8603
prof = hw->fdir_prof[flow];
drivers/net/ethernet/intel/ice/ice_main.c
8611
vsi->idx, flow);
drivers/net/ethernet/intel/ice/ice_main.c
8624
flow);
drivers/net/ethernet/intel/ice/virt/fdir.c
172
ice_vc_fdir_alloc_prof(struct ice_vf *vf, enum ice_fltr_ptype flow)
drivers/net/ethernet/intel/ice/virt/fdir.c
185
if (!fdir->fdir_prof[flow]) {
drivers/net/ethernet/intel/ice/virt/fdir.c
186
fdir->fdir_prof[flow] = devm_kzalloc(ice_pf_to_dev(vf->pf),
drivers/net/ethernet/intel/ice/virt/fdir.c
189
if (!fdir->fdir_prof[flow])
drivers/net/ethernet/intel/ice/virt/fdir.c
202
ice_vc_fdir_free_prof(struct ice_vf *vf, enum ice_fltr_ptype flow)
drivers/net/ethernet/intel/ice/virt/fdir.c
209
if (!fdir->fdir_prof[flow])
drivers/net/ethernet/intel/ice/virt/fdir.c
212
devm_kfree(ice_pf_to_dev(vf->pf), fdir->fdir_prof[flow]);
drivers/net/ethernet/intel/ice/virt/fdir.c
213
fdir->fdir_prof[flow] = NULL;
drivers/net/ethernet/intel/ice/virt/fdir.c
223
enum ice_fltr_ptype flow;
drivers/net/ethernet/intel/ice/virt/fdir.c
228
for (flow = ICE_FLTR_PTYPE_NONF_NONE; flow < ICE_FLTR_PTYPE_MAX; flow++)
drivers/net/ethernet/intel/ice/virt/fdir.c
229
ice_vc_fdir_free_prof(vf, flow);
drivers/net/ethernet/intel/ice/virt/fdir.c
2319
enum ice_fltr_ptype flow;
drivers/net/ethernet/intel/ice/virt/fdir.c
2389
flow = input->flow_type;
drivers/net/ethernet/intel/ice/virt/fdir.c
2390
if (fdir->fdir_fltr_cnt[flow][is_tun] == 1)
drivers/net/ethernet/intel/ice/virt/fdir.c
2391
ice_vc_fdir_rem_prof(vf, flow, is_tun);
drivers/net/ethernet/intel/ice/virt/fdir.c
336
enum ice_fltr_ptype flow = conf->input.flow_type;
drivers/net/ethernet/intel/ice/virt/fdir.c
340
switch (flow) {
drivers/net/ethernet/intel/ice/virt/fdir.c
403
flow, vf->vf_id);
drivers/net/ethernet/intel/ice/virt/fdir.c
463
flow, vf->vf_id);
drivers/net/ethernet/intel/ice/virt/fdir.c
477
ice_vc_fdir_rem_prof(struct ice_vf *vf, enum ice_fltr_ptype flow, int tun)
drivers/net/ethernet/intel/ice/virt/fdir.c
490
if (!fdir->fdir_prof || !fdir->fdir_prof[flow])
drivers/net/ethernet/intel/ice/virt/fdir.c
493
vf_prof = fdir->fdir_prof[flow];
drivers/net/ethernet/intel/ice/virt/fdir.c
502
if (!fdir->prof_entry_cnt[flow][tun])
drivers/net/ethernet/intel/ice/virt/fdir.c
505
for (i = 0; i < fdir->prof_entry_cnt[flow][tun]; i++)
drivers/net/ethernet/intel/ice/virt/fdir.c
522
fdir->prof_entry_cnt[flow][tun] = 0;
drivers/net/ethernet/intel/ice/virt/fdir.c
531
enum ice_fltr_ptype flow;
drivers/net/ethernet/intel/ice/virt/fdir.c
533
for (flow = ICE_FLTR_PTYPE_NONF_NONE;
drivers/net/ethernet/intel/ice/virt/fdir.c
534
flow < ICE_FLTR_PTYPE_MAX; flow++) {
drivers/net/ethernet/intel/ice/virt/fdir.c
535
ice_vc_fdir_rem_prof(vf, flow, 0);
drivers/net/ethernet/intel/ice/virt/fdir.c
536
ice_vc_fdir_rem_prof(vf, flow, 1);
drivers/net/ethernet/intel/ice/virt/fdir.c
546
enum ice_fltr_ptype flow;
drivers/net/ethernet/intel/ice/virt/fdir.c
548
for (flow = ICE_FLTR_PTYPE_NONF_NONE;
drivers/net/ethernet/intel/ice/virt/fdir.c
549
flow < ICE_FLTR_PTYPE_MAX; flow++) {
drivers/net/ethernet/intel/ice/virt/fdir.c
550
fdir->fdir_fltr_cnt[flow][0] = 0;
drivers/net/ethernet/intel/ice/virt/fdir.c
551
fdir->fdir_fltr_cnt[flow][1] = 0;
drivers/net/ethernet/intel/ice/virt/fdir.c
635
ice_vc_fdir_write_flow_prof(struct ice_vf *vf, enum ice_fltr_ptype flow,
drivers/net/ethernet/intel/ice/virt/fdir.c
661
vf_prof = fdir->fdir_prof[flow];
drivers/net/ethernet/intel/ice/virt/fdir.c
670
if (fdir->fdir_fltr_cnt[flow][tun]) {
drivers/net/ethernet/intel/ice/virt/fdir.c
678
ice_vc_fdir_rem_prof(vf, flow, tun);
drivers/net/ethernet/intel/ice/virt/fdir.c
685
flow, vf->vf_id);
drivers/net/ethernet/intel/ice/virt/fdir.c
694
flow, vf->vf_id);
drivers/net/ethernet/intel/ice/virt/fdir.c
704
flow, vf->vf_id);
drivers/net/ethernet/intel/ice/virt/fdir.c
710
fdir->prof_entry_cnt[flow][tun] = 0;
drivers/net/ethernet/intel/ice/virt/fdir.c
715
fdir->prof_entry_cnt[flow][tun]++;
drivers/net/ethernet/intel/ice/virt/fdir.c
720
fdir->prof_entry_cnt[flow][tun]++;
drivers/net/ethernet/intel/ice/virt/fdir.c
754
enum ice_fltr_ptype flow;
drivers/net/ethernet/intel/ice/virt/fdir.c
764
flow = input->flow_type;
drivers/net/ethernet/intel/ice/virt/fdir.c
765
ret = ice_vc_fdir_alloc_prof(vf, flow);
drivers/net/ethernet/intel/ice/virt/fdir.c
787
ret = ice_vc_fdir_write_flow_prof(vf, flow, seg, tun);
drivers/net/ethernet/intel/idpf/idpf_txrx.c
2329
bool flow, gen_flag;
drivers/net/ethernet/intel/idpf/idpf_txrx.c
2338
flow = idpf_queue_has(FLOW_SCH_EN, complq);
drivers/net/ethernet/intel/idpf/idpf_txrx.c
2348
tx_desc = flow ? &complq->comp[ntc].common :
drivers/net/ethernet/intel/idpf/idpf_txrx.c
2411
*(u32 *)&desc->flow.qw1.cmd_dtype = (u8)(params->dtype | td_cmd);
drivers/net/ethernet/intel/idpf/idpf_txrx.c
2412
desc->flow.qw1.rxr_bufsize = cpu_to_le16((u16)size);
drivers/net/ethernet/intel/idpf/idpf_txrx.c
2413
desc->flow.qw1.compl_tag = cpu_to_le16(params->compl_tag);
drivers/net/ethernet/intel/idpf/idpf_txrx.h
149
struct idpf_flex_tx_sched_desc flow; /* flow based scheduling */
drivers/net/ethernet/marvell/mvpp2/mvpp2.h
108
#define MVPP2_CLS_LKP_FLOW_PTR(flow) ((flow) << 16)
drivers/net/ethernet/marvell/mvpp2/mvpp2.h
1180
struct flow_rule *flow;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1091
if (!flow_action_basic_hw_stats_check(&rule->flow->action, NULL))
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1101
act = &rule->flow->action.entries[0];
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1183
const struct mvpp2_cls_flow *flow;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1188
flow = mvpp2_cls_flow_get(i);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1189
if (!flow)
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1192
index = MVPP2_CLS_FLT_C2_RFS(port->id, flow->flow_id, rule->loc);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1208
const struct mvpp2_cls_flow *flow;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1221
flow = mvpp2_cls_flow_get(i);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1222
if (!flow)
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1225
if ((rule->hek_fields & flow->supported_hash_opts) != rule->hek_fields)
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1228
index = MVPP2_CLS_FLT_C2_RFS(port->id, flow->flow_id, rule->loc);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1245
struct flow_rule *flow = rule->flow;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1251
if (flow_rule_match_key(flow, FLOW_DISSECTOR_KEY_VLAN)) {
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1254
flow_rule_match_vlan(flow, &match);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1285
if (flow_rule_match_key(flow, FLOW_DISSECTOR_KEY_PORTS)) {
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1288
flow_rule_match_ports(flow, &match);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1314
struct flow_rule *flow = rule->flow;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1317
if (!flow_action_basic_hw_stats_check(&rule->flow->action, NULL))
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1320
act = &flow->action.entries[0];
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1388
efs->rule.flow = ethtool_rule->rule;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1416
efs->rule.flow = NULL;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
472
const struct mvpp2_cls_flow *flow)
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
474
mvpp2_prs_add_flow(priv, flow->flow_id, flow->prs_ri.ri,
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
475
flow->prs_ri.ri_mask);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
480
const struct mvpp2_cls_flow *flow)
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
485
le.lkpid = flow->flow_id;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
493
le.data |= MVPP2_CLS_LKP_FLOW_PTR(MVPP2_CLS_FLT_FIRST(flow->flow_id));
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
583
const struct mvpp2_cls_flow *flow)
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
589
for (i = MVPP2_CLS_FLT_FIRST(flow->flow_id);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
590
i <= MVPP2_CLS_FLT_LAST(flow->flow_id); i++) {
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
595
if (i == MVPP2_CLS_FLT_LAST(flow->flow_id))
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
602
mvpp2_cls_flow_read(priv, MVPP2_CLS_FLT_C2_RSS_ENTRY(flow->flow_id),
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
618
MVPP2_CLS_FLT_HASH_ENTRY(i, flow->flow_id),
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
721
const struct mvpp2_cls_flow *mvpp2_cls_flow_get(int flow)
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
723
if (flow >= MVPP2_N_PRS_FLOWS)
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
726
return &cls_flows[flow];
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
743
const struct mvpp2_cls_flow *flow;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
749
flow = mvpp2_cls_flow_get(i);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
750
if (!flow)
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
753
flow_index = MVPP2_CLS_FLT_HASH_ENTRY(port->id, flow->flow_id);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
757
hash_opts = flow->supported_hash_opts & requested_opts;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
831
const struct mvpp2_cls_flow *flow;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
837
flow = mvpp2_cls_flow_get(i);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
838
if (!flow)
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
841
flow_index = MVPP2_CLS_FLT_HASH_ENTRY(port->id, flow->flow_id);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
853
const struct mvpp2_cls_flow *flow;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
857
flow = mvpp2_cls_flow_get(i);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
858
if (!flow)
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
861
mvpp2_cls_flow_prs_init(priv, flow);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
862
mvpp2_cls_flow_lkp_init(priv, flow);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
863
mvpp2_cls_flow_init(priv, flow);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.h
290
const struct mvpp2_cls_flow *mvpp2_cls_flow_get(int flow);
drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c
129
f = mvpp2_cls_flow_get(entry->flow);
drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c
149
f = mvpp2_cls_flow_get(entry->dbg_fe->flow);
drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c
174
f = mvpp2_cls_flow_get(entry->dbg_fe->flow);
drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c
27
int flow;
drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c
471
struct mvpp2 *priv, int flow)
drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c
478
sprintf(flow_entry_name, "%02d", flow);
drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c
482
entry = &priv->dbgfs_entries->flow_entries[flow];
drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c
484
entry->flow = flow;
drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c
75
u32 hits = mvpp2_cls_lookup_hits(entry->priv, entry->flow);
drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c
90
f = mvpp2_cls_flow_get(entry->flow);
drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c
2488
int mvpp2_prs_add_flow(struct mvpp2 *priv, int flow, u32 ri, u32 ri_mask)
drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c
2511
mvpp2_prs_sram_ai_update(&pe, flow, MVPP2_PRS_FLOW_ID_MASK);
drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c
380
static int mvpp2_prs_flow_find(struct mvpp2 *priv, int flow)
drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c
397
if ((bits & MVPP2_PRS_FLOW_ID_MASK) == flow)
drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.h
312
int mvpp2_prs_add_flow(struct mvpp2 *priv, int flow, u32 ri, u32 ri_mask);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1008
if (flow->flow_spec.flow_type & FLOW_RSS) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1010
req->index = flow->rss_ctx_id;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1031
flow->rule_type |= PFC_FLOWCTRL_RULE;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1044
flow->is_vf = true;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1045
flow->vf = vf;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1061
struct otx2_flow *flow)
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1073
memcpy(&pf_mac->flow_spec, &flow->flow_spec,
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1095
struct otx2_flow *flow;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1132
flow = otx2_find_flow(pfvf, fsp->location);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1133
if (!flow) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1134
flow = kzalloc_obj(*flow);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1135
if (!flow)
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1137
flow->location = fsp->location;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1138
flow->entry = flow_cfg->flow_ent[flow->location];
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1142
flow->flow_spec = *fsp;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1145
flow->rss_ctx_id = nfc->rss_context;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1147
if (otx2_is_flow_rule_dmacfilter(pfvf, &flow->flow_spec)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1148
eth_hdr = &flow->flow_spec.h_u.ether_spec;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1151
if (flow->rule_type & DMAC_FILTER_RULE)
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1153
flow->entry);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1159
flow->location +
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1164
kfree(flow);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1170
otx2_add_flow_with_pfmac(pfvf, flow);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1172
flow->rule_type |= DMAC_FILTER_RULE;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1173
flow->entry = find_first_zero_bit(flow_cfg->dmacflt_bmap,
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1175
fsp->location = flow_cfg->max_flows + flow->entry;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1176
flow->flow_spec.location = fsp->location;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1177
flow->location = fsp->location;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1179
set_bit(flow->entry, flow_cfg->dmacflt_bmap);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1180
otx2_dmacflt_add(pfvf, eth_hdr->h_dest, flow->entry);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1183
if (flow->location >= pfvf->flow_cfg->max_flows) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1186
flow->location,
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1190
err = otx2_add_flow_msg(pfvf, flow);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1198
kfree(flow);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1204
otx2_add_flow_to_list(pfvf, flow);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1208
if (flow->is_vf)
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1270
struct otx2_flow *flow;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1276
flow = otx2_find_flow(pfvf, location);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1277
if (!flow)
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1280
if (flow->rule_type & DMAC_FILTER_RULE) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1281
struct ethhdr *eth_hdr = &flow->flow_spec.h_u.ether_spec;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1288
flow->entry);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1289
clear_bit(flow->entry, flow_cfg->dmacflt_bmap);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1299
if (flow->rule_type & PFC_FLOWCTRL_RULE)
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1301
flow->flow_spec.ring_cookie,
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1305
err = otx2_remove_flow_msg(pfvf, flow->entry, false);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1311
list_del(&flow->list);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1312
kfree(flow);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1320
struct otx2_flow *flow, *tmp;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1323
list_for_each_entry_safe(flow, tmp, &pfvf->flow_cfg->flow_list, list) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1324
if (flow->rss_ctx_id != ctx_id)
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1326
err = otx2_remove_flow(pfvf, flow->location);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
1330
flow->location, err);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
469
static void otx2_add_flow_to_list(struct otx2_nic *pfvf, struct otx2_flow *flow)
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
475
if (iter->location > flow->location)
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
480
list_add(&flow->list, head);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
974
static int otx2_add_flow_msg(struct otx2_nic *pfvf, struct otx2_flow *flow)
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
976
u64 ring_cookie = flow->flow_spec.ring_cookie;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
990
err = otx2_prepare_flow_request(&flow->flow_spec, req);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c
998
req->entry = flow->entry;
drivers/net/ethernet/mellanox/mlx4/en_netdev.c
1893
struct ethtool_flow_id *flow, *tmp_flow;
drivers/net/ethernet/mellanox/mlx4/en_netdev.c
1974
list_for_each_entry_safe(flow, tmp_flow,
drivers/net/ethernet/mellanox/mlx4/en_netdev.c
1976
mlx4_flow_detach(mdev->dev, flow->id);
drivers/net/ethernet/mellanox/mlx4/en_netdev.c
1977
list_del(&flow->list);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/act.c
118
mlx5e_tc_act_set_next_post_act(struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/act.c
122
struct mlx5_core_dev *mdev = flow->priv->mdev;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/act.c
75
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/act.c
80
parse_state->flow = flow;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/act.c
96
priv = parse_state->flow->priv;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/act.h
104
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/act.h
115
mlx5e_tc_act_set_next_post_act(struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/act.h
17
struct mlx5e_tc_flow *flow;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/csum.c
44
struct mlx5e_tc_flow *flow = parse_state->flow;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/csum.c
46
return csum_offload_supported(flow->priv, attr->action,
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/ct.c
30
if (mlx5e_is_eswitch_flow(parse_state->flow)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/goto.c
10
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/goto.c
112
if (!mlx5e_is_eswitch_flow(flow) && parse_attr->mirred_ifindex[0]) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/goto.c
16
bool is_esw = mlx5e_is_eswitch_flow(flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/goto.c
17
bool ft_flow = mlx5e_is_ft_flow(flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/goto.c
66
struct mlx5e_tc_flow *flow = parse_state->flow;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/goto.c
68
if (validate_goto_chain(flow->priv, flow, attr, act, extack))
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/goto.c
93
struct mlx5e_tc_flow *flow = parse_state->flow;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/mirred.c
107
struct mlx5e_tc_flow *flow = parse_state->flow;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/mirred.c
110
struct mlx5e_priv *priv = flow->priv;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/mirred.c
134
if (flow_flag_test(parse_state->flow, L3_TO_L2_DECAP) && !parse_state->eth_push) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/mirred.c
139
if (mlx5e_is_ft_flow(flow) && out_dev == priv->netdev) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/mirred_nic.c
14
struct mlx5e_tc_flow *flow = parse_state->flow;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/mirred_nic.c
16
struct mlx5e_priv *priv = flow->priv;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/mirred_nic.c
42
flow_flag_set(parse_state->flow, HAIRPIN);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/mpls.c
15
struct mlx5e_priv *priv = parse_state->flow->priv;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/mpls.c
86
flow_flag_set(parse_state->flow, L3_TO_L2_DECAP);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/pedit.c
89
struct mlx5e_tc_flow *flow = parse_state->flow;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/pedit.c
93
ns_type = mlx5e_get_flow_namespace(flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/pedit.c
95
err = mlx5e_tc_act_pedit_parse_action(flow->priv, act, ns_type, attr->parse_attr->hdrs,
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/police.c
52
return !!mlx5e_get_flow_meters(parse_state->flow->priv->mdev);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/police.c
84
enum mlx5_flow_namespace_type ns = mlx5e_get_flow_namespace(parse_state->flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/sample.c
24
flow_flag_set(parse_state->flow, SAMPLE);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/vlan.c
75
if (!flow_flag_test(parse_state->flow, L3_TO_L2_DECAP))
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/vlan_mangle.c
62
ns_type = mlx5e_get_flow_namespace(parse_state->flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.c
104
struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.c
110
if (!flow_flag_test(flow, USE_ACT_STATS))
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.c
113
list_for_each_entry(attr, &flow->attrs, list) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.c
133
struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.c
141
if (!flow_flag_test(flow, USE_ACT_STATS))
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.c
144
list_for_each_entry(attr, &flow->attrs, list) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.c
162
mlx5e_tc_act_stats_del_flow(handle, flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.h
17
struct mlx5e_tc_flow *flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act_stats.h
21
struct mlx5e_tc_flow *flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
1191
struct flow_cls_offload *flow)
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
1193
struct flow_rule *flow_rule = flow_cls_offload_flow_rule(flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
1196
unsigned long cookie = flow->cookie;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
1227
entry->cookie = flow->cookie;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
1298
struct flow_cls_offload *flow)
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
1301
unsigned long cookie = flow->cookie;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
1357
struct flow_cls_offload *flow)
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
1359
struct flow_rule *rule = flow_cls_offload_flow_rule(flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
131
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
136
mlx5e_tc_get_encap_attr(struct mlx5e_tc_flow *flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
138
void mlx5e_tc_unoffload_flow_post_acts(struct mlx5e_tc_flow *flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
139
int mlx5e_tc_offload_flow_post_acts(struct mlx5e_tc_flow *flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
141
bool mlx5e_is_eswitch_flow(struct mlx5e_tc_flow *flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
142
bool mlx5e_is_ft_flow(struct mlx5e_tc_flow *flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
143
bool mlx5e_is_offloaded_flow(struct mlx5e_tc_flow *flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
144
int mlx5e_get_flow_namespace(struct mlx5e_tc_flow *flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
147
static inline void __flow_flag_set(struct mlx5e_tc_flow *flow, unsigned long flag)
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
151
set_bit(flag, &flow->flags);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
154
#define flow_flag_set(flow, flag) __flow_flag_set(flow, MLX5E_TC_FLOW_FLAG_##flag)
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
156
static inline bool __flow_flag_test_and_set(struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
160
return test_and_set_bit(flag, &flow->flags);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
163
#define flow_flag_test_and_set(flow, flag) \
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
164
__flow_flag_test_and_set(flow, \
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
167
static inline void __flow_flag_clear(struct mlx5e_tc_flow *flow, unsigned long flag)
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
171
clear_bit(flag, &flow->flags);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
174
#define flow_flag_clear(flow, flag) __flow_flag_clear(flow, \
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
177
static inline bool __flow_flag_test(struct mlx5e_tc_flow *flow, unsigned long flag)
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
179
bool ret = test_bit(flag, &flow->flags);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
186
#define flow_flag_test(flow, flag) __flow_flag_test(flow, \
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
190
struct mlx5e_tc_flow *flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
193
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
197
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
200
struct mlx5e_tc_flow *mlx5e_flow_get(struct mlx5e_tc_flow *flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
201
void mlx5e_flow_put(struct mlx5e_priv *priv, struct mlx5e_tc_flow *flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
203
struct mlx5_fc *mlx5e_tc_get_counter(struct mlx5e_tc_flow *flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1009
flow->decap_reformat = d;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1011
list_add(&flow->l3_to_l2_reformat, &d->flows);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1026
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1060
err = mlx5e_attach_encap(priv, flow, attr, out_dev, out_index,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1090
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1096
if (!mlx5e_is_eswitch_flow(flow))
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1105
mlx5e_detach_encap(flow->priv, flow, attr, out_index);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
125
flow_flag_set(flow, TUN_RX);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
126
flow->attr->tun_ip_version = ip_version;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1291
struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1296
struct mlx5_flow_attr *attr = flow->attr;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1337
flow->decap_route = r;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1338
list_add(&flow->decap_routes, &r->decap_flows);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1348
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1399
flow->encap_routes[out_index].r = r;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1402
flow->encap_routes[out_index].index = out_index;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1407
struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1410
struct mlx5e_route_entry *r = flow->decap_route;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1416
list_del(&flow->decap_routes);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1417
flow->decap_route = NULL;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1430
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1433
struct mlx5e_route_entry *r = flow->encap_routes[out_index].r;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1441
flow->encap_routes[out_index].r = NULL;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1460
struct mlx5e_tc_flow *flow;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1462
list_for_each_entry(flow, encap_flows, tmp_list) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1466
if (!mlx5e_is_offloaded_flow(flow))
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1469
attr = mlx5e_tc_get_encap_attr(flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1472
if (flow_flag_test(flow, SLOW)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1473
mlx5e_tc_unoffload_from_slow_path(esw, flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1475
mlx5e_tc_unoffload_fdb_rules(esw, flow, flow->attr);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1476
mlx5e_tc_unoffload_flow_post_acts(flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1479
mlx5e_tc_detach_mod_hdr(priv, flow, attr);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1482
esw_attr->dests[flow->tmp_entry_index].flags &=
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1484
esw_attr->dests[flow->tmp_entry_index].pkt_reformat = NULL;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1501
struct mlx5e_tc_flow *flow;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1511
list_for_each_entry(flow, encap_flows, tmp_list) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1518
if (flow_flag_test(flow, FAILED))
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1521
spec = &flow->attr->parse_attr->spec;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1523
attr = mlx5e_tc_get_encap_attr(flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1529
flow->tmp_entry_index);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1535
err = mlx5e_tc_attach_mod_hdr(priv, flow, attr);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1543
esw_attr->dests[flow->tmp_entry_index].pkt_reformat = e->pkt_reformat;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1544
esw_attr->dests[flow->tmp_entry_index].flags |= MLX5_ESW_DEST_ENCAP_VALID;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1548
err = mlx5e_tc_offload_flow_post_acts(flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1556
rule = mlx5e_tc_offload_fdb_rules(esw, flow, spec, flow->attr);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1558
mlx5e_tc_unoffload_flow_post_acts(flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1563
flow->rule[0] = rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1567
rule = mlx5e_tc_offload_to_slow_path(esw, flow, spec);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1569
esw_attr->dests[flow->tmp_entry_index].flags &=
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1577
flow->rule[0] = rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1580
flow_flag_set(flow, OFFLOADED);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
161
struct mlx5e_tc_flow *flow;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1622
struct mlx5e_tc_flow *flow;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1624
list_for_each_entry(flow, flow_list, tmp_list)
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1625
if (mlx5e_is_offloaded_flow(flow))
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1626
mlx5e_tc_unoffload_fdb_rules(esw, flow, flow->attr);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1633
struct mlx5e_tc_flow *flow;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1635
list_for_each_entry(flow, decap_flows, tmp_list) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1637
struct mlx5_flow_attr *attr = flow->attr;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1642
if (flow_flag_test(flow, FAILED))
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1654
rule = mlx5e_tc_offload_fdb_rules(esw, flow, spec, attr);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1660
flow->rule[0] = rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1661
flow_flag_set(flow, OFFLOADED);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
182
list_for_each_entry(flow, flow_list, tmp_list) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
183
if (!mlx5e_is_offloaded_flow(flow) || !flow_flag_test(flow, SLOW))
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
186
spec = &flow->attr->parse_attr->spec;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
188
attr = mlx5e_tc_get_encap_attr(flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
190
esw_attr->dests[flow->tmp_entry_index].pkt_reformat = e->pkt_reformat;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
191
esw_attr->dests[flow->tmp_entry_index].flags |= MLX5_ESW_DEST_ENCAP_VALID;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
197
err = mlx5e_tc_offload_flow_post_acts(flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
205
rule = mlx5e_tc_offload_fdb_rules(esw, flow, spec, flow->attr);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
207
mlx5e_tc_unoffload_flow_post_acts(flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
214
mlx5e_tc_unoffload_from_slow_path(esw, flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
215
flow->rule[0] = rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
217
flow_flag_set(flow, OFFLOADED);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
230
struct mlx5e_tc_flow *flow;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
233
list_for_each_entry(flow, flow_list, tmp_list) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
234
if (!mlx5e_is_offloaded_flow(flow))
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
237
attr = mlx5e_tc_get_encap_attr(flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
240
esw_attr->dests[flow->tmp_entry_index].flags &= ~MLX5_ESW_DEST_ENCAP_VALID;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
241
esw_attr->dests[flow->tmp_entry_index].pkt_reformat = NULL;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
247
if (flow_flag_test(flow, SLOW))
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
251
spec = &flow->attr->parse_attr->spec;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
252
rule = mlx5e_tc_offload_to_slow_path(esw, flow, spec);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
261
mlx5e_tc_unoffload_fdb_rules(esw, flow, flow->attr);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
262
mlx5e_tc_unoffload_flow_post_acts(flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
263
flow->rule[0] = rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
265
flow_flag_set(flow, OFFLOADED);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
274
static void mlx5e_take_tmp_flow(struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
278
if (IS_ERR(mlx5e_flow_get(flow))) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
283
wait_for_completion(&flow->del_hw_done);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
286
wait_for_completion(&flow->init_done);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
288
flow->tmp_entry_index = index;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
289
list_add(&flow->tmp_list, flow_list);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
298
struct mlx5e_tc_flow *flow;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
301
flow = container_of(efi, struct mlx5e_tc_flow, encaps[efi->index]);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
302
mlx5e_take_tmp_flow(flow, flow_list, efi->index);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
312
struct mlx5e_tc_flow *flow;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
314
list_for_each_entry(flow, &r->decap_flows, decap_routes)
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
315
mlx5e_take_tmp_flow(flow, flow_list, 0);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
394
struct mlx5e_tc_flow *flow;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
422
flow = container_of(efi, struct mlx5e_tc_flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
424
if (IS_ERR(mlx5e_flow_get(flow)))
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
426
list_add(&flow->tmp_list, &flow_list);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
428
if (mlx5e_is_offloaded_flow(flow)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
429
counter = mlx5e_tc_get_counter(flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
530
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
534
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
538
struct mlx5e_encap_entry *e = flow->encaps[out_index].e;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
541
if (!mlx5e_is_eswitch_flow(flow))
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
546
mlx5e_detach_encap_route(priv, flow, out_index);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
553
list_del(&flow->encaps[out_index].list);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
554
flow->encaps[out_index].e = NULL;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
567
struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
570
struct mlx5e_decap_entry *d = flow->decap_reformat;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
576
list_del(&flow->l3_to_l2_reformat);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
577
flow->decap_reformat = NULL;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
700
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
708
if (flow->encaps[i].e != e)
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
812
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
82
int mlx5e_tc_set_attr_rx_tun(struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
820
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
85
struct mlx5_esw_flow_attr *esw_attr = flow->attr->esw_attr;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
859
if (is_duplicated_encap_entry(priv, flow, out_index, e, extack)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
906
err = mlx5e_attach_encap_route(priv, flow, attr, e, entry_created,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
922
flow->encaps[out_index].e = e;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
923
list_add(&flow->encaps[out_index].list, &e->flows);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
924
flow->encaps[out_index].index = out_index;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
930
flow_flag_set(flow, SLOW);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
947
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
951
struct mlx5_esw_flow_attr *attr = flow->attr->esw_attr;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.h
10
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.h
15
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.h
23
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.h
26
struct mlx5e_tc_flow *flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.h
29
struct mlx5e_tc_flow *flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.h
31
struct mlx5e_tc_flow *flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.h
34
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.h
39
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.h
44
int mlx5e_tc_set_attr_rx_tun(struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c
118
flow = ERR_PTR(-EINVAL);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c
138
flow = mlx5_add_flow_rules(ft->t, spec, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c
140
if (IS_ERR(flow))
drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c
141
fs_err(fs, "mlx5_add_flow_rules() failed, flow is %pe\n", flow);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c
145
return flow;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c
82
struct mlx5_flow_handle *flow;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1096
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1200
flow_flag_set(flow, HAIRPIN_RSS);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1201
flow->attr->nic_attr->hairpin_ft =
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1204
flow->attr->nic_attr->hairpin_tirn = mlx5e_tir_get_tirn(&hpe->hp->direct_tir);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1207
flow->hpe = hpe;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1209
list_add(&flow->hairpin, &hpe->flows);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1220
struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1223
if (!flow->hpe)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1226
spin_lock(&flow->hpe->flows_lock);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1227
list_del(&flow->hairpin);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1228
spin_unlock(&flow->hpe->flows_lock);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1230
mlx5e_hairpin_put(priv, flow->hpe);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1231
flow->hpe = NULL;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1365
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1369
struct mlx5_flow_attr *attr = flow->attr;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1375
if (flow_flag_test(flow, HAIRPIN)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1376
err = mlx5e_hairpin_flow_add(priv, flow, parse_attr, extack);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1388
err = mlx5e_tc_attach_mod_hdr(priv, flow, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1393
flow->rule[0] = mlx5e_add_offloaded_nic_rule(priv, &parse_attr->spec, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1394
return PTR_ERR_OR_ZERO(flow->rule[0]);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1417
struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1420
struct mlx5_flow_attr *attr = flow->attr;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1422
flow_flag_clear(flow, OFFLOADED);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1424
if (!IS_ERR_OR_NULL(flow->rule[0]))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1425
mlx5e_del_offloaded_nic_rule(priv, flow->rule[0], attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1440
mlx5e_tc_detach_mod_hdr(priv, flow, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1446
if (flow_flag_test(flow, HAIRPIN))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1447
mlx5e_hairpin_flow_del(priv, flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1449
free_flow_post_acts(flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1450
mlx5_tc_ct_delete_flow(get_ct_priv(flow->priv), attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1453
kfree(flow->attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1458
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1467
rule = mlx5e_tc_rule_offload(flow->priv, spec, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1473
flow->rule[1] = mlx5_eswitch_add_fwd_rule(esw, spec, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1474
if (IS_ERR(flow->rule[1]))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1481
mlx5e_tc_rule_unoffload(flow->priv, rule, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1482
return flow->rule[1];
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1486
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1489
flow_flag_clear(flow, OFFLOADED);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1492
return mlx5_eswitch_del_offloaded_rule(esw, flow->rule[0], attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1495
mlx5_eswitch_del_fwd_rule(esw, flow->rule[1], attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1497
mlx5e_tc_rule_unoffload(flow->priv, flow->rule[0], attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1502
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1517
memcpy(slow_attr, flow->attr, ESW_FLOW_ATTR_SZ);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1526
err = mlx5_chains_get_chain_mapping(esw_chains(esw), flow->attr->chain, &chain_mapping);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1535
mh = mlx5e_mod_hdr_attach(esw->dev, get_mod_hdr_table(flow->priv, flow),
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1546
rule = mlx5e_tc_offload_fdb_rules(esw, flow, spec, slow_attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1552
flow->attr->slow_mh = mh;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1553
flow->chain_mapping = chain_mapping;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1554
flow_flag_set(flow, SLOW);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1563
mlx5e_mod_hdr_detach(esw->dev, get_mod_hdr_table(flow->priv, flow), mh);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1575
struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1577
struct mlx5e_mod_hdr_handle *slow_mh = flow->attr->slow_mh;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1582
mlx5_core_warn(flow->priv->mdev, "Unable to alloc attr to unoffload slow path rule\n");
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1586
memcpy(slow_attr, flow->attr, ESW_FLOW_ATTR_SZ);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1594
mlx5e_tc_unoffload_fdb_rules(esw, flow, slow_attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1596
mlx5e_mod_hdr_detach(esw->dev, get_mod_hdr_table(flow->priv, flow), slow_mh);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1597
mlx5_chains_put_chain_mapping(esw_chains(esw), flow->chain_mapping);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1598
flow->chain_mapping = 0;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1599
flow->attr->slow_mh = NULL;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1601
flow_flag_clear(flow, SLOW);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1608
static void unready_flow_add(struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1611
flow_flag_set(flow, NOT_READY);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1612
list_add_tail(&flow->unready, unready_flows);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1618
static void unready_flow_del(struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1620
list_del(&flow->unready);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1621
flow_flag_clear(flow, NOT_READY);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1624
static void add_unready_flow(struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1630
esw = flow->priv->mdev->priv.eswitch;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1635
unready_flow_add(flow, &uplink_priv->unready_flows);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1639
static void remove_unready_flow(struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1645
esw = flow->priv->mdev->priv.eswitch;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1650
if (flow_flag_test(flow, NOT_READY))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1651
unready_flow_del(flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1747
extra_split_attr_dests_needed(struct mlx5e_tc_flow *flow, struct mlx5_flow_attr *attr)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1753
if (flow->attr != attr ||
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1754
!list_is_first(&attr->list, &flow->attrs))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1783
extra_split_attr_dests(struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1786
struct mlx5e_post_act *post_act = get_post_action(flow->priv);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
179
static void mlx5e_put_flow_tunnel_id(struct mlx5e_tc_flow *flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1796
attr2 = mlx5_alloc_flow_attr(mlx5e_get_flow_namespace(flow));
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
180
static void free_flow_post_acts(struct mlx5e_tc_flow *flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
181
static void mlx5_free_flow_attr_actions(struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1827
err = mlx5e_tc_post_act_set_handle(flow->priv->mdev, handle,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1834
flow->extra_split_attr = attr2;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1851
post_process_attr(struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1863
if (mlx5e_is_eswitch_flow(flow) && has_encap_dests(attr)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1864
err = mlx5e_tc_tun_encap_dests_set(flow->priv, flow, attr, extack, &vf_tun);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1869
extra_split = extra_split_attr_dests_needed(flow, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1871
err = extra_split_attr_dests(flow, attr, extra_split);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1877
err = mlx5e_tc_attach_mod_hdr(flow->priv, flow, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1884
err = mlx5e_tc_attach_mod_hdr(flow->priv, flow, attr->branch_true);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1891
err = mlx5e_tc_attach_mod_hdr(flow->priv, flow, attr->branch_false);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1897
err = alloc_flow_attr_counter(get_flow_counter_dev(flow), attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1908
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1913
struct mlx5_flow_attr *attr = flow->attr;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1927
if (!mlx5e_is_ft_flow(flow) && attr->chain > max_chain) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1942
if (flow_flag_test(flow, TUN_RX)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1943
err = mlx5e_attach_decap_route(priv, flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1969
if (flow_flag_test(flow, L3_TO_L2_DECAP)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1970
err = mlx5e_attach_decap(priv, flow, extack);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1994
flow_flag_test(flow, EGRESS) ?
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2005
err = post_process_attr(flow, attr, extack);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2009
err = mlx5e_tc_act_stats_add_flow(get_act_stats_handle(priv), flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2017
if (flow_flag_test(flow, SLOW))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2018
flow->rule[0] = mlx5e_tc_offload_to_slow_path(esw, flow, &parse_attr->spec);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2020
flow->rule[0] = mlx5e_tc_offload_fdb_rules(esw, flow, &parse_attr->spec, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2022
if (IS_ERR(flow->rule[0])) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2023
err = PTR_ERR(flow->rule[0]);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2026
flow_flag_set(flow, OFFLOADED);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2031
flow_flag_set(flow, FAILED);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2047
static void free_branch_attr(struct mlx5e_tc_flow *flow, struct mlx5_flow_attr *attr)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2052
mlx5_free_flow_attr_actions(flow, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2058
struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2061
struct mlx5_flow_attr *attr = flow->attr;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2063
mlx5e_put_flow_tunnel_id(flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2065
remove_unready_flow(flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2067
if (mlx5e_is_offloaded_flow(flow)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2068
if (flow_flag_test(flow, SLOW))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2069
mlx5e_tc_unoffload_from_slow_path(esw, flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2071
mlx5e_tc_unoffload_fdb_rules(esw, flow, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2073
complete_all(&flow->del_hw_done);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2078
if (flow->decap_route)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2079
mlx5e_detach_decap_route(priv, flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2081
mlx5_tc_ct_match_del(get_ct_priv(priv), &flow->attr->ct_attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2083
if (flow_flag_test(flow, L3_TO_L2_DECAP))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2084
mlx5e_detach_decap(priv, flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2086
mlx5e_tc_act_stats_del_flow(get_act_stats_handle(priv), flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2088
free_flow_post_acts(flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2089
if (flow->extra_split_attr) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2090
mlx5_free_flow_attr_actions(flow, flow->extra_split_attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2091
kvfree(flow->extra_split_attr->parse_attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2092
kfree(flow->extra_split_attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2094
mlx5_free_flow_attr_actions(flow, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2098
kfree(flow->attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2101
struct mlx5_fc *mlx5e_tc_get_counter(struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2105
attr = list_first_entry(&flow->attrs, struct mlx5_flow_attr, list);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2112
struct mlx5e_tc_flow *flow, *tmp;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2114
list_for_each_entry_safe(flow, tmp, flow_list, tmp_list)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2115
mlx5e_flow_put(priv, flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2118
static void mlx5e_tc_del_fdb_peer_flow(struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2121
struct mlx5_eswitch *esw = flow->priv->mdev->priv.eswitch;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2125
if (!flow_flag_test(flow, ESWITCH) ||
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2126
!flow_flag_test(flow, DUP))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2130
list_del(&flow->peer[peer_index]);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2133
list_for_each_entry_safe(peer_flow, tmp, &flow->peer_flows, peer_flows) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2144
if (list_empty(&flow->peer_flows))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2145
flow_flag_clear(flow, DUP);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2148
static void mlx5e_tc_del_fdb_peers_flow(struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2155
devcom = flow->priv->mdev->priv.eswitch->devcom;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2158
mlx5e_tc_del_fdb_peer_flow(flow, i);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2163
struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2165
if (mlx5e_is_eswitch_flow(flow)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2166
struct mlx5_devcom_comp_dev *devcom = flow->priv->mdev->priv.eswitch->devcom;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2169
mlx5e_tc_del_fdb_flow(priv, flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2173
mlx5e_tc_del_fdb_peers_flow(flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2175
mlx5e_tc_del_fdb_flow(priv, flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2177
mlx5e_tc_del_nic_flow(priv, flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2252
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2262
struct mlx5_flow_attr *attr = flow->attr;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2334
flow->attr->tunnel_id = value;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2346
static void mlx5e_put_flow_tunnel_id(struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2348
u32 enc_opts_id = flow->attr->tunnel_id & ENC_OPTS_BITS_MASK;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2349
u32 tun_id = flow->attr->tunnel_id >> ENC_OPTS_BITS;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2354
esw = flow->priv->mdev->priv.eswitch;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2520
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2533
if (!mlx5e_is_eswitch_flow(flow)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2538
needs_mapping = !!flow->attr->chain;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2539
sets_mapping = flow_requires_tunnel_mapping(flow->attr->chain, f);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2551
if (!flow->attr->chain) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2566
flow->attr->action |= MLX5_FLOW_CONTEXT_ACTION_DECAP;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2567
err = mlx5e_tc_set_attr_rx_tun(flow, spec);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2586
err = mlx5e_tc_set_attr_rx_tun(flow, tmp_spec);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2598
return mlx5e_get_flow_tunnel_id(priv, flow, f, filter_dev);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2697
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2725
fs_type = mlx5e_is_eswitch_flow(flow) ? FS_FT_FDB : FS_FT_NIC_RX;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2759
err = parse_tunnel_attr(priv, flow, spec, f, filter_dev,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3155
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3172
err = __parse_cls_flower(priv, flow, spec, f, filter_dev,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3177
is_eswitch_flow = mlx5e_is_eswitch_flow(flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3192
flow->attr->inner_match_level = inner_match_level;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3193
flow->attr->outer_match_level = outer_match_level;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3576
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3579
struct mlx5_esw_flow_attr *esw_attr = flow->attr->esw_attr;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3597
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3605
if (mlx5e_is_eswitch_flow(flow) &&
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3606
!actions_match_supported_fdb(priv, flow, extack))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3629
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3642
ns_type = mlx5e_get_flow_namespace(flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3706
mlx5e_tc_get_encap_attr(struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3712
list_for_each_entry(attr, &flow->attrs, list) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3724
mlx5e_tc_unoffload_flow_post_acts(struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3726
struct mlx5e_post_act *post_act = get_post_action(flow->priv);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3729
list_for_each_entry(attr, &flow->attrs, list) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3730
if (list_is_last(&attr->list, &flow->attrs))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3738
free_flow_post_acts(struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3742
list_for_each_entry_safe(attr, tmp, &flow->attrs, list) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3743
if (list_is_last(&attr->list, &flow->attrs))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3746
mlx5_free_flow_attr_actions(flow, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3755
mlx5e_tc_offload_flow_post_acts(struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3757
struct mlx5e_post_act *post_act = get_post_action(flow->priv);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3761
list_for_each_entry(attr, &flow->attrs, list) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3762
if (list_is_last(&attr->list, &flow->attrs))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3794
alloc_flow_post_acts(struct mlx5e_tc_flow *flow, struct netlink_ext_ack *extack)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3796
struct mlx5e_post_act *post_act = get_post_action(flow->priv);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3804
list_for_each_entry(attr, &flow->attrs, list) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3811
err = mlx5e_tc_act_set_next_post_act(flow, attr, next_attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3819
if (list_is_last(&attr->list, &flow->attrs))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3822
err = actions_prepare_mod_hdr_actions(flow->priv, flow, attr, extack);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3826
err = post_process_attr(flow, attr, extack);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3839
err = mlx5e_tc_act_set_next_post_act(flow, attr->jumping_attr, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3847
if (flow_flag_test(flow, SLOW))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3850
err = mlx5e_tc_offload_flow_post_acts(flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3858
free_flow_post_acts(flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3877
alloc_branch_attr(struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3886
*cond_attr = mlx5e_clone_flow_attr_for_post_act(flow->attr,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3887
mlx5e_get_flow_namespace(flow));
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3899
err = set_branch_dest_ft(flow->priv, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3910
err = set_branch_dest_ft(flow->priv, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3972
struct mlx5e_tc_flow *flow, struct mlx5_flow_attr *attr,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3985
err = alloc_branch_attr(flow, &cond_true,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3993
err = alloc_branch_attr(flow, &cond_false,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4005
flow_flag_set(flow, USE_ACT_STATS);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4010
free_branch_attr(flow, attr->branch_true);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4020
struct mlx5e_tc_flow *flow = parse_state->flow;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4022
struct mlx5_flow_attr *attr = flow->attr;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4024
struct mlx5e_priv *priv = flow->priv;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4031
ns_type = mlx5e_get_flow_namespace(flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4032
list_add(&attr->list, &flow->attrs);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4057
err = parse_branch_ctrl(act, tc_act, flow, attr, &jump_state, extack);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4075
attr = mlx5e_clone_flow_attr_for_post_act(flow->attr, ns_type);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4083
list_add(&attr->list, &flow->attrs);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4089
flow_flag_set(flow, USE_ACT_STATS);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4101
err = alloc_flow_post_acts(flow, extack);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4108
free_flow_post_acts(flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4134
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4139
struct mlx5_flow_attr *attr = flow->attr;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4149
mlx5e_tc_act_init_parse_state(parse_state, flow, flow_action, extack);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4156
err = actions_prepare_mod_hdr_actions(priv, flow, attr, extack);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4165
parse_attr, flow, extack))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4268
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4273
struct mlx5_flow_attr *attr = flow->attr;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4286
mlx5e_tc_act_init_parse_state(parse_state, flow, flow_action, extack);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4309
err = actions_prepare_mod_hdr_actions(priv, flow, attr, extack);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4314
parse_attr, flow, extack))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4359
static bool is_peer_flow_needed(struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4361
struct mlx5_esw_flow_attr *esw_attr = flow->attr->esw_attr;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4362
struct mlx5_flow_attr *attr = flow->attr;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4364
flow_flag_test(flow, INGRESS);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4400
mlx5_free_flow_attr_actions(struct mlx5e_tc_flow *flow, struct mlx5_flow_attr *attr)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4402
struct mlx5_core_dev *counter_dev = get_flow_counter_dev(flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4409
mlx5e_tc_post_act_del(get_post_action(flow->priv), attr->post_act_handle);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4411
mlx5e_tc_tun_encap_dests_unset(flow->priv, flow, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4418
mlx5e_tc_detach_mod_hdr(flow->priv, flow, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4421
if (mlx5e_is_eswitch_flow(flow)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4425
mlx5e_tc_int_port_put(mlx5e_get_int_port_priv(flow->priv),
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4429
mlx5e_tc_int_port_put(mlx5e_get_int_port_priv(flow->priv),
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4433
mlx5_tc_ct_delete_flow(get_ct_priv(flow->priv), attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4435
free_branch_attr(flow, attr->branch_true);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4436
free_branch_attr(flow, attr->branch_false);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4447
struct mlx5e_tc_flow *flow;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4451
flow = kzalloc_obj(*flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4453
if (!parse_attr || !flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4456
flow->flags = flow_flags;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4457
flow->cookie = f->cookie;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4458
flow->priv = priv;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4460
attr = mlx5_alloc_flow_attr(mlx5e_get_flow_namespace(flow));
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4464
flow->attr = attr;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4467
INIT_LIST_HEAD(&flow->encaps[out_index].list);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4468
INIT_LIST_HEAD(&flow->hairpin);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4469
INIT_LIST_HEAD(&flow->l3_to_l2_reformat);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4470
INIT_LIST_HEAD(&flow->attrs);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4471
INIT_LIST_HEAD(&flow->peer_flows);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4472
refcount_set(&flow->refcnt, 1);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4473
init_completion(&flow->init_done);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4474
init_completion(&flow->del_hw_done);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4476
*__flow = flow;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4482
kfree(flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4531
struct mlx5e_tc_flow *flow;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4537
&parse_attr, &flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4542
mlx5e_flow_esw_attr_init(flow->attr,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4546
err = parse_cls_flower(flow->priv, flow, &parse_attr->spec,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4553
&flow->attr->ct_attr, extack);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4557
err = parse_tc_fdb_actions(priv, &rule->action, flow, extack);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4561
err = mlx5e_tc_add_fdb_flow(priv, flow, extack);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4562
complete_all(&flow->init_done);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4567
add_unready_flow(flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4570
return flow;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4573
mlx5e_flow_put(priv, flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4579
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4583
struct mlx5e_priv *priv = flow->priv, *peer_priv;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4585
struct mlx5_esw_flow_attr *attr = flow->attr->esw_attr;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4608
parse_attr = flow->attr->parse_attr;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4617
list_add_tail(&peer_flow->peer_flows, &flow->peer_flows);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4618
flow_flag_set(flow, DUP);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4620
list_add_tail(&flow->peer[i], &esw->offloads.peer_flows[i]);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4639
struct mlx5e_tc_flow *flow;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4642
flow = __mlx5e_add_fdb_flow(priv, f, flow_flags, filter_dev, in_rep,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4644
if (IS_ERR(flow))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4645
return PTR_ERR(flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4647
if (!is_peer_flow_needed(flow)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4648
*__flow = flow;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4658
err = mlx5e_tc_add_fdb_peer_flow(f, flow, flow_flags, peer_esw);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4665
*__flow = flow;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4669
mlx5e_tc_del_fdb_peers_flow(flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4672
mlx5e_tc_del_fdb_flow(priv, flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4686
struct mlx5e_tc_flow *flow;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4699
&parse_attr, &flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4704
mlx5e_flow_attr_init(flow->attr, parse_attr, f);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4706
err = parse_cls_flower(flow->priv, flow, &parse_attr->spec,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4712
&flow->attr->ct_attr, extack);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4716
err = parse_tc_nic_actions(priv, &rule->action, flow, extack);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4720
err = mlx5e_tc_add_nic_flow(priv, flow, extack);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4724
flow_flag_set(flow, OFFLOADED);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4725
*__flow = flow;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4730
flow_flag_set(flow, FAILED);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4732
mlx5e_flow_put(priv, flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4742
struct mlx5e_tc_flow **flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4755
filter_dev, flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4758
filter_dev, flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4819
struct mlx5e_tc_flow *flow;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4832
flow = rhashtable_lookup(tc_ht, &f->cookie, tc_ht_params);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4833
if (flow) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4837
if (is_flow_rule_duplicate_allowed(dev, rpriv) && flow->orig_dev != dev)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4850
if (flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4854
err = mlx5e_tc_add_flow(priv, f, flags, dev, &flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4862
flow->orig_dev = dev;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4864
err = rhashtable_lookup_insert_fast(tc_ht, &flow->node, tc_ht_params);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4872
mlx5e_flow_put(priv, flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4881
static bool same_flow_direction(struct mlx5e_tc_flow *flow, int flags)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4886
return flow_flag_test(flow, INGRESS) == dir_ingress &&
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4887
flow_flag_test(flow, EGRESS) == dir_egress;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4894
struct mlx5e_tc_flow *flow;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4898
flow = rhashtable_lookup(tc_ht, &f->cookie, tc_ht_params);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4899
if (!flow || !same_flow_direction(flow, flags)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4907
if (flow_flag_test_and_set(flow, DELETED)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4911
rhashtable_remove_fast(tc_ht, &flow->node, tc_ht_params);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4915
mlx5e_flow_put(priv, flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4937
struct mlx5e_tc_flow *flow;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4945
flow = mlx5e_flow_get(rhashtable_lookup(tc_ht, &f->cookie,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4948
if (IS_ERR(flow))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4949
return PTR_ERR(flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4951
if (!same_flow_direction(flow, flags)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4956
if (mlx5e_is_offloaded_flow(flow)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4957
if (flow_flag_test(flow, USE_ACT_STATS)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4960
counter = mlx5e_tc_get_counter(flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4974
if (flow_flag_test(flow, DUP)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4977
list_for_each_entry(peer_flow, &flow->peer_flows, peer_flows) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4984
if (flow_flag_test(flow, USE_ACT_STATS)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
5009
mlx5e_flow_put(priv, flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
5337
struct mlx5e_tc_flow *flow = ptr;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
5338
struct mlx5e_priv *priv = flow->priv;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
5340
mlx5e_tc_del_flow(priv, flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
5341
kfree(flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
5521
struct mlx5e_tc_flow *flow, *tmp;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
5529
list_for_each_entry_safe(flow, tmp, &esw->offloads.peer_flows[i], peer[i])
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
5530
mlx5e_tc_del_fdb_peers_flow(flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
5539
struct mlx5e_tc_flow *flow, *tmp;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
5542
list_for_each_entry_safe(flow, tmp, &rpriv->unready_flows, unready) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
5543
if (!mlx5e_tc_add_fdb_flow(flow->priv, flow, NULL))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
5544
unready_flow_del(flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
604
struct mlx5e_tc_flow *flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
606
struct mlx5e_tc_flow *mlx5e_flow_get(struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
608
if (!flow || !refcount_inc_not_zero(&flow->refcnt))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
610
return flow;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
613
void mlx5e_flow_put(struct mlx5e_priv *priv, struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
615
if (refcount_dec_and_test(&flow->refcnt)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
616
mlx5e_tc_del_flow(priv, flow);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
617
kfree_rcu(flow, rcu_head);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
621
bool mlx5e_is_eswitch_flow(struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
623
return flow_flag_test(flow, ESWITCH);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
626
bool mlx5e_is_ft_flow(struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
628
return flow_flag_test(flow, FT);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
631
bool mlx5e_is_offloaded_flow(struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
633
return flow_flag_test(flow, OFFLOADED);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
636
int mlx5e_get_flow_namespace(struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
638
return mlx5e_is_eswitch_flow(flow) ?
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
643
get_flow_counter_dev(struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
645
return mlx5e_is_eswitch_flow(flow) ? flow->attr->esw_attr->counter_dev : flow->priv->mdev;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
649
get_mod_hdr_table(struct mlx5e_priv *priv, struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
654
return mlx5e_get_flow_namespace(flow) == MLX5_FLOW_NAMESPACE_FDB ?
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
660
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
665
mh = mlx5e_mod_hdr_attach(priv->mdev, get_mod_hdr_table(priv, flow),
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
666
mlx5e_get_flow_namespace(flow),
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
679
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
686
mlx5e_mod_hdr_detach(priv->mdev, get_mod_hdr_table(priv, flow),
drivers/net/ethernet/mellanox/mlx5/core/en_tc.h
289
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.h
293
struct mlx5e_tc_flow *flow,
drivers/net/ethernet/mellanox/mlx5/core/esw/ipsec_fs.c
137
struct mlx5e_tc_flow *flow)
drivers/net/ethernet/mellanox/mlx5/core/esw/ipsec_fs.c
143
attr = flow->attr;
drivers/net/ethernet/mellanox/mlx5/core/esw/ipsec_fs.c
148
err = mlx5_eswitch_restore_ipsec_rule(esw, flow->rule[0], esw_attr,
drivers/net/ethernet/mellanox/mlx5/core/esw/ipsec_fs.c
162
struct mlx5e_tc_flow *flow;
drivers/net/ethernet/mellanox/mlx5/core/esw/ipsec_fs.c
173
while ((flow = rhashtable_walk_next(&iter)) != NULL) {
drivers/net/ethernet/mellanox/mlx5/core/esw/ipsec_fs.c
174
if (IS_ERR(flow))
drivers/net/ethernet/mellanox/mlx5/core/esw/ipsec_fs.c
177
err = mlx5_esw_ipsec_modify_flow_dests(esw, flow);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1190
struct mlx5_flow_handle *flow;
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1223
flow = mlx5_add_flow_rules(mlx5_eswitch_get_slow_fdb(esw),
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1225
if (IS_ERR(flow)) {
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1226
err = PTR_ERR(flow);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1229
flows[peer_vport->index] = flow;
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1235
flow = mlx5_add_flow_rules(mlx5_eswitch_get_slow_fdb(esw),
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1237
if (IS_ERR(flow)) {
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1238
err = PTR_ERR(flow);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1241
flows[peer_vport->index] = flow;
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1248
flow = mlx5_add_flow_rules(mlx5_eswitch_get_slow_fdb(esw),
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1250
if (IS_ERR(flow)) {
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1251
err = PTR_ERR(flow);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1254
flows[peer_vport->index] = flow;
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1263
flow = mlx5_add_flow_rules(esw->fdb_table.offloads.slow_fdb,
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1265
if (IS_ERR(flow)) {
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1266
err = PTR_ERR(flow);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1269
flows[peer_vport->index] = flow;
drivers/net/ethernet/netronome/nfp/flower/action.c
468
struct flowi6 flow = {};
drivers/net/ethernet/netronome/nfp/flower/action.c
471
flow.daddr = ip_tun->key.u.ipv6.dst;
drivers/net/ethernet/netronome/nfp/flower/action.c
472
flow.flowi4_proto = IPPROTO_UDP;
drivers/net/ethernet/netronome/nfp/flower/action.c
473
dst = ipv6_stub->ipv6_dst_lookup_flow(net, NULL, &flow, NULL);
drivers/net/ethernet/netronome/nfp/flower/action.c
483
struct flowi4 flow = {};
drivers/net/ethernet/netronome/nfp/flower/action.c
491
flow.daddr = ip_tun->key.u.ipv4.dst;
drivers/net/ethernet/netronome/nfp/flower/action.c
492
flow.flowi4_proto = IPPROTO_UDP;
drivers/net/ethernet/netronome/nfp/flower/action.c
493
rt = ip_route_output_key(net, &flow);
drivers/net/ethernet/netronome/nfp/flower/cmsg.c
220
if (msg_len < struct_size(msg, flow, flow_cnt)) {
drivers/net/ethernet/netronome/nfp/flower/cmsg.c
222
msg_len, struct_size(msg, flow, flow_cnt));
drivers/net/ethernet/netronome/nfp/flower/cmsg.c
235
u32 ctx = be32_to_cpu(msg->flow[i].host_ctx);
drivers/net/ethernet/netronome/nfp/flower/cmsg.h
644
} __packed flow[];
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
103
flow_action_for_each(i, act, &flow->rule->action) {
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
118
if (flow->common.chain_index && exist_ct_clear)
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1481
struct flow_cls_offload *flow,
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1494
entry->rule = flow_rule_alloc(flow->rule->action.num_entries);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1509
memcpy(&nft_match->dissector, flow->rule->match.dissector,
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1511
memcpy(&nft_match->mask, flow->rule->match.mask,
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1513
memcpy(&nft_match->key, flow->rule->match.key,
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1522
entry->rule->match.dissector = flow->rule->match.dissector;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1523
entry->rule->match.mask = flow->rule->match.mask;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1524
entry->rule->match.key = flow->rule->match.key;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1529
entry->cookie = flow->cookie > 0 ? flow->cookie : (unsigned long)entry;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1530
entry->chain_index = flow->common.chain_index;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1538
entry->rule->action.num_entries = flow->rule->action.num_entries;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1539
flow_action_for_each(i, act, &flow->rule->action) {
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1569
if (flow->cookie == 0)
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1573
map = get_hashentry(&zt->priv->ct_map_table, &flow->cookie,
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1581
map->cookie = flow->cookie;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1807
struct flow_cls_offload *flow,
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1816
ct_act = get_flow_act_ct(flow->rule);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1823
ct_goto = get_flow_act(flow->rule, FLOW_ACTION_GOTO);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1848
ct_entry = nfp_fl_ct_add_flow(zt, netdev, flow, false, extack);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1852
ct_entry->chain_index = flow->common.chain_index;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1882
struct flow_cls_offload *flow,
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1885
struct flow_rule *rule = flow_cls_offload_flow_rule(flow);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1929
ct_entry = nfp_fl_ct_add_flow(zt, netdev, flow, false, extack);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1934
ct_entry->chain_index = flow->common.chain_index;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1935
ct_goto = get_flow_act(flow->rule, FLOW_ACTION_GOTO);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
2063
int nfp_fl_ct_stats(struct flow_cls_offload *flow,
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
2132
flow_stats_update(&flow->stats, ct_entry->stats.bytes,
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
2147
nfp_fl_ct_offload_nft_supported(struct flow_cls_offload *flow)
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
2149
struct flow_rule *flow_rule = flow->rule;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
2168
nfp_fl_ct_offload_nft_flow(struct nfp_fl_ct_zone_entry *zt, struct flow_cls_offload *flow)
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
2174
extack = flow->common.extack;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
2175
switch (flow->command) {
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
2177
if (!nfp_fl_ct_offload_nft_supported(flow))
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
2183
ct_map_ent = rhashtable_lookup_fast(&zt->priv->ct_map_table, &flow->cookie,
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
2186
ct_entry = nfp_fl_ct_add_flow(zt, NULL, flow, true, extack);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
2196
ct_map_ent = rhashtable_lookup_fast(&zt->priv->ct_map_table, &flow->cookie,
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
2200
ct_map_ent = rhashtable_lookup_fast(&zt->priv->ct_map_table, &flow->cookie,
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
2203
return nfp_fl_ct_stats(flow, ct_map_ent);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
2213
struct flow_cls_offload *flow = type_data;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
2224
err = nfp_fl_ct_offload_nft_flow(zt, flow);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
56
bool is_pre_ct_flow(struct flow_cls_offload *flow)
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
58
struct flow_rule *rule = flow_cls_offload_flow_rule(flow);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
70
if (flow->common.chain_index)
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
73
flow_action_for_each(i, act, &flow->rule->action) {
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
88
bool is_post_ct_flow(struct flow_cls_offload *flow)
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
90
struct flow_rule *rule = flow_cls_offload_flow_rule(flow);
drivers/net/ethernet/netronome/nfp/flower/conntrack.h
209
bool is_pre_ct_flow(struct flow_cls_offload *flow);
drivers/net/ethernet/netronome/nfp/flower/conntrack.h
210
bool is_post_ct_flow(struct flow_cls_offload *flow);
drivers/net/ethernet/netronome/nfp/flower/conntrack.h
227
struct flow_cls_offload *flow,
drivers/net/ethernet/netronome/nfp/flower/conntrack.h
244
struct flow_cls_offload *flow,
drivers/net/ethernet/netronome/nfp/flower/conntrack.h
287
int nfp_fl_ct_stats(struct flow_cls_offload *flow,
drivers/net/ethernet/netronome/nfp/flower/main.h
188
struct nfp_predt_entry *flow;
drivers/net/ethernet/netronome/nfp/flower/main.h
471
struct nfp_fl_payload *flow;
drivers/net/ethernet/netronome/nfp/flower/main.h
674
struct tc_cls_matchall_offload *flow);
drivers/net/ethernet/netronome/nfp/flower/main.h
697
struct nfp_fl_payload *flow);
drivers/net/ethernet/netronome/nfp/flower/main.h
699
struct nfp_fl_payload *flow);
drivers/net/ethernet/netronome/nfp/flower/main.h
706
struct flow_rule *flow,
drivers/net/ethernet/netronome/nfp/flower/metadata.c
31
struct nfp_fl_payload *flow;
drivers/net/ethernet/netronome/nfp/flower/metadata.c
334
ctx_entry->flow = nfp_flow;
drivers/net/ethernet/netronome/nfp/flower/metadata.c
445
return ctx_entry->flow;
drivers/net/ethernet/netronome/nfp/flower/offload.c
1128
struct nfp_fl_payload *flow,
drivers/net/ethernet/netronome/nfp/flower/offload.c
1135
u8 *ext = flow->unmasked_data;
drivers/net/ethernet/netronome/nfp/flower/offload.c
1137
u8 *mask = flow->mask_data;
drivers/net/ethernet/netronome/nfp/flower/offload.c
1142
meta_tci = (struct nfp_flower_meta_tci *)flow->unmasked_data;
drivers/net/ethernet/netronome/nfp/flower/offload.c
1149
flow->pre_tun_rule.vlan_tci = cpu_to_be16(vlan_tci);
drivers/net/ethernet/netronome/nfp/flower/offload.c
1152
flow->pre_tun_rule.vlan_tci = cpu_to_be16(0xffff);
drivers/net/ethernet/netronome/nfp/flower/offload.c
1176
flow->pre_tun_rule.is_ipv6 = true;
drivers/net/ethernet/netronome/nfp/flower/offload.c
1178
flow->pre_tun_rule.is_ipv6 = false;
drivers/net/ethernet/netronome/nfp/flower/offload.c
1217
if (memcmp(&mac->mac_dst[0], flow->pre_tun_rule.dev->dev_addr, 6)) {
drivers/net/ethernet/netronome/nfp/flower/offload.c
1224
memcpy(&flow->pre_tun_rule.loc_mac, &mac->mac_dst[0], ETH_ALEN);
drivers/net/ethernet/netronome/nfp/flower/offload.c
1225
memcpy(&flow->pre_tun_rule.rem_mac, &mac->mac_src[0], ETH_ALEN);
drivers/net/ethernet/netronome/nfp/flower/offload.c
1264
flow->pre_tun_rule.vlan_tci = cpu_to_be16(vlan_tci);
drivers/net/ethernet/netronome/nfp/flower/offload.c
1265
flow->pre_tun_rule.vlan_tpid = cpu_to_be16(vlan_tpid);
drivers/net/ethernet/netronome/nfp/flower/offload.c
1268
flow->pre_tun_rule.vlan_tci = cpu_to_be16(0xffff);
drivers/net/ethernet/netronome/nfp/flower/offload.c
1269
flow->pre_tun_rule.vlan_tpid = cpu_to_be16(0xffff);
drivers/net/ethernet/netronome/nfp/flower/offload.c
1275
act = (struct nfp_fl_act_head *)&flow->action_data[act_offset];
drivers/net/ethernet/netronome/nfp/flower/offload.c
1283
act = (struct nfp_fl_act_head *)&flow->action_data[act_offset];
drivers/net/ethernet/netronome/nfp/flower/offload.c
1294
if (act_offset != flow->meta.act_len) {
drivers/net/ethernet/netronome/nfp/flower/offload.c
1302
static bool offload_pre_check(struct flow_cls_offload *flow)
drivers/net/ethernet/netronome/nfp/flower/offload.c
1304
struct flow_rule *rule = flow_cls_offload_flow_rule(flow);
drivers/net/ethernet/netronome/nfp/flower/offload.c
1315
if (flow->common.chain_index)
drivers/net/ethernet/netronome/nfp/flower/offload.c
1333
struct flow_cls_offload *flow)
drivers/net/ethernet/netronome/nfp/flower/offload.c
1335
struct flow_rule *rule = flow_cls_offload_flow_rule(flow);
drivers/net/ethernet/netronome/nfp/flower/offload.c
1344
extack = flow->common.extack;
drivers/net/ethernet/netronome/nfp/flower/offload.c
1348
if (is_pre_ct_flow(flow))
drivers/net/ethernet/netronome/nfp/flower/offload.c
1349
return nfp_fl_ct_handle_pre_ct(priv, netdev, flow, extack, NULL);
drivers/net/ethernet/netronome/nfp/flower/offload.c
1351
if (is_post_ct_flow(flow))
drivers/net/ethernet/netronome/nfp/flower/offload.c
1352
return nfp_fl_ct_handle_post_ct(priv, netdev, flow, extack);
drivers/net/ethernet/netronome/nfp/flower/offload.c
1354
if (!offload_pre_check(flow))
drivers/net/ethernet/netronome/nfp/flower/offload.c
1387
err = nfp_compile_flow_metadata(app, flow->cookie, flow_pay, netdev, extack);
drivers/net/ethernet/netronome/nfp/flower/offload.c
1391
flow_pay->tc_flower_cookie = flow->cookie;
drivers/net/ethernet/netronome/nfp/flower/offload.c
1469
origin = link->sub_flow.flow;
drivers/net/ethernet/netronome/nfp/flower/offload.c
1501
u32 ctx_id = be32_to_cpu(link->sub_flow.flow->meta.host_ctx_id);
drivers/net/ethernet/netronome/nfp/flower/offload.c
1536
link->merge_flow.flow);
drivers/net/ethernet/netronome/nfp/flower/offload.c
1552
struct flow_cls_offload *flow)
drivers/net/ethernet/netronome/nfp/flower/offload.c
1561
extack = flow->common.extack;
drivers/net/ethernet/netronome/nfp/flower/offload.c
1566
ct_map_ent = rhashtable_lookup_fast(&priv->ct_map_table, &flow->cookie,
drivers/net/ethernet/netronome/nfp/flower/offload.c
1573
nfp_flow = nfp_flower_search_fl_table(app, flow->cookie, netdev);
drivers/net/ethernet/netronome/nfp/flower/offload.c
1656
sub_flow = link->sub_flow.flow;
drivers/net/ethernet/netronome/nfp/flower/offload.c
1673
__nfp_flower_update_merge_stats(app, link->merge_flow.flow);
drivers/net/ethernet/netronome/nfp/flower/offload.c
1689
struct flow_cls_offload *flow)
drivers/net/ethernet/netronome/nfp/flower/offload.c
1698
ct_map_ent = rhashtable_lookup_fast(&priv->ct_map_table, &flow->cookie,
drivers/net/ethernet/netronome/nfp/flower/offload.c
1701
return nfp_fl_ct_stats(flow, ct_map_ent);
drivers/net/ethernet/netronome/nfp/flower/offload.c
1703
extack = flow->common.extack;
drivers/net/ethernet/netronome/nfp/flower/offload.c
1704
nfp_flow = nfp_flower_search_fl_table(app, flow->cookie, netdev);
drivers/net/ethernet/netronome/nfp/flower/offload.c
1717
flow_stats_update(&flow->stats, priv->stats[ctx_id].bytes,
drivers/net/ethernet/netronome/nfp/flower/offload.c
589
nfp_flower_update_merge_with_actions(struct nfp_fl_payload *flow,
drivers/net/ethernet/netronome/nfp/flower/offload.c
608
while (act_off < flow->meta.act_len) {
drivers/net/ethernet/netronome/nfp/flower/offload.c
609
a = (struct nfp_fl_act_head *)&flow->action_data[act_off];
drivers/net/ethernet/netronome/nfp/flower/offload.c
705
nfp_flower_populate_merge_match(struct nfp_fl_payload *flow,
drivers/net/ethernet/netronome/nfp/flower/offload.c
710
u8 *mask = flow->mask_data;
drivers/net/ethernet/netronome/nfp/flower/offload.c
971
if (link->sub_flow.flow == sub_flow) {
drivers/net/ethernet/netronome/nfp/flower/offload.c
986
link->merge_flow.flow = merge_flow;
drivers/net/ethernet/netronome/nfp/flower/offload.c
988
link->sub_flow.flow = sub_flow;
drivers/net/ethernet/netronome/nfp/flower/qos_conf.c
166
struct tc_cls_matchall_offload *flow,
drivers/net/ethernet/netronome/nfp/flower/qos_conf.c
169
struct flow_action_entry *paction = &flow->rule->action.entries[0];
drivers/net/ethernet/netronome/nfp/flower/qos_conf.c
170
u32 action_num = flow->rule->action.num_entries;
drivers/net/ethernet/netronome/nfp/flower/qos_conf.c
210
if (!flow_offload_has_one_action(&flow->rule->action)) {
drivers/net/ethernet/netronome/nfp/flower/qos_conf.c
217
if (flow->common.prio != 1) {
drivers/net/ethernet/netronome/nfp/flower/qos_conf.c
230
err = nfp_policer_validate(&flow->rule->action, action, extack, true);
drivers/net/ethernet/netronome/nfp/flower/qos_conf.c
290
struct tc_cls_matchall_offload *flow,
drivers/net/ethernet/netronome/nfp/flower/qos_conf.c
466
struct tc_cls_matchall_offload *flow,
drivers/net/ethernet/netronome/nfp/flower/qos_conf.c
497
flow_stats_update(&flow->stats, diff_bytes, diff_pkts, 0,
drivers/net/ethernet/netronome/nfp/flower/qos_conf.c
522
struct tc_cls_matchall_offload *flow)
drivers/net/ethernet/netronome/nfp/flower/qos_conf.c
524
struct netlink_ext_ack *extack = flow->common.extack;
drivers/net/ethernet/netronome/nfp/flower/qos_conf.c
534
switch (flow->command) {
drivers/net/ethernet/netronome/nfp/flower/qos_conf.c
536
ret = nfp_flower_install_rate_limiter(app, netdev, flow, extack);
drivers/net/ethernet/netronome/nfp/flower/qos_conf.c
539
ret = nfp_flower_remove_rate_limiter(app, netdev, flow, extack);
drivers/net/ethernet/netronome/nfp/flower/qos_conf.c
542
ret = nfp_flower_stats_rate_limiter(app, netdev, flow, extack);
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
1429
struct nfp_fl_payload *flow)
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
1443
internal_dev = flow->pre_tun_rule.dev;
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
1444
payload.vlan_tci = flow->pre_tun_rule.vlan_tci;
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
1445
payload.host_ctx_id = flow->meta.host_ctx_id;
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
1459
key_meta = (struct nfp_flower_meta_tci *)flow->unmasked_data;
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
1468
flow->pre_tun_rule.vlan_tci = payload.vlan_tci;
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
1469
flow->pre_tun_rule.port_idx = payload.port_idx;
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
1483
struct nfp_fl_payload *flow)
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
1494
payload.vlan_tci = flow->pre_tun_rule.vlan_tci;
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
1495
payload.port_idx = flow->pre_tun_rule.port_idx;
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
336
if (neigh->flow)
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
353
neigh->flow = predt;
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
430
if (neigh->flow)
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
450
neigh->flow = NULL;
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
467
void *flow, struct neighbour *neigh, bool is_ipv6,
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
505
nn_entry->flow = NULL;
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
507
struct flowi6 *flowi6 = (struct flowi6 *)flow;
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
518
struct flowi4 *flowi4 = (struct flowi4 *)flow;
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
550
struct flowi6 *flowi6 = (struct flowi6 *)flow;
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
558
struct flowi4 *flowi4 = (struct flowi4 *)flow;
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
576
if (nn_entry->flow)
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
602
if (is_mac_change && nn_entry->flow) {
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
604
nn_entry->flow = NULL;
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
754
struct flowi4 flow = {};
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
767
flow.daddr = payload->ipv4_addr;
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
768
flow.flowi4_proto = IPPROTO_UDP;
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
772
rt = ip_route_output_key(dev_net(netdev), &flow);
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
781
n = dst_neigh_lookup(&rt->dst, &flow.daddr);
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
787
nfp_tun_write_neigh(n->dev, app, &flow, n, false, true);
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
802
struct flowi6 flow = {};
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
814
flow.daddr = payload->ipv6_addr;
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
815
flow.flowi6_proto = IPPROTO_UDP;
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
818
dst = ipv6_stub->ipv6_dst_lookup_flow(dev_net(netdev), NULL, &flow,
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
826
n = dst_neigh_lookup(dst, &flow.daddr);
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c
832
nfp_tun_write_neigh(n->dev, app, &flow, n, true, true);
drivers/net/ethernet/qlogic/qede/qede_filter.c
1994
struct ethtool_rx_flow_rule *flow;
drivers/net/ethernet/qlogic/qede/qede_filter.c
2019
flow = ethtool_rx_flow_rule_create(&input);
drivers/net/ethernet/qlogic/qede/qede_filter.c
2020
if (IS_ERR(flow))
drivers/net/ethernet/qlogic/qede/qede_filter.c
2021
return PTR_ERR(flow);
drivers/net/ethernet/qlogic/qede/qede_filter.c
2023
err = qede_parse_flow_attr(proto, flow->rule, t, &extack);
drivers/net/ethernet/qlogic/qede/qede_filter.c
2028
err = qede_flow_spec_validate(edev, &flow->rule->action, t,
drivers/net/ethernet/qlogic/qede/qede_filter.c
2033
ethtool_rx_flow_rule_destroy(flow);
drivers/net/ethernet/smsc/smsc911x.c
914
u32 flow;
drivers/net/ethernet/smsc/smsc911x.c
923
flow = 0xFFFF0002;
drivers/net/ethernet/smsc/smsc911x.c
925
flow = 0;
drivers/net/ethernet/smsc/smsc911x.c
937
flow = 0;
drivers/net/ethernet/smsc/smsc911x.c
942
smsc911x_mac_write(pdata, FLOW, flow);
drivers/net/ethernet/smsc/smsc9420.c
1046
u32 flow;
drivers/net/ethernet/smsc/smsc9420.c
1054
flow = 0xFFFF0002;
drivers/net/ethernet/smsc/smsc9420.c
1056
flow = 0;
drivers/net/ethernet/smsc/smsc9420.c
1063
flow = 0;
drivers/net/ethernet/smsc/smsc9420.c
1066
smsc9420_reg_write(pd, FLOW, flow);
drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c
231
unsigned int flow = GMAC_FLOW_CTRL_UP;
drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c
236
flow |= GMAC_FLOW_CTRL_RFE;
drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c
240
flow |= GMAC_FLOW_CTRL_TFE;
drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c
245
flow |= FIELD_PREP(GMAC_FLOW_CTRL_PT_MASK, pause_time);
drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c
248
writel(flow, ioaddr + GMAC_FLOW_CTRL);
drivers/net/ethernet/stmicro/stmmac/dwmac100_core.c
132
unsigned int flow = MAC_FLOW_CTRL_ENABLE;
drivers/net/ethernet/stmicro/stmmac/dwmac100_core.c
135
flow |= FIELD_PREP(MAC_FLOW_CTRL_PT_MASK, pause_time);
drivers/net/ethernet/stmicro/stmmac/dwmac100_core.c
136
writel(flow, ioaddr + MAC_FLOW_CTRL);
drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
553
unsigned int flow = 0;
drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
559
flow |= GMAC_RX_FLOW_CTRL_RFE;
drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
563
writel(flow, ioaddr + GMAC_RX_FLOW_CTRL);
drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
572
flow = GMAC_TX_FLOW_CTRL_TFE;
drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
575
flow |= FIELD_PREP(GMAC_TX_FLOW_CTRL_PT_MASK,
drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
578
writel(flow, ioaddr + GMAC_QX_TX_FLOW_CTRL(queue));
drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c
142
u32 flow = readl(ioaddr + XGMAC_MTL_RXQ_FLOW_CONTROL(channel));
drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c
168
flow = u32_replace_bits(flow, rfd, XGMAC_RFD);
drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c
169
flow = u32_replace_bits(flow, rfa, XGMAC_RFA);
drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c
171
writel(flow, ioaddr + XGMAC_MTL_RXQ_FLOW_CONTROL(channel));
drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c
520
u32 flow = readl(ioaddr + XGMAC_RX_FLOW_CTRL);
drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c
528
writel(flow & (~XGMAC_RFE), ioaddr + XGMAC_RX_FLOW_CTRL);
drivers/net/ethernet/sun/cassini.c
2120
struct sk_buff_head *flow = &cp->rx_flows[flowid];
drivers/net/ethernet/sun/cassini.c
2126
__skb_queue_tail(flow, skb);
drivers/net/ethernet/sun/cassini.c
2128
while ((skb = __skb_dequeue(flow))) {
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1168
static int am65_cpsw_run_xdp(struct am65_cpsw_rx_flow *flow,
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1172
struct am65_cpsw_common *common = flow->common;
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1268
static int am65_cpsw_nuss_rx_packets(struct am65_cpsw_rx_flow *flow,
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1271
struct am65_cpsw_rx_chn *rx_chn = &flow->common->rx_chns;
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1273
struct am65_cpsw_common *common = flow->common;
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1282
u32 flow_idx = flow->id;
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1326
xdp_init_buff(&xdp, PAGE_SIZE, &port->xdp_rxq[flow->id]);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1329
*xdp_state = am65_cpsw_run_xdp(flow, port, &xdp, &pkt_len);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1332
am65_cpsw_put_page(flow, page, true);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1359
napi_gro_receive(&flow->napi_rx, skb);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1364
new_page = page_pool_dev_alloc_pages(flow->page_pool);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1371
am65_cpsw_put_page(flow, new_page, true);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1379
am65_cpsw_put_page(flow, new_page, true);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1389
struct am65_cpsw_rx_flow *flow = container_of(timer,
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1393
enable_irq(flow->irq);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1399
struct am65_cpsw_rx_flow *flow = am65_cpsw_napi_to_rx_flow(napi_rx);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1400
struct am65_cpsw_common *common = flow->common;
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1409
ret = am65_cpsw_nuss_rx_packets(flow, &xdp_state);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1422
if (flow->irq_disabled) {
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1423
flow->irq_disabled = false;
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1424
if (unlikely(flow->rx_pace_timeout)) {
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1425
hrtimer_start(&flow->rx_hrtimer,
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1426
ns_to_ktime(flow->rx_pace_timeout),
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1429
enable_irq(flow->irq);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1571
struct am65_cpsw_rx_flow *flow = dev_id;
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1573
flow->irq_disabled = true;
drivers/net/ethernet/ti/am65-cpsw-nuss.c
1575
napi_schedule(&flow->napi_rx);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
2381
struct am65_cpsw_rx_flow *flow;
drivers/net/ethernet/ti/am65-cpsw-nuss.c
2398
flow = &rx_chn->flows[i];
drivers/net/ethernet/ti/am65-cpsw-nuss.c
2399
flow->page_pool = NULL;
drivers/net/ethernet/ti/am65-cpsw-nuss.c
2446
flow = &rx_chn->flows[i];
drivers/net/ethernet/ti/am65-cpsw-nuss.c
2447
flow->id = i;
drivers/net/ethernet/ti/am65-cpsw-nuss.c
2448
flow->common = common;
drivers/net/ethernet/ti/am65-cpsw-nuss.c
2449
flow->irq = -EINVAL;
drivers/net/ethernet/ti/am65-cpsw-nuss.c
2468
flow->irq = k3_udma_glue_rx_get_irq(rx_chn->rx_chn, i);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
2469
if (flow->irq <= 0) {
drivers/net/ethernet/ti/am65-cpsw-nuss.c
2471
flow->irq);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
2472
ret = flow->irq;
drivers/net/ethernet/ti/am65-cpsw-nuss.c
2476
snprintf(flow->name,
drivers/net/ethernet/ti/am65-cpsw-nuss.c
2477
sizeof(flow->name), "%s-rx%d",
drivers/net/ethernet/ti/am65-cpsw-nuss.c
2479
hrtimer_setup(&flow->rx_hrtimer, &am65_cpsw_nuss_rx_timer_callback, CLOCK_MONOTONIC,
drivers/net/ethernet/ti/am65-cpsw-nuss.c
2482
netif_napi_add(common->dma_ndev, &flow->napi_rx,
drivers/net/ethernet/ti/am65-cpsw-nuss.c
2485
ret = devm_request_irq(dev, flow->irq,
drivers/net/ethernet/ti/am65-cpsw-nuss.c
2488
flow->name, flow);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
2491
i, flow->irq, ret);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
2492
flow->irq = -EINVAL;
drivers/net/ethernet/ti/am65-cpsw-nuss.c
2503
netif_napi_del(&flow->napi_rx);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
2507
flow = &rx_chn->flows[i];
drivers/net/ethernet/ti/am65-cpsw-nuss.c
2508
devm_free_irq(dev, flow->irq, flow);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
2509
netif_napi_del(&flow->napi_rx);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
502
static inline void am65_cpsw_put_page(struct am65_cpsw_rx_flow *flow,
drivers/net/ethernet/ti/am65-cpsw-nuss.c
511
struct am65_cpsw_rx_flow *flow;
drivers/net/ethernet/ti/am65-cpsw-nuss.c
515
flow = &rx_chn->flows[id];
drivers/net/ethernet/ti/am65-cpsw-nuss.c
516
napi_disable(&flow->napi_rx);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
517
hrtimer_cancel(&flow->rx_hrtimer);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
531
if (flow->page_pool) {
drivers/net/ethernet/ti/am65-cpsw-nuss.c
532
page_pool_destroy(flow->page_pool);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
533
flow->page_pool = NULL;
drivers/net/ethernet/ti/am65-cpsw-nuss.c
569
struct am65_cpsw_rx_flow *flow;
drivers/net/ethernet/ti/am65-cpsw-nuss.c
575
flow = &rx_chn->flows[id];
drivers/net/ethernet/ti/am65-cpsw-nuss.c
576
pp_params.napi = &flow->napi_rx;
drivers/net/ethernet/ti/am65-cpsw-nuss.c
583
flow->page_pool = pool;
drivers/net/ethernet/ti/am65-cpsw-nuss.c
595
id, flow->napi_rx.napi_id);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
607
page = page_pool_dev_alloc_pages(flow->page_pool);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
620
am65_cpsw_put_page(flow, page, false);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
625
napi_enable(&flow->napi_rx);
drivers/net/ethernet/ti/am65-cpsw-nuss.c
766
static inline void am65_cpsw_put_page(struct am65_cpsw_rx_flow *flow,
drivers/net/ethernet/ti/am65-cpsw-nuss.c
770
page_pool_put_full_page(flow->page_pool, page, allow_direct);
drivers/net/ethernet/ti/icssg/icssg_common.c
1419
int flow = emac->is_sr1 ?
drivers/net/ethernet/ti/icssg/icssg_common.c
1428
while (flow--) {
drivers/net/ethernet/ti/icssg/icssg_common.c
1430
num_rx = emac_rx_packet_zc(emac, flow, budget);
drivers/net/ethernet/ti/icssg/icssg_common.c
1435
ret = emac_rx_packet(emac, flow, &xdp_state);
drivers/net/gtp.c
1781
pctx->u.v0.flow = nla_get_u16(info->attrs[GTPA_FLOW]);
drivers/net/gtp.c
2199
nla_put_u16(skb, GTPA_FLOW, pctx->u.v0.flow))
drivers/net/gtp.c
397
gtp0->number != 0xff || gtp0->flow);
drivers/net/gtp.c
410
hdr->flow = 0;
drivers/net/gtp.c
47
u16 flow;
drivers/net/gtp.c
960
gtp0->flow = htons(pctx->u.v0.flow);
drivers/net/hyperv/hyperv_net.h
1087
struct flow_keys flow;
drivers/net/hyperv/hyperv_net.h
1093
if (!skb_flow_dissect_flow_keys(skb, &flow, 0))
drivers/net/hyperv/hyperv_net.h
1096
switch (flow.basic.ip_proto) {
drivers/net/hyperv/hyperv_net.h
1098
if (flow.basic.n_proto == htons(ETH_P_IP))
drivers/net/hyperv/hyperv_net.h
1100
else if (flow.basic.n_proto == htons(ETH_P_IPV6))
drivers/net/hyperv/hyperv_net.h
1106
if (flow.basic.n_proto == htons(ETH_P_IP))
drivers/net/hyperv/hyperv_net.h
1108
else if (flow.basic.n_proto == htons(ETH_P_IPV6))
drivers/net/hyperv/hyperv_net.h
1117
if (flow.basic.n_proto == htons(ETH_P_IP))
drivers/net/hyperv/hyperv_net.h
1118
hash = jhash2((u32 *)&flow.addrs.v4addrs, 2, hashrnd);
drivers/net/hyperv/hyperv_net.h
1119
else if (flow.basic.n_proto == htons(ETH_P_IPV6))
drivers/net/hyperv/hyperv_net.h
1120
hash = jhash2((u32 *)&flow.addrs.v6addrs, 8, hashrnd);
drivers/net/mctp/mctp-i2c.c
370
struct mctp_flow *flow;
drivers/net/mctp/mctp-i2c.c
373
flow = skb_ext_find(skb, SKB_EXT_MCTP);
drivers/net/mctp/mctp-i2c.c
374
if (!flow)
drivers/net/mctp/mctp-i2c.c
377
key = flow->key;
drivers/net/mctp/mctp-i2c.c
458
struct mctp_flow *flow;
drivers/net/mctp/mctp-i2c.c
462
flow = skb_ext_find(skb, SKB_EXT_MCTP);
drivers/net/mctp/mctp-i2c.c
463
if (!flow)
drivers/net/mctp/mctp-i2c.c
466
key = flow->key;
drivers/net/phy/mscc/mscc_macsec.c
371
struct macsec_flow *flow)
drivers/net/phy/mscc/mscc_macsec.c
374
enum macsec_bank bank = flow->bank;
drivers/net/phy/mscc/mscc_macsec.c
375
u32 val, match = 0, mask = 0, action = 0, idx = flow->index;
drivers/net/phy/mscc/mscc_macsec.c
377
if (flow->match.tagged)
drivers/net/phy/mscc/mscc_macsec.c
379
if (flow->match.untagged)
drivers/net/phy/mscc/mscc_macsec.c
382
if (bank == MACSEC_INGR && flow->assoc_num >= 0) {
drivers/net/phy/mscc/mscc_macsec.c
383
match |= MSCC_MS_SAM_MISC_MATCH_AN(flow->assoc_num);
drivers/net/phy/mscc/mscc_macsec.c
387
if (bank == MACSEC_INGR && flow->match.sci && flow->rx_sa->sc->sci) {
drivers/net/phy/mscc/mscc_macsec.c
388
u64 sci = (__force u64)flow->rx_sa->sc->sci;
drivers/net/phy/mscc/mscc_macsec.c
400
if (flow->match.etype) {
drivers/net/phy/mscc/mscc_macsec.c
404
MSCC_MS_SAM_MAC_SA_MATCH_HI_ETYPE((__force u32)htons(flow->etype)));
drivers/net/phy/mscc/mscc_macsec.c
407
match |= MSCC_MS_SAM_MISC_MATCH_PRIORITY(flow->priority);
drivers/net/phy/mscc/mscc_macsec.c
413
if (flow->action.drop)
drivers/net/phy/mscc/mscc_macsec.c
415
else if (flow->action.bypass || flow->port == MSCC_MS_PORT_UNCONTROLLED)
drivers/net/phy/mscc/mscc_macsec.c
423
MSCC_MS_SAM_FLOW_CTRL_DEST_PORT(flow->port);
drivers/net/phy/mscc/mscc_macsec.c
462
struct macsec_flow *flow)
drivers/net/phy/mscc/mscc_macsec.c
464
enum macsec_bank bank = flow->bank;
drivers/net/phy/mscc/mscc_macsec.c
465
u32 val, idx = flow->index;
drivers/net/phy/mscc/mscc_macsec.c
467
if ((flow->bank == MACSEC_INGR && flow->rx_sa && !flow->rx_sa->active) ||
drivers/net/phy/mscc/mscc_macsec.c
468
(flow->bank == MACSEC_EGR && flow->tx_sa && !flow->tx_sa->active))
drivers/net/phy/mscc/mscc_macsec.c
481
struct macsec_flow *flow)
drivers/net/phy/mscc/mscc_macsec.c
483
enum macsec_bank bank = flow->bank;
drivers/net/phy/mscc/mscc_macsec.c
484
u32 val, idx = flow->index;
drivers/net/phy/mscc/mscc_macsec.c
495
static u32 vsc8584_macsec_flow_context_id(struct macsec_flow *flow)
drivers/net/phy/mscc/mscc_macsec.c
497
if (flow->bank == MACSEC_INGR)
drivers/net/phy/mscc/mscc_macsec.c
498
return flow->index + MSCC_MS_MAX_FLOWS;
drivers/net/phy/mscc/mscc_macsec.c
500
return flow->index;
drivers/net/phy/mscc/mscc_macsec.c
520
struct macsec_flow *flow,
drivers/net/phy/mscc/mscc_macsec.c
524
enum macsec_bank bank = flow->bank;
drivers/net/phy/mscc/mscc_macsec.c
525
int i, ret, index = flow->index;
drivers/net/phy/mscc/mscc_macsec.c
560
vsc8584_macsec_flow_context_id(flow));
drivers/net/phy/mscc/mscc_macsec.c
577
flow->rx_sa->next_pn : flow->tx_sa->next_pn);
drivers/net/phy/mscc/mscc_macsec.c
586
sci = (__force u64)(bank == MACSEC_INGR ? flow->rx_sa->sc->sci : priv->secy->sci);
drivers/net/phy/mscc/mscc_macsec.c
596
flow->has_transformation = true;
drivers/net/phy/mscc/mscc_macsec.c
605
struct macsec_flow *flow;
drivers/net/phy/mscc/mscc_macsec.c
613
flow = kzalloc_obj(*flow);
drivers/net/phy/mscc/mscc_macsec.c
614
if (!flow)
drivers/net/phy/mscc/mscc_macsec.c
618
flow->index = index;
drivers/net/phy/mscc/mscc_macsec.c
619
flow->bank = bank;
drivers/net/phy/mscc/mscc_macsec.c
620
flow->priority = 8;
drivers/net/phy/mscc/mscc_macsec.c
621
flow->assoc_num = -1;
drivers/net/phy/mscc/mscc_macsec.c
623
list_add_tail(&flow->list, &priv->macsec_flows);
drivers/net/phy/mscc/mscc_macsec.c
624
return flow;
drivers/net/phy/mscc/mscc_macsec.c
628
struct macsec_flow *flow)
drivers/net/phy/mscc/mscc_macsec.c
630
unsigned long *bitmap = flow->bank == MACSEC_INGR ?
drivers/net/phy/mscc/mscc_macsec.c
633
list_del(&flow->list);
drivers/net/phy/mscc/mscc_macsec.c
634
clear_bit(flow->index, bitmap);
drivers/net/phy/mscc/mscc_macsec.c
635
kfree(flow);
drivers/net/phy/mscc/mscc_macsec.c
639
struct macsec_flow *flow)
drivers/net/phy/mscc/mscc_macsec.c
641
flow->port = MSCC_MS_PORT_CONTROLLED;
drivers/net/phy/mscc/mscc_macsec.c
642
vsc8584_macsec_flow(phydev, flow);
drivers/net/phy/mscc/mscc_macsec.c
647
struct macsec_flow *flow;
drivers/net/phy/mscc/mscc_macsec.c
650
flow = vsc8584_macsec_alloc_flow(phydev->priv, MACSEC_INGR);
drivers/net/phy/mscc/mscc_macsec.c
651
if (IS_ERR(flow))
drivers/net/phy/mscc/mscc_macsec.c
652
return PTR_ERR(flow);
drivers/net/phy/mscc/mscc_macsec.c
654
flow->priority = 15;
drivers/net/phy/mscc/mscc_macsec.c
655
flow->port = MSCC_MS_PORT_UNCONTROLLED;
drivers/net/phy/mscc/mscc_macsec.c
656
flow->match.tagged = 1;
drivers/net/phy/mscc/mscc_macsec.c
657
flow->match.untagged = 1;
drivers/net/phy/mscc/mscc_macsec.c
658
flow->match.etype = 1;
drivers/net/phy/mscc/mscc_macsec.c
659
flow->etype = ETH_P_PAE;
drivers/net/phy/mscc/mscc_macsec.c
660
flow->action.bypass = 1;
drivers/net/phy/mscc/mscc_macsec.c
662
vsc8584_macsec_flow(phydev, flow);
drivers/net/phy/mscc/mscc_macsec.c
663
vsc8584_macsec_flow_enable(phydev, flow);
drivers/net/phy/mscc/mscc_macsec.c
666
flow = vsc8584_macsec_alloc_flow(phydev->priv, MACSEC_EGR);
drivers/net/phy/mscc/mscc_macsec.c
667
if (IS_ERR(flow))
drivers/net/phy/mscc/mscc_macsec.c
668
return PTR_ERR(flow);
drivers/net/phy/mscc/mscc_macsec.c
670
flow->priority = 15;
drivers/net/phy/mscc/mscc_macsec.c
671
flow->port = MSCC_MS_PORT_COMMON;
drivers/net/phy/mscc/mscc_macsec.c
672
flow->match.untagged = 1;
drivers/net/phy/mscc/mscc_macsec.c
673
flow->match.etype = 1;
drivers/net/phy/mscc/mscc_macsec.c
674
flow->etype = ETH_P_PAE;
drivers/net/phy/mscc/mscc_macsec.c
675
flow->action.bypass = 1;
drivers/net/phy/mscc/mscc_macsec.c
677
vsc8584_macsec_flow(phydev, flow);
drivers/net/phy/mscc/mscc_macsec.c
678
vsc8584_macsec_flow_enable(phydev, flow);
drivers/net/phy/mscc/mscc_macsec.c
684
struct macsec_flow *flow)
drivers/net/phy/mscc/mscc_macsec.c
686
vsc8584_macsec_flow_disable(phydev, flow);
drivers/net/phy/mscc/mscc_macsec.c
687
vsc8584_macsec_free_flow(phydev->priv, flow);
drivers/net/phy/mscc/mscc_macsec.c
691
struct macsec_flow *flow, bool update)
drivers/net/phy/mscc/mscc_macsec.c
697
flow->assoc_num = ctx->sa.assoc_num;
drivers/net/phy/mscc/mscc_macsec.c
698
flow->rx_sa = ctx->sa.rx_sa;
drivers/net/phy/mscc/mscc_macsec.c
701
flow->match.tagged = 1;
drivers/net/phy/mscc/mscc_macsec.c
702
flow->match.sci = 1;
drivers/net/phy/mscc/mscc_macsec.c
705
flow->match.untagged = 1;
drivers/net/phy/mscc/mscc_macsec.c
707
vsc8584_macsec_add_flow(phydev, flow);
drivers/net/phy/mscc/mscc_macsec.c
712
ret = vsc8584_macsec_transformation(phydev, flow, ctx->sa.key);
drivers/net/phy/mscc/mscc_macsec.c
714
vsc8584_macsec_free_flow(phydev->priv, flow);
drivers/net/phy/mscc/mscc_macsec.c
720
struct macsec_flow *flow, bool update)
drivers/net/phy/mscc/mscc_macsec.c
724
flow->assoc_num = ctx->sa.assoc_num;
drivers/net/phy/mscc/mscc_macsec.c
725
flow->tx_sa = ctx->sa.tx_sa;
drivers/net/phy/mscc/mscc_macsec.c
728
flow->match.untagged = 1;
drivers/net/phy/mscc/mscc_macsec.c
730
vsc8584_macsec_add_flow(ctx->phydev, flow);
drivers/net/phy/mscc/mscc_macsec.c
735
ret = vsc8584_macsec_transformation(ctx->phydev, flow, ctx->sa.key);
drivers/net/phy/mscc/mscc_macsec.c
737
vsc8584_macsec_free_flow(ctx->phydev->priv, flow);
drivers/net/phy/mscc/mscc_macsec.c
745
struct macsec_flow *flow, *tmp;
drivers/net/phy/mscc/mscc_macsec.c
747
list_for_each_entry_safe(flow, tmp, &priv->macsec_flows, list)
drivers/net/phy/mscc/mscc_macsec.c
748
vsc8584_macsec_flow_enable(ctx->phydev, flow);
drivers/net/phy/mscc/mscc_macsec.c
756
struct macsec_flow *flow, *tmp;
drivers/net/phy/mscc/mscc_macsec.c
758
list_for_each_entry_safe(flow, tmp, &priv->macsec_flows, list)
drivers/net/phy/mscc/mscc_macsec.c
759
vsc8584_macsec_flow_disable(ctx->phydev, flow);
drivers/net/phy/mscc/mscc_macsec.c
785
struct macsec_flow *flow, *tmp;
drivers/net/phy/mscc/mscc_macsec.c
787
list_for_each_entry_safe(flow, tmp, &priv->macsec_flows, list)
drivers/net/phy/mscc/mscc_macsec.c
788
vsc8584_macsec_del_flow(ctx->phydev, flow);
drivers/net/phy/mscc/mscc_macsec.c
817
struct macsec_flow *flow, *tmp;
drivers/net/phy/mscc/mscc_macsec.c
819
list_for_each_entry_safe(flow, tmp, &priv->macsec_flows, list) {
drivers/net/phy/mscc/mscc_macsec.c
820
if (flow->bank == MACSEC_INGR && flow->rx_sa &&
drivers/net/phy/mscc/mscc_macsec.c
821
flow->rx_sa->sc->sci == ctx->rx_sc->sci)
drivers/net/phy/mscc/mscc_macsec.c
822
vsc8584_macsec_del_flow(ctx->phydev, flow);
drivers/net/phy/mscc/mscc_macsec.c
832
struct macsec_flow *flow;
drivers/net/phy/mscc/mscc_macsec.c
835
flow = vsc8584_macsec_alloc_flow(priv, MACSEC_INGR);
drivers/net/phy/mscc/mscc_macsec.c
836
if (IS_ERR(flow))
drivers/net/phy/mscc/mscc_macsec.c
837
return PTR_ERR(flow);
drivers/net/phy/mscc/mscc_macsec.c
839
ret = __vsc8584_macsec_add_rxsa(ctx, flow, false);
drivers/net/phy/mscc/mscc_macsec.c
843
vsc8584_macsec_flow_enable(phydev, flow);
drivers/net/phy/mscc/mscc_macsec.c
849
struct macsec_flow *flow;
drivers/net/phy/mscc/mscc_macsec.c
855
flow = vsc8584_macsec_find_flow(ctx, MACSEC_INGR);
drivers/net/phy/mscc/mscc_macsec.c
856
if (IS_ERR(flow))
drivers/net/phy/mscc/mscc_macsec.c
857
return PTR_ERR(flow);
drivers/net/phy/mscc/mscc_macsec.c
860
vsc8584_macsec_flow_disable(ctx->phydev, flow);
drivers/net/phy/mscc/mscc_macsec.c
862
ret = __vsc8584_macsec_add_rxsa(ctx, flow, true);
drivers/net/phy/mscc/mscc_macsec.c
866
vsc8584_macsec_flow_enable(ctx->phydev, flow);
drivers/net/phy/mscc/mscc_macsec.c
872
struct macsec_flow *flow;
drivers/net/phy/mscc/mscc_macsec.c
874
flow = vsc8584_macsec_find_flow(ctx, MACSEC_INGR);
drivers/net/phy/mscc/mscc_macsec.c
875
if (IS_ERR(flow))
drivers/net/phy/mscc/mscc_macsec.c
876
return PTR_ERR(flow);
drivers/net/phy/mscc/mscc_macsec.c
878
vsc8584_macsec_del_flow(ctx->phydev, flow);
drivers/net/phy/mscc/mscc_macsec.c
886
struct macsec_flow *flow;
drivers/net/phy/mscc/mscc_macsec.c
889
flow = vsc8584_macsec_alloc_flow(priv, MACSEC_EGR);
drivers/net/phy/mscc/mscc_macsec.c
890
if (IS_ERR(flow))
drivers/net/phy/mscc/mscc_macsec.c
891
return PTR_ERR(flow);
drivers/net/phy/mscc/mscc_macsec.c
893
ret = __vsc8584_macsec_add_txsa(ctx, flow, false);
drivers/net/phy/mscc/mscc_macsec.c
897
vsc8584_macsec_flow_enable(phydev, flow);
drivers/net/phy/mscc/mscc_macsec.c
903
struct macsec_flow *flow;
drivers/net/phy/mscc/mscc_macsec.c
909
flow = vsc8584_macsec_find_flow(ctx, MACSEC_EGR);
drivers/net/phy/mscc/mscc_macsec.c
910
if (IS_ERR(flow))
drivers/net/phy/mscc/mscc_macsec.c
911
return PTR_ERR(flow);
drivers/net/phy/mscc/mscc_macsec.c
914
vsc8584_macsec_flow_disable(ctx->phydev, flow);
drivers/net/phy/mscc/mscc_macsec.c
916
ret = __vsc8584_macsec_add_txsa(ctx, flow, true);
drivers/net/phy/mscc/mscc_macsec.c
920
vsc8584_macsec_flow_enable(ctx->phydev, flow);
drivers/net/phy/mscc/mscc_macsec.c
926
struct macsec_flow *flow;
drivers/net/phy/mscc/mscc_macsec.c
928
flow = vsc8584_macsec_find_flow(ctx, MACSEC_EGR);
drivers/net/phy/mscc/mscc_macsec.c
929
if (IS_ERR(flow))
drivers/net/phy/mscc/mscc_macsec.c
930
return PTR_ERR(flow);
drivers/net/phy/mscc/mscc_macsec.c
932
vsc8584_macsec_del_flow(ctx->phydev, flow);
drivers/net/phy/mscc/mscc_macsec.c
975
struct macsec_flow *flow, *tmp;
drivers/net/phy/mscc/mscc_macsec.c
986
list_for_each_entry_safe(flow, tmp, &priv->macsec_flows, list) {
drivers/net/phy/mscc/mscc_macsec.c
989
if (flow->bank != MACSEC_EGR || !flow->has_transformation)
drivers/net/phy/mscc/mscc_macsec.c
993
MSCC_MS_XFORM_REC(flow->index, rec));
drivers/net/phy/mscc/mscc_macsec.c
995
vsc8584_macsec_flow_disable(phydev, flow);
drivers/net/phy/mscc/mscc_macsec.c
996
macsec_pn_wrapped(priv->secy, flow->tx_sa);
drivers/net/phy/mscc/mscc_ptp.c
811
static int vsc85xx_ts_ptp_action_flow(struct phy_device *phydev, enum ts_blk blk, u8 flow, enum ptp_cmd cmd)
drivers/net/phy/mscc/mscc_ptp.c
818
MSCC_ANA_PTP_FLOW_PTP_0_FIELD(flow), val);
drivers/net/phy/mscc/mscc_ptp.c
829
vsc85xx_ts_write_csr(phydev, blk, MSCC_ANA_PTP_FLOW_PTP_ACTION(flow),
drivers/net/phy/mscc/mscc_ptp.c
845
MSCC_ANA_PTP_FLOW_PTP_ACTION2(flow), val);
drivers/net/usb/lan78xx.c
2417
u32 flow = 0;
drivers/net/usb/lan78xx.c
2422
flow |= FLOW_CR_TX_FCEN_ | pause_time_quanta;
drivers/net/usb/lan78xx.c
2425
flow |= FLOW_CR_RX_FCEN_;
drivers/net/usb/lan78xx.c
2453
return lan78xx_write_reg(dev, FLOW, flow);
drivers/net/usb/smsc75xx.c
585
u32 flow = 0, fct_flow = 0;
drivers/net/usb/smsc75xx.c
592
flow = (FLOW_TX_FCEN | 0xFFFF);
drivers/net/usb/smsc75xx.c
598
flow |= FLOW_RX_FCEN;
drivers/net/usb/smsc75xx.c
607
ret = smsc75xx_write_reg(dev, FLOW, flow);
drivers/net/usb/smsc95xx.c
543
u32 flow = 0, afc_cfg;
drivers/net/usb/smsc95xx.c
561
flow = 0xFFFF0002;
drivers/net/usb/smsc95xx.c
565
flow |= 0xFFFF0000;
drivers/net/usb/smsc95xx.c
578
ret = smsc95xx_write_reg(dev, FLOW, flow);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
103
u32 brcmf_flowring_create(struct brcmf_flowring *flow, u8 da[ETH_ALEN],
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
116
sta = (flow->addr_mode[ifidx] == ADDR_INDIRECT);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
122
if ((sta) && (flow->tdls_active) &&
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
123
(brcmf_flowring_is_tdls_mac(flow, da))) {
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
130
hash = flow->hash;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
141
for (i = 0; i < flow->nrofrings; i++) {
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
142
if (flow->rings[i] == NULL)
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
145
if (i == flow->nrofrings)
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
160
flow->rings[i] = ring;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
168
u8 brcmf_flowring_tid(struct brcmf_flowring *flow, u16 flowid)
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
172
ring = flow->rings[flowid];
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
174
return flow->hash[ring->hash_id].fifo;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
178
static void brcmf_flowring_block(struct brcmf_flowring *flow, u16 flowid,
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
190
spin_lock_irqsave(&flow->block_lock, flags);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
192
ring = flow->rings[flowid];
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
194
spin_unlock_irqrestore(&flow->block_lock, flags);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
197
ifidx = brcmf_flowring_ifidx_get(flow, flowid);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
200
for (i = 0; i < flow->nrofrings; i++) {
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
201
if ((flow->rings[i]) && (i != flowid)) {
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
202
ring = flow->rings[i];
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
204
(brcmf_flowring_ifidx_get(flow, i) == ifidx)) {
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
212
flow->rings[flowid]->blocked = blocked;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
214
spin_unlock_irqrestore(&flow->block_lock, flags);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
218
bus_if = dev_get_drvdata(flow->dev);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
223
spin_unlock_irqrestore(&flow->block_lock, flags);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
227
void brcmf_flowring_delete(struct brcmf_flowring *flow, u16 flowid)
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
229
struct brcmf_bus *bus_if = dev_get_drvdata(flow->dev);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
236
ring = flow->rings[flowid];
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
240
ifidx = brcmf_flowring_ifidx_get(flow, flowid);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
243
brcmf_flowring_block(flow, flowid, false);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
245
flow->hash[hash_idx].ifidx = BRCMF_FLOWRING_INVALID_IFIDX;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
246
eth_zero_addr(flow->hash[hash_idx].mac);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
247
flow->rings[flowid] = NULL;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
259
u32 brcmf_flowring_enqueue(struct brcmf_flowring *flow, u16 flowid,
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
264
ring = flow->rings[flowid];
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
270
brcmf_flowring_block(flow, flowid, true);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
279
brcmf_flowring_block(flow, flowid, false);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
285
struct sk_buff *brcmf_flowring_dequeue(struct brcmf_flowring *flow, u16 flowid)
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
290
ring = flow->rings[flowid];
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
298
brcmf_flowring_block(flow, flowid, false);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
306
void brcmf_flowring_reinsert(struct brcmf_flowring *flow, u16 flowid,
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
311
ring = flow->rings[flowid];
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
317
u32 brcmf_flowring_qlen(struct brcmf_flowring *flow, u16 flowid)
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
321
ring = flow->rings[flowid];
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
332
void brcmf_flowring_open(struct brcmf_flowring *flow, u16 flowid)
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
336
ring = flow->rings[flowid];
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
346
u8 brcmf_flowring_ifidx_get(struct brcmf_flowring *flow, u16 flowid)
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
351
ring = flow->rings[flowid];
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
354
return flow->hash[hash_idx].ifidx;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
360
struct brcmf_flowring *flow;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
363
flow = kzalloc_obj(*flow);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
364
if (flow) {
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
365
flow->dev = dev;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
366
flow->nrofrings = nrofrings;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
367
spin_lock_init(&flow->block_lock);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
368
for (i = 0; i < ARRAY_SIZE(flow->addr_mode); i++)
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
369
flow->addr_mode[i] = ADDR_INDIRECT;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
370
for (i = 0; i < ARRAY_SIZE(flow->hash); i++)
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
371
flow->hash[i].ifidx = BRCMF_FLOWRING_INVALID_IFIDX;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
372
flow->rings = kzalloc_objs(*flow->rings, nrofrings);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
373
if (!flow->rings) {
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
374
kfree(flow);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
375
flow = NULL;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
379
return flow;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
383
void brcmf_flowring_detach(struct brcmf_flowring *flow)
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
385
struct brcmf_bus *bus_if = dev_get_drvdata(flow->dev);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
391
for (flowid = 0; flowid < flow->nrofrings; flowid++) {
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
392
if (flow->rings[flowid])
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
396
search = flow->tdls_entry;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
402
kfree(flow->rings);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
403
kfree(flow);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
407
void brcmf_flowring_configure_addr_mode(struct brcmf_flowring *flow, int ifidx,
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
410
struct brcmf_bus *bus_if = dev_get_drvdata(flow->dev);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
415
if (flow->addr_mode[ifidx] != addr_mode) {
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
416
for (i = 0; i < ARRAY_SIZE(flow->hash); i++) {
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
417
if (flow->hash[i].ifidx == ifidx) {
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
418
flowid = flow->hash[i].flowid;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
419
if (flow->rings[flowid]->status != RING_OPEN)
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
424
flow->addr_mode[ifidx] = addr_mode;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
429
void brcmf_flowring_delete_peer(struct brcmf_flowring *flow, int ifidx,
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
43
brcmf_flowring_is_tdls_mac(struct brcmf_flowring *flow, u8 mac[ETH_ALEN])
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
432
struct brcmf_bus *bus_if = dev_get_drvdata(flow->dev);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
441
sta = (flow->addr_mode[ifidx] == ADDR_INDIRECT);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
443
search = flow->tdls_entry;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
454
hash = flow->hash;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
458
flowid = flow->hash[i].flowid;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
459
if (flow->rings[flowid]->status == RING_OPEN)
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
468
flow->tdls_entry = search->next;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
47
search = flow->tdls_entry;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
470
if (flow->tdls_entry == NULL)
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
471
flow->tdls_active = false;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
476
void brcmf_flowring_add_tdls_peer(struct brcmf_flowring *flow, int ifidx,
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
488
if (flow->tdls_entry == NULL) {
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
489
flow->tdls_entry = tdls_entry;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
491
search = flow->tdls_entry;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
502
flow->tdls_active = true;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
59
u32 brcmf_flowring_lookup(struct brcmf_flowring *flow, u8 da[ETH_ALEN],
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
71
sta = (flow->addr_mode[ifidx] == ADDR_INDIRECT);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
77
if ((sta) && (flow->tdls_active) &&
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
78
(brcmf_flowring_is_tdls_mac(flow, da))) {
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
85
hash = flow->hash;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h
50
u32 brcmf_flowring_lookup(struct brcmf_flowring *flow, u8 da[ETH_ALEN],
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h
52
u32 brcmf_flowring_create(struct brcmf_flowring *flow, u8 da[ETH_ALEN],
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h
54
void brcmf_flowring_delete(struct brcmf_flowring *flow, u16 flowid);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h
55
void brcmf_flowring_open(struct brcmf_flowring *flow, u16 flowid);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h
56
u8 brcmf_flowring_tid(struct brcmf_flowring *flow, u16 flowid);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h
57
u32 brcmf_flowring_enqueue(struct brcmf_flowring *flow, u16 flowid,
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h
59
struct sk_buff *brcmf_flowring_dequeue(struct brcmf_flowring *flow, u16 flowid);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h
60
void brcmf_flowring_reinsert(struct brcmf_flowring *flow, u16 flowid,
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h
62
u32 brcmf_flowring_qlen(struct brcmf_flowring *flow, u16 flowid);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h
63
u8 brcmf_flowring_ifidx_get(struct brcmf_flowring *flow, u16 flowid);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h
65
void brcmf_flowring_detach(struct brcmf_flowring *flow);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h
66
void brcmf_flowring_configure_addr_mode(struct brcmf_flowring *flow, int ifidx,
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h
68
void brcmf_flowring_delete_peer(struct brcmf_flowring *flow, int ifidx,
drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h
70
void brcmf_flowring_add_tdls_peer(struct brcmf_flowring *flow, int ifidx,
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
1255
brcmf_flowring_open(msgbuf->flow, flowid);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
1278
brcmf_flowring_delete(msgbuf->flow, flowid);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
1390
qlen = brcmf_flowring_qlen(msgbuf->flow, flowid);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
1407
struct brcmf_flowring *flow = msgbuf->flow;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
1415
flow->rings[flowid]->status = RING_CLOSING;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
1447
ifidx = brcmf_flowring_ifidx_get(msgbuf->flow, flowid);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
1498
for (i = 0; i < msgbuf->flow->nrofrings; i++) {
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
1499
if (!msgbuf->flow->rings[i])
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
1501
ring = msgbuf->flow->rings[i];
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
1505
hash = &msgbuf->flow->hash[ring->hash_id];
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
1611
msgbuf->flow = brcmf_flowring_attach(drvr->bus_if->dev,
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
1613
if (!msgbuf->flow)
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
1678
brcmf_flowring_detach(msgbuf->flow);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
266
struct brcmf_flowring *flow;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
560
brcmf_flowring_delete(msgbuf->flow, flowid);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
603
brcmf_flowring_delete(msgbuf->flow, flowid);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
625
create->tid = brcmf_flowring_tid(msgbuf->flow, flowid);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
677
flowid = brcmf_flowring_create(msgbuf->flow, eh->h_dest,
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
700
struct brcmf_flowring *flow = msgbuf->flow;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
718
while (brcmf_flowring_qlen(flow, flowid)) {
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
719
skb = brcmf_flowring_dequeue(flow, flowid);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
722
brcmf_flowring_qlen(flow, flowid));
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
729
brcmf_flowring_reinsert(flow, flowid, skb);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
737
brcmf_flowring_reinsert(flow, flowid, skb);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
746
tx_msghdr->msg.ifidx = brcmf_flowring_ifidx_get(flow, flowid);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
804
struct brcmf_flowring *flow = msgbuf->flow;
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
810
flowid = brcmf_flowring_lookup(flow, eh->h_dest, skb->priority, ifidx);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
816
brcmf_flowring_enqueue(flow, flowid, skb);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
820
queue_count = brcmf_flowring_enqueue(flow, flowid, skb);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
834
brcmf_flowring_configure_addr_mode(msgbuf->flow, ifidx, addr_mode);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
843
brcmf_flowring_delete_peer(msgbuf->flow, ifidx, peer);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
852
brcmf_flowring_add_tdls_peer(msgbuf->flow, ifidx, peer);
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2194
struct mt7915_twt_flow *flow)
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2197
u32 duration = flow->duration << 8;
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2204
list_add(&flow->list, &dev->twt_list);
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2216
list_add(&flow->list, &iter->list);
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2222
list_add_tail(&flow->list, &dev->twt_list);
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2275
f = &msta->twt.flow[i];
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2298
struct mt7915_twt_flow *flow;
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2310
if (hweight8(msta->twt.flowid_mask) == ARRAY_SIZE(msta->twt.flow))
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2331
flow = &msta->twt.flow[flowid];
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2332
memset(flow, 0, sizeof(*flow));
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2333
INIT_LIST_HEAD(&flow->list);
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2334
flow->wcid = msta->wcid.idx;
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2335
flow->table_id = table_id;
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2336
flow->id = flowid;
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2337
flow->duration = twt_agrt->min_twt_dur;
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2338
flow->mantissa = twt_agrt->mantissa;
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2339
flow->exp = exp;
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2340
flow->protection = !!(req_type & IEEE80211_TWT_REQTYPE_PROTECTION);
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2341
flow->flowtype = !!(req_type & IEEE80211_TWT_REQTYPE_FLOWTYPE);
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2342
flow->trigger = !!(req_type & IEEE80211_TWT_REQTYPE_TRIGGER);
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2350
flow->sched = true;
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2351
flow->start_tsf = mt7915_mac_twt_sched_list_add(dev, flow);
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2353
div_u64_rem(curr_tsf - flow->start_tsf, interval, &rem);
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2357
list_add_tail(&flow->list, &dev->twt_list);
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2359
flow->tsf = le64_to_cpu(twt_agrt->twt);
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2361
if (mt7915_mcu_twt_agrt_update(dev, msta->vif, flow, MCU_TWT_AGRT_ADD))
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2383
struct mt7915_twt_flow *flow;
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2387
if (flowid >= ARRAY_SIZE(msta->twt.flow))
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2393
flow = &msta->twt.flow[flowid];
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2394
if (mt7915_mcu_twt_agrt_update(dev, msta->vif, flow,
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2398
list_del_init(&flow->list);
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
2400
dev->twt.table_mask &= ~BIT(flow->table_id);
drivers/net/wireless/mediatek/mt76/mt7915/main.c
854
for (i = 0; i < ARRAY_SIZE(msta->twt.flow); i++)
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
3987
struct mt7915_twt_flow *flow,
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
4007
.tbl_idx = flow->table_id,
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
4010
.flowid = flow->id,
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
4011
.peer_id = cpu_to_le16(flow->wcid),
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
4012
.duration = flow->duration,
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
4014
.start_tsf = cpu_to_le64(flow->tsf),
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
4015
.mantissa = flow->mantissa,
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
4016
.exponent = flow->exp,
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
4020
if (flow->protection)
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
4022
if (!flow->flowtype)
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
4024
if (flow->trigger)
drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h
152
struct mt7915_twt_flow flow[MT7915_MAX_STA_TWT_AGRT];
drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h
456
struct mt7915_twt_flow *flow,
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3113
struct mt7996_twt_flow *flow)
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3116
u32 duration = flow->duration << 8;
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3123
list_add(&flow->list, &dev->twt_list);
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3135
list_add(&flow->list, &iter->list);
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3141
list_add_tail(&flow->list, &dev->twt_list);
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3194
f = &msta_link->twt.flow[i];
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3218
struct mt7996_twt_flow *flow;
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3230
ARRAY_SIZE(msta_link->twt.flow))
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3251
flow = &msta_link->twt.flow[flowid];
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3252
memset(flow, 0, sizeof(*flow));
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3253
INIT_LIST_HEAD(&flow->list);
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3254
flow->wcid = msta_link->wcid.idx;
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3255
flow->table_id = table_id;
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3256
flow->id = flowid;
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3257
flow->duration = twt_agrt->min_twt_dur;
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3258
flow->mantissa = twt_agrt->mantissa;
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3259
flow->exp = exp;
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3260
flow->protection = !!(req_type & IEEE80211_TWT_REQTYPE_PROTECTION);
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3261
flow->flowtype = !!(req_type & IEEE80211_TWT_REQTYPE_FLOWTYPE);
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3262
flow->trigger = !!(req_type & IEEE80211_TWT_REQTYPE_TRIGGER);
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3270
flow->sched = true;
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3271
flow->start_tsf = mt7996_mac_twt_sched_list_add(dev, flow);
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3273
div_u64_rem(curr_tsf - flow->start_tsf, interval, &rem);
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3277
list_add_tail(&flow->list, &dev->twt_list);
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3279
flow->tsf = le64_to_cpu(twt_agrt->twt);
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3281
if (mt7996_mcu_twt_agrt_update(dev, &msta->vif->deflink, flow,
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3304
struct mt7996_twt_flow *flow;
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3308
if (flowid >= ARRAY_SIZE(msta_link->twt.flow))
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3314
flow = &msta_link->twt.flow[flowid];
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3315
if (mt7996_mcu_twt_agrt_update(dev, link, flow, MCU_TWT_AGRT_DELETE))
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3318
list_del_init(&flow->list);
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
3320
dev->twt.table_mask &= ~BIT(flow->table_id);
drivers/net/wireless/mediatek/mt76/mt7996/main.c
1210
for (i = 0; i < ARRAY_SIZE(msta_link->twt.flow); i++)
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c
4464
struct mt7996_twt_flow *flow,
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c
4492
.tbl_idx = flow->table_id,
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c
4495
.flowid = flow->id,
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c
4496
.peer_id = cpu_to_le16(flow->wcid),
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c
4497
.duration = flow->duration,
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c
4500
.start_tsf = cpu_to_le64(flow->tsf),
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c
4501
.mantissa = flow->mantissa,
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c
4502
.exponent = flow->exp,
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c
4506
if (flow->protection)
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c
4508
if (!flow->flowtype)
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c
4510
if (flow->trigger)
drivers/net/wireless/mediatek/mt76/mt7996/mt7996.h
236
struct mt7996_twt_flow flow[MT7996_MAX_STA_TWT_AGRT];
drivers/net/wireless/mediatek/mt76/mt7996/mt7996.h
663
struct mt7996_twt_flow *flow,
drivers/net/xen-netback/hash.c
152
struct flow_keys flow;
drivers/net/xen-netback/hash.c
181
memset(&flow, 0, sizeof(flow));
drivers/net/xen-netback/hash.c
182
if (!skb_flow_dissect_flow_keys(skb, &flow, 0))
drivers/net/xen-netback/hash.c
185
has_tcp_hdr = (flow.basic.ip_proto == IPPROTO_TCP) &&
drivers/net/xen-netback/hash.c
186
!(flow.control.flags & FLOW_DIS_IS_FRAGMENT);
drivers/net/xen-netback/hash.c
194
memcpy(&data[0], &flow.addrs.v4addrs.src, 4);
drivers/net/xen-netback/hash.c
195
memcpy(&data[4], &flow.addrs.v4addrs.dst, 4);
drivers/net/xen-netback/hash.c
196
memcpy(&data[8], &flow.ports.src, 2);
drivers/net/xen-netback/hash.c
197
memcpy(&data[10], &flow.ports.dst, 2);
drivers/net/xen-netback/hash.c
204
memcpy(&data[0], &flow.addrs.v4addrs.src, 4);
drivers/net/xen-netback/hash.c
205
memcpy(&data[4], &flow.addrs.v4addrs.dst, 4);
drivers/net/xen-netback/hash.c
218
memcpy(&data[0], &flow.addrs.v6addrs.src, 16);
drivers/net/xen-netback/hash.c
219
memcpy(&data[16], &flow.addrs.v6addrs.dst, 16);
drivers/net/xen-netback/hash.c
220
memcpy(&data[32], &flow.ports.src, 2);
drivers/net/xen-netback/hash.c
221
memcpy(&data[34], &flow.ports.dst, 2);
drivers/net/xen-netback/hash.c
228
memcpy(&data[0], &flow.addrs.v6addrs.src, 16);
drivers/net/xen-netback/hash.c
229
memcpy(&data[16], &flow.addrs.v6addrs.dst, 16);
drivers/pci/controller/pcie-apple.c
345
irq_flow_handler_t flow = handle_edge_irq;
drivers/pci/controller/pcie-apple.c
349
flow = handle_level_irq;
drivers/pci/controller/pcie-apple.c
354
&apple_port_irqchip, port, flow,
drivers/s390/char/con3270.c
1739
for (i_msg = 0; !tty->flow.stopped && i_msg < count; i_msg++) {
drivers/soc/ti/knav_dma.c
118
unsigned channel, flow;
drivers/soc/ti/knav_dma.c
125
ch->channel : ch->flow)
drivers/soc/ti/knav_dma.c
457
if (iter2->flow == chan_num) {
drivers/soc/ti/knav_dma.c
512
chan->channel, chan->flow, chan->dma->name);
drivers/soc/ti/knav_dma.c
542
static int pktdma_init_rx_chan(struct knav_dma_chan *chan, u32 flow)
drivers/soc/ti/knav_dma.c
546
chan->flow = flow;
drivers/soc/ti/knav_dma.c
547
chan->reg_rx_flow = dma->reg_rx_flow + flow;
drivers/soc/ti/knav_dma.c
549
dev_dbg(kdev->dev, "rx flow(%d) (%p)\n", chan->flow, chan->reg_rx_flow);
drivers/soc/ti/knav_dma.c
561
chan->flow = DMA_INVALID_ID;
drivers/tty/amiserial.c
275
|| info->tport.tty->flow.stopped
drivers/tty/amiserial.c
727
|| tty->flow.stopped
drivers/tty/amiserial.c
770
&& !tty->flow.stopped
drivers/tty/moxa.c
1275
if (tty->flow.stopped)
drivers/tty/moxa.c
1427
if (test_bit(LOWWAIT, &p->statusflags) && !tty->flow.stopped &&
drivers/tty/mxser.c
1328
tty->flow.stopped = 0;
drivers/tty/mxser.c
1529
if (kfifo_is_empty(&port->port.xmit_fifo) || tty->flow.stopped ||
drivers/tty/mxser.c
901
if (!is_empty && !tty->flow.stopped)
drivers/tty/mxser.c
921
if (kfifo_is_empty(&info->port.xmit_fifo) || tty->flow.stopped ||
drivers/tty/n_tty.c
1351
if (tty->flow.stopped && !tty->flow.tco_stopped && I_IXON(tty) && I_IXANY(tty)) {
drivers/tty/n_tty.c
1403
if (tty->flow.stopped && !tty->flow.tco_stopped && I_IXON(tty) && I_IXANY(tty)) {
drivers/tty/n_tty.c
1431
tty->flow.stopped && !tty->flow.tco_stopped && I_IXANY(tty) &&
drivers/tty/n_tty.c
1672
size_t count, bool flow)
drivers/tty/n_tty.c
1705
WRITE_ONCE(ldata->no_room, flow && !room);
drivers/tty/n_tty.c
1847
if (!I_IXON(tty) && old && (old->c_iflag & IXON) && !tty->flow.tco_stopped) {
drivers/tty/pty.c
113
if (tty->flow.stopped || !c)
drivers/tty/pty.c
129
if (tty->flow.stopped)
drivers/tty/serial/21285.c
441
int flow = 'n';
drivers/tty/serial/21285.c
449
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/21285.c
453
return uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/8250/8250_ingenic.c
100
unsigned int parity, bits, flow; /* unused for now */
drivers/tty/serial/8250/8250_ingenic.c
102
uart_parse_options(opt, &baud, &parity, &bits, &flow);
drivers/tty/serial/8250/8250_port.c
3409
int flow = 'n';
drivers/tty/serial/8250/8250_port.c
3416
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/8250/8250_port.c
3420
ret = uart_set_options(port, port->cons, baud, parity, bits, flow);
drivers/tty/serial/altera_uart.c
441
int flow = 'n';
drivers/tty/serial/altera_uart.c
450
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/altera_uart.c
452
return uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/amba-pl010.c
607
int flow = 'n';
drivers/tty/serial/amba-pl010.c
628
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/amba-pl010.c
632
return uart_set_options(&uap->port, co, baud, parity, bits, flow);
drivers/tty/serial/amba-pl011.c
2412
int flow = 'n';
drivers/tty/serial/amba-pl011.c
2450
&baud, &parity, &bits, &flow);
drivers/tty/serial/amba-pl011.c
2455
return uart_set_options(&uap->port, co, baud, parity, bits, flow);
drivers/tty/serial/apbuart.c
451
int flow = 'n';
drivers/tty/serial/apbuart.c
469
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/apbuart.c
473
return uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/ar933x_uart.c
723
int flow = 'n';
drivers/tty/serial/ar933x_uart.c
733
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/ar933x_uart.c
735
return uart_set_options(&up->port, co, baud, parity, bits, flow);
drivers/tty/serial/arc_uart.c
482
int flow = 'n';
drivers/tty/serial/arc_uart.c
496
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/arc_uart.c
502
return uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/atmel_serial.c
2645
int flow = 'n';
drivers/tty/serial/atmel_serial.c
2658
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/atmel_serial.c
2662
return uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/bcm63xx_uart.c
737
int flow = 'n';
drivers/tty/serial/bcm63xx_uart.c
745
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/bcm63xx_uart.c
747
return uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/clps711x.c
381
int baud = 38400, bits = 8, parity = 'n', flow = 'n';
drivers/tty/serial/clps711x.c
418
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/clps711x.c
420
ret = uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/cpm_uart.c
1395
int flow = 'n';
drivers/tty/serial/cpm_uart.c
1434
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/cpm_uart.c
1465
uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/digicolor-usart.c
418
int baud = 115200, bits = 8, parity = 'n', flow = 'n';
drivers/tty/serial/digicolor-usart.c
429
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/digicolor-usart.c
431
return uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/dz.c
869
int flow = 'n';
drivers/tty/serial/dz.c
882
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/dz.c
884
return uart_set_options(&dport->port, co, baud, parity, bits, flow);
drivers/tty/serial/esp32_uart.c
558
int flow = 'n';
drivers/tty/serial/esp32_uart.c
578
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/esp32_uart.c
580
return uart_set_options(&sport->port, co, baud, parity, bits, flow);
drivers/tty/serial/fsl_linflexuart.c
699
int flow = 'n';
drivers/tty/serial/fsl_linflexuart.c
716
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/fsl_linflexuart.c
736
ret = uart_set_options(sport, co, baud, parity, bits, flow);
drivers/tty/serial/fsl_lpuart.c
2661
int flow = 'n';
drivers/tty/serial/fsl_lpuart.c
2676
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/fsl_lpuart.c
2688
return uart_set_options(&sport->port, co, baud, parity, bits, flow);
drivers/tty/serial/imx.c
2286
int flow = 'n';
drivers/tty/serial/imx.c
2308
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/imx.c
2314
retval = uart_set_options(&sport->port, co, baud, parity, bits, flow);
drivers/tty/serial/ip22zilog.c
1000
return uart_set_options(&up->port, con, baud, parity, bits, flow);
drivers/tty/serial/ip22zilog.c
984
int flow = 'n';
drivers/tty/serial/ip22zilog.c
999
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/lantiq.c
624
int flow = 'n';
drivers/tty/serial/lantiq.c
641
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/lantiq.c
642
return uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/liteuart.c
395
int flow = 'n';
drivers/tty/serial/liteuart.c
406
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/liteuart.c
408
return uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/lpc32xx_hs.c
158
int flow = 'n';
drivers/tty/serial/lpc32xx_hs.c
168
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/lpc32xx_hs.c
172
return uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/ma35d1_serial.c
599
int flow = 'n';
drivers/tty/serial/ma35d1_serial.c
626
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/ma35d1_serial.c
628
return uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/max310x.c
907
unsigned int lcr = 0, flow = 0;
drivers/tty/serial/max310x.c
980
flow |= MAX310X_FLOWCTRL_AUTOCTS_BIT |
drivers/tty/serial/max310x.c
984
flow |= MAX310X_FLOWCTRL_SWFLOW3_BIT |
drivers/tty/serial/max310x.c
988
flow |= MAX310X_FLOWCTRL_SWFLOW1_BIT |
drivers/tty/serial/max310x.c
991
max310x_port_write(port, MAX310X_FLOWCTRL_REG, flow);
drivers/tty/serial/mcf.c
508
int flow = 'n';
drivers/tty/serial/mcf.c
517
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/mcf.c
519
return uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/meson_uart.c
594
int flow = 'n';
drivers/tty/serial/meson_uart.c
606
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/meson_uart.c
608
return uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/milbeaut_usio.c
424
int flow = 'n';
drivers/tty/serial/milbeaut_usio.c
436
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/milbeaut_usio.c
439
flow = 'r';
drivers/tty/serial/milbeaut_usio.c
441
return uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/mpc52xx_uart.c
1496
int *baud, int *parity, int *bits, int *flow)
drivers/tty/serial/mpc52xx_uart.c
1576
int flow = 'n';
drivers/tty/serial/mpc52xx_uart.c
1625
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/mpc52xx_uart.c
1627
mpc52xx_console_get_options(port, &baud, &parity, &bits, &flow);
drivers/tty/serial/mpc52xx_uart.c
1630
baud, bits, parity, flow);
drivers/tty/serial/mpc52xx_uart.c
1632
return uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/mps2-uart.c
438
int flow = 'n';
drivers/tty/serial/mps2-uart.c
449
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/mps2-uart.c
451
return uart_set_options(&mps_port->port, co, baud, parity, bits, flow);
drivers/tty/serial/msm_serial.c
1694
int flow = 'n';
drivers/tty/serial/msm_serial.c
1707
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/msm_serial.c
1711
return uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/mvebu-uart.c
768
int flow = 'n';
drivers/tty/serial/mvebu-uart.c
781
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/mvebu-uart.c
783
return uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/mxs-auart.c
1395
int flow = 'n';
drivers/tty/serial/mxs-auart.c
1414
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/mxs-auart.c
1418
ret = uart_set_options(&s->port, co, baud, parity, bits, flow);
drivers/tty/serial/omap-serial.c
1254
int flow = 'n';
drivers/tty/serial/omap-serial.c
1261
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/omap-serial.c
1263
return uart_set_options(&up->port, co, baud, parity, bits, flow);
drivers/tty/serial/owl-uart.c
561
int flow = 'n';
drivers/tty/serial/owl-uart.c
571
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/owl-uart.c
573
return uart_set_options(&owl_port->port, co, baud, parity, bits, flow);
drivers/tty/serial/pch_uart.c
1589
int flow = 'n';
drivers/tty/serial/pch_uart.c
1606
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/pch_uart.c
1608
return uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/pic32_uart.c
798
int flow = 'n';
drivers/tty/serial/pic32_uart.c
813
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/pic32_uart.c
815
return uart_set_options(&sport->port, co, baud, parity, bits, flow);
drivers/tty/serial/pmac_zilog.c
1903
int flow = 'n';
drivers/tty/serial/pmac_zilog.c
1949
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/pmac_zilog.c
1951
return uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/pxa.c
685
int flow = 'n';
drivers/tty/serial/pxa.c
694
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/pxa.c
696
return uart_set_options(&up->port, co, baud, parity, bits, flow);
drivers/tty/serial/qcom_geni_serial.c
1445
int flow = 'n';
drivers/tty/serial/qcom_geni_serial.c
1469
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/qcom_geni_serial.c
1471
return uart_set_options(uport, co, baud, parity, bits, flow);
drivers/tty/serial/rda-uart.c
628
int flow = 'n';
drivers/tty/serial/rda-uart.c
638
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/rda-uart.c
640
return uart_set_options(&rda_port->port, co, baud, parity, bits, flow);
drivers/tty/serial/sa1100.c
754
int flow = 'n';
drivers/tty/serial/sa1100.c
766
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/sa1100.c
770
return uart_set_options(&sport->port, co, baud, parity, bits, flow);
drivers/tty/serial/samsung_tty.c
2361
int flow = 'n';
drivers/tty/serial/samsung_tty.c
2383
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/samsung_tty.c
2389
return uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/sb1250-duart.c
870
int flow = 'n';
drivers/tty/serial/sb1250-duart.c
883
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/sb1250-duart.c
884
return uart_set_options(uport, co, baud, parity, bits, flow);
drivers/tty/serial/sc16is7xx.c
1043
flow |= SC16IS7XX_EFR_AUTOCTS_BIT |
drivers/tty/serial/sc16is7xx.c
1048
flow |= SC16IS7XX_EFR_SWFLOW3_BIT;
drivers/tty/serial/sc16is7xx.c
1050
flow |= SC16IS7XX_EFR_SWFLOW1_BIT;
drivers/tty/serial/sc16is7xx.c
1060
SC16IS7XX_EFR_FLOWCTRL_BITS, flow);
drivers/tty/serial/sc16is7xx.c
984
unsigned int lcr, flow = 0;
drivers/tty/serial/sccnxp.c
862
int baud = 9600, bits = 8, parity = 'n', flow = 'n';
drivers/tty/serial/sccnxp.c
865
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/sccnxp.c
867
return uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/serial_core.c
2164
int *bits, int *flow)
drivers/tty/serial/serial_core.c
2176
*flow = *s;
drivers/tty/serial/serial_core.c
2194
int baud, int parity, int bits, int flow)
drivers/tty/serial/serial_core.c
2228
if (flow == 'r')
drivers/tty/serial/serial_core.c
2583
int flow = 'n';
drivers/tty/serial/serial_core.c
2608
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/serial_core.c
2610
ret = uart_set_options(port, NULL, baud, parity, bits, flow);
drivers/tty/serial/serial_txx9.c
880
int flow = 'n';
drivers/tty/serial/serial_txx9.c
896
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/serial_txx9.c
898
return uart_set_options(up, co, baud, parity, bits, flow);
drivers/tty/serial/sh-sci.c
3451
int flow = 'n';
drivers/tty/serial/sh-sci.c
3474
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/sh-sci.c
3476
return uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/sifive.c
880
int flow = 'n';
drivers/tty/serial/sifive.c
892
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/sifive.c
894
return uart_set_options(&ssp->port, co, baud, parity, bits, flow);
drivers/tty/serial/sprd_serial.c
1020
int flow = 'n';
drivers/tty/serial/sprd_serial.c
1032
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/sprd_serial.c
1035
parity, bits, flow);
drivers/tty/serial/st-asc.c
884
int flow = 'n';
drivers/tty/serial/st-asc.c
901
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/st-asc.c
903
return uart_set_options(&ascport->port, co, baud, parity, bits, flow);
drivers/tty/serial/stm32-usart.c
1963
int flow = 'n';
drivers/tty/serial/stm32-usart.c
1980
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/stm32-usart.c
1982
return uart_set_options(&stm32port->port, co, baud, parity, bits, flow);
drivers/tty/serial/sunplus-uart.c
535
int flow = 'n';
drivers/tty/serial/sunplus-uart.c
545
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/sunplus-uart.c
547
return uart_set_options(&sup->port, co, baud, parity, bits, flow);
drivers/tty/serial/uartlite.c
532
int flow = 'n';
drivers/tty/serial/uartlite.c
552
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/uartlite.c
554
return uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/vt8500_serial.c
500
int flow = 'n';
drivers/tty/serial/vt8500_serial.c
511
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/vt8500_serial.c
514
co, baud, parity, bits, flow);
drivers/tty/serial/xilinx_uartps.c
1423
int flow = 'n';
drivers/tty/serial/xilinx_uartps.c
1433
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/xilinx_uartps.c
1442
return uart_set_options(port, co, baud, parity, bits, flow);
drivers/tty/serial/zs.c
1205
int flow = 'n';
drivers/tty/serial/zs.c
1216
uart_parse_options(options, &baud, &parity, &bits, &flow);
drivers/tty/serial/zs.c
1217
return uart_set_options(uport, co, baud, parity, bits, flow);
drivers/tty/synclink_gt.c
2237
if (info->port.tty && (info->port.tty->flow.stopped || info->port.tty->hw_stopped)) {
drivers/tty/synclink_gt.c
763
if (!count || tty->flow.stopped || tty->hw_stopped)
drivers/tty/synclink_gt.c
884
if (info->tx_count <= 0 || tty->flow.stopped ||
drivers/tty/tty_io.c
1139
bool was_stopped = tty->flow.stopped;
drivers/tty/tty_io.c
3123
spin_lock_init(&tty->flow.lock);
drivers/tty/tty_io.c
742
if (tty->flow.stopped)
drivers/tty/tty_io.c
744
tty->flow.stopped = true;
drivers/tty/tty_io.c
765
guard(spinlock_irqsave)(&tty->flow.lock);
drivers/tty/tty_io.c
772
if (!tty->flow.stopped || tty->flow.tco_stopped)
drivers/tty/tty_io.c
774
tty->flow.stopped = false;
drivers/tty/tty_io.c
793
guard(spinlock_irqsave)(&tty->flow.lock);
drivers/tty/tty_ioctl.c
948
spin_lock_irq(&tty->flow.lock);
drivers/tty/tty_ioctl.c
949
if (!tty->flow.tco_stopped) {
drivers/tty/tty_ioctl.c
950
tty->flow.tco_stopped = true;
drivers/tty/tty_ioctl.c
953
spin_unlock_irq(&tty->flow.lock);
drivers/tty/tty_ioctl.c
956
spin_lock_irq(&tty->flow.lock);
drivers/tty/tty_ioctl.c
957
if (tty->flow.tco_stopped) {
drivers/tty/tty_ioctl.c
958
tty->flow.tco_stopped = false;
drivers/tty/tty_ioctl.c
961
spin_unlock_irq(&tty->flow.lock);
drivers/tty/tty_port.c
619
if (tty->flow.tco_stopped)
drivers/tty/vt/keyboard.c
521
if (tty->flow.stopped)
drivers/tty/vt/vt.c
3228
while (!tty->flow.stopped && count) {
drivers/tty/vt/vt.c
3597
if (tty->flow.stopped)
drivers/usb/serial/whiteheat.h
228
__u8 flow; /* flow control state, see WHITEHEAT_FLOW_*
drivers/usb/serial/xr_serial.c
633
u16 flow, gpio_mode;
drivers/usb/serial/xr_serial.c
664
flow = XR_UART_FLOW_MODE_HW;
drivers/usb/serial/xr_serial.c
670
flow = XR_UART_FLOW_MODE_SW;
drivers/usb/serial/xr_serial.c
676
flow = XR_UART_FLOW_MODE_NONE;
drivers/usb/serial/xr_serial.c
679
xr_set_reg_uart(port, type->flow_control, flow);
include/linux/hsi/hsi.h
84
unsigned int flow; /* RX only */
include/linux/serial_core.h
1120
int *flow);
include/linux/serial_core.h
1122
int parity, int bits, int flow);
include/linux/serial_core.h
1149
if ((tty && tty->flow.stopped) || port->hw_stopped)
include/linux/skbuff.h
1608
struct flow_keys *flow,
include/linux/skbuff.h
1611
memset(flow, 0, sizeof(*flow));
include/linux/skbuff.h
1613
flow, NULL, 0, 0, 0, flags);
include/linux/skbuff.h
1619
struct flow_keys_basic *flow,
include/linux/skbuff.h
1623
memset(flow, 0, sizeof(*flow));
include/linux/skbuff.h
1624
return __skb_flow_dissect(net, skb, &flow_keys_basic_dissector, flow,
include/linux/tty.h
215
} flow;
include/net/flow_dissector.h
422
__be32 flow_get_u32_src(const struct flow_keys *flow);
include/net/flow_dissector.h
423
__be32 flow_get_u32_dst(const struct flow_keys *flow);
include/net/flow_dissector.h
441
const struct flow_keys *flow);
include/net/fq_impl.h
108
flow = list_first_entry(head, struct fq_flow, flowchain);
include/net/fq_impl.h
110
if (flow->deficit <= 0) {
include/net/fq_impl.h
111
flow->deficit += fq->quantum;
include/net/fq_impl.h
112
list_move_tail(&flow->flowchain,
include/net/fq_impl.h
117
skb = dequeue_func(fq, tin, flow);
include/net/fq_impl.h
122
list_move_tail(&flow->flowchain, &tin->old_flows);
include/net/fq_impl.h
124
list_del_init(&flow->flowchain);
include/net/fq_impl.h
125
flow->tin = NULL;
include/net/fq_impl.h
130
flow->deficit -= skb->len;
include/net/fq_impl.h
148
struct fq_flow *flow;
include/net/fq_impl.h
152
flow = &fq->flows[idx];
include/net/fq_impl.h
153
if (flow->tin && flow->tin != tin) {
include/net/fq_impl.h
154
flow = &tin->default_flow;
include/net/fq_impl.h
159
if (!flow->tin)
include/net/fq_impl.h
16
__fq_adjust_removal(struct fq *fq, struct fq_flow *flow, unsigned int packets,
include/net/fq_impl.h
162
return flow;
include/net/fq_impl.h
168
struct fq_flow *flow = NULL;
include/net/fq_impl.h
180
flow = cur;
include/net/fq_impl.h
19
struct fq_tin *tin = flow->tin;
include/net/fq_impl.h
190
flow = &tin->default_flow;
include/net/fq_impl.h
194
return flow;
include/net/fq_impl.h
202
struct fq_flow *flow;
include/net/fq_impl.h
208
flow = fq_flow_classify(fq, tin, idx, skb);
include/net/fq_impl.h
210
if (!flow->backlog) {
include/net/fq_impl.h
211
if (flow != &tin->default_flow)
include/net/fq_impl.h
217
flow->tin = tin;
include/net/fq_impl.h
220
flow->backlog += skb->len;
include/net/fq_impl.h
225
__skb_queue_tail(&flow->queue, skb);
include/net/fq_impl.h
228
if (list_empty(&flow->flowchain)) {
include/net/fq_impl.h
229
flow->deficit = fq->quantum;
include/net/fq_impl.h
230
list_add_tail(&flow->flowchain,
include/net/fq_impl.h
236
flow = fq_find_fattest_flow(fq);
include/net/fq_impl.h
237
if (!flow)
include/net/fq_impl.h
24
flow->backlog -= bytes;
include/net/fq_impl.h
240
if (!fq_flow_drop(fq, flow, free_func))
include/net/fq_impl.h
243
flow->tin->overlimit++;
include/net/fq_impl.h
253
struct fq_flow *flow,
include/net/fq_impl.h
258
struct fq_tin *tin = flow->tin;
include/net/fq_impl.h
263
skb_queue_walk_safe(&flow->queue, skb, tmp) {
include/net/fq_impl.h
264
if (!filter_func(fq, tin, flow, skb, filter_data))
include/net/fq_impl.h
267
__skb_unlink(skb, &flow->queue);
include/net/fq_impl.h
268
fq_adjust_removal(fq, flow, skb);
include/net/fq_impl.h
269
free_func(fq, tin, flow, skb);
include/net/fq_impl.h
279
struct fq_flow *flow;
include/net/fq_impl.h
28
if (flow->backlog)
include/net/fq_impl.h
283
list_for_each_entry(flow, &tin->new_flows, flowchain)
include/net/fq_impl.h
284
fq_flow_filter(fq, flow, filter_func, filter_data, free_func);
include/net/fq_impl.h
285
list_for_each_entry(flow, &tin->old_flows, flowchain)
include/net/fq_impl.h
286
fq_flow_filter(fq, flow, filter_func, filter_data, free_func);
include/net/fq_impl.h
290
struct fq_flow *flow,
include/net/fq_impl.h
293
struct fq_tin *tin = flow->tin;
include/net/fq_impl.h
296
while ((skb = fq_flow_dequeue(fq, flow)))
include/net/fq_impl.h
297
free_func(fq, tin, flow, skb);
include/net/fq_impl.h
299
if (!list_empty(&flow->flowchain)) {
include/net/fq_impl.h
300
list_del_init(&flow->flowchain);
include/net/fq_impl.h
306
flow->tin = NULL;
include/net/fq_impl.h
308
WARN_ON_ONCE(flow->backlog);
include/net/fq_impl.h
31
if (flow == &tin->default_flow) {
include/net/fq_impl.h
316
struct fq_flow *flow;
include/net/fq_impl.h
326
flow = list_first_entry(head, struct fq_flow, flowchain);
include/net/fq_impl.h
327
fq_flow_reset(fq, flow, free_func);
include/net/fq_impl.h
335
static void fq_flow_init(struct fq_flow *flow)
include/net/fq_impl.h
337
INIT_LIST_HEAD(&flow->flowchain);
include/net/fq_impl.h
338
__skb_queue_head_init(&flow->queue);
include/net/fq_impl.h
36
idx = flow - fq->flows;
include/net/fq_impl.h
41
struct fq_flow *flow,
include/net/fq_impl.h
44
__fq_adjust_removal(fq, flow, 1, skb->len, skb->truesize);
include/net/fq_impl.h
48
struct fq_flow *flow)
include/net/fq_impl.h
54
skb = __skb_dequeue(&flow->queue);
include/net/fq_impl.h
58
fq_adjust_removal(fq, flow, skb);
include/net/fq_impl.h
63
static int fq_flow_drop(struct fq *fq, struct fq_flow *flow,
include/net/fq_impl.h
67
struct fq_tin *tin = flow->tin;
include/net/fq_impl.h
73
pending = min_t(int, 32, skb_queue_len(&flow->queue) / 2);
include/net/fq_impl.h
75
skb = __skb_dequeue(&flow->queue);
include/net/fq_impl.h
82
free_func(fq, tin, flow, skb);
include/net/fq_impl.h
85
__fq_adjust_removal(fq, flow, packets, bytes, truesize);
include/net/fq_impl.h
94
struct fq_flow *flow;
include/net/gtp.h
26
__be16 flow;
include/net/ip.h
605
static inline void iph_to_flow_copy_v4addrs(struct flow_keys *flow,
include/net/ip.h
608
BUILD_BUG_ON(offsetof(typeof(flow->addrs), v4addrs.dst) !=
include/net/ip.h
609
offsetof(typeof(flow->addrs), v4addrs.src) +
include/net/ip.h
610
sizeof(flow->addrs.v4addrs.src));
include/net/ip.h
611
memcpy(&flow->addrs.v4addrs, &iph->addrs, sizeof(flow->addrs.v4addrs));
include/net/ip.h
612
flow->control.addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS;
include/net/ipv6.h
843
static inline void iph_to_flow_copy_v6addrs(struct flow_keys *flow,
include/net/ipv6.h
846
BUILD_BUG_ON(offsetof(typeof(flow->addrs), v6addrs.dst) !=
include/net/ipv6.h
847
offsetof(typeof(flow->addrs), v6addrs.src) +
include/net/ipv6.h
848
sizeof(flow->addrs.v6addrs.src));
include/net/ipv6.h
849
memcpy(&flow->addrs.v6addrs, &iph->addrs, sizeof(flow->addrs.v6addrs));
include/net/ipv6.h
850
flow->control.addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS;
include/net/netfilter/nf_dup_netdev.h
14
struct nft_flow_rule *flow,
include/net/netfilter/nf_flow_table.h
209
unsigned long flow_offload_get_timeout(struct flow_offload *flow);
include/net/netfilter/nf_flow_table.h
241
void flow_offload_free(struct flow_offload *flow);
include/net/netfilter/nf_flow_table.h
303
void flow_offload_route_init(struct flow_offload *flow,
include/net/netfilter/nf_flow_table.h
306
int flow_offload_add(struct nf_flowtable *flow_table, struct flow_offload *flow);
include/net/netfilter/nf_flow_table.h
308
struct flow_offload *flow, bool force);
include/net/netfilter/nf_flow_table.h
320
void flow_offload_teardown(struct flow_offload *flow);
include/net/netfilter/nf_flow_table.h
322
void nf_flow_snat_port(const struct flow_offload *flow,
include/net/netfilter/nf_flow_table.h
325
void nf_flow_dnat_port(const struct flow_offload *flow,
include/net/netfilter/nf_flow_table.h
357
struct flow_offload *flow);
include/net/netfilter/nf_flow_table.h
359
struct flow_offload *flow);
include/net/netfilter/nf_flow_table.h
361
struct flow_offload *flow);
include/net/netfilter/nf_flow_table.h
369
int nf_flow_rule_route_ipv4(struct net *net, struct flow_offload *flow,
include/net/netfilter/nf_flow_table.h
372
int nf_flow_rule_route_ipv6(struct net *net, struct flow_offload *flow,
include/net/netfilter/nf_flow_table.h
56
bool (*gc)(const struct flow_offload *flow);
include/net/netfilter/nf_flow_table.h
61
struct flow_offload *flow,
include/net/netfilter/nf_tables.h
1695
struct nft_flow_rule *flow;
include/net/netfilter/nf_tables.h
1705
nft_trans_container_rule(trans)->flow
include/net/netfilter/nf_tables.h
983
struct nft_flow_rule *flow,
include/net/netfilter/nf_tables_offload.h
70
void nft_flow_rule_set_addr_type(struct nft_flow_rule *flow,
include/net/netfilter/nf_tables_offload.h
76
void nft_flow_rule_destroy(struct nft_flow_rule *flow);
include/pcmcia/cistpl.h
213
u_char flow;
include/uapi/linux/hsi/hsi_char.h
40
__u32 flow;
include/video/imx-ipu-v3.h
325
struct ipu_dp *ipu_dp_get(struct ipu_soc *ipu, unsigned int flow);
net/caif/caif_socket.c
191
enum caif_ctrlcmd flow,
net/caif/caif_socket.c
195
switch (flow) {
net/caif/caif_socket.c
246
pr_debug("Unexpected flow command %d\n", flow);
net/caif/chnl_net.c
147
static void chnl_flowctrl_cb(struct cflayer *layr, enum caif_ctrlcmd flow,
net/caif/chnl_net.c
152
flow == CAIF_CTRLCMD_FLOW_ON_IND ? "ON" :
net/caif/chnl_net.c
153
flow == CAIF_CTRLCMD_INIT_RSP ? "INIT" :
net/caif/chnl_net.c
154
flow == CAIF_CTRLCMD_FLOW_OFF_IND ? "OFF" :
net/caif/chnl_net.c
155
flow == CAIF_CTRLCMD_DEINIT_RSP ? "CLOSE/DEINIT" :
net/caif/chnl_net.c
156
flow == CAIF_CTRLCMD_INIT_FAIL_RSP ? "OPEN_FAIL" :
net/caif/chnl_net.c
157
flow == CAIF_CTRLCMD_REMOTE_SHUTDOWN_IND ?
net/caif/chnl_net.c
162
switch (flow) {
net/core/flow_dissector.c
1708
static const void *flow_keys_hash_start(const struct flow_keys *flow)
net/core/flow_dissector.c
1711
return &flow->FLOW_KEYS_HASH_START_FIELD;
net/core/flow_dissector.c
1714
static inline size_t flow_keys_hash_length(const struct flow_keys *flow)
net/core/flow_dissector.c
1716
size_t diff = FLOW_KEYS_HASH_OFFSET + sizeof(flow->addrs);
net/core/flow_dissector.c
1718
BUILD_BUG_ON((sizeof(*flow) - FLOW_KEYS_HASH_OFFSET) % sizeof(u32));
net/core/flow_dissector.c
1720
switch (flow->control.addr_type) {
net/core/flow_dissector.c
1722
diff -= sizeof(flow->addrs.v4addrs);
net/core/flow_dissector.c
1725
diff -= sizeof(flow->addrs.v6addrs);
net/core/flow_dissector.c
1728
diff -= sizeof(flow->addrs.tipckey);
net/core/flow_dissector.c
1731
return sizeof(*flow) - diff;
net/core/flow_dissector.c
1734
__be32 flow_get_u32_src(const struct flow_keys *flow)
net/core/flow_dissector.c
1736
switch (flow->control.addr_type) {
net/core/flow_dissector.c
1738
return flow->addrs.v4addrs.src;
net/core/flow_dissector.c
1741
&flow->addrs.v6addrs.src);
net/core/flow_dissector.c
1743
return flow->addrs.tipckey.key;
net/core/flow_dissector.c
1750
__be32 flow_get_u32_dst(const struct flow_keys *flow)
net/core/flow_dissector.c
1752
switch (flow->control.addr_type) {
net/core/flow_dissector.c
1754
return flow->addrs.v4addrs.dst;
net/core/flow_dissector.c
1757
&flow->addrs.v6addrs.dst);
net/core/flow_dissector.c
1848
const struct flow_keys *flow)
net/core/flow_dissector.c
1857
data->n_proto = flow->basic.n_proto;
net/core/flow_dissector.c
1858
data->ip_proto = flow->basic.ip_proto;
net/core/flow_dissector.c
1859
data->ports = flow->ports.ports;
net/core/flow_dissector.c
1860
data->src = flow->addrs.v4addrs.src;
net/core/flow_dissector.c
1861
data->dst = flow->addrs.v4addrs.dst;
net/core/pktgen.c
2371
static inline int f_seen(const struct pktgen_dev *pkt_dev, int flow)
net/core/pktgen.c
2373
return !!(pkt_dev->flows[flow].flags & F_INIT);
net/core/pktgen.c
2378
int flow = pkt_dev->curfl;
net/core/pktgen.c
2381
if (pkt_dev->flows[flow].count >= pkt_dev->lflow) {
net/core/pktgen.c
2383
pkt_dev->flows[flow].count = 0;
net/core/pktgen.c
2384
pkt_dev->flows[flow].flags = 0;
net/core/pktgen.c
2390
flow = get_random_u32_below(pkt_dev->cflows);
net/core/pktgen.c
2391
pkt_dev->curfl = flow;
net/core/pktgen.c
2393
if (pkt_dev->flows[flow].count > pkt_dev->lflow) {
net/core/pktgen.c
2394
pkt_dev->flows[flow].count = 0;
net/core/pktgen.c
2395
pkt_dev->flows[flow].flags = 0;
net/core/pktgen.c
2407
static void get_ipsec_sa(struct pktgen_dev *pkt_dev, int flow)
net/core/pktgen.c
2410
struct xfrm_state *x = pkt_dev->flows[flow].x;
net/core/pktgen.c
2430
pkt_dev->flows[flow].x = x;
net/core/pktgen.c
2466
int flow = 0;
net/core/pktgen.c
2469
flow = f_pick(pkt_dev);
net/core/pktgen.c
2585
if (pkt_dev->cflows && f_seen(pkt_dev, flow)) {
net/core/pktgen.c
2586
pkt_dev->cur_daddr = pkt_dev->flows[flow].cur_daddr;
net/core/pktgen.c
2615
pkt_dev->flows[flow].flags |= F_INIT;
net/core/pktgen.c
2616
pkt_dev->flows[flow].cur_daddr =
net/core/pktgen.c
2619
get_ipsec_sa(pkt_dev, flow);
net/core/pktgen.c
2663
pkt_dev->flows[flow].count++;
net/core/skbuff.c
7107
struct mctp_flow *flow = skb_ext_get_ptr(old, SKB_EXT_MCTP);
net/core/skbuff.c
7109
if (flow->key)
net/core/skbuff.c
7110
refcount_inc(&flow->key->refs);
net/core/skbuff.c
7202
static void skb_ext_put_mctp(struct mctp_flow *flow)
net/core/skbuff.c
7204
if (flow->key)
net/core/skbuff.c
7205
mctp_key_unref(flow->key);
net/ethtool/ioctl.c
3625
struct ethtool_rx_flow_rule *flow;
net/ethtool/ioctl.c
3628
flow = kzalloc(sizeof(struct ethtool_rx_flow_rule) +
net/ethtool/ioctl.c
3630
if (!flow)
net/ethtool/ioctl.c
3634
flow->rule = flow_rule_alloc(1);
net/ethtool/ioctl.c
3635
if (!flow->rule) {
net/ethtool/ioctl.c
3636
kfree(flow);
net/ethtool/ioctl.c
3640
match = (struct ethtool_rx_flow_match *)flow->priv;
net/ethtool/ioctl.c
3641
flow->rule->match.dissector = &match->dissector;
net/ethtool/ioctl.c
3642
flow->rule->match.mask = &match->mask;
net/ethtool/ioctl.c
3643
flow->rule->match.key = &match->key;
net/ethtool/ioctl.c
3774
ethtool_rx_flow_rule_destroy(flow);
net/ethtool/ioctl.c
3844
act = &flow->rule->action.entries[0];
net/ethtool/ioctl.c
3862
return flow;
net/ethtool/ioctl.c
3866
void ethtool_rx_flow_rule_destroy(struct ethtool_rx_flow_rule *flow)
net/ethtool/ioctl.c
3868
kfree(flow->rule);
net/ethtool/ioctl.c
3869
kfree(flow);
net/ipv4/netfilter/ipt_rpfilter.c
58
struct flowi4 flow;
net/ipv4/netfilter/ipt_rpfilter.c
74
memset(&flow, 0, sizeof(flow));
net/ipv4/netfilter/ipt_rpfilter.c
75
flow.flowi4_iif = LOOPBACK_IFINDEX;
net/ipv4/netfilter/ipt_rpfilter.c
76
flow.daddr = iph->saddr;
net/ipv4/netfilter/ipt_rpfilter.c
77
flow.saddr = rpfilter_get_saddr(iph->daddr);
net/ipv4/netfilter/ipt_rpfilter.c
78
flow.flowi4_mark = info->flags & XT_RPFILTER_VALID_MARK ? skb->mark : 0;
net/ipv4/netfilter/ipt_rpfilter.c
79
flow.flowi4_dscp = ip4h_dscp(iph);
net/ipv4/netfilter/ipt_rpfilter.c
80
flow.flowi4_scope = RT_SCOPE_UNIVERSE;
net/ipv4/netfilter/ipt_rpfilter.c
81
flow.flowi4_l3mdev = l3mdev_master_ifindex_rcu(xt_in(par));
net/ipv4/netfilter/ipt_rpfilter.c
82
flow.flowi4_uid = sock_net_uid(xt_net(par), NULL);
net/ipv4/netfilter/ipt_rpfilter.c
84
return rpfilter_lookup_reverse(xt_net(par), &flow, xt_in(par), info->flags) ^ invert;
net/mac80211/tx.c
1372
struct fq_flow *flow;
net/mac80211/tx.c
1379
flow = &txqi->tin.default_flow;
net/mac80211/tx.c
1381
flow = &fq->flows[cvars - local->cvars];
net/mac80211/tx.c
1383
return fq_flow_dequeue(fq, flow);
net/mac80211/tx.c
1402
struct fq_flow *flow)
net/mac80211/tx.c
1415
if (flow == &tin->default_flow)
net/mac80211/tx.c
1418
cvars = &local->cvars[flow - fq->flows];
net/mac80211/tx.c
1421
&flow->backlog,
net/mac80211/tx.c
1433
struct fq_flow *flow,
net/mac80211/tx.c
1472
struct fq_flow *flow, struct sk_buff *skb,
net/mac80211/tx.c
3412
struct fq_flow *flow;
net/mac80211/tx.c
3466
flow = fq_flow_classify(fq, tin, flow_idx, skb);
net/mac80211/tx.c
3467
head = skb_peek_tail(&flow->queue);
net/mac80211/tx.c
3540
flow->backlog += head->len - orig_len;
net/mctp/route.c
348
struct mctp_flow *flow;
net/mctp/route.c
350
flow = skb_ext_add(skb, SKB_EXT_MCTP);
net/mctp/route.c
351
if (!flow)
net/mctp/route.c
355
flow->key = key;
net/mctp/route.c
361
struct mctp_flow *flow;
net/mctp/route.c
364
flow = skb_ext_find(skb, SKB_EXT_MCTP);
net/mctp/route.c
365
if (!flow)
net/mctp/route.c
368
key = flow->key;
net/mctp/test/route-test.c
957
struct mctp_flow *flow;
net/mctp/test/route-test.c
973
flow = skb_ext_find(skb2, SKB_EXT_MCTP);
net/mctp/test/route-test.c
974
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, flow);
net/mctp/test/route-test.c
975
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, flow->key);
net/mctp/test/route-test.c
976
KUNIT_ASSERT_PTR_EQ(test, flow->key->sk, sock->sk);
net/netfilter/nf_dup_netdev.c
87
struct nft_flow_rule *flow,
net/netfilter/nf_dup_netdev.c
98
entry = &flow->rule->action.entries[ctx->num_actions++];
net/netfilter/nf_flow_table_core.c
101
struct flow_offload_tuple *flow_tuple = &flow->tuplehash[dir].tuple;
net/netfilter/nf_flow_table_core.c
151
static void nft_flow_dst_release(struct flow_offload *flow,
net/netfilter/nf_flow_table_core.c
154
if (flow->tuplehash[dir].tuple.xmit_type == FLOW_OFFLOAD_XMIT_NEIGH ||
net/netfilter/nf_flow_table_core.c
155
flow->tuplehash[dir].tuple.xmit_type == FLOW_OFFLOAD_XMIT_XFRM)
net/netfilter/nf_flow_table_core.c
156
dst_release(flow->tuplehash[dir].tuple.dst_cache);
net/netfilter/nf_flow_table_core.c
159
void flow_offload_route_init(struct flow_offload *flow,
net/netfilter/nf_flow_table_core.c
162
flow_offload_fill_route(flow, route, FLOW_OFFLOAD_DIR_ORIGINAL);
net/netfilter/nf_flow_table_core.c
163
flow_offload_fill_route(flow, route, FLOW_OFFLOAD_DIR_REPLY);
net/netfilter/nf_flow_table_core.c
164
flow->type = NF_FLOW_OFFLOAD_ROUTE;
net/netfilter/nf_flow_table_core.c
168
static inline bool nf_flow_has_expired(const struct flow_offload *flow)
net/netfilter/nf_flow_table_core.c
170
return nf_flow_timeout_delta(flow->timeout) <= 0;
net/netfilter/nf_flow_table_core.c
196
static void flow_offload_fixup_ct(struct flow_offload *flow)
net/netfilter/nf_flow_table_core.c
198
struct nf_conn *ct = flow->ct;
net/netfilter/nf_flow_table_core.c
213
closing = test_bit(NF_FLOW_CLOSING, &flow->flags);
net/netfilter/nf_flow_table_core.c
22
flow_offload_fill_dir(struct flow_offload *flow,
net/netfilter/nf_flow_table_core.c
222
expired = nf_flow_has_expired(flow);
net/netfilter/nf_flow_table_core.c
233
expired = nf_flow_has_expired(flow);
net/netfilter/nf_flow_table_core.c
25
struct flow_offload_tuple *ft = &flow->tuplehash[dir].tuple;
net/netfilter/nf_flow_table_core.c
250
static void flow_offload_route_release(struct flow_offload *flow)
net/netfilter/nf_flow_table_core.c
252
nft_flow_dst_release(flow, FLOW_OFFLOAD_DIR_ORIGINAL);
net/netfilter/nf_flow_table_core.c
253
nft_flow_dst_release(flow, FLOW_OFFLOAD_DIR_REPLY);
net/netfilter/nf_flow_table_core.c
256
void flow_offload_free(struct flow_offload *flow)
net/netfilter/nf_flow_table_core.c
258
switch (flow->type) {
net/netfilter/nf_flow_table_core.c
26
struct nf_conntrack_tuple *ctt = &flow->ct->tuplehash[dir].tuple;
net/netfilter/nf_flow_table_core.c
260
flow_offload_route_release(flow);
net/netfilter/nf_flow_table_core.c
265
nf_ct_put(flow->ct);
net/netfilter/nf_flow_table_core.c
266
kfree_rcu(flow, rcu_head);
net/netfilter/nf_flow_table_core.c
304
unsigned long flow_offload_get_timeout(struct flow_offload *flow)
net/netfilter/nf_flow_table_core.c
307
struct net *net = nf_ct_net(flow->ct);
net/netfilter/nf_flow_table_core.c
308
int l4num = nf_ct_protonum(flow->ct);
net/netfilter/nf_flow_table_core.c
323
int flow_offload_add(struct nf_flowtable *flow_table, struct flow_offload *flow)
net/netfilter/nf_flow_table_core.c
327
flow->timeout = nf_flowtable_time_stamp + flow_offload_get_timeout(flow);
net/netfilter/nf_flow_table_core.c
330
&flow->tuplehash[0].node,
net/netfilter/nf_flow_table_core.c
336
&flow->tuplehash[1].node,
net/netfilter/nf_flow_table_core.c
340
&flow->tuplehash[0].node,
net/netfilter/nf_flow_table_core.c
345
nf_ct_refresh(flow->ct, NF_CT_DAY);
net/netfilter/nf_flow_table_core.c
348
__set_bit(NF_FLOW_HW, &flow->flags);
net/netfilter/nf_flow_table_core.c
349
nf_flow_offload_add(flow_table, flow);
net/netfilter/nf_flow_table_core.c
357
struct flow_offload *flow, bool force)
net/netfilter/nf_flow_table_core.c
361
timeout = nf_flowtable_time_stamp + flow_offload_get_timeout(flow);
net/netfilter/nf_flow_table_core.c
362
if (force || timeout - READ_ONCE(flow->timeout) > HZ)
net/netfilter/nf_flow_table_core.c
363
WRITE_ONCE(flow->timeout, timeout);
net/netfilter/nf_flow_table_core.c
368
test_bit(NF_FLOW_CLOSING, &flow->flags))
net/netfilter/nf_flow_table_core.c
371
nf_flow_offload_add(flow_table, flow);
net/netfilter/nf_flow_table_core.c
376
struct flow_offload *flow)
net/netfilter/nf_flow_table_core.c
379
&flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].node,
net/netfilter/nf_flow_table_core.c
382
&flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].node,
net/netfilter/nf_flow_table_core.c
384
flow_offload_free(flow);
net/netfilter/nf_flow_table_core.c
387
void flow_offload_teardown(struct flow_offload *flow)
net/netfilter/nf_flow_table_core.c
389
clear_bit(IPS_OFFLOAD_BIT, &flow->ct->status);
net/netfilter/nf_flow_table_core.c
390
if (!test_and_set_bit(NF_FLOW_TEARDOWN, &flow->flags))
net/netfilter/nf_flow_table_core.c
391
flow_offload_fixup_ct(flow);
net/netfilter/nf_flow_table_core.c
400
struct flow_offload *flow;
net/netfilter/nf_flow_table_core.c
409
flow = container_of(tuplehash, struct flow_offload, tuplehash[dir]);
net/netfilter/nf_flow_table_core.c
410
if (test_bit(NF_FLOW_TEARDOWN, &flow->flags))
net/netfilter/nf_flow_table_core.c
413
if (unlikely(nf_ct_is_dying(flow->ct)))
net/netfilter/nf_flow_table_core.c
423
struct flow_offload *flow, void *data),
net/netfilter/nf_flow_table_core.c
428
struct flow_offload *flow;
net/netfilter/nf_flow_table_core.c
445
flow = container_of(tuplehash, struct flow_offload, tuplehash[0]);
net/netfilter/nf_flow_table_core.c
447
iter(flow_table, flow, data);
net/netfilter/nf_flow_table_core.c
456
const struct flow_offload *flow)
net/netfilter/nf_flow_table_core.c
458
return flow_table->type->gc && flow_table->type->gc(flow);
net/netfilter/nf_flow_table_core.c
55
struct flow_offload *flow;
net/netfilter/nf_flow_table_core.c
559
struct flow_offload *flow, void *data)
net/netfilter/nf_flow_table_core.c
561
bool teardown = test_bit(NF_FLOW_TEARDOWN, &flow->flags);
net/netfilter/nf_flow_table_core.c
563
if (nf_flow_has_expired(flow) ||
net/netfilter/nf_flow_table_core.c
564
nf_ct_is_dying(flow->ct) ||
net/netfilter/nf_flow_table_core.c
565
nf_flow_custom_gc(flow_table, flow)) {
net/netfilter/nf_flow_table_core.c
566
flow_offload_teardown(flow);
net/netfilter/nf_flow_table_core.c
569
nf_flow_table_extend_ct_timeout(flow->ct);
net/netfilter/nf_flow_table_core.c
573
if (test_bit(NF_FLOW_HW, &flow->flags)) {
net/netfilter/nf_flow_table_core.c
574
if (!test_bit(NF_FLOW_HW_DYING, &flow->flags))
net/netfilter/nf_flow_table_core.c
575
nf_flow_offload_del(flow_table, flow);
net/netfilter/nf_flow_table_core.c
576
else if (test_bit(NF_FLOW_HW_DEAD, &flow->flags))
net/netfilter/nf_flow_table_core.c
577
flow_offload_del(flow_table, flow);
net/netfilter/nf_flow_table_core.c
579
flow_offload_del(flow_table, flow);
net/netfilter/nf_flow_table_core.c
581
} else if (test_bit(NF_FLOW_CLOSING, &flow->flags) &&
net/netfilter/nf_flow_table_core.c
582
test_bit(NF_FLOW_HW, &flow->flags) &&
net/netfilter/nf_flow_table_core.c
583
!test_bit(NF_FLOW_HW_DYING, &flow->flags)) {
net/netfilter/nf_flow_table_core.c
584
nf_flow_offload_del(flow_table, flow);
net/netfilter/nf_flow_table_core.c
585
} else if (test_bit(NF_FLOW_HW, &flow->flags)) {
net/netfilter/nf_flow_table_core.c
586
nf_flow_offload_stats(flow_table, flow);
net/netfilter/nf_flow_table_core.c
60
flow = kmem_cache_zalloc(flow_offload_cachep, GFP_ATOMIC);
net/netfilter/nf_flow_table_core.c
61
if (!flow)
net/netfilter/nf_flow_table_core.c
640
void nf_flow_snat_port(const struct flow_offload *flow,
net/netfilter/nf_flow_table_core.c
65
flow->ct = ct;
net/netfilter/nf_flow_table_core.c
652
new_port = flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple.dst_port;
net/netfilter/nf_flow_table_core.c
657
new_port = flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple.src_port;
net/netfilter/nf_flow_table_core.c
666
void nf_flow_dnat_port(const struct flow_offload *flow, struct sk_buff *skb,
net/netfilter/nf_flow_table_core.c
67
flow_offload_fill_dir(flow, FLOW_OFFLOAD_DIR_ORIGINAL);
net/netfilter/nf_flow_table_core.c
678
new_port = flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple.src_port;
net/netfilter/nf_flow_table_core.c
68
flow_offload_fill_dir(flow, FLOW_OFFLOAD_DIR_REPLY);
net/netfilter/nf_flow_table_core.c
683
new_port = flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple.dst_port;
net/netfilter/nf_flow_table_core.c
71
__set_bit(NF_FLOW_SNAT, &flow->flags);
net/netfilter/nf_flow_table_core.c
717
struct flow_offload *flow, void *data)
net/netfilter/nf_flow_table_core.c
722
flow_offload_teardown(flow);
net/netfilter/nf_flow_table_core.c
726
if (net_eq(nf_ct_net(flow->ct), dev_net(dev)) &&
net/netfilter/nf_flow_table_core.c
727
(flow->tuplehash[0].tuple.iifidx == dev->ifindex ||
net/netfilter/nf_flow_table_core.c
728
flow->tuplehash[1].tuple.iifidx == dev->ifindex))
net/netfilter/nf_flow_table_core.c
729
flow_offload_teardown(flow);
net/netfilter/nf_flow_table_core.c
73
__set_bit(NF_FLOW_DNAT, &flow->flags);
net/netfilter/nf_flow_table_core.c
75
return flow;
net/netfilter/nf_flow_table_core.c
97
static int flow_offload_fill_route(struct flow_offload *flow,
net/netfilter/nf_flow_table_inet.c
46
struct flow_offload *flow,
net/netfilter/nf_flow_table_inet.c
50
const struct flow_offload_tuple *flow_tuple = &flow->tuplehash[dir].tuple;
net/netfilter/nf_flow_table_inet.c
55
err = nf_flow_rule_route_ipv4(net, flow, dir, flow_rule);
net/netfilter/nf_flow_table_inet.c
58
err = nf_flow_rule_route_ipv6(net, flow, dir, flow_rule);
net/netfilter/nf_flow_table_ip.c
1013
struct flow_offload *flow;
net/netfilter/nf_flow_table_ip.c
1018
flow = container_of(tuplehash, struct flow_offload, tuplehash[dir]);
net/netfilter/nf_flow_table_ip.c
1020
mtu = flow->tuplehash[dir].tuple.mtu + ctx->offset;
net/netfilter/nf_flow_table_ip.c
1021
if (flow->tuplehash[!dir].tuple.tun_num) {
net/netfilter/nf_flow_table_ip.c
1032
if (nf_flow_state_check(flow, ip6h->nexthdr, skb, thoff))
net/netfilter/nf_flow_table_ip.c
1036
flow_offload_teardown(flow);
net/netfilter/nf_flow_table_ip.c
1043
flow_offload_refresh(flow_table, flow, false);
net/netfilter/nf_flow_table_ip.c
1048
nf_flow_nat_ipv6(flow, skb, dir, ip6h);
net/netfilter/nf_flow_table_ip.c
1054
nf_ct_acct_update(flow->ct, tuplehash->tuple.dir, skb->len);
net/netfilter/nf_flow_table_ip.c
106
static void nf_flow_dnat_ip(const struct flow_offload *flow,
net/netfilter/nf_flow_table_ip.c
1089
struct flow_offload *flow;
net/netfilter/nf_flow_table_ip.c
1114
flow = container_of(tuplehash, struct flow_offload, tuplehash[dir]);
net/netfilter/nf_flow_table_ip.c
1115
other_tuple = &flow->tuplehash[!dir].tuple;
net/netfilter/nf_flow_table_ip.c
1130
flow_offload_teardown(flow);
net/netfilter/nf_flow_table_ip.c
1135
flow_offload_teardown(flow);
net/netfilter/nf_flow_table_ip.c
1144
flow_offload_teardown(flow);
net/netfilter/nf_flow_table_ip.c
115
new_addr = flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple.src_v4.s_addr;
net/netfilter/nf_flow_table_ip.c
120
new_addr = flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple.dst_v4.s_addr;
net/netfilter/nf_flow_table_ip.c
129
static void nf_flow_nat_ip(const struct flow_offload *flow, struct sk_buff *skb,
net/netfilter/nf_flow_table_ip.c
133
if (test_bit(NF_FLOW_SNAT, &flow->flags)) {
net/netfilter/nf_flow_table_ip.c
134
nf_flow_snat_port(flow, skb, thoff, iph->protocol, dir);
net/netfilter/nf_flow_table_ip.c
135
nf_flow_snat_ip(flow, skb, iph, thoff, dir);
net/netfilter/nf_flow_table_ip.c
137
if (test_bit(NF_FLOW_DNAT, &flow->flags)) {
net/netfilter/nf_flow_table_ip.c
138
nf_flow_dnat_port(flow, skb, thoff, iph->protocol, dir);
net/netfilter/nf_flow_table_ip.c
139
nf_flow_dnat_ip(flow, skb, iph, thoff, dir);
net/netfilter/nf_flow_table_ip.c
25
static int nf_flow_state_check(struct flow_offload *flow, int proto,
net/netfilter/nf_flow_table_ip.c
34
if (tcph->syn && test_bit(NF_FLOW_CLOSING, &flow->flags)) {
net/netfilter/nf_flow_table_ip.c
35
flow_offload_teardown(flow);
net/netfilter/nf_flow_table_ip.c
40
!test_bit(NF_FLOW_CLOSING, &flow->flags))
net/netfilter/nf_flow_table_ip.c
41
set_bit(NF_FLOW_CLOSING, &flow->flags);
net/netfilter/nf_flow_table_ip.c
503
struct flow_offload *flow;
net/netfilter/nf_flow_table_ip.c
508
flow = container_of(tuplehash, struct flow_offload, tuplehash[dir]);
net/netfilter/nf_flow_table_ip.c
510
mtu = flow->tuplehash[dir].tuple.mtu + ctx->offset;
net/netfilter/nf_flow_table_ip.c
511
if (flow->tuplehash[!dir].tuple.tun_num)
net/netfilter/nf_flow_table_ip.c
519
if (nf_flow_state_check(flow, iph->protocol, skb, thoff))
net/netfilter/nf_flow_table_ip.c
523
flow_offload_teardown(flow);
net/netfilter/nf_flow_table_ip.c
530
flow_offload_refresh(flow_table, flow, false);
net/netfilter/nf_flow_table_ip.c
536
nf_flow_nat_ip(flow, skb, thoff, dir, iph);
net/netfilter/nf_flow_table_ip.c
542
nf_ct_acct_update(flow->ct, tuplehash->tuple.dir, skb->len);
net/netfilter/nf_flow_table_ip.c
768
struct flow_offload *flow;
net/netfilter/nf_flow_table_ip.c
793
flow = container_of(tuplehash, struct flow_offload, tuplehash[dir]);
net/netfilter/nf_flow_table_ip.c
794
other_tuple = &flow->tuplehash[!dir].tuple;
net/netfilter/nf_flow_table_ip.c
808
flow_offload_teardown(flow);
net/netfilter/nf_flow_table_ip.c
813
flow_offload_teardown(flow);
net/netfilter/nf_flow_table_ip.c
822
flow_offload_teardown(flow);
net/netfilter/nf_flow_table_ip.c
83
static void nf_flow_snat_ip(const struct flow_offload *flow,
net/netfilter/nf_flow_table_ip.c
878
static void nf_flow_snat_ipv6(const struct flow_offload *flow,
net/netfilter/nf_flow_table_ip.c
888
new_addr = flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple.dst_v6;
net/netfilter/nf_flow_table_ip.c
893
new_addr = flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple.src_v6;
net/netfilter/nf_flow_table_ip.c
901
static void nf_flow_dnat_ipv6(const struct flow_offload *flow,
net/netfilter/nf_flow_table_ip.c
911
new_addr = flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple.src_v6;
net/netfilter/nf_flow_table_ip.c
916
new_addr = flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple.dst_v6;
net/netfilter/nf_flow_table_ip.c
92
new_addr = flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple.dst_v4.s_addr;
net/netfilter/nf_flow_table_ip.c
924
static void nf_flow_nat_ipv6(const struct flow_offload *flow,
net/netfilter/nf_flow_table_ip.c
931
if (test_bit(NF_FLOW_SNAT, &flow->flags)) {
net/netfilter/nf_flow_table_ip.c
932
nf_flow_snat_port(flow, skb, thoff, ip6h->nexthdr, dir);
net/netfilter/nf_flow_table_ip.c
933
nf_flow_snat_ipv6(flow, skb, ip6h, thoff, dir);
net/netfilter/nf_flow_table_ip.c
935
if (test_bit(NF_FLOW_DNAT, &flow->flags)) {
net/netfilter/nf_flow_table_ip.c
936
nf_flow_dnat_port(flow, skb, thoff, ip6h->nexthdr, dir);
net/netfilter/nf_flow_table_ip.c
937
nf_flow_dnat_ipv6(flow, skb, ip6h, thoff, dir);
net/netfilter/nf_flow_table_ip.c
97
new_addr = flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple.src_v4.s_addr;
net/netfilter/nf_flow_table_offload.c
1004
nf_flow_offload_tuple(offload->flowtable, offload->flow, NULL, dir,
net/netfilter/nf_flow_table_offload.c
1016
if (test_bit(NF_FLOW_HW_BIDIRECTIONAL, &offload->flow->flags))
net/netfilter/nf_flow_table_offload.c
1021
offload->flow->timeout = max_t(u64, offload->flow->timeout,
net/netfilter/nf_flow_table_offload.c
1022
lastused + flow_offload_get_timeout(offload->flow));
net/netfilter/nf_flow_table_offload.c
1026
nf_ct_acct_add(offload->flow->ct,
net/netfilter/nf_flow_table_offload.c
1030
nf_ct_acct_add(offload->flow->ct,
net/netfilter/nf_flow_table_offload.c
1060
clear_bit(NF_FLOW_HW_PENDING, &offload->flow->flags);
net/netfilter/nf_flow_table_offload.c
1082
struct flow_offload *flow, unsigned int cmd)
net/netfilter/nf_flow_table_offload.c
1086
if (test_and_set_bit(NF_FLOW_HW_PENDING, &flow->flags))
net/netfilter/nf_flow_table_offload.c
1091
clear_bit(NF_FLOW_HW_PENDING, &flow->flags);
net/netfilter/nf_flow_table_offload.c
1096
offload->flow = flow;
net/netfilter/nf_flow_table_offload.c
1105
struct flow_offload *flow)
net/netfilter/nf_flow_table_offload.c
1109
offload = nf_flow_offload_work_alloc(flowtable, flow, FLOW_CLS_REPLACE);
net/netfilter/nf_flow_table_offload.c
1117
struct flow_offload *flow)
net/netfilter/nf_flow_table_offload.c
1121
offload = nf_flow_offload_work_alloc(flowtable, flow, FLOW_CLS_DESTROY);
net/netfilter/nf_flow_table_offload.c
1125
set_bit(NF_FLOW_HW_DYING, &flow->flags);
net/netfilter/nf_flow_table_offload.c
1130
struct flow_offload *flow)
net/netfilter/nf_flow_table_offload.c
1135
delta = nf_flow_timeout_delta(flow->timeout);
net/netfilter/nf_flow_table_offload.c
1136
if ((delta >= (9 * flow_offload_get_timeout(flow)) / 10))
net/netfilter/nf_flow_table_offload.c
1139
offload = nf_flow_offload_work_alloc(flowtable, flow, FLOW_CLS_STATS);
net/netfilter/nf_flow_table_offload.c
232
const struct flow_offload *flow,
net/netfilter/nf_flow_table_offload.c
247
this_tuple = &flow->tuplehash[dir].tuple;
net/netfilter/nf_flow_table_offload.c
254
other_tuple = &flow->tuplehash[!dir].tuple;
net/netfilter/nf_flow_table_offload.c
27
struct flow_offload *flow;
net/netfilter/nf_flow_table_offload.c
282
const struct flow_offload *flow,
net/netfilter/nf_flow_table_offload.c
300
this_tuple = &flow->tuplehash[dir].tuple;
net/netfilter/nf_flow_table_offload.c
307
other_tuple = &flow->tuplehash[!dir].tuple;
net/netfilter/nf_flow_table_offload.c
342
const struct flow_offload *flow,
net/netfilter/nf_flow_table_offload.c
356
addr = flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple.dst_v4.s_addr;
net/netfilter/nf_flow_table_offload.c
360
addr = flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple.src_v4.s_addr;
net/netfilter/nf_flow_table_offload.c
373
const struct flow_offload *flow,
net/netfilter/nf_flow_table_offload.c
387
addr = flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple.src_v4.s_addr;
net/netfilter/nf_flow_table_offload.c
391
addr = flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple.dst_v4.s_addr;
net/netfilter/nf_flow_table_offload.c
423
const struct flow_offload *flow,
net/netfilter/nf_flow_table_offload.c
433
addr = flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple.dst_v6.s6_addr32;
net/netfilter/nf_flow_table_offload.c
437
addr = flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple.src_v6.s6_addr32;
net/netfilter/nf_flow_table_offload.c
448
const struct flow_offload *flow,
net/netfilter/nf_flow_table_offload.c
458
addr = flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple.src_v6.s6_addr32;
net/netfilter/nf_flow_table_offload.c
462
addr = flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple.dst_v6.s6_addr32;
net/netfilter/nf_flow_table_offload.c
472
static int flow_offload_l4proto(const struct flow_offload *flow)
net/netfilter/nf_flow_table_offload.c
474
u8 protonum = flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple.l4proto;
net/netfilter/nf_flow_table_offload.c
492
const struct flow_offload *flow,
net/netfilter/nf_flow_table_offload.c
505
port = ntohs(flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple.dst_port);
net/netfilter/nf_flow_table_offload.c
511
port = ntohs(flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple.src_port);
net/netfilter/nf_flow_table_offload.c
520
flow_offload_mangle(entry, flow_offload_l4proto(flow), offset,
net/netfilter/nf_flow_table_offload.c
526
const struct flow_offload *flow,
net/netfilter/nf_flow_table_offload.c
539
port = ntohs(flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple.src_port);
net/netfilter/nf_flow_table_offload.c
545
port = ntohs(flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple.dst_port);
net/netfilter/nf_flow_table_offload.c
554
flow_offload_mangle(entry, flow_offload_l4proto(flow), offset,
net/netfilter/nf_flow_table_offload.c
560
const struct flow_offload *flow,
net/netfilter/nf_flow_table_offload.c
563
u8 protonum = flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple.l4proto;
net/netfilter/nf_flow_table_offload.c
585
const struct flow_offload *flow,
net/netfilter/nf_flow_table_offload.c
594
this_tuple = &flow->tuplehash[dir].tuple;
net/netfilter/nf_flow_table_offload.c
597
this_tuple = &flow->tuplehash[dir].tuple;
net/netfilter/nf_flow_table_offload.c
601
other_tuple = &flow->tuplehash[!dir].tuple;
net/netfilter/nf_flow_table_offload.c
624
static int flow_offload_encap_tunnel(const struct flow_offload *flow,
net/netfilter/nf_flow_table_offload.c
632
this_tuple = &flow->tuplehash[dir].tuple;
net/netfilter/nf_flow_table_offload.c
653
static int flow_offload_decap_tunnel(const struct flow_offload *flow,
net/netfilter/nf_flow_table_offload.c
661
other_tuple = &flow->tuplehash[!dir].tuple;
net/netfilter/nf_flow_table_offload.c
682
nf_flow_rule_route_common(struct net *net, const struct flow_offload *flow,
net/netfilter/nf_flow_table_offload.c
690
if (flow_offload_decap_tunnel(flow, dir, flow_rule) < 0 ||
net/netfilter/nf_flow_table_offload.c
691
flow_offload_encap_tunnel(flow, dir, flow_rule) < 0)
net/netfilter/nf_flow_table_offload.c
694
if (flow_offload_eth_src(net, flow, dir, flow_rule) < 0 ||
net/netfilter/nf_flow_table_offload.c
695
flow_offload_eth_dst(net, flow, dir, flow_rule) < 0)
net/netfilter/nf_flow_table_offload.c
698
tuple = &flow->tuplehash[dir].tuple;
net/netfilter/nf_flow_table_offload.c
714
other_tuple = &flow->tuplehash[!dir].tuple;
net/netfilter/nf_flow_table_offload.c
742
int nf_flow_rule_route_ipv4(struct net *net, struct flow_offload *flow,
net/netfilter/nf_flow_table_offload.c
746
if (nf_flow_rule_route_common(net, flow, dir, flow_rule) < 0)
net/netfilter/nf_flow_table_offload.c
749
if (test_bit(NF_FLOW_SNAT, &flow->flags)) {
net/netfilter/nf_flow_table_offload.c
750
if (flow_offload_ipv4_snat(net, flow, dir, flow_rule) < 0 ||
net/netfilter/nf_flow_table_offload.c
751
flow_offload_port_snat(net, flow, dir, flow_rule) < 0)
net/netfilter/nf_flow_table_offload.c
754
if (test_bit(NF_FLOW_DNAT, &flow->flags)) {
net/netfilter/nf_flow_table_offload.c
755
if (flow_offload_ipv4_dnat(net, flow, dir, flow_rule) < 0 ||
net/netfilter/nf_flow_table_offload.c
756
flow_offload_port_dnat(net, flow, dir, flow_rule) < 0)
net/netfilter/nf_flow_table_offload.c
759
if (test_bit(NF_FLOW_SNAT, &flow->flags) ||
net/netfilter/nf_flow_table_offload.c
760
test_bit(NF_FLOW_DNAT, &flow->flags))
net/netfilter/nf_flow_table_offload.c
761
if (flow_offload_ipv4_checksum(net, flow, flow_rule) < 0)
net/netfilter/nf_flow_table_offload.c
764
if (flow_offload_redirect(net, flow, dir, flow_rule) < 0)
net/netfilter/nf_flow_table_offload.c
771
int nf_flow_rule_route_ipv6(struct net *net, struct flow_offload *flow,
net/netfilter/nf_flow_table_offload.c
775
if (nf_flow_rule_route_common(net, flow, dir, flow_rule) < 0)
net/netfilter/nf_flow_table_offload.c
778
if (test_bit(NF_FLOW_SNAT, &flow->flags)) {
net/netfilter/nf_flow_table_offload.c
779
if (flow_offload_ipv6_snat(net, flow, dir, flow_rule) < 0 ||
net/netfilter/nf_flow_table_offload.c
780
flow_offload_port_snat(net, flow, dir, flow_rule) < 0)
net/netfilter/nf_flow_table_offload.c
783
if (test_bit(NF_FLOW_DNAT, &flow->flags)) {
net/netfilter/nf_flow_table_offload.c
784
if (flow_offload_ipv6_dnat(net, flow, dir, flow_rule) < 0 ||
net/netfilter/nf_flow_table_offload.c
785
flow_offload_port_dnat(net, flow, dir, flow_rule) < 0)
net/netfilter/nf_flow_table_offload.c
789
if (flow_offload_redirect(net, flow, dir, flow_rule) < 0)
net/netfilter/nf_flow_table_offload.c
803
struct flow_offload *flow = offload->flow;
net/netfilter/nf_flow_table_offload.c
820
tuple = &flow->tuplehash[dir].tuple;
net/netfilter/nf_flow_table_offload.c
821
other_tuple = &flow->tuplehash[!dir].tuple;
net/netfilter/nf_flow_table_offload.c
830
if (flowtable->type->action(net, flow, dir, flow_rule) < 0)
net/netfilter/nf_flow_table_offload.c
901
struct flow_offload *flow,
net/netfilter/nf_flow_table_offload.c
915
&flow->tuplehash[dir].tuple, &extack);
net/netfilter/nf_flow_table_offload.c
940
return nf_flow_offload_tuple(offload->flowtable, offload->flow,
net/netfilter/nf_flow_table_offload.c
950
nf_flow_offload_tuple(offload->flowtable, offload->flow, NULL, dir,
net/netfilter/nf_flow_table_offload.c
963
if (test_bit(NF_FLOW_HW_BIDIRECTIONAL, &offload->flow->flags))
net/netfilter/nf_flow_table_offload.c
985
set_bit(IPS_HW_OFFLOAD_BIT, &offload->flow->ct->status);
net/netfilter/nf_flow_table_offload.c
993
clear_bit(IPS_HW_OFFLOAD_BIT, &offload->flow->ct->status);
net/netfilter/nf_flow_table_offload.c
995
if (test_bit(NF_FLOW_HW_BIDIRECTIONAL, &offload->flow->flags))
net/netfilter/nf_flow_table_offload.c
997
set_bit(NF_FLOW_HW_DEAD, &offload->flow->flags);
net/netfilter/nf_tables_api.c
4236
struct nft_flow_rule *flow = NULL;
net/netfilter/nf_tables_api.c
4386
flow = nft_flow_rule_create(net, rule);
net/netfilter/nf_tables_api.c
4387
if (IS_ERR(flow)) {
net/netfilter/nf_tables_api.c
4388
err = PTR_ERR(flow);
net/netfilter/nf_tables_api.c
4435
if (flow)
net/netfilter/nf_tables_api.c
4436
nft_trans_flow_rule(trans) = flow;
net/netfilter/nf_tables_api.c
4446
if (flow)
net/netfilter/nf_tables_api.c
4447
nft_flow_rule_destroy(flow);
net/netfilter/nf_tables_api.c
714
struct nft_flow_rule *flow;
net/netfilter/nf_tables_api.c
723
flow = nft_flow_rule_create(ctx->net, rule);
net/netfilter/nf_tables_api.c
724
if (IS_ERR(flow)) {
net/netfilter/nf_tables_api.c
726
return PTR_ERR(flow);
net/netfilter/nf_tables_api.c
729
nft_trans_flow_rule(trans) = flow;
net/netfilter/nf_tables_offload.c
108
flow = nft_flow_rule_alloc(num_actions);
net/netfilter/nf_tables_offload.c
109
if (!flow)
net/netfilter/nf_tables_offload.c
12
struct nft_flow_rule *flow;
net/netfilter/nf_tables_offload.c
127
err = expr->ops->offload(ctx, flow, expr);
net/netfilter/nf_tables_offload.c
133
nft_flow_rule_transfer_vlan(ctx, flow);
net/netfilter/nf_tables_offload.c
135
flow->proto = ctx->dep.l3num;
net/netfilter/nf_tables_offload.c
138
return flow;
net/netfilter/nf_tables_offload.c
14
flow = kzalloc_obj(struct nft_flow_rule);
net/netfilter/nf_tables_offload.c
141
nft_flow_rule_destroy(flow);
net/netfilter/nf_tables_offload.c
146
void nft_flow_rule_destroy(struct nft_flow_rule *flow)
net/netfilter/nf_tables_offload.c
15
if (!flow)
net/netfilter/nf_tables_offload.c
151
flow_action_for_each(i, entry, &flow->rule->action) {
net/netfilter/nf_tables_offload.c
161
kfree(flow->rule);
net/netfilter/nf_tables_offload.c
162
kfree(flow);
net/netfilter/nf_tables_offload.c
18
flow->rule = flow_rule_alloc(num_actions);
net/netfilter/nf_tables_offload.c
19
if (!flow->rule) {
net/netfilter/nf_tables_offload.c
20
kfree(flow);
net/netfilter/nf_tables_offload.c
24
flow->rule->match.dissector = &flow->match.dissector;
net/netfilter/nf_tables_offload.c
249
const struct nft_flow_rule *flow,
net/netfilter/nf_tables_offload.c
25
flow->rule->match.mask = &flow->match.mask;
net/netfilter/nf_tables_offload.c
257
if (flow)
net/netfilter/nf_tables_offload.c
258
proto = flow->proto;
net/netfilter/nf_tables_offload.c
26
flow->rule->match.key = &flow->match.key;
net/netfilter/nf_tables_offload.c
264
if (flow)
net/netfilter/nf_tables_offload.c
265
cls_flow->rule = flow->rule;
net/netfilter/nf_tables_offload.c
270
struct nft_flow_rule *flow,
net/netfilter/nf_tables_offload.c
28
return flow;
net/netfilter/nf_tables_offload.c
281
nft_flow_cls_offload_setup(cls_flow, basechain, rule, flow, &extack,
net/netfilter/nf_tables_offload.c
290
struct nft_flow_rule *flow,
net/netfilter/nf_tables_offload.c
295
return nft_flow_offload_cmd(chain, rule, flow, command, &cls_flow);
net/netfilter/nf_tables_offload.c
31
void nft_flow_rule_set_addr_type(struct nft_flow_rule *flow,
net/netfilter/nf_tables_offload.c
34
struct nft_flow_match *match = &flow->match;
net/netfilter/nf_tables_offload.c
54
struct nft_flow_rule *flow)
net/netfilter/nf_tables_offload.c
56
struct nft_flow_match *match = &flow->match;
net/netfilter/nf_tables_offload.c
92
struct nft_flow_rule *flow;
net/netfilter/nft_bitwise.c
376
struct nft_flow_rule *flow,
net/netfilter/nft_bitwise.c
538
struct nft_flow_rule *flow,
net/netfilter/nft_cmp.c
140
struct nft_flow_rule *flow,
net/netfilter/nft_cmp.c
145
u8 *mask = (u8 *)&flow->match.mask;
net/netfilter/nft_cmp.c
146
u8 *key = (u8 *)&flow->match.key;
net/netfilter/nft_cmp.c
165
flow->match.dissector.used_keys |= BIT_ULL(reg->key);
net/netfilter/nft_cmp.c
166
flow->match.dissector.offset[reg->key] = reg->base_offset;
net/netfilter/nft_cmp.c
179
struct nft_flow_rule *flow,
net/netfilter/nft_cmp.c
184
return __nft_cmp_offload(ctx, flow, priv);
net/netfilter/nft_cmp.c
239
struct nft_flow_rule *flow,
net/netfilter/nft_cmp.c
254
return __nft_cmp_offload(ctx, flow, &cmp);
net/netfilter/nft_cmp.c
338
struct nft_flow_rule *flow,
net/netfilter/nft_cmp.c
349
return __nft_cmp_offload(ctx, flow, &cmp);
net/netfilter/nft_counter.c
273
struct nft_flow_rule *flow,
net/netfilter/nft_dup_netdev.c
62
struct nft_flow_rule *flow,
net/netfilter/nft_dup_netdev.c
68
return nft_fwd_dup_netdev_offload(ctx, flow, FLOW_ACTION_MIRRED, oif);
net/netfilter/nft_flow_offload.c
112
flow = flow_offload_alloc(ct);
net/netfilter/nft_flow_offload.c
113
if (!flow)
net/netfilter/nft_flow_offload.c
116
flow_offload_route_init(flow, &route);
net/netfilter/nft_flow_offload.c
120
__set_bit(NF_FLOW_HW_BIDIRECTIONAL, &flow->flags);
net/netfilter/nft_flow_offload.c
121
ret = flow_offload_add(flowtable, flow);
net/netfilter/nft_flow_offload.c
128
flow_offload_free(flow);
net/netfilter/nft_flow_offload.c
59
struct flow_offload *flow;
net/netfilter/nft_fwd_netdev.c
74
struct nft_flow_rule *flow,
net/netfilter/nft_fwd_netdev.c
80
return nft_fwd_dup_netdev_offload(ctx, flow, FLOW_ACTION_REDIRECT, oif);
net/netfilter/nft_immediate.c
276
struct nft_flow_rule *flow,
net/netfilter/nft_immediate.c
282
entry = &flow->rule->action.entries[ctx->num_actions++];
net/netfilter/nft_immediate.c
300
struct nft_flow_rule *flow,
net/netfilter/nft_immediate.c
306
return nft_immediate_offload_verdict(ctx, flow, priv);
net/netfilter/nft_meta.c
713
struct nft_flow_rule *flow,
net/netfilter/nft_payload.c
307
struct nft_flow_rule *flow,
net/netfilter/nft_payload.c
376
struct nft_flow_rule *flow,
net/netfilter/nft_payload.c
389
nft_flow_rule_set_addr_type(flow, FLOW_DISSECTOR_KEY_IPV4_ADDRS);
net/netfilter/nft_payload.c
398
nft_flow_rule_set_addr_type(flow, FLOW_DISSECTOR_KEY_IPV4_ADDRS);
net/netfilter/nft_payload.c
416
struct nft_flow_rule *flow,
net/netfilter/nft_payload.c
429
nft_flow_rule_set_addr_type(flow, FLOW_DISSECTOR_KEY_IPV6_ADDRS);
net/netfilter/nft_payload.c
438
nft_flow_rule_set_addr_type(flow, FLOW_DISSECTOR_KEY_IPV6_ADDRS);
net/netfilter/nft_payload.c
456
struct nft_flow_rule *flow,
net/netfilter/nft_payload.c
463
err = nft_payload_offload_ip(ctx, flow, priv);
net/netfilter/nft_payload.c
466
err = nft_payload_offload_ip6(ctx, flow, priv);
net/netfilter/nft_payload.c
476
struct nft_flow_rule *flow,
net/netfilter/nft_payload.c
504
struct nft_flow_rule *flow,
net/netfilter/nft_payload.c
532
struct nft_flow_rule *flow,
net/netfilter/nft_payload.c
539
err = nft_payload_offload_tcp(ctx, flow, priv);
net/netfilter/nft_payload.c
542
err = nft_payload_offload_udp(ctx, flow, priv);
net/netfilter/nft_payload.c
552
struct nft_flow_rule *flow,
net/netfilter/nft_payload.c
560
err = nft_payload_offload_ll(ctx, flow, priv);
net/netfilter/nft_payload.c
563
err = nft_payload_offload_nh(ctx, flow, priv);
net/netfilter/nft_payload.c
566
err = nft_payload_offload_th(ctx, flow, priv);
net/netfilter/xt_addrtype.c
36
struct flowi6 flow;
net/netfilter/xt_addrtype.c
41
memset(&flow, 0, sizeof(flow));
net/netfilter/xt_addrtype.c
42
flow.daddr = *addr;
net/netfilter/xt_addrtype.c
44
flow.flowi6_oif = dev->ifindex;
net/netfilter/xt_addrtype.c
52
flowi6_to_flowi(&flow), false);
net/openvswitch/datapath.c
1000
struct sw_flow *flow = NULL, *new_flow;
net/openvswitch/datapath.c
1076
flow = ovs_flow_tbl_lookup_ufid(&dp->table, &new_flow->id);
net/openvswitch/datapath.c
1077
if (!flow)
net/openvswitch/datapath.c
1078
flow = ovs_flow_tbl_lookup(&dp->table, key);
net/openvswitch/datapath.c
1079
if (likely(!flow)) {
net/openvswitch/datapath.c
1116
if (unlikely(!ovs_flow_cmp(flow, &match))) {
net/openvswitch/datapath.c
1117
if (ovs_identifier_is_key(&flow->id))
net/openvswitch/datapath.c
1118
flow = ovs_flow_tbl_lookup_exact(&dp->table,
net/openvswitch/datapath.c
1121
flow = NULL;
net/openvswitch/datapath.c
1122
if (!flow) {
net/openvswitch/datapath.c
1128
old_acts = ovsl_dereference(flow->sf_acts);
net/openvswitch/datapath.c
1129
rcu_assign_pointer(flow->sf_acts, acts);
net/openvswitch/datapath.c
1132
error = ovs_flow_cmd_fill_info(flow,
net/openvswitch/datapath.c
1248
struct sw_flow *flow;
net/openvswitch/datapath.c
1289
flow = ovs_flow_tbl_lookup_ufid(&dp->table, &sfid);
net/openvswitch/datapath.c
1291
flow = ovs_flow_tbl_lookup_exact(&dp->table, &match);
net/openvswitch/datapath.c
1292
if (unlikely(!flow)) {
net/openvswitch/datapath.c
1299
old_acts = ovsl_dereference(flow->sf_acts);
net/openvswitch/datapath.c
1300
rcu_assign_pointer(flow->sf_acts, acts);
net/openvswitch/datapath.c
1303
error = ovs_flow_cmd_fill_info(flow,
net/openvswitch/datapath.c
1313
reply = ovs_flow_cmd_build_info(flow, ovs_header->dp_ifindex,
net/openvswitch/datapath.c
1325
ovs_flow_stats_clear(flow);
net/openvswitch/datapath.c
1351
struct sw_flow *flow;
net/openvswitch/datapath.c
1381
flow = ovs_flow_tbl_lookup_ufid(&dp->table, &ufid);
net/openvswitch/datapath.c
1383
flow = ovs_flow_tbl_lookup_exact(&dp->table, &match);
net/openvswitch/datapath.c
1384
if (!flow) {
net/openvswitch/datapath.c
1389
reply = ovs_flow_cmd_build_info(flow, ovs_header->dp_ifindex, info,
net/openvswitch/datapath.c
1410
struct sw_flow *flow = NULL;
net/openvswitch/datapath.c
1441
flow = ovs_flow_tbl_lookup_ufid(&dp->table, &ufid);
net/openvswitch/datapath.c
1443
flow = ovs_flow_tbl_lookup_exact(&dp->table, &match);
net/openvswitch/datapath.c
1444
if (unlikely(!flow)) {
net/openvswitch/datapath.c
1449
ovs_flow_tbl_remove(&dp->table, flow);
net/openvswitch/datapath.c
1452
reply = ovs_flow_cmd_alloc_info((const struct sw_flow_actions __force *) flow->sf_acts,
net/openvswitch/datapath.c
1453
&flow->id, info, false, ufid_flags);
net/openvswitch/datapath.c
1457
err = ovs_flow_cmd_fill_info(flow, ovs_header->dp_ifindex,
net/openvswitch/datapath.c
1476
ovs_flow_free(flow, true);
net/openvswitch/datapath.c
1507
struct sw_flow *flow;
net/openvswitch/datapath.c
1512
flow = ovs_flow_tbl_dump_next(ti, &bucket, &obj);
net/openvswitch/datapath.c
1513
if (!flow)
net/openvswitch/datapath.c
1516
if (ovs_flow_cmd_fill_info(flow, ovs_header->dp_ifindex, skb,
net/openvswitch/datapath.c
250
struct sw_flow *flow;
net/openvswitch/datapath.c
262
flow = ovs_flow_tbl_lookup_stats(&dp->table, key, skb_get_hash(skb),
net/openvswitch/datapath.c
264
if (unlikely(!flow)) {
net/openvswitch/datapath.c
295
ovs_flow_stats_update(flow, key->tp.flags, skb);
net/openvswitch/datapath.c
296
sf_acts = rcu_dereference(flow->sf_acts);
net/openvswitch/datapath.c
617
struct sw_flow *flow;
net/openvswitch/datapath.c
660
flow = ovs_flow_alloc();
net/openvswitch/datapath.c
661
err = PTR_ERR(flow);
net/openvswitch/datapath.c
662
if (IS_ERR(flow))
net/openvswitch/datapath.c
666
packet, &flow->key, log);
net/openvswitch/datapath.c
671
&flow->key, &acts, log);
net/openvswitch/datapath.c
675
rcu_assign_pointer(flow->sf_acts, acts);
net/openvswitch/datapath.c
676
packet->priority = flow->key.phy.priority;
net/openvswitch/datapath.c
677
packet->mark = flow->key.phy.skb_mark;
net/openvswitch/datapath.c
685
input_vport = ovs_vport_rcu(dp, flow->key.phy.in_port);
net/openvswitch/datapath.c
694
sf_acts = rcu_dereference(flow->sf_acts);
net/openvswitch/datapath.c
700
err = ovs_execute_actions(dp, packet, sf_acts, &flow->key);
net/openvswitch/datapath.c
707
ovs_flow_free(flow, false);
net/openvswitch/datapath.c
713
ovs_flow_free(flow, false);
net/openvswitch/datapath.c
833
static int ovs_flow_cmd_fill_stats(const struct sw_flow *flow,
net/openvswitch/datapath.c
840
ovs_flow_stats_get(flow, &stats, &used, &tcp_flags);
net/openvswitch/datapath.c
861
static int ovs_flow_cmd_fill_actions(const struct sw_flow *flow,
net/openvswitch/datapath.c
881
sf_acts = rcu_dereference_ovsl(flow->sf_acts);
net/openvswitch/datapath.c
901
static int ovs_flow_cmd_fill_info(const struct sw_flow *flow, int dp_ifindex,
net/openvswitch/datapath.c
916
err = ovs_nla_put_identifier(flow, skb);
net/openvswitch/datapath.c
920
if (should_fill_key(&flow->id, ufid_flags)) {
net/openvswitch/datapath.c
921
err = ovs_nla_put_masked_key(flow, skb);
net/openvswitch/datapath.c
927
err = ovs_nla_put_mask(flow, skb);
net/openvswitch/datapath.c
932
err = ovs_flow_cmd_fill_stats(flow, skb);
net/openvswitch/datapath.c
937
err = ovs_flow_cmd_fill_actions(flow, skb, skb_orig_len);
net/openvswitch/datapath.c
972
static struct sk_buff *ovs_flow_cmd_build_info(const struct sw_flow *flow,
net/openvswitch/datapath.c
980
skb = ovs_flow_cmd_alloc_info(ovsl_dereference(flow->sf_acts),
net/openvswitch/datapath.c
981
&flow->id, info, always, ufid_flags);
net/openvswitch/datapath.c
985
retval = ovs_flow_cmd_fill_info(flow, dp_ifindex, skb,
net/openvswitch/flow.c
108
rcu_assign_pointer(flow->stats[cpu],
net/openvswitch/flow.c
111
flow->cpu_used_mask);
net/openvswitch/flow.c
115
flow->stats_last_writer = cpu;
net/openvswitch/flow.c
128
void ovs_flow_stats_get(const struct sw_flow *flow,
net/openvswitch/flow.c
138
for_each_cpu(cpu, flow->cpu_used_mask) {
net/openvswitch/flow.c
139
struct sw_flow_stats *stats = rcu_dereference_ovsl(flow->stats[cpu]);
net/openvswitch/flow.c
157
void ovs_flow_stats_clear(struct sw_flow *flow)
net/openvswitch/flow.c
161
for_each_cpu(cpu, flow->cpu_used_mask) {
net/openvswitch/flow.c
162
struct sw_flow_stats *stats = ovsl_dereference(flow->stats[cpu]);
net/openvswitch/flow.c
61
void ovs_flow_stats_update(struct sw_flow *flow, __be16 tcp_flags,
net/openvswitch/flow.c
68
stats = rcu_dereference(flow->stats[cpu]);
net/openvswitch/flow.c
74
if (cpu == 0 && unlikely(flow->stats_last_writer != cpu))
net/openvswitch/flow.c
75
flow->stats_last_writer = cpu;
net/openvswitch/flow.c
77
stats = rcu_dereference(flow->stats[0]); /* Pre-allocated. */
net/openvswitch/flow.c
83
if (unlikely(flow->stats_last_writer != cpu)) {
net/openvswitch/flow.c
89
if (likely(flow->stats_last_writer != -1) &&
net/openvswitch/flow.c
90
likely(!rcu_access_pointer(flow->stats[cpu]))) {
net/openvswitch/flow_netlink.c
2259
int ovs_nla_put_identifier(const struct sw_flow *flow, struct sk_buff *skb)
net/openvswitch/flow_netlink.c
2261
if (ovs_identifier_is_ufid(&flow->id))
net/openvswitch/flow_netlink.c
2262
return nla_put(skb, OVS_FLOW_ATTR_UFID, flow->id.ufid_len,
net/openvswitch/flow_netlink.c
2263
flow->id.ufid);
net/openvswitch/flow_netlink.c
2265
return ovs_nla_put_key(flow->id.unmasked_key, flow->id.unmasked_key,
net/openvswitch/flow_netlink.c
2270
int ovs_nla_put_masked_key(const struct sw_flow *flow, struct sk_buff *skb)
net/openvswitch/flow_netlink.c
2272
return ovs_nla_put_key(&flow->key, &flow->key,
net/openvswitch/flow_netlink.c
2277
int ovs_nla_put_mask(const struct sw_flow *flow, struct sk_buff *skb)
net/openvswitch/flow_netlink.c
2279
return ovs_nla_put_key(&flow->key, &flow->mask->key,
net/openvswitch/flow_netlink.h
41
int ovs_nla_put_identifier(const struct sw_flow *flow, struct sk_buff *skb);
net/openvswitch/flow_netlink.h
42
int ovs_nla_put_masked_key(const struct sw_flow *flow, struct sk_buff *skb);
net/openvswitch/flow_netlink.h
43
int ovs_nla_put_mask(const struct sw_flow *flow, struct sk_buff *skb);
net/openvswitch/flow_table.c
1004
static int flow_mask_insert(struct flow_table *tbl, struct sw_flow *flow,
net/openvswitch/flow_table.c
1028
flow->mask = mask;
net/openvswitch/flow_table.c
1033
static void flow_key_insert(struct flow_table *table, struct sw_flow *flow)
net/openvswitch/flow_table.c
1038
flow->flow_table.hash = flow_hash(&flow->key, &flow->mask->range);
net/openvswitch/flow_table.c
1040
table_instance_insert(ti, flow);
net/openvswitch/flow_table.c
1057
static void flow_ufid_insert(struct flow_table *table, struct sw_flow *flow)
net/openvswitch/flow_table.c
1061
flow->ufid_table.hash = ufid_hash(&flow->id);
net/openvswitch/flow_table.c
1063
ufid_table_instance_insert(ti, flow);
net/openvswitch/flow_table.c
1079
int ovs_flow_tbl_insert(struct flow_table *table, struct sw_flow *flow,
net/openvswitch/flow_table.c
108
static void flow_free(struct sw_flow *flow)
net/openvswitch/flow_table.c
1084
err = flow_mask_insert(table, flow, mask);
net/openvswitch/flow_table.c
1087
flow_key_insert(table, flow);
net/openvswitch/flow_table.c
1088
if (ovs_identifier_is_ufid(&flow->id))
net/openvswitch/flow_table.c
1089
flow_ufid_insert(table, flow);
net/openvswitch/flow_table.c
112
if (ovs_identifier_is_key(&flow->id))
net/openvswitch/flow_table.c
113
kfree(flow->id.unmasked_key);
net/openvswitch/flow_table.c
114
if (flow->sf_acts)
net/openvswitch/flow_table.c
116
flow->sf_acts);
net/openvswitch/flow_table.c
118
for_each_cpu(cpu, flow->cpu_used_mask) {
net/openvswitch/flow_table.c
119
if (flow->stats[cpu])
net/openvswitch/flow_table.c
121
(struct sw_flow_stats __force *)flow->stats[cpu]);
net/openvswitch/flow_table.c
124
kmem_cache_free(flow_cache, flow);
net/openvswitch/flow_table.c
129
struct sw_flow *flow = container_of(rcu, struct sw_flow, rcu);
net/openvswitch/flow_table.c
131
flow_free(flow);
net/openvswitch/flow_table.c
134
void ovs_flow_free(struct sw_flow *flow, bool deferred)
net/openvswitch/flow_table.c
136
if (!flow)
net/openvswitch/flow_table.c
140
call_rcu(&flow->rcu, rcu_free_flow_callback);
net/openvswitch/flow_table.c
142
flow_free(flow);
net/openvswitch/flow_table.c
460
struct sw_flow *flow)
net/openvswitch/flow_table.c
462
hlist_del_rcu(&flow->flow_table.node[ti->node_ver]);
net/openvswitch/flow_table.c
465
if (ovs_identifier_is_ufid(&flow->id)) {
net/openvswitch/flow_table.c
466
hlist_del_rcu(&flow->ufid_table.node[ufid_ti->node_ver]);
net/openvswitch/flow_table.c
470
flow_mask_remove(table, flow->mask);
net/openvswitch/flow_table.c
483
struct sw_flow *flow;
net/openvswitch/flow_table.c
485
hlist_for_each_entry_safe(flow, n, head,
net/openvswitch/flow_table.c
489
flow);
net/openvswitch/flow_table.c
490
ovs_flow_free(flow, true);
net/openvswitch/flow_table.c
526
struct sw_flow *flow;
net/openvswitch/flow_table.c
535
hlist_for_each_entry_rcu(flow, head, flow_table.node[ver]) {
net/openvswitch/flow_table.c
541
return flow;
net/openvswitch/flow_table.c
557
struct sw_flow *flow)
net/openvswitch/flow_table.c
561
head = find_bucket(ti, flow->flow_table.hash);
net/openvswitch/flow_table.c
562
hlist_add_head_rcu(&flow->flow_table.node[ti->node_ver], head);
net/openvswitch/flow_table.c
566
struct sw_flow *flow)
net/openvswitch/flow_table.c
570
head = find_bucket(ti, flow->ufid_table.hash);
net/openvswitch/flow_table.c
571
hlist_add_head_rcu(&flow->ufid_table.node[ti->node_ver], head);
net/openvswitch/flow_table.c
585
struct sw_flow *flow;
net/openvswitch/flow_table.c
589
hlist_for_each_entry_rcu(flow, head,
net/openvswitch/flow_table.c
592
ufid_table_instance_insert(new, flow);
net/openvswitch/flow_table.c
594
hlist_for_each_entry_rcu(flow, head,
net/openvswitch/flow_table.c
597
table_instance_insert(new, flow);
net/openvswitch/flow_table.c
678
static bool flow_cmp_masked_key(const struct sw_flow *flow,
net/openvswitch/flow_table.c
682
return cmp_key(&flow->key, key, range->start, range->end);
net/openvswitch/flow_table.c
685
static bool ovs_flow_cmp_unmasked_key(const struct sw_flow *flow,
net/openvswitch/flow_table.c
692
BUG_ON(ovs_identifier_is_ufid(&flow->id));
net/openvswitch/flow_table.c
693
return cmp_key(flow->id.unmasked_key, key, key_start, key_end);
net/openvswitch/flow_table.c
701
struct sw_flow *flow;
net/openvswitch/flow_table.c
711
hlist_for_each_entry_rcu(flow, head, flow_table.node[ti->node_ver],
net/openvswitch/flow_table.c
713
if (flow->mask == mask && flow->flow_table.hash == hash &&
net/openvswitch/flow_table.c
714
flow_cmp_masked_key(flow, &masked_key, &mask->range))
net/openvswitch/flow_table.c
715
return flow;
net/openvswitch/flow_table.c
734
struct sw_flow *flow;
net/openvswitch/flow_table.c
74
struct sw_flow *flow;
net/openvswitch/flow_table.c
741
flow = masked_flow_lookup(ti, key, mask, n_mask_hit);
net/openvswitch/flow_table.c
742
if (flow) {
net/openvswitch/flow_table.c
747
return flow;
net/openvswitch/flow_table.c
761
flow = masked_flow_lookup(ti, key, mask, n_mask_hit);
net/openvswitch/flow_table.c
762
if (flow) { /* Found */
net/openvswitch/flow_table.c
767
return flow;
net/openvswitch/flow_table.c
77
flow = kmem_cache_zalloc(flow_cache, GFP_KERNEL);
net/openvswitch/flow_table.c
78
if (!flow)
net/openvswitch/flow_table.c
791
struct sw_flow *flow;
net/openvswitch/flow_table.c
81
flow->stats_last_writer = -1;
net/openvswitch/flow_table.c
82
flow->cpu_used_mask = (struct cpumask *)&flow->stats[nr_cpu_ids];
net/openvswitch/flow_table.c
822
flow = flow_lookup(tbl, ti, ma, key, n_mask_hit,
net/openvswitch/flow_table.c
824
if (!flow)
net/openvswitch/flow_table.c
826
return flow;
net/openvswitch/flow_table.c
836
flow = flow_lookup(tbl, ti, ma, key, n_mask_hit, n_cache_hit,
net/openvswitch/flow_table.c
838
if (flow)
net/openvswitch/flow_table.c
842
return flow;
net/openvswitch/flow_table.c
852
struct sw_flow *flow;
net/openvswitch/flow_table.c
860
flow = flow_lookup(tbl, ti, ma, key, &n_mask_hit, &n_cache_hit, &index);
net/openvswitch/flow_table.c
862
return flow;
net/openvswitch/flow_table.c
876
struct sw_flow *flow;
net/openvswitch/flow_table.c
882
flow = masked_flow_lookup(ti, match->key, mask, &n_mask_hit);
net/openvswitch/flow_table.c
883
if (flow && ovs_identifier_is_key(&flow->id) &&
net/openvswitch/flow_table.c
884
ovs_flow_cmp_unmasked_key(flow, match)) {
net/openvswitch/flow_table.c
885
return flow;
net/openvswitch/flow_table.c
897
static bool ovs_flow_cmp_ufid(const struct sw_flow *flow,
net/openvswitch/flow_table.c
900
if (flow->id.ufid_len != sfid->ufid_len)
net/openvswitch/flow_table.c
903
return !memcmp(flow->id.ufid, sfid->ufid, sfid->ufid_len);
net/openvswitch/flow_table.c
906
bool ovs_flow_cmp(const struct sw_flow *flow,
net/openvswitch/flow_table.c
909
if (ovs_identifier_is_ufid(&flow->id))
net/openvswitch/flow_table.c
910
return flow_cmp_masked_key(flow, match->key, &match->range);
net/openvswitch/flow_table.c
912
return ovs_flow_cmp_unmasked_key(flow, match);
net/openvswitch/flow_table.c
919
struct sw_flow *flow;
net/openvswitch/flow_table.c
925
hlist_for_each_entry_rcu(flow, head, ufid_table.node[ti->node_ver],
net/openvswitch/flow_table.c
927
if (flow->ufid_table.hash == hash &&
net/openvswitch/flow_table.c
928
ovs_flow_cmp_ufid(flow, ufid))
net/openvswitch/flow_table.c
929
return flow;
net/openvswitch/flow_table.c
93
RCU_INIT_POINTER(flow->stats[0], stats);
net/openvswitch/flow_table.c
95
cpumask_set_cpu(0, flow->cpu_used_mask);
net/openvswitch/flow_table.c
954
void ovs_flow_tbl_remove(struct flow_table *table, struct sw_flow *flow)
net/openvswitch/flow_table.c
960
table_instance_flow_free(table, ti, ufid_ti, flow);
net/openvswitch/flow_table.c
97
return flow;
net/openvswitch/flow_table.c
99
kmem_cache_free(flow_cache, flow);
net/openvswitch/flow_table.h
85
int ovs_flow_tbl_insert(struct flow_table *table, struct sw_flow *flow,
net/openvswitch/flow_table.h
87
void ovs_flow_tbl_remove(struct flow_table *table, struct sw_flow *flow);
net/qrtr/af_qrtr.c
172
struct qrtr_tx_flow *flow;
net/qrtr/af_qrtr.c
193
xa_for_each(&node->qrtr_tx_flow, index, flow)
net/qrtr/af_qrtr.c
194
kfree(flow);
net/qrtr/af_qrtr.c
225
struct qrtr_tx_flow *flow;
net/qrtr/af_qrtr.c
230
flow = xa_load(&node->qrtr_tx_flow, key);
net/qrtr/af_qrtr.c
231
if (flow) {
net/qrtr/af_qrtr.c
232
spin_lock(&flow->resume_tx.lock);
net/qrtr/af_qrtr.c
233
flow->pending = 0;
net/qrtr/af_qrtr.c
234
spin_unlock(&flow->resume_tx.lock);
net/qrtr/af_qrtr.c
235
wake_up_interruptible_all(&flow->resume_tx);
net/qrtr/af_qrtr.c
260
struct qrtr_tx_flow *flow;
net/qrtr/af_qrtr.c
269
flow = xa_load(&node->qrtr_tx_flow, key);
net/qrtr/af_qrtr.c
270
if (!flow) {
net/qrtr/af_qrtr.c
271
flow = kzalloc_obj(*flow);
net/qrtr/af_qrtr.c
272
if (flow) {
net/qrtr/af_qrtr.c
273
init_waitqueue_head(&flow->resume_tx);
net/qrtr/af_qrtr.c
274
if (xa_err(xa_store(&node->qrtr_tx_flow, key, flow,
net/qrtr/af_qrtr.c
276
kfree(flow);
net/qrtr/af_qrtr.c
277
flow = NULL;
net/qrtr/af_qrtr.c
284
if (!flow)
net/qrtr/af_qrtr.c
287
spin_lock_irq(&flow->resume_tx.lock);
net/qrtr/af_qrtr.c
288
ret = wait_event_interruptible_locked_irq(flow->resume_tx,
net/qrtr/af_qrtr.c
289
flow->pending < QRTR_TX_FLOW_HIGH ||
net/qrtr/af_qrtr.c
290
flow->tx_failed ||
net/qrtr/af_qrtr.c
296
} else if (flow->tx_failed) {
net/qrtr/af_qrtr.c
297
flow->tx_failed = 0;
net/qrtr/af_qrtr.c
300
flow->pending++;
net/qrtr/af_qrtr.c
301
confirm_rx = flow->pending == QRTR_TX_FLOW_LOW;
net/qrtr/af_qrtr.c
303
spin_unlock_irq(&flow->resume_tx.lock);
net/qrtr/af_qrtr.c
325
struct qrtr_tx_flow *flow;
net/qrtr/af_qrtr.c
327
flow = xa_load(&node->qrtr_tx_flow, key);
net/qrtr/af_qrtr.c
328
if (flow) {
net/qrtr/af_qrtr.c
329
spin_lock_irq(&flow->resume_tx.lock);
net/qrtr/af_qrtr.c
330
flow->tx_failed = 1;
net/qrtr/af_qrtr.c
331
spin_unlock_irq(&flow->resume_tx.lock);
net/qrtr/af_qrtr.c
623
struct qrtr_tx_flow *flow;
net/qrtr/af_qrtr.c
649
xa_for_each(&node->qrtr_tx_flow, index, flow)
net/qrtr/af_qrtr.c
650
wake_up_interruptible_all(&flow->resume_tx);
net/sched/act_ct.c
245
struct flow_offload *flow,
net/sched/act_ct.c
251
struct nf_conn *ct = flow->ct;
net/sched/act_ct.c
262
set_bit(NF_FLOW_HW_ESTABLISHED, &flow->flags);
net/sched/act_ct.c
288
static bool tcf_ct_flow_is_outdated(const struct flow_offload *flow)
net/sched/act_ct.c
290
return test_bit(IPS_SEEN_REPLY_BIT, &flow->ct->status) &&
net/sched/act_ct.c
291
test_bit(IPS_HW_OFFLOAD_BIT, &flow->ct->status) &&
net/sched/act_ct.c
292
!test_bit(NF_FLOW_HW_PENDING, &flow->flags) &&
net/sched/act_ct.c
293
!test_bit(NF_FLOW_HW_ESTABLISHED, &flow->flags);
net/sched/act_ct.c
664
struct flow_offload *flow;
net/sched/act_ct.c
686
flow = container_of(tuplehash, struct flow_offload, tuplehash[dir]);
net/sched/act_ct.c
687
ct = flow->ct;
net/sched/act_ct.c
690
!test_bit(NF_FLOW_HW_BIDIRECTIONAL, &flow->flags)) {
net/sched/act_ct.c
695
set_bit(NF_FLOW_HW_BIDIRECTIONAL, &flow->flags);
net/sched/act_ct.c
696
else if (test_bit(NF_FLOW_HW_ESTABLISHED, &flow->flags))
net/sched/act_ct.c
705
flow_offload_teardown(flow);
net/sched/act_ct.c
716
tcf_ct_flow_ct_ext_ifidx_update(flow);
net/sched/act_ct.c
717
flow_offload_refresh(nf_ft, flow, force_refresh);
net/sched/cls_flow.c
103
const struct flow_keys *flow)
net/sched/cls_flow.c
105
if (flow->ports.ports)
net/sched/cls_flow.c
106
return ntohs(flow->ports.dst);
net/sched/cls_flow.c
153
const struct flow_keys *flow)
net/sched/cls_flow.c
162
return flow_get_src(skb, flow);
net/sched/cls_flow.c
166
const struct flow_keys *flow)
net/sched/cls_flow.c
175
return flow_get_dst(skb, flow);
net/sched/cls_flow.c
179
const struct flow_keys *flow)
net/sched/cls_flow.c
183
return flow_get_proto_src(skb, flow);
net/sched/cls_flow.c
187
const struct flow_keys *flow)
net/sched/cls_flow.c
191
return flow_get_proto_dst(skb, flow);
net/sched/cls_flow.c
241
static u32 flow_key_get(struct sk_buff *skb, int key, struct flow_keys *flow)
net/sched/cls_flow.c
245
return flow_get_src(skb, flow);
net/sched/cls_flow.c
247
return flow_get_dst(skb, flow);
net/sched/cls_flow.c
249
return flow_get_proto(skb, flow);
net/sched/cls_flow.c
251
return flow_get_proto_src(skb, flow);
net/sched/cls_flow.c
253
return flow_get_proto_dst(skb, flow);
net/sched/cls_flow.c
263
return flow_get_nfct_src(skb, flow);
net/sched/cls_flow.c
265
return flow_get_nfct_dst(skb, flow);
net/sched/cls_flow.c
267
return flow_get_nfct_proto_src(skb, flow);
net/sched/cls_flow.c
269
return flow_get_nfct_proto_dst(skb, flow);
net/sched/cls_flow.c
67
static u32 flow_get_src(const struct sk_buff *skb, const struct flow_keys *flow)
net/sched/cls_flow.c
69
__be32 src = flow_get_u32_src(flow);
net/sched/cls_flow.c
77
static u32 flow_get_dst(const struct sk_buff *skb, const struct flow_keys *flow)
net/sched/cls_flow.c
79
__be32 dst = flow_get_u32_dst(flow);
net/sched/cls_flow.c
88
const struct flow_keys *flow)
net/sched/cls_flow.c
90
return flow->basic.ip_proto;
net/sched/cls_flow.c
94
const struct flow_keys *flow)
net/sched/cls_flow.c
96
if (flow->ports.ports)
net/sched/cls_flow.c
97
return ntohs(flow->ports.src);
net/sched/sch_cake.c
1212
struct cake_flow *flow)
net/sched/sch_cake.c
1229
if (flow->head == flow->tail)
net/sched/sch_cake.c
1232
skb = flow->tail;
net/sched/sch_cake.c
1252
for (skb_check = flow->head;
net/sched/sch_cake.c
1360
flow->head = elig_ack->next;
net/sched/sch_cake.c
1567
struct cake_flow *flow;
net/sched/sch_cake.c
1584
flow = &b->flows[idx];
net/sched/sch_cake.c
1585
skb = dequeue_head(flow);
net/sched/sch_cake.c
1592
if (cobalt_queue_full(&flow->cvars, &b->cparams, now))
net/sched/sch_cake.c
1601
flow->dropped++;
net/sched/sch_cake.c
1718
u16 flow = 0, host = 0;
net/sched/sch_cake.c
1741
flow = TC_H_MIN(res.classid);
net/sched/sch_cake.c
1747
return cake_hash(*t, skb, flow_mode, flow, host) + 1;
net/sched/sch_cake.c
1761
struct cake_flow *flow;
net/sched/sch_cake.c
1774
flow = &b->flows[idx];
net/sched/sch_cake.c
1816
flow_queue_add(flow, segs);
net/sched/sch_cake.c
1840
flow_queue_add(flow, skb);
net/sched/sch_cake.c
1843
ack = cake_ack_filter(q, flow);
net/sched/sch_cake.c
1916
if (!flow->set || flow->set == CAKE_SET_DECAYING) {
net/sched/sch_cake.c
1917
if (!flow->set) {
net/sched/sch_cake.c
1918
list_add_tail(&flow->flowchain, &b->new_flows);
net/sched/sch_cake.c
1921
list_move_tail(&flow->flowchain, &b->new_flows);
net/sched/sch_cake.c
1923
flow->set = CAKE_SET_SPARSE;
net/sched/sch_cake.c
1926
flow->deficit = cake_get_flow_quantum(b, flow, q->config->flow_mode);
net/sched/sch_cake.c
1927
} else if (flow->set == CAKE_SET_SPARSE_WAIT) {
net/sched/sch_cake.c
1931
flow->set = CAKE_SET_BULK;
net/sched/sch_cake.c
1935
cake_inc_srchost_bulk_flow_count(b, flow, q->config->flow_mode);
net/sched/sch_cake.c
1936
cake_inc_dsthost_bulk_flow_count(b, flow, q->config->flow_mode);
net/sched/sch_cake.c
1972
struct cake_flow *flow = &b->flows[q->cur_flow];
net/sched/sch_cake.c
1976
if (flow->head) {
net/sched/sch_cake.c
1977
skb = dequeue_head(flow);
net/sched/sch_cake.c
2009
struct cake_flow *flow;
net/sched/sch_cake.c
2140
flow = list_first_entry(head, struct cake_flow, flowchain);
net/sched/sch_cake.c
2141
q->cur_flow = flow - b->flows;
net/sched/sch_cake.c
2145
if (flow->deficit <= 0) {
net/sched/sch_cake.c
2150
if (flow->set == CAKE_SET_SPARSE) {
net/sched/sch_cake.c
2151
if (flow->head) {
net/sched/sch_cake.c
2155
cake_inc_srchost_bulk_flow_count(b, flow, q->config->flow_mode);
net/sched/sch_cake.c
2156
cake_inc_dsthost_bulk_flow_count(b, flow, q->config->flow_mode);
net/sched/sch_cake.c
2158
flow->set = CAKE_SET_BULK;
net/sched/sch_cake.c
2164
flow->set = CAKE_SET_SPARSE_WAIT;
net/sched/sch_cake.c
2168
flow->deficit += cake_get_flow_quantum(b, flow, q->config->flow_mode);
net/sched/sch_cake.c
2169
list_move_tail(&flow->flowchain, &b->old_flows);
net/sched/sch_cake.c
2179
if (cobalt_queue_empty(&flow->cvars, &b->cparams, now))
net/sched/sch_cake.c
2182
if (flow->cvars.p_drop || flow->cvars.count ||
net/sched/sch_cake.c
2183
ktime_before(now, flow->cvars.drop_next)) {
net/sched/sch_cake.c
2187
list_move_tail(&flow->flowchain,
net/sched/sch_cake.c
2189
if (flow->set == CAKE_SET_BULK) {
net/sched/sch_cake.c
2192
cake_dec_srchost_bulk_flow_count(b, flow, q->config->flow_mode);
net/sched/sch_cake.c
2193
cake_dec_dsthost_bulk_flow_count(b, flow, q->config->flow_mode);
net/sched/sch_cake.c
2196
} else if (flow->set == CAKE_SET_SPARSE ||
net/sched/sch_cake.c
2197
flow->set == CAKE_SET_SPARSE_WAIT) {
net/sched/sch_cake.c
2201
flow->set = CAKE_SET_DECAYING;
net/sched/sch_cake.c
2204
list_del_init(&flow->flowchain);
net/sched/sch_cake.c
2205
if (flow->set == CAKE_SET_SPARSE ||
net/sched/sch_cake.c
2206
flow->set == CAKE_SET_SPARSE_WAIT)
net/sched/sch_cake.c
2208
else if (flow->set == CAKE_SET_BULK) {
net/sched/sch_cake.c
2211
cake_dec_srchost_bulk_flow_count(b, flow, q->config->flow_mode);
net/sched/sch_cake.c
2212
cake_dec_dsthost_bulk_flow_count(b, flow, q->config->flow_mode);
net/sched/sch_cake.c
2216
flow->set = CAKE_SET_NONE;
net/sched/sch_cake.c
2221
reason = cobalt_should_drop(&flow->cvars, &b->cparams, now, skb,
net/sched/sch_cake.c
2226
if (reason == SKB_NOT_DROPPED_YET || !flow->head)
net/sched/sch_cake.c
2233
flow->deficit -= len;
net/sched/sch_cake.c
2236
flow->dropped++;
net/sched/sch_cake.c
2245
b->tin_ecn_mark += !!flow->cvars.ecn_marked;
net/sched/sch_cake.c
2258
flow->deficit -= len;
net/sched/sch_cake.c
2864
struct cake_flow *flow = b->flows + j;
net/sched/sch_cake.c
2867
INIT_LIST_HEAD(&flow->flowchain);
net/sched/sch_cake.c
2868
cobalt_vars_init(&flow->cvars);
net/sched/sch_cake.c
3119
const struct cake_flow *flow = NULL;
net/sched/sch_cake.c
3129
flow = &b->flows[idx % CAKE_QUEUES];
net/sched/sch_cake.c
3131
if (flow->head) {
net/sched/sch_cake.c
3133
skb = flow->head;
net/sched/sch_cake.c
3141
qs.drops = flow->dropped;
net/sched/sch_cake.c
3145
if (flow) {
net/sched/sch_cake.c
3161
PUT_STAT_S32(DEFICIT, flow->deficit);
net/sched/sch_cake.c
3162
PUT_STAT_U32(DROPPING, flow->cvars.dropping);
net/sched/sch_cake.c
3163
PUT_STAT_U32(COBALT_COUNT, flow->cvars.count);
net/sched/sch_cake.c
3164
PUT_STAT_U32(P_DROP, flow->cvars.p_drop);
net/sched/sch_cake.c
3165
if (flow->cvars.p_drop) {
net/sched/sch_cake.c
3169
flow->cvars.blue_timer)));
net/sched/sch_cake.c
3171
if (flow->cvars.dropping) {
net/sched/sch_cake.c
3175
flow->cvars.drop_next)));
net/sched/sch_cake.c
647
struct cake_flow *flow,
net/sched/sch_cake.c
651
q->hosts[flow->srchost].srchost_bulk_flow_count))
net/sched/sch_cake.c
652
q->hosts[flow->srchost].srchost_bulk_flow_count--;
net/sched/sch_cake.c
656
struct cake_flow *flow,
net/sched/sch_cake.c
660
q->hosts[flow->srchost].srchost_bulk_flow_count < CAKE_QUEUES))
net/sched/sch_cake.c
661
q->hosts[flow->srchost].srchost_bulk_flow_count++;
net/sched/sch_cake.c
665
struct cake_flow *flow,
net/sched/sch_cake.c
669
q->hosts[flow->dsthost].dsthost_bulk_flow_count))
net/sched/sch_cake.c
670
q->hosts[flow->dsthost].dsthost_bulk_flow_count--;
net/sched/sch_cake.c
674
struct cake_flow *flow,
net/sched/sch_cake.c
678
q->hosts[flow->dsthost].dsthost_bulk_flow_count < CAKE_QUEUES))
net/sched/sch_cake.c
679
q->hosts[flow->dsthost].dsthost_bulk_flow_count++;
net/sched/sch_cake.c
683
struct cake_flow *flow,
net/sched/sch_cake.c
690
q->hosts[flow->srchost].srchost_bulk_flow_count);
net/sched/sch_cake.c
694
q->hosts[flow->dsthost].dsthost_bulk_flow_count);
net/sched/sch_cake.c
912
static struct sk_buff *dequeue_head(struct cake_flow *flow)
net/sched/sch_cake.c
914
struct sk_buff *skb = flow->head;
net/sched/sch_cake.c
917
flow->head = skb->next;
net/sched/sch_cake.c
926
static void flow_queue_add(struct cake_flow *flow, struct sk_buff *skb)
net/sched/sch_cake.c
928
if (!flow->head)
net/sched/sch_cake.c
929
flow->head = skb;
net/sched/sch_cake.c
931
flow->tail->next = skb;
net/sched/sch_cake.c
932
flow->tail = skb;
net/sched/sch_fq.c
197
static void fq_flow_add_tail(struct fq_sched_data *q, struct fq_flow *flow,
net/sched/sch_fq.c
200
struct fq_perband_flows *pband = &q->band_flows[flow->band];
net/sched/sch_fq.c
206
head->last->next = flow;
net/sched/sch_fq.c
208
head->first = flow;
net/sched/sch_fq.c
209
head->last = flow;
net/sched/sch_fq.c
210
flow->next = NULL;
net/sched/sch_fq.c
461
static struct sk_buff *fq_peek(struct fq_flow *flow)
net/sched/sch_fq.c
463
struct sk_buff *skb = skb_rb_first(&flow->t_root);
net/sched/sch_fq.c
464
struct sk_buff *head = flow->head;
net/sched/sch_fq.c
477
static void fq_erase_head(struct Qdisc *sch, struct fq_flow *flow,
net/sched/sch_fq.c
480
if (skb == flow->head) {
net/sched/sch_fq.c
484
flow->head = next;
net/sched/sch_fq.c
486
rb_erase(&skb->rbnode, &flow->t_root);
net/sched/sch_fq.c
494
static void fq_dequeue_skb(struct Qdisc *sch, struct fq_flow *flow,
net/sched/sch_fq.c
497
fq_erase_head(sch, flow, skb);
net/sched/sch_fq.c
504
static void flow_queue_add(struct fq_flow *flow, struct sk_buff *skb)
net/sched/sch_fq.c
509
head = flow->head;
net/sched/sch_fq.c
511
fq_skb_cb(skb)->time_to_send >= fq_skb_cb(flow->tail)->time_to_send) {
net/sched/sch_fq.c
513
flow->head = skb;
net/sched/sch_fq.c
515
flow->tail->next = skb;
net/sched/sch_fq.c
516
flow->tail = skb;
net/sched/sch_fq.c
521
p = &flow->t_root.rb_node;
net/sched/sch_fq.c
533
rb_insert_color(&skb->rbnode, &flow->t_root);
net/sched/sch_fq.c
784
static void fq_flow_purge(struct fq_flow *flow)
net/sched/sch_fq.c
786
struct rb_node *p = rb_first(&flow->t_root);
net/sched/sch_fq.c
792
rb_erase(&skb->rbnode, &flow->t_root);
net/sched/sch_fq.c
795
rtnl_kfree_skbs(flow->head, flow->tail);
net/sched/sch_fq.c
796
flow->head = NULL;
net/sched/sch_fq.c
797
flow->qlen = 0;
net/sched/sch_fq_codel.c
116
static inline struct sk_buff *dequeue_head(struct fq_codel_flow *flow)
net/sched/sch_fq_codel.c
118
struct sk_buff *skb = flow->head;
net/sched/sch_fq_codel.c
120
flow->head = skb->next;
net/sched/sch_fq_codel.c
126
static inline void flow_queue_add(struct fq_codel_flow *flow,
net/sched/sch_fq_codel.c
129
if (flow->head == NULL)
net/sched/sch_fq_codel.c
130
flow->head = skb;
net/sched/sch_fq_codel.c
132
flow->tail->next = skb;
net/sched/sch_fq_codel.c
133
flow->tail = skb;
net/sched/sch_fq_codel.c
143
struct fq_codel_flow *flow;
net/sched/sch_fq_codel.c
164
flow = &q->flows[idx];
net/sched/sch_fq_codel.c
168
skb = dequeue_head(flow);
net/sched/sch_fq_codel.c
176
flow->cvars.count += i;
net/sched/sch_fq_codel.c
190
struct fq_codel_flow *flow;
net/sched/sch_fq_codel.c
205
flow = &q->flows[idx];
net/sched/sch_fq_codel.c
206
flow_queue_add(flow, skb);
net/sched/sch_fq_codel.c
210
if (list_empty(&flow->flowchain)) {
net/sched/sch_fq_codel.c
211
list_add_tail(&flow->flowchain, &q->new_flows);
net/sched/sch_fq_codel.c
213
flow->deficit = q->quantum;
net/sched/sch_fq_codel.c
260
struct fq_codel_flow *flow;
net/sched/sch_fq_codel.c
263
flow = container_of(vars, struct fq_codel_flow, cvars);
net/sched/sch_fq_codel.c
264
if (flow->head) {
net/sched/sch_fq_codel.c
265
skb = dequeue_head(flow);
net/sched/sch_fq_codel.c
266
q->backlogs[flow - q->flows] -= qdisc_pkt_len(skb);
net/sched/sch_fq_codel.c
286
struct fq_codel_flow *flow;
net/sched/sch_fq_codel.c
296
flow = list_first_entry(head, struct fq_codel_flow, flowchain);
net/sched/sch_fq_codel.c
298
if (flow->deficit <= 0) {
net/sched/sch_fq_codel.c
299
flow->deficit += q->quantum;
net/sched/sch_fq_codel.c
300
list_move_tail(&flow->flowchain, &q->old_flows);
net/sched/sch_fq_codel.c
305
&flow->cvars, &q->cstats, qdisc_pkt_len,
net/sched/sch_fq_codel.c
311
list_move_tail(&flow->flowchain, &q->old_flows);
net/sched/sch_fq_codel.c
313
list_del_init(&flow->flowchain);
net/sched/sch_fq_codel.c
317
flow->deficit -= qdisc_pkt_len(skb);
net/sched/sch_fq_codel.c
328
static void fq_codel_flow_purge(struct fq_codel_flow *flow)
net/sched/sch_fq_codel.c
330
rtnl_kfree_skbs(flow->head, flow->tail);
net/sched/sch_fq_codel.c
331
flow->head = NULL;
net/sched/sch_fq_codel.c
342
struct fq_codel_flow *flow = q->flows + i;
net/sched/sch_fq_codel.c
344
fq_codel_flow_purge(flow);
net/sched/sch_fq_codel.c
345
INIT_LIST_HEAD(&flow->flowchain);
net/sched/sch_fq_codel.c
346
codel_vars_init(&flow->cvars);
net/sched/sch_fq_codel.c
510
struct fq_codel_flow *flow = q->flows + i;
net/sched/sch_fq_codel.c
512
INIT_LIST_HEAD(&flow->flowchain);
net/sched/sch_fq_codel.c
513
codel_vars_init(&flow->cvars);
net/sched/sch_fq_codel.c
653
const struct fq_codel_flow *flow = &q->flows[idx];
net/sched/sch_fq_codel.c
658
xstats.class_stats.deficit = flow->deficit;
net/sched/sch_fq_codel.c
660
codel_time_to_us(flow->cvars.ldelay);
net/sched/sch_fq_codel.c
661
xstats.class_stats.count = flow->cvars.count;
net/sched/sch_fq_codel.c
662
xstats.class_stats.lastcount = flow->cvars.lastcount;
net/sched/sch_fq_codel.c
663
xstats.class_stats.dropping = flow->cvars.dropping;
net/sched/sch_fq_codel.c
664
if (flow->cvars.dropping) {
net/sched/sch_fq_codel.c
665
codel_tdiff_t delta = flow->cvars.drop_next -
net/sched/sch_fq_codel.c
672
if (flow->head) {
net/sched/sch_fq_codel.c
674
skb = flow->head;
net/sched/sch_fq_pie.c
119
static inline void flow_queue_add(struct fq_pie_flow *flow,
net/sched/sch_fq_pie.c
122
if (!flow->head)
net/sched/sch_fq_pie.c
123
flow->head = skb;
net/sched/sch_fq_pie.c
125
flow->tail->next = skb;
net/sched/sch_fq_pie.c
126
flow->tail = skb;
net/sched/sch_fq_pie.c
229
static inline struct sk_buff *dequeue_head(struct fq_pie_flow *flow)
net/sched/sch_fq_pie.c
231
struct sk_buff *skb = flow->head;
net/sched/sch_fq_pie.c
233
flow->head = skb->next;
net/sched/sch_fq_pie.c
242
struct fq_pie_flow *flow;
net/sched/sch_fq_pie.c
254
flow = list_first_entry(head, struct fq_pie_flow, flowchain);
net/sched/sch_fq_pie.c
256
if (flow->deficit <= 0) {
net/sched/sch_fq_pie.c
257
flow->deficit += q->quantum;
net/sched/sch_fq_pie.c
258
list_move_tail(&flow->flowchain, &q->old_flows);
net/sched/sch_fq_pie.c
262
if (flow->head) {
net/sched/sch_fq_pie.c
263
skb = dequeue_head(flow);
net/sched/sch_fq_pie.c
273
list_move_tail(&flow->flowchain, &q->old_flows);
net/sched/sch_fq_pie.c
275
list_del_init(&flow->flowchain);
net/sched/sch_fq_pie.c
279
flow->qlen--;
net/sched/sch_fq_pie.c
280
flow->deficit -= pkt_len;
net/sched/sch_fq_pie.c
281
flow->backlog -= pkt_len;
net/sched/sch_fq_pie.c
283
pie_process_dequeue(skb, &q->p_params, &flow->vars, flow->backlog);
net/sched/sch_fq_pie.c
457
struct fq_pie_flow *flow = q->flows + idx;
net/sched/sch_fq_pie.c
459
INIT_LIST_HEAD(&flow->flowchain);
net/sched/sch_fq_pie.c
460
pie_vars_init(&flow->vars);
net/sched/sch_fq_pie.c
542
struct fq_pie_flow *flow = q->flows + idx;
net/sched/sch_fq_pie.c
545
rtnl_kfree_skbs(flow->head, flow->tail);
net/sched/sch_fq_pie.c
546
flow->head = NULL;
net/sched/sch_fq_pie.c
548
INIT_LIST_HEAD(&flow->flowchain);
net/sched/sch_fq_pie.c
549
pie_vars_init(&flow->vars);
net/sched/sch_hhf.c
184
struct hh_flow_state *flow, *next;
net/sched/sch_hhf.c
190
list_for_each_entry_safe(flow, next, head, flowchain) {
net/sched/sch_hhf.c
191
u32 prev = flow->hit_timestamp + q->hhf_evict_timeout;
net/sched/sch_hhf.c
197
if (list_is_last(&flow->flowchain, head))
net/sched/sch_hhf.c
199
list_del(&flow->flowchain);
net/sched/sch_hhf.c
200
kfree(flow);
net/sched/sch_hhf.c
202
} else if (flow->hash_id == hash) {
net/sched/sch_hhf.c
203
return flow;
net/sched/sch_hhf.c
215
struct hh_flow_state *flow;
net/sched/sch_hhf.c
220
list_for_each_entry(flow, head, flowchain) {
net/sched/sch_hhf.c
221
u32 prev = flow->hit_timestamp + q->hhf_evict_timeout;
net/sched/sch_hhf.c
224
return flow;
net/sched/sch_hhf.c
233
flow = kzalloc_obj(struct hh_flow_state, GFP_ATOMIC);
net/sched/sch_hhf.c
234
if (!flow)
net/sched/sch_hhf.c
238
INIT_LIST_HEAD(&flow->flowchain);
net/sched/sch_hhf.c
239
list_add_tail(&flow->flowchain, head);
net/sched/sch_hhf.c
241
return flow;
net/sched/sch_hhf.c
252
struct hh_flow_state *flow;
net/sched/sch_hhf.c
271
flow = seek_list(hash, &q->hh_flows[flow_pos], q);
net/sched/sch_hhf.c
272
if (flow) { /* found its HH flow */
net/sched/sch_hhf.c
273
flow->hit_timestamp = now;
net/sched/sch_hhf.c
307
flow = alloc_new_hh(&q->hh_flows[flow_pos], q);
net/sched/sch_hhf.c
308
if (!flow) /* memory alloc problem */
net/sched/sch_hhf.c
310
flow->hash_id = hash;
net/sched/sch_hhf.c
311
flow->hit_timestamp = now;
net/sched/sch_hhf.c
485
struct hh_flow_state *flow, *next;
net/sched/sch_hhf.c
490
list_for_each_entry_safe(flow, next, head, flowchain) {
net/sched/sch_hhf.c
491
list_del(&flow->flowchain);
net/sched/sch_hhf.c
492
kfree(flow);
net/smc/smc_llc.c
2027
struct smc_llc_flow *flow = &link->lgr->llc_flow_lcl;
net/smc/smc_llc.c
2038
if (flowtype != SMC_LLC_FLOW_ADD_LINK || flow->qentry)
net/smc/smc_llc.c
2042
if (flowtype != SMC_LLC_FLOW_DEL_LINK || flow->qentry)
net/smc/smc_llc.c
2047
if (flowtype != SMC_LLC_FLOW_RKEY || flow->qentry)
net/smc/smc_llc.c
207
struct smc_llc_qentry *smc_llc_flow_qentry_clr(struct smc_llc_flow *flow)
net/smc/smc_llc.c
209
struct smc_llc_qentry *qentry = flow->qentry;
net/smc/smc_llc.c
211
flow->qentry = NULL;
net/smc/smc_llc.c
215
void smc_llc_flow_qentry_del(struct smc_llc_flow *flow)
net/smc/smc_llc.c
219
if (flow->qentry) {
net/smc/smc_llc.c
220
qentry = flow->qentry;
net/smc/smc_llc.c
221
flow->qentry = NULL;
net/smc/smc_llc.c
226
static inline void smc_llc_flow_qentry_set(struct smc_llc_flow *flow,
net/smc/smc_llc.c
229
flow->qentry = qentry;
net/smc/smc_llc.c
254
static bool smc_llc_flow_start(struct smc_llc_flow *flow,
net/smc/smc_llc.c
260
if (flow->type) {
net/smc/smc_llc.c
262
smc_llc_flow_parallel(lgr, flow->type, qentry);
net/smc/smc_llc.c
268
flow->type = SMC_LLC_FLOW_ADD_LINK;
net/smc/smc_llc.c
271
flow->type = SMC_LLC_FLOW_DEL_LINK;
net/smc/smc_llc.c
275
flow->type = SMC_LLC_FLOW_RKEY;
net/smc/smc_llc.c
278
flow->type = SMC_LLC_FLOW_NONE;
net/smc/smc_llc.c
280
smc_llc_flow_qentry_set(flow, qentry);
net/smc/smc_llc.c
320
void smc_llc_flow_stop(struct smc_link_group *lgr, struct smc_llc_flow *flow)
net/smc/smc_llc.c
323
memset(flow, 0, sizeof(*flow));
net/smc/smc_llc.c
324
flow->type = SMC_LLC_FLOW_NONE;
net/smc/smc_llc.c
327
flow == &lgr->llc_flow_lcl)
net/smc/smc_llc.c
340
struct smc_llc_flow *flow = &lgr->llc_flow_lcl;
net/smc/smc_llc.c
344
(flow->qentry ||
net/smc/smc_llc.c
348
if (!flow->qentry ||
net/smc/smc_llc.c
350
smc_llc_flow_qentry_del(flow);
net/smc/smc_llc.c
353
rcv_msg = flow->qentry->msg.raw.hdr.common.llc_type;
net/smc/smc_llc.c
359
smc_llc_flow_qentry_clr(flow));
net/smc/smc_llc.c
366
flow->type, lgr->role,
net/smc/smc_llc.c
367
flow->qentry->msg.raw.hdr.flags);
net/smc/smc_llc.c
368
smc_llc_flow_qentry_del(flow);
net/smc/smc_llc.c
371
return flow->qentry;
net/smc/smc_llc.h
102
void smc_llc_flow_stop(struct smc_link_group *lgr, struct smc_llc_flow *flow);
net/smc/smc_llc.h
110
struct smc_llc_qentry *smc_llc_flow_qentry_clr(struct smc_llc_flow *flow);
net/smc/smc_llc.h
111
void smc_llc_flow_qentry_del(struct smc_llc_flow *flow);
samples/bpf/sockex2_kern.c
100
struct flow_key_record *flow)
samples/bpf/sockex2_kern.c
120
nhoff = parse_ip(skb, nhoff, &ip_proto, flow);
samples/bpf/sockex2_kern.c
122
nhoff = parse_ipv6(skb, nhoff, &ip_proto, flow);
samples/bpf/sockex2_kern.c
158
nhoff = parse_ip(skb, nhoff, &ip_proto, flow);
samples/bpf/sockex2_kern.c
160
nhoff = parse_ipv6(skb, nhoff, &ip_proto, flow);
samples/bpf/sockex2_kern.c
166
nhoff = parse_ip(skb, nhoff, &ip_proto, flow);
samples/bpf/sockex2_kern.c
169
nhoff = parse_ipv6(skb, nhoff, &ip_proto, flow);
samples/bpf/sockex2_kern.c
175
flow->ip_proto = ip_proto;
samples/bpf/sockex2_kern.c
179
flow->ports = load_word(skb, nhoff);
samples/bpf/sockex2_kern.c
182
flow->thoff = (__u16) nhoff;
samples/bpf/sockex2_kern.c
202
struct flow_key_record flow = {};
samples/bpf/sockex2_kern.c
206
if (!flow_dissector(skb, &flow))
samples/bpf/sockex2_kern.c
209
key = flow.dst;
samples/bpf/sockex2_kern.c
62
struct flow_key_record *flow)
samples/bpf/sockex2_kern.c
72
flow->src = load_word(skb, nhoff + offsetof(struct iphdr, saddr));
samples/bpf/sockex2_kern.c
73
flow->dst = load_word(skb, nhoff + offsetof(struct iphdr, daddr));
samples/bpf/sockex2_kern.c
86
struct flow_key_record *flow)
samples/bpf/sockex2_kern.c
90
flow->src = ipv6_addr_hash(skb,
samples/bpf/sockex2_kern.c
92
flow->dst = ipv6_addr_hash(skb,
samples/bpf/sockex3_kern.c
147
g->flow.ports = load_word(skb, nhoff);
samples/bpf/sockex3_kern.c
149
g->flow.ip_proto = ip_proto;
samples/bpf/sockex3_kern.c
174
g->flow.src = load_word(skb, nhoff + offsetof(struct iphdr, saddr));
samples/bpf/sockex3_kern.c
175
g->flow.dst = load_word(skb, nhoff + offsetof(struct iphdr, daddr));
samples/bpf/sockex3_kern.c
199
g->flow.src = ipv6_addr_hash(skb,
samples/bpf/sockex3_kern.c
201
g->flow.dst = ipv6_addr_hash(skb,
samples/bpf/sockex3_kern.c
59
struct flow_key_record flow;
samples/bpf/sockex3_kern.c
92
struct flow_key_record key = g->flow;
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
106
struct fq_flow_node __kptr * flow;
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
168
struct fq_flow_node *flow, u32 *flow_cnt)
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
171
bpf_list_push_front(head, &flow->list_node);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
178
struct fq_flow_node *flow, u32 *flow_cnt)
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
181
bpf_list_push_back(head, &flow->list_node);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
220
static void fq_flow_set_detached(struct fq_flow_node *flow)
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
222
flow->age = bpf_jiffies64();
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
225
static bool fq_flow_is_detached(struct fq_flow_node *flow)
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
227
return flow->age != 0 && flow->age != ~0ULL;
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
240
struct fq_flow_node *flow;
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
243
flow = bpf_obj_new(typeof(*flow));
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
244
if (!flow)
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
247
flow->credit = q.initial_quantum,
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
248
flow->qlen = 0,
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
249
flow->age = 1,
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
250
flow->time_next_packet = 0,
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
260
bpf_obj_drop(flow);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
264
bpf_kptr_xchg_back(&(*sflow)->flow, flow);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
311
struct fq_flow_node *flow = NULL, *flow_copy;
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
339
flow = bpf_kptr_xchg(&sflow->flow, flow);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
340
if (!flow)
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
344
if (flow->qlen >= q.flow_plimit) {
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
345
bpf_kptr_xchg_back(&sflow->flow, flow);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
349
if (fq_flow_is_detached(flow)) {
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
350
flow_copy = bpf_refcount_acquire(flow);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
365
bpf_kptr_xchg_back(&sflow->flow, flow);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
377
bpf_spin_lock(&flow->lock);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
378
bpf_rbtree_add(&flow->queue, &skbn->node, skbn_tstamp_less);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
379
bpf_spin_unlock(&flow->lock);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
381
flow->qlen++;
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
382
bpf_kptr_xchg_back(&sflow->flow, flow);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
396
struct fq_flow_node *flow;
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
406
flow = container_of(node, struct fq_flow_node, rb_node);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
407
if (!ctx->unset_all && flow->time_next_packet > ctx->now) {
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
408
q.time_next_delayed_flow = flow->time_next_packet;
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
413
node = bpf_rbtree_remove(&fq_delayed, &flow->rb_node);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
420
flow = container_of(node, struct fq_flow_node, rb_node);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
421
flow->age = 0;
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
422
fq_flows_add_tail(&fq_old_flows, &fq_old_flows_lock, flow, &q.old_flow_cnt);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
427
static void fq_flow_set_throttled(struct fq_flow_node *flow)
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
429
flow->age = ~0ULL;
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
431
if (q.time_next_delayed_flow > flow->time_next_packet)
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
432
q.time_next_delayed_flow = flow->time_next_packet;
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
435
bpf_rbtree_add(&fq_delayed, &flow->rb_node, fn_time_next_packet_less);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
467
struct fq_flow_node *flow;
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
490
flow = container_of(node, struct fq_flow_node, list_node);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
491
if (flow->credit <= 0) {
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
492
flow->credit += q.quantum;
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
493
fq_flows_add_tail(&fq_old_flows, &fq_old_flows_lock, flow, &q.old_flow_cnt);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
497
bpf_spin_lock(&flow->lock);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
498
rb_node = bpf_rbtree_first(&flow->queue);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
500
bpf_spin_unlock(&flow->lock);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
503
fq_flows_add_tail(&fq_old_flows, &fq_old_flows_lock, flow, &q.old_flow_cnt);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
505
fq_flow_set_detached(flow);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
506
bpf_obj_drop(flow);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
514
time_next_packet = (time_to_send > flow->time_next_packet) ?
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
515
time_to_send : flow->time_next_packet;
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
517
bpf_spin_unlock(&flow->lock);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
518
flow->time_next_packet = time_next_packet;
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
519
fq_flow_set_throttled(flow);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
523
rb_node = bpf_rbtree_remove(&flow->queue, rb_node);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
524
bpf_spin_unlock(&flow->lock);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
536
flow->credit -= qdisc_skb_cb(skb)->pkt_len;
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
537
flow->qlen--;
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
540
fq_flows_add_head(head, lock, flow, cnt);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
549
struct fq_flow_node *flow = NULL;
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
560
flow = bpf_kptr_xchg(&sflow->flow, flow);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
561
if (!flow)
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
564
bpf_spin_lock(&flow->lock);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
565
rb_node = bpf_rbtree_first(&flow->queue);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
567
bpf_spin_unlock(&flow->lock);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
572
rb_node = bpf_rbtree_remove(&flow->queue, &skbn->node);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
573
bpf_spin_unlock(&flow->lock);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
583
bpf_kptr_xchg_back(&sflow->flow, flow);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
627
struct fq_flow_node *flow;
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
640
flow = container_of(node, struct fq_flow_node, list_node);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
641
bpf_obj_drop(flow);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
652
static bool fq_gc_candidate(struct fq_flow_node *flow)
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
656
return fq_flow_is_detached(flow) &&
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
657
((s64)(jiffies - (flow->age + FQ_GC_AGE)) > 0);
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
664
if (sflow->flow &&
tools/testing/selftests/bpf/progs/bpf_qdisc_fq.c
665
(!ctx->gc_only || fq_gc_candidate(sflow->flow))) {
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
123
struct flow_key flow;
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
245
pckt->flow.port16[0] = udp->source;
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
246
pckt->flow.port16[1] = udp->dest;
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
248
pckt->flow.port16[0] = udp->dest;
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
249
pckt->flow.port16[1] = udp->source;
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
269
pckt->flow.port16[0] = tcp->source;
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
270
pckt->flow.port16[1] = tcp->dest;
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
272
pckt->flow.port16[0] = tcp->dest;
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
273
pckt->flow.port16[1] = tcp->source;
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
308
ip_suffix = pckt->flow.srcv6[3] ^ pckt->flow.port16[0];
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
335
__u32 ip_suffix = bpf_ntohs(pckt->flow.port16[0]);
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
345
ip_suffix ^= pckt->flow.src;
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
474
pckt->flow.proto = ip6h->nexthdr;
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
476
memcpy(pckt->flow.srcv6, ip6h->daddr.in6_u.u6_addr32, 16);
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
477
memcpy(pckt->flow.dstv6, ip6h->saddr.in6_u.u6_addr32, 16);
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
501
pckt->flow.proto = iph->protocol;
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
503
pckt->flow.src = iph->daddr;
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
504
pckt->flow.dst = iph->saddr;
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
513
return jhash_2words(jhash(pckt->flow.srcv6, 16, 12),
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
514
pckt->flow.ports, 24);
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
516
return jhash_2words(pckt->flow.src, pckt->flow.ports,
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
534
pckt->flow.port16[0] = pckt->flow.port16[1];
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
535
memset(pckt->flow.srcv6, 0, 16);
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
565
if (pckt->flow.proto == IPPROTO_UDP)
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
568
bpf_map_update_elem(lru_map, &pckt->flow, &new_dst_lru, 0);
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
583
dst_lru = bpf_map_lookup_elem(lru_map, &pckt->flow);
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
586
if (pckt->flow.proto == IPPROTO_UDP) {
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
616
pckt->flow.proto = *protocol;
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
626
memcpy(pckt->flow.srcv6, ip6h->saddr.in6_u.u6_addr32, 16);
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
627
memcpy(pckt->flow.dstv6, ip6h->daddr.in6_u.u6_addr32, 16);
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
648
pckt->flow.proto = *protocol;
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
658
pckt->flow.src = iph->saddr;
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
659
pckt->flow.dst = iph->daddr;
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
693
protocol = pckt.flow.proto;
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
705
memcpy(vip.vipv6, pckt.flow.dstv6, 16);
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
707
vip.vip = pckt.flow.dst;
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
708
vip.port = pckt.flow.port16[1];
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
709
vip.proto = pckt.flow.proto;
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
717
pckt.flow.port16[1] = 0;
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
727
pckt.flow.port16[0] = 0;
tools/testing/selftests/bpf/progs/test_xdp_noinline.c
732
if (pckt.flow.proto == IPPROTO_TCP) {