summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brown2015-02-11 18:26:51 +0100
committerMichael Brown2015-02-11 18:26:51 +0100
commitf3725a86e00cf5a4281997670c8779f83c38eeba (patch)
tree60c6ccd5d4ee6321a70d7ff4e9b6371a701c25cd
parent[build] Allow product tag line to be customised via config/branding.h (diff)
downloadipxe-f3725a86e00cf5a4281997670c8779f83c38eeba.tar.gz
ipxe-f3725a86e00cf5a4281997670c8779f83c38eeba.tar.xz
ipxe-f3725a86e00cf5a4281997670c8779f83c38eeba.zip
[rndis] Add rndis_rx_err()
Signed-off-by: Michael Brown <mcb30@ipxe.org>
-rw-r--r--src/include/ipxe/rndis.h2
-rw-r--r--src/net/rndis.c15
2 files changed, 17 insertions, 0 deletions
diff --git a/src/include/ipxe/rndis.h b/src/include/ipxe/rndis.h
index b7c9c064..bc077f2e 100644
--- a/src/include/ipxe/rndis.h
+++ b/src/include/ipxe/rndis.h
@@ -347,6 +347,8 @@ extern void rndis_tx_complete_err ( struct rndis_device *rndis,
extern int rndis_tx_defer ( struct rndis_device *rndis,
struct io_buffer *iobuf );
extern void rndis_rx ( struct rndis_device *rndis, struct io_buffer *iobuf );
+extern void rndis_rx_err ( struct rndis_device *rndis, struct io_buffer *iobuf,
+ int rc );
extern struct rndis_device * alloc_rndis ( size_t priv_len );
extern int register_rndis ( struct rndis_device *rndis );
diff --git a/src/net/rndis.c b/src/net/rndis.c
index cd710a49..48447f11 100644
--- a/src/net/rndis.c
+++ b/src/net/rndis.c
@@ -796,6 +796,21 @@ void rndis_rx ( struct rndis_device *rndis, struct io_buffer *iobuf ) {
}
/**
+ * Discard packet from underlying transport layer
+ *
+ * @v rndis RNDIS device
+ * @v iobuf I/O buffer
+ * @v rc Packet status code
+ */
+void rndis_rx_err ( struct rndis_device *rndis, struct io_buffer *iobuf,
+ int rc ) {
+ struct net_device *netdev = rndis->netdev;
+
+ /* Record error */
+ netdev_rx_err ( netdev, iob_disown ( iobuf ), rc );
+}
+
+/**
* Set receive filter
*
* @v rndis RNDIS device