This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | Next revision Both sides next revision | ||
networking:napi [2016/10/06 06:50] shirai fix in mentioned function name |
networking:napi [2016/11/14 21:59] jwi |
||
---|---|---|---|
Line 95: | Line 95: | ||
* Only one CPU at any time can call napi->poll(); for each ''napi_struct'' this is because only one CPU can pick the initial interrupt and hence the initial //napi_schedule(napi)// | * Only one CPU at any time can call napi->poll(); for each ''napi_struct'' this is because only one CPU can pick the initial interrupt and hence the initial //napi_schedule(napi)// | ||
- | * The core layer invokes devices to send packets in a round robin format. This implies receive is totaly lockless because of the guarantee only that one CPU is executing it. | + | * The core layer invokes devices to send packets in a round robin format. This implies receive is totaly lockless because of the guarantee that only one CPU is executing it. |
* Contention can only be the result of some other CPU accessing the rx ring. This happens only in close() and suspend() (when these methods try to clean the rx ring); Driver authors need not worry about this; synchronization is taken care for them by the top net layer. | * Contention can only be the result of some other CPU accessing the rx ring. This happens only in close() and suspend() (when these methods try to clean the rx ring); Driver authors need not worry about this; synchronization is taken care for them by the top net layer. | ||