git: 9front

Download patch

ref: d7632bc0f9ca1c6b9fb8b73a5d262c5926ab872e
parent: 48c4a2e4ea6d5b4bcb3179bf6ab03bb893ba42ba
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sat Sep 17 10:06:03 EDT 2016

nusb/ether: multicast and promisc support for rtl8150 (url)

--- a/sys/src/cmd/nusb/ether/url.c
+++ b/sys/src/cmd/nusb/ether/url.c
@@ -300,6 +300,37 @@
 	freeb(b);
 }
 
+static int
+urlpromiscuous(Dev *d, int on)
+{
+	int r;
+
+	r = csr16r(d, Rcr);
+	if(on)
+		r |= Aam|Aap;
+	else {
+		r &= ~Aap;
+		if(nmulti == 0)
+			r &= ~Aam;
+	}
+	return csr16w(d, Rcr, r);
+}
+
+static int
+urlmulticast(Dev *d, uchar*, int)
+{
+	int r;
+
+	r = csr16r(d, Rcr);
+	if(nmulti)
+		r |= Aam;
+	else {
+		if(nprom == 0)
+			r &= ~Aam;
+	}
+	return csr16w(d, Rcr, r);
+}
+
 int
 urlinit(Dev *d)
 {
@@ -325,5 +356,8 @@
 
 	epreceive = urlreceive;
 	eptransmit = urltransmit;
+	eppromiscuous = urlpromiscuous;
+	epmulticast = urlmulticast;
+
 	return 0;
 }
--