Compare commits

..

2 Commits

Author SHA1 Message Date
Paul Hollinsky 6e9319c3f4 v2.1.1
Fix support for kernels <5.12
	Tested on 5.4.0
2022-04-01 14:24:37 -04:00
Paul Hollinsky 7c2338125f Support kernels before echo lengths were tracked
This applies to anything before 5.12.0
2022-04-01 14:24:02 -04:00
2 changed files with 21 additions and 4 deletions

View File

@ -1,3 +1,7 @@
v2.1.1
Fix support for kernels <5.12
Tested on 5.4.0
v2.1.0
Implement proper functionality for echoing transmits
Transmit errors are now reported properly

View File

@ -57,7 +57,7 @@
#define KO_DESC "Netdevice driver for Intrepid CAN/Ethernet devices"
#define KO_MAJOR 2
#define KO_MINOR 1
#define KO_PATCH 0
#define KO_PATCH 1
#define KO_VERSION str(KO_MAJOR) "." str(KO_MINOR) "." str(KO_PATCH)
#define KO_VERSION_INT (KO_MAJOR << 16) | (KO_MINOR << 8) | KO_PATCH
@ -93,6 +93,7 @@ MODULE_VERSION(KO_VERSION);
#define KERNEL_FAULT_TAKES_VMA (LINUX_VERSION_CODE < KERNEL_VERSION(4,11,0))
#define KERNEL_SUPPORTS_ALIASES (LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0))
#define KERNEL_DEFINES_VM_FAULT_T (LINUX_VERSION_CODE >= KERNEL_VERSION(4,17,0))
#define KERNEL_CAN_ECHO_TRACKS_LEN (LINUX_VERSION_CODE >= KERNEL_VERSION(5,12,0))
#if KERNEL_DEFINES_VM_FAULT_T == 0
typedef int vm_fault_t;
@ -269,7 +270,11 @@ static netdev_tx_t intrepid_netdevice_xmit(struct sk_buff *skb, struct net_devic
}
msg.description = intrepid_next_tx_description(ics, &tx_idx);
can_put_echo_skb(skb, dev, tx_idx, msg.length);
can_put_echo_skb(skb, dev, tx_idx
#if KERNEL_CAN_ECHO_TRACKS_LEN
, msg.length
#endif
);
consumed = true;
/* Copy the message into the usermode box */
@ -537,11 +542,19 @@ static bool handle_transmit_receipt(
/* unsuccessful transmits */
/* stats are handled in intrepid_fill_canerr_frame_from_neomessage */
if (msg->status.globalError) {
can_free_echo_skb(device, tx_idx, NULL);
can_free_echo_skb(device, tx_idx
#if KERNEL_CAN_ECHO_TRACKS_LEN
, NULL
#endif
);
return false;
}
length = can_get_echo_skb(device, tx_idx, NULL);
length = can_get_echo_skb(device, tx_idx
#if KERNEL_CAN_ECHO_TRACKS_LEN
, NULL
#endif
);
stats->tx_packets++;
stats->tx_bytes += length;
return true;