flow 83 arch/arc/include/asm/disasm.h enum flow flow; flow 78 arch/arc/kernel/disasm.c state->flow = direct_jump; flow 89 arch/arc/kernel/disasm.c state->flow = direct_call; flow 93 arch/arc/kernel/disasm.c state->flow = direct_jump; flow 184 arch/arc/kernel/disasm.c state->flow = is_linked ? flow 188 arch/arc/kernel/disasm.c state->flow = is_linked ? flow 202 arch/arc/kernel/disasm.c state->flow = direct_jump; flow 307 arch/arc/kernel/disasm.c state->flow = (subopcode >= 2) ? flow 317 arch/arc/kernel/disasm.c state->flow = indirect_jump; flow 403 arch/arc/kernel/disasm.c state->flow = direct_jump; flow 412 arch/arc/kernel/disasm.c state->flow = direct_jump; flow 418 arch/arc/kernel/disasm.c state->flow = direct_call; flow 192 arch/mips/ar7/prom.c char parity = '\0', bits = '\0', flow = '\0'; flow 213 arch/mips/ar7/prom.c flow = 'r'; flow 223 arch/mips/ar7/prom.c if (flow == 'r') flow 225 arch/mips/ar7/prom.c parity, bits, flow); flow 46 arch/mips/mti-malta/malta-init.c char parity = '\0', bits = '\0', flow = '\0'; flow 64 arch/mips/mti-malta/malta-init.c flow = 'r'; flow 72 arch/mips/mti-malta/malta-init.c if (flow == '\0') flow 73 arch/mips/mti-malta/malta-init.c flow = 'r'; flow 83 arch/mips/mti-malta/malta-init.c parity, bits, flow); flow 885 drivers/crypto/s5p-sss.c u32 flow; flow 889 drivers/crypto/s5p-sss.c flow = SSS_READ(dev, FCFIFOCTRL); flow 890 drivers/crypto/s5p-sss.c flow &= ~SSS_HASHIN_MASK; flow 891 drivers/crypto/s5p-sss.c flow |= hashflow; flow 892 drivers/crypto/s5p-sss.c SSS_WRITE(dev, FCFIFOCTRL, flow); flow 45 drivers/gpu/ipu-v3/ipu-dp.c u32 flow; flow 63 drivers/gpu/ipu-v3/ipu-dp.c struct ipu_flow flow[IPUV3_NUM_FLOWS]; flow 81 drivers/gpu/ipu-v3/ipu-dp.c struct ipu_flow *flow = to_flow(dp); flow 82 drivers/gpu/ipu-v3/ipu-dp.c struct ipu_dp_priv *priv = flow->priv; flow 87 drivers/gpu/ipu-v3/ipu-dp.c reg = readl(flow->base + DP_COM_CONF); flow 92 drivers/gpu/ipu-v3/ipu-dp.c writel(reg, flow->base + DP_COM_CONF); flow 95 drivers/gpu/ipu-v3/ipu-dp.c reg = readl(flow->base + DP_GRAPH_WIND_CTRL) & 0x00FFFFFFL; flow 97 drivers/gpu/ipu-v3/ipu-dp.c flow->base + DP_GRAPH_WIND_CTRL); flow 99 drivers/gpu/ipu-v3/ipu-dp.c reg = readl(flow->base + DP_COM_CONF); flow 100 drivers/gpu/ipu-v3/ipu-dp.c writel(reg | DP_COM_CONF_GWAM, flow->base + DP_COM_CONF); flow 102 drivers/gpu/ipu-v3/ipu-dp.c reg = readl(flow->base + DP_COM_CONF); flow 103 drivers/gpu/ipu-v3/ipu-dp.c writel(reg & ~DP_COM_CONF_GWAM, flow->base + DP_COM_CONF); flow 116 drivers/gpu/ipu-v3/ipu-dp.c struct ipu_flow *flow = to_flow(dp); flow 117 drivers/gpu/ipu-v3/ipu-dp.c struct ipu_dp_priv *priv = flow->priv; flow 119 drivers/gpu/ipu-v3/ipu-dp.c writel((x_pos << 16) | y_pos, flow->base + DP_FG_POS); flow 127 drivers/gpu/ipu-v3/ipu-dp.c static void ipu_dp_csc_init(struct ipu_flow *flow, flow 134 drivers/gpu/ipu-v3/ipu-dp.c reg = readl(flow->base + DP_COM_CONF); flow 138 drivers/gpu/ipu-v3/ipu-dp.c writel(reg, flow->base + DP_COM_CONF); flow 143 drivers/gpu/ipu-v3/ipu-dp.c writel(0x099 | (0x12d << 16), flow->base + DP_CSC_A_0); flow 144 drivers/gpu/ipu-v3/ipu-dp.c writel(0x03a | (0x3a9 << 16), flow->base + DP_CSC_A_1); flow 145 drivers/gpu/ipu-v3/ipu-dp.c writel(0x356 | (0x100 << 16), flow->base + DP_CSC_A_2); flow 146 drivers/gpu/ipu-v3/ipu-dp.c writel(0x100 | (0x329 << 16), flow->base + DP_CSC_A_3); flow 148 drivers/gpu/ipu-v3/ipu-dp.c flow->base + DP_CSC_0); flow 150 drivers/gpu/ipu-v3/ipu-dp.c flow->base + DP_CSC_1); flow 152 drivers/gpu/ipu-v3/ipu-dp.c writel(0x095 | (0x000 << 16), flow->base + DP_CSC_A_0); flow 153 drivers/gpu/ipu-v3/ipu-dp.c writel(0x0cc | (0x095 << 16), flow->base + DP_CSC_A_1); flow 154 drivers/gpu/ipu-v3/ipu-dp.c writel(0x3ce | (0x398 << 16), flow->base + DP_CSC_A_2); flow 155 drivers/gpu/ipu-v3/ipu-dp.c writel(0x095 | (0x0ff << 16), flow->base + DP_CSC_A_3); flow 157 drivers/gpu/ipu-v3/ipu-dp.c flow->base + DP_CSC_0); flow 159 drivers/gpu/ipu-v3/ipu-dp.c flow->base + DP_CSC_1); flow 164 drivers/gpu/ipu-v3/ipu-dp.c writel(reg, flow->base + DP_COM_CONF); flow 171 drivers/gpu/ipu-v3/ipu-dp.c struct ipu_flow *flow = to_flow(dp); flow 172 drivers/gpu/ipu-v3/ipu-dp.c struct ipu_dp_priv *priv = flow->priv; flow 179 drivers/gpu/ipu-v3/ipu-dp.c flow->out_cs = out; flow 181 drivers/gpu/ipu-v3/ipu-dp.c if (flow->foreground.in_cs == flow->background.in_cs) { flow 186 drivers/gpu/ipu-v3/ipu-dp.c ipu_dp_csc_init(flow, flow->foreground.in_cs, flow->out_cs, flow 189 drivers/gpu/ipu-v3/ipu-dp.c if (flow->foreground.in_cs == IPUV3_COLORSPACE_UNKNOWN || flow 190 drivers/gpu/ipu-v3/ipu-dp.c flow->foreground.in_cs == flow->out_cs) flow 195 drivers/gpu/ipu-v3/ipu-dp.c ipu_dp_csc_init(flow, flow->background.in_cs, flow 196 drivers/gpu/ipu-v3/ipu-dp.c flow->out_cs, DP_COM_CONF_CSC_DEF_BG); flow 198 drivers/gpu/ipu-v3/ipu-dp.c ipu_dp_csc_init(flow, flow->foreground.in_cs, flow 199 drivers/gpu/ipu-v3/ipu-dp.c flow->out_cs, DP_COM_CONF_CSC_DEF_FG); flow 229 drivers/gpu/ipu-v3/ipu-dp.c struct ipu_flow *flow = to_flow(dp); flow 230 drivers/gpu/ipu-v3/ipu-dp.c struct ipu_dp_priv *priv = flow->priv; flow 238 drivers/gpu/ipu-v3/ipu-dp.c reg = readl(flow->base + DP_COM_CONF); flow 240 drivers/gpu/ipu-v3/ipu-dp.c writel(reg, flow->base + DP_COM_CONF); flow 252 drivers/gpu/ipu-v3/ipu-dp.c struct ipu_flow *flow = to_flow(dp); flow 253 drivers/gpu/ipu-v3/ipu-dp.c struct ipu_dp_priv *priv = flow->priv; flow 263 drivers/gpu/ipu-v3/ipu-dp.c reg = readl(flow->base + DP_COM_CONF); flow 270 drivers/gpu/ipu-v3/ipu-dp.c writel(reg, flow->base + DP_COM_CONF); flow 272 drivers/gpu/ipu-v3/ipu-dp.c writel(0, flow->base + DP_FG_POS); flow 297 drivers/gpu/ipu-v3/ipu-dp.c struct ipu_dp *ipu_dp_get(struct ipu_soc *ipu, unsigned int flow) flow 302 drivers/gpu/ipu-v3/ipu-dp.c if ((flow >> 1) >= IPUV3_NUM_FLOWS) flow 305 drivers/gpu/ipu-v3/ipu-dp.c if (flow & 1) flow 306 drivers/gpu/ipu-v3/ipu-dp.c dp = &priv->flow[flow >> 1].foreground; flow 308 drivers/gpu/ipu-v3/ipu-dp.c dp = &priv->flow[flow >> 1].background; flow 345 drivers/gpu/ipu-v3/ipu-dp.c priv->flow[i].background.in_cs = IPUV3_COLORSPACE_UNKNOWN; flow 346 drivers/gpu/ipu-v3/ipu-dp.c priv->flow[i].foreground.in_cs = IPUV3_COLORSPACE_UNKNOWN; flow 347 drivers/gpu/ipu-v3/ipu-dp.c priv->flow[i].foreground.foreground = true; flow 348 drivers/gpu/ipu-v3/ipu-dp.c priv->flow[i].base = priv->base + ipu_dp_flow_base[i]; flow 349 drivers/gpu/ipu-v3/ipu-dp.c priv->flow[i].priv = priv; flow 353 drivers/hsi/clients/hsi_char.c if ((rxc->flow != HSI_FLOW_SYNC) && (rxc->flow != HSI_FLOW_PIPE)) flow 358 drivers/hsi/clients/hsi_char.c cl->rx_cfg.flow = rxc->flow; flow 374 drivers/hsi/clients/hsi_char.c rxc->flow = cl->rx_cfg.flow; flow 159 drivers/hsi/hsi_core.c const char *flow; flow 162 drivers/hsi/hsi_core.c err = of_property_read_string(client, name, &flow); flow 166 drivers/hsi/hsi_core.c if (strcmp(flow, "synchronized") == 0) flow 168 drivers/hsi/hsi_core.c else if (strcmp(flow, "pipeline") == 0) flow 238 drivers/hsi/hsi_core.c &cl->rx_cfg.flow); flow 55 drivers/infiniband/core/uverbs_std_types.c struct ib_flow *flow = (struct ib_flow *)uobject->object; flow 58 drivers/infiniband/core/uverbs_std_types.c struct ib_qp *qp = flow->qp; flow 61 drivers/infiniband/core/uverbs_std_types.c ret = flow->device->ops.destroy_flow(flow); flow 447 drivers/infiniband/hw/hfi1/rc.c struct tid_rdma_flow *flow = NULL; flow 823 drivers/infiniband/hw/hfi1/rc.c struct tid_rdma_flow *flow = flow 832 drivers/infiniband/hw/hfi1/rc.c if (!flow->npagesets) { flow 1114 drivers/infiniband/hw/hfi1/rc.c flow = &req->flows[req->flow_idx]; flow 1115 drivers/infiniband/hw/hfi1/rc.c len -= flow->sent; flow 1116 drivers/infiniband/hw/hfi1/rc.c req->s_next_psn = flow->flow_state.ib_lpsn + 1; flow 134 drivers/infiniband/hw/hfi1/tid_rdma.c struct tid_rdma_flow *flow, flow 875 drivers/infiniband/hw/hfi1/tid_rdma.c static u32 tid_rdma_find_phys_blocks_4k(struct tid_rdma_flow *flow, flow 892 drivers/infiniband/hw/hfi1/tid_rdma.c trace_hfi1_tid_flow_page(flow->req->qp, flow, 0, 0, 0, vaddr); flow 895 drivers/infiniband/hw/hfi1/tid_rdma.c trace_hfi1_tid_flow_page(flow->req->qp, flow, i, 0, 0, flow 929 drivers/infiniband/hw/hfi1/tid_rdma.c trace_hfi1_tid_pageset(flow->req->qp, setcount, flow 1013 drivers/infiniband/hw/hfi1/tid_rdma.c static u32 tid_rdma_find_phys_blocks_8k(struct tid_rdma_flow *flow, flow 1027 drivers/infiniband/hw/hfi1/tid_rdma.c trace_hfi1_tid_flow_page(flow->req->qp, flow, i, 1, 0, v0); flow 1030 drivers/infiniband/hw/hfi1/tid_rdma.c trace_hfi1_tid_flow_page(flow->req->qp, flow, i, 1, 1, v1); flow 1080 drivers/infiniband/hw/hfi1/tid_rdma.c static u32 kern_find_pages(struct tid_rdma_flow *flow, flow 1084 drivers/infiniband/hw/hfi1/tid_rdma.c struct tid_rdma_request *req = flow->req; flow 1086 drivers/infiniband/hw/hfi1/tid_rdma.c u32 length = flow->req->seg_len; flow 1110 drivers/infiniband/hw/hfi1/tid_rdma.c flow->length = flow->req->seg_len - length; flow 1115 drivers/infiniband/hw/hfi1/tid_rdma.c static void dma_unmap_flow(struct tid_rdma_flow *flow) flow 1121 drivers/infiniband/hw/hfi1/tid_rdma.c dd = flow->req->rcd->dd; flow 1122 drivers/infiniband/hw/hfi1/tid_rdma.c for (i = 0, pset = &flow->pagesets[0]; i < flow->npagesets; flow 1134 drivers/infiniband/hw/hfi1/tid_rdma.c static int dma_map_flow(struct tid_rdma_flow *flow, struct page **pages) flow 1137 drivers/infiniband/hw/hfi1/tid_rdma.c struct hfi1_devdata *dd = flow->req->rcd->dd; flow 1140 drivers/infiniband/hw/hfi1/tid_rdma.c for (i = 0, pset = &flow->pagesets[0]; i < flow->npagesets; flow 1150 drivers/infiniband/hw/hfi1/tid_rdma.c dma_unmap_flow(flow); flow 1159 drivers/infiniband/hw/hfi1/tid_rdma.c static inline bool dma_mapped(struct tid_rdma_flow *flow) flow 1161 drivers/infiniband/hw/hfi1/tid_rdma.c return !!flow->pagesets[0].mapped; flow 1168 drivers/infiniband/hw/hfi1/tid_rdma.c static int kern_get_phys_blocks(struct tid_rdma_flow *flow, flow 1175 drivers/infiniband/hw/hfi1/tid_rdma.c if (flow->npagesets) { flow 1176 drivers/infiniband/hw/hfi1/tid_rdma.c trace_hfi1_tid_flow_alloc(flow->req->qp, flow->req->setup_head, flow 1177 drivers/infiniband/hw/hfi1/tid_rdma.c flow); flow 1178 drivers/infiniband/hw/hfi1/tid_rdma.c if (!dma_mapped(flow)) flow 1179 drivers/infiniband/hw/hfi1/tid_rdma.c return dma_map_flow(flow, pages); flow 1183 drivers/infiniband/hw/hfi1/tid_rdma.c npages = kern_find_pages(flow, pages, ss, last); flow 1185 drivers/infiniband/hw/hfi1/tid_rdma.c if (flow->req->qp->pmtu == enum_to_mtu(OPA_MTU_4096)) flow 1186 drivers/infiniband/hw/hfi1/tid_rdma.c flow->npagesets = flow 1187 drivers/infiniband/hw/hfi1/tid_rdma.c tid_rdma_find_phys_blocks_4k(flow, pages, npages, flow 1188 drivers/infiniband/hw/hfi1/tid_rdma.c flow->pagesets); flow 1190 drivers/infiniband/hw/hfi1/tid_rdma.c flow->npagesets = flow 1191 drivers/infiniband/hw/hfi1/tid_rdma.c tid_rdma_find_phys_blocks_8k(flow, pages, npages, flow 1192 drivers/infiniband/hw/hfi1/tid_rdma.c flow->pagesets); flow 1194 drivers/infiniband/hw/hfi1/tid_rdma.c return dma_map_flow(flow, pages); flow 1197 drivers/infiniband/hw/hfi1/tid_rdma.c static inline void kern_add_tid_node(struct tid_rdma_flow *flow, flow 1201 drivers/infiniband/hw/hfi1/tid_rdma.c struct kern_tid_node *node = &flow->tnode[flow->tnode_cnt++]; flow 1203 drivers/infiniband/hw/hfi1/tid_rdma.c WARN_ON_ONCE(flow->tnode_cnt >= flow 1213 drivers/infiniband/hw/hfi1/tid_rdma.c trace_hfi1_tid_node_add(flow->req->qp, s, flow->tnode_cnt - 1, flow 1230 drivers/infiniband/hw/hfi1/tid_rdma.c static int kern_alloc_tids(struct tid_rdma_flow *flow) flow 1232 drivers/infiniband/hw/hfi1/tid_rdma.c struct hfi1_ctxtdata *rcd = flow->req->rcd; flow 1238 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tnode_cnt = 0; flow 1239 drivers/infiniband/hw/hfi1/tid_rdma.c ngroups = flow->npagesets / dd->rcv_entries.group_size; flow 1245 drivers/infiniband/hw/hfi1/tid_rdma.c kern_add_tid_node(flow, rcd, "complete groups", group, flow 1253 drivers/infiniband/hw/hfi1/tid_rdma.c if (pageidx >= flow->npagesets) flow 1259 drivers/infiniband/hw/hfi1/tid_rdma.c use = min_t(u32, flow->npagesets - pageidx, flow 1261 drivers/infiniband/hw/hfi1/tid_rdma.c kern_add_tid_node(flow, rcd, "used groups", used, use); flow 1264 drivers/infiniband/hw/hfi1/tid_rdma.c if (pageidx >= flow->npagesets) flow 1280 drivers/infiniband/hw/hfi1/tid_rdma.c use = min_t(u32, flow->npagesets - pageidx, group->size); flow 1281 drivers/infiniband/hw/hfi1/tid_rdma.c kern_add_tid_node(flow, rcd, "complete continue", group, use); flow 1283 drivers/infiniband/hw/hfi1/tid_rdma.c if (pageidx >= flow->npagesets) flow 1286 drivers/infiniband/hw/hfi1/tid_rdma.c trace_hfi1_msg_alloc_tids(flow->req->qp, " insufficient tids: needed ", flow 1287 drivers/infiniband/hw/hfi1/tid_rdma.c (u64)flow->npagesets); flow 1293 drivers/infiniband/hw/hfi1/tid_rdma.c static void kern_program_rcv_group(struct tid_rdma_flow *flow, int grp_num, flow 1296 drivers/infiniband/hw/hfi1/tid_rdma.c struct hfi1_ctxtdata *rcd = flow->req->rcd; flow 1298 drivers/infiniband/hw/hfi1/tid_rdma.c struct kern_tid_node *node = &flow->tnode[grp_num]; flow 1301 drivers/infiniband/hw/hfi1/tid_rdma.c u32 pmtu_pg = flow->req->qp->pmtu >> PAGE_SHIFT; flow 1312 drivers/infiniband/hw/hfi1/tid_rdma.c pset = &flow->pagesets[(*pset_idx)++]; flow 1335 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tid_entry[flow->tidcnt++] = flow 1340 drivers/infiniband/hw/hfi1/tid_rdma.c flow->req->qp, flow->tidcnt - 1, flow 1341 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tid_entry[flow->tidcnt - 1]); flow 1344 drivers/infiniband/hw/hfi1/tid_rdma.c flow->npkts += (npages + pmtu_pg - 1) >> ilog2(pmtu_pg); flow 1361 drivers/infiniband/hw/hfi1/tid_rdma.c static void kern_unprogram_rcv_group(struct tid_rdma_flow *flow, int grp_num) flow 1363 drivers/infiniband/hw/hfi1/tid_rdma.c struct hfi1_ctxtdata *rcd = flow->req->rcd; flow 1365 drivers/infiniband/hw/hfi1/tid_rdma.c struct kern_tid_node *node = &flow->tnode[grp_num]; flow 1392 drivers/infiniband/hw/hfi1/tid_rdma.c struct hfi1_ctxtdata *rcd = flow->req->rcd; flow 1400 drivers/infiniband/hw/hfi1/tid_rdma.c static void kern_program_rcvarray(struct tid_rdma_flow *flow) flow 1405 drivers/infiniband/hw/hfi1/tid_rdma.c flow->npkts = 0; flow 1406 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tidcnt = 0; flow 1407 drivers/infiniband/hw/hfi1/tid_rdma.c for (i = 0; i < flow->tnode_cnt; i++) flow 1408 drivers/infiniband/hw/hfi1/tid_rdma.c kern_program_rcv_group(flow, i, &pset_idx); flow 1409 drivers/infiniband/hw/hfi1/tid_rdma.c trace_hfi1_tid_flow_alloc(flow->req->qp, flow->req->setup_head, flow); flow 1458 drivers/infiniband/hw/hfi1/tid_rdma.c struct tid_rdma_flow *flow = &req->flows[req->setup_head]; flow 1482 drivers/infiniband/hw/hfi1/tid_rdma.c if (kern_get_phys_blocks(flow, qpriv->pages, ss, last)) { flow 1483 drivers/infiniband/hw/hfi1/tid_rdma.c hfi1_wait_kmem(flow->req->qp); flow 1488 drivers/infiniband/hw/hfi1/tid_rdma.c if (kernel_tid_waiters(rcd, &rcd->rarr_queue, flow->req->qp)) flow 1496 drivers/infiniband/hw/hfi1/tid_rdma.c if (kern_alloc_tids(flow)) flow 1502 drivers/infiniband/hw/hfi1/tid_rdma.c kern_program_rcvarray(flow); flow 1512 drivers/infiniband/hw/hfi1/tid_rdma.c memset(&flow->flow_state, 0x0, sizeof(flow->flow_state)); flow 1513 drivers/infiniband/hw/hfi1/tid_rdma.c flow->idx = qpriv->flow_state.index; flow 1514 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.generation = qpriv->flow_state.generation; flow 1515 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.spsn = qpriv->flow_state.psn; flow 1516 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.lpsn = flow->flow_state.spsn + flow->npkts - 1; flow 1517 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.r_next_psn = flow 1518 drivers/infiniband/hw/hfi1/tid_rdma.c full_flow_psn(flow, flow->flow_state.spsn); flow 1519 drivers/infiniband/hw/hfi1/tid_rdma.c qpriv->flow_state.psn += flow->npkts; flow 1521 drivers/infiniband/hw/hfi1/tid_rdma.c dequeue_tid_waiter(rcd, &rcd->rarr_queue, flow->req->qp); flow 1530 drivers/infiniband/hw/hfi1/tid_rdma.c queue_qp_for_tid_wait(rcd, &rcd->rarr_queue, flow->req->qp); flow 1535 drivers/infiniband/hw/hfi1/tid_rdma.c static void hfi1_tid_rdma_reset_flow(struct tid_rdma_flow *flow) flow 1537 drivers/infiniband/hw/hfi1/tid_rdma.c flow->npagesets = 0; flow 1549 drivers/infiniband/hw/hfi1/tid_rdma.c struct tid_rdma_flow *flow = &req->flows[req->clear_tail]; flow 1562 drivers/infiniband/hw/hfi1/tid_rdma.c for (i = 0; i < flow->tnode_cnt; i++) flow 1563 drivers/infiniband/hw/hfi1/tid_rdma.c kern_unprogram_rcv_group(flow, i); flow 1565 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tnode_cnt = 0; flow 1570 drivers/infiniband/hw/hfi1/tid_rdma.c dma_unmap_flow(flow); flow 1572 drivers/infiniband/hw/hfi1/tid_rdma.c hfi1_tid_rdma_reset_flow(flow); flow 1678 drivers/infiniband/hw/hfi1/tid_rdma.c struct tid_rdma_flow *flow; flow 1684 drivers/infiniband/hw/hfi1/tid_rdma.c flow = &req->flows[tail]; flow 1685 drivers/infiniband/hw/hfi1/tid_rdma.c if (cmp_psn(psn, flow->flow_state.ib_spsn) >= 0 && flow 1686 drivers/infiniband/hw/hfi1/tid_rdma.c cmp_psn(psn, flow->flow_state.ib_lpsn) <= 0) { flow 1689 drivers/infiniband/hw/hfi1/tid_rdma.c return flow; flow 1701 drivers/infiniband/hw/hfi1/tid_rdma.c struct tid_rdma_flow *flow = &req->flows[req->flow_idx]; flow 1711 drivers/infiniband/hw/hfi1/tid_rdma.c *bth2 = mask_psn(flow->flow_state.ib_spsn + flow->pkt); flow 1712 drivers/infiniband/hw/hfi1/tid_rdma.c trace_hfi1_tid_flow_build_read_pkt(qp, req->flow_idx, flow); flow 1715 drivers/infiniband/hw/hfi1/tid_rdma.c req_addr = &flow->tid_entry[flow->tid_idx]; flow 1716 drivers/infiniband/hw/hfi1/tid_rdma.c req_len = sizeof(*flow->tid_entry) * flow 1717 drivers/infiniband/hw/hfi1/tid_rdma.c (flow->tidcnt - flow->tid_idx); flow 1742 drivers/infiniband/hw/hfi1/tid_rdma.c req->cur_seg * req->seg_len + flow->sent); flow 1746 drivers/infiniband/hw/hfi1/tid_rdma.c cpu_to_be32((flow->flow_state.generation << flow 1748 drivers/infiniband/hw/hfi1/tid_rdma.c ((flow->flow_state.spsn + flow->pkt) & flow 1752 drivers/infiniband/hw/hfi1/tid_rdma.c ((flow->idx & TID_RDMA_DESTQP_FLOW_MASK) << flow 1762 drivers/infiniband/hw/hfi1/tid_rdma.c flow->sent += *len; flow 1787 drivers/infiniband/hw/hfi1/tid_rdma.c struct tid_rdma_flow *flow = NULL; flow 1857 drivers/infiniband/hw/hfi1/tid_rdma.c flow = &req->flows[req->flow_idx]; flow 1858 drivers/infiniband/hw/hfi1/tid_rdma.c flow->pkt = 0; flow 1859 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tid_idx = 0; flow 1860 drivers/infiniband/hw/hfi1/tid_rdma.c flow->sent = 0; flow 1863 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.ib_spsn = req->s_next_psn; flow 1864 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.ib_lpsn = flow 1865 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.ib_spsn + flow->npkts - 1; flow 1869 drivers/infiniband/hw/hfi1/tid_rdma.c req->s_next_psn += flow->npkts; flow 1890 drivers/infiniband/hw/hfi1/tid_rdma.c struct tid_rdma_flow *flow; flow 1896 drivers/infiniband/hw/hfi1/tid_rdma.c flow = &req->flows[req->setup_head]; flow 1900 drivers/infiniband/hw/hfi1/tid_rdma.c if (pktlen > sizeof(flow->tid_entry)) flow 1902 drivers/infiniband/hw/hfi1/tid_rdma.c memcpy(flow->tid_entry, packet->ebuf, pktlen); flow 1903 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tidcnt = pktlen / sizeof(*flow->tid_entry); flow 1909 drivers/infiniband/hw/hfi1/tid_rdma.c flow->npkts = rvt_div_round_up_mtu(qp, len); flow 1910 drivers/infiniband/hw/hfi1/tid_rdma.c for (i = 0; i < flow->tidcnt; i++) { flow 1912 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tid_entry[i]); flow 1913 drivers/infiniband/hw/hfi1/tid_rdma.c tlen = EXP_TID_GET(flow->tid_entry[i], LEN); flow 1930 drivers/infiniband/hw/hfi1/tid_rdma.c flow->pkt = 0; flow 1931 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tid_idx = 0; flow 1932 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tid_offset = 0; flow 1933 drivers/infiniband/hw/hfi1/tid_rdma.c flow->sent = 0; flow 1934 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tid_qpn = be32_to_cpu(ohdr->u.tid_rdma.r_req.tid_flow_qp); flow 1935 drivers/infiniband/hw/hfi1/tid_rdma.c flow->idx = (flow->tid_qpn >> TID_RDMA_DESTQP_FLOW_SHIFT) & flow 1938 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.generation = flow_psn >> HFI1_KDETH_BTH_SEQ_SHIFT; flow 1939 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.spsn = flow_psn & HFI1_KDETH_BTH_SEQ_MASK; flow 1940 drivers/infiniband/hw/hfi1/tid_rdma.c flow->length = len; flow 1942 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.lpsn = flow->flow_state.spsn + flow 1943 drivers/infiniband/hw/hfi1/tid_rdma.c flow->npkts - 1; flow 1944 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.ib_spsn = psn; flow 1945 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.ib_lpsn = flow->flow_state.ib_spsn + flow->npkts - 1; flow 1947 drivers/infiniband/hw/hfi1/tid_rdma.c trace_hfi1_tid_flow_rcv_read_req(qp, req->setup_head, flow); flow 1959 drivers/infiniband/hw/hfi1/tid_rdma.c e->lpsn = psn + flow->npkts - 1; flow 2344 drivers/infiniband/hw/hfi1/tid_rdma.c struct tid_rdma_flow *flow = &req->flows[req->clear_tail]; flow 2345 drivers/infiniband/hw/hfi1/tid_rdma.c u32 tidentry = flow->tid_entry[flow->tid_idx]; flow 2353 drivers/infiniband/hw/hfi1/tid_rdma.c *len = min_t(u32, qp->pmtu, tidlen - flow->tid_offset); flow 2354 drivers/infiniband/hw/hfi1/tid_rdma.c flow->sent += *len; flow 2355 drivers/infiniband/hw/hfi1/tid_rdma.c next_offset = flow->tid_offset + *len; flow 2356 drivers/infiniband/hw/hfi1/tid_rdma.c last_pkt = (flow->sent >= flow->length); flow 2358 drivers/infiniband/hw/hfi1/tid_rdma.c trace_hfi1_tid_entry_build_read_resp(qp, flow->tid_idx, tidentry); flow 2359 drivers/infiniband/hw/hfi1/tid_rdma.c trace_hfi1_tid_flow_build_read_resp(qp, req->clear_tail, flow); flow 2373 drivers/infiniband/hw/hfi1/tid_rdma.c KDETH_SET(resp->kdeth0, OFFSET, flow->tid_offset / om); flow 2379 drivers/infiniband/hw/hfi1/tid_rdma.c resp->verbs_psn = cpu_to_be32(mask_psn(flow->flow_state.ib_spsn + flow 2380 drivers/infiniband/hw/hfi1/tid_rdma.c flow->pkt)); flow 2383 drivers/infiniband/hw/hfi1/tid_rdma.c *bth1 = flow->tid_qpn; flow 2384 drivers/infiniband/hw/hfi1/tid_rdma.c *bth2 = mask_psn(((flow->flow_state.spsn + flow->pkt++) & flow 2386 drivers/infiniband/hw/hfi1/tid_rdma.c (flow->flow_state.generation << flow 2395 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tid_offset = 0; flow 2396 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tid_idx++; flow 2398 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tid_offset = next_offset; flow 2449 drivers/infiniband/hw/hfi1/tid_rdma.c struct tid_rdma_flow *flow; flow 2467 drivers/infiniband/hw/hfi1/tid_rdma.c flow = &req->flows[req->clear_tail]; flow 2469 drivers/infiniband/hw/hfi1/tid_rdma.c if (cmp_psn(ipsn, flow->flow_state.ib_lpsn)) { flow 2470 drivers/infiniband/hw/hfi1/tid_rdma.c update_r_next_psn_fecn(packet, priv, rcd, flow, fecn); flow 2472 drivers/infiniband/hw/hfi1/tid_rdma.c if (cmp_psn(kpsn, flow->flow_state.r_next_psn)) flow 2474 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.r_next_psn = mask_psn(kpsn + 1); flow 2505 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.r_next_psn = mask_psn(kpsn + 1); flow 2524 drivers/infiniband/hw/hfi1/tid_rdma.c trace_hfi1_tid_flow_rcv_read_resp(qp, req->clear_tail, flow); flow 2626 drivers/infiniband/hw/hfi1/tid_rdma.c struct tid_rdma_flow *flow; flow 2631 drivers/infiniband/hw/hfi1/tid_rdma.c flow = &req->flows[req->clear_tail]; flow 2632 drivers/infiniband/hw/hfi1/tid_rdma.c hfi1_restart_rc(qp, flow->flow_state.ib_spsn, 0); flow 2658 drivers/infiniband/hw/hfi1/tid_rdma.c struct tid_rdma_flow *flow; flow 2749 drivers/infiniband/hw/hfi1/tid_rdma.c flow = &req->flows[req->clear_tail]; flow 2752 drivers/infiniband/hw/hfi1/tid_rdma.c flow); flow 2755 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.r_next_psn); flow 2778 drivers/infiniband/hw/hfi1/tid_rdma.c fpsn = full_flow_psn(flow, flow 2779 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.lpsn); flow 2786 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.r_next_psn = flow 2792 drivers/infiniband/hw/hfi1/tid_rdma.c flow->idx); flow 2793 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.r_next_psn = last_psn; flow 2858 drivers/infiniband/hw/hfi1/tid_rdma.c struct tid_rdma_flow *flow; flow 2937 drivers/infiniband/hw/hfi1/tid_rdma.c flow = &req->flows[req->clear_tail]; flow 2943 drivers/infiniband/hw/hfi1/tid_rdma.c trace_hfi1_tid_flow_handle_kdeth_eflags(qp, req->clear_tail, flow); flow 2951 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.r_next_psn = flow 2953 drivers/infiniband/hw/hfi1/tid_rdma.c flow->idx); flow 2955 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.r_next_psn; flow 2967 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.r_next_psn); flow 2979 drivers/infiniband/hw/hfi1/tid_rdma.c if (psn == full_flow_psn(flow, flow 2980 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.lpsn)) flow 2982 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.r_next_psn = flow 2985 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.r_next_psn; flow 3025 drivers/infiniband/hw/hfi1/tid_rdma.c qpriv->s_nak_psn = mask_psn(flow->flow_state.r_next_psn); flow 3041 drivers/infiniband/hw/hfi1/tid_rdma.c struct tid_rdma_flow *flow; flow 3049 drivers/infiniband/hw/hfi1/tid_rdma.c flow = find_flow_ib(req, *bth2, &fidx); flow 3050 drivers/infiniband/hw/hfi1/tid_rdma.c if (!flow) { flow 3061 drivers/infiniband/hw/hfi1/tid_rdma.c flow = &req->flows[fidx]; flow 3066 drivers/infiniband/hw/hfi1/tid_rdma.c delta_pkts = delta_psn(*bth2, flow->flow_state.ib_spsn); flow 3069 drivers/infiniband/hw/hfi1/tid_rdma.c full_flow_psn(flow, flow 3070 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.spsn)); flow 3072 drivers/infiniband/hw/hfi1/tid_rdma.c trace_hfi1_tid_flow_restart_req(qp, fidx, flow); flow 3073 drivers/infiniband/hw/hfi1/tid_rdma.c diff = delta_pkts + flow->resync_npkts; flow 3075 drivers/infiniband/hw/hfi1/tid_rdma.c flow->sent = 0; flow 3076 drivers/infiniband/hw/hfi1/tid_rdma.c flow->pkt = 0; flow 3077 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tid_idx = 0; flow 3078 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tid_offset = 0; flow 3080 drivers/infiniband/hw/hfi1/tid_rdma.c for (tididx = 0; tididx < flow->tidcnt; tididx++) { flow 3081 drivers/infiniband/hw/hfi1/tid_rdma.c u32 tidentry = flow->tid_entry[tididx], tidlen, flow 3084 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tid_offset = 0; flow 3088 drivers/infiniband/hw/hfi1/tid_rdma.c flow->pkt += npkts; flow 3089 drivers/infiniband/hw/hfi1/tid_rdma.c flow->sent += (npkts == tidnpkts ? tidlen : flow 3091 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tid_offset += npkts * qp->pmtu; flow 3099 drivers/infiniband/hw/hfi1/tid_rdma.c flow->sent, 0); flow 3107 drivers/infiniband/hw/hfi1/tid_rdma.c flow->pkt -= flow->resync_npkts; flow 3110 drivers/infiniband/hw/hfi1/tid_rdma.c if (flow->tid_offset == flow 3111 drivers/infiniband/hw/hfi1/tid_rdma.c EXP_TID_GET(flow->tid_entry[tididx], LEN) * PAGE_SIZE) { flow 3113 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tid_offset = 0; flow 3115 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tid_idx = tididx; flow 3122 drivers/infiniband/hw/hfi1/tid_rdma.c trace_hfi1_tid_flow_restart_req(qp, fidx, flow); flow 3830 drivers/infiniband/hw/hfi1/tid_rdma.c struct tid_rdma_flow *flow = NULL; flow 3839 drivers/infiniband/hw/hfi1/tid_rdma.c flow = &req->flows[req->flow_idx]; flow 3860 drivers/infiniband/hw/hfi1/tid_rdma.c trace_hfi1_tid_flow_build_write_resp(qp, req->flow_idx, flow); flow 3867 drivers/infiniband/hw/hfi1/tid_rdma.c trace_hfi1_tid_flow_build_write_resp(qp, req->flow_idx, flow); flow 3875 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.resp_ib_psn = bth2; flow 3876 drivers/infiniband/hw/hfi1/tid_rdma.c resp_addr = (void *)flow->tid_entry; flow 3877 drivers/infiniband/hw/hfi1/tid_rdma.c resp_len = sizeof(*flow->tid_entry) * flow->tidcnt; flow 3907 drivers/infiniband/hw/hfi1/tid_rdma.c cpu_to_be32((flow->flow_state.generation << flow 3909 drivers/infiniband/hw/hfi1/tid_rdma.c (flow->flow_state.spsn & flow 3913 drivers/infiniband/hw/hfi1/tid_rdma.c ((flow->idx & TID_RDMA_DESTQP_FLOW_MASK) << flow 4033 drivers/infiniband/hw/hfi1/tid_rdma.c struct tid_rdma_flow *flow; flow 4093 drivers/infiniband/hw/hfi1/tid_rdma.c flow = &req->flows[req->setup_head]; flow 4094 drivers/infiniband/hw/hfi1/tid_rdma.c flow->pkt = 0; flow 4095 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tid_idx = 0; flow 4096 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tid_offset = 0; flow 4097 drivers/infiniband/hw/hfi1/tid_rdma.c flow->sent = 0; flow 4098 drivers/infiniband/hw/hfi1/tid_rdma.c flow->resync_npkts = 0; flow 4099 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tid_qpn = be32_to_cpu(ohdr->u.tid_rdma.w_rsp.tid_flow_qp); flow 4100 drivers/infiniband/hw/hfi1/tid_rdma.c flow->idx = (flow->tid_qpn >> TID_RDMA_DESTQP_FLOW_SHIFT) & flow 4103 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.generation = flow_psn >> HFI1_KDETH_BTH_SEQ_SHIFT; flow 4104 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.spsn = flow_psn & HFI1_KDETH_BTH_SEQ_MASK; flow 4105 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.resp_ib_psn = psn; flow 4106 drivers/infiniband/hw/hfi1/tid_rdma.c flow->length = min_t(u32, req->seg_len, flow 4109 drivers/infiniband/hw/hfi1/tid_rdma.c flow->npkts = rvt_div_round_up_mtu(qp, flow->length); flow 4110 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.lpsn = flow->flow_state.spsn + flow 4111 drivers/infiniband/hw/hfi1/tid_rdma.c flow->npkts - 1; flow 4114 drivers/infiniband/hw/hfi1/tid_rdma.c if (pktlen > sizeof(flow->tid_entry)) { flow 4118 drivers/infiniband/hw/hfi1/tid_rdma.c memcpy(flow->tid_entry, packet->ebuf, pktlen); flow 4119 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tidcnt = pktlen / sizeof(*flow->tid_entry); flow 4120 drivers/infiniband/hw/hfi1/tid_rdma.c trace_hfi1_tid_flow_rcv_write_resp(qp, req->setup_head, flow); flow 4128 drivers/infiniband/hw/hfi1/tid_rdma.c for (i = 0; i < flow->tidcnt; i++) { flow 4130 drivers/infiniband/hw/hfi1/tid_rdma.c qp, i, flow->tid_entry[i]); flow 4131 drivers/infiniband/hw/hfi1/tid_rdma.c if (!EXP_TID_GET(flow->tid_entry[i], LEN)) { flow 4135 drivers/infiniband/hw/hfi1/tid_rdma.c tidlen += EXP_TID_GET(flow->tid_entry[i], LEN); flow 4137 drivers/infiniband/hw/hfi1/tid_rdma.c if (tidlen * PAGE_SIZE < flow->length) { flow 4197 drivers/infiniband/hw/hfi1/tid_rdma.c struct tid_rdma_flow *flow = &req->flows[req->clear_tail]; flow 4201 drivers/infiniband/hw/hfi1/tid_rdma.c u32 tidentry = flow->tid_entry[flow->tid_idx]; flow 4212 drivers/infiniband/hw/hfi1/tid_rdma.c *len = min_t(u32, qp->pmtu, tidlen - flow->tid_offset); flow 4213 drivers/infiniband/hw/hfi1/tid_rdma.c flow->sent += *len; flow 4214 drivers/infiniband/hw/hfi1/tid_rdma.c next_offset = flow->tid_offset + *len; flow 4215 drivers/infiniband/hw/hfi1/tid_rdma.c last_pkt = (flow->tid_idx == (flow->tidcnt - 1) && flow 4216 drivers/infiniband/hw/hfi1/tid_rdma.c next_offset >= tidlen) || (flow->sent >= flow->length); flow 4217 drivers/infiniband/hw/hfi1/tid_rdma.c trace_hfi1_tid_entry_build_write_data(qp, flow->tid_idx, tidentry); flow 4218 drivers/infiniband/hw/hfi1/tid_rdma.c trace_hfi1_tid_flow_build_write_data(qp, req->clear_tail, flow); flow 4228 drivers/infiniband/hw/hfi1/tid_rdma.c KDETH_SET(wd->kdeth0, OFFSET, flow->tid_offset / om); flow 4233 drivers/infiniband/hw/hfi1/tid_rdma.c *bth1 = flow->tid_qpn; flow 4234 drivers/infiniband/hw/hfi1/tid_rdma.c *bth2 = mask_psn(((flow->flow_state.spsn + flow->pkt++) & flow 4236 drivers/infiniband/hw/hfi1/tid_rdma.c (flow->flow_state.generation << flow 4240 drivers/infiniband/hw/hfi1/tid_rdma.c if (flow->flow_state.lpsn + 1 + flow 4248 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tid_offset = 0; flow 4249 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tid_idx++; flow 4251 drivers/infiniband/hw/hfi1/tid_rdma.c flow->tid_offset = next_offset; flow 4264 drivers/infiniband/hw/hfi1/tid_rdma.c struct tid_rdma_flow *flow; flow 4282 drivers/infiniband/hw/hfi1/tid_rdma.c flow = &req->flows[req->clear_tail]; flow 4283 drivers/infiniband/hw/hfi1/tid_rdma.c if (cmp_psn(psn, full_flow_psn(flow, flow->flow_state.lpsn))) { flow 4284 drivers/infiniband/hw/hfi1/tid_rdma.c update_r_next_psn_fecn(packet, priv, rcd, flow, fecn); flow 4286 drivers/infiniband/hw/hfi1/tid_rdma.c if (cmp_psn(psn, flow->flow_state.r_next_psn)) flow 4289 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.r_next_psn = mask_psn(psn + 1); flow 4311 drivers/infiniband/hw/hfi1/tid_rdma.c full_flow_psn(flow, flow->flow_state.spsn)) * flow 4333 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.r_next_psn = mask_psn(psn + 1); flow 4336 drivers/infiniband/hw/hfi1/tid_rdma.c rcd->flows[flow->idx].psn = psn & HFI1_KDETH_BTH_SEQ_MASK; flow 4392 drivers/infiniband/hw/hfi1/tid_rdma.c priv->r_next_psn_kdeth = flow->flow_state.r_next_psn; flow 4401 drivers/infiniband/hw/hfi1/tid_rdma.c priv->s_nak_psn = flow->flow_state.r_next_psn; flow 4420 drivers/infiniband/hw/hfi1/tid_rdma.c struct tid_rdma_flow *flow = &req->flows[iflow]; flow 4441 drivers/infiniband/hw/hfi1/tid_rdma.c *bth2 = full_flow_psn(flow, flow->flow_state.lpsn); flow 4447 drivers/infiniband/hw/hfi1/tid_rdma.c ((flow->idx & TID_RDMA_DESTQP_FLOW_MASK) << flow 4453 drivers/infiniband/hw/hfi1/tid_rdma.c cpu_to_be32(flow->flow_state.resp_ib_psn); flow 4491 drivers/infiniband/hw/hfi1/tid_rdma.c struct tid_rdma_flow *flow; flow 4532 drivers/infiniband/hw/hfi1/tid_rdma.c flow = &req->flows[req->acked_tail]; flow 4533 drivers/infiniband/hw/hfi1/tid_rdma.c trace_hfi1_tid_flow_rcv_tid_ack(qp, req->acked_tail, flow); flow 4536 drivers/infiniband/hw/hfi1/tid_rdma.c if (cmp_psn(psn, full_flow_psn(flow, flow->flow_state.spsn)) < 0 || flow 4537 drivers/infiniband/hw/hfi1/tid_rdma.c cmp_psn(req_psn, flow->flow_state.resp_ib_psn) < 0) flow 4541 drivers/infiniband/hw/hfi1/tid_rdma.c full_flow_psn(flow, flow->flow_state.lpsn)) >= 0 && flow 4546 drivers/infiniband/hw/hfi1/tid_rdma.c req->r_last_acked = flow->flow_state.resp_ib_psn; flow 4562 drivers/infiniband/hw/hfi1/tid_rdma.c flow = &req->flows[req->acked_tail]; flow 4563 drivers/infiniband/hw/hfi1/tid_rdma.c trace_hfi1_tid_flow_rcv_tid_ack(qp, req->acked_tail, flow); flow 4624 drivers/infiniband/hw/hfi1/tid_rdma.c flow = &req->flows[req->acked_tail]; flow 4634 drivers/infiniband/hw/hfi1/tid_rdma.c fpsn = full_flow_psn(flow, flow->flow_state.spsn); flow 4642 drivers/infiniband/hw/hfi1/tid_rdma.c if (flow->flow_state.generation != flow 4645 drivers/infiniband/hw/hfi1/tid_rdma.c flow->resync_npkts += flow 4662 drivers/infiniband/hw/hfi1/tid_rdma.c flow = &rptr->flows[fidx]; flow 4663 drivers/infiniband/hw/hfi1/tid_rdma.c gen = flow->flow_state.generation; flow 4665 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.spsn != flow 4668 drivers/infiniband/hw/hfi1/tid_rdma.c lpsn = flow->flow_state.lpsn; flow 4669 drivers/infiniband/hw/hfi1/tid_rdma.c lpsn = full_flow_psn(flow, lpsn); flow 4670 drivers/infiniband/hw/hfi1/tid_rdma.c flow->npkts = flow 4674 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.generation = flow 4676 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.spsn = spsn; flow 4677 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.lpsn = flow 4678 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.spsn + flow 4679 drivers/infiniband/hw/hfi1/tid_rdma.c flow->npkts - 1; flow 4680 drivers/infiniband/hw/hfi1/tid_rdma.c flow->pkt = 0; flow 4681 drivers/infiniband/hw/hfi1/tid_rdma.c spsn += flow->npkts; flow 4682 drivers/infiniband/hw/hfi1/tid_rdma.c resync_psn += flow->npkts; flow 4685 drivers/infiniband/hw/hfi1/tid_rdma.c flow); flow 4710 drivers/infiniband/hw/hfi1/tid_rdma.c flow = &req->flows[req->acked_tail]; flow 4711 drivers/infiniband/hw/hfi1/tid_rdma.c flpsn = full_flow_psn(flow, flow->flow_state.lpsn); flow 4715 drivers/infiniband/hw/hfi1/tid_rdma.c flow); flow 4837 drivers/infiniband/hw/hfi1/tid_rdma.c struct tid_rdma_flow *flow = &req->flows[fidx]; flow 4847 drivers/infiniband/hw/hfi1/tid_rdma.c generation = kern_flow_generation_next(flow->flow_state.generation); flow 4865 drivers/infiniband/hw/hfi1/tid_rdma.c struct tid_rdma_flow *flow; flow 4934 drivers/infiniband/hw/hfi1/tid_rdma.c flow = &req->flows[flow_idx]; flow 4935 drivers/infiniband/hw/hfi1/tid_rdma.c lpsn = full_flow_psn(flow, flow 4936 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.lpsn); flow 4937 drivers/infiniband/hw/hfi1/tid_rdma.c next = flow->flow_state.r_next_psn; flow 4938 drivers/infiniband/hw/hfi1/tid_rdma.c flow->npkts = delta_psn(lpsn, next - 1); flow 4939 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.generation = fs->generation; flow 4940 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.spsn = fs->psn; flow 4941 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.lpsn = flow 4942 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.spsn + flow->npkts - 1; flow 4943 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.r_next_psn = flow 4944 drivers/infiniband/hw/hfi1/tid_rdma.c full_flow_psn(flow, flow 4945 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.spsn); flow 4946 drivers/infiniband/hw/hfi1/tid_rdma.c fs->psn += flow->npkts; flow 4948 drivers/infiniband/hw/hfi1/tid_rdma.c flow); flow 5184 drivers/infiniband/hw/hfi1/tid_rdma.c u16 flow; flow 5248 drivers/infiniband/hw/hfi1/tid_rdma.c flow = CIRC_PREV(req->acked_tail, MAX_FLOWS); flow 5276 drivers/infiniband/hw/hfi1/tid_rdma.c full_flow_psn(&req->flows[flow], flow 5277 drivers/infiniband/hw/hfi1/tid_rdma.c req->flows[flow].flow_state.lpsn)) > 0))) { flow 5287 drivers/infiniband/hw/hfi1/tid_rdma.c flow = req->acked_tail; flow 5295 drivers/infiniband/hw/hfi1/tid_rdma.c hwords += hfi1_build_tid_rdma_write_ack(qp, e, ohdr, flow, &bth1, flow 5502 drivers/infiniband/hw/hfi1/tid_rdma.c struct tid_rdma_flow *flow, flow 5513 drivers/infiniband/hw/hfi1/tid_rdma.c flow->flow_state.r_next_psn = flow 5514 drivers/infiniband/hw/hfi1/tid_rdma.c read_r_next_psn(dd, rcd->ctxt, flow->idx); flow 416 drivers/infiniband/hw/hfi1/trace_tid.h TP_PROTO(struct rvt_qp *qp, struct tid_rdma_flow *flow, u32 index, flow 418 drivers/infiniband/hw/hfi1/trace_tid.h TP_ARGS(qp, flow, index, mtu8k, v1, vaddr), flow 450 drivers/infiniband/hw/hfi1/trace_tid.h TP_PROTO(struct rvt_qp *qp, struct tid_rdma_flow *flow, u32 index, flow 452 drivers/infiniband/hw/hfi1/trace_tid.h TP_ARGS(qp, flow, index, mtu8k, v1, vaddr) flow 491 drivers/infiniband/hw/hfi1/trace_tid.h TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), flow 492 drivers/infiniband/hw/hfi1/trace_tid.h TP_ARGS(qp, index, flow), flow 517 drivers/infiniband/hw/hfi1/trace_tid.h __entry->idx = flow->idx; flow 518 drivers/infiniband/hw/hfi1/trace_tid.h __entry->resp_ib_psn = flow->flow_state.resp_ib_psn; flow 519 drivers/infiniband/hw/hfi1/trace_tid.h __entry->generation = flow->flow_state.generation; flow 520 drivers/infiniband/hw/hfi1/trace_tid.h __entry->fspsn = full_flow_psn(flow, flow 521 drivers/infiniband/hw/hfi1/trace_tid.h flow->flow_state.spsn); flow 522 drivers/infiniband/hw/hfi1/trace_tid.h __entry->flpsn = full_flow_psn(flow, flow 523 drivers/infiniband/hw/hfi1/trace_tid.h flow->flow_state.lpsn); flow 524 drivers/infiniband/hw/hfi1/trace_tid.h __entry->r_next_psn = flow->flow_state.r_next_psn; flow 525 drivers/infiniband/hw/hfi1/trace_tid.h __entry->ib_spsn = flow->flow_state.ib_spsn; flow 526 drivers/infiniband/hw/hfi1/trace_tid.h __entry->ib_lpsn = flow->flow_state.ib_lpsn; flow 527 drivers/infiniband/hw/hfi1/trace_tid.h __entry->npagesets = flow->npagesets; flow 528 drivers/infiniband/hw/hfi1/trace_tid.h __entry->tnode_cnt = flow->tnode_cnt; flow 529 drivers/infiniband/hw/hfi1/trace_tid.h __entry->tidcnt = flow->tidcnt; flow 530 drivers/infiniband/hw/hfi1/trace_tid.h __entry->tid_idx = flow->tid_idx; flow 531 drivers/infiniband/hw/hfi1/trace_tid.h __entry->tid_offset = flow->tid_offset; flow 532 drivers/infiniband/hw/hfi1/trace_tid.h __entry->length = flow->length; flow 533 drivers/infiniband/hw/hfi1/trace_tid.h __entry->sent = flow->sent; flow 560 drivers/infiniband/hw/hfi1/trace_tid.h TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), flow 561 drivers/infiniband/hw/hfi1/trace_tid.h TP_ARGS(qp, index, flow) flow 566 drivers/infiniband/hw/hfi1/trace_tid.h TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), flow 567 drivers/infiniband/hw/hfi1/trace_tid.h TP_ARGS(qp, index, flow) flow 572 drivers/infiniband/hw/hfi1/trace_tid.h TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), flow 573 drivers/infiniband/hw/hfi1/trace_tid.h TP_ARGS(qp, index, flow) flow 578 drivers/infiniband/hw/hfi1/trace_tid.h TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), flow 579 drivers/infiniband/hw/hfi1/trace_tid.h TP_ARGS(qp, index, flow) flow 584 drivers/infiniband/hw/hfi1/trace_tid.h TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), flow 585 drivers/infiniband/hw/hfi1/trace_tid.h TP_ARGS(qp, index, flow) flow 590 drivers/infiniband/hw/hfi1/trace_tid.h TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), flow 591 drivers/infiniband/hw/hfi1/trace_tid.h TP_ARGS(qp, index, flow) flow 596 drivers/infiniband/hw/hfi1/trace_tid.h TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), flow 597 drivers/infiniband/hw/hfi1/trace_tid.h TP_ARGS(qp, index, flow) flow 602 drivers/infiniband/hw/hfi1/trace_tid.h TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), flow 603 drivers/infiniband/hw/hfi1/trace_tid.h TP_ARGS(qp, index, flow) flow 608 drivers/infiniband/hw/hfi1/trace_tid.h TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), flow 609 drivers/infiniband/hw/hfi1/trace_tid.h TP_ARGS(qp, index, flow) flow 614 drivers/infiniband/hw/hfi1/trace_tid.h TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), flow 615 drivers/infiniband/hw/hfi1/trace_tid.h TP_ARGS(qp, index, flow) flow 620 drivers/infiniband/hw/hfi1/trace_tid.h TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), flow 621 drivers/infiniband/hw/hfi1/trace_tid.h TP_ARGS(qp, index, flow) flow 626 drivers/infiniband/hw/hfi1/trace_tid.h TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), flow 627 drivers/infiniband/hw/hfi1/trace_tid.h TP_ARGS(qp, index, flow) flow 632 drivers/infiniband/hw/hfi1/trace_tid.h TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), flow 633 drivers/infiniband/hw/hfi1/trace_tid.h TP_ARGS(qp, index, flow) flow 396 drivers/infiniband/hw/hfi1/verbs.h static inline u32 full_flow_psn(struct tid_rdma_flow *flow, u32 psn) flow 398 drivers/infiniband/hw/hfi1/verbs.h return __full_flow_psn(&flow->flow_state, psn); flow 2984 drivers/infiniband/hw/mlx4/main.c struct ib_flow_attr *flow = NULL; flow 2990 drivers/infiniband/hw/mlx4/main.c flow = kzalloc(flow_size, GFP_KERNEL); flow 2991 drivers/infiniband/hw/mlx4/main.c if (!flow) flow 2993 drivers/infiniband/hw/mlx4/main.c flow->port = mqp->port; flow 2994 drivers/infiniband/hw/mlx4/main.c flow->num_of_specs = 1; flow 2995 drivers/infiniband/hw/mlx4/main.c flow->size = flow_size; flow 2996 drivers/infiniband/hw/mlx4/main.c ib_spec = (struct ib_flow_spec_ib *)(flow + 1); flow 3002 drivers/infiniband/hw/mlx4/main.c err = __mlx4_ib_create_flow(&mqp->ibqp, flow, flow 3009 drivers/infiniband/hw/mlx4/main.c kfree(flow); flow 721 drivers/infiniband/hw/qib/qib_common.h __u32 flow:5; flow 6352 drivers/infiniband/hw/qib/qib_iba7322.c int flow; flow 6354 drivers/infiniband/hw/qib/qib_iba7322.c for (flow = 0; flow < NUM_TIDFLOWS_CTXT; flow++) flow 6355 drivers/infiniband/hw/qib/qib_iba7322.c qib_write_ureg(dd, ur_rcvflowtable+flow, val, i); flow 132 drivers/infiniband/hw/usnic/usnic_debugfs.c "%u", qp_flow->flow->flow_id); flow 203 drivers/infiniband/hw/usnic/usnic_fwd.c struct usnic_fwd_flow *flow; flow 213 drivers/infiniband/hw/usnic/usnic_fwd.c flow = kzalloc(sizeof(*flow), GFP_ATOMIC); flow 214 drivers/infiniband/hw/usnic/usnic_fwd.c if (!flow) flow 255 drivers/infiniband/hw/usnic/usnic_fwd.c flow->flow_id = (uint32_t) a0; flow 256 drivers/infiniband/hw/usnic/usnic_fwd.c flow->vnic_idx = uaction->vnic_idx; flow 257 drivers/infiniband/hw/usnic/usnic_fwd.c flow->ufdev = ufdev; flow 263 drivers/infiniband/hw/usnic/usnic_fwd.c return flow; flow 265 drivers/infiniband/hw/usnic/usnic_fwd.c kfree(flow); flow 269 drivers/infiniband/hw/usnic/usnic_fwd.c int usnic_fwd_dealloc_flow(struct usnic_fwd_flow *flow) flow 274 drivers/infiniband/hw/usnic/usnic_fwd.c a0 = flow->flow_id; flow 276 drivers/infiniband/hw/usnic/usnic_fwd.c status = usnic_fwd_devcmd(flow->ufdev, flow->vnic_idx, flow 281 drivers/infiniband/hw/usnic/usnic_fwd.c flow->flow_id, flow->vnic_idx, flow 282 drivers/infiniband/hw/usnic/usnic_fwd.c flow->ufdev->name, status); flow 285 drivers/infiniband/hw/usnic/usnic_fwd.c flow->ufdev->name, flow->vnic_idx, flow 286 drivers/infiniband/hw/usnic/usnic_fwd.c flow->flow_id, status); flow 296 drivers/infiniband/hw/usnic/usnic_fwd.c flow->ufdev->name, flow->vnic_idx, flow 297 drivers/infiniband/hw/usnic/usnic_fwd.c flow->flow_id); flow 300 drivers/infiniband/hw/usnic/usnic_fwd.c kfree(flow); flow 93 drivers/infiniband/hw/usnic/usnic_fwd.h int usnic_fwd_dealloc_flow(struct usnic_fwd_flow *flow); flow 90 drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c default_flow->flow->flow_id); flow 212 drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c struct usnic_fwd_flow *flow; flow 229 drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c flow = usnic_fwd_alloc_flow(qp_grp->ufdev, &filter, &uaction); flow 230 drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c if (IS_ERR_OR_NULL(flow)) { flow 231 drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c err = flow ? PTR_ERR(flow) : -EFAULT; flow 241 drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c qp_flow->flow = flow; flow 248 drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c usnic_fwd_dealloc_flow(flow); flow 256 drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c usnic_fwd_dealloc_flow(qp_flow->flow); flow 272 drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c struct usnic_fwd_flow *flow; flow 302 drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c flow = usnic_fwd_alloc_flow(qp_grp->ufdev, &filter, &uaction); flow 303 drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c if (IS_ERR_OR_NULL(flow)) { flow 304 drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c err = flow ? PTR_ERR(flow) : -EFAULT; flow 314 drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c qp_flow->flow = flow; flow 321 drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c usnic_fwd_dealloc_flow(flow); flow 329 drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c usnic_fwd_dealloc_flow(qp_flow->flow); flow 69 drivers/infiniband/hw/usnic/usnic_ib_qp_grp.h struct usnic_fwd_flow *flow; flow 3299 drivers/net/bonding/bond_main.c struct flow_keys flow; flow 3307 drivers/net/bonding/bond_main.c !bond_flow_dissect(bond, skb, &flow)) flow 3314 drivers/net/bonding/bond_main.c hash = (__force u32)flow.ports.ports; flow 3315 drivers/net/bonding/bond_main.c hash ^= (__force u32)flow_get_u32_dst(&flow) ^ flow 3316 drivers/net/bonding/bond_main.c (__force u32)flow_get_u32_src(&flow); flow 341 drivers/net/dsa/bcm_sf2_cfp.c struct ethtool_rx_flow_rule *flow; flow 374 drivers/net/dsa/bcm_sf2_cfp.c flow = ethtool_rx_flow_rule_create(&input); flow 375 drivers/net/dsa/bcm_sf2_cfp.c if (IS_ERR(flow)) flow 376 drivers/net/dsa/bcm_sf2_cfp.c return PTR_ERR(flow); flow 378 drivers/net/dsa/bcm_sf2_cfp.c flow_rule_match_ipv4_addrs(flow->rule, &ipv4); flow 379 drivers/net/dsa/bcm_sf2_cfp.c flow_rule_match_ports(flow->rule, &ports); flow 380 drivers/net/dsa/bcm_sf2_cfp.c flow_rule_match_ip(flow->rule, &ip); flow 465 drivers/net/dsa/bcm_sf2_cfp.c ethtool_rx_flow_rule_destroy(flow); flow 605 drivers/net/dsa/bcm_sf2_cfp.c struct ethtool_rx_flow_rule *flow; flow 666 drivers/net/dsa/bcm_sf2_cfp.c flow = ethtool_rx_flow_rule_create(&input); flow 667 drivers/net/dsa/bcm_sf2_cfp.c if (IS_ERR(flow)) { flow 668 drivers/net/dsa/bcm_sf2_cfp.c ret = PTR_ERR(flow); flow 671 drivers/net/dsa/bcm_sf2_cfp.c flow_rule_match_ipv6_addrs(flow->rule, &ipv6); flow 672 drivers/net/dsa/bcm_sf2_cfp.c flow_rule_match_ports(flow->rule, &ports); flow 814 drivers/net/dsa/bcm_sf2_cfp.c ethtool_rx_flow_rule_destroy(flow); flow 995 drivers/net/dsa/bcm_sf2_cfp.c static void bcm_sf2_invert_masks(struct ethtool_rx_flow_spec *flow) flow 999 drivers/net/dsa/bcm_sf2_cfp.c for (i = 0; i < sizeof(flow->m_u); i++) flow 1000 drivers/net/dsa/bcm_sf2_cfp.c flow->m_u.hdata[i] ^= 0xff; flow 1002 drivers/net/dsa/bcm_sf2_cfp.c flow->m_ext.vlan_etype ^= cpu_to_be16(~0); flow 1003 drivers/net/dsa/bcm_sf2_cfp.c flow->m_ext.vlan_tci ^= cpu_to_be16(~0); flow 1004 drivers/net/dsa/bcm_sf2_cfp.c flow->m_ext.data[0] ^= cpu_to_be32(~0); flow 1005 drivers/net/dsa/bcm_sf2_cfp.c flow->m_ext.data[1] ^= cpu_to_be32(~0); flow 478 drivers/net/ethernet/agere/et131x.c u8 flow; /* flow control validated by the far-end */ flow 893 drivers/net/ethernet/agere/et131x.c if (adapter->flow == FLOW_RXONLY || adapter->flow == FLOW_BOTH) flow 1149 drivers/net/ethernet/agere/et131x.c if (adapter->flow == FLOW_NONE) flow 1318 drivers/net/ethernet/agere/et131x.c adapter->flow = FLOW_NONE; flow 1326 drivers/net/ethernet/agere/et131x.c adapter->flow = adapter->wanted_flow; flow 1329 drivers/net/ethernet/agere/et131x.c adapter->flow = FLOW_BOTH; flow 1331 drivers/net/ethernet/agere/et131x.c adapter->flow = FLOW_NONE; flow 1333 drivers/net/ethernet/agere/et131x.c adapter->flow = FLOW_NONE; flow 1336 drivers/net/ethernet/agere/et131x.c adapter->flow = FLOW_RXONLY; flow 1338 drivers/net/ethernet/agere/et131x.c adapter->flow = FLOW_NONE; flow 1708 drivers/net/ethernet/agere/et131x.c if (adapter->flow == FLOW_TXONLY || adapter->flow == FLOW_BOTH) flow 3383 drivers/net/ethernet/agere/et131x.c if (adapter->flow == FLOW_TXONLY || adapter->flow == FLOW_BOTH) flow 3446 drivers/net/ethernet/agere/et131x.c if (adapter->flow == FLOW_TXONLY || adapter->flow == FLOW_BOTH) { flow 1304 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c const char *flow; flow 1323 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c flow = "ON - receive & transmit"; flow 1325 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c flow = "ON - receive"; flow 1327 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c flow = "ON - transmit"; flow 1330 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c flow = "none"; flow 1333 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c cur_data.line_speed, duplex, flow); flow 174 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c struct bnxt_tc_flow *flow) flow 191 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l2_key.ether_type = match.key->n_proto; flow 192 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l2_mask.ether_type = match.mask->n_proto; flow 196 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l4_key.ip_proto = match.key->ip_proto; flow 197 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l4_mask.ip_proto = match.mask->ip_proto; flow 205 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->flags |= BNXT_TC_FLOW_FLAGS_ETH_ADDRS; flow 206 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c ether_addr_copy(flow->l2_key.dmac, match.key->dst); flow 207 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c ether_addr_copy(flow->l2_mask.dmac, match.mask->dst); flow 208 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c ether_addr_copy(flow->l2_key.smac, match.key->src); flow 209 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c ether_addr_copy(flow->l2_mask.smac, match.mask->src); flow 216 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l2_key.inner_vlan_tci = flow 219 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l2_mask.inner_vlan_tci = flow 222 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l2_key.inner_vlan_tpid = htons(ETH_P_8021Q); flow 223 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l2_mask.inner_vlan_tpid = htons(0xffff); flow 224 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l2_key.num_vlans = 1; flow 231 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->flags |= BNXT_TC_FLOW_FLAGS_IPV4_ADDRS; flow 232 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l3_key.ipv4.daddr.s_addr = match.key->dst; flow 233 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l3_mask.ipv4.daddr.s_addr = match.mask->dst; flow 234 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l3_key.ipv4.saddr.s_addr = match.key->src; flow 235 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l3_mask.ipv4.saddr.s_addr = match.mask->src; flow 240 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->flags |= BNXT_TC_FLOW_FLAGS_IPV6_ADDRS; flow 241 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l3_key.ipv6.daddr = match.key->dst; flow 242 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l3_mask.ipv6.daddr = match.mask->dst; flow 243 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l3_key.ipv6.saddr = match.key->src; flow 244 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l3_mask.ipv6.saddr = match.mask->src; flow 251 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->flags |= BNXT_TC_FLOW_FLAGS_PORTS; flow 252 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l4_key.ports.dport = match.key->dst; flow 253 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l4_mask.ports.dport = match.mask->dst; flow 254 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l4_key.ports.sport = match.key->src; flow 255 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l4_mask.ports.sport = match.mask->src; flow 262 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->flags |= BNXT_TC_FLOW_FLAGS_ICMP; flow 263 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l4_key.icmp.type = match.key->type; flow 264 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l4_key.icmp.code = match.key->code; flow 265 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l4_mask.icmp.type = match.mask->type; flow 266 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l4_mask.icmp.code = match.mask->code; flow 273 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->flags |= BNXT_TC_FLOW_FLAGS_TUNL_IPV4_ADDRS; flow 274 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->tun_key.u.ipv4.dst = match.key->dst; flow 275 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->tun_mask.u.ipv4.dst = match.mask->dst; flow 276 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->tun_key.u.ipv4.src = match.key->src; flow 277 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->tun_mask.u.ipv4.src = match.mask->src; flow 287 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->flags |= BNXT_TC_FLOW_FLAGS_TUNL_ID; flow 288 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->tun_key.tun_id = key32_to_tunnel_id(match.key->keyid); flow 289 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->tun_mask.tun_id = key32_to_tunnel_id(match.mask->keyid); flow 296 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->flags |= BNXT_TC_FLOW_FLAGS_TUNL_PORTS; flow 297 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->tun_key.tp_dst = match.key->dst; flow 298 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->tun_mask.tp_dst = match.mask->dst; flow 299 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->tun_key.tp_src = match.key->src; flow 300 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->tun_mask.tp_src = match.mask->src; flow 303 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c return bnxt_tc_parse_actions(bp, &flow->actions, &rule->action); flow 386 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c static int bnxt_hwrm_cfa_flow_alloc(struct bnxt *bp, struct bnxt_tc_flow *flow, flow 391 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c struct bnxt_tc_actions *actions = &flow->actions; flow 392 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c struct bnxt_tc_l3_key *l3_mask = &flow->l3_mask; flow 393 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c struct bnxt_tc_l3_key *l3_key = &flow->l3_key; flow 401 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c req.src_fid = cpu_to_le16(flow->src_fid); flow 411 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c req.ethertype = flow->l2_key.ether_type; flow 412 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c req.ip_proto = flow->l4_key.ip_proto; flow 414 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c if (flow->flags & BNXT_TC_FLOW_FLAGS_ETH_ADDRS) { flow 415 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c memcpy(req.dmac, flow->l2_key.dmac, ETH_ALEN); flow 416 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c memcpy(req.smac, flow->l2_key.smac, ETH_ALEN); flow 419 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c if (flow->l2_key.num_vlans > 0) { flow 425 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c req.outer_vlan_tci = flow->l2_key.inner_vlan_tci; flow 430 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c is_wildcard(&flow->l4_mask, sizeof(flow->l4_mask))) { flow 433 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow_flags |= flow->l2_key.ether_type == htons(ETH_P_IP) ? flow 437 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c if (flow->flags & BNXT_TC_FLOW_FLAGS_IPV4_ADDRS) { flow 444 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c } else if (flow->flags & BNXT_TC_FLOW_FLAGS_IPV6_ADDRS) { flow 456 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c if (flow->flags & BNXT_TC_FLOW_FLAGS_PORTS) { flow 457 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c req.l4_src_port = flow->l4_key.ports.sport; flow 458 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c req.l4_src_port_mask = flow->l4_mask.ports.sport; flow 459 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c req.l4_dst_port = flow->l4_key.ports.dport; flow 460 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c req.l4_dst_port_mask = flow->l4_mask.ports.dport; flow 461 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c } else if (flow->flags & BNXT_TC_FLOW_FLAGS_ICMP) { flow 463 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c req.l4_src_port = htons(flow->l4_key.icmp.type); flow 464 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c req.l4_src_port_mask = htons(flow->l4_mask.icmp.type); flow 465 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c req.l4_dst_port = htons(flow->l4_key.icmp.code); flow 466 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c req.l4_dst_port_mask = htons(flow->l4_mask.icmp.code); flow 520 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c struct bnxt_tc_flow *flow, flow 527 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c struct ip_tunnel_key *tun_key = &flow->tun_key; flow 539 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c if (flow->flags & BNXT_TC_FLOW_FLAGS_TUNL_ID) { flow 545 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c if (flow->flags & BNXT_TC_FLOW_FLAGS_TUNL_ETH_ADDRS) { flow 557 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c if (flow->flags & BNXT_TC_FLOW_FLAGS_TUNL_IPV4_ADDRS) { flow 566 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c if (flow->flags & BNXT_TC_FLOW_FLAGS_TUNL_PORTS) { flow 727 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c bnxt_tc_get_ref_flow_handle(struct bnxt *bp, struct bnxt_tc_flow *flow, flow 737 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c &flow->l2_key); flow 767 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c static bool bnxt_tc_can_offload(struct bnxt *bp, struct bnxt_tc_flow *flow) flow 770 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c if ((flow->flags & BNXT_TC_FLOW_FLAGS_PORTS) && flow 771 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c (flow->l4_key.ip_proto != IPPROTO_TCP && flow 772 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l4_key.ip_proto != IPPROTO_UDP)) { flow 774 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l4_key.ip_proto); flow 779 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c if (bits_set(&flow->l2_key.smac, sizeof(flow->l2_key.smac)) && flow 780 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c !is_exactmatch(flow->l2_mask.smac, sizeof(flow->l2_mask.smac))) { flow 784 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c if (bits_set(&flow->l2_key.dmac, sizeof(flow->l2_key.dmac)) && flow 785 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c !is_exactmatch(&flow->l2_mask.dmac, sizeof(flow->l2_mask.dmac))) { flow 791 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c if (bits_set(&flow->l2_key.inner_vlan_tci, flow 792 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c sizeof(flow->l2_key.inner_vlan_tci)) && flow 793 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c !is_vlan_tci_allowed(flow->l2_mask.inner_vlan_tci, flow 794 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l2_key.inner_vlan_tci)) { flow 798 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c if (bits_set(&flow->l2_key.inner_vlan_tpid, flow 799 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c sizeof(flow->l2_key.inner_vlan_tpid)) && flow 800 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c !is_exactmatch(&flow->l2_mask.inner_vlan_tpid, flow 801 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c sizeof(flow->l2_mask.inner_vlan_tpid))) { flow 807 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c if (!is_exactmatch(&flow->l2_mask.ether_type, flow 808 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c sizeof(flow->l2_mask.ether_type))) { flow 876 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c struct bnxt_tc_flow *flow, flow 957 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c struct flowi4 flow = { {0} }; flow 963 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow.flowi4_proto = IPPROTO_UDP; flow 964 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow.fl4_dport = tun_key->tp_dst; flow 965 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow.daddr = tun_key->u.ipv4.dst; flow 967 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c rt = ip_route_output_key(dev_net(real_dst_dev), &flow); flow 969 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c netdev_info(bp->dev, "no route to %pI4b", &flow.daddr); flow 996 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c netdev_name(dst_dev), &flow.daddr, flow 1002 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c nbr = dst_neigh_lookup(&rt->dst, &flow.daddr); flow 1005 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c &flow.daddr); flow 1010 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c tun_key->u.ipv4.src = flow.saddr; flow 1026 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c static int bnxt_tc_get_decap_handle(struct bnxt *bp, struct bnxt_tc_flow *flow, flow 1030 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c struct ip_tunnel_key *decap_key = &flow->tun_key; flow 1060 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c tun_key.u.ipv4.dst = flow->tun_key.u.ipv4.src; flow 1061 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c tun_key.tp_dst = flow->tun_key.tp_dst; flow 1074 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->flags |= BNXT_TC_FLOW_FLAGS_TUNL_ETH_ADDRS; flow 1081 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c rc = bnxt_tc_get_ref_decap_handle(bp, flow, decap_l2_info, flow_node, flow 1087 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c rc = hwrm_cfa_decap_filter_alloc(bp, flow, decap_l2_info, flow 1124 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c static int bnxt_tc_get_encap_handle(struct bnxt *bp, struct bnxt_tc_flow *flow, flow 1128 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c struct ip_tunnel_key *encap_key = &flow->actions.tun_encap_key; flow 1169 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c struct bnxt_tc_flow *flow, flow 1172 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c if (flow->actions.flags & BNXT_TC_ACTION_FLAG_TUNNEL_DECAP) flow 1174 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c else if (flow->actions.flags & BNXT_TC_ACTION_FLAG_TUNNEL_ENCAP) flow 1179 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c struct bnxt_tc_flow *flow, flow 1183 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c if (flow->actions.flags & BNXT_TC_ACTION_FLAG_TUNNEL_DECAP) flow 1184 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c return bnxt_tc_get_decap_handle(bp, flow, flow_node, flow 1186 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c else if (flow->actions.flags & BNXT_TC_ACTION_FLAG_TUNNEL_ENCAP) flow 1187 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c return bnxt_tc_get_encap_handle(bp, flow, flow_node, flow 1204 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c bnxt_tc_put_tunnel_handle(bp, &flow_node->flow, flow_node); flow 1221 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c static void bnxt_tc_set_flow_dir(struct bnxt *bp, struct bnxt_tc_flow *flow, flow 1224 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->l2_key.dir = (bp->pf.fw_fid == src_fid) ? BNXT_DIR_RX : BNXT_DIR_TX; flow 1227 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c static void bnxt_tc_set_src_fid(struct bnxt *bp, struct bnxt_tc_flow *flow, flow 1230 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c if (flow->actions.flags & BNXT_TC_ACTION_FLAG_TUNNEL_DECAP) flow 1231 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->src_fid = bp->pf.fw_fid; flow 1233 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->src_fid = src_fid; flow 1254 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c struct bnxt_tc_flow *flow; flow 1266 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow = &new_node->flow; flow 1268 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c rc = bnxt_tc_parse_flow(bp, tc_flow_cmd, flow); flow 1272 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c bnxt_tc_set_src_fid(bp, flow, src_fid); flow 1273 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c bnxt_tc_set_flow_dir(bp, flow, flow->src_fid); flow 1275 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c if (!bnxt_tc_can_offload(bp, flow)) { flow 1291 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c rc = bnxt_tc_get_ref_flow_handle(bp, flow, new_node, &ref_flow_handle); flow 1296 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c rc = bnxt_tc_get_tunnel_handle(bp, flow, new_node, &tunnel_handle); flow 1301 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c rc = bnxt_hwrm_cfa_flow_alloc(bp, flow, ref_flow_handle, flow 1306 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->lastused = jiffies; flow 1307 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c spin_lock_init(&flow->stats_lock); flow 1320 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c bnxt_tc_put_tunnel_handle(bp, flow, new_node); flow 1354 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c struct bnxt_tc_flow *flow; flow 1363 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow = &flow_node->flow; flow 1364 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c curr_stats = &flow->stats; flow 1365 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c prev_stats = &flow->prev_stats; flow 1367 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c spin_lock(&flow->stats_lock); flow 1371 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c lastused = flow->lastused; flow 1372 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c spin_unlock(&flow->stats_lock); flow 1393 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c if (flow_node->flow.l2_key.dir == BNXT_DIR_RX) flow 1488 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c struct bnxt_tc_flow *flow = &flow_node->flow; flow 1490 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c spin_lock(&flow->stats_lock); flow 1491 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c bnxt_flow_stats_accum(tc_info, &flow->stats, flow 1493 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c if (flow->stats.packets != flow->prev_stats.packets) flow 1494 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c flow->lastused = jiffies; flow 1495 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c spin_unlock(&flow->stats_lock); flow 174 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.h struct bnxt_tc_flow flow; flow 647 drivers/net/ethernet/calxeda/xgmac.c unsigned int flow = 0; flow 654 drivers/net/ethernet/calxeda/xgmac.c flow |= XGMAC_FLOW_CTRL_RFE; flow 656 drivers/net/ethernet/calxeda/xgmac.c flow |= XGMAC_FLOW_CTRL_TFE; flow 658 drivers/net/ethernet/calxeda/xgmac.c flow |= XGMAC_FLOW_CTRL_PLT | XGMAC_FLOW_CTRL_UP; flow 659 drivers/net/ethernet/calxeda/xgmac.c flow |= (PAUSE_TIME << XGMAC_FLOW_CTRL_PT_SHIFT); flow 661 drivers/net/ethernet/calxeda/xgmac.c writel(flow, priv->base + XGMAC_FLOW_CTRL); flow 1226 drivers/net/ethernet/freescale/gianfar_ethtool.c static int gfar_check_capability(struct ethtool_rx_flow_spec *flow, flow 1230 drivers/net/ethernet/freescale/gianfar_ethtool.c if (flow->flow_type & FLOW_EXT) { flow 1231 drivers/net/ethernet/freescale/gianfar_ethtool.c if (~flow->m_ext.data[0] || ~flow->m_ext.data[1]) flow 1234 drivers/net/ethernet/freescale/gianfar_ethtool.c if (~flow->m_ext.vlan_etype) flow 1238 drivers/net/ethernet/freescale/gianfar_ethtool.c if (flow->flow_type == IP_USER_FLOW) flow 1239 drivers/net/ethernet/freescale/gianfar_ethtool.c if (flow->h_u.usr_ip4_spec.ip_ver != ETH_RX_NFC_IP4) flow 1286 drivers/net/ethernet/freescale/gianfar_ethtool.c static void gfar_invert_masks(struct ethtool_rx_flow_spec *flow) flow 1290 drivers/net/ethernet/freescale/gianfar_ethtool.c for (i = 0; i < sizeof(flow->m_u); i++) flow 1291 drivers/net/ethernet/freescale/gianfar_ethtool.c flow->m_u.hdata[i] ^= 0xFF; flow 1293 drivers/net/ethernet/freescale/gianfar_ethtool.c flow->m_ext.vlan_etype ^= cpu_to_be16(0xFFFF); flow 1294 drivers/net/ethernet/freescale/gianfar_ethtool.c flow->m_ext.vlan_tci ^= cpu_to_be16(0xFFFF); flow 1295 drivers/net/ethernet/freescale/gianfar_ethtool.c flow->m_ext.data[0] ^= cpu_to_be32(~0); flow 1296 drivers/net/ethernet/freescale/gianfar_ethtool.c flow->m_ext.data[1] ^= cpu_to_be32(~0); flow 1300 drivers/net/ethernet/freescale/gianfar_ethtool.c struct ethtool_rx_flow_spec *flow) flow 1308 drivers/net/ethernet/freescale/gianfar_ethtool.c memcpy(&temp->fs, flow, sizeof(temp->fs)); flow 1323 drivers/net/ethernet/freescale/gianfar_ethtool.c if (comp->fs.location > flow->location) { flow 1327 drivers/net/ethernet/freescale/gianfar_ethtool.c if (comp->fs.location == flow->location) { flow 1330 drivers/net/ethernet/freescale/gianfar_ethtool.c flow->location); flow 91 drivers/net/ethernet/marvell/mvpp2/mvpp2.h #define MVPP2_CLS_LKP_FLOW_PTR(flow) ((flow) << 16) flow 876 drivers/net/ethernet/marvell/mvpp2/mvpp2.h struct flow_rule *flow; flow 466 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c const struct mvpp2_cls_flow *flow) flow 468 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c mvpp2_prs_add_flow(priv, flow->flow_id, flow->prs_ri.ri, flow 469 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c flow->prs_ri.ri_mask); flow 474 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c const struct mvpp2_cls_flow *flow) flow 479 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c le.lkpid = flow->flow_id; flow 487 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c le.data |= MVPP2_CLS_LKP_FLOW_PTR(MVPP2_CLS_FLT_FIRST(flow->flow_id)); flow 577 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c const struct mvpp2_cls_flow *flow) flow 583 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c for (i = MVPP2_CLS_FLT_FIRST(flow->flow_id); flow 584 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c i <= MVPP2_CLS_FLT_LAST(flow->flow_id); i++) { flow 589 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c if (i == MVPP2_CLS_FLT_LAST(flow->flow_id)) flow 596 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c mvpp2_cls_flow_read(priv, MVPP2_CLS_FLT_C2_RSS_ENTRY(flow->flow_id), flow 612 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c MVPP2_CLS_FLT_HASH_ENTRY(i, flow->flow_id), flow 715 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c const struct mvpp2_cls_flow *mvpp2_cls_flow_get(int flow) flow 717 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c if (flow >= MVPP2_N_PRS_FLOWS) flow 720 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c return &cls_flows[flow]; flow 737 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c const struct mvpp2_cls_flow *flow; flow 743 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c flow = mvpp2_cls_flow_get(i); flow 744 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c if (!flow) flow 747 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c flow_index = MVPP2_CLS_FLT_HASH_ENTRY(port->id, flow->flow_id); flow 751 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c hash_opts = flow->supported_hash_opts & requested_opts; flow 825 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c const struct mvpp2_cls_flow *flow; flow 831 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c flow = mvpp2_cls_flow_get(i); flow 832 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c if (!flow) flow 835 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c flow_index = MVPP2_CLS_FLT_HASH_ENTRY(port->id, flow->flow_id); flow 847 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c const struct mvpp2_cls_flow *flow; flow 851 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c flow = mvpp2_cls_flow_get(i); flow 852 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c if (!flow) flow 855 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c mvpp2_cls_flow_prs_init(priv, flow); flow 856 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c mvpp2_cls_flow_lkp_init(priv, flow); flow 857 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c mvpp2_cls_flow_init(priv, flow); flow 1092 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c act = &rule->flow->action.entries[0]; flow 1174 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c const struct mvpp2_cls_flow *flow; flow 1179 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c flow = mvpp2_cls_flow_get(i); flow 1180 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c if (!flow) flow 1183 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c index = MVPP2_CLS_FLT_C2_RFS(port->id, flow->flow_id, rule->loc); flow 1199 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c const struct mvpp2_cls_flow *flow; flow 1212 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c flow = mvpp2_cls_flow_get(i); flow 1213 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c if (!flow) flow 1216 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c if ((rule->hek_fields & flow->supported_hash_opts) != rule->hek_fields) flow 1219 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c index = MVPP2_CLS_FLT_C2_RFS(port->id, flow->flow_id, rule->loc); flow 1236 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c struct flow_rule *flow = rule->flow; flow 1242 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c if (flow_rule_match_key(flow, FLOW_DISSECTOR_KEY_VLAN)) { flow 1245 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c flow_rule_match_vlan(flow, &match); flow 1276 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c if (flow_rule_match_key(flow, FLOW_DISSECTOR_KEY_PORTS)) { flow 1279 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c flow_rule_match_ports(flow, &match); flow 1305 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c struct flow_rule *flow = rule->flow; flow 1308 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c act = &flow->action.entries[0]; flow 1376 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c efs->rule.flow = ethtool_rule->rule; flow 1404 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c efs->rule.flow = NULL; flow 288 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.h const struct mvpp2_cls_flow *mvpp2_cls_flow_get(int flow); flow 27 drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c int flow; flow 75 drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c u32 hits = mvpp2_cls_lookup_hits(entry->priv, entry->flow); flow 90 drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c f = mvpp2_cls_flow_get(entry->flow); flow 129 drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c f = mvpp2_cls_flow_get(entry->flow); flow 149 drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c f = mvpp2_cls_flow_get(entry->dbg_fe->flow); flow 174 drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c f = mvpp2_cls_flow_get(entry->dbg_fe->flow); flow 471 drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c struct mvpp2 *priv, int flow) flow 478 drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c sprintf(flow_entry_name, "%02d", flow); flow 482 drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c entry = &priv->dbgfs_entries->flow_entries[flow]; flow 484 drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c entry->flow = flow; flow 364 drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c static int mvpp2_prs_flow_find(struct mvpp2 *priv, int flow) flow 381 drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c if ((bits & MVPP2_PRS_FLOW_ID_MASK) == flow) flow 2411 drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c int mvpp2_prs_add_flow(struct mvpp2 *priv, int flow, u32 ri, u32 ri_mask) flow 2430 drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c mvpp2_prs_sram_ai_update(&pe, flow, MVPP2_PRS_FLOW_ID_MASK); flow 310 drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.h int mvpp2_prs_add_flow(struct mvpp2 *priv, int flow, u32 ri, u32 ri_mask); flow 1878 drivers/net/ethernet/mellanox/mlx4/en_netdev.c struct ethtool_flow_id *flow, *tmp_flow; flow 1959 drivers/net/ethernet/mellanox/mlx4/en_netdev.c list_for_each_entry_safe(flow, tmp_flow, flow 1961 drivers/net/ethernet/mellanox/mlx4/en_netdev.c mlx4_flow_detach(mdev->dev, flow->id); flow 1962 drivers/net/ethernet/mellanox/mlx4/en_netdev.c list_del(&flow->list); flow 43 drivers/net/ethernet/mellanox/mlx5/core/accel/tls.c int mlx5_accel_tls_add_flow(struct mlx5_core_dev *mdev, void *flow, flow 48 drivers/net/ethernet/mellanox/mlx5/core/accel/tls.c return mlx5_fpga_tls_add_flow(mdev, flow, crypto_info, flow 106 drivers/net/ethernet/mellanox/mlx5/core/accel/tls.h int mlx5_accel_tls_add_flow(struct mlx5_core_dev *mdev, void *flow, flow 122 drivers/net/ethernet/mellanox/mlx5/core/accel/tls.h mlx5_accel_tls_add_flow(struct mlx5_core_dev *mdev, void *flow, flow 39 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c static void mlx5e_tls_set_ipv4_flow(void *flow, struct sock *sk) flow 43 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c MLX5_SET(tls_flow, flow, ipv6, 0); flow 44 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c memcpy(MLX5_ADDR_OF(tls_flow, flow, dst_ipv4_dst_ipv6.ipv4_layout.ipv4), flow 46 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c memcpy(MLX5_ADDR_OF(tls_flow, flow, src_ipv4_src_ipv6.ipv4_layout.ipv4), flow 51 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c static void mlx5e_tls_set_ipv6_flow(void *flow, struct sock *sk) flow 55 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c MLX5_SET(tls_flow, flow, ipv6, 1); flow 56 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c memcpy(MLX5_ADDR_OF(tls_flow, flow, dst_ipv4_dst_ipv6.ipv6_layout.ipv6), flow 58 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c memcpy(MLX5_ADDR_OF(tls_flow, flow, src_ipv4_src_ipv6.ipv6_layout.ipv6), flow 63 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c static void mlx5e_tls_set_flow_tcp_ports(void *flow, struct sock *sk) flow 67 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c memcpy(MLX5_ADDR_OF(tls_flow, flow, src_port), &inet->inet_sport, flow 69 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c memcpy(MLX5_ADDR_OF(tls_flow, flow, dst_port), &inet->inet_dport, flow 73 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c static int mlx5e_tls_set_flow(void *flow, struct sock *sk, u32 caps) flow 77 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c mlx5e_tls_set_ipv4_flow(flow, sk); flow 83 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c mlx5e_tls_set_ipv4_flow(flow, sk); flow 89 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c mlx5e_tls_set_ipv6_flow(flow, sk); flow 96 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c mlx5e_tls_set_flow_tcp_ports(flow, sk); flow 112 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c void *flow; flow 115 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c flow = kzalloc(MLX5_ST_SZ_BYTES(tls_flow), GFP_KERNEL); flow 116 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c if (!flow) flow 119 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c ret = mlx5e_tls_set_flow(flow, sk, caps); flow 123 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c ret = mlx5_accel_tls_add_flow(mdev, flow, crypto_info, flow 144 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c kfree(flow); flow 214 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow); flow 216 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c static struct mlx5e_tc_flow *mlx5e_flow_get(struct mlx5e_tc_flow *flow) flow 218 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (!flow || !refcount_inc_not_zero(&flow->refcnt)) flow 220 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c return flow; flow 224 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow) flow 226 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (refcount_dec_and_test(&flow->refcnt)) { flow 227 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5e_tc_del_flow(priv, flow); flow 228 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c kfree_rcu(flow, rcu_head); flow 232 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c static void __flow_flag_set(struct mlx5e_tc_flow *flow, unsigned long flag) flow 236 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c set_bit(flag, &flow->flags); flow 239 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c #define flow_flag_set(flow, flag) __flow_flag_set(flow, MLX5E_TC_FLOW_FLAG_##flag) flow 241 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c static bool __flow_flag_test_and_set(struct mlx5e_tc_flow *flow, flow 245 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c return test_and_set_bit(flag, &flow->flags); flow 248 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c #define flow_flag_test_and_set(flow, flag) \ flow 249 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c __flow_flag_test_and_set(flow, \ flow 252 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c static void __flow_flag_clear(struct mlx5e_tc_flow *flow, unsigned long flag) flow 256 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c clear_bit(flag, &flow->flags); flow 259 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c #define flow_flag_clear(flow, flag) __flow_flag_clear(flow, \ flow 262 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c static bool __flow_flag_test(struct mlx5e_tc_flow *flow, unsigned long flag) flow 264 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c bool ret = test_bit(flag, &flow->flags); flow 271 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c #define flow_flag_test(flow, flag) __flow_flag_test(flow, \ flow 274 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c static bool mlx5e_is_eswitch_flow(struct mlx5e_tc_flow *flow) flow 276 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c return flow_flag_test(flow, ESWITCH); flow 279 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c static bool mlx5e_is_offloaded_flow(struct mlx5e_tc_flow *flow) flow 281 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c return flow_flag_test(flow, OFFLOADED); flow 342 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c static int get_flow_name_space(struct mlx5e_tc_flow *flow) flow 344 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c return mlx5e_is_eswitch_flow(flow) ? flow 348 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow, flow 365 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c namespace = get_flow_name_space(flow); flow 410 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->mh = mh; flow 412 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c list_add(&flow->mod_hdr, &mh->flows); flow 414 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (mlx5e_is_eswitch_flow(flow)) flow 415 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->esw_attr->modify_hdr = mh->modify_hdr; flow 417 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->nic_attr->modify_hdr = mh->modify_hdr; flow 429 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow) flow 432 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (!flow->mh) flow 435 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c spin_lock(&flow->mh->flows_lock); flow 436 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c list_del(&flow->mod_hdr); flow 437 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c spin_unlock(&flow->mh->flows_lock); flow 439 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5e_mod_hdr_put(priv, flow->mh, get_flow_name_space(flow)); flow 440 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->mh = NULL; flow 772 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow, flow 864 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow_flag_set(flow, HAIRPIN_RSS); flow 865 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->nic_attr->hairpin_ft = hpe->hp->ttc.ft.t; flow 867 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->nic_attr->hairpin_tirn = hpe->hp->tirn; flow 870 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->hpe = hpe; flow 872 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c list_add(&flow->hairpin, &hpe->flows); flow 883 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow) flow 886 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (!flow->hpe) flow 889 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c spin_lock(&flow->hpe->flows_lock); flow 890 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c list_del(&flow->hairpin); flow 891 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c spin_unlock(&flow->hpe->flows_lock); flow 893 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5e_hairpin_put(priv, flow->hpe); flow 894 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->hpe = NULL; flow 900 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow, flow 904 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5_nic_flow_attr *attr = flow->nic_attr; flow 917 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (flow_flag_test(flow, HAIRPIN)) { flow 918 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c err = mlx5e_hairpin_flow_add(priv, flow, parse_attr, extack); flow 922 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (flow_flag_test(flow, HAIRPIN_RSS)) { flow 948 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c err = mlx5e_attach_mod_hdr(priv, flow, parse_attr); flow 987 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->rule[0] = mlx5_add_flow_rules(priv->fs.tc.t, &parse_attr->spec, flow 991 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c return PTR_ERR_OR_ZERO(flow->rule[0]); flow 995 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow) flow 997 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5_nic_flow_attr *attr = flow->nic_attr; flow 1001 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (!IS_ERR_OR_NULL(flow->rule[0])) flow 1002 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5_del_flow_rules(flow->rule[0]); flow 1013 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5e_detach_mod_hdr(priv, flow); flow 1015 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (flow_flag_test(flow, HAIRPIN)) flow 1016 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5e_hairpin_flow_del(priv, flow); flow 1020 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow, int out_index); flow 1023 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow, flow 1032 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow, flow 1043 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->rule[1] = mlx5_eswitch_add_fwd_rule(esw, spec, attr); flow 1044 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (IS_ERR(flow->rule[1])) { flow 1046 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c return flow->rule[1]; flow 1055 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow, flow 1058 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow_flag_clear(flow, OFFLOADED); flow 1061 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5_eswitch_del_fwd_rule(esw, flow->rule[1], attr); flow 1063 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5_eswitch_del_offloaded_rule(esw, flow->rule[0], attr); flow 1068 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow, flow 1074 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c memcpy(slow_attr, flow->esw_attr, sizeof(*slow_attr)); flow 1079 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c rule = mlx5e_tc_offload_fdb_rules(esw, flow, spec, slow_attr); flow 1081 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow_flag_set(flow, SLOW); flow 1088 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow, flow 1091 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c memcpy(slow_attr, flow->esw_attr, sizeof(*slow_attr)); flow 1095 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5e_tc_unoffload_fdb_rules(esw, flow, slow_attr); flow 1096 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow_flag_clear(flow, SLOW); flow 1102 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c static void unready_flow_add(struct mlx5e_tc_flow *flow, flow 1105 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow_flag_set(flow, NOT_READY); flow 1106 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c list_add_tail(&flow->unready, unready_flows); flow 1112 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c static void unready_flow_del(struct mlx5e_tc_flow *flow) flow 1114 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c list_del(&flow->unready); flow 1115 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow_flag_clear(flow, NOT_READY); flow 1118 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c static void add_unready_flow(struct mlx5e_tc_flow *flow) flow 1124 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c esw = flow->priv->mdev->priv.eswitch; flow 1129 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c unready_flow_add(flow, &uplink_priv->unready_flows); flow 1133 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c static void remove_unready_flow(struct mlx5e_tc_flow *flow) flow 1139 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c esw = flow->priv->mdev->priv.eswitch; flow 1144 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c unready_flow_del(flow); flow 1150 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow, flow 1155 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5_esw_flow_attr *attr = flow->esw_attr; flow 1190 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c err = mlx5e_attach_encap(priv, flow, out_dev, out_index, flow 1206 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c err = mlx5e_attach_mod_hdr(priv, flow, parse_attr); flow 1228 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->rule[0] = mlx5e_tc_offload_to_slow_path(esw, flow, &parse_attr->spec, &slow_attr); flow 1230 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->rule[0] = mlx5e_tc_offload_fdb_rules(esw, flow, &parse_attr->spec, attr); flow 1233 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (IS_ERR(flow->rule[0])) flow 1234 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c return PTR_ERR(flow->rule[0]); flow 1236 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow_flag_set(flow, OFFLOADED); flow 1241 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c static bool mlx5_flow_has_geneve_opt(struct mlx5e_tc_flow *flow) flow 1243 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5_flow_spec *spec = &flow->esw_attr->parse_attr->spec; flow 1255 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow) flow 1258 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5_esw_flow_attr *attr = flow->esw_attr; flow 1262 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (flow_flag_test(flow, NOT_READY)) { flow 1263 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c remove_unready_flow(flow); flow 1268 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (mlx5e_is_offloaded_flow(flow)) { flow 1269 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (flow_flag_test(flow, SLOW)) flow 1270 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5e_tc_unoffload_from_slow_path(esw, flow, &slow_attr); flow 1272 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5e_tc_unoffload_fdb_rules(esw, flow, attr); flow 1275 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (mlx5_flow_has_geneve_opt(flow)) flow 1282 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5e_detach_encap(priv, flow, out_index); flow 1288 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5e_detach_mod_hdr(priv, flow); flow 1302 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow; flow 1317 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c list_for_each_entry(flow, flow_list, tmp_list) { flow 1321 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (!mlx5e_is_offloaded_flow(flow)) flow 1323 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c esw_attr = flow->esw_attr; flow 1326 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c esw_attr->dests[flow->tmp_efi_index].pkt_reformat = e->pkt_reformat; flow 1327 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c esw_attr->dests[flow->tmp_efi_index].flags |= MLX5_ESW_DEST_ENCAP_VALID; flow 1344 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c rule = mlx5e_tc_offload_fdb_rules(esw, flow, spec, esw_attr); flow 1352 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5e_tc_unoffload_from_slow_path(esw, flow, &slow_attr); flow 1353 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->rule[0] = rule; flow 1355 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow_flag_set(flow, OFFLOADED); flow 1367 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow; flow 1370 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c list_for_each_entry(flow, flow_list, tmp_list) { flow 1371 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (!mlx5e_is_offloaded_flow(flow)) flow 1373 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c spec = &flow->esw_attr->parse_attr->spec; flow 1376 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c rule = mlx5e_tc_offload_to_slow_path(esw, flow, spec, &slow_attr); flow 1378 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->esw_attr->dests[flow->tmp_efi_index].flags &= ~MLX5_ESW_DEST_ENCAP_VALID; flow 1387 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5e_tc_unoffload_fdb_rules(esw, flow, flow->esw_attr); flow 1388 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->rule[0] = rule; flow 1390 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow_flag_set(flow, OFFLOADED); flow 1398 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c static struct mlx5_fc *mlx5e_tc_get_counter(struct mlx5e_tc_flow *flow) flow 1400 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (mlx5e_is_eswitch_flow(flow)) flow 1401 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c return flow->esw_attr->counter; flow 1403 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c return flow->nic_attr->counter; flow 1412 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow; flow 1415 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow = container_of(efi, struct mlx5e_tc_flow, encaps[efi->index]); flow 1416 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (IS_ERR(mlx5e_flow_get(flow))) flow 1418 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c wait_for_completion(&flow->init_done); flow 1420 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->tmp_efi_index = efi->index; flow 1421 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c list_add(&flow->tmp_list, flow_list); flow 1428 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow, *tmp; flow 1430 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c list_for_each_entry_safe(flow, tmp, flow_list, tmp_list) flow 1431 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5e_flow_put(priv, flow); flow 1483 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow; flow 1511 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow = container_of(efi, struct mlx5e_tc_flow, flow 1513 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (IS_ERR(mlx5e_flow_get(flow))) flow 1515 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c list_add(&flow->tmp_list, &flow_list); flow 1517 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (mlx5e_is_offloaded_flow(flow)) { flow 1518 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c counter = mlx5e_tc_get_counter(flow); flow 1582 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow, int out_index) flow 1584 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_encap_entry *e = flow->encaps[out_index].e; flow 1592 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c list_del(&flow->encaps[out_index].list); flow 1593 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->encaps[out_index].e = NULL; flow 1604 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c static void __mlx5e_tc_del_fdb_peer_flow(struct mlx5e_tc_flow *flow) flow 1606 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5_eswitch *esw = flow->priv->mdev->priv.eswitch; flow 1608 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (!flow_flag_test(flow, ESWITCH) || flow 1609 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c !flow_flag_test(flow, DUP)) flow 1613 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c list_del(&flow->peer); flow 1616 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow_flag_clear(flow, DUP); flow 1618 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (refcount_dec_and_test(&flow->peer_flow->refcnt)) { flow 1619 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5e_tc_del_fdb_flow(flow->peer_flow->priv, flow->peer_flow); flow 1620 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c kfree(flow->peer_flow); flow 1623 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->peer_flow = NULL; flow 1626 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c static void mlx5e_tc_del_fdb_peer_flow(struct mlx5e_tc_flow *flow) flow 1628 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5_core_dev *dev = flow->priv->mdev; flow 1636 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c __mlx5e_tc_del_fdb_peer_flow(flow); flow 1641 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow) flow 1643 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (mlx5e_is_eswitch_flow(flow)) { flow 1644 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5e_tc_del_fdb_peer_flow(flow); flow 1645 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5e_tc_del_fdb_flow(priv, flow); flow 1647 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5e_tc_del_nic_flow(priv, flow); flow 2153 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow, flow 2175 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c is_eswitch_flow = mlx5e_is_eswitch_flow(flow); flow 2191 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->esw_attr->inner_match_level = inner_match_level; flow 2192 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->esw_attr->outer_match_level = outer_match_level; flow 2194 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->nic_attr->match_level = non_tunnel_match_level; flow 2706 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow, flow 2711 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (mlx5e_is_eswitch_flow(flow)) flow 2712 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c actions = flow->esw_attr->action; flow 2714 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c actions = flow->nic_attr->action; flow 2716 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (flow_flag_test(flow, EGRESS) && flow 2815 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow, flow 2818 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5_nic_flow_attr *attr = flow->nic_attr; flow 2869 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow_flag_set(flow, HAIRPIN); flow 2916 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (!actions_match_supported(priv, flow_action, parse_attr, flow, extack)) flow 2989 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow, flow 2997 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5_esw_flow_attr *attr = flow->esw_attr; flow 3073 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->encaps[out_index].e = e; flow 3074 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c list_add(&flow->encaps[out_index].list, &e->flows); flow 3075 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->encaps[out_index].index = out_index; flow 3212 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow, flow 3217 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5_esw_flow_attr *attr = flow->esw_attr; flow 3439 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (!actions_match_supported(priv, flow_action, parse_attr, flow, extack)) flow 3503 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c static bool is_peer_flow_needed(struct mlx5e_tc_flow *flow) flow 3505 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5_esw_flow_attr *attr = flow->esw_attr; flow 3507 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow_flag_test(flow, INGRESS); flow 3531 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow; flow 3534 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow = kzalloc(sizeof(*flow) + attr_size, GFP_KERNEL); flow 3536 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (!parse_attr || !flow) { flow 3541 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->cookie = f->cookie; flow 3542 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->flags = flow_flags; flow 3543 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->priv = priv; flow 3545 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c INIT_LIST_HEAD(&flow->encaps[out_index].list); flow 3546 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c INIT_LIST_HEAD(&flow->mod_hdr); flow 3547 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c INIT_LIST_HEAD(&flow->hairpin); flow 3548 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c refcount_set(&flow->refcnt, 1); flow 3549 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c init_completion(&flow->init_done); flow 3551 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c *__flow = flow; flow 3557 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c kfree(flow); flow 3597 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow; flow 3603 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c &parse_attr, &flow); flow 3608 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5e_flow_esw_attr_init(flow->esw_attr, flow 3612 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c err = parse_cls_flower(flow->priv, flow, &parse_attr->spec, flow 3617 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c err = parse_tc_fdb_actions(priv, &rule->action, flow, extack); flow 3621 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c err = mlx5e_tc_add_fdb_flow(priv, flow, extack); flow 3622 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c complete_all(&flow->init_done); flow 3627 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c add_unready_flow(flow); flow 3630 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c return flow; flow 3633 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5e_flow_put(priv, flow); flow 3639 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow, flow 3642 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_priv *priv = flow->priv, *peer_priv; flow 3663 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (flow->esw_attr->in_rep->vport == MLX5_VPORT_UPLINK) flow 3668 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c parse_attr = flow->esw_attr->parse_attr; flow 3671 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->esw_attr->in_rep, in_mdev); flow 3677 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow->peer_flow = peer_flow; flow 3678 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow_flag_set(flow, DUP); flow 3680 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c list_add_tail(&flow->peer, &esw->offloads.peer_flows); flow 3698 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow; flow 3701 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow = __mlx5e_add_fdb_flow(priv, f, flow_flags, filter_dev, in_rep, flow 3703 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (IS_ERR(flow)) flow 3704 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c return PTR_ERR(flow); flow 3706 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (is_peer_flow_needed(flow)) { flow 3707 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c err = mlx5e_tc_add_fdb_peer_flow(f, flow, flow_flags); flow 3709 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5e_tc_del_fdb_flow(priv, flow); flow 3714 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c *__flow = flow; flow 3732 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow; flow 3742 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c &parse_attr, &flow); flow 3747 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c err = parse_cls_flower(flow->priv, flow, &parse_attr->spec, flow 3752 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c err = parse_tc_nic_actions(priv, &rule->action, parse_attr, flow, extack); flow 3756 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c err = mlx5e_tc_add_nic_flow(priv, parse_attr, flow, extack); flow 3760 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow_flag_set(flow, OFFLOADED); flow 3762 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c *__flow = flow; flow 3767 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5e_flow_put(priv, flow); flow 3778 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow **flow) flow 3791 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c filter_dev, flow); flow 3794 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c filter_dev, flow); flow 3804 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow; flow 3808 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow = rhashtable_lookup(tc_ht, &f->cookie, tc_ht_params); flow 3810 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (flow) { flow 3821 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c err = mlx5e_tc_add_flow(priv, f, flags, dev, &flow); flow 3825 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c err = rhashtable_lookup_insert_fast(tc_ht, &flow->node, tc_ht_params); flow 3832 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5e_flow_put(priv, flow); flow 3837 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c static bool same_flow_direction(struct mlx5e_tc_flow *flow, int flags) flow 3842 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c return flow_flag_test(flow, INGRESS) == dir_ingress && flow 3843 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow_flag_test(flow, EGRESS) == dir_egress; flow 3850 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow; flow 3854 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow = rhashtable_lookup_fast(tc_ht, &f->cookie, tc_ht_params); flow 3855 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (!flow || !same_flow_direction(flow, flags)) { flow 3863 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (flow_flag_test_and_set(flow, DELETED)) { flow 3867 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c rhashtable_remove_fast(tc_ht, &flow->node, tc_ht_params); flow 3871 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5e_flow_put(priv, flow); flow 3886 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow; flow 3894 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow = mlx5e_flow_get(rhashtable_lookup(tc_ht, &f->cookie, flow 3897 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (IS_ERR(flow)) flow 3898 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c return PTR_ERR(flow); flow 3900 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (!same_flow_direction(flow, flags)) { flow 3905 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (mlx5e_is_offloaded_flow(flow)) { flow 3906 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c counter = mlx5e_tc_get_counter(flow); flow 3920 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (flow_flag_test(flow, DUP) && flow 3921 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c flow_flag_test(flow->peer_flow, OFFLOADED)) { flow 3926 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c counter = mlx5e_tc_get_counter(flow->peer_flow); flow 3942 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5e_flow_put(priv, flow); flow 4132 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow = ptr; flow 4133 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_priv *priv = flow->priv; flow 4135 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c mlx5e_tc_del_flow(priv, flow); flow 4136 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c kfree(flow); flow 4177 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow, *tmp; flow 4179 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c list_for_each_entry_safe(flow, tmp, &esw->offloads.peer_flows, peer) flow 4180 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c __mlx5e_tc_del_fdb_peer_flow(flow); flow 4188 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c struct mlx5e_tc_flow *flow, *tmp; flow 4191 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c list_for_each_entry_safe(flow, tmp, &rpriv->unready_flows, unready) { flow 4192 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c if (!mlx5e_tc_add_fdb_flow(flow->priv, flow, NULL)) flow 4193 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c unready_flow_del(flow); flow 686 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c struct mlx5_flow_handle *flow; flow 713 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c flow = mlx5_add_flow_rules(esw->fdb_table.offloads.slow_fdb, flow 715 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c if (IS_ERR(flow)) { flow 716 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c err = PTR_ERR(flow); flow 719 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c flows[MLX5_VPORT_PF] = flow; flow 724 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c flow = mlx5_add_flow_rules(esw->fdb_table.offloads.slow_fdb, flow 726 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c if (IS_ERR(flow)) { flow 727 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c err = PTR_ERR(flow); flow 730 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c flows[mlx5_eswitch_ecpf_idx(esw)] = flow; flow 738 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c flow = mlx5_add_flow_rules(esw->fdb_table.offloads.slow_fdb, flow 740 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c if (IS_ERR(flow)) { flow 741 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c err = PTR_ERR(flow); flow 744 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c flows[i] = flow; flow 187 drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c static void mlx5_fpga_tls_flow_to_cmd(void *flow, void *cmd) flow 189 drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c memcpy(MLX5_ADDR_OF(tls_cmd, cmd, src_port), flow, flow 192 drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c MLX5_SET(tls_cmd, cmd, ipv6, MLX5_GET(tls_flow, flow, ipv6)); flow 194 drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c MLX5_GET(tls_flow, flow, direction_sx)); flow 202 drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c void *flow; flow 213 drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c flow = idr_find(&mdev->fpga->tls->rx_idr, ntohl(handle)); flow 214 drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c if (unlikely(!flow)) { flow 220 drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c mlx5_fpga_tls_flow_to_cmd(flow, cmd); flow 240 drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c void *flow, u32 swid, gfp_t flags) flow 255 drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c mlx5_fpga_tls_flow_to_cmd(flow, cmd); flow 256 drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c kfree(flow); flow 269 drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c void *flow; flow 272 drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c flow = mlx5_fpga_tls_release_swid(&tls->tx_idr, flow 276 drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c flow = mlx5_fpga_tls_release_swid(&tls->rx_idr, flow 280 drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c if (!flow) { flow 287 drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c mlx5_fpga_tls_send_teardown_cmd(mdev, flow, swid, flags); flow 551 drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c static int _mlx5_fpga_tls_add_flow(struct mlx5_core_dev *mdev, void *flow, flow 571 drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c mlx5_fpga_tls_flow_to_cmd(flow, cmd); flow 584 drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c int mlx5_fpga_tls_add_flow(struct mlx5_core_dev *mdev, void *flow, flow 595 drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c &tls->tx_idr_spinlock, flow); flow 598 drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c &tls->rx_idr_spinlock, flow); flow 604 drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c MLX5_SET(tls_flow, flow, direction_sx, direction_sx ? 1 : 0); flow 606 drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c ret = _mlx5_fpga_tls_add_flow(mdev, flow, crypto_info, swid, flow 54 drivers/net/ethernet/mellanox/mlx5/core/fpga/tls.h int mlx5_fpga_tls_add_flow(struct mlx5_core_dev *mdev, void *flow, flow 264 drivers/net/ethernet/netronome/nfp/flower/action.c nfp_flower_tun_is_gre(struct flow_cls_offload *flow, int start_idx) flow 266 drivers/net/ethernet/netronome/nfp/flower/action.c struct flow_action_entry *act = flow->rule->action.entries; flow 267 drivers/net/ethernet/netronome/nfp/flower/action.c int num_act = flow->rule->action.num_entries; flow 281 drivers/net/ethernet/netronome/nfp/flower/action.c struct flow_cls_offload *flow, flow 290 drivers/net/ethernet/netronome/nfp/flower/action.c if (nfp_flower_tun_is_gre(flow, act_idx)) flow 435 drivers/net/ethernet/netronome/nfp/flower/action.c struct flowi4 flow = {}; flow 443 drivers/net/ethernet/netronome/nfp/flower/action.c flow.daddr = ip_tun->key.u.ipv4.dst; flow 444 drivers/net/ethernet/netronome/nfp/flower/action.c flow.flowi4_proto = IPPROTO_UDP; flow 445 drivers/net/ethernet/netronome/nfp/flower/action.c rt = ip_route_output_key(net, &flow); flow 762 drivers/net/ethernet/netronome/nfp/flower/action.c nfp_fl_commit_mangle(struct flow_cls_offload *flow, char *nfp_action, flow 766 drivers/net/ethernet/netronome/nfp/flower/action.c struct flow_rule *rule = flow_cls_offload_flow_rule(flow); flow 864 drivers/net/ethernet/netronome/nfp/flower/action.c struct flow_cls_offload *flow, char *nfp_action, int *a_len, flow 951 drivers/net/ethernet/netronome/nfp/flower/action.c struct flow_cls_offload *flow, flow 1019 drivers/net/ethernet/netronome/nfp/flower/action.c *tun_type = nfp_fl_get_tun_from_act(app, flow, act, act_idx); flow 1060 drivers/net/ethernet/netronome/nfp/flower/action.c if (nfp_fl_pedit(act, flow, &nfp_fl->action_data[*a_len], flow 1169 drivers/net/ethernet/netronome/nfp/flower/action.c struct flow_cls_offload *flow, flow 1189 drivers/net/ethernet/netronome/nfp/flower/action.c flow_action_for_each(i, act, &flow->rule->action) { flow 1190 drivers/net/ethernet/netronome/nfp/flower/action.c if (nfp_fl_check_mangle_start(&flow->rule->action, i)) flow 1192 drivers/net/ethernet/netronome/nfp/flower/action.c err = nfp_flower_loop_action(app, act, flow, nfp_flow, &act_len, flow 1199 drivers/net/ethernet/netronome/nfp/flower/action.c if (nfp_fl_check_mangle_end(&flow->rule->action, i)) flow 1200 drivers/net/ethernet/netronome/nfp/flower/action.c nfp_fl_commit_mangle(flow, flow 219 drivers/net/ethernet/netronome/nfp/flower/cmsg.c if (msg_len < struct_size(msg, flow, flow_cnt)) { flow 221 drivers/net/ethernet/netronome/nfp/flower/cmsg.c msg_len, struct_size(msg, flow, flow_cnt)); flow 233 drivers/net/ethernet/netronome/nfp/flower/cmsg.c u32 ctx = be32_to_cpu(msg->flow[i].host_ctx); flow 532 drivers/net/ethernet/netronome/nfp/flower/cmsg.h } __packed flow[0]; flow 308 drivers/net/ethernet/netronome/nfp/flower/main.h struct nfp_fl_payload *flow; flow 361 drivers/net/ethernet/netronome/nfp/flower/main.h struct flow_cls_offload *flow, flow 368 drivers/net/ethernet/netronome/nfp/flower/main.h struct flow_cls_offload *flow, flow 373 drivers/net/ethernet/netronome/nfp/flower/main.h struct flow_cls_offload *flow, flow 417 drivers/net/ethernet/netronome/nfp/flower/main.h struct tc_cls_matchall_offload *flow); flow 434 drivers/net/ethernet/netronome/nfp/flower/main.h struct nfp_fl_payload *flow); flow 436 drivers/net/ethernet/netronome/nfp/flower/main.h struct nfp_fl_payload *flow); flow 13 drivers/net/ethernet/netronome/nfp/flower/match.c struct flow_cls_offload *flow, u8 key_type) flow 15 drivers/net/ethernet/netronome/nfp/flower/match.c struct flow_rule *rule = flow_cls_offload_flow_rule(flow); flow 81 drivers/net/ethernet/netronome/nfp/flower/match.c struct flow_cls_offload *flow) flow 83 drivers/net/ethernet/netronome/nfp/flower/match.c struct flow_rule *rule = flow_cls_offload_flow_rule(flow); flow 133 drivers/net/ethernet/netronome/nfp/flower/match.c struct flow_cls_offload *flow) flow 135 drivers/net/ethernet/netronome/nfp/flower/match.c struct flow_rule *rule = flow_cls_offload_flow_rule(flow); flow 154 drivers/net/ethernet/netronome/nfp/flower/match.c struct flow_cls_offload *flow) flow 156 drivers/net/ethernet/netronome/nfp/flower/match.c struct flow_rule *rule = flow_cls_offload_flow_rule(flow); flow 228 drivers/net/ethernet/netronome/nfp/flower/match.c struct flow_cls_offload *flow) flow 230 drivers/net/ethernet/netronome/nfp/flower/match.c struct flow_rule *rule = flow_cls_offload_flow_rule(flow); flow 244 drivers/net/ethernet/netronome/nfp/flower/match.c nfp_flower_compile_ip_ext(&ext->ip_ext, &msk->ip_ext, flow); flow 250 drivers/net/ethernet/netronome/nfp/flower/match.c struct flow_cls_offload *flow) flow 252 drivers/net/ethernet/netronome/nfp/flower/match.c struct flow_rule *rule = flow_cls_offload_flow_rule(flow); flow 267 drivers/net/ethernet/netronome/nfp/flower/match.c nfp_flower_compile_ip_ext(&ext->ip_ext, &msk->ip_ext, flow); flow 272 drivers/net/ethernet/netronome/nfp/flower/match.c struct flow_cls_offload *flow) flow 276 drivers/net/ethernet/netronome/nfp/flower/match.c flow_rule_match_enc_opts(flow->rule, &match); flow 286 drivers/net/ethernet/netronome/nfp/flower/match.c struct flow_cls_offload *flow) flow 288 drivers/net/ethernet/netronome/nfp/flower/match.c struct flow_rule *rule = flow_cls_offload_flow_rule(flow); flow 304 drivers/net/ethernet/netronome/nfp/flower/match.c struct flow_cls_offload *flow) flow 306 drivers/net/ethernet/netronome/nfp/flower/match.c struct flow_rule *rule = flow_cls_offload_flow_rule(flow); flow 322 drivers/net/ethernet/netronome/nfp/flower/match.c struct flow_cls_offload *flow) flow 324 drivers/net/ethernet/netronome/nfp/flower/match.c struct flow_rule *rule = flow_cls_offload_flow_rule(flow); flow 344 drivers/net/ethernet/netronome/nfp/flower/match.c nfp_flower_compile_tun_ipv4_addrs(&ext->ipv4, &msk->ipv4, flow); flow 345 drivers/net/ethernet/netronome/nfp/flower/match.c nfp_flower_compile_tun_ip_ext(&ext->ip_ext, &msk->ip_ext, flow); flow 351 drivers/net/ethernet/netronome/nfp/flower/match.c struct flow_cls_offload *flow) flow 353 drivers/net/ethernet/netronome/nfp/flower/match.c struct flow_rule *rule = flow_cls_offload_flow_rule(flow); flow 369 drivers/net/ethernet/netronome/nfp/flower/match.c nfp_flower_compile_tun_ipv4_addrs(&ext->ipv4, &msk->ipv4, flow); flow 370 drivers/net/ethernet/netronome/nfp/flower/match.c nfp_flower_compile_tun_ip_ext(&ext->ip_ext, &msk->ip_ext, flow); flow 374 drivers/net/ethernet/netronome/nfp/flower/match.c struct flow_cls_offload *flow, flow 396 drivers/net/ethernet/netronome/nfp/flower/match.c flow, key_ls->key_layer); flow 428 drivers/net/ethernet/netronome/nfp/flower/match.c flow); flow 436 drivers/net/ethernet/netronome/nfp/flower/match.c flow); flow 444 drivers/net/ethernet/netronome/nfp/flower/match.c flow); flow 452 drivers/net/ethernet/netronome/nfp/flower/match.c flow); flow 460 drivers/net/ethernet/netronome/nfp/flower/match.c nfp_flower_compile_ipv4_gre_tun((void *)ext, (void *)msk, flow); flow 476 drivers/net/ethernet/netronome/nfp/flower/match.c nfp_flower_compile_ipv4_udp_tun((void *)ext, (void *)msk, flow); flow 488 drivers/net/ethernet/netronome/nfp/flower/match.c err = nfp_flower_compile_geneve_opt(ext, msk, flow); flow 30 drivers/net/ethernet/netronome/nfp/flower/metadata.c struct nfp_fl_payload *flow; flow 293 drivers/net/ethernet/netronome/nfp/flower/metadata.c struct flow_cls_offload *flow, flow 312 drivers/net/ethernet/netronome/nfp/flower/metadata.c nfp_flow->meta.host_cookie = cpu_to_be64(flow->cookie); flow 322 drivers/net/ethernet/netronome/nfp/flower/metadata.c ctx_entry->flow = nfp_flow; flow 353 drivers/net/ethernet/netronome/nfp/flower/metadata.c check_entry = nfp_flower_search_fl_table(app, flow->cookie, netdev); flow 443 drivers/net/ethernet/netronome/nfp/flower/metadata.c return ctx_entry->flow; flow 220 drivers/net/ethernet/netronome/nfp/flower/offload.c struct flow_cls_offload *flow, flow 224 drivers/net/ethernet/netronome/nfp/flower/offload.c struct flow_rule *rule = flow_cls_offload_flow_rule(flow); flow 379 drivers/net/ethernet/netronome/nfp/flower/offload.c } else if (nfp_flower_check_higher_than_mac(flow)) { flow 398 drivers/net/ethernet/netronome/nfp/flower/offload.c nfp_flower_check_higher_than_l3(flow)) { flow 511 drivers/net/ethernet/netronome/nfp/flower/offload.c nfp_flower_update_merge_with_actions(struct nfp_fl_payload *flow, flow 528 drivers/net/ethernet/netronome/nfp/flower/offload.c while (act_off < flow->meta.act_len) { flow 529 drivers/net/ethernet/netronome/nfp/flower/offload.c a = (struct nfp_fl_act_head *)&flow->action_data[act_off]; flow 617 drivers/net/ethernet/netronome/nfp/flower/offload.c nfp_flower_populate_merge_match(struct nfp_fl_payload *flow, flow 622 drivers/net/ethernet/netronome/nfp/flower/offload.c u8 *mask = flow->mask_data; flow 883 drivers/net/ethernet/netronome/nfp/flower/offload.c if (link->sub_flow.flow == sub_flow) { flow 898 drivers/net/ethernet/netronome/nfp/flower/offload.c link->merge_flow.flow = merge_flow; flow 900 drivers/net/ethernet/netronome/nfp/flower/offload.c link->sub_flow.flow = sub_flow; flow 1017 drivers/net/ethernet/netronome/nfp/flower/offload.c struct nfp_fl_payload *flow, flow 1023 drivers/net/ethernet/netronome/nfp/flower/offload.c u8 *mask = flow->mask_data; flow 1028 drivers/net/ethernet/netronome/nfp/flower/offload.c meta_tci = (struct nfp_flower_meta_tci *)flow->unmasked_data; flow 1033 drivers/net/ethernet/netronome/nfp/flower/offload.c flow->pre_tun_rule.vlan_tci = cpu_to_be16(vlan_tci); flow 1036 drivers/net/ethernet/netronome/nfp/flower/offload.c flow->pre_tun_rule.vlan_tci = cpu_to_be16(0xffff); flow 1078 drivers/net/ethernet/netronome/nfp/flower/offload.c act = (struct nfp_fl_act_head *)&flow->action_data[act_offset]; flow 1086 drivers/net/ethernet/netronome/nfp/flower/offload.c act = (struct nfp_fl_act_head *)&flow->action_data[act_offset]; flow 1097 drivers/net/ethernet/netronome/nfp/flower/offload.c if (act_offset != flow->meta.act_len) { flow 1117 drivers/net/ethernet/netronome/nfp/flower/offload.c struct flow_cls_offload *flow) flow 1127 drivers/net/ethernet/netronome/nfp/flower/offload.c extack = flow->common.extack; flow 1135 drivers/net/ethernet/netronome/nfp/flower/offload.c err = nfp_flower_calculate_key_layers(app, netdev, key_layer, flow, flow 1146 drivers/net/ethernet/netronome/nfp/flower/offload.c err = nfp_flower_compile_flow_match(app, flow, key_layer, netdev, flow 1151 drivers/net/ethernet/netronome/nfp/flower/offload.c err = nfp_flower_compile_action(app, flow, netdev, flow_pay, extack); flow 1161 drivers/net/ethernet/netronome/nfp/flower/offload.c err = nfp_compile_flow_metadata(app, flow, flow_pay, netdev, extack); flow 1165 drivers/net/ethernet/netronome/nfp/flower/offload.c flow_pay->tc_flower_cookie = flow->cookie; flow 1220 drivers/net/ethernet/netronome/nfp/flower/offload.c origin = link->sub_flow.flow; flow 1273 drivers/net/ethernet/netronome/nfp/flower/offload.c link->merge_flow.flow); flow 1289 drivers/net/ethernet/netronome/nfp/flower/offload.c struct flow_cls_offload *flow) flow 1297 drivers/net/ethernet/netronome/nfp/flower/offload.c extack = flow->common.extack; flow 1301 drivers/net/ethernet/netronome/nfp/flower/offload.c nfp_flow = nfp_flower_search_fl_table(app, flow->cookie, netdev); flow 1367 drivers/net/ethernet/netronome/nfp/flower/offload.c sub_flow = link->sub_flow.flow; flow 1384 drivers/net/ethernet/netronome/nfp/flower/offload.c __nfp_flower_update_merge_stats(app, link->merge_flow.flow); flow 1400 drivers/net/ethernet/netronome/nfp/flower/offload.c struct flow_cls_offload *flow) flow 1407 drivers/net/ethernet/netronome/nfp/flower/offload.c extack = flow->common.extack; flow 1408 drivers/net/ethernet/netronome/nfp/flower/offload.c nfp_flow = nfp_flower_search_fl_table(app, flow->cookie, netdev); flow 1421 drivers/net/ethernet/netronome/nfp/flower/offload.c flow_stats_update(&flow->stats, priv->stats[ctx_id].bytes, flow 62 drivers/net/ethernet/netronome/nfp/flower/qos_conf.c struct tc_cls_matchall_offload *flow, flow 65 drivers/net/ethernet/netronome/nfp/flower/qos_conf.c struct flow_action_entry *action = &flow->rule->action.entries[0]; flow 91 drivers/net/ethernet/netronome/nfp/flower/qos_conf.c if (!flow_offload_has_one_action(&flow->rule->action)) { flow 96 drivers/net/ethernet/netronome/nfp/flower/qos_conf.c if (flow->common.prio != 1) { flow 138 drivers/net/ethernet/netronome/nfp/flower/qos_conf.c struct tc_cls_matchall_offload *flow, flow 291 drivers/net/ethernet/netronome/nfp/flower/qos_conf.c struct tc_cls_matchall_offload *flow, flow 322 drivers/net/ethernet/netronome/nfp/flower/qos_conf.c flow_stats_update(&flow->stats, diff_bytes, diff_pkts, flow 343 drivers/net/ethernet/netronome/nfp/flower/qos_conf.c struct tc_cls_matchall_offload *flow) flow 345 drivers/net/ethernet/netronome/nfp/flower/qos_conf.c struct netlink_ext_ack *extack = flow->common.extack; flow 353 drivers/net/ethernet/netronome/nfp/flower/qos_conf.c switch (flow->command) { flow 355 drivers/net/ethernet/netronome/nfp/flower/qos_conf.c return nfp_flower_install_rate_limiter(app, netdev, flow, flow 358 drivers/net/ethernet/netronome/nfp/flower/qos_conf.c return nfp_flower_remove_rate_limiter(app, netdev, flow, flow 361 drivers/net/ethernet/netronome/nfp/flower/qos_conf.c return nfp_flower_stats_rate_limiter(app, netdev, flow, flow 291 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c struct flowi4 *flow, struct neighbour *neigh, gfp_t flag) flow 301 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c payload.dst_ipv4 = flow->daddr; flow 312 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c payload.src_ipv4 = flow->saddr; flow 331 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c struct flowi4 flow = {}; flow 349 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c flow.daddr = *(__be32 *)n->primary_key; flow 359 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c if (!nfp_tun_has_route(app, flow.daddr)) flow 364 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c rt = ip_route_output_key(dev_net(n->dev), &flow); flow 374 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c flow.flowi4_proto = IPPROTO_UDP; flow 375 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c nfp_tun_write_neigh(n->dev, app, &flow, n, GFP_ATOMIC); flow 384 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c struct flowi4 flow = {}; flow 396 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c flow.daddr = payload->ipv4_addr; flow 397 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c flow.flowi4_proto = IPPROTO_UDP; flow 401 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c rt = ip_route_output_key(dev_net(netdev), &flow); flow 410 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c n = dst_neigh_lookup(&rt->dst, &flow.daddr); flow 414 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c nfp_tun_write_neigh(n->dev, app, &flow, n, GFP_ATOMIC); flow 934 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c struct nfp_fl_payload *flow) flow 947 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c internal_dev = flow->pre_tun_rule.dev; flow 948 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c payload.vlan_tci = flow->pre_tun_rule.vlan_tci; flow 949 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c payload.host_ctx_id = flow->meta.host_ctx_id; flow 963 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c flow->pre_tun_rule.vlan_tci = payload.vlan_tci; flow 964 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c flow->pre_tun_rule.port_idx = payload.port_idx; flow 978 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c struct nfp_fl_payload *flow) flow 989 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c payload.vlan_tci = flow->pre_tun_rule.vlan_tci; flow 990 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c payload.port_idx = flow->pre_tun_rule.port_idx; flow 2052 drivers/net/ethernet/qlogic/qede/qede_filter.c struct ethtool_rx_flow_rule *flow; flow 2075 drivers/net/ethernet/qlogic/qede/qede_filter.c flow = ethtool_rx_flow_rule_create(&input); flow 2076 drivers/net/ethernet/qlogic/qede/qede_filter.c if (IS_ERR(flow)) flow 2077 drivers/net/ethernet/qlogic/qede/qede_filter.c return PTR_ERR(flow); flow 2079 drivers/net/ethernet/qlogic/qede/qede_filter.c if (qede_parse_flow_attr(edev, proto, flow->rule, t)) { flow 2085 drivers/net/ethernet/qlogic/qede/qede_filter.c err = qede_flow_spec_validate(edev, &flow->rule->action, t, flow 2088 drivers/net/ethernet/qlogic/qede/qede_filter.c ethtool_rx_flow_rule_destroy(flow); flow 911 drivers/net/ethernet/smsc/smsc911x.c u32 flow; flow 920 drivers/net/ethernet/smsc/smsc911x.c flow = 0xFFFF0002; flow 922 drivers/net/ethernet/smsc/smsc911x.c flow = 0; flow 934 drivers/net/ethernet/smsc/smsc911x.c flow = 0; flow 939 drivers/net/ethernet/smsc/smsc911x.c smsc911x_mac_write(pdata, FLOW, flow); flow 1048 drivers/net/ethernet/smsc/smsc9420.c u32 flow; flow 1056 drivers/net/ethernet/smsc/smsc9420.c flow = 0xFFFF0002; flow 1058 drivers/net/ethernet/smsc/smsc9420.c flow = 0; flow 1065 drivers/net/ethernet/smsc/smsc9420.c flow = 0; flow 1068 drivers/net/ethernet/smsc/smsc9420.c smsc9420_reg_write(pd, FLOW, flow); flow 235 drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c unsigned int flow = GMAC_FLOW_CTRL_UP; flow 240 drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c flow |= GMAC_FLOW_CTRL_RFE; flow 244 drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c flow |= GMAC_FLOW_CTRL_TFE; flow 249 drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c flow |= (pause_time << GMAC_FLOW_CTRL_PT_SHIFT); flow 252 drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c writel(flow, ioaddr + GMAC_FLOW_CTRL); flow 140 drivers/net/ethernet/stmicro/stmmac/dwmac100_core.c unsigned int flow = MAC_FLOW_CTRL_ENABLE; flow 143 drivers/net/ethernet/stmicro/stmmac/dwmac100_core.c flow |= (pause_time << MAC_FLOW_CTRL_PT_SHIFT); flow 144 drivers/net/ethernet/stmicro/stmmac/dwmac100_core.c writel(flow, ioaddr + MAC_FLOW_CTRL); flow 480 drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c unsigned int flow = 0; flow 486 drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c flow |= GMAC_RX_FLOW_CTRL_RFE; flow 488 drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c writel(flow, ioaddr + GMAC_RX_FLOW_CTRL); flow 497 drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c flow = GMAC_TX_FLOW_CTRL_TFE; flow 500 drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c flow |= flow 503 drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c writel(flow, ioaddr + GMAC_QX_TX_FLOW_CTRL(queue)); flow 163 drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c u32 flow = readl(ioaddr + XGMAC_MTL_RXQ_FLOW_CONTROL(channel)); flow 199 drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c flow &= ~XGMAC_RFD; flow 200 drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c flow |= rfd << XGMAC_RFD_SHIFT; flow 202 drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c flow &= ~XGMAC_RFA; flow 203 drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c flow |= rfa << XGMAC_RFA_SHIFT; flow 205 drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c writel(flow, ioaddr + XGMAC_MTL_RXQ_FLOW_CONTROL(channel)); flow 473 drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c u32 flow = readl(ioaddr + XGMAC_RX_FLOW_CTRL); flow 481 drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c writel(flow & (~XGMAC_RFE), ioaddr + XGMAC_RX_FLOW_CTRL); flow 2161 drivers/net/ethernet/sun/cassini.c struct sk_buff_head *flow = &cp->rx_flows[flowid]; flow 2167 drivers/net/ethernet/sun/cassini.c __skb_queue_tail(flow, skb); flow 2169 drivers/net/ethernet/sun/cassini.c while ((skb = __skb_dequeue(flow))) { flow 43 drivers/net/gtp.c u16 flow; flow 415 drivers/net/gtp.c gtp0->flow = htons(pctx->u.v0.flow); flow 923 drivers/net/gtp.c pctx->u.v0.flow = nla_get_u16(info->attrs[GTPA_FLOW]); flow 1192 drivers/net/gtp.c nla_put_u16(skb, GTPA_FLOW, pctx->u.v0.flow)) flow 253 drivers/net/hyperv/netvsc_drv.c struct flow_keys flow; flow 259 drivers/net/hyperv/netvsc_drv.c if (!skb_flow_dissect_flow_keys(skb, &flow, 0)) flow 262 drivers/net/hyperv/netvsc_drv.c switch (flow.basic.ip_proto) { flow 264 drivers/net/hyperv/netvsc_drv.c if (flow.basic.n_proto == htons(ETH_P_IP)) flow 266 drivers/net/hyperv/netvsc_drv.c else if (flow.basic.n_proto == htons(ETH_P_IPV6)) flow 272 drivers/net/hyperv/netvsc_drv.c if (flow.basic.n_proto == htons(ETH_P_IP)) flow 274 drivers/net/hyperv/netvsc_drv.c else if (flow.basic.n_proto == htons(ETH_P_IPV6)) flow 283 drivers/net/hyperv/netvsc_drv.c if (flow.basic.n_proto == htons(ETH_P_IP)) flow 284 drivers/net/hyperv/netvsc_drv.c hash = jhash2((u32 *)&flow.addrs.v4addrs, 2, hashrnd); flow 285 drivers/net/hyperv/netvsc_drv.c else if (flow.basic.n_proto == htons(ETH_P_IPV6)) flow 286 drivers/net/hyperv/netvsc_drv.c hash = jhash2((u32 *)&flow.addrs.v6addrs, 8, hashrnd); flow 1130 drivers/net/usb/lan78xx.c u32 flow = 0, fct_flow = 0; flow 1140 drivers/net/usb/lan78xx.c flow |= (FLOW_CR_TX_FCEN_ | 0xFFFF); flow 1143 drivers/net/usb/lan78xx.c flow |= FLOW_CR_RX_FCEN_; flow 1157 drivers/net/usb/lan78xx.c ret = lan78xx_write_reg(dev, FLOW, flow); flow 589 drivers/net/usb/smsc75xx.c u32 flow = 0, fct_flow = 0; flow 596 drivers/net/usb/smsc75xx.c flow = (FLOW_TX_FCEN | 0xFFFF); flow 602 drivers/net/usb/smsc75xx.c flow |= FLOW_RX_FCEN; flow 611 drivers/net/usb/smsc75xx.c ret = smsc75xx_write_reg(dev, FLOW, flow); flow 517 drivers/net/usb/smsc95xx.c u32 flow = 0, afc_cfg; flow 527 drivers/net/usb/smsc95xx.c flow = 0xFFFF0002; flow 531 drivers/net/usb/smsc95xx.c flow |= 0xFFFF0000; flow 544 drivers/net/usb/smsc95xx.c ret = smsc95xx_write_reg(dev, FLOW, flow); flow 43 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c brcmf_flowring_is_tdls_mac(struct brcmf_flowring *flow, u8 mac[ETH_ALEN]) flow 47 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c search = flow->tdls_entry; flow 59 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c u32 brcmf_flowring_lookup(struct brcmf_flowring *flow, u8 da[ETH_ALEN], flow 71 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c sta = (flow->addr_mode[ifidx] == ADDR_INDIRECT); flow 77 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c if ((sta) && (flow->tdls_active) && flow 78 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c (brcmf_flowring_is_tdls_mac(flow, da))) { flow 85 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c hash = flow->hash; flow 103 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c u32 brcmf_flowring_create(struct brcmf_flowring *flow, u8 da[ETH_ALEN], flow 116 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c sta = (flow->addr_mode[ifidx] == ADDR_INDIRECT); flow 122 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c if ((sta) && (flow->tdls_active) && flow 123 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c (brcmf_flowring_is_tdls_mac(flow, da))) { flow 130 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c hash = flow->hash; flow 141 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c for (i = 0; i < flow->nrofrings; i++) { flow 142 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c if (flow->rings[i] == NULL) flow 145 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c if (i == flow->nrofrings) flow 160 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c flow->rings[i] = ring; flow 168 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c u8 brcmf_flowring_tid(struct brcmf_flowring *flow, u16 flowid) flow 172 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c ring = flow->rings[flowid]; flow 174 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c return flow->hash[ring->hash_id].fifo; flow 178 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c static void brcmf_flowring_block(struct brcmf_flowring *flow, u16 flowid, flow 190 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c spin_lock_irqsave(&flow->block_lock, flags); flow 192 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c ring = flow->rings[flowid]; flow 194 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c spin_unlock_irqrestore(&flow->block_lock, flags); flow 197 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c ifidx = brcmf_flowring_ifidx_get(flow, flowid); flow 200 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c for (i = 0; i < flow->nrofrings; i++) { flow 201 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c if ((flow->rings[i]) && (i != flowid)) { flow 202 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c ring = flow->rings[i]; flow 204 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c (brcmf_flowring_ifidx_get(flow, i) == ifidx)) { flow 212 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c flow->rings[flowid]->blocked = blocked; flow 214 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c spin_unlock_irqrestore(&flow->block_lock, flags); flow 218 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c bus_if = dev_get_drvdata(flow->dev); flow 223 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c spin_unlock_irqrestore(&flow->block_lock, flags); flow 227 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c void brcmf_flowring_delete(struct brcmf_flowring *flow, u16 flowid) flow 229 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c struct brcmf_bus *bus_if = dev_get_drvdata(flow->dev); flow 236 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c ring = flow->rings[flowid]; flow 240 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c ifidx = brcmf_flowring_ifidx_get(flow, flowid); flow 243 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c brcmf_flowring_block(flow, flowid, false); flow 245 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c flow->hash[hash_idx].ifidx = BRCMF_FLOWRING_INVALID_IFIDX; flow 246 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c eth_zero_addr(flow->hash[hash_idx].mac); flow 247 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c flow->rings[flowid] = NULL; flow 259 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c u32 brcmf_flowring_enqueue(struct brcmf_flowring *flow, u16 flowid, flow 264 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c ring = flow->rings[flowid]; flow 270 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c brcmf_flowring_block(flow, flowid, true); flow 279 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c brcmf_flowring_block(flow, flowid, false); flow 285 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c struct sk_buff *brcmf_flowring_dequeue(struct brcmf_flowring *flow, u16 flowid) flow 290 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c ring = flow->rings[flowid]; flow 298 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c brcmf_flowring_block(flow, flowid, false); flow 306 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c void brcmf_flowring_reinsert(struct brcmf_flowring *flow, u16 flowid, flow 311 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c ring = flow->rings[flowid]; flow 317 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c u32 brcmf_flowring_qlen(struct brcmf_flowring *flow, u16 flowid) flow 321 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c ring = flow->rings[flowid]; flow 332 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c void brcmf_flowring_open(struct brcmf_flowring *flow, u16 flowid) flow 336 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c ring = flow->rings[flowid]; flow 346 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c u8 brcmf_flowring_ifidx_get(struct brcmf_flowring *flow, u16 flowid) flow 351 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c ring = flow->rings[flowid]; flow 354 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c return flow->hash[hash_idx].ifidx; flow 360 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c struct brcmf_flowring *flow; flow 363 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c flow = kzalloc(sizeof(*flow), GFP_KERNEL); flow 364 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c if (flow) { flow 365 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c flow->dev = dev; flow 366 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c flow->nrofrings = nrofrings; flow 367 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c spin_lock_init(&flow->block_lock); flow 368 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c for (i = 0; i < ARRAY_SIZE(flow->addr_mode); i++) flow 369 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c flow->addr_mode[i] = ADDR_INDIRECT; flow 370 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c for (i = 0; i < ARRAY_SIZE(flow->hash); i++) flow 371 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c flow->hash[i].ifidx = BRCMF_FLOWRING_INVALID_IFIDX; flow 372 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c flow->rings = kcalloc(nrofrings, sizeof(*flow->rings), flow 374 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c if (!flow->rings) { flow 375 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c kfree(flow); flow 376 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c flow = NULL; flow 380 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c return flow; flow 384 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c void brcmf_flowring_detach(struct brcmf_flowring *flow) flow 386 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c struct brcmf_bus *bus_if = dev_get_drvdata(flow->dev); flow 392 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c for (flowid = 0; flowid < flow->nrofrings; flowid++) { flow 393 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c if (flow->rings[flowid]) flow 397 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c search = flow->tdls_entry; flow 403 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c kfree(flow->rings); flow 404 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c kfree(flow); flow 408 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c void brcmf_flowring_configure_addr_mode(struct brcmf_flowring *flow, int ifidx, flow 411 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c struct brcmf_bus *bus_if = dev_get_drvdata(flow->dev); flow 416 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c if (flow->addr_mode[ifidx] != addr_mode) { flow 417 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c for (i = 0; i < ARRAY_SIZE(flow->hash); i++) { flow 418 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c if (flow->hash[i].ifidx == ifidx) { flow 419 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c flowid = flow->hash[i].flowid; flow 420 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c if (flow->rings[flowid]->status != RING_OPEN) flow 422 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c flow->rings[flowid]->status = RING_CLOSING; flow 426 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c flow->addr_mode[ifidx] = addr_mode; flow 431 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c void brcmf_flowring_delete_peer(struct brcmf_flowring *flow, int ifidx, flow 434 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c struct brcmf_bus *bus_if = dev_get_drvdata(flow->dev); flow 443 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c sta = (flow->addr_mode[ifidx] == ADDR_INDIRECT); flow 445 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c search = flow->tdls_entry; flow 456 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c hash = flow->hash; flow 460 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c flowid = flow->hash[i].flowid; flow 461 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c if (flow->rings[flowid]->status == RING_OPEN) { flow 462 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c flow->rings[flowid]->status = RING_CLOSING; flow 472 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c flow->tdls_entry = search->next; flow 474 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c if (flow->tdls_entry == NULL) flow 475 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c flow->tdls_active = false; flow 480 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c void brcmf_flowring_add_tdls_peer(struct brcmf_flowring *flow, int ifidx, flow 492 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c if (flow->tdls_entry == NULL) { flow 493 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c flow->tdls_entry = tdls_entry; flow 495 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c search = flow->tdls_entry; flow 506 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c flow->tdls_active = true; flow 50 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h u32 brcmf_flowring_lookup(struct brcmf_flowring *flow, u8 da[ETH_ALEN], flow 52 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h u32 brcmf_flowring_create(struct brcmf_flowring *flow, u8 da[ETH_ALEN], flow 54 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h void brcmf_flowring_delete(struct brcmf_flowring *flow, u16 flowid); flow 55 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h void brcmf_flowring_open(struct brcmf_flowring *flow, u16 flowid); flow 56 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h u8 brcmf_flowring_tid(struct brcmf_flowring *flow, u16 flowid); flow 57 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h u32 brcmf_flowring_enqueue(struct brcmf_flowring *flow, u16 flowid, flow 59 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h struct sk_buff *brcmf_flowring_dequeue(struct brcmf_flowring *flow, u16 flowid); flow 60 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h void brcmf_flowring_reinsert(struct brcmf_flowring *flow, u16 flowid, flow 62 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h u32 brcmf_flowring_qlen(struct brcmf_flowring *flow, u16 flowid); flow 63 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h u8 brcmf_flowring_ifidx_get(struct brcmf_flowring *flow, u16 flowid); flow 65 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h void brcmf_flowring_detach(struct brcmf_flowring *flow); flow 66 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h void brcmf_flowring_configure_addr_mode(struct brcmf_flowring *flow, int ifidx, flow 68 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h void brcmf_flowring_delete_peer(struct brcmf_flowring *flow, int ifidx, flow 70 drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h void brcmf_flowring_add_tdls_peer(struct brcmf_flowring *flow, int ifidx, flow 264 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c struct brcmf_flowring *flow; flow 555 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c brcmf_flowring_delete(msgbuf->flow, flowid); flow 598 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c brcmf_flowring_delete(msgbuf->flow, flowid); flow 620 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c create->tid = brcmf_flowring_tid(msgbuf->flow, flowid); flow 672 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c flowid = brcmf_flowring_create(msgbuf->flow, eh->h_dest, flow 695 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c struct brcmf_flowring *flow = msgbuf->flow; flow 713 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c while (brcmf_flowring_qlen(flow, flowid)) { flow 714 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c skb = brcmf_flowring_dequeue(flow, flowid); flow 717 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c brcmf_flowring_qlen(flow, flowid)); flow 724 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c brcmf_flowring_reinsert(flow, flowid, skb); flow 732 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c brcmf_flowring_reinsert(flow, flowid, skb); flow 741 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c tx_msghdr->msg.ifidx = brcmf_flowring_ifidx_get(flow, flowid); flow 799 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c struct brcmf_flowring *flow = msgbuf->flow; flow 805 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c flowid = brcmf_flowring_lookup(flow, eh->h_dest, skb->priority, ifidx); flow 811 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c queue_count = brcmf_flowring_enqueue(flow, flowid, skb); flow 825 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c brcmf_flowring_configure_addr_mode(msgbuf->flow, ifidx, addr_mode); flow 834 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c brcmf_flowring_delete_peer(msgbuf->flow, ifidx, peer); flow 843 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c brcmf_flowring_add_tdls_peer(msgbuf->flow, ifidx, peer); flow 1246 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c brcmf_flowring_open(msgbuf->flow, flowid); flow 1269 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c brcmf_flowring_delete(msgbuf->flow, flowid); flow 1381 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c qlen = brcmf_flowring_qlen(msgbuf->flow, flowid); flow 1420 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c ifidx = brcmf_flowring_ifidx_get(msgbuf->flow, flowid); flow 1471 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c for (i = 0; i < msgbuf->flow->nrofrings; i++) { flow 1472 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c if (!msgbuf->flow->rings[i]) flow 1474 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c ring = msgbuf->flow->rings[i]; flow 1478 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c hash = &msgbuf->flow->hash[ring->hash_id]; flow 1584 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c msgbuf->flow = brcmf_flowring_attach(drvr->bus_if->dev, flow 1586 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c if (!msgbuf->flow) flow 1649 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c brcmf_flowring_detach(msgbuf->flow); flow 151 drivers/net/xen-netback/hash.c struct flow_keys flow; flow 180 drivers/net/xen-netback/hash.c memset(&flow, 0, sizeof(flow)); flow 181 drivers/net/xen-netback/hash.c if (!skb_flow_dissect_flow_keys(skb, &flow, 0)) flow 184 drivers/net/xen-netback/hash.c has_tcp_hdr = (flow.basic.ip_proto == IPPROTO_TCP) && flow 185 drivers/net/xen-netback/hash.c !(flow.control.flags & FLOW_DIS_IS_FRAGMENT); flow 193 drivers/net/xen-netback/hash.c memcpy(&data[0], &flow.addrs.v4addrs.src, 4); flow 194 drivers/net/xen-netback/hash.c memcpy(&data[4], &flow.addrs.v4addrs.dst, 4); flow 195 drivers/net/xen-netback/hash.c memcpy(&data[8], &flow.ports.src, 2); flow 196 drivers/net/xen-netback/hash.c memcpy(&data[10], &flow.ports.dst, 2); flow 203 drivers/net/xen-netback/hash.c memcpy(&data[0], &flow.addrs.v4addrs.src, 4); flow 204 drivers/net/xen-netback/hash.c memcpy(&data[4], &flow.addrs.v4addrs.dst, 4); flow 217 drivers/net/xen-netback/hash.c memcpy(&data[0], &flow.addrs.v6addrs.src, 16); flow 218 drivers/net/xen-netback/hash.c memcpy(&data[16], &flow.addrs.v6addrs.dst, 16); flow 219 drivers/net/xen-netback/hash.c memcpy(&data[32], &flow.ports.src, 2); flow 220 drivers/net/xen-netback/hash.c memcpy(&data[34], &flow.ports.dst, 2); flow 227 drivers/net/xen-netback/hash.c memcpy(&data[0], &flow.addrs.v6addrs.src, 16); flow 228 drivers/net/xen-netback/hash.c memcpy(&data[16], &flow.addrs.v6addrs.dst, 16); flow 126 drivers/soc/ti/knav_dma.c unsigned channel, flow; flow 133 drivers/soc/ti/knav_dma.c ch->channel : ch->flow) flow 477 drivers/soc/ti/knav_dma.c if (chan->flow == chan_num) { flow 532 drivers/soc/ti/knav_dma.c chan->channel, chan->flow, chan->dma->name); flow 562 drivers/soc/ti/knav_dma.c static int pktdma_init_rx_chan(struct knav_dma_chan *chan, u32 flow) flow 566 drivers/soc/ti/knav_dma.c chan->flow = flow; flow 567 drivers/soc/ti/knav_dma.c chan->reg_rx_flow = dma->reg_rx_flow + flow; flow 569 drivers/soc/ti/knav_dma.c dev_dbg(kdev->dev, "rx flow(%d) (%p)\n", chan->flow, chan->reg_rx_flow); flow 581 drivers/soc/ti/knav_dma.c chan->flow = DMA_INVALID_ID; flow 1700 drivers/tty/n_tty.c char *fp, int count, int flow) flow 1732 drivers/tty/n_tty.c ldata->no_room = flow && !room; flow 427 drivers/tty/serial/21285.c int flow = 'n'; flow 438 drivers/tty/serial/21285.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 442 drivers/tty/serial/21285.c return uart_set_options(port, co, baud, parity, bits, flow); flow 101 drivers/tty/serial/8250/8250_ingenic.c unsigned int parity, bits, flow; /* unused for now */ flow 103 drivers/tty/serial/8250/8250_ingenic.c uart_parse_options(opt, &baud, &parity, &bits, &flow); flow 3222 drivers/tty/serial/8250/8250_port.c int flow = 'n'; flow 3228 drivers/tty/serial/8250/8250_port.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 3232 drivers/tty/serial/8250/8250_port.c return uart_set_options(port, port->cons, baud, parity, bits, flow); flow 466 drivers/tty/serial/altera_uart.c int flow = 'n'; flow 475 drivers/tty/serial/altera_uart.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 477 drivers/tty/serial/altera_uart.c return uart_set_options(port, co, baud, parity, bits, flow); flow 643 drivers/tty/serial/amba-pl010.c int flow = 'n'; flow 664 drivers/tty/serial/amba-pl010.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 668 drivers/tty/serial/amba-pl010.c return uart_set_options(&uap->port, co, baud, parity, bits, flow); flow 2296 drivers/tty/serial/amba-pl011.c int flow = 'n'; flow 2332 drivers/tty/serial/amba-pl011.c &baud, &parity, &bits, &flow); flow 2337 drivers/tty/serial/amba-pl011.c return uart_set_options(&uap->port, co, baud, parity, bits, flow); flow 483 drivers/tty/serial/apbuart.c int flow = 'n'; flow 501 drivers/tty/serial/apbuart.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 505 drivers/tty/serial/apbuart.c return uart_set_options(port, co, baud, parity, bits, flow); flow 587 drivers/tty/serial/ar933x_uart.c int flow = 'n'; flow 597 drivers/tty/serial/ar933x_uart.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 599 drivers/tty/serial/ar933x_uart.c return uart_set_options(&up->port, co, baud, parity, bits, flow); flow 494 drivers/tty/serial/arc_uart.c int flow = 'n'; flow 508 drivers/tty/serial/arc_uart.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 514 drivers/tty/serial/arc_uart.c return uart_set_options(port, co, baud, parity, bits, flow); flow 2640 drivers/tty/serial/atmel_serial.c int flow = 'n'; flow 2657 drivers/tty/serial/atmel_serial.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 2661 drivers/tty/serial/atmel_serial.c return uart_set_options(port, co, baud, parity, bits, flow); flow 740 drivers/tty/serial/bcm63xx_uart.c int flow = 'n'; flow 748 drivers/tty/serial/bcm63xx_uart.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 750 drivers/tty/serial/bcm63xx_uart.c return uart_set_options(port, co, baud, parity, bits, flow); flow 385 drivers/tty/serial/clps711x.c int baud = 38400, bits = 8, parity = 'n', flow = 'n'; flow 422 drivers/tty/serial/clps711x.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 424 drivers/tty/serial/clps711x.c ret = uart_set_options(port, co, baud, parity, bits, flow); flow 1293 drivers/tty/serial/cpm_uart/cpm_uart_core.c int flow = 'n'; flow 1332 drivers/tty/serial/cpm_uart/cpm_uart_core.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 1362 drivers/tty/serial/cpm_uart/cpm_uart_core.c uart_set_options(port, co, baud, parity, bits, flow); flow 418 drivers/tty/serial/digicolor-usart.c int baud = 115200, bits = 8, parity = 'n', flow = 'n'; flow 429 drivers/tty/serial/digicolor-usart.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 431 drivers/tty/serial/digicolor-usart.c return uart_set_options(port, co, baud, parity, bits, flow); flow 871 drivers/tty/serial/dz.c int flow = 'n'; flow 884 drivers/tty/serial/dz.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 886 drivers/tty/serial/dz.c return uart_set_options(&dport->port, co, baud, parity, bits, flow); flow 601 drivers/tty/serial/efm32-uart.c int flow = 'n'; flow 632 drivers/tty/serial/efm32-uart.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 637 drivers/tty/serial/efm32-uart.c return uart_set_options(&efm_port->port, co, baud, parity, bits, flow); flow 719 drivers/tty/serial/fsl_linflexuart.c int flow = 'n'; flow 736 drivers/tty/serial/fsl_linflexuart.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 756 drivers/tty/serial/fsl_linflexuart.c ret = uart_set_options(sport, co, baud, parity, bits, flow); flow 2252 drivers/tty/serial/fsl_lpuart.c int flow = 'n'; flow 2267 drivers/tty/serial/fsl_lpuart.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 2279 drivers/tty/serial/fsl_lpuart.c return uart_set_options(&sport->port, co, baud, parity, bits, flow); flow 2059 drivers/tty/serial/imx.c int flow = 'n'; flow 2079 drivers/tty/serial/imx.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 2085 drivers/tty/serial/imx.c retval = uart_set_options(&sport->port, co, baud, parity, bits, flow); flow 1037 drivers/tty/serial/ip22zilog.c int flow = 'n'; flow 1052 drivers/tty/serial/ip22zilog.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 1053 drivers/tty/serial/ip22zilog.c return uart_set_options(&up->port, con, baud, parity, bits, flow); flow 648 drivers/tty/serial/lantiq.c int flow = 'n'; flow 665 drivers/tty/serial/lantiq.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 666 drivers/tty/serial/lantiq.c return uart_set_options(port, co, baud, parity, bits, flow); flow 163 drivers/tty/serial/lpc32xx_hs.c int flow = 'n'; flow 173 drivers/tty/serial/lpc32xx_hs.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 177 drivers/tty/serial/lpc32xx_hs.c return uart_set_options(port, co, baud, parity, bits, flow); flow 901 drivers/tty/serial/max310x.c unsigned int lcr = 0, flow = 0; flow 973 drivers/tty/serial/max310x.c flow |= MAX310X_FLOWCTRL_AUTOCTS_BIT | flow 977 drivers/tty/serial/max310x.c flow |= MAX310X_FLOWCTRL_SWFLOW3_BIT | flow 981 drivers/tty/serial/max310x.c flow |= MAX310X_FLOWCTRL_SWFLOW1_BIT | flow 984 drivers/tty/serial/max310x.c max310x_port_write(port, MAX310X_FLOWCTRL_REG, flow); flow 551 drivers/tty/serial/mcf.c int flow = 'n'; flow 560 drivers/tty/serial/mcf.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 562 drivers/tty/serial/mcf.c return uart_set_options(port, co, baud, parity, bits, flow); flow 514 drivers/tty/serial/meson_uart.c int flow = 'n'; flow 526 drivers/tty/serial/meson_uart.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 528 drivers/tty/serial/meson_uart.c return uart_set_options(port, co, baud, parity, bits, flow); flow 428 drivers/tty/serial/milbeaut_usio.c int flow = 'n'; flow 440 drivers/tty/serial/milbeaut_usio.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 443 drivers/tty/serial/milbeaut_usio.c flow = 'r'; flow 445 drivers/tty/serial/milbeaut_usio.c return uart_set_options(port, co, baud, parity, bits, flow); flow 1539 drivers/tty/serial/mpc52xx_uart.c int *baud, int *parity, int *bits, int *flow) flow 1619 drivers/tty/serial/mpc52xx_uart.c int flow = 'n'; flow 1668 drivers/tty/serial/mpc52xx_uart.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 1670 drivers/tty/serial/mpc52xx_uart.c mpc52xx_console_get_options(port, &baud, &parity, &bits, &flow); flow 1673 drivers/tty/serial/mpc52xx_uart.c baud, bits, parity, flow); flow 1675 drivers/tty/serial/mpc52xx_uart.c return uart_set_options(port, co, baud, parity, bits, flow); flow 457 drivers/tty/serial/mps2-uart.c int flow = 'n'; flow 468 drivers/tty/serial/mps2-uart.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 470 drivers/tty/serial/mps2-uart.c return uart_set_options(&mps_port->port, co, baud, parity, bits, flow); flow 1663 drivers/tty/serial/msm_serial.c int flow = 'n'; flow 1676 drivers/tty/serial/msm_serial.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 1680 drivers/tty/serial/msm_serial.c return uart_set_options(port, co, baud, parity, bits, flow); flow 698 drivers/tty/serial/mvebu-uart.c int flow = 'n'; flow 711 drivers/tty/serial/mvebu-uart.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 713 drivers/tty/serial/mvebu-uart.c return uart_set_options(port, co, baud, parity, bits, flow); flow 1442 drivers/tty/serial/mxs-auart.c int flow = 'n'; flow 1461 drivers/tty/serial/mxs-auart.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 1465 drivers/tty/serial/mxs-auart.c ret = uart_set_options(&s->port, co, baud, parity, bits, flow); flow 1356 drivers/tty/serial/omap-serial.c int flow = 'n'; flow 1363 drivers/tty/serial/omap-serial.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 1365 drivers/tty/serial/omap-serial.c return uart_set_options(&up->port, co, baud, parity, bits, flow); flow 555 drivers/tty/serial/owl-uart.c int flow = 'n'; flow 565 drivers/tty/serial/owl-uart.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 567 drivers/tty/serial/owl-uart.c return uart_set_options(&owl_port->port, co, baud, parity, bits, flow); flow 1685 drivers/tty/serial/pch_uart.c int flow = 'n'; flow 1702 drivers/tty/serial/pch_uart.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 1704 drivers/tty/serial/pch_uart.c return uart_set_options(port, co, baud, parity, bits, flow); flow 731 drivers/tty/serial/pic32_uart.c int flow = 'n'; flow 747 drivers/tty/serial/pic32_uart.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 749 drivers/tty/serial/pic32_uart.c return uart_set_options(port, co, baud, parity, bits, flow); flow 27 drivers/tty/serial/pic32_uart.h int flow; flow 1986 drivers/tty/serial/pmac_zilog.c int flow = 'n'; flow 2032 drivers/tty/serial/pmac_zilog.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 2034 drivers/tty/serial/pmac_zilog.c return uart_set_options(port, co, baud, parity, bits, flow); flow 725 drivers/tty/serial/pnx8xxx_uart.c int flow = 'n'; flow 737 drivers/tty/serial/pnx8xxx_uart.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 739 drivers/tty/serial/pnx8xxx_uart.c return uart_set_options(&sport->port, co, baud, parity, bits, flow); flow 732 drivers/tty/serial/pxa.c int flow = 'n'; flow 741 drivers/tty/serial/pxa.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 743 drivers/tty/serial/pxa.c return uart_set_options(&up->port, co, baud, parity, bits, flow); flow 1073 drivers/tty/serial/qcom_geni_serial.c int flow = 'n'; flow 1097 drivers/tty/serial/qcom_geni_serial.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 1099 drivers/tty/serial/qcom_geni_serial.c return uart_set_options(uport, co, baud, parity, bits, flow); flow 642 drivers/tty/serial/rda-uart.c int flow = 'n'; flow 652 drivers/tty/serial/rda-uart.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 654 drivers/tty/serial/rda-uart.c return uart_set_options(&rda_port->port, co, baud, parity, bits, flow); flow 787 drivers/tty/serial/sa1100.c int flow = 'n'; flow 799 drivers/tty/serial/sa1100.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 803 drivers/tty/serial/sa1100.c return uart_set_options(&sport->port, co, baud, parity, bits, flow); flow 2205 drivers/tty/serial/samsung.c int flow = 'n'; flow 2232 drivers/tty/serial/samsung.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 2238 drivers/tty/serial/samsung.c return uart_set_options(port, co, baud, parity, bits, flow); flow 873 drivers/tty/serial/sb1250-duart.c int flow = 'n'; flow 886 drivers/tty/serial/sb1250-duart.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 887 drivers/tty/serial/sb1250-duart.c return uart_set_options(uport, co, baud, parity, bits, flow); flow 871 drivers/tty/serial/sc16is7xx.c unsigned int lcr, flow = 0; flow 935 drivers/tty/serial/sc16is7xx.c flow |= SC16IS7XX_EFR_AUTOCTS_BIT | flow 938 drivers/tty/serial/sc16is7xx.c flow |= SC16IS7XX_EFR_SWFLOW3_BIT; flow 940 drivers/tty/serial/sc16is7xx.c flow |= SC16IS7XX_EFR_SWFLOW1_BIT; flow 942 drivers/tty/serial/sc16is7xx.c sc16is7xx_port_write(port, SC16IS7XX_EFR_REG, flow); flow 863 drivers/tty/serial/sccnxp.c int baud = 9600, bits = 8, parity = 'n', flow = 'n'; flow 866 drivers/tty/serial/sccnxp.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 868 drivers/tty/serial/sccnxp.c return uart_set_options(port, co, baud, parity, bits, flow); flow 2031 drivers/tty/serial/serial_core.c int *bits, int *flow) flow 2043 drivers/tty/serial/serial_core.c *flow = *s; flow 2058 drivers/tty/serial/serial_core.c int baud, int parity, int bits, int flow) flow 2093 drivers/tty/serial/serial_core.c if (flow == 'r') flow 2400 drivers/tty/serial/serial_core.c int flow = 'n'; flow 2422 drivers/tty/serial/serial_core.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 2423 drivers/tty/serial/serial_core.c ret = uart_set_options(port, NULL, baud, parity, bits, flow); flow 936 drivers/tty/serial/serial_txx9.c int flow = 'n'; flow 953 drivers/tty/serial/serial_txx9.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 955 drivers/tty/serial/serial_txx9.c return uart_set_options(port, co, baud, parity, bits, flow); flow 3062 drivers/tty/serial/sh-sci.c int flow = 'n'; flow 3085 drivers/tty/serial/sh-sci.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 3087 drivers/tty/serial/sh-sci.c return uart_set_options(port, co, baud, parity, bits, flow); flow 806 drivers/tty/serial/sifive.c int flow = 'n'; flow 816 drivers/tty/serial/sifive.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 818 drivers/tty/serial/sifive.c return uart_set_options(&ssp->port, co, baud, parity, bits, flow); flow 1089 drivers/tty/serial/sirfsoc_uart.c unsigned int flow = 'n'; flow 1106 drivers/tty/serial/sirfsoc_uart.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 1112 drivers/tty/serial/sirfsoc_uart.c return uart_set_options(&sirfport->port, co, baud, parity, bits, flow); flow 993 drivers/tty/serial/sprd_serial.c int flow = 'n'; flow 1005 drivers/tty/serial/sprd_serial.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 1008 drivers/tty/serial/sprd_serial.c parity, bits, flow); flow 918 drivers/tty/serial/st-asc.c int flow = 'n'; flow 935 drivers/tty/serial/st-asc.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 937 drivers/tty/serial/st-asc.c return uart_set_options(&ascport->port, co, baud, parity, bits, flow); flow 1298 drivers/tty/serial/stm32-usart.c int flow = 'n'; flow 1315 drivers/tty/serial/stm32-usart.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 1317 drivers/tty/serial/stm32-usart.c return uart_set_options(&stm32port->port, co, baud, parity, bits, flow); flow 515 drivers/tty/serial/uartlite.c int flow = 'n'; flow 533 drivers/tty/serial/uartlite.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 535 drivers/tty/serial/uartlite.c return uart_set_options(port, co, baud, parity, bits, flow); flow 778 drivers/tty/serial/vr41xx_siu.c int flow = 'n'; flow 794 drivers/tty/serial/vr41xx_siu.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 796 drivers/tty/serial/vr41xx_siu.c return uart_set_options(port, con, baud, parity, bits, flow); flow 527 drivers/tty/serial/vt8500_serial.c int flow = 'n'; flow 538 drivers/tty/serial/vt8500_serial.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 541 drivers/tty/serial/vt8500_serial.c co, baud, parity, bits, flow); flow 1250 drivers/tty/serial/xilinx_uartps.c int flow = 'n'; flow 1259 drivers/tty/serial/xilinx_uartps.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 1261 drivers/tty/serial/xilinx_uartps.c return uart_set_options(port, co, baud, parity, bits, flow); flow 1207 drivers/tty/serial/zs.c int flow = 'n'; flow 1218 drivers/tty/serial/zs.c uart_parse_options(options, &baud, &parity, &bits, &flow); flow 1219 drivers/tty/serial/zs.c return uart_set_options(uport, co, baud, parity, bits, flow); flow 228 drivers/usb/serial/whiteheat.h __u8 flow; /* flow control state, see WHITEHEAT_FLOW_* flow 376 fs/reiserfs/fix_node.c int to, int to_bytes, short *snum012, int flow) flow 495 fs/reiserfs/fix_node.c flow = 1; flow 499 fs/reiserfs/fix_node.c if (!flow) { flow 84 include/linux/hsi/hsi.h unsigned int flow; /* RX only */ flow 399 include/linux/serial_core.h int *flow); flow 401 include/linux/serial_core.h int parity, int bits, int flow); flow 1300 include/linux/skbuff.h struct flow_keys *flow, flow 1303 include/linux/skbuff.h memset(flow, 0, sizeof(*flow)); flow 1305 include/linux/skbuff.h flow, NULL, 0, 0, 0, flags); flow 1311 include/linux/skbuff.h struct flow_keys_basic *flow, void *data, flow 1315 include/linux/skbuff.h memset(flow, 0, sizeof(*flow)); flow 1316 include/linux/skbuff.h return __skb_flow_dissect(net, skb, &flow_keys_basic_dissector, flow, flow 294 include/net/flow_dissector.h __be32 flow_get_u32_src(const struct flow_keys *flow); flow 295 include/net/flow_dissector.h __be32 flow_get_u32_dst(const struct flow_keys *flow); flow 313 include/net/flow_dissector.h const struct flow_keys *flow); flow 15 include/net/fq_impl.h struct fq_flow *flow, flow 18 include/net/fq_impl.h struct fq_tin *tin = flow->tin; flow 22 include/net/fq_impl.h flow->backlog -= skb->len; flow 27 include/net/fq_impl.h static void fq_rejigger_backlog(struct fq *fq, struct fq_flow *flow) flow 31 include/net/fq_impl.h if (flow->backlog == 0) { flow 32 include/net/fq_impl.h list_del_init(&flow->backlogchain); flow 34 include/net/fq_impl.h i = flow; flow 37 include/net/fq_impl.h if (i->backlog < flow->backlog) flow 40 include/net/fq_impl.h list_move_tail(&flow->backlogchain, flow 46 include/net/fq_impl.h struct fq_flow *flow) flow 52 include/net/fq_impl.h skb = __skb_dequeue(&flow->queue); flow 56 include/net/fq_impl.h fq_adjust_removal(fq, flow, skb); flow 57 include/net/fq_impl.h fq_rejigger_backlog(fq, flow); flow 66 include/net/fq_impl.h struct fq_flow *flow; flow 80 include/net/fq_impl.h flow = list_first_entry(head, struct fq_flow, flowchain); flow 82 include/net/fq_impl.h if (flow->deficit <= 0) { flow 83 include/net/fq_impl.h flow->deficit += fq->quantum; flow 84 include/net/fq_impl.h list_move_tail(&flow->flowchain, flow 89 include/net/fq_impl.h skb = dequeue_func(fq, tin, flow); flow 94 include/net/fq_impl.h list_move_tail(&flow->flowchain, &tin->old_flows); flow 96 include/net/fq_impl.h list_del_init(&flow->flowchain); flow 97 include/net/fq_impl.h flow->tin = NULL; flow 102 include/net/fq_impl.h flow->deficit -= skb->len; flow 121 include/net/fq_impl.h struct fq_flow *flow; flow 125 include/net/fq_impl.h flow = &fq->flows[idx]; flow 126 include/net/fq_impl.h if (flow->tin && flow->tin != tin) { flow 127 include/net/fq_impl.h flow = get_default_func(fq, tin, idx, skb); flow 132 include/net/fq_impl.h if (!flow->tin) flow 135 include/net/fq_impl.h return flow; flow 140 include/net/fq_impl.h struct fq_flow *flow) flow 144 include/net/fq_impl.h if (list_empty(&flow->backlogchain)) flow 145 include/net/fq_impl.h list_add_tail(&flow->backlogchain, &fq->backlogs); flow 147 include/net/fq_impl.h i = flow; flow 150 include/net/fq_impl.h if (i->backlog > flow->backlog) flow 153 include/net/fq_impl.h list_move(&flow->backlogchain, &i->backlogchain); flow 162 include/net/fq_impl.h struct fq_flow *flow; flow 167 include/net/fq_impl.h flow = fq_flow_classify(fq, tin, idx, skb, get_default_func); flow 169 include/net/fq_impl.h flow->tin = tin; flow 170 include/net/fq_impl.h flow->backlog += skb->len; flow 176 include/net/fq_impl.h fq_recalc_backlog(fq, tin, flow); flow 178 include/net/fq_impl.h if (list_empty(&flow->flowchain)) { flow 179 include/net/fq_impl.h flow->deficit = fq->quantum; flow 180 include/net/fq_impl.h list_add_tail(&flow->flowchain, flow 184 include/net/fq_impl.h __skb_queue_tail(&flow->queue, skb); flow 187 include/net/fq_impl.h flow = list_first_entry_or_null(&fq->backlogs, flow 190 include/net/fq_impl.h if (!flow) flow 193 include/net/fq_impl.h skb = fq_flow_dequeue(fq, flow); flow 197 include/net/fq_impl.h free_func(fq, flow->tin, flow, skb); flow 199 include/net/fq_impl.h flow->tin->overlimit++; flow 209 include/net/fq_impl.h struct fq_flow *flow, flow 214 include/net/fq_impl.h struct fq_tin *tin = flow->tin; flow 219 include/net/fq_impl.h skb_queue_walk_safe(&flow->queue, skb, tmp) { flow 220 include/net/fq_impl.h if (!filter_func(fq, tin, flow, skb, filter_data)) flow 223 include/net/fq_impl.h __skb_unlink(skb, &flow->queue); flow 224 include/net/fq_impl.h fq_adjust_removal(fq, flow, skb); flow 225 include/net/fq_impl.h free_func(fq, tin, flow, skb); flow 228 include/net/fq_impl.h fq_rejigger_backlog(fq, flow); flow 237 include/net/fq_impl.h struct fq_flow *flow; flow 241 include/net/fq_impl.h list_for_each_entry(flow, &tin->new_flows, flowchain) flow 242 include/net/fq_impl.h fq_flow_filter(fq, flow, filter_func, filter_data, free_func); flow 243 include/net/fq_impl.h list_for_each_entry(flow, &tin->old_flows, flowchain) flow 244 include/net/fq_impl.h fq_flow_filter(fq, flow, filter_func, filter_data, free_func); flow 248 include/net/fq_impl.h struct fq_flow *flow, flow 253 include/net/fq_impl.h while ((skb = fq_flow_dequeue(fq, flow))) flow 254 include/net/fq_impl.h free_func(fq, flow->tin, flow, skb); flow 256 include/net/fq_impl.h if (!list_empty(&flow->flowchain)) flow 257 include/net/fq_impl.h list_del_init(&flow->flowchain); flow 259 include/net/fq_impl.h if (!list_empty(&flow->backlogchain)) flow 260 include/net/fq_impl.h list_del_init(&flow->backlogchain); flow 262 include/net/fq_impl.h flow->tin = NULL; flow 264 include/net/fq_impl.h WARN_ON_ONCE(flow->backlog); flow 272 include/net/fq_impl.h struct fq_flow *flow; flow 282 include/net/fq_impl.h flow = list_first_entry(head, struct fq_flow, flowchain); flow 283 include/net/fq_impl.h fq_flow_reset(fq, flow, free_func); flow 290 include/net/fq_impl.h static void fq_flow_init(struct fq_flow *flow) flow 292 include/net/fq_impl.h INIT_LIST_HEAD(&flow->flowchain); flow 293 include/net/fq_impl.h INIT_LIST_HEAD(&flow->backlogchain); flow 294 include/net/fq_impl.h __skb_queue_head_init(&flow->queue); flow 17 include/net/gtp.h __be16 flow; flow 535 include/net/ip.h static inline void iph_to_flow_copy_v4addrs(struct flow_keys *flow, flow 538 include/net/ip.h BUILD_BUG_ON(offsetof(typeof(flow->addrs), v4addrs.dst) != flow 539 include/net/ip.h offsetof(typeof(flow->addrs), v4addrs.src) + flow 540 include/net/ip.h sizeof(flow->addrs.v4addrs.src)); flow 541 include/net/ip.h memcpy(&flow->addrs.v4addrs, &iph->saddr, sizeof(flow->addrs.v4addrs)); flow 542 include/net/ip.h flow->control.addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS; flow 831 include/net/ipv6.h static inline void iph_to_flow_copy_v6addrs(struct flow_keys *flow, flow 834 include/net/ipv6.h BUILD_BUG_ON(offsetof(typeof(flow->addrs), v6addrs.dst) != flow 835 include/net/ipv6.h offsetof(typeof(flow->addrs), v6addrs.src) + flow 836 include/net/ipv6.h sizeof(flow->addrs.v6addrs.src)); flow 837 include/net/ipv6.h memcpy(&flow->addrs.v6addrs, &iph->saddr, sizeof(flow->addrs.v6addrs)); flow 838 include/net/ipv6.h flow->control.addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS; flow 14 include/net/netfilter/nf_dup_netdev.h struct nft_flow_rule *flow, flow 91 include/net/netfilter/nf_flow_table.h void flow_offload_free(struct flow_offload *flow); flow 93 include/net/netfilter/nf_flow_table.h int flow_offload_add(struct nf_flowtable *flow_table, struct flow_offload *flow); flow 101 include/net/netfilter/nf_flow_table.h void flow_offload_teardown(struct flow_offload *flow); flow 102 include/net/netfilter/nf_flow_table.h static inline void flow_offload_dead(struct flow_offload *flow) flow 104 include/net/netfilter/nf_flow_table.h flow->flags |= FLOW_OFFLOAD_DYING; flow 107 include/net/netfilter/nf_flow_table.h int nf_flow_snat_port(const struct flow_offload *flow, flow 110 include/net/netfilter/nf_flow_table.h int nf_flow_dnat_port(const struct flow_offload *flow, flow 804 include/net/netfilter/nf_tables.h struct nft_flow_rule *flow, flow 1369 include/net/netfilter/nf_tables.h struct nft_flow_rule *flow; flow 1376 include/net/netfilter/nf_tables.h (((struct nft_trans_rule *)trans->data)->flow) flow 66 include/net/netfilter/nf_tables_offload.h void nft_flow_rule_destroy(struct nft_flow_rule *flow); flow 213 include/pcmcia/cistpl.h u_char flow; flow 54 include/uapi/linux/hsi/hsi_char.h __u32 flow; flow 326 include/video/imx-ipu-v3.h struct ipu_dp *ipu_dp_get(struct ipu_soc *ipu, unsigned int flow); flow 195 net/caif/caif_socket.c enum caif_ctrlcmd flow, flow 199 net/caif/caif_socket.c switch (flow) { flow 250 net/caif/caif_socket.c pr_debug("Unexpected flow command %d\n", flow); flow 166 net/caif/chnl_net.c static void chnl_flowctrl_cb(struct cflayer *layr, enum caif_ctrlcmd flow, flow 171 net/caif/chnl_net.c flow == CAIF_CTRLCMD_FLOW_ON_IND ? "ON" : flow 172 net/caif/chnl_net.c flow == CAIF_CTRLCMD_INIT_RSP ? "INIT" : flow 173 net/caif/chnl_net.c flow == CAIF_CTRLCMD_FLOW_OFF_IND ? "OFF" : flow 174 net/caif/chnl_net.c flow == CAIF_CTRLCMD_DEINIT_RSP ? "CLOSE/DEINIT" : flow 175 net/caif/chnl_net.c flow == CAIF_CTRLCMD_INIT_FAIL_RSP ? "OPEN_FAIL" : flow 176 net/caif/chnl_net.c flow == CAIF_CTRLCMD_REMOTE_SHUTDOWN_IND ? flow 181 net/caif/chnl_net.c switch (flow) { flow 2871 net/core/ethtool.c struct ethtool_rx_flow_rule *flow; flow 2874 net/core/ethtool.c flow = kzalloc(sizeof(struct ethtool_rx_flow_rule) + flow 2876 net/core/ethtool.c if (!flow) flow 2880 net/core/ethtool.c flow->rule = flow_rule_alloc(1); flow 2881 net/core/ethtool.c if (!flow->rule) { flow 2882 net/core/ethtool.c kfree(flow); flow 2886 net/core/ethtool.c match = (struct ethtool_rx_flow_match *)flow->priv; flow 2887 net/core/ethtool.c flow->rule->match.dissector = &match->dissector; flow 2888 net/core/ethtool.c flow->rule->match.mask = &match->mask; flow 2889 net/core/ethtool.c flow->rule->match.key = &match->key; flow 3020 net/core/ethtool.c ethtool_rx_flow_rule_destroy(flow); flow 3089 net/core/ethtool.c act = &flow->rule->action.entries[0]; flow 3107 net/core/ethtool.c return flow; flow 3111 net/core/ethtool.c void ethtool_rx_flow_rule_destroy(struct ethtool_rx_flow_rule *flow) flow 3113 net/core/ethtool.c kfree(flow->rule); flow 3114 net/core/ethtool.c kfree(flow); flow 1402 net/core/flow_dissector.c static const void *flow_keys_hash_start(const struct flow_keys *flow) flow 1405 net/core/flow_dissector.c return &flow->FLOW_KEYS_HASH_START_FIELD; flow 1408 net/core/flow_dissector.c static inline size_t flow_keys_hash_length(const struct flow_keys *flow) flow 1410 net/core/flow_dissector.c size_t diff = FLOW_KEYS_HASH_OFFSET + sizeof(flow->addrs); flow 1411 net/core/flow_dissector.c BUILD_BUG_ON(offsetof(typeof(*flow), addrs) != flow 1412 net/core/flow_dissector.c sizeof(*flow) - sizeof(flow->addrs)); flow 1414 net/core/flow_dissector.c switch (flow->control.addr_type) { flow 1416 net/core/flow_dissector.c diff -= sizeof(flow->addrs.v4addrs); flow 1419 net/core/flow_dissector.c diff -= sizeof(flow->addrs.v6addrs); flow 1422 net/core/flow_dissector.c diff -= sizeof(flow->addrs.tipckey); flow 1425 net/core/flow_dissector.c return sizeof(*flow) - diff; flow 1428 net/core/flow_dissector.c __be32 flow_get_u32_src(const struct flow_keys *flow) flow 1430 net/core/flow_dissector.c switch (flow->control.addr_type) { flow 1432 net/core/flow_dissector.c return flow->addrs.v4addrs.src; flow 1435 net/core/flow_dissector.c &flow->addrs.v6addrs.src); flow 1437 net/core/flow_dissector.c return flow->addrs.tipckey.key; flow 1444 net/core/flow_dissector.c __be32 flow_get_u32_dst(const struct flow_keys *flow) flow 1446 net/core/flow_dissector.c switch (flow->control.addr_type) { flow 1448 net/core/flow_dissector.c return flow->addrs.v4addrs.dst; flow 1451 net/core/flow_dissector.c &flow->addrs.v6addrs.dst); flow 1533 net/core/flow_dissector.c const struct flow_keys *flow) flow 1542 net/core/flow_dissector.c data->n_proto = flow->basic.n_proto; flow 1543 net/core/flow_dissector.c data->ip_proto = flow->basic.ip_proto; flow 1544 net/core/flow_dissector.c data->ports = flow->ports.ports; flow 1545 net/core/flow_dissector.c data->src = flow->addrs.v4addrs.src; flow 1546 net/core/flow_dissector.c data->dst = flow->addrs.v4addrs.dst; flow 2200 net/core/pktgen.c static inline int f_seen(const struct pktgen_dev *pkt_dev, int flow) flow 2202 net/core/pktgen.c return !!(pkt_dev->flows[flow].flags & F_INIT); flow 2207 net/core/pktgen.c int flow = pkt_dev->curfl; flow 2210 net/core/pktgen.c if (pkt_dev->flows[flow].count >= pkt_dev->lflow) { flow 2212 net/core/pktgen.c pkt_dev->flows[flow].count = 0; flow 2213 net/core/pktgen.c pkt_dev->flows[flow].flags = 0; flow 2219 net/core/pktgen.c flow = prandom_u32() % pkt_dev->cflows; flow 2220 net/core/pktgen.c pkt_dev->curfl = flow; flow 2222 net/core/pktgen.c if (pkt_dev->flows[flow].count > pkt_dev->lflow) { flow 2223 net/core/pktgen.c pkt_dev->flows[flow].count = 0; flow 2224 net/core/pktgen.c pkt_dev->flows[flow].flags = 0; flow 2237 net/core/pktgen.c static void get_ipsec_sa(struct pktgen_dev *pkt_dev, int flow) flow 2239 net/core/pktgen.c struct xfrm_state *x = pkt_dev->flows[flow].x; flow 2258 net/core/pktgen.c pkt_dev->flows[flow].x = x; flow 2296 net/core/pktgen.c int flow = 0; flow 2299 net/core/pktgen.c flow = f_pick(pkt_dev); flow 2415 net/core/pktgen.c if (pkt_dev->cflows && f_seen(pkt_dev, flow)) { flow 2416 net/core/pktgen.c pkt_dev->cur_daddr = pkt_dev->flows[flow].cur_daddr; flow 2445 net/core/pktgen.c pkt_dev->flows[flow].flags |= F_INIT; flow 2446 net/core/pktgen.c pkt_dev->flows[flow].cur_daddr = flow 2450 net/core/pktgen.c get_ipsec_sa(pkt_dev, flow); flow 2487 net/core/pktgen.c pkt_dev->flows[flow].count++; flow 58 net/ipv4/netfilter/ipt_rpfilter.c struct flowi4 flow; flow 74 net/ipv4/netfilter/ipt_rpfilter.c memset(&flow, 0, sizeof(flow)); flow 75 net/ipv4/netfilter/ipt_rpfilter.c flow.flowi4_iif = LOOPBACK_IFINDEX; flow 76 net/ipv4/netfilter/ipt_rpfilter.c flow.daddr = iph->saddr; flow 77 net/ipv4/netfilter/ipt_rpfilter.c flow.saddr = rpfilter_get_saddr(iph->daddr); flow 78 net/ipv4/netfilter/ipt_rpfilter.c flow.flowi4_mark = info->flags & XT_RPFILTER_VALID_MARK ? skb->mark : 0; flow 79 net/ipv4/netfilter/ipt_rpfilter.c flow.flowi4_tos = RT_TOS(iph->tos); flow 80 net/ipv4/netfilter/ipt_rpfilter.c flow.flowi4_scope = RT_SCOPE_UNIVERSE; flow 81 net/ipv4/netfilter/ipt_rpfilter.c flow.flowi4_oif = l3mdev_master_ifindex_rcu(xt_in(par)); flow 83 net/ipv4/netfilter/ipt_rpfilter.c return rpfilter_lookup_reverse(xt_net(par), &flow, xt_in(par), info->flags) ^ invert; flow 1311 net/mac80211/tx.c struct fq_flow *flow; flow 1318 net/mac80211/tx.c flow = &txqi->def_flow; flow 1320 net/mac80211/tx.c flow = &fq->flows[cvars - local->cvars]; flow 1322 net/mac80211/tx.c return fq_flow_dequeue(fq, flow); flow 1341 net/mac80211/tx.c struct fq_flow *flow) flow 1361 net/mac80211/tx.c if (flow == &txqi->def_flow) flow 1364 net/mac80211/tx.c cvars = &local->cvars[flow - fq->flows]; flow 1367 net/mac80211/tx.c &flow->backlog, flow 1379 net/mac80211/tx.c struct fq_flow *flow, flow 1417 net/mac80211/tx.c struct fq_flow *flow, struct sk_buff *skb, flow 3234 net/mac80211/tx.c struct fq_flow *flow; flow 3282 net/mac80211/tx.c flow = fq_flow_classify(fq, tin, flow_idx, skb, flow 3284 net/mac80211/tx.c head = skb_peek_tail(&flow->queue); flow 3348 net/mac80211/tx.c flow->backlog += head->len - orig_len; flow 3351 net/mac80211/tx.c fq_recalc_backlog(fq, tin, flow); flow 55 net/netfilter/nf_dup_netdev.c struct nft_flow_rule *flow, flow 66 net/netfilter/nf_dup_netdev.c entry = &flow->rule->action.entries[ctx->num_actions++]; flow 18 net/netfilter/nf_flow_table_core.c struct flow_offload flow; flow 27 net/netfilter/nf_flow_table_core.c flow_offload_fill_dir(struct flow_offload *flow, struct nf_conn *ct, flow 31 net/netfilter/nf_flow_table_core.c struct flow_offload_tuple *ft = &flow->tuplehash[dir].tuple; flow 64 net/netfilter/nf_flow_table_core.c struct flow_offload *flow; flow 74 net/netfilter/nf_flow_table_core.c flow = &entry->flow; flow 84 net/netfilter/nf_flow_table_core.c flow_offload_fill_dir(flow, ct, route, FLOW_OFFLOAD_DIR_ORIGINAL); flow 85 net/netfilter/nf_flow_table_core.c flow_offload_fill_dir(flow, ct, route, FLOW_OFFLOAD_DIR_REPLY); flow 88 net/netfilter/nf_flow_table_core.c flow->flags |= FLOW_OFFLOAD_SNAT; flow 90 net/netfilter/nf_flow_table_core.c flow->flags |= FLOW_OFFLOAD_DNAT; flow 92 net/netfilter/nf_flow_table_core.c return flow; flow 153 net/netfilter/nf_flow_table_core.c void flow_offload_free(struct flow_offload *flow) flow 157 net/netfilter/nf_flow_table_core.c dst_release(flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple.dst_cache); flow 158 net/netfilter/nf_flow_table_core.c dst_release(flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple.dst_cache); flow 159 net/netfilter/nf_flow_table_core.c e = container_of(flow, struct flow_offload_entry, flow); flow 160 net/netfilter/nf_flow_table_core.c if (flow->flags & FLOW_OFFLOAD_DYING) flow 201 net/netfilter/nf_flow_table_core.c int flow_offload_add(struct nf_flowtable *flow_table, struct flow_offload *flow) flow 205 net/netfilter/nf_flow_table_core.c flow->timeout = (u32)jiffies + NF_FLOW_TIMEOUT; flow 208 net/netfilter/nf_flow_table_core.c &flow->tuplehash[0].node, flow 214 net/netfilter/nf_flow_table_core.c &flow->tuplehash[1].node, flow 218 net/netfilter/nf_flow_table_core.c &flow->tuplehash[0].node, flow 227 net/netfilter/nf_flow_table_core.c static inline bool nf_flow_has_expired(const struct flow_offload *flow) flow 229 net/netfilter/nf_flow_table_core.c return nf_flow_timeout_delta(flow->timeout) <= 0; flow 233 net/netfilter/nf_flow_table_core.c struct flow_offload *flow) flow 238 net/netfilter/nf_flow_table_core.c &flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].node, flow 241 net/netfilter/nf_flow_table_core.c &flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].node, flow 244 net/netfilter/nf_flow_table_core.c e = container_of(flow, struct flow_offload_entry, flow); flow 247 net/netfilter/nf_flow_table_core.c if (nf_flow_has_expired(flow)) flow 249 net/netfilter/nf_flow_table_core.c else if (flow->flags & FLOW_OFFLOAD_TEARDOWN) flow 252 net/netfilter/nf_flow_table_core.c flow_offload_free(flow); flow 255 net/netfilter/nf_flow_table_core.c void flow_offload_teardown(struct flow_offload *flow) flow 259 net/netfilter/nf_flow_table_core.c flow->flags |= FLOW_OFFLOAD_TEARDOWN; flow 261 net/netfilter/nf_flow_table_core.c e = container_of(flow, struct flow_offload_entry, flow); flow 271 net/netfilter/nf_flow_table_core.c struct flow_offload *flow; flow 281 net/netfilter/nf_flow_table_core.c flow = container_of(tuplehash, struct flow_offload, tuplehash[dir]); flow 282 net/netfilter/nf_flow_table_core.c if (flow->flags & (FLOW_OFFLOAD_DYING | FLOW_OFFLOAD_TEARDOWN)) flow 285 net/netfilter/nf_flow_table_core.c e = container_of(flow, struct flow_offload_entry, flow); flow 295 net/netfilter/nf_flow_table_core.c void (*iter)(struct flow_offload *flow, void *data), flow 300 net/netfilter/nf_flow_table_core.c struct flow_offload *flow; flow 317 net/netfilter/nf_flow_table_core.c flow = container_of(tuplehash, struct flow_offload, tuplehash[0]); flow 319 net/netfilter/nf_flow_table_core.c iter(flow, data); flow 327 net/netfilter/nf_flow_table_core.c static void nf_flow_offload_gc_step(struct flow_offload *flow, void *data) flow 332 net/netfilter/nf_flow_table_core.c e = container_of(flow, struct flow_offload_entry, flow); flow 333 net/netfilter/nf_flow_table_core.c if (nf_flow_has_expired(flow) || nf_ct_is_dying(e->ct) || flow 334 net/netfilter/nf_flow_table_core.c (flow->flags & (FLOW_OFFLOAD_DYING | FLOW_OFFLOAD_TEARDOWN))) flow 335 net/netfilter/nf_flow_table_core.c flow_offload_del(flow_table, flow); flow 399 net/netfilter/nf_flow_table_core.c int nf_flow_snat_port(const struct flow_offload *flow, flow 415 net/netfilter/nf_flow_table_core.c new_port = flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple.dst_port; flow 420 net/netfilter/nf_flow_table_core.c new_port = flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple.src_port; flow 431 net/netfilter/nf_flow_table_core.c int nf_flow_dnat_port(const struct flow_offload *flow, flow 447 net/netfilter/nf_flow_table_core.c new_port = flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple.src_port; flow 452 net/netfilter/nf_flow_table_core.c new_port = flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple.dst_port; flow 485 net/netfilter/nf_flow_table_core.c static void nf_flow_table_do_cleanup(struct flow_offload *flow, void *data) flow 490 net/netfilter/nf_flow_table_core.c e = container_of(flow, struct flow_offload_entry, flow); flow 493 net/netfilter/nf_flow_table_core.c flow_offload_teardown(flow); flow 497 net/netfilter/nf_flow_table_core.c (flow->tuplehash[0].tuple.iifidx == dev->ifindex || flow 498 net/netfilter/nf_flow_table_core.c flow->tuplehash[1].tuple.iifidx == dev->ifindex)) flow 499 net/netfilter/nf_flow_table_core.c flow_offload_dead(flow); flow 19 net/netfilter/nf_flow_table_ip.c static int nf_flow_state_check(struct flow_offload *flow, int proto, flow 32 net/netfilter/nf_flow_table_ip.c flow_offload_teardown(flow); flow 92 net/netfilter/nf_flow_table_ip.c static int nf_flow_snat_ip(const struct flow_offload *flow, struct sk_buff *skb, flow 101 net/netfilter/nf_flow_table_ip.c new_addr = flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple.dst_v4.s_addr; flow 106 net/netfilter/nf_flow_table_ip.c new_addr = flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple.src_v4.s_addr; flow 117 net/netfilter/nf_flow_table_ip.c static int nf_flow_dnat_ip(const struct flow_offload *flow, struct sk_buff *skb, flow 126 net/netfilter/nf_flow_table_ip.c new_addr = flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple.src_v4.s_addr; flow 131 net/netfilter/nf_flow_table_ip.c new_addr = flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple.dst_v4.s_addr; flow 142 net/netfilter/nf_flow_table_ip.c static int nf_flow_nat_ip(const struct flow_offload *flow, struct sk_buff *skb, flow 147 net/netfilter/nf_flow_table_ip.c if (flow->flags & FLOW_OFFLOAD_SNAT && flow 148 net/netfilter/nf_flow_table_ip.c (nf_flow_snat_port(flow, skb, thoff, iph->protocol, dir) < 0 || flow 149 net/netfilter/nf_flow_table_ip.c nf_flow_snat_ip(flow, skb, iph, thoff, dir) < 0)) flow 151 net/netfilter/nf_flow_table_ip.c if (flow->flags & FLOW_OFFLOAD_DNAT && flow 152 net/netfilter/nf_flow_table_ip.c (nf_flow_dnat_port(flow, skb, thoff, iph->protocol, dir) < 0 || flow 153 net/netfilter/nf_flow_table_ip.c nf_flow_dnat_ip(flow, skb, iph, thoff, dir) < 0)) flow 244 net/netfilter/nf_flow_table_ip.c struct flow_offload *flow; flow 262 net/netfilter/nf_flow_table_ip.c flow = container_of(tuplehash, struct flow_offload, tuplehash[dir]); flow 263 net/netfilter/nf_flow_table_ip.c rt = (struct rtable *)flow->tuplehash[dir].tuple.dst_cache; flow 266 net/netfilter/nf_flow_table_ip.c if (unlikely(nf_flow_exceeds_mtu(skb, flow->tuplehash[dir].tuple.mtu))) flow 273 net/netfilter/nf_flow_table_ip.c if (nf_flow_state_check(flow, ip_hdr(skb)->protocol, skb, thoff)) flow 277 net/netfilter/nf_flow_table_ip.c flow_offload_teardown(flow); flow 281 net/netfilter/nf_flow_table_ip.c if (nf_flow_nat_ip(flow, skb, thoff, dir) < 0) flow 284 net/netfilter/nf_flow_table_ip.c flow->timeout = (u32)jiffies + NF_FLOW_TIMEOUT; flow 297 net/netfilter/nf_flow_table_ip.c nexthop = rt_nexthop(rt, flow->tuplehash[!dir].tuple.src_v4.s_addr); flow 361 net/netfilter/nf_flow_table_ip.c static int nf_flow_snat_ipv6(const struct flow_offload *flow, flow 371 net/netfilter/nf_flow_table_ip.c new_addr = flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple.dst_v6; flow 376 net/netfilter/nf_flow_table_ip.c new_addr = flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple.src_v6; flow 386 net/netfilter/nf_flow_table_ip.c static int nf_flow_dnat_ipv6(const struct flow_offload *flow, flow 396 net/netfilter/nf_flow_table_ip.c new_addr = flow->tuplehash[FLOW_OFFLOAD_DIR_REPLY].tuple.src_v6; flow 401 net/netfilter/nf_flow_table_ip.c new_addr = flow->tuplehash[FLOW_OFFLOAD_DIR_ORIGINAL].tuple.dst_v6; flow 411 net/netfilter/nf_flow_table_ip.c static int nf_flow_nat_ipv6(const struct flow_offload *flow, flow 418 net/netfilter/nf_flow_table_ip.c if (flow->flags & FLOW_OFFLOAD_SNAT && flow 419 net/netfilter/nf_flow_table_ip.c (nf_flow_snat_port(flow, skb, thoff, ip6h->nexthdr, dir) < 0 || flow 420 net/netfilter/nf_flow_table_ip.c nf_flow_snat_ipv6(flow, skb, ip6h, thoff, dir) < 0)) flow 422 net/netfilter/nf_flow_table_ip.c if (flow->flags & FLOW_OFFLOAD_DNAT && flow 423 net/netfilter/nf_flow_table_ip.c (nf_flow_dnat_port(flow, skb, thoff, ip6h->nexthdr, dir) < 0 || flow 424 net/netfilter/nf_flow_table_ip.c nf_flow_dnat_ipv6(flow, skb, ip6h, thoff, dir) < 0)) flow 476 net/netfilter/nf_flow_table_ip.c struct flow_offload *flow; flow 492 net/netfilter/nf_flow_table_ip.c flow = container_of(tuplehash, struct flow_offload, tuplehash[dir]); flow 493 net/netfilter/nf_flow_table_ip.c rt = (struct rt6_info *)flow->tuplehash[dir].tuple.dst_cache; flow 496 net/netfilter/nf_flow_table_ip.c if (unlikely(nf_flow_exceeds_mtu(skb, flow->tuplehash[dir].tuple.mtu))) flow 499 net/netfilter/nf_flow_table_ip.c if (nf_flow_state_check(flow, ipv6_hdr(skb)->nexthdr, skb, flow 504 net/netfilter/nf_flow_table_ip.c flow_offload_teardown(flow); flow 511 net/netfilter/nf_flow_table_ip.c if (nf_flow_nat_ipv6(flow, skb, dir) < 0) flow 514 net/netfilter/nf_flow_table_ip.c flow->timeout = (u32)jiffies + NF_FLOW_TIMEOUT; flow 527 net/netfilter/nf_flow_table_ip.c nexthop = rt6_nexthop(rt, &flow->tuplehash[!dir].tuple.src_v6); flow 2723 net/netfilter/nf_tables_api.c struct nft_flow_rule *flow; flow 2895 net/netfilter/nf_tables_api.c flow = nft_flow_rule_create(net, rule); flow 2896 net/netfilter/nf_tables_api.c if (IS_ERR(flow)) flow 2897 net/netfilter/nf_tables_api.c return PTR_ERR(flow); flow 2899 net/netfilter/nf_tables_api.c nft_trans_flow_rule(trans) = flow; flow 12 net/netfilter/nf_tables_offload.c struct nft_flow_rule *flow; flow 14 net/netfilter/nf_tables_offload.c flow = kzalloc(sizeof(struct nft_flow_rule), GFP_KERNEL); flow 15 net/netfilter/nf_tables_offload.c if (!flow) flow 18 net/netfilter/nf_tables_offload.c flow->rule = flow_rule_alloc(num_actions); flow 19 net/netfilter/nf_tables_offload.c if (!flow->rule) { flow 20 net/netfilter/nf_tables_offload.c kfree(flow); flow 24 net/netfilter/nf_tables_offload.c flow->rule->match.dissector = &flow->match.dissector; flow 25 net/netfilter/nf_tables_offload.c flow->rule->match.mask = &flow->match.mask; flow 26 net/netfilter/nf_tables_offload.c flow->rule->match.key = &flow->match.key; flow 28 net/netfilter/nf_tables_offload.c return flow; flow 35 net/netfilter/nf_tables_offload.c struct nft_flow_rule *flow; flow 50 net/netfilter/nf_tables_offload.c flow = nft_flow_rule_alloc(num_actions); flow 51 net/netfilter/nf_tables_offload.c if (!flow) flow 69 net/netfilter/nf_tables_offload.c err = expr->ops->offload(ctx, flow, expr); flow 75 net/netfilter/nf_tables_offload.c flow->proto = ctx->dep.l3num; flow 78 net/netfilter/nf_tables_offload.c return flow; flow 81 net/netfilter/nf_tables_offload.c nft_flow_rule_destroy(flow); flow 86 net/netfilter/nf_tables_offload.c void nft_flow_rule_destroy(struct nft_flow_rule *flow) flow 91 net/netfilter/nf_tables_offload.c flow_action_for_each(i, entry, &flow->rule->action) { flow 101 net/netfilter/nf_tables_offload.c kfree(flow->rule); flow 102 net/netfilter/nf_tables_offload.c kfree(flow); flow 163 net/netfilter/nf_tables_offload.c struct nft_flow_rule *flow, flow 176 net/netfilter/nf_tables_offload.c if (flow) flow 177 net/netfilter/nf_tables_offload.c proto = flow->proto; flow 183 net/netfilter/nf_tables_offload.c if (flow) flow 184 net/netfilter/nf_tables_offload.c cls_flow.rule = flow->rule; flow 133 net/netfilter/nft_bitwise.c struct nft_flow_rule *flow, flow 118 net/netfilter/nft_cmp.c struct nft_flow_rule *flow, flow 122 net/netfilter/nft_cmp.c u8 *mask = (u8 *)&flow->match.mask; flow 123 net/netfilter/nft_cmp.c u8 *key = (u8 *)&flow->match.key; flow 131 net/netfilter/nft_cmp.c flow->match.dissector.used_keys |= BIT(reg->key); flow 132 net/netfilter/nft_cmp.c flow->match.dissector.offset[reg->key] = reg->base_offset; flow 140 net/netfilter/nft_cmp.c struct nft_flow_rule *flow, flow 145 net/netfilter/nft_cmp.c return __nft_cmp_offload(ctx, flow, priv); flow 186 net/netfilter/nft_cmp.c struct nft_flow_rule *flow, flow 201 net/netfilter/nft_cmp.c return __nft_cmp_offload(ctx, flow, &cmp); flow 61 net/netfilter/nft_dup_netdev.c struct nft_flow_rule *flow, flow 67 net/netfilter/nft_dup_netdev.c return nft_fwd_dup_netdev_offload(ctx, flow, FLOW_ACTION_MIRRED, oif); flow 79 net/netfilter/nft_flow_offload.c struct flow_offload *flow; flow 118 net/netfilter/nft_flow_offload.c flow = flow_offload_alloc(ct, &route); flow 119 net/netfilter/nft_flow_offload.c if (!flow) flow 127 net/netfilter/nft_flow_offload.c ret = flow_offload_add(flowtable, flow); flow 135 net/netfilter/nft_flow_offload.c flow_offload_free(flow); flow 71 net/netfilter/nft_fwd_netdev.c struct nft_flow_rule *flow, flow 77 net/netfilter/nft_fwd_netdev.c return nft_fwd_dup_netdev_offload(ctx, flow, FLOW_ACTION_REDIRECT, oif); flow 129 net/netfilter/nft_immediate.c struct nft_flow_rule *flow, flow 135 net/netfilter/nft_immediate.c entry = &flow->rule->action.entries[ctx->num_actions++]; flow 153 net/netfilter/nft_immediate.c struct nft_flow_rule *flow, flow 159 net/netfilter/nft_immediate.c return nft_immediate_offload_verdict(ctx, flow, priv); flow 533 net/netfilter/nft_meta.c struct nft_flow_rule *flow, flow 158 net/netfilter/nft_payload.c struct nft_flow_rule *flow, flow 186 net/netfilter/nft_payload.c struct nft_flow_rule *flow, flow 222 net/netfilter/nft_payload.c struct nft_flow_rule *flow, flow 258 net/netfilter/nft_payload.c struct nft_flow_rule *flow, flow 265 net/netfilter/nft_payload.c err = nft_payload_offload_ip(ctx, flow, priv); flow 268 net/netfilter/nft_payload.c err = nft_payload_offload_ip6(ctx, flow, priv); flow 278 net/netfilter/nft_payload.c struct nft_flow_rule *flow, flow 306 net/netfilter/nft_payload.c struct nft_flow_rule *flow, flow 334 net/netfilter/nft_payload.c struct nft_flow_rule *flow, flow 341 net/netfilter/nft_payload.c err = nft_payload_offload_tcp(ctx, flow, priv); flow 344 net/netfilter/nft_payload.c err = nft_payload_offload_udp(ctx, flow, priv); flow 354 net/netfilter/nft_payload.c struct nft_flow_rule *flow, flow 362 net/netfilter/nft_payload.c err = nft_payload_offload_ll(ctx, flow, priv); flow 365 net/netfilter/nft_payload.c err = nft_payload_offload_nh(ctx, flow, priv); flow 368 net/netfilter/nft_payload.c err = nft_payload_offload_th(ctx, flow, priv); flow 36 net/netfilter/xt_addrtype.c struct flowi6 flow; flow 41 net/netfilter/xt_addrtype.c memset(&flow, 0, sizeof(flow)); flow 42 net/netfilter/xt_addrtype.c flow.daddr = *addr; flow 44 net/netfilter/xt_addrtype.c flow.flowi6_oif = dev->ifindex; flow 52 net/netfilter/xt_addrtype.c flowi6_to_flowi(&flow), false); flow 220 net/openvswitch/datapath.c struct sw_flow *flow; flow 230 net/openvswitch/datapath.c flow = ovs_flow_tbl_lookup_stats(&dp->table, key, &n_mask_hit); flow 231 net/openvswitch/datapath.c if (unlikely(!flow)) { flow 247 net/openvswitch/datapath.c ovs_flow_stats_update(flow, key->tp.flags, skb); flow 248 net/openvswitch/datapath.c sf_acts = rcu_dereference(flow->sf_acts); flow 540 net/openvswitch/datapath.c struct sw_flow *flow; flow 571 net/openvswitch/datapath.c flow = ovs_flow_alloc(); flow 572 net/openvswitch/datapath.c err = PTR_ERR(flow); flow 573 net/openvswitch/datapath.c if (IS_ERR(flow)) flow 577 net/openvswitch/datapath.c packet, &flow->key, log); flow 582 net/openvswitch/datapath.c &flow->key, &acts, log); flow 586 net/openvswitch/datapath.c rcu_assign_pointer(flow->sf_acts, acts); flow 587 net/openvswitch/datapath.c packet->priority = flow->key.phy.priority; flow 588 net/openvswitch/datapath.c packet->mark = flow->key.phy.skb_mark; flow 596 net/openvswitch/datapath.c input_vport = ovs_vport_rcu(dp, flow->key.phy.in_port); flow 605 net/openvswitch/datapath.c sf_acts = rcu_dereference(flow->sf_acts); flow 608 net/openvswitch/datapath.c err = ovs_execute_actions(dp, packet, sf_acts, &flow->key); flow 612 net/openvswitch/datapath.c ovs_flow_free(flow, false); flow 618 net/openvswitch/datapath.c ovs_flow_free(flow, false); flow 734 net/openvswitch/datapath.c static int ovs_flow_cmd_fill_stats(const struct sw_flow *flow, flow 741 net/openvswitch/datapath.c ovs_flow_stats_get(flow, &stats, &used, &tcp_flags); flow 762 net/openvswitch/datapath.c static int ovs_flow_cmd_fill_actions(const struct sw_flow *flow, flow 782 net/openvswitch/datapath.c sf_acts = rcu_dereference_ovsl(flow->sf_acts); flow 802 net/openvswitch/datapath.c static int ovs_flow_cmd_fill_info(const struct sw_flow *flow, int dp_ifindex, flow 817 net/openvswitch/datapath.c err = ovs_nla_put_identifier(flow, skb); flow 821 net/openvswitch/datapath.c if (should_fill_key(&flow->id, ufid_flags)) { flow 822 net/openvswitch/datapath.c err = ovs_nla_put_masked_key(flow, skb); flow 828 net/openvswitch/datapath.c err = ovs_nla_put_mask(flow, skb); flow 833 net/openvswitch/datapath.c err = ovs_flow_cmd_fill_stats(flow, skb); flow 838 net/openvswitch/datapath.c err = ovs_flow_cmd_fill_actions(flow, skb, skb_orig_len); flow 873 net/openvswitch/datapath.c static struct sk_buff *ovs_flow_cmd_build_info(const struct sw_flow *flow, flow 881 net/openvswitch/datapath.c skb = ovs_flow_cmd_alloc_info(ovsl_dereference(flow->sf_acts), flow 882 net/openvswitch/datapath.c &flow->id, info, always, ufid_flags); flow 886 net/openvswitch/datapath.c retval = ovs_flow_cmd_fill_info(flow, dp_ifindex, skb, flow 901 net/openvswitch/datapath.c struct sw_flow *flow = NULL, *new_flow; flow 974 net/openvswitch/datapath.c flow = ovs_flow_tbl_lookup_ufid(&dp->table, &new_flow->id); flow 975 net/openvswitch/datapath.c if (!flow) flow 976 net/openvswitch/datapath.c flow = ovs_flow_tbl_lookup(&dp->table, &new_flow->key); flow 977 net/openvswitch/datapath.c if (likely(!flow)) { flow 1014 net/openvswitch/datapath.c if (unlikely(!ovs_flow_cmp(flow, &match))) { flow 1015 net/openvswitch/datapath.c if (ovs_identifier_is_key(&flow->id)) flow 1016 net/openvswitch/datapath.c flow = ovs_flow_tbl_lookup_exact(&dp->table, flow 1019 net/openvswitch/datapath.c flow = NULL; flow 1020 net/openvswitch/datapath.c if (!flow) { flow 1026 net/openvswitch/datapath.c old_acts = ovsl_dereference(flow->sf_acts); flow 1027 net/openvswitch/datapath.c rcu_assign_pointer(flow->sf_acts, acts); flow 1030 net/openvswitch/datapath.c error = ovs_flow_cmd_fill_info(flow, flow 1141 net/openvswitch/datapath.c struct sw_flow *flow; flow 1182 net/openvswitch/datapath.c flow = ovs_flow_tbl_lookup_ufid(&dp->table, &sfid); flow 1184 net/openvswitch/datapath.c flow = ovs_flow_tbl_lookup_exact(&dp->table, &match); flow 1185 net/openvswitch/datapath.c if (unlikely(!flow)) { flow 1192 net/openvswitch/datapath.c old_acts = ovsl_dereference(flow->sf_acts); flow 1193 net/openvswitch/datapath.c rcu_assign_pointer(flow->sf_acts, acts); flow 1196 net/openvswitch/datapath.c error = ovs_flow_cmd_fill_info(flow, flow 1206 net/openvswitch/datapath.c reply = ovs_flow_cmd_build_info(flow, ovs_header->dp_ifindex, flow 1218 net/openvswitch/datapath.c ovs_flow_stats_clear(flow); flow 1244 net/openvswitch/datapath.c struct sw_flow *flow; flow 1274 net/openvswitch/datapath.c flow = ovs_flow_tbl_lookup_ufid(&dp->table, &ufid); flow 1276 net/openvswitch/datapath.c flow = ovs_flow_tbl_lookup_exact(&dp->table, &match); flow 1277 net/openvswitch/datapath.c if (!flow) { flow 1282 net/openvswitch/datapath.c reply = ovs_flow_cmd_build_info(flow, ovs_header->dp_ifindex, info, flow 1303 net/openvswitch/datapath.c struct sw_flow *flow = NULL; flow 1334 net/openvswitch/datapath.c flow = ovs_flow_tbl_lookup_ufid(&dp->table, &ufid); flow 1336 net/openvswitch/datapath.c flow = ovs_flow_tbl_lookup_exact(&dp->table, &match); flow 1337 net/openvswitch/datapath.c if (unlikely(!flow)) { flow 1342 net/openvswitch/datapath.c ovs_flow_tbl_remove(&dp->table, flow); flow 1345 net/openvswitch/datapath.c reply = ovs_flow_cmd_alloc_info((const struct sw_flow_actions __force *) flow->sf_acts, flow 1346 net/openvswitch/datapath.c &flow->id, info, false, ufid_flags); flow 1350 net/openvswitch/datapath.c err = ovs_flow_cmd_fill_info(flow, ovs_header->dp_ifindex, flow 1368 net/openvswitch/datapath.c ovs_flow_free(flow, true); flow 1399 net/openvswitch/datapath.c struct sw_flow *flow; flow 1404 net/openvswitch/datapath.c flow = ovs_flow_tbl_dump_next(ti, &bucket, &obj); flow 1405 net/openvswitch/datapath.c if (!flow) flow 1408 net/openvswitch/datapath.c if (ovs_flow_cmd_fill_info(flow, ovs_header->dp_ifindex, skb, flow 59 net/openvswitch/flow.c void ovs_flow_stats_update(struct sw_flow *flow, __be16 tcp_flags, flow 66 net/openvswitch/flow.c stats = rcu_dereference(flow->stats[cpu]); flow 72 net/openvswitch/flow.c if (cpu == 0 && unlikely(flow->stats_last_writer != cpu)) flow 73 net/openvswitch/flow.c flow->stats_last_writer = cpu; flow 75 net/openvswitch/flow.c stats = rcu_dereference(flow->stats[0]); /* Pre-allocated. */ flow 81 net/openvswitch/flow.c if (unlikely(flow->stats_last_writer != cpu)) { flow 87 net/openvswitch/flow.c if (likely(flow->stats_last_writer != -1) && flow 88 net/openvswitch/flow.c likely(!rcu_access_pointer(flow->stats[cpu]))) { flow 106 net/openvswitch/flow.c rcu_assign_pointer(flow->stats[cpu], flow 108 net/openvswitch/flow.c cpumask_set_cpu(cpu, &flow->cpu_used_mask); flow 112 net/openvswitch/flow.c flow->stats_last_writer = cpu; flow 125 net/openvswitch/flow.c void ovs_flow_stats_get(const struct sw_flow *flow, flow 136 net/openvswitch/flow.c for (cpu = 0; cpu < nr_cpu_ids; cpu = cpumask_next(cpu, &flow->cpu_used_mask)) { flow 137 net/openvswitch/flow.c struct sw_flow_stats *stats = rcu_dereference_ovsl(flow->stats[cpu]); flow 155 net/openvswitch/flow.c void ovs_flow_stats_clear(struct sw_flow *flow) flow 160 net/openvswitch/flow.c for (cpu = 0; cpu < nr_cpu_ids; cpu = cpumask_next(cpu, &flow->cpu_used_mask)) { flow 161 net/openvswitch/flow.c struct sw_flow_stats *stats = ovsl_dereference(flow->stats[cpu]); flow 2229 net/openvswitch/flow_netlink.c int ovs_nla_put_identifier(const struct sw_flow *flow, struct sk_buff *skb) flow 2231 net/openvswitch/flow_netlink.c if (ovs_identifier_is_ufid(&flow->id)) flow 2232 net/openvswitch/flow_netlink.c return nla_put(skb, OVS_FLOW_ATTR_UFID, flow->id.ufid_len, flow 2233 net/openvswitch/flow_netlink.c flow->id.ufid); flow 2235 net/openvswitch/flow_netlink.c return ovs_nla_put_key(flow->id.unmasked_key, flow->id.unmasked_key, flow 2240 net/openvswitch/flow_netlink.c int ovs_nla_put_masked_key(const struct sw_flow *flow, struct sk_buff *skb) flow 2242 net/openvswitch/flow_netlink.c return ovs_nla_put_key(&flow->key, &flow->key, flow 2247 net/openvswitch/flow_netlink.c int ovs_nla_put_mask(const struct sw_flow *flow, struct sk_buff *skb) flow 2249 net/openvswitch/flow_netlink.c return ovs_nla_put_key(&flow->key, &flow->mask->key, flow 41 net/openvswitch/flow_netlink.h int ovs_nla_put_identifier(const struct sw_flow *flow, struct sk_buff *skb); flow 42 net/openvswitch/flow_netlink.h int ovs_nla_put_masked_key(const struct sw_flow *flow, struct sk_buff *skb); flow 43 net/openvswitch/flow_netlink.h int ovs_nla_put_mask(const struct sw_flow *flow, struct sk_buff *skb); flow 68 net/openvswitch/flow_table.c struct sw_flow *flow; flow 71 net/openvswitch/flow_table.c flow = kmem_cache_zalloc(flow_cache, GFP_KERNEL); flow 72 net/openvswitch/flow_table.c if (!flow) flow 75 net/openvswitch/flow_table.c flow->stats_last_writer = -1; flow 86 net/openvswitch/flow_table.c RCU_INIT_POINTER(flow->stats[0], stats); flow 88 net/openvswitch/flow_table.c cpumask_set_cpu(0, &flow->cpu_used_mask); flow 90 net/openvswitch/flow_table.c return flow; flow 92 net/openvswitch/flow_table.c kmem_cache_free(flow_cache, flow); flow 101 net/openvswitch/flow_table.c static void flow_free(struct sw_flow *flow) flow 105 net/openvswitch/flow_table.c if (ovs_identifier_is_key(&flow->id)) flow 106 net/openvswitch/flow_table.c kfree(flow->id.unmasked_key); flow 107 net/openvswitch/flow_table.c if (flow->sf_acts) flow 108 net/openvswitch/flow_table.c ovs_nla_free_flow_actions((struct sw_flow_actions __force *)flow->sf_acts); flow 110 net/openvswitch/flow_table.c for (cpu = 0; cpu < nr_cpu_ids; cpu = cpumask_next(cpu, &flow->cpu_used_mask)) flow 111 net/openvswitch/flow_table.c if (flow->stats[cpu]) flow 113 net/openvswitch/flow_table.c (struct sw_flow_stats __force *)flow->stats[cpu]); flow 114 net/openvswitch/flow_table.c kmem_cache_free(flow_cache, flow); flow 119 net/openvswitch/flow_table.c struct sw_flow *flow = container_of(rcu, struct sw_flow, rcu); flow 121 net/openvswitch/flow_table.c flow_free(flow); flow 124 net/openvswitch/flow_table.c void ovs_flow_free(struct sw_flow *flow, bool deferred) flow 126 net/openvswitch/flow_table.c if (!flow) flow 130 net/openvswitch/flow_table.c call_rcu(&flow->rcu, rcu_free_flow_callback); flow 132 net/openvswitch/flow_table.c flow_free(flow); flow 214 net/openvswitch/flow_table.c struct sw_flow *flow; flow 220 net/openvswitch/flow_table.c hlist_for_each_entry_safe(flow, n, head, flow_table.node[ver]) { flow 221 net/openvswitch/flow_table.c hlist_del_rcu(&flow->flow_table.node[ver]); flow 222 net/openvswitch/flow_table.c if (ovs_identifier_is_ufid(&flow->id)) flow 223 net/openvswitch/flow_table.c hlist_del_rcu(&flow->ufid_table.node[ufid_ver]); flow 224 net/openvswitch/flow_table.c ovs_flow_free(flow, deferred); flow 252 net/openvswitch/flow_table.c struct sw_flow *flow; flow 261 net/openvswitch/flow_table.c hlist_for_each_entry_rcu(flow, head, flow_table.node[ver]) { flow 267 net/openvswitch/flow_table.c return flow; flow 283 net/openvswitch/flow_table.c struct sw_flow *flow) flow 287 net/openvswitch/flow_table.c head = find_bucket(ti, flow->flow_table.hash); flow 288 net/openvswitch/flow_table.c hlist_add_head_rcu(&flow->flow_table.node[ti->node_ver], head); flow 292 net/openvswitch/flow_table.c struct sw_flow *flow) flow 296 net/openvswitch/flow_table.c head = find_bucket(ti, flow->ufid_table.hash); flow 297 net/openvswitch/flow_table.c hlist_add_head_rcu(&flow->ufid_table.node[ti->node_ver], head); flow 311 net/openvswitch/flow_table.c struct sw_flow *flow; flow 315 net/openvswitch/flow_table.c hlist_for_each_entry(flow, head, flow 317 net/openvswitch/flow_table.c ufid_table_instance_insert(new, flow); flow 319 net/openvswitch/flow_table.c hlist_for_each_entry(flow, head, flow 321 net/openvswitch/flow_table.c table_instance_insert(new, flow); flow 408 net/openvswitch/flow_table.c static bool flow_cmp_masked_key(const struct sw_flow *flow, flow 412 net/openvswitch/flow_table.c return cmp_key(&flow->key, key, range->start, range->end); flow 415 net/openvswitch/flow_table.c static bool ovs_flow_cmp_unmasked_key(const struct sw_flow *flow, flow 422 net/openvswitch/flow_table.c BUG_ON(ovs_identifier_is_ufid(&flow->id)); flow 423 net/openvswitch/flow_table.c return cmp_key(flow->id.unmasked_key, key, key_start, key_end); flow 430 net/openvswitch/flow_table.c struct sw_flow *flow; flow 438 net/openvswitch/flow_table.c hlist_for_each_entry_rcu(flow, head, flow_table.node[ti->node_ver]) { flow 439 net/openvswitch/flow_table.c if (flow->mask == mask && flow->flow_table.hash == hash && flow 440 net/openvswitch/flow_table.c flow_cmp_masked_key(flow, &masked_key, &mask->range)) flow 441 net/openvswitch/flow_table.c return flow; flow 452 net/openvswitch/flow_table.c struct sw_flow *flow; flow 457 net/openvswitch/flow_table.c flow = masked_flow_lookup(ti, key, mask); flow 458 net/openvswitch/flow_table.c if (flow) /* Found */ flow 459 net/openvswitch/flow_table.c return flow; flow 477 net/openvswitch/flow_table.c struct sw_flow *flow; flow 481 net/openvswitch/flow_table.c flow = masked_flow_lookup(ti, match->key, mask); flow 482 net/openvswitch/flow_table.c if (flow && ovs_identifier_is_key(&flow->id) && flow 483 net/openvswitch/flow_table.c ovs_flow_cmp_unmasked_key(flow, match)) flow 484 net/openvswitch/flow_table.c return flow; flow 494 net/openvswitch/flow_table.c static bool ovs_flow_cmp_ufid(const struct sw_flow *flow, flow 497 net/openvswitch/flow_table.c if (flow->id.ufid_len != sfid->ufid_len) flow 500 net/openvswitch/flow_table.c return !memcmp(flow->id.ufid, sfid->ufid, sfid->ufid_len); flow 503 net/openvswitch/flow_table.c bool ovs_flow_cmp(const struct sw_flow *flow, const struct sw_flow_match *match) flow 505 net/openvswitch/flow_table.c if (ovs_identifier_is_ufid(&flow->id)) flow 506 net/openvswitch/flow_table.c return flow_cmp_masked_key(flow, match->key, &match->range); flow 508 net/openvswitch/flow_table.c return ovs_flow_cmp_unmasked_key(flow, match); flow 515 net/openvswitch/flow_table.c struct sw_flow *flow; flow 521 net/openvswitch/flow_table.c hlist_for_each_entry_rcu(flow, head, ufid_table.node[ti->node_ver]) { flow 522 net/openvswitch/flow_table.c if (flow->ufid_table.hash == hash && flow 523 net/openvswitch/flow_table.c ovs_flow_cmp_ufid(flow, ufid)) flow 524 net/openvswitch/flow_table.c return flow; flow 565 net/openvswitch/flow_table.c void ovs_flow_tbl_remove(struct flow_table *table, struct sw_flow *flow) flow 571 net/openvswitch/flow_table.c hlist_del_rcu(&flow->flow_table.node[ti->node_ver]); flow 573 net/openvswitch/flow_table.c if (ovs_identifier_is_ufid(&flow->id)) { flow 574 net/openvswitch/flow_table.c hlist_del_rcu(&flow->ufid_table.node[ufid_ti->node_ver]); flow 581 net/openvswitch/flow_table.c flow_mask_remove(table, flow->mask); flow 622 net/openvswitch/flow_table.c static int flow_mask_insert(struct flow_table *tbl, struct sw_flow *flow, flow 640 net/openvswitch/flow_table.c flow->mask = mask; flow 645 net/openvswitch/flow_table.c static void flow_key_insert(struct flow_table *table, struct sw_flow *flow) flow 650 net/openvswitch/flow_table.c flow->flow_table.hash = flow_hash(&flow->key, &flow->mask->range); flow 652 net/openvswitch/flow_table.c table_instance_insert(ti, flow); flow 669 net/openvswitch/flow_table.c static void flow_ufid_insert(struct flow_table *table, struct sw_flow *flow) flow 673 net/openvswitch/flow_table.c flow->ufid_table.hash = ufid_hash(&flow->id); flow 675 net/openvswitch/flow_table.c ufid_table_instance_insert(ti, flow); flow 691 net/openvswitch/flow_table.c int ovs_flow_tbl_insert(struct flow_table *table, struct sw_flow *flow, flow 696 net/openvswitch/flow_table.c err = flow_mask_insert(table, flow, mask); flow 699 net/openvswitch/flow_table.c flow_key_insert(table, flow); flow 700 net/openvswitch/flow_table.c if (ovs_identifier_is_ufid(&flow->id)) flow 701 net/openvswitch/flow_table.c flow_ufid_insert(table, flow); flow 56 net/openvswitch/flow_table.h int ovs_flow_tbl_insert(struct flow_table *table, struct sw_flow *flow, flow 58 net/openvswitch/flow_table.h void ovs_flow_tbl_remove(struct flow_table *table, struct sw_flow *flow); flow 66 net/sched/cls_flow.c static u32 flow_get_src(const struct sk_buff *skb, const struct flow_keys *flow) flow 68 net/sched/cls_flow.c __be32 src = flow_get_u32_src(flow); flow 76 net/sched/cls_flow.c static u32 flow_get_dst(const struct sk_buff *skb, const struct flow_keys *flow) flow 78 net/sched/cls_flow.c __be32 dst = flow_get_u32_dst(flow); flow 87 net/sched/cls_flow.c const struct flow_keys *flow) flow 89 net/sched/cls_flow.c return flow->basic.ip_proto; flow 93 net/sched/cls_flow.c const struct flow_keys *flow) flow 95 net/sched/cls_flow.c if (flow->ports.ports) flow 96 net/sched/cls_flow.c return ntohs(flow->ports.src); flow 102 net/sched/cls_flow.c const struct flow_keys *flow) flow 104 net/sched/cls_flow.c if (flow->ports.ports) flow 105 net/sched/cls_flow.c return ntohs(flow->ports.dst); flow 152 net/sched/cls_flow.c const struct flow_keys *flow) flow 161 net/sched/cls_flow.c return flow_get_src(skb, flow); flow 165 net/sched/cls_flow.c const struct flow_keys *flow) flow 174 net/sched/cls_flow.c return flow_get_dst(skb, flow); flow 178 net/sched/cls_flow.c const struct flow_keys *flow) flow 182 net/sched/cls_flow.c return flow_get_proto_src(skb, flow); flow 186 net/sched/cls_flow.c const struct flow_keys *flow) flow 190 net/sched/cls_flow.c return flow_get_proto_dst(skb, flow); flow 240 net/sched/cls_flow.c static u32 flow_key_get(struct sk_buff *skb, int key, struct flow_keys *flow) flow 244 net/sched/cls_flow.c return flow_get_src(skb, flow); flow 246 net/sched/cls_flow.c return flow_get_dst(skb, flow); flow 248 net/sched/cls_flow.c return flow_get_proto(skb, flow); flow 250 net/sched/cls_flow.c return flow_get_proto_src(skb, flow); flow 252 net/sched/cls_flow.c return flow_get_proto_dst(skb, flow); flow 262 net/sched/cls_flow.c return flow_get_nfct_src(skb, flow); flow 264 net/sched/cls_flow.c return flow_get_nfct_dst(skb, flow); flow 266 net/sched/cls_flow.c return flow_get_nfct_proto_src(skb, flow); flow 268 net/sched/cls_flow.c return flow_get_nfct_proto_dst(skb, flow); flow 76 net/sched/sch_atm.c struct atm_flow_data *flow; flow 78 net/sched/sch_atm.c list_for_each_entry(flow, &p->flows, list) { flow 79 net/sched/sch_atm.c if (flow->common.classid == classid) flow 80 net/sched/sch_atm.c return flow; flow 90 net/sched/sch_atm.c struct atm_flow_data *flow = (struct atm_flow_data *)arg; flow 93 net/sched/sch_atm.c sch, p, flow, new, old); flow 94 net/sched/sch_atm.c if (list_empty(&flow->list)) flow 98 net/sched/sch_atm.c *old = flow->q; flow 99 net/sched/sch_atm.c flow->q = new; flow 107 net/sched/sch_atm.c struct atm_flow_data *flow = (struct atm_flow_data *)cl; flow 109 net/sched/sch_atm.c pr_debug("atm_tc_leaf(sch %p,flow %p)\n", sch, flow); flow 110 net/sched/sch_atm.c return flow ? flow->q : NULL; flow 116 net/sched/sch_atm.c struct atm_flow_data *flow; flow 119 net/sched/sch_atm.c flow = lookup_flow(sch, classid); flow 120 net/sched/sch_atm.c pr_debug("%s: flow %p\n", __func__, flow); flow 121 net/sched/sch_atm.c return (unsigned long)flow; flow 128 net/sched/sch_atm.c struct atm_flow_data *flow; flow 131 net/sched/sch_atm.c flow = lookup_flow(sch, classid); flow 132 net/sched/sch_atm.c if (flow) flow 133 net/sched/sch_atm.c flow->ref++; flow 134 net/sched/sch_atm.c pr_debug("%s: flow %p\n", __func__, flow); flow 135 net/sched/sch_atm.c return (unsigned long)flow; flow 146 net/sched/sch_atm.c struct atm_flow_data *flow = (struct atm_flow_data *)cl; flow 148 net/sched/sch_atm.c pr_debug("atm_tc_put(sch %p,[qdisc %p],flow %p)\n", sch, p, flow); flow 149 net/sched/sch_atm.c if (--flow->ref) flow 152 net/sched/sch_atm.c list_del_init(&flow->list); flow 153 net/sched/sch_atm.c pr_debug("atm_tc_put: qdisc %p\n", flow->q); flow 154 net/sched/sch_atm.c qdisc_put(flow->q); flow 155 net/sched/sch_atm.c tcf_block_put(flow->block); flow 156 net/sched/sch_atm.c if (flow->sock) { flow 158 net/sched/sch_atm.c file_count(flow->sock->file)); flow 159 net/sched/sch_atm.c flow->vcc->pop = flow->old_pop; flow 160 net/sched/sch_atm.c sockfd_put(flow->sock); flow 162 net/sched/sch_atm.c if (flow->excess) flow 163 net/sched/sch_atm.c atm_tc_put(sch, (unsigned long)flow->excess); flow 164 net/sched/sch_atm.c if (flow != &p->link) flow 165 net/sched/sch_atm.c kfree(flow); flow 200 net/sched/sch_atm.c struct atm_flow_data *flow = (struct atm_flow_data *)*arg; flow 209 net/sched/sch_atm.c "flow %p,opt %p)\n", sch, p, classid, parent, flow, opt); flow 222 net/sched/sch_atm.c if (flow) flow 281 net/sched/sch_atm.c flow = kzalloc(sizeof(struct atm_flow_data) + hdr_len, GFP_KERNEL); flow 282 net/sched/sch_atm.c pr_debug("atm_tc_change: flow %p\n", flow); flow 283 net/sched/sch_atm.c if (!flow) { flow 288 net/sched/sch_atm.c error = tcf_block_get(&flow->block, &flow->filter_list, sch, flow 291 net/sched/sch_atm.c kfree(flow); flow 295 net/sched/sch_atm.c flow->q = qdisc_create_dflt(sch->dev_queue, &pfifo_qdisc_ops, classid, flow 297 net/sched/sch_atm.c if (!flow->q) flow 298 net/sched/sch_atm.c flow->q = &noop_qdisc; flow 299 net/sched/sch_atm.c pr_debug("atm_tc_change: qdisc %p\n", flow->q); flow 300 net/sched/sch_atm.c flow->sock = sock; flow 301 net/sched/sch_atm.c flow->vcc = ATM_SD(sock); /* speedup */ flow 302 net/sched/sch_atm.c flow->vcc->user_back = flow; flow 303 net/sched/sch_atm.c pr_debug("atm_tc_change: vcc %p\n", flow->vcc); flow 304 net/sched/sch_atm.c flow->old_pop = flow->vcc->pop; flow 305 net/sched/sch_atm.c flow->parent = p; flow 306 net/sched/sch_atm.c flow->vcc->pop = sch_atm_pop; flow 307 net/sched/sch_atm.c flow->common.classid = classid; flow 308 net/sched/sch_atm.c flow->ref = 1; flow 309 net/sched/sch_atm.c flow->excess = excess; flow 310 net/sched/sch_atm.c list_add(&flow->list, &p->link.list); flow 311 net/sched/sch_atm.c flow->hdr_len = hdr_len; flow 313 net/sched/sch_atm.c memcpy(flow->hdr, hdr, hdr_len); flow 315 net/sched/sch_atm.c memcpy(flow->hdr, llc_oui_ip, sizeof(llc_oui_ip)); flow 316 net/sched/sch_atm.c *arg = (unsigned long)flow; flow 326 net/sched/sch_atm.c struct atm_flow_data *flow = (struct atm_flow_data *)arg; flow 328 net/sched/sch_atm.c pr_debug("atm_tc_delete(sch %p,[qdisc %p],flow %p)\n", sch, p, flow); flow 329 net/sched/sch_atm.c if (list_empty(&flow->list)) flow 331 net/sched/sch_atm.c if (rcu_access_pointer(flow->filter_list) || flow == &p->link) flow 337 net/sched/sch_atm.c if (flow->ref < 2) { flow 338 net/sched/sch_atm.c pr_err("atm_tc_delete: flow->ref == %d\n", flow->ref); flow 341 net/sched/sch_atm.c if (flow->ref > 2) flow 350 net/sched/sch_atm.c struct atm_flow_data *flow; flow 355 net/sched/sch_atm.c list_for_each_entry(flow, &p->flows, list) { flow 357 net/sched/sch_atm.c walker->fn(sch, (unsigned long)flow, walker) < 0) { flow 369 net/sched/sch_atm.c struct atm_flow_data *flow = (struct atm_flow_data *)cl; flow 371 net/sched/sch_atm.c pr_debug("atm_tc_find_tcf(sch %p,[qdisc %p],flow %p)\n", sch, p, flow); flow 372 net/sched/sch_atm.c return flow ? flow->block : p->link.block; flow 381 net/sched/sch_atm.c struct atm_flow_data *flow; flow 388 net/sched/sch_atm.c flow = NULL; flow 390 net/sched/sch_atm.c !(flow = (struct atm_flow_data *)atm_tc_find(sch, skb->priority))) { flow 393 net/sched/sch_atm.c list_for_each_entry(flow, &p->flows, list) { flow 394 net/sched/sch_atm.c fl = rcu_dereference_bh(flow->filter_list); flow 399 net/sched/sch_atm.c flow = (struct atm_flow_data *)res.class; flow 400 net/sched/sch_atm.c if (!flow) flow 401 net/sched/sch_atm.c flow = lookup_flow(sch, res.classid); flow 405 net/sched/sch_atm.c flow = NULL; flow 409 net/sched/sch_atm.c if (!flow) { flow 410 net/sched/sch_atm.c flow = &p->link; flow 412 net/sched/sch_atm.c if (flow->vcc) flow 413 net/sched/sch_atm.c ATM_SKB(skb)->atm_options = flow->vcc->atm_options; flow 426 net/sched/sch_atm.c if (flow->excess) flow 427 net/sched/sch_atm.c flow = flow->excess; flow 435 net/sched/sch_atm.c ret = qdisc_enqueue(skb, flow->q, to_free); flow 440 net/sched/sch_atm.c if (flow) flow 441 net/sched/sch_atm.c flow->qstats.drops++; flow 454 net/sched/sch_atm.c if (flow == &p->link) { flow 473 net/sched/sch_atm.c struct atm_flow_data *flow; flow 477 net/sched/sch_atm.c list_for_each_entry(flow, &p->flows, list) { flow 478 net/sched/sch_atm.c if (flow == &p->link) flow 484 net/sched/sch_atm.c while ((skb = flow->q->ops->peek(flow->q))) { flow 485 net/sched/sch_atm.c if (!atm_may_send(flow->vcc, skb->truesize)) flow 488 net/sched/sch_atm.c skb = qdisc_dequeue_peeked(flow->q); flow 493 net/sched/sch_atm.c bstats_update(&flow->bstats, skb); flow 494 net/sched/sch_atm.c pr_debug("atm_tc_dequeue: sending on class %p\n", flow); flow 497 net/sched/sch_atm.c if (skb_headroom(skb) < flow->hdr_len) { flow 500 net/sched/sch_atm.c new = skb_realloc_headroom(skb, flow->hdr_len); flow 508 net/sched/sch_atm.c ATM_SKB(skb)->vcc = flow->vcc; flow 509 net/sched/sch_atm.c memcpy(skb_push(skb, flow->hdr_len), flow->hdr, flow 510 net/sched/sch_atm.c flow->hdr_len); flow 512 net/sched/sch_atm.c &sk_atm(flow->vcc)->sk_wmem_alloc); flow 514 net/sched/sch_atm.c flow->vcc->send(flow->vcc, skb); flow 573 net/sched/sch_atm.c struct atm_flow_data *flow; flow 576 net/sched/sch_atm.c list_for_each_entry(flow, &p->flows, list) flow 577 net/sched/sch_atm.c qdisc_reset(flow->q); flow 584 net/sched/sch_atm.c struct atm_flow_data *flow, *tmp; flow 587 net/sched/sch_atm.c list_for_each_entry(flow, &p->flows, list) { flow 588 net/sched/sch_atm.c tcf_block_put(flow->block); flow 589 net/sched/sch_atm.c flow->block = NULL; flow 592 net/sched/sch_atm.c list_for_each_entry_safe(flow, tmp, &p->flows, list) { flow 593 net/sched/sch_atm.c if (flow->ref > 1) flow 594 net/sched/sch_atm.c pr_err("atm_destroy: %p->ref = %d\n", flow, flow->ref); flow 595 net/sched/sch_atm.c atm_tc_put(sch, (unsigned long)flow); flow 604 net/sched/sch_atm.c struct atm_flow_data *flow = (struct atm_flow_data *)cl; flow 608 net/sched/sch_atm.c sch, p, flow, skb, tcm); flow 609 net/sched/sch_atm.c if (list_empty(&flow->list)) flow 611 net/sched/sch_atm.c tcm->tcm_handle = flow->common.classid; flow 612 net/sched/sch_atm.c tcm->tcm_info = flow->q->handle; flow 618 net/sched/sch_atm.c if (nla_put(skb, TCA_ATM_HDR, flow->hdr_len, flow->hdr)) flow 620 net/sched/sch_atm.c if (flow->vcc) { flow 626 net/sched/sch_atm.c pvc.sap_addr.itf = flow->vcc->dev ? flow->vcc->dev->number : -1; flow 627 net/sched/sch_atm.c pvc.sap_addr.vpi = flow->vcc->vpi; flow 628 net/sched/sch_atm.c pvc.sap_addr.vci = flow->vcc->vci; flow 631 net/sched/sch_atm.c state = ATM_VF2VS(flow->vcc->flags); flow 635 net/sched/sch_atm.c if (flow->excess) { flow 636 net/sched/sch_atm.c if (nla_put_u32(skb, TCA_ATM_EXCESS, flow->common.classid)) flow 652 net/sched/sch_atm.c struct atm_flow_data *flow = (struct atm_flow_data *)arg; flow 655 net/sched/sch_atm.c d, NULL, &flow->bstats) < 0 || flow 656 net/sched/sch_atm.c gnet_stats_copy_queue(d, NULL, &flow->qstats, flow->q->q.qlen) < 0) flow 816 net/sched/sch_cake.c static struct sk_buff *dequeue_head(struct cake_flow *flow) flow 818 net/sched/sch_cake.c struct sk_buff *skb = flow->head; flow 821 net/sched/sch_cake.c flow->head = skb->next; flow 830 net/sched/sch_cake.c static void flow_queue_add(struct cake_flow *flow, struct sk_buff *skb) flow 832 net/sched/sch_cake.c if (!flow->head) flow 833 net/sched/sch_cake.c flow->head = skb; flow 835 net/sched/sch_cake.c flow->tail->next = skb; flow 836 net/sched/sch_cake.c flow->tail = skb; flow 1112 net/sched/sch_cake.c struct cake_flow *flow) flow 1129 net/sched/sch_cake.c if (flow->head == flow->tail) flow 1132 net/sched/sch_cake.c skb = flow->tail; flow 1152 net/sched/sch_cake.c for (skb_check = flow->head; flow 1260 net/sched/sch_cake.c flow->head = elig_ack->next; flow 1468 net/sched/sch_cake.c struct cake_flow *flow; flow 1485 net/sched/sch_cake.c flow = &b->flows[idx]; flow 1486 net/sched/sch_cake.c skb = dequeue_head(flow); flow 1493 net/sched/sch_cake.c if (cobalt_queue_full(&flow->cvars, &b->cparams, now)) flow 1503 net/sched/sch_cake.c flow->dropped++; flow 1596 net/sched/sch_cake.c u16 flow = 0, host = 0; flow 1619 net/sched/sch_cake.c flow = TC_H_MIN(res.classid); flow 1625 net/sched/sch_cake.c return cake_hash(*t, skb, flow_mode, flow, host) + 1; flow 1639 net/sched/sch_cake.c struct cake_flow *flow; flow 1651 net/sched/sch_cake.c flow = &b->flows[idx]; flow 1693 net/sched/sch_cake.c flow_queue_add(flow, segs); flow 1716 net/sched/sch_cake.c flow_queue_add(flow, skb); flow 1719 net/sched/sch_cake.c ack = cake_ack_filter(q, flow); flow 1792 net/sched/sch_cake.c if (!flow->set || flow->set == CAKE_SET_DECAYING) { flow 1793 net/sched/sch_cake.c struct cake_host *srchost = &b->hosts[flow->srchost]; flow 1794 net/sched/sch_cake.c struct cake_host *dsthost = &b->hosts[flow->dsthost]; flow 1797 net/sched/sch_cake.c if (!flow->set) { flow 1798 net/sched/sch_cake.c list_add_tail(&flow->flowchain, &b->new_flows); flow 1801 net/sched/sch_cake.c list_move_tail(&flow->flowchain, &b->new_flows); flow 1803 net/sched/sch_cake.c flow->set = CAKE_SET_SPARSE; flow 1812 net/sched/sch_cake.c flow->deficit = (b->flow_quantum * flow 1814 net/sched/sch_cake.c } else if (flow->set == CAKE_SET_SPARSE_WAIT) { flow 1815 net/sched/sch_cake.c struct cake_host *srchost = &b->hosts[flow->srchost]; flow 1816 net/sched/sch_cake.c struct cake_host *dsthost = &b->hosts[flow->dsthost]; flow 1821 net/sched/sch_cake.c flow->set = CAKE_SET_BULK; flow 1852 net/sched/sch_cake.c struct cake_flow *flow = &b->flows[q->cur_flow]; flow 1856 net/sched/sch_cake.c if (flow->head) { flow 1857 net/sched/sch_cake.c skb = dequeue_head(flow); flow 1889 net/sched/sch_cake.c struct cake_flow *flow; flow 1989 net/sched/sch_cake.c flow = list_first_entry(head, struct cake_flow, flowchain); flow 1990 net/sched/sch_cake.c q->cur_flow = flow - b->flows; flow 1994 net/sched/sch_cake.c srchost = &b->hosts[flow->srchost]; flow 1995 net/sched/sch_cake.c dsthost = &b->hosts[flow->dsthost]; flow 1999 net/sched/sch_cake.c if (flow->deficit <= 0) { flow 2004 net/sched/sch_cake.c if (flow->set == CAKE_SET_SPARSE) { flow 2005 net/sched/sch_cake.c if (flow->head) { flow 2015 net/sched/sch_cake.c flow->set = CAKE_SET_BULK; flow 2021 net/sched/sch_cake.c flow->set = CAKE_SET_SPARSE_WAIT; flow 2036 net/sched/sch_cake.c flow->deficit += (b->flow_quantum * quantum_div[host_load] + flow 2038 net/sched/sch_cake.c list_move_tail(&flow->flowchain, &b->old_flows); flow 2048 net/sched/sch_cake.c if (cobalt_queue_empty(&flow->cvars, &b->cparams, now)) flow 2051 net/sched/sch_cake.c if (flow->cvars.p_drop || flow->cvars.count || flow 2052 net/sched/sch_cake.c ktime_before(now, flow->cvars.drop_next)) { flow 2056 net/sched/sch_cake.c list_move_tail(&flow->flowchain, flow 2058 net/sched/sch_cake.c if (flow->set == CAKE_SET_BULK) { flow 2068 net/sched/sch_cake.c } else if (flow->set == CAKE_SET_SPARSE || flow 2069 net/sched/sch_cake.c flow->set == CAKE_SET_SPARSE_WAIT) { flow 2073 net/sched/sch_cake.c flow->set = CAKE_SET_DECAYING; flow 2076 net/sched/sch_cake.c list_del_init(&flow->flowchain); flow 2077 net/sched/sch_cake.c if (flow->set == CAKE_SET_SPARSE || flow 2078 net/sched/sch_cake.c flow->set == CAKE_SET_SPARSE_WAIT) flow 2080 net/sched/sch_cake.c else if (flow->set == CAKE_SET_BULK) { flow 2092 net/sched/sch_cake.c flow->set = CAKE_SET_NONE; flow 2098 net/sched/sch_cake.c if (!cobalt_should_drop(&flow->cvars, &b->cparams, now, skb, flow 2102 net/sched/sch_cake.c !flow->head) flow 2109 net/sched/sch_cake.c flow->deficit -= len; flow 2112 net/sched/sch_cake.c flow->dropped++; flow 2121 net/sched/sch_cake.c b->tin_ecn_mark += !!flow->cvars.ecn_marked; flow 2133 net/sched/sch_cake.c flow->deficit -= len; flow 2712 net/sched/sch_cake.c struct cake_flow *flow = b->flows + j; flow 2715 net/sched/sch_cake.c INIT_LIST_HEAD(&flow->flowchain); flow 2716 net/sched/sch_cake.c cobalt_vars_init(&flow->cvars); flow 2949 net/sched/sch_cake.c const struct cake_flow *flow = NULL; flow 2959 net/sched/sch_cake.c flow = &b->flows[idx % CAKE_QUEUES]; flow 2961 net/sched/sch_cake.c if (flow->head) { flow 2963 net/sched/sch_cake.c skb = flow->head; flow 2971 net/sched/sch_cake.c qs.drops = flow->dropped; flow 2975 net/sched/sch_cake.c if (flow) { flow 2991 net/sched/sch_cake.c PUT_STAT_S32(DEFICIT, flow->deficit); flow 2992 net/sched/sch_cake.c PUT_STAT_U32(DROPPING, flow->cvars.dropping); flow 2993 net/sched/sch_cake.c PUT_STAT_U32(COBALT_COUNT, flow->cvars.count); flow 2994 net/sched/sch_cake.c PUT_STAT_U32(P_DROP, flow->cvars.p_drop); flow 2995 net/sched/sch_cake.c if (flow->cvars.p_drop) { flow 2999 net/sched/sch_cake.c flow->cvars.blue_timer))); flow 3001 net/sched/sch_cake.c if (flow->cvars.dropping) { flow 3005 net/sched/sch_cake.c flow->cvars.drop_next))); flow 146 net/sched/sch_fq.c static void fq_flow_add_tail(struct fq_flow_head *head, struct fq_flow *flow) flow 149 net/sched/sch_fq.c head->last->next = flow; flow 151 net/sched/sch_fq.c head->first = flow; flow 152 net/sched/sch_fq.c head->last = flow; flow 153 net/sched/sch_fq.c flow->next = NULL; flow 344 net/sched/sch_fq.c static struct sk_buff *fq_peek(struct fq_flow *flow) flow 346 net/sched/sch_fq.c struct sk_buff *skb = skb_rb_first(&flow->t_root); flow 347 net/sched/sch_fq.c struct sk_buff *head = flow->head; flow 360 net/sched/sch_fq.c static void fq_erase_head(struct Qdisc *sch, struct fq_flow *flow, flow 363 net/sched/sch_fq.c if (skb == flow->head) { flow 364 net/sched/sch_fq.c flow->head = skb->next; flow 366 net/sched/sch_fq.c rb_erase(&skb->rbnode, &flow->t_root); flow 372 net/sched/sch_fq.c static struct sk_buff *fq_dequeue_head(struct Qdisc *sch, struct fq_flow *flow) flow 374 net/sched/sch_fq.c struct sk_buff *skb = fq_peek(flow); flow 377 net/sched/sch_fq.c fq_erase_head(sch, flow, skb); flow 379 net/sched/sch_fq.c flow->qlen--; flow 386 net/sched/sch_fq.c static void flow_queue_add(struct fq_flow *flow, struct sk_buff *skb) flow 393 net/sched/sch_fq.c head = flow->head; flow 395 net/sched/sch_fq.c fq_skb_cb(skb)->time_to_send >= fq_skb_cb(flow->tail)->time_to_send) { flow 397 net/sched/sch_fq.c flow->head = skb; flow 399 net/sched/sch_fq.c flow->tail->next = skb; flow 400 net/sched/sch_fq.c flow->tail = skb; flow 405 net/sched/sch_fq.c p = &flow->t_root.rb_node; flow 417 net/sched/sch_fq.c rb_insert_color(&skb->rbnode, &flow->t_root); flow 602 net/sched/sch_fq.c static void fq_flow_purge(struct fq_flow *flow) flow 604 net/sched/sch_fq.c struct rb_node *p = rb_first(&flow->t_root); flow 610 net/sched/sch_fq.c rb_erase(&skb->rbnode, &flow->t_root); flow 613 net/sched/sch_fq.c rtnl_kfree_skbs(flow->head, flow->tail); flow 614 net/sched/sch_fq.c flow->head = NULL; flow 615 net/sched/sch_fq.c flow->qlen = 0; flow 117 net/sched/sch_fq_codel.c static inline struct sk_buff *dequeue_head(struct fq_codel_flow *flow) flow 119 net/sched/sch_fq_codel.c struct sk_buff *skb = flow->head; flow 121 net/sched/sch_fq_codel.c flow->head = skb->next; flow 127 net/sched/sch_fq_codel.c static inline void flow_queue_add(struct fq_codel_flow *flow, flow 130 net/sched/sch_fq_codel.c if (flow->head == NULL) flow 131 net/sched/sch_fq_codel.c flow->head = skb; flow 133 net/sched/sch_fq_codel.c flow->tail->next = skb; flow 134 net/sched/sch_fq_codel.c flow->tail = skb; flow 144 net/sched/sch_fq_codel.c struct fq_codel_flow *flow; flow 165 net/sched/sch_fq_codel.c flow = &q->flows[idx]; flow 169 net/sched/sch_fq_codel.c skb = dequeue_head(flow); flow 176 net/sched/sch_fq_codel.c flow->cvars.count += i; flow 190 net/sched/sch_fq_codel.c struct fq_codel_flow *flow; flow 205 net/sched/sch_fq_codel.c flow = &q->flows[idx]; flow 206 net/sched/sch_fq_codel.c flow_queue_add(flow, skb); flow 210 net/sched/sch_fq_codel.c if (list_empty(&flow->flowchain)) { flow 211 net/sched/sch_fq_codel.c list_add_tail(&flow->flowchain, &q->new_flows); flow 213 net/sched/sch_fq_codel.c flow->deficit = q->quantum; flow 260 net/sched/sch_fq_codel.c struct fq_codel_flow *flow; flow 263 net/sched/sch_fq_codel.c flow = container_of(vars, struct fq_codel_flow, cvars); flow 264 net/sched/sch_fq_codel.c if (flow->head) { flow 265 net/sched/sch_fq_codel.c skb = dequeue_head(flow); flow 266 net/sched/sch_fq_codel.c q->backlogs[flow - q->flows] -= qdisc_pkt_len(skb); flow 286 net/sched/sch_fq_codel.c struct fq_codel_flow *flow; flow 296 net/sched/sch_fq_codel.c flow = list_first_entry(head, struct fq_codel_flow, flowchain); flow 298 net/sched/sch_fq_codel.c if (flow->deficit <= 0) { flow 299 net/sched/sch_fq_codel.c flow->deficit += q->quantum; flow 300 net/sched/sch_fq_codel.c list_move_tail(&flow->flowchain, &q->old_flows); flow 305 net/sched/sch_fq_codel.c &flow->cvars, &q->cstats, qdisc_pkt_len, flow 311 net/sched/sch_fq_codel.c list_move_tail(&flow->flowchain, &q->old_flows); flow 313 net/sched/sch_fq_codel.c list_del_init(&flow->flowchain); flow 317 net/sched/sch_fq_codel.c flow->deficit -= qdisc_pkt_len(skb); flow 330 net/sched/sch_fq_codel.c static void fq_codel_flow_purge(struct fq_codel_flow *flow) flow 332 net/sched/sch_fq_codel.c rtnl_kfree_skbs(flow->head, flow->tail); flow 333 net/sched/sch_fq_codel.c flow->head = NULL; flow 344 net/sched/sch_fq_codel.c struct fq_codel_flow *flow = q->flows + i; flow 346 net/sched/sch_fq_codel.c fq_codel_flow_purge(flow); flow 347 net/sched/sch_fq_codel.c INIT_LIST_HEAD(&flow->flowchain); flow 348 net/sched/sch_fq_codel.c codel_vars_init(&flow->cvars); flow 493 net/sched/sch_fq_codel.c struct fq_codel_flow *flow = q->flows + i; flow 495 net/sched/sch_fq_codel.c INIT_LIST_HEAD(&flow->flowchain); flow 496 net/sched/sch_fq_codel.c codel_vars_init(&flow->cvars); flow 624 net/sched/sch_fq_codel.c const struct fq_codel_flow *flow = &q->flows[idx]; flow 629 net/sched/sch_fq_codel.c xstats.class_stats.deficit = flow->deficit; flow 631 net/sched/sch_fq_codel.c codel_time_to_us(flow->cvars.ldelay); flow 632 net/sched/sch_fq_codel.c xstats.class_stats.count = flow->cvars.count; flow 633 net/sched/sch_fq_codel.c xstats.class_stats.lastcount = flow->cvars.lastcount; flow 634 net/sched/sch_fq_codel.c xstats.class_stats.dropping = flow->cvars.dropping; flow 635 net/sched/sch_fq_codel.c if (flow->cvars.dropping) { flow 636 net/sched/sch_fq_codel.c codel_tdiff_t delta = flow->cvars.drop_next - flow 643 net/sched/sch_fq_codel.c if (flow->head) { flow 645 net/sched/sch_fq_codel.c skb = flow->head; flow 184 net/sched/sch_hhf.c struct hh_flow_state *flow, *next; flow 190 net/sched/sch_hhf.c list_for_each_entry_safe(flow, next, head, flowchain) { flow 191 net/sched/sch_hhf.c u32 prev = flow->hit_timestamp + q->hhf_evict_timeout; flow 197 net/sched/sch_hhf.c if (list_is_last(&flow->flowchain, head)) flow 199 net/sched/sch_hhf.c list_del(&flow->flowchain); flow 200 net/sched/sch_hhf.c kfree(flow); flow 202 net/sched/sch_hhf.c } else if (flow->hash_id == hash) { flow 203 net/sched/sch_hhf.c return flow; flow 215 net/sched/sch_hhf.c struct hh_flow_state *flow; flow 220 net/sched/sch_hhf.c list_for_each_entry(flow, head, flowchain) { flow 221 net/sched/sch_hhf.c u32 prev = flow->hit_timestamp + q->hhf_evict_timeout; flow 224 net/sched/sch_hhf.c return flow; flow 233 net/sched/sch_hhf.c flow = kzalloc(sizeof(struct hh_flow_state), GFP_ATOMIC); flow 234 net/sched/sch_hhf.c if (!flow) flow 238 net/sched/sch_hhf.c INIT_LIST_HEAD(&flow->flowchain); flow 239 net/sched/sch_hhf.c list_add_tail(&flow->flowchain, head); flow 241 net/sched/sch_hhf.c return flow; flow 252 net/sched/sch_hhf.c struct hh_flow_state *flow; flow 271 net/sched/sch_hhf.c flow = seek_list(hash, &q->hh_flows[flow_pos], q); flow 272 net/sched/sch_hhf.c if (flow) { /* found its HH flow */ flow 273 net/sched/sch_hhf.c flow->hit_timestamp = now; flow 307 net/sched/sch_hhf.c flow = alloc_new_hh(&q->hh_flows[flow_pos], q); flow 308 net/sched/sch_hhf.c if (!flow) /* memory alloc problem */ flow 310 net/sched/sch_hhf.c flow->hash_id = hash; flow 311 net/sched/sch_hhf.c flow->hit_timestamp = now; flow 485 net/sched/sch_hhf.c struct hh_flow_state *flow, *next; flow 490 net/sched/sch_hhf.c list_for_each_entry_safe(flow, next, head, flowchain) { flow 491 net/sched/sch_hhf.c list_del(&flow->flowchain); flow 492 net/sched/sch_hhf.c kfree(flow); flow 62 samples/bpf/sockex2_kern.c struct flow_key_record *flow) flow 72 samples/bpf/sockex2_kern.c flow->src = load_word(skb, nhoff + offsetof(struct iphdr, saddr)); flow 73 samples/bpf/sockex2_kern.c flow->dst = load_word(skb, nhoff + offsetof(struct iphdr, daddr)); flow 86 samples/bpf/sockex2_kern.c struct flow_key_record *flow) flow 90 samples/bpf/sockex2_kern.c flow->src = ipv6_addr_hash(skb, flow 92 samples/bpf/sockex2_kern.c flow->dst = ipv6_addr_hash(skb, flow 100 samples/bpf/sockex2_kern.c struct flow_key_record *flow) flow 120 samples/bpf/sockex2_kern.c nhoff = parse_ip(skb, nhoff, &ip_proto, flow); flow 122 samples/bpf/sockex2_kern.c nhoff = parse_ipv6(skb, nhoff, &ip_proto, flow); flow 158 samples/bpf/sockex2_kern.c nhoff = parse_ip(skb, nhoff, &ip_proto, flow); flow 160 samples/bpf/sockex2_kern.c nhoff = parse_ipv6(skb, nhoff, &ip_proto, flow); flow 166 samples/bpf/sockex2_kern.c nhoff = parse_ip(skb, nhoff, &ip_proto, flow); flow 169 samples/bpf/sockex2_kern.c nhoff = parse_ipv6(skb, nhoff, &ip_proto, flow); flow 175 samples/bpf/sockex2_kern.c flow->ip_proto = ip_proto; flow 179 samples/bpf/sockex2_kern.c flow->ports = load_word(skb, nhoff); flow 182 samples/bpf/sockex2_kern.c flow->thoff = (__u16) nhoff; flow 202 samples/bpf/sockex2_kern.c struct flow_key_record flow = {}; flow 206 samples/bpf/sockex2_kern.c if (!flow_dissector(skb, &flow)) flow 209 samples/bpf/sockex2_kern.c key = flow.dst; flow 91 samples/bpf/sockex3_kern.c struct flow_key_record flow; flow 124 samples/bpf/sockex3_kern.c struct flow_key_record key = g->flow; flow 179 samples/bpf/sockex3_kern.c g->flow.ports = load_word(skb, nhoff); flow 181 samples/bpf/sockex3_kern.c g->flow.ip_proto = ip_proto; flow 205 samples/bpf/sockex3_kern.c g->flow.src = load_word(skb, nhoff + offsetof(struct iphdr, saddr)); flow 206 samples/bpf/sockex3_kern.c g->flow.dst = load_word(skb, nhoff + offsetof(struct iphdr, daddr)); flow 229 samples/bpf/sockex3_kern.c g->flow.src = ipv6_addr_hash(skb, flow 231 samples/bpf/sockex3_kern.c g->flow.dst = ipv6_addr_hash(skb, flow 122 tools/testing/selftests/bpf/progs/test_xdp_noinline.c struct flow_key flow; flow 244 tools/testing/selftests/bpf/progs/test_xdp_noinline.c pckt->flow.port16[0] = udp->source; flow 245 tools/testing/selftests/bpf/progs/test_xdp_noinline.c pckt->flow.port16[1] = udp->dest; flow 247 tools/testing/selftests/bpf/progs/test_xdp_noinline.c pckt->flow.port16[0] = udp->dest; flow 248 tools/testing/selftests/bpf/progs/test_xdp_noinline.c pckt->flow.port16[1] = udp->source; flow 268 tools/testing/selftests/bpf/progs/test_xdp_noinline.c pckt->flow.port16[0] = tcp->source; flow 269 tools/testing/selftests/bpf/progs/test_xdp_noinline.c pckt->flow.port16[1] = tcp->dest; flow 271 tools/testing/selftests/bpf/progs/test_xdp_noinline.c pckt->flow.port16[0] = tcp->dest; flow 272 tools/testing/selftests/bpf/progs/test_xdp_noinline.c pckt->flow.port16[1] = tcp->source; flow 307 tools/testing/selftests/bpf/progs/test_xdp_noinline.c ip_suffix = pckt->flow.srcv6[3] ^ pckt->flow.port16[0]; flow 326 tools/testing/selftests/bpf/progs/test_xdp_noinline.c __u32 ip_suffix = bpf_ntohs(pckt->flow.port16[0]); flow 336 tools/testing/selftests/bpf/progs/test_xdp_noinline.c ip_suffix ^= pckt->flow.src; flow 501 tools/testing/selftests/bpf/progs/test_xdp_noinline.c pckt->flow.proto = ip6h->nexthdr; flow 503 tools/testing/selftests/bpf/progs/test_xdp_noinline.c memcpy(pckt->flow.srcv6, ip6h->daddr.in6_u.u6_addr32, 16); flow 504 tools/testing/selftests/bpf/progs/test_xdp_noinline.c memcpy(pckt->flow.dstv6, ip6h->saddr.in6_u.u6_addr32, 16); flow 528 tools/testing/selftests/bpf/progs/test_xdp_noinline.c pckt->flow.proto = iph->protocol; flow 530 tools/testing/selftests/bpf/progs/test_xdp_noinline.c pckt->flow.src = iph->daddr; flow 531 tools/testing/selftests/bpf/progs/test_xdp_noinline.c pckt->flow.dst = iph->saddr; flow 540 tools/testing/selftests/bpf/progs/test_xdp_noinline.c return jhash_2words(jhash(pckt->flow.srcv6, 16, 12), flow 541 tools/testing/selftests/bpf/progs/test_xdp_noinline.c pckt->flow.ports, 24); flow 543 tools/testing/selftests/bpf/progs/test_xdp_noinline.c return jhash_2words(pckt->flow.src, pckt->flow.ports, flow 561 tools/testing/selftests/bpf/progs/test_xdp_noinline.c pckt->flow.port16[0] = pckt->flow.port16[1]; flow 562 tools/testing/selftests/bpf/progs/test_xdp_noinline.c memset(pckt->flow.srcv6, 0, 16); flow 592 tools/testing/selftests/bpf/progs/test_xdp_noinline.c if (pckt->flow.proto == IPPROTO_UDP) flow 595 tools/testing/selftests/bpf/progs/test_xdp_noinline.c bpf_map_update_elem(lru_map, &pckt->flow, &new_dst_lru, 0); flow 610 tools/testing/selftests/bpf/progs/test_xdp_noinline.c dst_lru = bpf_map_lookup_elem(lru_map, &pckt->flow); flow 613 tools/testing/selftests/bpf/progs/test_xdp_noinline.c if (pckt->flow.proto == IPPROTO_UDP) { flow 642 tools/testing/selftests/bpf/progs/test_xdp_noinline.c pckt->flow.proto = *protocol; flow 652 tools/testing/selftests/bpf/progs/test_xdp_noinline.c memcpy(pckt->flow.srcv6, ip6h->saddr.in6_u.u6_addr32, 16); flow 653 tools/testing/selftests/bpf/progs/test_xdp_noinline.c memcpy(pckt->flow.dstv6, ip6h->daddr.in6_u.u6_addr32, 16); flow 674 tools/testing/selftests/bpf/progs/test_xdp_noinline.c pckt->flow.proto = *protocol; flow 684 tools/testing/selftests/bpf/progs/test_xdp_noinline.c pckt->flow.src = iph->saddr; flow 685 tools/testing/selftests/bpf/progs/test_xdp_noinline.c pckt->flow.dst = iph->daddr; flow 720 tools/testing/selftests/bpf/progs/test_xdp_noinline.c protocol = pckt.flow.proto; flow 732 tools/testing/selftests/bpf/progs/test_xdp_noinline.c memcpy(vip.vipv6, pckt.flow.dstv6, 16); flow 734 tools/testing/selftests/bpf/progs/test_xdp_noinline.c vip.vip = pckt.flow.dst; flow 735 tools/testing/selftests/bpf/progs/test_xdp_noinline.c vip.port = pckt.flow.port16[1]; flow 736 tools/testing/selftests/bpf/progs/test_xdp_noinline.c vip.proto = pckt.flow.proto; flow 744 tools/testing/selftests/bpf/progs/test_xdp_noinline.c pckt.flow.port16[1] = 0; flow 754 tools/testing/selftests/bpf/progs/test_xdp_noinline.c pckt.flow.port16[0] = 0; flow 759 tools/testing/selftests/bpf/progs/test_xdp_noinline.c if (pckt.flow.proto == IPPROTO_TCP) {