Lines Matching defs:fbd
13 struct fbnic_dev *fbd = (struct fbnic_dev *)data;
15 fbnic_mbx_poll(fbd);
17 fbnic_wr32(fbd, FBNIC_INTR_MASK_CLEAR(0), 1u << FBNIC_FW_MSIX_ENTRY);
22 static int __fbnic_fw_enable_mbx(struct fbnic_dev *fbd, int vector)
27 fbnic_mbx_init(fbd);
28 err = fbnic_mbx_poll_tx_ready(fbd);
30 dev_warn(fbd->dev, "FW mailbox did not enter ready state\n");
36 fbnic_wr32(fbd, FBNIC_INTR_MASK_CLEAR(0), 1u << FBNIC_FW_MSIX_ENTRY);
43 * @fbd: Pointer to device to initialize
50 int fbnic_fw_request_mbx(struct fbnic_dev *fbd)
52 struct pci_dev *pdev = to_pci_dev(fbd->dev);
55 WARN_ON(fbd->fw_msix_vector);
64 dev_name(fbd->dev), fbd);
69 err = __fbnic_fw_enable_mbx(fbd, vector);
71 free_irq(vector, fbd);
73 fbd->fw_msix_vector = vector;
80 * @fbd: Pointer to device
85 static void fbnic_fw_disable_mbx(struct fbnic_dev *fbd)
88 disable_irq(fbd->fw_msix_vector);
91 fbnic_wr32(fbd, FBNIC_INTR_MASK_SET(0), 1u << FBNIC_FW_MSIX_ENTRY);
96 fbnic_mbx_flush_tx(fbd);
97 fbnic_mbx_clean(fbd);
102 * @fbd: Pointer to device to disable
108 void fbnic_fw_free_mbx(struct fbnic_dev *fbd)
111 if (!fbd->fw_msix_vector)
114 fbnic_fw_disable_mbx(fbd);
117 free_irq(fbd->fw_msix_vector, fbd);
118 fbd->fw_msix_vector = 0;
123 struct fbnic_dev *fbd = data;
126 if (fbd->mac->pcs_get_link_event(fbd) == FBNIC_LINK_EVENT_NONE) {
127 fbnic_wr32(fbd, FBNIC_INTR_MASK_CLEAR(0),
132 fbn = netdev_priv(fbd->netdev);
141 * @fbd: Pointer to device to initialize
148 int fbnic_pcs_request_irq(struct fbnic_dev *fbd)
150 struct pci_dev *pdev = to_pci_dev(fbd->dev);
153 WARN_ON(fbd->pcs_msix_vector);
163 fbd->netdev->name, fbd);
168 fbnic_wr32(fbd, FBNIC_INTR_MSIX_CTRL(FBNIC_INTR_MSIX_CTRL_PCS_IDX),
171 fbd->pcs_msix_vector = vector;
178 * @fbd: Pointer to device that is stopping
183 void fbnic_pcs_free_irq(struct fbnic_dev *fbd)
186 if (!fbd->pcs_msix_vector)
190 fbnic_wr32(fbd, FBNIC_INTR_MSIX_CTRL(FBNIC_INTR_MSIX_CTRL_PCS_IDX),
192 fbnic_wrfl(fbd);
195 synchronize_irq(fbd->pcs_msix_vector);
198 fbnic_wr32(fbd, FBNIC_INTR_MASK_SET(0), 1u << FBNIC_PCS_MSIX_ENTRY);
201 free_irq(fbd->pcs_msix_vector, fbd);
202 fbd->pcs_msix_vector = 0;
205 void fbnic_synchronize_irq(struct fbnic_dev *fbd, int nr)
207 struct pci_dev *pdev = to_pci_dev(fbd->dev);
216 int fbnic_request_irq(struct fbnic_dev *fbd, int nr, irq_handler_t handler,
219 struct pci_dev *pdev = to_pci_dev(fbd->dev);
228 void fbnic_free_irq(struct fbnic_dev *fbd, int nr, void *data)
230 struct pci_dev *pdev = to_pci_dev(fbd->dev);
239 void fbnic_napi_name_irqs(struct fbnic_dev *fbd)
243 for (i = 0; i < ARRAY_SIZE(fbd->napi_irq); i++)
244 snprintf(fbd->napi_irq[i].name,
245 sizeof(fbd->napi_irq[i].name),
246 "%s-TxRx-%u", fbd->netdev->name, i);
249 int fbnic_napi_request_irq(struct fbnic_dev *fbd,
252 struct fbnic_net *fbn = netdev_priv(fbd->netdev);
256 if (!fbd->napi_irq[i].users) {
257 err = fbnic_request_irq(fbd, nv->v_idx,
259 fbd->napi_irq[i].name,
265 fbd->napi_irq[i].users++;
269 void fbnic_napi_free_irq(struct fbnic_dev *fbd,
272 struct fbnic_net *fbn = netdev_priv(fbd->netdev);
275 if (--fbd->napi_irq[i].users)
278 fbnic_free_irq(fbd, nv->v_idx, &fbn->napi[i]);
281 void fbnic_free_irqs(struct fbnic_dev *fbd)
283 struct pci_dev *pdev = to_pci_dev(fbd->dev);
285 fbd->num_irqs = 0;
290 int fbnic_alloc_irqs(struct fbnic_dev *fbd)
293 struct pci_dev *pdev = to_pci_dev(fbd->dev);
300 dev_err(fbd->dev, "Failed to allocate MSI-X entries\n");
305 dev_warn(fbd->dev, "Allocated %d IRQs, expected %d\n",
308 fbd->num_irqs = num_irqs;