| 2251 | } |
| 2252 | |
| 2253 | int |
| 2254 | lagg_enqueue(struct ifnet *ifp, struct mbuf *m) |
| 2255 | { |
| 2256 | |
| 2257 | #if defined(KERN_TLS) || defined(RATELIMIT) |
| 2258 | if (m->m_pkthdr.csum_flags & CSUM_SND_TAG) { |
| 2259 | struct lagg_snd_tag *lst; |
| 2260 | struct m_snd_tag *mst; |
| 2261 | |
| 2262 | mst = m->m_pkthdr.snd_tag; |
| 2263 | lst = mst_to_lst(mst); |
| 2264 | if (lst->tag->ifp != ifp) { |
| 2265 | m_freem(m); |
| 2266 | return (EAGAIN); |
| 2267 | } |
| 2268 | m->m_pkthdr.snd_tag = m_snd_tag_ref(lst->tag); |
| 2269 | m_snd_tag_rele(mst); |
| 2270 | } |
| 2271 | #endif |
| 2272 | return (ifp->if_transmit)(ifp, m); |
| 2273 | } |
| 2274 | |
| 2275 | /* |
| 2276 | * Simple round robin aggregation |
no test coverage detected