-
Notifications
You must be signed in to change notification settings - Fork 14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
*: rebase the tailscale branch onto upstream #16
Conversation
note: PR won't merge, I'll need to push, but I'd appreciate a quick eyeball. |
device/channels.go
Outdated
@@ -19,13 +19,13 @@ import ( | |||
// call wg.Done to remove the initial reference. | |||
// When the refcount hits 0, the queue's channel is closed. | |||
type outboundQueue struct { | |||
c chan *QueueOutboundElement | |||
c chan *[]*QueueOutboundElement |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why pointer to slice out of curiosity? seems weird enough to be worth calling out somewhere to explain what's happening.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We were pooling the slice headers as well as the content, but we since moved to a container in order to shard a mutex, which is also cleaner for this reason.
tun/tcp_offload_linux.go
Outdated
coalesceInsufficientCap coalesceResult = iota | ||
coalescePSHEnding | ||
coalesceItemInvalidCSum | ||
coalescePktInvalidCSum | ||
coalesceSuccess |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
these and the tcpGROResult const values below never go across the network or to disk or to the kernel, do they? (iota should only be used when the values truly don't matter and renumbering them wouldn't break anything)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These are all internal yeah, there are some different buffer &/ state handling semantics for specific cases.
device/channels.go
Outdated
@@ -19,13 +19,13 @@ import ( | |||
// call wg.Done to remove the initial reference. | |||
// When the refcount hits 0, the queue's channel is closed. | |||
type outboundQueue struct { | |||
c chan *[]*QueueOutboundElement | |||
c chan *QueueOutboundElementsContainer |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
oh yay the pointer to slice is gone
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I didn't review super closely or anything, but 🤷♂️
that's great, thank you. It's good to get some eyes on. |
This required integrating the changes from 25eb973 into the GRO patch that had included an earlier iteration.