Exemplo n.º 1
0
static void agnx_bss_info_changed(struct ieee80211_hw *dev,
				  struct ieee80211_vif *vif,
				  struct ieee80211_bss_conf *conf,
				  u32 changed)
{
	struct agnx_priv *priv = dev->priv;
	void __iomem *ctl = priv->ctl;
	AGNX_TRACE;

	if (!(changed & BSS_CHANGED_BSSID))
		return;

	spin_lock(&priv->lock);

	if (memcmp(conf->bssid, priv->bssid, ETH_ALEN)) {
		agnx_set_bssid(priv, conf->bssid);
		memcpy(priv->bssid, conf->bssid, ETH_ALEN);
		hash_write(priv, conf->bssid, BSSID_STAID);
		sta_init(priv, BSSID_STAID);
		/* FIXME needed? */
		sta_power_init(priv, BSSID_STAID);
		agnx_write32(ctl, AGNX_BM_MTSM, 0xff & ~0x1);
	}
	spin_unlock(&priv->lock);
} /* agnx_bss_info_changed */
Exemplo n.º 2
0
int
main ()
{
  // regular station
  struct station_class station_regular;

  struct in_addr ip_addresses[2];

  unsigned experiment_wait;


  //////////////////////////////////////////////////////////////////
  // Initial operations

  INFO ("STA NODE STARTED.");

  // convert IP address to internal representation
  if (inet_aton (IP_ADDRESS_REGULAR, &(ip_addresses[ID_REGULAR])) == 0)
    {
      WARNING ("Address '%s' does not appear to be valid.",
	       IP_ADDRESS_REGULAR);
      return ERROR;
    }

  // make wait period long enough to observe association timeout
  experiment_wait = 10;


  //////////////////////////////////////////////////////////////////
  // Regular station initialization

  INFO ("Initializing regular station '%u'...", ID_REGULAR);

  // create regular station
  sta_init (&station_regular, FALSE, ID_REGULAR, ip_addresses,
	    BEACON_INTERVAL);

#ifdef MESSAGE_DEBUG

  // display parameters
  sta_print (&station_regular);

#endif


  //////////////////////////////////////////////////////////////////
  // Wait for association to take place
  INFO ("Running for %u s...", experiment_wait);
  sleep (experiment_wait);


  //////////////////////////////////////////////////////////////////
  // Regular station finalization

  INFO ("Finalizing regular station '%u'...", station_regular.id);

  // finalize regular station
  sta_finalize (&station_regular);

  return SUCCESS;
}
Exemplo n.º 3
0
int
main (int argc, char *argv[])
{
  struct station_class station;

  int is_ap;
  unsigned station_id;
  char station_ip_char[20];
  struct in_addr station_ip;

  unsigned execution_duration;

  //////////////////////////////////////////////////////////////////
  // Initial operations

  if (argc < 3)
    {
      WARNING ("You must provide the node type, id and IP address:");
      WARNING ("stationd AP|STA id ip_address");
      return ERROR;
    }

  if (strncmp (argv[1], "AP", 2) == 0)
    is_ap = TRUE;
  else if (strncmp (argv[1], "STA", 3) == 0)
    is_ap = FALSE;
  else
    {
      WARNING ("Node type '%s' is unrecognized", argv[1]);
      return ERROR;
    }

  station_id = atoi (argv[2]);

  strncpy (station_ip_char, argv[3], 20);

  INFO ("Station daemon started: type=%s id=%d IP=%s",
	argv[1], station_id, argv[3]);

  // convert IP address to internal representation
  if (inet_aton (station_ip_char, &(station_ip)) == 0)
    {
      WARNING ("Address '%s' does not appear to be valid.", station_ip_char);
      return ERROR;
    }

  execution_duration = 10;


  //////////////////////////////////////////////////////////////////
  // Station daemon initialization

  INFO ("Initializing station daemon '%u'...", station_id);

  // create station
  sta_init (&station, is_ap, station_id, &(station_ip), BEACON_INTERVAL);

#ifdef MESSAGE_DEBUG

  // display parameters
  sta_print (&station);

#endif


  //////////////////////////////////////////////////////////////////
  // Wait for association to take place
  INFO ("Executing daemon for %u s...", execution_duration);
  sleep (execution_duration);


  //////////////////////////////////////////////////////////////////
  // Station finalization

  INFO ("Shutting down station daemon '%u'...", station.id);
  // finalize station
  sta_finalize (&station);

  return SUCCESS;
}