Lines Matching refs:fwevt
173 * @fwevt: Firmware event reference
177 static void mpi3mr_fwevt_get(struct mpi3mr_fwevt *fwevt)
179 kref_get(&fwevt->ref_count);
184 * @fwevt: Firmware event reference
188 static void mpi3mr_fwevt_put(struct mpi3mr_fwevt *fwevt)
190 kref_put(&fwevt->ref_count, mpi3mr_fwevt_free);
204 struct mpi3mr_fwevt *fwevt;
206 fwevt = kzalloc(sizeof(*fwevt) + len, GFP_ATOMIC);
207 if (!fwevt)
210 kref_init(&fwevt->ref_count);
211 return fwevt;
217 * @fwevt: Firmware event reference
224 struct mpi3mr_fwevt *fwevt)
232 /* get fwevt reference count while adding it to fwevt_list */
233 mpi3mr_fwevt_get(fwevt);
234 INIT_LIST_HEAD(&fwevt->list);
235 list_add_tail(&fwevt->list, &mrioc->fwevt_list);
236 INIT_WORK(&fwevt->work, mpi3mr_fwevt_worker);
237 /* get fwevt reference count while enqueueing it to worker queue */
238 mpi3mr_fwevt_get(fwevt);
239 queue_work(mrioc->fwevt_worker_thread, &fwevt->work);
246 * @fwevt: Firmware event reference
253 struct mpi3mr_fwevt *fwevt)
258 if (!list_empty(&fwevt->list)) {
259 list_del_init(&fwevt->list);
261 * Put fwevt reference count after
264 mpi3mr_fwevt_put(fwevt);
281 struct mpi3mr_fwevt *fwevt = NULL;
285 fwevt = list_first_entry(&mrioc->fwevt_list,
287 list_del_init(&fwevt->list);
289 * Put fwevt reference count after
292 mpi3mr_fwevt_put(fwevt);
296 return fwevt;
301 * @fwevt: fwevt object which needs to be canceled
305 static void mpi3mr_cancel_work(struct mpi3mr_fwevt *fwevt)
308 * Wait on the fwevt to complete. If this returns 1, then
314 if (cancel_work_sync(&fwevt->work)) {
316 * Put fwevt reference count after
319 mpi3mr_fwevt_put(fwevt);
321 * Put fwevt reference count to neutralize
324 mpi3mr_fwevt_put(fwevt);
339 struct mpi3mr_fwevt *fwevt = NULL;
345 while ((fwevt = mpi3mr_dequeue_fwevt(mrioc)))
346 mpi3mr_cancel_work(fwevt);
349 fwevt = mrioc->current_event;
352 * fwevt work if the controller reset is
354 * same fwevt work (or) when worker thread is
358 if (current_work() == &fwevt->work || fwevt->pending_at_sml) {
359 fwevt->discard = 1;
363 mpi3mr_cancel_work(fwevt);
381 struct mpi3mr_fwevt *fwevt;
392 fwevt = mpi3mr_alloc_fwevt(sz);
393 if (!fwevt) {
397 *(struct mpi3mr_throttle_group_info **)fwevt->event_data = tg;
398 fwevt->mrioc = mrioc;
399 fwevt->event_id = MPI3MR_DRIVER_EVENT_TG_QD_REDUCTION;
400 fwevt->send_ack = 0;
401 fwevt->process_evt = 1;
402 fwevt->evt_ctx = 0;
403 fwevt->event_data_size = sz;
408 mpi3mr_fwevt_add_to_list(mrioc, fwevt);
1288 * @fwevt: Firmware event information.
1297 struct mpi3mr_fwevt *fwevt)
1303 (struct mpi3_event_data_device_status_change *)fwevt->event_data;
1467 * @fwevt: Firmware event reference
1477 struct mpi3mr_fwevt *fwevt)
1484 encl_pg0 = (struct mpi3_enclosure_page0 *) fwevt->event_data;
1485 added = (fwevt->event_id == MPI3_EVENT_ENCL_DEVICE_ADDED) ? 1 : 0;
1599 * @fwevt: Firmware event reference
1608 struct mpi3mr_fwevt *fwevt)
1611 (struct mpi3_event_data_sas_topology_change_list *)fwevt->event_data;
1641 if (fwevt->discard)
1778 * @fwevt: Firmware event reference
1787 struct mpi3mr_fwevt *fwevt)
1790 (struct mpi3_event_data_pcie_topology_change_list *)fwevt->event_data;
1799 if (fwevt->discard)
1829 * @fwevt: Firmware event reference
1837 struct mpi3mr_fwevt *fwevt)
1839 mpi3mr_app_save_logdata(mrioc, fwevt->event_data,
1840 fwevt->event_data_size);
1900 * @fwevt: Firmware event reference
1908 struct mpi3mr_fwevt *fwevt)
1914 mpi3mr_fwevt_del_from_list(mrioc, fwevt);
1915 mrioc->current_event = fwevt;
1923 fwevt->event_id);
1927 if (!fwevt->process_evt)
1930 switch (fwevt->event_id) {
1933 dev_pg0 = (struct mpi3_device_page0 *)fwevt->event_data;
1954 dev_pg0 = (struct mpi3_device_page0 *)fwevt->event_data;
1962 mpi3mr_devstatuschg_evt_bh(mrioc, fwevt);
1968 mpi3mr_encldev_add_chg_evt_bh(mrioc, fwevt);
1974 mpi3mr_sastopochg_evt_bh(mrioc, fwevt);
1979 mpi3mr_pcietopochg_evt_bh(mrioc, fwevt);
1984 mpi3mr_logdata_evt_bh(mrioc, fwevt);
1991 tg = *(struct mpi3mr_throttle_group_info **)fwevt->event_data;
2022 if (fwevt->send_ack)
2023 mpi3mr_process_event_ack(mrioc, fwevt->event_id,
2024 fwevt->evt_ctx);
2026 /* Put fwevt reference count to neutralize kref_init increment */
2027 mpi3mr_fwevt_put(fwevt);
2041 struct mpi3mr_fwevt *fwevt = container_of(work, struct mpi3mr_fwevt,
2043 mpi3mr_fwevt_bh(fwevt->mrioc, fwevt);
2045 * Put fwevt reference count after
2048 mpi3mr_fwevt_put(fwevt);
2811 struct mpi3mr_fwevt *fwevt = NULL;
2813 fwevt = mpi3mr_alloc_fwevt(0);
2814 if (!fwevt) {
2820 fwevt->mrioc = mrioc;
2821 fwevt->event_id = MPI3_EVENT_WAIT_FOR_DEVICES_TO_REFRESH;
2822 fwevt->send_ack = 0;
2823 fwevt->process_evt = 1;
2824 fwevt->evt_ctx = 0;
2825 fwevt->event_data_size = 0;
2826 mpi3mr_fwevt_add_to_list(mrioc, fwevt);
2844 struct mpi3mr_fwevt *fwevt = NULL;
2923 fwevt = mpi3mr_alloc_fwevt(sz);
2924 if (!fwevt) {
2930 memcpy(fwevt->event_data, event_reply->event_data, sz);
2931 fwevt->mrioc = mrioc;
2932 fwevt->event_id = evt_type;
2933 fwevt->send_ack = ack_req;
2934 fwevt->process_evt = process_evt_bh;
2935 fwevt->evt_ctx = le32_to_cpu(event_reply->event_context);
2936 mpi3mr_fwevt_add_to_list(mrioc, fwevt);