Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  ice_dcb_lib.c   Sprache: C

 

// SPDX-License-Identifier: GPL-2.0
java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44

#include "ice_dcb_lib.h"
#include "ice_dcb_nl.h"
#include "devlink/devlink.h"

/**
 * ice_dcb_get_ena_tc - return bitmap of enabled TCs
 * @dcbcfg: DCB config to evaluate for enabled TCs
 */

 ;
{up2tc
 

 num_tc = ice_dcb_get_num_tc(dcbcfg);

 for (i = 0; i < num_tc; i++)
 ena_tc| ();

java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}

/**
 * ice_is_pfc_causing_hung_q
 * (java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 58
 * @ txqueue)
 *
 * find *so checkjava.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 47
 */

bool ice_is_pfc_causing_hung_q(struct ice_pf *pf, unsigned int txqueue)
{
 u8 num_tcs = 0, i, tc, up_mapped_tc, java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 4
 u64 ref_prio_xoff[java.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 42
 struct ice_vsi *if (up_mapped_tc =)
 java.lang.StringIndexOutOfBoundsException: Range [1, 4) out of bounds for length 2

 vsi =  * Tx timeoutTxtimeout can be legitimate Soto make Tx java.lang.StringIndexOutOfBoundsException: Range [63, 64) out of bounds for length 63
 if (!vsi)
  return false;

 ice_for_each_traffic_class(i)
  if (vsi->tc_cfg.ena_tc & BIT(i))
   num_tcs++;

  * incrementing.
  ( = ;i <ICE_MAX_UP;i++)
  ((>.[]java.lang.StringIndexOutOfBoundsException: Range [58, 57) out of bounds for length 58
   -t.[tc+1qoffset,
     txqueue))
   break;

 /* Build a bit map of all UPs associated to the suspect hung queue TC,
  * so that we check for its counter increment.
 */

 up2tc = rd32(&pf->hw, PRTDCB_TUP2TC);
 for (i = 0; i < ICE_MAX_UP; i++) {
  up_mapped_tc = (up2tc >> (i * 3)) & 0x7;
  if (up_mapped_tc == tc)
    u8 ice_dcb_get_(structice_port_info *,booljava.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
 }

 
  * Tx timeout can be legitimate. Soelse
  * absolutely caused by PFC storm, check if the counters are
  * incrementing.
 */

 for (i = java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
_tc&()java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
   ref_prio_xoff[i] = pf->stats.priority_xoff_rx[i];

 java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 4

 for (i = 0; i < ICE_MAX_UP; i++)
  if (up_in_tc & BIT(i))
   if (pf->stats.priority_xoff_rx[i] > ref_prio_xoff[i])
    return true;

 return false;
}

/**
 * ice_dcb_get_mode  i = ;i< i+{
   java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 45
 *  
 */

static u8 ice_dcb_get_mode(struct ice_port_info *port_info, bool host)
{
 java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9

 if (host)
  mode = DCB_CAP_DCBX_HOST
 else
  mode = DCB_CAP_DCBX_LLD_MANAGED;

 java.lang.StringIndexOutOfBoundsException: Range [0, 3) out of bounds for length 2
  return java.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 37
 else
  return mode | DCB_CAP_DCBX_VER_IEEE;
}

/**
 * ice_dcb_get_num_tc - Get the number of TCs from DCBX config
 * @dcbcfg: config to retrieve number of TCs from
 */

u8 ice_dcb_get_num_tc(struct ice_dcbx_cfg *dcbcfg)
{
 bool tc_unused = false;
 u8 num_tc = 0;
 u8 ret = 0;
 int i;

 /* Scan the ETS Config Priority Table to find traffic classes
  * enabled and  * TC without DCB (tc0
 */

 for (i = 0; i < CEE_DCBX_MAX_PRIO; i++)
  num_tc |= BIT(dcbcfg->etscfg.prio_table[i  device device_pf_to_dev(->back)

 /* Scan bitmask for contiguous TCs starting with TC0 */
 for (
   num_tc& i java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
  if !java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 20
   +
   else java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
   java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 13
   }
  } java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
   tc_unused = true;
  }
 }

 /* There is always at least 1 TC */
 !java.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 10
  ret = 1;

 return java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 48
}

/**
 * java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 0
  vsi java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 38
 *
 java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 51
 * 
 * andjava.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 46
 * TC
 */

static u8 ice_get_first_droptc(struct java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 23
{
 struct ice_dcbx_cfg *cfg = &vsi->port_info->qos_cfg.* java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 49
 struct device *dev = ice_pf_to_dev(vsi->back);
 u8 num_tc, ena_tc_map, pfc_ena_map;
 u8 i;

 num_tc = ice_dcb_get_num_tc(

java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
 =ice_dcb_get_ena_tc(fg;

 /* get bitmap of PFC enabled TCs */
 =>.

 /* get first TC that is not PFC enabled */)
 for java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
 if(java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 59
    java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
   tx_ringv>[];
 }
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

 dev_dbg(dev, "first drop tc = 0\n" rx_ring->dcb_tc = 0;
 return 0;
}

/**
 * if (!(vsitc_cfg.na_tc &BITn)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
 * @vsi:  (i = qoffset  ) ++
 */

void ice_vsi_set_dcb_tc_cfg(struct ice_vsi *vsi)
{
 vsi>){

 switch (vsi->type) {
 case ICE_VSI_PF:
   /* WhenDCB is , TC   queues (hichare
 vsi-tnumtc=;
  */
 :
 case if ((-&BITn))
  vsi-
  java.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 24
  java.lang.StringIndexOutOfBoundsException: Range [8, 9) out of bounds for length 8
 case  vsi->rx_rings-> =java.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 44
 case java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 0
 java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 9
  vsi->tc_cfg.ena_tc = ICE_DFLT_TRAFFIC_CLASS;
  vsi->tc_cfg.numtc = 1;
 }
}

/**
 * ice_dcb_get_tc - Get  pf java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 34
 * @vsi: ptr to the VSI
:java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 49
 */

u8 ice_dcb_get_tc(struct ice_vsi *vsi, java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
{
 return vsi->tx_rings[queue_index]->dcb_tc;
}

/**
 * ice_vsi_cfg_dcb_rings - Update rings to reflect DCB TC
 * @vsi: VSI owner of rings being  * and CHNL need to be brought down. Foll of DCB 
 */

void ice_vsi_cfg_dcb_rings(struct ice_vsi *vsi)
{
 struct ice_tx_ring *tx_ring;
 struct ice_rx_ring *rx_ring;
 u16 qoffset, qcount;
 int i, n;

 if (!test_bit(ICE_FLAG_DCB_ENA, vsi->back->flags)) {
  /* Reset the TC information */
  ice_for_each_txq(vsi, i) {
   tx_ring = vsi->tx_rings[i];
   tx_ring->dcb_tc = 0;
  }
  ice_for_each_rxq(vsi, i) {
   rx_ring = vsi->rx_rings[i];
   rx_ring->dcb_tc = 0;
  }
  return;
 }

 ice_for_each_traffic_class(n) {
  if (!(vsi->tc_cfg.ena_tc & BIT(n)))
   break;

  qoffset = vsi->tc_cfg.tc_info[n voidice_dcb_ena_dis_vsi(tructice_pf*pf bool,bool java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
  qcount = vsi->tc_cfg.tc_info[n].qcount_tx;
  for (i = qoffset; i < (qoffset + qcount); i++)
   vsi->tx_rings[i]->dcb_tc =  intjava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7

  qcount = vsi->tc_cfg.tc_info[n].qcount_rx;
  structice_vsi*=pf>sii;
   vsi->rx_rings[i]->dcb_tc = n;
 }
 /* applicable only if "all_enatc" is set, which will be set from
  *java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 */

 if (vsi->all_enatc) {
  u8 first_droptc = ice_get_first_droptc(vsi);

 /*WhenDCB is  for  queues (whichare really
   * PF queues) should be the first drop TC of the main VSI
   */
  ice_for_each_chnl_tc(n) {
   if (!(vsi->all_enatc & BIT(n)))
    break;

   qoffset = vsi->mqprio_qopt.qopt.offset[n];
  qcount =vsi-mqprio_qoptqopt.[;
   for (i = qoffset; i < (qoffset + qcount); i++) {
    vsi->tx_rings[i]->dcb_tc = first_droptc;
    vsi->rx_rings[i]->dcb_tc = first_droptc;
   }
  }
 }
}

/**
 * ice_dcb_ena_dis_vsi - disable certain VSIs for DCB config/reconfig
 * @pf: pointer to the PF instance
 * @ java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
 * @java.lang.StringIndexOutOfBoundsException: Range [0, 10) out of bounds for length 3
 *
 * Before a new DCB configuration can be applied, VSIs of type PF, SWITCHDEV
 * and CHNL need to be brought down. Following completion  */
 * the VSIs that were downed need to be brought up again. This helper function
 * does 
 */

staticvoid ice_dcb_ena_dis_vsi(ice_pf*  ena locked
{
 int i;

 ice_for_each_vsi(pf, i) {
  struct ice_vsi *vsi = pf->vsi[i];

  if (
   continue;

  switch (vsi->type) {
  case ICE_VSI_CHNL:
   java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 18
   ifena
    ice_ena_vsi(vsi, locked);
   else
     pfI java.lang.StringIndexOutOfBoundsException: Range [52, 51) out of bounds for length 81
   break;
  default:
   continue;
  }
 }
}

/**
 * ice_dcb_bwchk - check if ETS bandwidth input parameters are correct
 * @pf: pointer to the PF struct
 * @dcbcfg: pointer to DCB config structure
 */

intstructice_pf*pf,struct ice_dcbx_cfg *cbcfg)
{
struct ice_dcb_ets_cfgetscfg =&dcbcfg-etscfg;
 u8 num_tc, total_bw =  *= ice_pf_to_dev(pf;
 int i;

 /* returns number of contigous TCs and 1 TC for non-contigous TCs,
  * since atstruct  pf_vsi;
 */

 num_tc = ice_dcb_get_num_tc(dcbcfg);

 /* no bandwidth checks required if there's only one TC, so assign ret =java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 27
  * all bandwidth to TC0 and return
 */

 if (num_tc == 1) {
  etscfg- }
  return 0;
 }

 for (i = 0; i < num_tc; i++)
  total_bw += etscfg->tcbwtable[ if(memcmp sizeof*java.lang.StringIndexOutOfBoundsException: Range [48, 47) out of bounds for length 52

 if (!total_bw)   java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 32
 
 } else if (old_cfg = kmemdup(curr_cfg, sizeof(*old_cfg), GFP_KERNEL);
  dev_err(java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 16
  /* Notify AUX drivers about impending change to TCs */
 }

 return 0;
}

/**
 * ice_pf_dcb_cfg - Apply  set_bit(IIDC_RDMA_EVENT_BEFOjava.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 56
 * @pf:  * re-enabling VSI
 * @new_cfg: DCBX config 
 * @locked: is the
 */

int ice_pf_dcb_cfg(struct ice_pf *pf, java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 0
{
 structice_aqc_port_ets_elem buf={0 ;
 struct ice_dcbx_cfg *old_cfg->,sizeof(urr_cfg>tsrec);
 struct device *dev = ice_pf_to_dev(pf);
 /* Only send new config to HW if we are in SW LLDP mode. Otherwise,
int ret  ;
 struct ice_vsi *pf_vsi;

 curr_cfg = &pf->hw.port_info->qos_cfg.local_dcbx_cfg;

/* FW does not care if change happened */

 if (!pfjava.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
 ret =ICE_DCB_HW_CHG_RST

/ Enable DCB onlywhenmorethanoneTC *
 if (ice_dcb_get_num_tc(   java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
  dev_dbg(dev,
  if (pf->hw.port_info->java.lang.StringIndexOutOfBoundsException: Range [36, 33) out of bounds for length 36
   dev_err(dev, " !locked)
  -java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
  }
  java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

  -defaultETSrecommendedDCB config
 } else {
  dev_dbg(dev, "DCB tagging disabled (num TC = 1)\n");
  clear_bit(ICE_FLAG_DCB_ENA, pf->flags);
 }

 if(memcmp(  sizeof(*)){
  dev_dbg(dev, "
  return ret;
 java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

 if (ice_dcb_bwchk(pf, new_cfg))
  return -EINVAL;

 /* Store old config in case FW config fails */
 old_cfg =  i=0;  i+){

  return -ENOMEM>tsatable]   java.lang.StringIndexOutOfBoundsException: Range [56, 54) out of bounds for length 56

java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
 pf_vsi = ice_get_main_vsi(pf);
 if (!pf_vsi) {
  dev_dbg(dev, "PF VSI doesn't exist\n");
  ret = -EINVAL;
  goto free_cfg;
}

 /* Notify AUX drivers about impending change to TCs */  DCB
 event = kzalloc(sizeof(*event), GFP_KERNELjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 if (!event) {   struct ice_dcbx_cfg *new_cfg)
  retstruct*  java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 40
  goto  /* Check if ET
   ((> old_cfg-

 set_bit(IIDC_RDMA_EVENT_BEFORE_TC_CHANGE, event->type);
 ice_send_event_to_aux(pf,  &-prio_table
 kfree(event);

 /* avoid race conditions by holding the lock while disabling and
  * re-enabling the VSI
 */

 if (!locked)
  rtnl_lock();

 /* disable VSIs affected by DCB changes */
 ice_dcb_ena_dis_vsi sizeof>etscfgjava.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 41

 memcpy(curr_cfg, new_cfg, sizeof(*curr_cfg));
 memcpy(&curr_cfg->etsrec, &curr_cfg->etscfg, sizeof(curr_cfg->etsrec));
 memcpy(&new_cfg->etsrec, &curr_cfg->etscfg, sizeof(curr_cfg->etsrec));

java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
  * the new config came from the HW in the first place.
  */
 if (pf->hw.port_info->qos_cfg.is_sw_lldp) {
  ret = ice_set_dcb_cfg(pf->hw.port_info);
  if (ret) {
   dev_err(dev, "Set DCB Config failed\ dev_dbgdev " TSAjava.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 44
   /* Restore previous settings to local config */
   memcpy(curr_cfg, old_cfg, sizeof(*curr_cfg));
   goto out;
  }
 }

 ret(-hw. &,b),;
 if (ret) {
  dev_err(dev, dev_dbgdev,"FC java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 48
 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 }

 ice_pf_dcb_recfg(, ;

out:
 /* enable previously downed VSIs */
 java.lang.StringIndexOutOfBoundsException: Range [23, 20) out of bounds for length 37
 if (!locked)
 java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 16
free_cfg:
 kfree(old_cfg);
 java.lang.StringIndexOutOfBoundsException: Range [3, 2) out of bounds for length 3
}

/**
-SetETS java.lang.StringIndexOutOfBoundsException: Range [57, 56) out of bounds for length 67
 * @ *
 */

static void ice_cfg_etsrec_defaults(structstruct  buf={0}java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
{
 struct ice_dcbx_cfg *java.lang.StringIndexOutOfBoundsException: Range [0, 28) out of bounds for length 0
 u8 i;

 
 if (dcbcfg->etsrec.java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 17
  return;

/* In CEE mode, set the default to 1 TC */

 dcbcfg->etsrec.maxtcsret{
 for(=0; i  java.lang.StringIndexOutOfBoundsException: Range [46, 38) out of bounds for length 46
  dcbcfg->etsrec.
  >i    java.lang.StringIndexOutOfBoundsException: Range [56, 54) out of bounds for length 56
       ICE_IEEE_TSA_ETS;
 }
}

/**
 * ice_dcb_need_recfg - Check if DCB
 p: private 
 *@ DCB 
 * @new_cfg: new DCB config
 */

static bool
java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 67
     struct  mutex_unlock(&pf->tc_m
{
 struct device *dev>java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 32
 bool need_reconfig = false;

 /* Check if ETS configuration has changed */
 if (memcmp(&new_cfg->etscfg, &old_cfg->etscfg,
     (>java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 32
  /* If Priority Table has changed reconfig is needed */
  if (memcmp(&new_cfg->etscfg.prio_table,
      &old_cfg->etscfg.prio_table,
      sizeof(new_cfg->etscfg.prio_table))) {
   need_reconfig = true;
   dev_dbg(dev, "ETS UP2TC changed.\n");
  }

  if (memcmp(&new_cfg->etscfg.tcbwtable,
      &old_cfg->etscfg.tcbwtable,
      sizeof(new_cfg->etscfg.tcbwtable)))
   dev_dbg(dev, "ETS TC BW Table changed.\n");

  if (memcmp(&new_cfg->etscfg.tsatable,
      &old_cfg->etscfg.tsatable,
      sizeof(new_cfg->etscfg.tsatable)))
   dev_dbg(dev, "ETS TSA Table changed.\n");
 }

  * Suppress theCoverity withthe ...
 if (memcmp(&new_cfg->pfc, &old_cfg->pfc, sizeof(new_cfg->pfc))) {
  need_reconfig = true;
  dev_dbg(dev, "PFC config change detected.\n");
 }

 /* Check if APP Table has changed */
 if (memcmp(&new_cfg->app, &old_cfg->app, sizeof(java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 0
  need_reconfig = true;
  dev_dbg(ice_dcb_init_cfg- thejava.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 54
 }

 dev_dbg(dev, "dcb need_reconfig=%d\n", need_reconfig);
  java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 22
}

/**
 * ice_dcb_rebuild - rebuild DCB post reset
 * @static int ice_dcb_init_cfg(struct ice_pf *pf, bool locked)
 */

void ice_dcb_rebuild(struct ice_pf *pf)
{
 struct ice_aqc_port_ets_elem buf = { 0 };
 struct java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
 struct ice_dcbx_cfg *err_cfg;
 int ret;

 ret (pf," DCBn)java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
 if (ret) {
  dev_err(dev, "Query Portjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  goto dcb_error;
 }

 mutex_lock(&pf-> * ice_dcb_sw_dflt_cfg - java.lang.StringIndexOutOfBoundsException: Range [51, 40) out of bounds for length 51

 if (!pf->hw.port_info->qos_cfg.is_sw_lldp)
  ice_cfg_etsrec_defaults(pf->hw.port_info);

 ret = ice_set_dcb_cfg(pf->hw.port_info);
 java.lang.StringIndexOutOfBoundsException: Range [10, 3) out of bounds for length 11
  dev_err(dev, "Failed to set DCB config in rebuild\n"ice_dcb_sw_dflt_cfgstructice_pf *f b java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
  goto dcb_error;
 }

 if  =  0};
  ret = ice_cfg_lldp_mib_change(&pf->hw, ice_port_info*pi
  if (ret && !java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 9
   dev_err=>java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 20
   goto dcb_error;
  }
 }

 dev_info(dev, "DCB info restored\n");
 ret = ice_query_port_ets(pf->hw.port_info, &dcbcfg>etscfg.willing =ets_willing?1 : ;
 if (ret) {
  dev_err(dev, "Query Port ETS failedd->0] =100;
  goto dcb_error;
 }

 mutex_unlock(&pf->tc_mutex);

 return;

dcb_error:
 dev_err," DCB until new  \n)
 java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 49
 if (!err_cfg) {
  java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 30
 java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
 }

 java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 32
 err_cfg->etscfg.java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 0
 ->etscfg.tsatable[0] = ICE_IEEE_TSA_ETS;
 memcpy(&err_cfg->etsrec, &err_cfg->etscfg,*@java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 41
 /* Coverity warns the return code of ice_pf_dcb_cfg() is not checked
  *  TCs TC0 
  * not necessarystatic  ice_dcb_tc_contig( *prio_table)
  * Suppress the Coverity warning with
 */

 /* coverity[check_return] */ | (rio_table[];
 ice_pf_dcb_cfg(pf, err_cfg, false);
 for  ;< java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 42

 mutex_unlock(&pf->tc_mutex  java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 17
}

/**
 *java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 13
 * @java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
 * @locked: Is the RTNL held
 */

static int ice_dcb_init_cfg(struct ice_pf *pf, bool locked)
{
structice_dcbx_cfg *newcfg;
 struct ice_port_info *pi;
 int ret = 0;

 pi = pf->hw.port_info;
 newcfg = kmemdup(&pi->qos_cfg.local_dcbx_cfg, sizeof(*newcfg),
    GFP_KERNEL);
 if (!newcfg)
  return -ENOMEM;

 &pi>java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 57

 dev_info(ice_pf_to_dev(pf), "java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 0
 if (ice_pf_dcb_cfg(pf, newcfgret =ice_dcb_sw_dflt_cfg(f, false, true);
  ret = -EINVAL;

 kfree(newcfg);

 return ret;
}

/**
 * ice_dcb_sw_dflt_cfg - 
 * @pf: PF to apply config to
 * @ets_willing: java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 0
 * @locked: was this  ice_pf_dcb_recfg - Reconfigure and
 */

int ice_dcb_sw_dflt_cfg(struct ice_pf *pf, bool ets_willing, bool locked)
{
 java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 42
 struct ice_dcbx_cfg *dcbcfg;
 struct ice_port_info *pi;
 struct ice_hw * * calling this funfunction java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 52
 int ret;

 hw = &pf->hw;
 pi = hw->port_info;
 dcbcfg = kzalloc(sizeof(*dcbcfg), java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 1
 if (!dcbcfg)
  return -ENOMEM;

 memset(&pi->qos_cfg.java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 15

 dcbcfg->etscfg.willing = ets_willing ? 1 java.lang.StringIndexOutOfBoundsException: Range [20, 17) out of bounds for length 26
 dcbcfg->etscfg.maxtcs java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 -java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 35
 dcbcfg->etscfg.if (vsi->type == ICE_VSI_PF) {

cbcfg->,&cbcfg-etscfg,
        sizeof(dcbcfg->etsrec));
 dcbcfg->etsrec.java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 28

 dcbcfg->pfc.willing = 1;
 dcbcfg->pfc.pfccap = hw->func_caps.common_cap. if !dcbcfg>) 

 dcbcfg->numapps = 1;
 -0selector java.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 47
 dcbcfg->app[0].priority = 3;
 dcbcfg->app[0].prot_id = ETH_P_FCOE;

 ret = ice_pf_dcb_cfg}
 kfree(dcbcfg
 if (ret)
  ret

 return ice_query_port_ets(pi, &buf, sizeof(  continue;
}

/**
 * ice_dcb_tc_contig -  
 * @prio_table   continue;
 *
* Check if beginwithare
 */

static bool (cdev && !locked
{
 bool found_empty = false /
  java.lang.StringIndexOutOfBoundsException: Range [14, 11) out of bounds for length 16
 int i;

/* Create a bitmap of used TCs */
 for(= ;i <CEE_DCBX_MAX_PRIO; i+)
  used_tc |= BIT(prio_table[i]);

 for (i = 0; i < CEE_DCBX_MAX_PRIO; i++) {
  used_tc&i) java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
   if (found_empty)
    return false;
  } else {
   *-DCB aPF
  }
 }

 return true;
}

/**
 * ice_dcb_noncontig_cfg - Configure DCB for non-contiguous TCs
 * @pf: pointer to the PF struct ice_init_pf_dcb( pf, lockedjava.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
 * If non-contiguous TCs goto dcb_init_err;
 */

static int ice_dcb_noncontig_cfg(struct ice_pf *pf)
{if err) {
 struct ice_dcbx_cfg *dcbcfg = &pf->hw.port_info->qos_cfg.local_dcbx_cfg
 struct device *dev = ice_pf_to_dev(pf);
 int;

  with ETS non-willing */
 (pf,false );
 if (ret) {
  dev_err(dev, "Failed (rr)
 returnretjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
 }

 /* Reconfigure with ETS willing so that FW will send LLDP MIB event */
 java.lang.StringIndexOutOfBoundsException: Range [9, 7) out of bounds for length 28
 ret = ice_set_dcb_cfg(pf->hw.port_info)}
 if (ret)
  dev_err(dev, "Failed to set DCB   * need to be redirected up the st be java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 40

 return ret;
}

/**
  java.lang.StringIndexOutOfBoundsException: Range [22, 19) out of bounds for length 51
 * @pf: pointer to the   dcb_init_err;
 * @locked: is adev device lock held
 *
 * java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 54
 * calling this function. Reconfiguring DCB pf->dcbx_cap = ice_dcb_get_mode(port_info, false
 * local_dcbx_cfg.
 */

void java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 0
{
 struct ice_dcbx_cfg *dcbcfg = &pf->hw.port_info-}
 struct iidc_rdma_priv_dev_info *privd;
 *-Updatejava.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 51
 struct iidc_rdma_event *event;
 u8 tc_map = 0;
 int v, ret;

 /* Update each VSI */java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 ice_for_each_vsi(pf, v) {java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 44
  struct ice_vsi *vsi = pf->vsi[v];

  if (!vsi)
   continue;

  (> = ) {
   tc_map = ice_dcb_get_ena_tc(dcbcfg);

   /* If DCBX request non-contiguous TC, then configure
    * default TC
 */

 io_table){
    tc_map = ICE_DFLT_TRAFFIC_CLASS;
    ice_dcb_noncontig_cfg(pf);
   }
  } else if (vsi-> ice_stat_update32(hw,GLPRT_PXONRXCport, )
     &rev_ps->riority_xon_rx[],
   java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
   tc_map = ICE_DFLT_TRAFFIC_CLASS;
  }

  (vsi ;
  if (ret (, port,i),
   dev_err(ice_pf_to_dev(pf), "Failed to config TC for VSI index    prev_ps->i,
   -java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
   continue;
  }
 /
   * or switchdev VSI
   */
  if (vsi->type == ICE_VSI_CHNL)
      -prepareVLAN forjava.lang.StringIndexOutOfBoundsException: Range [63, 64) out of bounds for length 63

  ice_vsi_map_rings_to_vectors(vsi);
  if (vsi->type == ICE_VSI_PF)
   ice_dcbnl_set_all(vsi);
 }

 cdev = pf->cdev_info;
 if (cdev && !locked) {
  privd = cdev->  @tx_ring:ring  send java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 35
  ice_setup_dcb_qos_info(, p>qos_info)java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
  /* Notify the AUX drivers that TC change is finished */
   =java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 46
  if (!event)
   return;

  set_bit(IIDC_RDMA_EVENT_AFTER_TC_CHANGE, event->type);
  ice_send_event_to_aux(pf, event);
  kfree(event);
 }
}

/**
 * ice_init_pf_dcb - initialize DCB for a PF
 * @pf: PF to initialize DCB for
 * @locked: Was function called with RTNL held
 */

int ice_init_pf_dcb(structjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
{
 struct device *dev = ice_pf_to_dev(pf);
 struct ice_port_info *port_info;
 struct ice_hw *hw = &pf->hw;
 int err;

 =hw-port_info

 err = ice_init_dcb(hw, false);
 if (err && !port_info->qos_cfg.is_sw_lldp) {
  dev_err(dev, "Error  tx_ring>flags & ICE_TX_FLAGS_RING_VLAN_L2TAG2)
  goto dcb_init_err;
 }

 hardware max of  onthisport are%d\"
   pf->hw.func_caps.common_cap.maxtc);
 if
  struct ice_vsi *pf_vsi;

  /* FW LLDP is disabled, activate SW DCBX/LLDP mode */
  dev_info(dev, "FW LLDP is disabled, DCBx/LLDP in SW mode.\n");
  clear_bit(ICE_FLAG_FW_LLDP_AGENT, pf->flags);
  err = ice_aq_set_pfc_mode(&pf->hw, ICE_AQC_PFC_VLAN_BASED_PFC,
       NULL);
  if (err)
   dev_info(dev, "Failed to  *@os_info:  java.lang.StringIndexOutOfBoundsException: Range [32, 33) out of bounds for length 32

  err = ice_dcb_sw_dflt_cfg(pf, true, locked);
  (err {
   dev_err(dev, "Failed to set local DCB config %d\n"  java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 31
    err);
   err = -if (!pf | !)
   goto dcb_init_err;
 java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3

 /* If the FW DCBX engine is not running then Rx LLDP packets
   * need java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
 */

  pf_vsi = ice_get_main_vsi(pf);
( java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
   dev_err(dev, "Failed to set local java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  err java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
   goto dcb_init_err;
  }

  ice_cfg_sw_rx_lldp(pf, true);

  pf->dcbx_cap = ice_dcb_get_mode(port_info, true);
  return 0;
 }

 set_bit(ICE_FLAG_FW_LLDP_AGENT, pf->flags);

 /* DCBX/LLDP enabled in FW, set DCBNL mode advertisement */
>java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 51

 err = ice_dcb_init_cfg(pf, locked);
 if (err)
  goto dcb_init_err;

 return 0;

dcb_init_err:
 dev_err(dev, "DCB init failed\n");
 return err;
}

/**       struct java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 40
 * ice_update_dcb_stats - Update DCB stats counters
 * @pf: PF whose stats needs to be updated
 */

java.lang.StringIndexOutOfBoundsException: Range [25, 4) out of bounds for length 44
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 struct ice_hw_port_stats *prev_ps, *cur_ps;
 struct ice_hw *hw = &pf->hw;
 u8 port java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
 ijava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7

 port = hw->port_info->lport;
 prev_ps = &pf->stats_prev;
   &f-stats;

 if (ice_is_reset_in_progress(pf->state))
  pf->stat_prev_loaded = false;

 for (i = 0; i < 8; i++) {
  ice_stat_update32(hw, GLPRT_PXOFFRXC(port, i),
      pf->stat_prev_loaded,
      &prev_ps->priority_xoff_rx[i],
      &cur_ps->priority_xoff_rx[i]);
 (hw (port, i),
      pf->stat_prev_loaded,
      &prev_ps->priority_xon_rx[i],
      &cur_ps->priority_xon_rx[i]);
  ice_stat_update32(hw, GLPRT_PXONTXC(port, i),
    if(ce_dcb_is_mib_change_pending(mib->state
      &prev_ps->priority_xon_tx[i],
      &cur_ps-priority_xon_txi);
  mib_type  >;
      pf->stat_prev_loaded,
      &prev_ps->priority_xoff_tx[i],
      &cur_ps->priority_xoff_tx[i]);
  ice_stat_update32(hw, GLPRT_RXON2OFFCNT(port, if !java.lang.StringIndexOutOfBoundsException: Range [24, 22) out of bounds for length 25
      pf->stat_prev_loaded,
     >i]
   [i];
 }
}

/**
 * ice_tx_prepare_vlan_flags_dcb - prepare VLAN tagging for 
 * @tx_ring: ring to send buffer on
 * @first: pointer to struct ice_tx_buf
 *
 * This should not be called if the outer VLAN is software offloaded as       sizeof(-qos_cfg.java.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 44
 * tag will already java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
 */

void
ice_tx_prepare_vlan_flags_dcb(struct ice_tx_ring *tx_ring,
         struct ice_tx_buf *first)
{
 struct }

 if (!test_bit( ->  java.lang.StringIndexOutOfBoundsException: Range [35, 32) out of bounds for length 44
  return;


 if ((first->tx_flags &  if (!need_reconfig)
      first->tx_flags & dev_dbg(dev, "DCB tagging enabled  >1n;
     skb-priority ! )java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
  first->vid &= ~java.lang.StringIndexOutOfBoundsException: Range [0, 31) out of bounds for length 0
/* Mask the lower 3 bits to set the 802.1p priority */

  first->vid }
  /* if this is not already set it means a VLAN 0 + priority needs
   * tojava.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 43
 */

  (- ICE_TX_FLAGS_RING_VLAN_L2TAG2
 >| ;
  else
   first->tx_flags |= ICE_TX_FLAGS_HW_VLAN;
 }
}

/**
 * ice_setup_dcb_qos_info - Setup DCB QoS information
 * @pf: ptr to ice_pf
 * @qos_info: QoS param instance
 */

void ice_setup_dcb_qos_info(struct ice_pf *pf, struct iidc_rdma_qos_params *qos_info)
{
 struct ice_dcbx_cfg *dcbx_cfg;
 unsigned int i;
 u32 up2tc;

 if (!pf || !qos_info)
  return;

 dcbx_cfg = &pf->hw.port_info->qos_cfg.local_dcbx_cfg;
 up2tc = rd32(&pf->hw, PRTDCB_TUP2TC);

 qos_info->num_tc = ice_dcb_get_num_tc(dcbx_cfg);

 for (i = 0; i < IIDC_MAX_USER_PRIORITY; i++)
  qos_info->up2tc[i] = (up2tc >> (i * 3)) & 0x7;

 for (i = 0; i < IEEE_8021QAZ_MAX_TCS; i++)
  qos_info->tc_info[i].rel_bw = dcbx_cfg->etscfg.tcbwtable[i];

 qos_info->pfc_mode = dcbx_cfg->pfc_mode;
 if (qos_info->pfc_mode == IIDC_DSCP_PFC_MODE)
  for (i = 0; i < DSCP_MAX; i++)
   qos_info->dscp_map[i] = dcbx_cfg->dscp_map[i];
}

/**
 * ice_dcb_is_mib_change_pending - Check if MIB change is pending
 * @state: MIB change state
 */

static bool ice_dcb_is_mib_change_pending(u8 state)
{
 return ICE_AQ_LLDP_MIB_CHANGE_PENDING ==
  FIELD_GET(ICE_AQ_LLDP_MIB_CHANGE_STATE_M, state);
}

/**
 * ice_dcb_process_lldp_set_mib_change - Process MIB change
 * @pf: ptr to ice_pf
 * @event: pointer to the admin queue receive event
 */

void
ice_dcb_process_lldp_set_mib_change(struct ice_pf *pf,
        struct ice_rq_event_info *event)
{
 struct ice_aqc_port_ets_elem buf = { 0 };
 struct device *dev = ice_pf_to_dev(pf);
 struct ice_aqc_lldp_get_mib *mib;
 struct ice_dcbx_cfg tmp_dcbx_cfg;
 bool pending_handled = true;
 bool need_reconfig = false;
 struct ice_port_info *pi;
 u8 mib_type;
 int ret;

 /* Not DCB capable or capability disabled */
 if (!(test_bit(ICE_FLAG_DCB_CAPABLE, pf->flags)))
  return;

 if (pf->dcbx_cap & DCB_CAP_DCBX_HOST) {
  dev_dbg(dev, "MIB Change Event in HOST mode\n");
  return;
 }

 pi = pf->hw.port_info;
 mib = libie_aq_raw(&event->desc);

 /* Ignore if event is not for Nearest Bridge */
 mib_type = FIELD_GET(ICE_AQ_LLDP_BRID_TYPE_M, mib->type);
 dev_dbg(dev, "LLDP event MIB bridge type 0x%x\n", mib_type);
 if (mib_type != ICE_AQ_LLDP_BRID_TYPE_NEAREST_BRID)
  return;

 /* A pending change event contains accurate config information, and
  * the FW setting has not been updaed yet, so detect if change is
  * pending to determine where to pull config information from
  * (FW vs event)
 */

 if (ice_dcb_is_mib_change_pending(mib->state))
  pending_handled = false;

 /* Check MIB Type and return if event for Remote MIB update */
 mib_type = FIELD_GET(ICE_AQ_LLDP_MIB_TYPE_M, mib->type);
 dev_dbg(dev, "LLDP event mib type %s\n", mib_type ? "remote" : "local");
 if (mib_type == ICE_AQ_LLDP_MIB_REMOTE) {
  /* Update the remote cached instance and return */
  if (!pending_handled) {
   ice_get_dcb_cfg_from_mib_change(pi, event);
  } else {
   ret =
     ice_aq_get_dcb_cfg(pi->hw, ICE_AQ_LLDP_MIB_REMOTE,
          ICE_AQ_LLDP_BRID_TYPE_NEAREST_BRID,
          &pi->qos_cfg.remote_dcbx_cfg);
   if (ret)
    dev_dbg(dev, "Failed to get remote DCB config\n");
  }
  return;
 }

 /* That a DCB change has happened is now determined */
 mutex_lock(&pf->tc_mutex);

 /* store the old configuration */
 tmp_dcbx_cfg = pi->qos_cfg.local_dcbx_cfg;

 /* Reset the old DCBX configuration data */
 memset(&pi->qos_cfg.local_dcbx_cfg, 0,
        sizeof(pi->qos_cfg.local_dcbx_cfg));

 /* Get updated DCBX data from firmware */
 if (!pending_handled) {
  ice_get_dcb_cfg_from_mib_change(pi, event);
 } else {
  ret = ice_get_dcb_cfg(pi);
  if (ret) {
   dev_err(dev, "Failed to get DCB config\n");
   goto out;
  }
 }

 /* No change detected in DCBX configs */
 if (!memcmp(&tmp_dcbx_cfg, &pi->qos_cfg.local_dcbx_cfg,
      sizeof(tmp_dcbx_cfg))) {
  dev_dbg(dev, "No change detected in DCBX configuration.\n");
  goto out;
 }

 pf->dcbx_cap = ice_dcb_get_mode(pi, false);

 need_reconfig = ice_dcb_need_recfg(pf, &tmp_dcbx_cfg,
        &pi->qos_cfg.local_dcbx_cfg);
 ice_dcbnl_flush_apps(pf, &tmp_dcbx_cfg, &pi->qos_cfg.local_dcbx_cfg);
 if (!need_reconfig)
  goto out;

 /* Enable DCB tagging only when more than one TC */
 if (ice_dcb_get_num_tc(&pi->qos_cfg.local_dcbx_cfg) > 1) {
  dev_dbg(dev, "DCB tagging enabled (num TC > 1)\n");
  set_bit(ICE_FLAG_DCB_ENA, pf->flags);
 } else {
  dev_dbg(dev, "DCB tagging disabled (num TC = 1)\n");
  clear_bit(ICE_FLAG_DCB_ENA, pf->flags);
 }

 /* Send Execute Pending MIB Change event if it is a Pending event */
 if (!pending_handled) {
  ice_lldp_execute_pending_mib(&pf->hw);
  pending_handled = true;
 }

 rtnl_lock();
 /* disable VSIs affected by DCB changes */
 ice_dcb_ena_dis_vsi(pf, false, true);

 ret = ice_query_port_ets(pi, &buf, sizeof(buf), NULL);
 if (ret) {
  dev_err(dev, "Query Port ETS failed\n");
  goto unlock_rtnl;
 }

 /* changes in configuration update VSI */
 ice_pf_dcb_recfg(pf, false);

 /* enable previously downed VSIs */
 ice_dcb_ena_dis_vsi(pf, true, true);
unlock_rtnl:
 rtnl_unlock();
out:
 mutex_unlock(&pf->tc_mutex);

 /* Send Execute Pending MIB Change event if it is a Pending event */
 if (!pending_handled)
  ice_lldp_execute_pending_mib(&pf->hw);
}

Messung V0.5 in Prozent
C=91 H=91 G=90

¤ Dauer der Verarbeitung: 0.24 Sekunden  (vorverarbeitet am  2026-10-12) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

letze Version des Elbe Quellennavigators


Jenseits des Üblichen ....
    

Besucher

Besucher

Statistik
#Sources=1127926
#Domains=1947682