In nic_rx_pkts(), we check that a multicast packet received (when using
a multicast list) is one that was requested - despite setting the list
up with the hardware. We shouldn't expect to get a mc packet we didn't
ask for, so remove these extra checks.

This also means that the surrounding code can be tiedied up a little.

Tested somewhat with omping, with no adverse effects seen.

Also remove this item from the TODO list.

Signed-off-by: Mark Einon <mark.ei...@gmail.com>
---
 drivers/staging/et131x/README   |  1 -
 drivers/staging/et131x/et131x.c | 54 ++---------------------------------------
 2 files changed, 2 insertions(+), 53 deletions(-)

diff --git a/drivers/staging/et131x/README b/drivers/staging/et131x/README
index 47543cc..a198401 100644
--- a/drivers/staging/et131x/README
+++ b/drivers/staging/et131x/README
@@ -9,7 +9,6 @@ driver as they did not build properly at the time.
 
 TODO:
        - Look at reducing the number of spinlocks
-       - Simplify code in nic_rx_pkts(), when determining multicast_pkts_rcvd
        - Reduce the number of split lines by careful consideration of variable 
names etc.
 
 Please send patches to:
diff --git a/drivers/staging/et131x/et131x.c b/drivers/staging/et131x/et131x.c
index e9e269f..724e500 100644
--- a/drivers/staging/et131x/et131x.c
+++ b/drivers/staging/et131x/et131x.c
@@ -2372,8 +2372,6 @@ static struct rfd *nic_rx_pkts(struct et131x_adapter 
*adapter)
        struct rx_status_block *status;
        struct pkt_stat_desc *psr;
        struct rfd *rfd;
-       u32 i;
-       u8 *buf;
        unsigned long flags;
        struct list_head *element;
        u8 ring_index;
@@ -2453,60 +2451,12 @@ static struct rfd *nic_rx_pkts(struct et131x_adapter 
*adapter)
         */
        if (len < (NIC_MIN_PACKET_SIZE + 4)) {
                adapter->stats.rx_other_errs++;
-               len = 0;
-       }
-
-       if (len == 0) {
                rfd->len = 0;
                goto out;
        }
 
-       /* Determine if this is a multicast packet coming in */
-       if ((word0 & ALCATEL_MULTICAST_PKT) &&
-           !(word0 & ALCATEL_BROADCAST_PKT)) {
-               /* Promiscuous mode and Multicast mode are not mutually
-                * exclusive as was first thought. I guess Promiscuous is just
-                * considered a super-set of the other filters. Generally filter
-                * is 0x2b when in promiscuous mode.
-                */
-               if ((adapter->packet_filter & ET131X_PACKET_TYPE_MULTICAST)
-                  && !(adapter->packet_filter & ET131X_PACKET_TYPE_PROMISCUOUS)
-                  && !(adapter->packet_filter &
-                                       ET131X_PACKET_TYPE_ALL_MULTICAST)) {
-                       buf = fbr->virt[buff_index];
-
-                       /* Loop through our list to see if the destination
-                        * address of this packet matches one in our list.
-                        */
-                       for (i = 0; i < adapter->multicast_addr_count; i++) {
-                               if (buf[0] == adapter->multicast_list[i][0]
-                                && buf[1] == adapter->multicast_list[i][1]
-                                && buf[2] == adapter->multicast_list[i][2]
-                                && buf[3] == adapter->multicast_list[i][3]
-                                && buf[4] == adapter->multicast_list[i][4]
-                                && buf[5] == adapter->multicast_list[i][5]) {
-                                       break;
-                               }
-                       }
-
-                       /* If our index is equal to the number of Multicast
-                        * address we have, then this means we did not find this
-                        * packet's matching address in our list. Set the len to
-                        * zero, so we free our RFD when we return from this
-                        * function.
-                        */
-                       if (i == adapter->multicast_addr_count)
-                               len = 0;
-               }
-
-               if (len > 0)
-                       adapter->stats.multicast_pkts_rcvd++;
-       }
-
-       if (!len) {
-               rfd->len = 0;
-               goto out;
-       }
+       if ((word0 & ALCATEL_MULTICAST_PKT) && !(word0 & ALCATEL_BROADCAST_PKT))
+               adapter->stats.multicast_pkts_rcvd++;
 
        rfd->len = len;
 
-- 
2.1.0

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to