/* Delete flow/s for given peer address */ void dhd_flow_rings_delete_for_peer(dhd_pub_t *dhdp, uint8 ifindex, char *addr) { uint32 id; flow_ring_table_t *flow_ring_table; DHD_ERROR(("%s: ifindex %u\n", __FUNCTION__, ifindex)); ASSERT(ifindex < DHD_MAX_IFS); if (ifindex >= DHD_MAX_IFS) return; if (!dhdp->flow_ring_table) return; flow_ring_table = (flow_ring_table_t *)dhdp->flow_ring_table; for (id = 0; id < dhdp->num_flow_rings; id++) { if (flow_ring_table[id].active && (flow_ring_table[id].flow_info.ifindex == ifindex) && (!memcmp(flow_ring_table[id].flow_info.da, addr, ETHER_ADDR_LEN)) && (flow_ring_table[id].status != FLOW_RING_STATUS_DELETE_PENDING)) { DHD_INFO(("%s: deleting flowid %d\n", __FUNCTION__, flow_ring_table[id].flowid)); dhd_bus_flow_ring_delete_request(dhdp->bus, (void *) &flow_ring_table[id]); } } }
/* Delete all Flow rings assocaited with the given Interface */ void dhd_flow_rings_delete(dhd_pub_t *dhdp, uint8 ifindex) { uint32 id; flow_ring_table_t *flow_ring_table; DHD_INFO(("%s: ifindex %u\n", __FUNCTION__, ifindex)); ASSERT(ifindex < DHD_MAX_IFS); if (!dhdp->flow_ring_table) return; flow_ring_table = (flow_ring_table_t *)dhdp->flow_ring_table; for (id = 0; id < dhdp->num_flow_rings; id++) { if (flow_ring_table[id].active && (flow_ring_table[id].flow_info.ifindex == ifindex)) { dhd_bus_flow_ring_delete_request(dhdp->bus, (void *) &flow_ring_table[id]); } } }