{"action":"created","issue":{"url":"https://api.github.com/repos/IRATI/stack/issues/705","labels_url":"https://api.github.com/repos/IRATI/stack/issues/705/labels{/name}","comments_url":"https://api.github.com/repos/IRATI/stack/issues/705/comments","events_url":"https://api.github.com/repos/IRATI/stack/issues/705/events","html_url":"https://github.com/IRATI/stack/pull/705","id":98370349,"number":705,"title":"Pristine 1.3 xmit block: better integration with dev-queue-xmit and net devices","user":{"login":"edugrasa","id":325005,"avatar_url":"https://avatars.githubusercontent.com/u/325005?v=3","gravatar_id":"","url":"https://api.github.com/users/edugrasa","html_url":"https://github.com/edugrasa","followers_url":"https://api.github.com/users/edugrasa/followers","following_url":"https://api.github.com/users/edugrasa/following{/other_user}","gists_url":"https://api.github.com/users/edugrasa/gists{/gist_id}","starred_url":"https://api.github.com/users/edugrasa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/edugrasa/subscriptions","organizations_url":"https://api.github.com/users/edugrasa/orgs","repos_url":"https://api.github.com/users/edugrasa/repos","events_url":"https://api.github.com/users/edugrasa/events{/privacy}","received_events_url":"https://api.github.com/users/edugrasa/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":16,"created_at":"2015-07-31T11:12:02Z","updated_at":"2015-08-07T08:42:47Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/IRATI/stack/pulls/705","html_url":"https://github.com/IRATI/stack/pull/705","diff_url":"https://github.com/IRATI/stack/pull/705.diff","patch_url":"https://github.com/IRATI/stack/pull/705.patch"},"body":"Changes to RMT:\r\n * if writing to the N-1 flow returns -EAGAIN, requeue PDU, mark N-1 port as DISABLED.\r\n\r\nChanges to shim DIF:\r\n * The only way to get a clue on congestion at the netdevice and get notifications of when the device is ready to transmit again without modifying linux kernel source files is to attach a Qdisc to the physical device driver where packets of the shim DIF will go through (i.e. eth0, eth1, etc..).\r\n\r\n* This Qdisc has a queue that is populated and drained by the traffic control layer, based on feedback from the device driver. When the queue of the Qdisc is full, dev_queue_xmit will return error and the shim will return -EAGAIN on the write operation (RMT will mark N-1 flow as DISABLED as explained in the changes to the RMT). When the queue starts to decrease (due to data being transmitted by the device) and reaches a certain threshold, the qdisc will tell the shim ethernet to re-enable all the flows that were going through that device. When this happens affected RMTs will schedule the tasklets to empty their queues, writing to N-1 flows again until RMT queues are empty or write returns -EAGAIN.\r\n\r\nMaintainers: @sandervrijders, @miqueltarzan. It would be nice if @vmaffione could also have a look."},"comment":{"url":"https://api.github.com/repos/IRATI/stack/issues/comments/128642687","html_url":"https://github.com/IRATI/stack/pull/705#issuecomment-128642687","issue_url":"https://api.github.com/repos/IRATI/stack/issues/705","id":128642687,"user":{"login":"lbergesio","id":1797884,"avatar_url":"https://avatars.githubusercontent.com/u/1797884?v=3","gravatar_id":"","url":"https://api.github.com/users/lbergesio","html_url":"https://github.com/lbergesio","followers_url":"https://api.github.com/users/lbergesio/followers","following_url":"https://api.github.com/users/lbergesio/following{/other_user}","gists_url":"https://api.github.com/users/lbergesio/gists{/gist_id}","starred_url":"https://api.github.com/users/lbergesio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lbergesio/subscriptions","organizations_url":"https://api.github.com/users/lbergesio/orgs","repos_url":"https://api.github.com/users/lbergesio/repos","events_url":"https://api.github.com/users/lbergesio/events{/privacy}","received_events_url":"https://api.github.com/users/lbergesio/received_events","type":"User","site_admin":false},"created_at":"2015-08-07T08:42:47Z","updated_at":"2015-08-07T08:42:47Z","body":"You are right. I do not get the comment now. Since the shim-eth-eth will have only have 1 qdisc although it supports several N+1 flows (from the same app) you have to disable and enable all the ports so all the N+1 ports. And the code does that... maybe it is outdated or we are missing something. I will try to clarify it today"}}