Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/drivers/net/wireless/ti/wl12xx/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  event.c   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0-only
/*
 * This file is part of wl12xx
 *
 * Copyright (C) 2012 Texas Instruments. All rights reserved.
 */


#include "event.h"
#include "scan.h"
#include "../wlcore/cmd.h"
#include "../wlcore/debug.h"

int wl12xx_wait_for_event(struct wl1271 *wl, enum wlcore_wait_event event,
     bool *timeout)
{
 u32 local_event;

 switch (event) {
 case WLCORE_EVENT_ROLE_STOP_COMPLETE:
  local_event = ROLE_STOP_COMPLETE_EVENT_ID;
  break;

 case WLCORE_EVENT_PEER_REMOVE_COMPLETE:
  local_event = PEER_REMOVE_COMPLETE_EVENT_ID;
  break;

 default:
  /* event not implemented */
  return 0;
 }
 return wlcore_cmd_wait_for_event_or_timeout(wl, local_event, timeout);
}

int wl12xx_process_mailbox_events(struct wl1271 *wl)
{
 struct wl12xx_event_mailbox *mbox = wl->mbox;
 u32 vector;


 vector = le32_to_cpu(mbox->events_vector);
 vector &= ~(le32_to_cpu(mbox->events_mask));

 wl1271_debug(DEBUG_EVENT, "MBOX vector: 0x%x", vector);

 if (vector & SCAN_COMPLETE_EVENT_ID) {
  wl1271_debug(DEBUG_EVENT, "status: 0x%x",
        mbox->scheduled_scan_status);

  if (wl->scan_wlvif)
   wl12xx_scan_completed(wl, wl->scan_wlvif);
 }

 if (vector & PERIODIC_SCAN_REPORT_EVENT_ID) {
  wl1271_debug(DEBUG_EVENT,
        "PERIODIC_SCAN_REPORT_EVENT (status 0x%0x)",
        mbox->scheduled_scan_status);

  wlcore_scan_sched_scan_results(wl);
 }

 if (vector & PERIODIC_SCAN_COMPLETE_EVENT_ID)
  wlcore_event_sched_scan_completed(wl,
        mbox->scheduled_scan_status);
 if (vector & SOFT_GEMINI_SENSE_EVENT_ID)
  wlcore_event_soft_gemini_sense(wl,
            mbox->soft_gemini_sense_info);

 if (vector & BSS_LOSE_EVENT_ID)
  wlcore_event_beacon_loss(wl, 0xff);

 if (vector & RSSI_SNR_TRIGGER_0_EVENT_ID)
  wlcore_event_rssi_trigger(wl, mbox->rssi_snr_trigger_metric);

 if (vector & BA_SESSION_RX_CONSTRAINT_EVENT_ID)
  wlcore_event_ba_rx_constraint(wl,
           BIT(mbox->role_id),
           mbox->rx_ba_allowed);

 if (vector & CHANNEL_SWITCH_COMPLETE_EVENT_ID)
  wlcore_event_channel_switch(wl, 0xff,
         mbox->channel_switch_status);

 if (vector & DUMMY_PACKET_EVENT_ID)
  wlcore_event_dummy_packet(wl);

 /*
 * "TX retries exceeded" has a different meaning according to mode.
 * In AP mode the offending station is disconnected.
 */

 if (vector & MAX_TX_RETRY_EVENT_ID)
  wlcore_event_max_tx_failure(wl,
    le16_to_cpu(mbox->sta_tx_retry_exceeded));

 if (vector & INACTIVE_STA_EVENT_ID)
  wlcore_event_inactive_sta(wl,
       le16_to_cpu(mbox->sta_aging_status));

 if (vector & REMAIN_ON_CHANNEL_COMPLETE_EVENT_ID)
  wlcore_event_roc_complete(wl);

 return 0;
}

Messung V0.5
C=96 H=93 G=94

¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.