int pfq_sock_tx_unbind(struct pfq_sock *so) { size_t n; /* unbind sync Tx queue */ if (so->opt.txq.def_ifindex != -1) { dev_put_by_index(sock_net(&so->sk), so->opt.txq.def_ifindex); } so->opt.txq.def_ifindex = -1; so->opt.txq.def_queue = -1; so->opt.txq.def_dev = NULL; /* unbind async Tx queue */ if (pfq_unbind_tx_thread(so) < 0) return -EPERM; for(n = 0; n < Q_MAX_TX_QUEUES; ++n) { if (so->opt.txq_async[n].def_ifindex != -1) dev_put_by_index(sock_net(&so->sk), so->opt.txq_async[n].def_ifindex); so->opt.txq_async[n].def_ifindex = -1; so->opt.txq_async[n].def_queue = -1; so->opt.txq_async[n].def_dev = NULL; } return 0; }
int pfq_sock_tx_unbind(struct pfq_sock *so) { size_t n; so->tx.ifindex = -1; so->tx.queue = -1; /* unbind async Tx queue */ if (pfq_unbind_tx_thread(so) < 0) return -EPERM; for(n = 0; n < Q_MAX_TX_QUEUES; ++n) { so->tx_async[n].ifindex = -1; so->tx_async[n].queue = -1; } return 0; }