| 389 | } |
| 390 | |
| 391 | boolean_t |
| 392 | sfc_rx_check_scatter(size_t pdu, size_t rx_buf_size, uint32_t rx_prefix_size, |
| 393 | boolean_t rx_scatter_enabled, uint32_t rx_scatter_max, |
| 394 | const char **error) |
| 395 | { |
| 396 | uint32_t effective_rx_scatter_max; |
| 397 | uint32_t rx_scatter_bufs; |
| 398 | |
| 399 | effective_rx_scatter_max = rx_scatter_enabled ? rx_scatter_max : 1; |
| 400 | rx_scatter_bufs = EFX_DIV_ROUND_UP(pdu + rx_prefix_size, rx_buf_size); |
| 401 | |
| 402 | if (rx_scatter_bufs > effective_rx_scatter_max) { |
| 403 | if (rx_scatter_enabled) |
| 404 | *error = "Possible number of Rx scatter buffers exceeds maximum number"; |
| 405 | else |
| 406 | *error = "Rx scatter is disabled and RxQ mbuf pool object size is too small"; |
| 407 | return B_FALSE; |
| 408 | } |
| 409 | |
| 410 | return B_TRUE; |
| 411 | } |
| 412 | |
| 413 | /** Get Rx datapath ops by the datapath RxQ handle */ |
| 414 | const struct sfc_dp_rx * |
no outgoing calls
no test coverage detected