|
@@ -19,7 +19,7 @@
|
|
|
#include <linux/uaccess.h>
|
|
|
#include <linux/debugfs.h>
|
|
|
#include <linux/caif/caif_socket.h>
|
|
|
-#include <linux/atomic.h>
|
|
|
+#include <linux/pkt_sched.h>
|
|
|
#include <net/sock.h>
|
|
|
#include <net/tcp_states.h>
|
|
|
#include <net/caif/caif_layer.h>
|
|
@@ -505,6 +505,7 @@ static int transmit_skb(struct sk_buff *skb, struct caifsock *cf_sk,
|
|
|
|
|
|
pkt = cfpkt_fromnative(CAIF_DIR_OUT, skb);
|
|
|
memset(skb->cb, 0, sizeof(struct caif_payload_info));
|
|
|
+ cfpkt_set_prio(pkt, cf_sk->sk.sk_priority);
|
|
|
|
|
|
if (cf_sk->layer.dn == NULL) {
|
|
|
kfree_skb(skb);
|
|
@@ -1062,6 +1063,18 @@ static int caif_create(struct net *net, struct socket *sock, int protocol,
|
|
|
/* Store the protocol */
|
|
|
sk->sk_protocol = (unsigned char) protocol;
|
|
|
|
|
|
+ /* Initialize default priority for well-known cases */
|
|
|
+ switch (protocol) {
|
|
|
+ case CAIFPROTO_AT:
|
|
|
+ sk->sk_priority = TC_PRIO_CONTROL;
|
|
|
+ break;
|
|
|
+ case CAIFPROTO_RFM:
|
|
|
+ sk->sk_priority = TC_PRIO_INTERACTIVE_BULK;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ sk->sk_priority = TC_PRIO_BESTEFFORT;
|
|
|
+ }
|
|
|
+
|
|
|
/*
|
|
|
* Lock in order to try to stop someone from opening the socket
|
|
|
* too early.
|
|
@@ -1081,7 +1094,6 @@ static int caif_create(struct net *net, struct socket *sock, int protocol,
|
|
|
set_rx_flow_on(cf_sk);
|
|
|
|
|
|
/* Set default options on configuration */
|
|
|
- cf_sk->sk.sk_priority = CAIF_PRIO_NORMAL;
|
|
|
cf_sk->conn_req.link_selector = CAIF_LINK_LOW_LATENCY;
|
|
|
cf_sk->conn_req.protocol = protocol;
|
|
|
release_sock(&cf_sk->sk);
|