Lines Matching refs:sap
92 void llc_sap_rtn_pdu(struct llc_sap *sap, struct sk_buff *skb) in llc_sap_rtn_pdu() argument
117 static struct llc_sap_state_trans *llc_find_sap_trans(struct llc_sap *sap, in llc_find_sap_trans() argument
123 struct llc_sap_state *curr_state = &llc_sap_state_table[sap->state - 1]; in llc_find_sap_trans()
129 if (!next_trans[i]->ev(sap, skb)) { in llc_find_sap_trans()
145 static int llc_exec_sap_trans_actions(struct llc_sap *sap, in llc_exec_sap_trans_actions() argument
153 if ((*next_action)(sap, skb)) in llc_exec_sap_trans_actions()
167 static int llc_sap_next_state(struct llc_sap *sap, struct sk_buff *skb) in llc_sap_next_state() argument
172 if (sap->state > LLC_NR_SAP_STATES) in llc_sap_next_state()
174 trans = llc_find_sap_trans(sap, skb); in llc_sap_next_state()
182 rc = llc_exec_sap_trans_actions(sap, trans, skb); in llc_sap_next_state()
188 sap->state = trans->next_state; in llc_sap_next_state()
204 static void llc_sap_state_process(struct llc_sap *sap, struct sk_buff *skb) in llc_sap_state_process() argument
209 llc_sap_next_state(sap, skb); in llc_sap_state_process()
231 void llc_build_and_send_test_pkt(struct llc_sap *sap, in llc_build_and_send_test_pkt() argument
236 ev->saddr.lsap = sap->laddr.lsap; in llc_build_and_send_test_pkt()
244 llc_sap_state_process(sap, skb); in llc_build_and_send_test_pkt()
257 void llc_build_and_send_xid_pkt(struct llc_sap *sap, struct sk_buff *skb, in llc_build_and_send_xid_pkt() argument
262 ev->saddr.lsap = sap->laddr.lsap; in llc_build_and_send_xid_pkt()
270 llc_sap_state_process(sap, skb); in llc_build_and_send_xid_pkt()
281 static void llc_sap_rcv(struct llc_sap *sap, struct sk_buff *skb, in llc_sap_rcv() argument
292 llc_sap_state_process(sap, skb); in llc_sap_rcv()
295 static inline bool llc_dgram_match(const struct llc_sap *sap, in llc_dgram_match() argument
314 static struct sock *llc_lookup_dgram(struct llc_sap *sap, in llc_lookup_dgram() argument
319 int slot = llc_sk_laddr_hashfn(sap, laddr); in llc_lookup_dgram()
320 struct hlist_nulls_head *laddr_hb = &sap->sk_laddr_hash[slot]; in llc_lookup_dgram()
325 if (llc_dgram_match(sap, laddr, rc)) { in llc_lookup_dgram()
329 if (unlikely(llc_sk(rc)->sap != sap || in llc_lookup_dgram()
330 !llc_dgram_match(sap, laddr, rc))) { in llc_lookup_dgram()
350 static inline bool llc_mcast_match(const struct llc_sap *sap, in llc_mcast_match() argument
362 static void llc_do_mcast(struct llc_sap *sap, struct sk_buff *skb, in llc_do_mcast() argument
375 llc_sap_rcv(sap, skb1, stack[i]); in llc_do_mcast()
389 static void llc_sap_mcast(struct llc_sap *sap, in llc_sap_mcast() argument
397 struct hlist_head *dev_hb = llc_sk_dev_hash(sap, skb->dev->ifindex); in llc_sap_mcast()
399 spin_lock_bh(&sap->sk_lock); in llc_sap_mcast()
404 if (!llc_mcast_match(sap, laddr, skb, sk)) in llc_sap_mcast()
411 llc_do_mcast(sap, skb, stack, i); in llc_sap_mcast()
415 spin_unlock_bh(&sap->sk_lock); in llc_sap_mcast()
417 llc_do_mcast(sap, skb, stack, i); in llc_sap_mcast()
421 void llc_sap_handler(struct llc_sap *sap, struct sk_buff *skb) in llc_sap_handler() argument
429 llc_sap_mcast(sap, &laddr, skb); in llc_sap_handler()
432 struct sock *sk = llc_lookup_dgram(sap, &laddr); in llc_sap_handler()
434 llc_sap_rcv(sap, skb, sk); in llc_sap_handler()