summaryrefslogtreecommitdiff
path: root/sys/net80211
diff options
context:
space:
mode:
authorDavid Gwynne <dlg@cvs.openbsd.org>2019-01-09 01:14:22 +0000
committerDavid Gwynne <dlg@cvs.openbsd.org>2019-01-09 01:14:22 +0000
commit562fa931bdd50700df4ee8590cc96f0d4281e02f (patch)
tree23f85aa72d579a4bd2c7098356f8992a2fe501c8 /sys/net80211
parent8c996c7c7b7671f46c069ad2f6e9fb62510d3774 (diff)
split if_enqueue up so drivers can replace ifq handling if needed
if_enqueue() still makes sure packets get handled by pf on the way out, and seen by bridge if needed. however instead of falling through to ifq mapping and output, it now calls a function pointer in the ifnet struct. that pointer defaults to the ifq handling, but drivers can override it to bypass ifq processing. the most obvious users of the function pointer will be virtual interfaces, eg, vlan(4). ifqs are good if you need to serialise access to the thing that transmits packets (like hardware rings on nics), or mitigate the number of times you do ring processing, but neither of those things are desirable on vlan interfaces. ideally vlan could transmit on any cpu without having packets serialised by it's own ifq before being pushed down to an arbitrary number of rings on the parent interface. bypassing ifqs means the driver can push the vlan tag on concurrently and push down to the parent frmo any cpu. ok mpi@ no objection from claudio@
Diffstat (limited to 'sys/net80211')
0 files changed, 0 insertions, 0 deletions