|
@@ -905,6 +905,14 @@ myri10ge_alloc_rx_pages(struct myri10ge_priv *mgp, struct myri10ge_rx_buf *rx,
|
|
|
(rx->page_offset + bytes <= MYRI10GE_ALLOC_SIZE)) {
|
|
|
/* we can use part of previous page */
|
|
|
get_page(rx->page);
|
|
|
+#if MYRI10GE_ALLOC_SIZE > 4096
|
|
|
+ /* Firmware cannot cross 4K boundary.. */
|
|
|
+ if ((rx->page_offset >> 12) !=
|
|
|
+ ((rx->page_offset + bytes - 1) >> 12)) {
|
|
|
+ rx->page_offset =
|
|
|
+ (rx->page_offset + bytes) & ~4095;
|
|
|
+ }
|
|
|
+#endif
|
|
|
} else {
|
|
|
/* we need a new page */
|
|
|
page =
|