Changeset c4d9f313 in rtems for c/src


Ignore:
Timestamp:
03/28/11 12:27:29 (13 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
4.11, 5, master
Children:
49a97a91
Parents:
f437107
Message:

2011-03-29 Sebastian Huber <sebastian.huber@…>

  • shared/lpc/network/lpc-ethernet.c: Support multicast.
Location:
c/src/lib/libbsp/arm
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • c/src/lib/libbsp/arm/ChangeLog

    rf437107 rc4d9f313  
    55        * shared/startup/linkcmds.base: Move unsupported sections into
    66        read-only section.  Changed barrier sections.
     7        * shared/lpc/network/lpc-ethernet.c: Support multicast.
    78
    892011-02-11      Ralf Corsépius <ralf.corsepius@rtems.org>
  • c/src/lib/libbsp/arm/shared/lpc/network/lpc-ethernet.c

    rf437107 rc4d9f313  
    88
    99/*
    10  * Copyright (c) 2009
    11  * embedded brains GmbH
    12  * Obere Lagerstr. 30
    13  * D-82178 Puchheim
    14  * Germany
    15  * <rtems@embedded-brains.de>
     10 * Copyright (c) 2009-2011 embedded brains GmbH.  All rights reserved.
     11 *
     12 *  embedded brains GmbH
     13 *  Obere Lagerstr. 30
     14 *  82178 Puchheim
     15 *  Germany
     16 *  <rtems@embedded-brains.de>
    1617 *
    1718 * The license and distribution terms for this file may be
     
    355356{
    356357  if (enable) {
    357     lpc_eth->rxfilterctrl = ETH_RX_FIL_CTRL_ACCEPT_PERFECT
    358       | ETH_RX_FIL_CTRL_ACCEPT_UNICAST
     358    lpc_eth->rxfilterctrl = ETH_RX_FIL_CTRL_ACCEPT_UNICAST
    359359      | ETH_RX_FIL_CTRL_ACCEPT_MULTICAST
    360360      | ETH_RX_FIL_CTRL_ACCEPT_BROADCAST;
    361361  } else {
    362362    lpc_eth->rxfilterctrl = ETH_RX_FIL_CTRL_ACCEPT_PERFECT
     363      | ETH_RX_FIL_CTRL_ACCEPT_MULTICAST
    363364      | ETH_RX_FIL_CTRL_ACCEPT_BROADCAST;
    364365  }
     
    12921293{
    12931294  lpc_eth_driver_entry *e = (lpc_eth_driver_entry *) ifp->if_softc;
    1294   int rv = 0;
     1295  struct ifreq *ifr = (struct ifreq *) data;
     1296  int eno = 0;
    12951297
    12961298  LPC_ETH_PRINTF("%s\n", __func__);
     
    13141316      }
    13151317      break;
     1318    case SIOCADDMULTI:
     1319    case SIOCDELMULTI: {
     1320      eno = (command == SIOCADDMULTI) ? ether_addmulti(ifr, &e->arpcom)
     1321        : ether_delmulti(ifr, &e->arpcom);
     1322      if (eno == ENETRESET) {
     1323        /* TODO: Use imperfect hash filter */
     1324        eno = 0;
     1325      }
     1326      break;
     1327    }
    13161328    case SIO_RTEMS_SHOW_STATS:
    13171329      lpc_eth_interface_stats(e);
    13181330      break;
    13191331    default:
    1320       rv = EINVAL;
     1332      eno = EINVAL;
    13211333      break;
    13221334  }
    13231335
    1324   return rv;
     1336  return eno;
    13251337}
    13261338
     
    15051517  ifp->if_output = ether_output;
    15061518  ifp->if_watchdog = lpc_eth_interface_watchdog;
    1507   ifp->if_flags = config->ignore_broadcast ? 0 : IFF_BROADCAST;
     1519  ifp->if_flags = IFF_MULTICAST | IFF_BROADCAST | IFF_SIMPLEX;
    15081520  ifp->if_snd.ifq_maxlen = ifqmaxlen;
    15091521  ifp->if_timer = 0;
Note: See TracChangeset for help on using the changeset viewer.