]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/net/ethernet/intel/i40e/i40e_debugfs.c
Merge remote-tracking branch 'net-next/master'
[karo-tx-linux.git] / drivers / net / ethernet / intel / i40e / i40e_debugfs.c
index 246b177ee43262008ee24f904f751fd52c6ca8c4..ef4cb1cf31f2d392a4ed4e1ae2e0059919423317 100644 (file)
@@ -234,26 +234,33 @@ static ssize_t i40e_dbg_dump_write(struct file *filp,
                        memcpy(p, vsi, len);
                        p += len;
 
-                       len = (sizeof(struct i40e_q_vector)
-                               * vsi->num_q_vectors);
-                       memcpy(p, vsi->q_vectors, len);
-                       p += len;
-
-                       len = (sizeof(struct i40e_ring) * vsi->num_queue_pairs);
-                       memcpy(p, vsi->tx_rings, len);
-                       p += len;
-                       memcpy(p, vsi->rx_rings, len);
-                       p += len;
+                       if (vsi->num_q_vectors) {
+                               len = (sizeof(struct i40e_q_vector)
+                                       * vsi->num_q_vectors);
+                               memcpy(p, vsi->q_vectors, len);
+                               p += len;
+                       }
 
-                       for (i = 0; i < vsi->num_queue_pairs; i++) {
-                               len = sizeof(struct i40e_tx_buffer);
-                               memcpy(p, vsi->tx_rings[i]->tx_bi, len);
+                       if (vsi->num_queue_pairs) {
+                               len = (sizeof(struct i40e_ring) *
+                                     vsi->num_queue_pairs);
+                               memcpy(p, vsi->tx_rings, len);
+                               p += len;
+                               memcpy(p, vsi->rx_rings, len);
                                p += len;
                        }
-                       for (i = 0; i < vsi->num_queue_pairs; i++) {
+
+                       if (vsi->tx_rings[0]) {
+                               len = sizeof(struct i40e_tx_buffer);
+                               for (i = 0; i < vsi->num_queue_pairs; i++) {
+                                       memcpy(p, vsi->tx_rings[i]->tx_bi, len);
+                                       p += len;
+                               }
                                len = sizeof(struct i40e_rx_buffer);
-                               memcpy(p, vsi->rx_rings[i]->rx_bi, len);
-                               p += len;
+                               for (i = 0; i < vsi->num_queue_pairs; i++) {
+                                       memcpy(p, vsi->rx_rings[i]->rx_bi, len);
+                                       p += len;
+                               }
                        }
 
                        /* macvlan filter list */