Lines Matching full:adapter
165 int ena_sysctl_allocate_customer_metrics_buffer(struct ena_adapter *adapter)
169 adapter->customer_metrics_array = malloc((sizeof(u64) * ENA_CUSTOMER_METRICS_ARRAY_SIZE),
171 if (unlikely(adapter->customer_metrics_array == NULL))
177 ena_sysctl_add_nodes(struct ena_adapter *adapter)
179 struct ena_com_dev *dev = adapter->ena_dev;
182 ena_sysctl_add_customer_metrics(adapter);
184 ena_sysctl_add_eni_metrics(adapter);
186 if (ena_com_get_cap(adapter->ena_dev, ENA_ADMIN_ENA_SRD_INFO))
187 ena_sysctl_add_srd_info(adapter);
189 ena_sysctl_add_wd(adapter);
190 ena_sysctl_add_stats(adapter);
191 ena_sysctl_add_tuneables(adapter);
192 ena_sysctl_add_irq_affinity(adapter);
194 ena_sysctl_add_rss(adapter);
199 ena_sysctl_add_wd(struct ena_adapter *adapter)
207 dev = adapter->pdev;
215 &adapter->wd_active, 0, "Watchdog is active");
218 CTLFLAG_RWTUN, &adapter->keep_alive_timeout,
222 CTLFLAG_RWTUN, &adapter->missing_tx_timeout,
226 CTLFLAG_RWTUN, &adapter->missing_tx_max_queues, 0,
230 CTLFLAG_RWTUN, &adapter->missing_tx_threshold, 0,
235 ena_sysctl_add_stats(struct ena_adapter *adapter)
261 dev = adapter->pdev;
267 tx_ring = adapter->tx_ring;
268 rx_ring = adapter->rx_ring;
270 hw_stats = &adapter->hw_stats;
271 dev_stats = &adapter->dev_stats;
272 admin_stats = &adapter->ena_dev->admin_queue.stats;
309 for (i = 0; i < adapter->num_io_queues; ++i, ++tx_ring, ++rx_ring) {
316 adapter->que[i].oid = queue_node;
321 &adapter->que[i].cpu, 0, "CPU affinity");
323 &adapter->que[i].domain, 0, "NUMA domain");
441 ena_sysctl_add_srd_info(struct ena_adapter *adapter)
457 dev = adapter->pdev;
468 CTLFLAG_RD, &adapter->ena_srd_info.flags, 0,
471 srd_stats_ptr = &adapter->ena_srd_info.ena_srd_stats;
482 ena_sysctl_add_customer_metrics(struct ena_adapter *adapter)
496 dev = adapter->pdev;
497 ena_dev = adapter->ena_dev;
509 CTLFLAG_RD, &adapter->customer_metrics_array[i], 0,
516 ena_sysctl_add_eni_metrics(struct ena_adapter *adapter)
528 dev = adapter->pdev;
538 eni_metrics = &adapter->eni_metrics;
558 ena_sysctl_add_tuneables(struct ena_adapter *adapter)
566 dev = adapter->pdev;
574 CTLTYPE_U32 | CTLFLAG_RW | CTLFLAG_MPSAFE, adapter, 0,
580 CTLTYPE_U32 | CTLFLAG_RW | CTLFLAG_MPSAFE, adapter, 0,
586 CTLTYPE_U32 | CTLFLAG_RW | CTLFLAG_MPSAFE, adapter, 0,
595 CTLTYPE_U16 | CTLFLAG_RW | CTLFLAG_MPSAFE, adapter, 0,
603 ena_sysctl_add_rss(struct ena_adapter *adapter)
611 dev = adapter->pdev;
624 CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_MPSAFE, adapter, 0,
629 CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_MPSAFE, adapter, 0,
640 ena_sysctl_add_irq_affinity(struct ena_adapter *adapter)
648 dev = adapter->pdev;
660 CTLTYPE_S32 | CTLFLAG_RW | CTLFLAG_MPSAFE, adapter, 0,
665 CTLTYPE_S32 | CTLFLAG_RW | CTLFLAG_MPSAFE, adapter, 0,
684 ena_sysctl_update_queue_node_nb(struct ena_adapter *adapter, int old, int new)
690 max = MIN(MAX(old, new), adapter->max_num_io_queues);
693 oid = adapter->que[i].oid;
707 struct ena_adapter *adapter = arg1;
712 if (unlikely(!ENA_FLAG_ISSET(ENA_FLAG_DEVICE_RUNNING, adapter))) {
720 val = adapter->buf_ring_size;
727 ena_log(adapter->pdev, ERR,
734 if (val != adapter->buf_ring_size) {
735 ena_log(adapter->pdev, INFO,
737 val, adapter->buf_ring_size);
739 error = ena_update_buf_ring_size(adapter, val);
741 ena_log(adapter->pdev, ERR,
743 adapter->buf_ring_size);
755 struct ena_adapter *adapter = arg1;
760 if (unlikely(!ENA_FLAG_ISSET(ENA_FLAG_DEVICE_RUNNING, adapter))) {
768 val = adapter->requested_rx_ring_size;
774 if (val < ENA_MIN_RING_SIZE || val > adapter->max_rx_ring_size) {
775 ena_log(adapter->pdev, ERR,
777 val, ENA_MIN_RING_SIZE, adapter->max_rx_ring_size);
784 ena_log(adapter->pdev, ERR,
791 if (val != adapter->requested_rx_ring_size) {
792 ena_log(adapter->pdev, INFO,
794 adapter->requested_rx_ring_size);
796 error = ena_update_queue_size(adapter,
797 adapter->requested_tx_ring_size, val);
799 ena_log(adapter->pdev, ERR,
801 adapter->requested_rx_ring_size);
811 * Change number of effectively used IO queues adapter->num_io_queues
816 struct ena_adapter *adapter = arg1;
821 if (unlikely(!ENA_FLAG_ISSET(ENA_FLAG_DEVICE_RUNNING, adapter))) {
828 tmp = adapter->num_io_queues;
835 ena_log(adapter->pdev, ERR,
842 * The adapter::max_num_io_queues is the HW capability. The system
844 * the relation `adapter::max_num_io_queues >= adapter::msix_vecs`
845 * always holds true, while the `adapter::msix_vecs` is variable across
848 if (tmp > (adapter->msix_vecs - ENA_ADMIN_MSIX_VEC)) {
849 ena_log(adapter->pdev, ERR,
851 adapter->msix_vecs - ENA_ADMIN_MSIX_VEC);
855 if (tmp == adapter->num_io_queues) {
856 ena_log(adapter->pdev, ERR,
859 adapter->num_io_queues);
861 ena_log(adapter->pdev, INFO,
864 tmp, adapter->num_io_queues);
866 old_num_queues = adapter->num_io_queues;
867 error = ena_update_io_queue_nb(adapter, tmp);
871 ena_sysctl_update_queue_node_nb(adapter, old_num_queues, tmp);
883 struct ena_adapter *adapter = arg1;
888 if (unlikely(!ENA_FLAG_ISSET(ENA_FLAG_DEVICE_RUNNING, adapter))) {
895 interval = adapter->metrics_sample_interval;
902 ena_log(adapter->pdev, ERR,
910 ena_log(adapter->pdev, INFO,
912 bzero(&adapter->eni_metrics, sizeof(adapter->eni_metrics));
914 ena_log(adapter->pdev, INFO,
920 adapter->metrics_sample_interval = interval;
931 struct ena_adapter *adapter = arg1;
936 if (unlikely(!ENA_FLAG_ISSET(ENA_FLAG_DEVICE_RUNNING, adapter))) {
943 irq_base_cpu = adapter->irq_cpu_base;
950 ena_log(adapter->pdev, ERR,
957 ena_log(adapter->pdev, INFO,
964 if (irq_base_cpu == adapter->irq_cpu_base) {
965 ena_log(adapter->pdev, INFO,
968 adapter->irq_cpu_base);
972 ena_log(adapter->pdev, INFO,
974 irq_base_cpu, adapter->irq_cpu_base);
976 error = ena_update_base_cpu(adapter, irq_base_cpu);
987 struct ena_adapter *adapter = arg1;
992 if (unlikely(!ENA_FLAG_ISSET(ENA_FLAG_DEVICE_RUNNING, adapter))) {
999 irq_cpu_stride = adapter->irq_cpu_stride;
1006 ena_log(adapter->pdev, ERR,
1013 ena_log(adapter->pdev, INFO,
1017 if (irq_cpu_stride == adapter->irq_cpu_stride) {
1018 ena_log(adapter->pdev, INFO,
1021 adapter->irq_cpu_stride);
1025 ena_log(adapter->pdev, INFO,
1027 irq_cpu_stride, adapter->irq_cpu_stride);
1029 error = ena_update_cpu_stride(adapter, irq_cpu_stride);
1046 struct ena_adapter *adapter = arg1;
1047 struct ena_com_dev *ena_dev = adapter->ena_dev;
1056 if (unlikely(!ENA_FLAG_ISSET(ENA_FLAG_DEVICE_RUNNING, adapter))) {
1061 if (unlikely(!ENA_FLAG_ISSET(ENA_FLAG_RSS_ACTIVE, adapter))) {
1070 error = ena_com_get_hash_function(adapter->ena_dev, &ena_func);
1072 device_printf(adapter->pdev, "Cannot get hash function\n");
1078 device_printf(adapter->pdev, "Unsupported hash algorithm\n");
1084 device_printf(adapter->pdev, "Cannot get hash key\n");
1097 device_printf(adapter->pdev, "Invalid key size\n");
1108 device_printf(adapter->pdev,
1116 device_printf(adapter->pdev, "Cannot fill hash key\n");
1143 struct ena_adapter *adapter = arg1;
1149 if (unlikely(!ENA_FLAG_ISSET(ENA_FLAG_DEVICE_RUNNING, adapter))) {
1154 if (unlikely(!ENA_FLAG_ISSET(ENA_FLAG_RSS_ACTIVE, adapter))) {
1159 indir = adapter->rss_indir;
1171 num_queues = adapter->num_io_queues;
1181 device_printf(adapter->pdev, "Invalid index: %s\n",
1188 device_printf(adapter->pdev, "Index %d out of range\n",
1197 device_printf(adapter->pdev, "Missing ':' separator\n");
1205 device_printf(adapter->pdev, "Invalid value: %s\n",
1212 device_printf(adapter->pdev, "Value %d out of range\n",
1222 ena_rss_indir_get(adapter, indir->table);
1228 error = ena_rss_indir_set(adapter, indir->table);