Lines Matching refs:nlp

54 static bool nl_process_nbuf(struct nl_buf *nb, struct nlpcb *nlp);
81 nl_schedule_taskqueue(struct nlpcb *nlp) in nl_schedule_taskqueue() argument
83 if (!nlp->nl_task_pending) { in nl_schedule_taskqueue()
84 nlp->nl_task_pending = true; in nl_schedule_taskqueue()
85 taskqueue_enqueue(nlp->nl_taskqueue, &nlp->nl_task); in nl_schedule_taskqueue()
93 nl_process_received_one(struct nlpcb *nlp) in nl_process_received_one() argument
95 struct socket *so = nlp->nl_socket; in nl_process_received_one()
100 NLP_LOCK(nlp); in nl_process_received_one()
101 nlp->nl_task_pending = false; in nl_process_received_one()
102 NLP_UNLOCK(nlp); in nl_process_received_one()
122 reschedule = nl_process_nbuf(nb, nlp); in nl_process_received_one()
142 nl_process_received(struct nlpcb *nlp) in nl_process_received() argument
146 if (__predict_false(nlp->nl_need_thread_setup)) { in nl_process_received()
147 nl_set_thread_nlp(curthread, nlp); in nl_process_received()
148 NLP_LOCK(nlp); in nl_process_received()
149 nlp->nl_need_thread_setup = false; in nl_process_received()
150 NLP_UNLOCK(nlp); in nl_process_received()
153 while (nl_process_received_one(nlp)) in nl_process_received()
161 nl_on_transmit(struct nlpcb *nlp) in nl_on_transmit() argument
163 NLP_LOCK(nlp); in nl_on_transmit()
165 struct socket *so = nlp->nl_socket; in nl_on_transmit()
166 if (__predict_false(nlp->nl_dropped_bytes > 0 && so != NULL)) { in nl_on_transmit()
167 unsigned long dropped_bytes = nlp->nl_dropped_bytes; in nl_on_transmit()
168 unsigned long dropped_messages = nlp->nl_dropped_messages; in nl_on_transmit()
169 nlp->nl_dropped_bytes = 0; in nl_on_transmit()
170 nlp->nl_dropped_messages = 0; in nl_on_transmit()
173 NLP_LOG(LOG_DEBUG, nlp, in nl_on_transmit()
180 nl_schedule_taskqueue(nlp); in nl_on_transmit()
181 NLP_UNLOCK(nlp); in nl_on_transmit()
187 struct nlpcb *nlp = (struct nlpcb *)_arg; in nl_taskqueue_handler() local
189 CURVNET_SET(nlp->nl_socket->so_vnet); in nl_taskqueue_handler()
190 nl_process_received(nlp); in nl_taskqueue_handler()
201 nl_send(struct nl_writer *nw, struct nlpcb *nlp) in nl_send() argument
203 struct socket *so = nlp->nl_socket; in nl_send()
213 NLP_LOG(LOG_DEBUG2, nlp, in nl_send()
219 if (nlp->nl_linux && linux_netlink_p != NULL && in nl_send()
220 __predict_false(!linux_netlink_p->msgs_to_linux(nw, nlp))) { in nl_send()
232 NLP_LOCK(nlp); in nl_send()
233 nlp->nl_dropped_bytes += nb->datalen; in nl_send()
234 nlp->nl_dropped_messages += nw->num_messages; in nl_send()
235 NLP_LOG(LOG_DEBUG2, nlp, "RX oveflow: %lu m (+%d), %lu b (+%d)", in nl_send()
236 (unsigned long)nlp->nl_dropped_messages, nw->num_messages, in nl_send()
237 (unsigned long)nlp->nl_dropped_bytes, nb->datalen); in nl_send()
238 NLP_UNLOCK(nlp); in nl_send()
250 NLP_LOCK(nlp); in nl_send()
251 nlp->nl_tx_blocked = true; in nl_send()
252 NLP_UNLOCK(nlp); in nl_send()
260 struct nlpcb *nlp, struct nl_pstate *npt) in nl_receive_message() argument
262 nl_handler_f handler = nl_handlers[nlp->nl_proto].cb; in nl_receive_message()
265 NLP_LOG(LOG_DEBUG2, nlp, "msg len: %u type: %d: flags: 0x%X seq: %u pid: %u", in nl_receive_message()
270 NLP_LOG(LOG_DEBUG, nlp, "message is not entirely present: want %d got %d", in nl_receive_message()
278 hdr->nlmsg_pid = nlp->nl_port; in nl_receive_message()
286 if (nlp->nl_linux) { in nl_receive_message()
288 error = linux_netlink_p->msg_from_linux(nlp->nl_proto, in nl_receive_message()
300 nlmsg_ack(nlp, error, hdr, npt); in nl_receive_message()
322 nl_process_nbuf(struct nl_buf *nb, struct nlpcb *nlp) in nl_process_nbuf() argument
328 NL_LOG(LOG_DEBUG3, "RX netlink buf %p on %p", nb, nlp->nl_socket); in nl_process_nbuf()
330 if (!nl_writer_unicast(&nw, NLMSG_SMALL, nlp, false)) { in nl_process_nbuf()
338 .nlp = nlp, in nl_process_nbuf()
342 .strict = nlp->nl_flags & NLF_STRICT, in nl_process_nbuf()
352 error = nl_receive_message(hdr, nb->datalen - nb->offset, nlp, in nl_process_nbuf()
355 if (__predict_false(error != 0 || nlp->nl_tx_blocked)) in nl_process_nbuf()
361 if (nlp->nl_tx_blocked) { in nl_process_nbuf()
362 NLP_LOCK(nlp); in nl_process_nbuf()
363 nlp->nl_tx_blocked = false; in nl_process_nbuf()
364 NLP_UNLOCK(nlp); in nl_process_nbuf()